def open_vm(self, vmx_path, timeout=4): assert self.connected, "VixConnection not connected" start_time = time.time() job_handle = vixlib.VixVM_Open(self._host_handle, vmx_path, None, None) vm_handle = vixlib.VixHandle() job_completed = ctypes.c_byte(0) while not job_completed.value: err = vixlib.VixJob_CheckCompletion(job_handle, ctypes.byref(job_completed)) _check_job_err_code(err) if timeout and timeout < (time.time() - start_time): raise VixException( "Timeout (%d seconds) waiting to open VM by VMX '%s'", 0, timeout, vmx_path) err = vixlib.Vix_GetProperties(job_handle, vixlib.VIX_PROPERTY_JOB_RESULT_HANDLE, ctypes.byref(vm_handle), vixlib.VIX_PROPERTY_NONE) vixlib.Vix_ReleaseHandle(job_handle) _check_job_err_code(err) return VixVM(vm_handle)
def tools_state(self): tools_state = ctypes.c_int() err = vixlib.Vix_GetProperties(self._vm_handle, vixlib.VIX_PROPERTY_VM_TOOLS_STATE, ctypes.byref(tools_state), vixlib.VIX_PROPERTY_NONE) _check_job_err_code(err) return tools_state.value
def power_state(self): power_state = ctypes.c_int() err = vixlib.Vix_GetProperties(self._vm_handle, vixlib.VIX_PROPERTY_VM_POWER_STATE, ctypes.byref(power_state), vixlib.VIX_PROPERTY_NONE) _check_job_err_code(err) return power_state.value
def is_running(self): is_running = ctypes.c_int() err = vixlib.Vix_GetProperties(self._vm_handle, vixlib.VIX_PROPERTY_VM_IS_RUNNING, ctypes.byref(is_running), vixlib.VIX_PROPERTY_NONE) _check_job_err_code(err) return bool(is_running.value)
def guest_os_str(self): if self._guest_os_str is None: guest_os = ctypes.c_char_p() err = vixlib.Vix_GetProperties(self._vm_handle, vixlib.VIX_PROPERTY_VM_GUESTOS, ctypes.byref(guest_os), vixlib.VIX_PROPERTY_NONE) _check_job_err_code(err) self._guest_os_str = guest_os.value vixlib.Vix_FreeBuffer(guest_os) return self._guest_os_str
def get_vmteam_path(self): vmx_path = ctypes.c_char_p() try: err = vixlib.Vix_GetProperties( self._vm_handle, vixlib.VIX_PROPERTY_VM_VMTEAM_PATHNAME, ctypes.byref(vmx_path), vixlib.VIX_PROPERTY_NONE) _check_job_err_code(err) return vmx_path.value finally: vixlib.Vix_FreeBuffer(vmx_path)
def name(self): if not self._vm_name: vm_name = ctypes.c_char_p() err = vixlib.Vix_GetProperties(self._vm_handle, vixlib.VIX_PROPERTY_VM_NAME, ctypes.byref(vm_name), vixlib.VIX_PROPERTY_NONE) _check_job_err_code(err) self._vm_name = vm_name.value vixlib.Vix_FreeBuffer(vm_name) return self._vm_name
def callback(jobHandle, eventType, moreEventInfo, clientData): if vixlib.VIX_EVENTTYPE_FIND_ITEM != eventType: return url = ctypes.c_char_p() err = vixlib.Vix_GetProperties( moreEventInfo, vixlib.VIX_PROPERTY_FOUND_ITEM_LOCATION, ctypes.byref(url), vixlib.VIX_PROPERTY_NONE) vmx_paths.append(url.value) vixlib.Vix_FreeBuffer(url) _check_job_err_code(err)
def get_vmx_path(self): if not self._vmx_path: vmx_path = ctypes.c_char_p() err = vixlib.Vix_GetProperties(self._vm_handle, vixlib.VIX_PROPERTY_VM_VMX_PATHNAME, ctypes.byref(vmx_path), vixlib.VIX_PROPERTY_NONE) _check_job_err_code(err) self._vmx_path = vmx_path.value vixlib.Vix_FreeBuffer(vmx_path) return self._vmx_path
def get_host_type(self): assert self.connected, "VixConnection not connected" if not self._host_type: host_type = ctypes.c_int() err = vixlib.Vix_GetProperties(self._host_handle, vixlib.VIX_PROPERTY_HOST_HOSTTYPE, ctypes.byref(host_type), vixlib.VIX_PROPERTY_NONE) _check_job_err_code(err) self._host_type = host_type.value return self._host_type
def get_software_version(self): assert self.connected, "VixConnection not connected" if not self._software_version: version = ctypes.c_char_p() err = vixlib.Vix_GetProperties( self._host_handle, vixlib.VIX_PROPERTY_HOST_SOFTWARE_VERSION, ctypes.byref(version), vixlib.VIX_PROPERTY_NONE) _check_job_err_code(err) self._software_version = version.value vixlib.Vix_FreeBuffer(version) return self._software_version