Exemplo n.º 1
0
        public async Task <VirtualMachine> WaitForState(int vmid, VirtualMachineStatus state)
        {
            VirtualMachine vm;

            var startTime = DateTime.Now;

            while (DateTime.Now - startTime < TimeSpan.FromMilliseconds(OneStepClient.TaskTimeout))
            {
                vm = await Get(vmid);

                if (vm.Status == state)
                {
                    return(vm);
                }

                if (vm.Status == VirtualMachineStatus.error)
                {
                    throw new VirtualMachineTaskException("Virtual machine state changed to error");
                }

                await Task.Delay(OneStepClient.PoolingInterval);
            }

            throw new TimeoutException();
        }
        public bool PowerOff()
        {
            bool result = false;

            using (ManagementBaseObject inParams = virtualMachine.GetMethodParameters("RequestStateChange"))
            {
                inParams["RequestedState"] = ShutDownID;
                using (ManagementBaseObject outParams = virtualMachine.InvokeMethod(
                           "RequestStateChange", inParams, null))
                {
                    try
                    {
                        result = WmiUtilities.ValidateOutput(outParams, scope);
                    }
                    catch (ManagementException e)
                    {
                        Console.WriteLine("");
                    }
                }
            }
            if (result)
            {
                vmStatus = VirtualMachineStatus.PowerOff;
            }
            return(result);
        }
Exemplo n.º 3
0
 private string GetStatusString(VirtualMachineStatus status)
 {
     switch (status) {
     case VirtualMachineStatus.Running:
         return Catalog.GetString ("Running");
     case VirtualMachineStatus.Suspended:
         return Catalog.GetString ("Suspended");
     case VirtualMachineStatus.Off:
         return Catalog.GetString ("Powered Off");
     default:
         return null;
     }
 }
        public bool IsPowerOff()
        {
            ManagementObjectCollection virtualSystemSettings = virtualMachine.GetRelated("Msvm_SummaryInformation");
            ManagementObject           virtualSystemSetting  = WmiUtilities.GetFirstObjectFromCollection(virtualSystemSettings);
            UInt16 EnabledState = Convert.ToUInt16(virtualSystemSetting.GetPropertyValue("EnabledState"));

            if (EnabledState == 3)
            {
                vmStatus = VirtualMachineStatus.PowerOff;
                return(true);
            }
            else
            {
                return(false);
            }
        }
 public VirtualMachine(String _vmName, ManagementScope scopeM, ManagementObject managementServiceM)
 {
     vmName            = _vmName;
     scope             = scopeM;
     managementService = managementServiceM;
     try
     {
         virtualMachine = WmiUtilities.GetVirtualMachine(vmName, scope);
     }
     catch (ManagementException)
     {
         throw new ArgumentException(string.Format("The virtual machine \"{0}\" could not be found.", vmName));
     }
     if (virtualMachine != null)
     {
         GetPerformanceSetting();
     }
     vmStatus = (performanceSetting.EnabledState == 2) ? VirtualMachineStatus.PowerOn : VirtualMachineStatus.PowerOff;
 }
Exemplo n.º 6
0
        private void UpdateStatus()
        {
            bool lockExists = false;
            foreach (string lockfile in LockFileNames) {
                if (File.Exists (lockfile) || Directory.Exists (lockfile)) {
                    lockExists = true;
                    break;
                }
            }

            bool checkPointExists = File.Exists (CheckPointFileName);

            VirtualMachineStatus newstatus;
            if (lockExists) {
                newstatus = VirtualMachineStatus.Running;
            } else if (checkPointExists) {
                newstatus = VirtualMachineStatus.Suspended;
            } else {
                newstatus = VirtualMachineStatus.Off;
                icon = null;
            }

            if (newstatus == status)
                return;

            status = newstatus;

            EventHandler handler = null;
            if (status == VirtualMachineStatus.Running) {
                handler = Started;
            } else {
                LoadPreviewIcon ();
                handler = Stopped;
            }

            if (handler != null) {
                handler (this, new EventArgs ());
            }
        }