private static void ModifyVmResources(VirtualSystemManagementService vmMgmtSvc, ComputerSystem vm, string[] resourceSettings) { // Resource settings are changed through the management service System.Management.ManagementPath jobPath; var ret_val = vmMgmtSvc.ModifyVirtualSystemResources(vm.Path, resourceSettings, out jobPath); // If the Job is done asynchronously if (ret_val == ReturnCode.Started) { JobCompleted(jobPath); } else if (ret_val != ReturnCode.Completed) { var errMsg = string.Format( "Failed to update VM {0} (GUID {1}) due to {2} (ModifyVirtualSystem call), existing VM not deleted", vm.ElementName, vm.Name, ReturnCode.ToString(ret_val)); var ex = new WmiException(errMsg); logger.Error(errMsg, ex); throw ex; } }
private static ComputerSystem CreateDefaultVm(VirtualSystemManagementService vmMgmtSvc, string name) { // Tweak default settings by basing new VM on default global setting object // with designed display name. VirtualSystemGlobalSettingData vs_gs_data = VirtualSystemGlobalSettingData.CreateInstance(); vs_gs_data.LateBoundObject["ElementName"] = name; System.Management.ManagementPath jobPath; System.Management.ManagementPath defined_sys; var ret_val = vmMgmtSvc.DefineVirtualSystem( new string[0], null, vs_gs_data.LateBoundObject.GetText(System.Management.TextFormat.CimDtd20), out defined_sys, out jobPath); // If the Job is done asynchronously if (ret_val == ReturnCode.Started) { JobCompleted(jobPath); } else if (ret_val != ReturnCode.Completed) { var errMsg = string.Format( "Failed to create VM {0} due to {1} (DefineVirtualSystem call)", name, ReturnCode.ToString(ret_val)); var ex = new WmiException(errMsg); logger.Error(errMsg, ex); throw ex; } logger.DebugFormat(CultureInfo.InvariantCulture, "Created VM {0}", name); // Is the defined_system real? var vm = new ComputerSystem(defined_sys); // Assertion if (vm.ElementName.CompareTo(name) != 0) { var errMsg = string.Format( "New VM created with wrong name (is {0}, should be {1}, GUID {2})", vm.ElementName, name, vm.Name); var ex = new WmiException(errMsg); logger.Error(errMsg, ex); throw ex; } return vm; }