Пример #1
0
        public static VMJob RequestStateChange(VM vm, int state)
        {
            ManagementScope      scope    = new ManagementScope(@"\\" + vm.Host.Name + @"\root\virtualization", vm.Host.HostConnectionOptions);
            ManagementObject     vmObj    = vm.Instance;//Utility.GetTargetComputer(vm.GUID, scope);
            ManagementBaseObject inParams = vmObj.GetMethodParameters("RequestStateChange");

            inParams["RequestedState"] = state;
            ManagementBaseObject outParams = vmObj.InvokeMethod("RequestStateChange", inParams, null);
            UInt32 returnValue             = (UInt32)outParams["ReturnValue"];
            string jobPath = (string)outParams["Job"];
            VMJob  ThisJob = null;

            if (jobPath != null)
            {
                ThisJob = new VMJob(new ManagementObject(scope, new ManagementPath(jobPath), null));
            }

            inParams.Dispose();
            outParams.Dispose();
            vmObj.Dispose();
            if ((jobPath == null) && (returnValue != ReturnCode.Completed) && (returnValue != ReturnCode.Started))
            {
                throw new VMStateChangeException(returnValue);
            }
            //JobCompleted(outParams, scope, out ErrorCode);
            return(ThisJob);
        }
Пример #2
0
        public static VMJob SetVMResource(VM vm, ManagementObject resource, Dictionary <string, object> Params)
        {
            ManagementScope      scope = new ManagementScope(@"\\" + vm.Host.Name + @"\root\virtualization", vm.Host.HostConnectionOptions);
            ManagementObject     virtualSystemService = Utility.GetServiceObject(scope, "Msvm_VirtualSystemManagementService");
            ManagementBaseObject inParams             = virtualSystemService.GetMethodParameters("ModifyVirtualSystemResources");
            ManagementObject     vmObj = vm.Instance;

            //ManagementObject resource = GetMemory(vm);
            //memSettings["Limit"] = quantity;
            //memSettings["Reservation"] = quantity;
            foreach (string key in Params.Keys)
            {
                resource[key] = Params[key];
            }
            //resource["VirtualQuantity"] = quantity;
            string[] Resources = new string[1];
            Resources[0] = resource.GetText(TextFormat.CimDtd20);
            //ManagementBaseObject inParams = virtualSystemService.GetMethodParameters("ModifyVirtualSystemResources");
            inParams["ComputerSystem"]      = vmObj.Path.Path;
            inParams["ResourcesettingData"] = Resources;
            VMJob ThisJob = null;
            ManagementBaseObject outParams = virtualSystemService.InvokeMethod("ModifyVirtualSystemResources", inParams, null);
            //MessageBox.Show(outParams.GetText(TextFormat.Mof));
            string jobPath     = (string)outParams["Job"];
            UInt32 returnValue = (UInt32)outParams["ReturnValue"];

            if (jobPath != null)
            {
                ManagementObject jobObj = new ManagementObject(scope, new ManagementPath(jobPath), null);
                ThisJob = new VMJob(jobObj);
            }
            inParams.Dispose();
            //resource.Dispose();
            outParams.Dispose();
            vmObj.Dispose();

            virtualSystemService.Dispose();
            if ((jobPath == null) && (returnValue != ReturnCode.Completed) && (returnValue != ReturnCode.Started))
            {
                throw new VMResourcesUpdateException(returnValue);
            }
            return(ThisJob);
        }
Пример #3
0
        public static VMJob RemoveVirtualSystemSnapshotTree(VM vm, VMSnapshot snapshot)
        {
            ManagementScope      scope = new ManagementScope(@"\\" + vm.Host.Name + @"\root\virtualization", vm.Host.HostConnectionOptions);
            ManagementObject     virtualSystemService = Utility.GetServiceObject(scope, "Msvm_VirtualSystemManagementService");
            ManagementBaseObject inParams             = virtualSystemService.GetMethodParameters("RemoveVirtualSystemSnapshotTree");
            ManagementObject     vmObj         = Utility.GetTargetComputer(vm.GUID, scope);
            ManagementObject     vmSnapshotObj = snapshot.SnapshotInstance;

            inParams["SnapshotSettingData"] = vmSnapshotObj.Path.Path;
            ManagementBaseObject outParams = virtualSystemService.InvokeMethod("RemoveVirtualSystemSnapshotTree", inParams, null);
            VMJob ThisJob = new VMJob(new ManagementObject(scope, new ManagementPath((string)outParams["Job"]), null));

            inParams.Dispose();
            outParams.Dispose();
            vmSnapshotObj.Dispose();
            vmObj.Dispose();
            virtualSystemService.Dispose();
            return(ThisJob);
        }
Пример #4
0
        public static VMJob CreateVirtualSystemSnapshot(VM vm)
        {
            ManagementScope scope = new ManagementScope(@"\\" + vm.Host.Name + @"\root\virtualization", vm.Host.HostConnectionOptions);

            ManagementObject virtualSystemService = Utility.GetServiceObject(scope, "Msvm_VirtualSystemManagementService");

            ManagementObject vmObj = Utility.GetTargetComputer(vm.GUID, scope);

            ManagementBaseObject inParams = virtualSystemService.GetMethodParameters("CreateVirtualSystemSnapshot");

            inParams["SourceSystem"] = vmObj.Path.Path;

            ManagementBaseObject outParams = virtualSystemService.InvokeMethod("CreateVirtualSystemSnapshot", inParams, null);
            //UInt32 returnValue = (UInt32)outParams["ReturnValue"];
            VMJob ThisJob = new VMJob(new ManagementObject(scope, new ManagementPath((string)outParams["Job"]), null));

            inParams.Dispose();
            outParams.Dispose();
            vmObj.Dispose();
            virtualSystemService.Dispose();
            return(ThisJob);
        }