docstr: The function waits until a VM goes into the frozen state.
docstr_tok: ["The","function","waits","until","a","VM","goes","into","the","frozen","state","."]
code: def wait_until_vm_is_frozen(self, vm_name):
      """
      The function waits until a VM goes into the frozen state.
      """
      vm = self.get_pyvmomi_obj([vim.VirtualMachine], vm_name)
      start = time.time()
  
      while time.time() - start < Constants.VM_FREEZE_TIMEOUT:
          time.sleep(Constants.VM_FREEZE_SLEEP_TIME)
          if vm.runtime.instantCloneFrozen:
              logger.info(
                  "VM {} went into frozen state successfully.".format(
                      vm.name
                  )
              )
              return vm
  
      raise RuntimeError(
          "VM {} didn't go into frozen state".format(vm.name)
      )
  
imports: import atexit
  import logging
  import ssl
  import time
  from enum import Enum
  from pyVim.connect import Disconnect, SmartStubAdapter, VimSessionOrientedStub
  from pyVim.task import WaitForTask
  from pyVmomi import vim, vmodl
  from ray.autoscaler._private.vsphere.utils import Constants, is_ipv4, singleton_client
label_desc: Use image node_id 12 for calling the PyvmomiSdkProvider obj's underlying member method code with example usage: obj.wait_until_vm_is_frozen(vm_name) and returns: vm