class_docstr: Fixed budget based resource manager.
  
  This resource manager keeps track of a fixed set of resources. When resources
  are acquired, they are subtracted from the budget. When resources are freed,
  they are added back to the budget.
  
  The resource manager still requires resources to be requested before they become
  available. However, because the resource requests are virtual, this will not
  trigger autoscaling.
  
  Additionally, resources are not reserved on request, only on acquisition. Thus,
  acquiring a resource can change the availability of other requests. Note that
  this behavior may be changed in future implementations.
  
  The fixed resource manager does not support placement strategies. Using
  ``STRICT_SPREAD`` will result in an error. ``STRICT_PACK`` will succeed only
  within a placement group bundle. All other placement group arguments will be
  ignored.
  
  Args:
      total_resources: Budget of resources to manage. Defaults to all available
          resources in the current task or all cluster resources (if outside a task).
class_docstr_tok: ["Fixed","budget","based","resource","manager",".","This","resource","manager","keeps","track","of","a","fixed","set","of","resources",".","When","resources","are","acquired",",","they","are","subtracted","from","the","budget",".","When","resources","are","freed",",","they","are","added","back","to","the","budget",".","The","resource","manager","still","requires","resources","to","be","requested","before","they","become","available",".","However",",","because","the","resource","requests","are","virtual",",","this","will","not","trigger","autoscaling",".","Additionally",",","resources","are","not","reserved","on","request",",","only","on","acquisition",".","Thus",",","acquiring","a","resource","can","change","the","availability","of","other","requests",".","Note","that","this","behavior","may","be","changed","in","future","implementations",".","The","fixed","resource","manager","does","not","support","placement","strategies",".","Using","``","STRICT_SPREAD","``","will","result","in","an","error",".","``","STRICT_PACK","``","will","succeed","only","within","a","placement","group","bundle",".","All","other","placement","group","arguments","will","be","ignored",".","Args",":","total_resources",":","Budget","of","resources","to","manage",".","Defaults","to","all","available","resources","in","the","current","task","or","all","cluster","resources","(","if","outside","a","task",")","."]
code: def has_resources_ready(
      self, resource_request: ResourceRequest
  ) -> bool:
      if resource_request not in self._requested_resources:
          return False
  
      available_resources = self._available_resources
      all_resources = resource_request.required_resources
      for k, v in all_resources.items():
          if available_resources.get(k, 0.0) < v:
              return False
      return True
  
file_path: ray/python/ray/air/execution/resources/fixed.py
imports: from typing import Dict, List, Optional
  from dataclasses import dataclass
  import ray
  from ray import SCRIPT_MODE, LOCAL_MODE
  from ray.air.execution.resources.request import ResourceRequest, AcquiredResources, RemoteRayEntity
  from ray.air.execution.resources.resource_manager import ResourceManager
  from ray.util.annotations import DeveloperAPI
label_desc: Use image node_id 5 for calling the FixedResourceManager obj's underlying member method code with example usage: obj.has_resources_ready(resource_request) and returns: True, False, False