code: def convert_requests_to_resources(
      self, cores_mcpu, memory_bytes, storage_bytes
  ):
      storage_gib = requested_storage_bytes_to_actual_storage_gib(
          self.cloud, storage_bytes, allow_zero_storage=True
      )
      if storage_gib is None:
          return None
  
      cores_mcpu = adjust_cores_for_memory_request(
          self.cloud, cores_mcpu, memory_bytes, self.worker_type
      )
      cores_mcpu = adjust_cores_for_packability(cores_mcpu)
  
      memory_bytes = cores_mcpu_to_memory_bytes(
          self.cloud, cores_mcpu, self.worker_type
      )
  
      if cores_mcpu <= self.worker_cores * 1000:
          return (cores_mcpu, memory_bytes, storage_gib)
  
      return None
  
imports: import asyncio
  import logging
  from typing import Dict, Optional, Tuple
  from gear import Database
  from .cloud.azure.instance_config import AzureSlimInstanceConfig
  from .cloud.azure.resource_utils import azure_worker_properties_to_machine_type
  from .cloud.gcp.instance_config import GCPSlimInstanceConfig
  from .cloud.gcp.resource_utils import GCP_MACHINE_FAMILY, family_worker_type_cores_to_gcp_machine_type
  from .cloud.resource_utils import adjust_cores_for_memory_request, adjust_cores_for_packability, cores_mcpu_to_memory_bytes, local_ssd_size, machine_type_to_worker_type_cores, requested_storage_bytes_to_actual_storage_gib, valid_machine_types
  from .cloud.utils import possible_cloud_locations
  from .driver.billing_manager import ProductVersionInfo, ProductVersions
  from .instance_config import InstanceConfig
label_desc: Use image node_id 6 for calling the PoolConfig obj's underlying member method code with example usage: obj.convert_requests_to_resources(cores_mcpu, memory_bytes, storage_bytes) and returns: None, None, cores_mcpu,  memory_bytes,  storage_gib