wsp-10323 Convert the VSP provider into one utilizing PowerShell. Step 7
This commit is contained in:
parent
8b3332e3c7
commit
e96a2195b0
3 changed files with 80 additions and 112 deletions
|
@ -8,6 +8,16 @@ namespace WebsitePanel.Providers.Virtualization
|
||||||
{
|
{
|
||||||
public static class Constants
|
public static class Constants
|
||||||
{
|
{
|
||||||
|
public const string CONFIG_USE_DISKPART_TO_CLEAR_READONLY_FLAG = "WebsitePanel.HyperV.UseDiskPartClearReadOnlyFlag";
|
||||||
|
public const string WMI_VIRTUALIZATION_NAMESPACE = @"root\virtualization\v2";
|
||||||
|
public const string WMI_CIMV2_NAMESPACE = @"root\cimv2";
|
||||||
|
|
||||||
|
public const string LIBRARY_INDEX_FILE_NAME = "index.xml";
|
||||||
|
|
||||||
|
public const string EXTERNAL_NETWORK_ADAPTER_NAME = "External Network Adapter";
|
||||||
|
public const string PRIVATE_NETWORK_ADAPTER_NAME = "Private Network Adapter";
|
||||||
|
public const string MANAGEMENT_NETWORK_ADAPTER_NAME = "Management Network Adapter";
|
||||||
|
|
||||||
public const Int64 Size1G = 0x40000000;
|
public const Int64 Size1G = 0x40000000;
|
||||||
public const Int64 Size1M = 0x100000;
|
public const Int64 Size1M = 0x100000;
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,15 +10,7 @@ using System.Threading.Tasks;
|
||||||
namespace WebsitePanel.Providers.Virtualization
|
namespace WebsitePanel.Providers.Virtualization
|
||||||
{
|
{
|
||||||
public static class NetworkAdapterHelper
|
public static class NetworkAdapterHelper
|
||||||
{
|
{
|
||||||
#region Constants
|
|
||||||
|
|
||||||
private const string EXTERNAL_NETWORK_ADAPTER_NAME = "External Network Adapter";
|
|
||||||
private const string PRIVATE_NETWORK_ADAPTER_NAME = "Private Network Adapter";
|
|
||||||
private const string MANAGEMENT_NETWORK_ADAPTER_NAME = "Management Network Adapter";
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
public static VirtualMachineNetworkAdapter[] Get(PowerShellManager powerShell, string vmName)
|
public static VirtualMachineNetworkAdapter[] Get(PowerShellManager powerShell, string vmName)
|
||||||
{
|
{
|
||||||
List<VirtualMachineNetworkAdapter> adapters = new List<VirtualMachineNetworkAdapter>();
|
List<VirtualMachineNetworkAdapter> adapters = new List<VirtualMachineNetworkAdapter>();
|
||||||
|
@ -60,7 +52,7 @@ namespace WebsitePanel.Providers.Virtualization
|
||||||
else if (vm.ExternalNetworkEnabled && !String.IsNullOrEmpty(vm.ExternalNicMacAddress)
|
else if (vm.ExternalNetworkEnabled && !String.IsNullOrEmpty(vm.ExternalNicMacAddress)
|
||||||
&& Get(powerShell,vm.Name,vm.ExternalNicMacAddress) == null)
|
&& Get(powerShell,vm.Name,vm.ExternalNicMacAddress) == null)
|
||||||
{
|
{
|
||||||
Add(powerShell, vm.Name, vm.ExternalSwitchId, vm.ExternalNicMacAddress, EXTERNAL_NETWORK_ADAPTER_NAME, vm.LegacyNetworkAdapter);
|
Add(powerShell, vm.Name, vm.ExternalSwitchId, vm.ExternalNicMacAddress, Constants.EXTERNAL_NETWORK_ADAPTER_NAME, vm.LegacyNetworkAdapter);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Private NIC
|
// Private NIC
|
||||||
|
@ -72,7 +64,7 @@ namespace WebsitePanel.Providers.Virtualization
|
||||||
else if (vm.PrivateNetworkEnabled && !String.IsNullOrEmpty(vm.PrivateNicMacAddress)
|
else if (vm.PrivateNetworkEnabled && !String.IsNullOrEmpty(vm.PrivateNicMacAddress)
|
||||||
&& Get(powerShell, vm.Name, vm.PrivateNicMacAddress) == null)
|
&& Get(powerShell, vm.Name, vm.PrivateNicMacAddress) == null)
|
||||||
{
|
{
|
||||||
Add(powerShell, vm.Name, vm.PrivateSwitchId, vm.PrivateNicMacAddress, PRIVATE_NETWORK_ADAPTER_NAME, vm.LegacyNetworkAdapter);
|
Add(powerShell, vm.Name, vm.PrivateSwitchId, vm.PrivateNicMacAddress, Constants.PRIVATE_NETWORK_ADAPTER_NAME, vm.LegacyNetworkAdapter);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -57,25 +57,6 @@ namespace WebsitePanel.Providers.Virtualization
|
||||||
{
|
{
|
||||||
public class HyperV2012R2 : HostingServiceProviderBase, IVirtualizationServer
|
public class HyperV2012R2 : HostingServiceProviderBase, IVirtualizationServer
|
||||||
{
|
{
|
||||||
#region Constants
|
|
||||||
private const string CONFIG_USE_DISKPART_TO_CLEAR_READONLY_FLAG = "WebsitePanel.HyperV.UseDiskPartClearReadOnlyFlag";
|
|
||||||
private const string WMI_VIRTUALIZATION_NAMESPACE = @"root\virtualization\v2";
|
|
||||||
private const string WMI_CIMV2_NAMESPACE = @"root\cimv2";
|
|
||||||
|
|
||||||
private const int SWITCH_PORTS_NUMBER = 1024;
|
|
||||||
private const string LIBRARY_INDEX_FILE_NAME = "index.xml";
|
|
||||||
private const string EXTERNAL_NETWORK_ADAPTER_NAME = "External Network Adapter";
|
|
||||||
private const string PRIVATE_NETWORK_ADAPTER_NAME = "Private Network Adapter";
|
|
||||||
private const string MANAGEMENT_NETWORK_ADAPTER_NAME = "Management Network Adapter";
|
|
||||||
|
|
||||||
private const string KVP_RAM_SUMMARY_KEY = "VM-RAM-Summary";
|
|
||||||
private const string KVP_HDD_SUMMARY_KEY = "VM-HDD-Summary";
|
|
||||||
|
|
||||||
private const Int64 Size1G = 0x40000000;
|
|
||||||
private const Int64 Size1M = 0x100000;
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
#region Provider Settings
|
#region Provider Settings
|
||||||
protected string ServerNameSettings
|
protected string ServerNameSettings
|
||||||
{
|
{
|
||||||
|
@ -119,16 +100,17 @@ namespace WebsitePanel.Providers.Virtualization
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region Fields
|
#region Fields
|
||||||
private Wmi _wmi = null;
|
|
||||||
|
|
||||||
|
private PowerShellManager _powerShell;
|
||||||
|
protected PowerShellManager PowerShell
|
||||||
|
{
|
||||||
|
get { return _powerShell ?? (_powerShell = new PowerShellManager(ServerNameSettings)); }
|
||||||
|
}
|
||||||
|
|
||||||
|
private Wmi _wmi;
|
||||||
private Wmi wmi
|
private Wmi wmi
|
||||||
{
|
{
|
||||||
get
|
get { return _wmi ?? (_wmi = new Wmi(ServerNameSettings, Constants.WMI_VIRTUALIZATION_NAMESPACE)); }
|
||||||
{
|
|
||||||
if (_wmi == null)
|
|
||||||
_wmi = new Wmi(ServerNameSettings, WMI_VIRTUALIZATION_NAMESPACE);
|
|
||||||
return _wmi;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
@ -169,7 +151,7 @@ namespace WebsitePanel.Providers.Virtualization
|
||||||
vm.Name = result[0].GetProperty("Name").ToString();
|
vm.Name = result[0].GetProperty("Name").ToString();
|
||||||
vm.State = result[0].GetEnum<VirtualMachineState>("State");
|
vm.State = result[0].GetEnum<VirtualMachineState>("State");
|
||||||
vm.CpuUsage = ConvertNullableToInt32(result[0].GetProperty("CpuUsage"));
|
vm.CpuUsage = ConvertNullableToInt32(result[0].GetProperty("CpuUsage"));
|
||||||
vm.RamUsage = ConvertNullableToInt64(result[0].GetProperty("MemoryAssigned")) / Size1M;
|
vm.RamUsage = ConvertNullableToInt64(result[0].GetProperty("MemoryAssigned")) / Constants.Size1M;
|
||||||
vm.Uptime = Convert.ToInt64(result[0].GetProperty<TimeSpan>("UpTime").TotalMilliseconds);
|
vm.Uptime = Convert.ToInt64(result[0].GetProperty<TimeSpan>("UpTime").TotalMilliseconds);
|
||||||
vm.Status = result[0].GetProperty("Status").ToString();
|
vm.Status = result[0].GetProperty("Status").ToString();
|
||||||
vm.ReplicationState = result[0].GetProperty("ReplicationState").ToString();
|
vm.ReplicationState = result[0].GetProperty("ReplicationState").ToString();
|
||||||
|
@ -203,7 +185,7 @@ namespace WebsitePanel.Providers.Virtualization
|
||||||
if (vm.Disks != null && vm.Disks.GetLength(0) > 0)
|
if (vm.Disks != null && vm.Disks.GetLength(0) > 0)
|
||||||
{
|
{
|
||||||
vm.VirtualHardDrivePath = vm.Disks[0].Path;
|
vm.VirtualHardDrivePath = vm.Disks[0].Path;
|
||||||
vm.HddSize = Convert.ToInt32(vm.Disks[0].FileSize / Size1G);
|
vm.HddSize = Convert.ToInt32(vm.Disks[0].FileSize / Constants.Size1G);
|
||||||
}
|
}
|
||||||
|
|
||||||
// network adapters
|
// network adapters
|
||||||
|
@ -219,7 +201,6 @@ namespace WebsitePanel.Providers.Virtualization
|
||||||
|
|
||||||
HostedSolutionLog.LogEnd("GetVirtualMachine");
|
HostedSolutionLog.LogEnd("GetVirtualMachine");
|
||||||
return vm;
|
return vm;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<VirtualMachine> GetVirtualMachines()
|
public List<VirtualMachine> GetVirtualMachines()
|
||||||
|
@ -557,6 +538,7 @@ namespace WebsitePanel.Providers.Virtualization
|
||||||
PowerShell.Execute(cmdSet, true);
|
PowerShell.Execute(cmdSet, true);
|
||||||
return JobHelper.CreateSuccessResult(ReturnCode.JobStarted);
|
return JobHelper.CreateSuccessResult(ReturnCode.JobStarted);
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region Snapshots
|
#region Snapshots
|
||||||
|
@ -895,7 +877,7 @@ namespace WebsitePanel.Providers.Virtualization
|
||||||
#region Library
|
#region Library
|
||||||
public LibraryItem[] GetLibraryItems(string path)
|
public LibraryItem[] GetLibraryItems(string path)
|
||||||
{
|
{
|
||||||
path = Path.Combine(FileUtils.EvaluateSystemVariables(path), LIBRARY_INDEX_FILE_NAME);
|
path = Path.Combine(FileUtils.EvaluateSystemVariables(path), Constants.LIBRARY_INDEX_FILE_NAME);
|
||||||
|
|
||||||
// convert to UNC if it is a remote computer
|
// convert to UNC if it is a remote computer
|
||||||
path = ConvertToUNC(path);
|
path = ConvertToUNC(path);
|
||||||
|
@ -971,14 +953,6 @@ namespace WebsitePanel.Providers.Virtualization
|
||||||
return items.ToArray();
|
return items.ToArray();
|
||||||
}
|
}
|
||||||
|
|
||||||
private string ConvertToUNC(string path)
|
|
||||||
{
|
|
||||||
if (String.IsNullOrEmpty(ServerNameSettings)
|
|
||||||
|| path.StartsWith(@"\\"))
|
|
||||||
return path;
|
|
||||||
|
|
||||||
return String.Format(@"\\{0}\{1}", ServerNameSettings, path.Replace(":", "$"));
|
|
||||||
}
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region KVP
|
#region KVP
|
||||||
|
@ -1208,6 +1182,39 @@ namespace WebsitePanel.Providers.Virtualization
|
||||||
|
|
||||||
public MountedDiskInfo MountVirtualHardDisk(string vhdPath)
|
public MountedDiskInfo MountVirtualHardDisk(string vhdPath)
|
||||||
{
|
{
|
||||||
|
//MountedDiskInfo diskInfo = new MountedDiskInfo();
|
||||||
|
//vhdPath = FileUtils.EvaluateSystemVariables(vhdPath);
|
||||||
|
|
||||||
|
//// Mount disk
|
||||||
|
//Command cmd = new Command("Mount-VHD");
|
||||||
|
|
||||||
|
//cmd.Parameters.Add("Path", vhdPath);
|
||||||
|
//cmd.Parameters.Add("PassThru");
|
||||||
|
|
||||||
|
//// Get disk address
|
||||||
|
//var result = PowerShell.Execute(cmd, true);
|
||||||
|
|
||||||
|
//try
|
||||||
|
//{
|
||||||
|
// if (result == null || result.Count == 0)
|
||||||
|
// throw new Exception("Failed to mount disk");
|
||||||
|
|
||||||
|
// diskInfo.DiskAddress = result[0].GetString("DiskNumber");
|
||||||
|
|
||||||
|
// // Get disk volumes
|
||||||
|
|
||||||
|
//}
|
||||||
|
//catch (Exception ex)
|
||||||
|
//{
|
||||||
|
// // unmount disk
|
||||||
|
// UnmountVirtualHardDisk(vhdPath);
|
||||||
|
|
||||||
|
// // throw error
|
||||||
|
// throw ex;
|
||||||
|
//}
|
||||||
|
|
||||||
|
//return diskInfo;
|
||||||
|
|
||||||
ManagementObject objImgSvc = GetImageManagementService();
|
ManagementObject objImgSvc = GetImageManagementService();
|
||||||
|
|
||||||
// get method params
|
// get method params
|
||||||
|
@ -1264,11 +1271,11 @@ namespace WebsitePanel.Providers.Virtualization
|
||||||
|
|
||||||
// check if DiskPart must be used to bring disk online and clear read-only flag
|
// check if DiskPart must be used to bring disk online and clear read-only flag
|
||||||
bool useDiskPartToClearReadOnly = false;
|
bool useDiskPartToClearReadOnly = false;
|
||||||
if (ConfigurationManager.AppSettings[CONFIG_USE_DISKPART_TO_CLEAR_READONLY_FLAG] != null)
|
if (ConfigurationManager.AppSettings[Constants.CONFIG_USE_DISKPART_TO_CLEAR_READONLY_FLAG] != null)
|
||||||
useDiskPartToClearReadOnly = Boolean.Parse(ConfigurationManager.AppSettings[CONFIG_USE_DISKPART_TO_CLEAR_READONLY_FLAG]);
|
useDiskPartToClearReadOnly = Boolean.Parse(ConfigurationManager.AppSettings[Constants.CONFIG_USE_DISKPART_TO_CLEAR_READONLY_FLAG]);
|
||||||
|
|
||||||
// determine disk index for DiskPart
|
// determine disk index for DiskPart
|
||||||
Wmi cimv2 = new Wmi(ServerNameSettings, WMI_CIMV2_NAMESPACE);
|
Wmi cimv2 = new Wmi(ServerNameSettings, Constants.WMI_CIMV2_NAMESPACE);
|
||||||
ManagementObject objDisk = cimv2.GetWmiObject("win32_diskdrive",
|
ManagementObject objDisk = cimv2.GetWmiObject("win32_diskdrive",
|
||||||
"Model='Msft Virtual Disk SCSI Disk Device' and ScsiTargetID={0} and ScsiLogicalUnit={1} and scsiPort={2}",
|
"Model='Msft Virtual Disk SCSI Disk Device' and ScsiTargetID={0} and ScsiLogicalUnit={1} and scsiPort={2}",
|
||||||
targetId, lun, portNumber);
|
targetId, lun, portNumber);
|
||||||
|
@ -1401,29 +1408,23 @@ exit", Convert.ToInt32(objDisk["Index"])));
|
||||||
|
|
||||||
public ReturnCode UnmountVirtualHardDisk(string vhdPath)
|
public ReturnCode UnmountVirtualHardDisk(string vhdPath)
|
||||||
{
|
{
|
||||||
ManagementObject objImgSvc = GetImageManagementService();
|
Command cmd = new Command("Dismount-VHD");
|
||||||
|
|
||||||
// get method params
|
cmd.Parameters.Add("Path", FileUtils.EvaluateSystemVariables(vhdPath));
|
||||||
ManagementBaseObject inParams = objImgSvc.GetMethodParameters("Unmount");
|
|
||||||
inParams["Path"] = FileUtils.EvaluateSystemVariables(vhdPath);
|
|
||||||
|
|
||||||
ManagementBaseObject outParams = (ManagementBaseObject)objImgSvc.InvokeMethod("Unmount", inParams, null);
|
PowerShell.Execute(cmd, true);
|
||||||
return (ReturnCode)Convert.ToInt32(outParams["ReturnValue"]);
|
return ReturnCode.OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
public JobResult ExpandVirtualHardDisk(string vhdPath, UInt64 sizeGB)
|
public JobResult ExpandVirtualHardDisk(string vhdPath, UInt64 sizeGB)
|
||||||
{
|
{
|
||||||
const UInt64 Size1G = 0x40000000;
|
Command cmd = new Command("Resize-VHD");
|
||||||
|
|
||||||
ManagementObject objImgSvc = GetImageManagementService();
|
cmd.Parameters.Add("Path", FileUtils.EvaluateSystemVariables(vhdPath));
|
||||||
|
cmd.Parameters.Add("SizeBytes", sizeGB * Constants.Size1G);
|
||||||
|
|
||||||
// get method params
|
PowerShell.Execute(cmd, true);
|
||||||
ManagementBaseObject inParams = objImgSvc.GetMethodParameters("ExpandVirtualHardDisk");
|
return JobHelper.CreateSuccessResult(ReturnCode.JobStarted);
|
||||||
inParams["Path"] = FileUtils.EvaluateSystemVariables(vhdPath);
|
|
||||||
inParams["MaxInternalSize"] = sizeGB * Size1G;
|
|
||||||
|
|
||||||
ManagementBaseObject outParams = (ManagementBaseObject)objImgSvc.InvokeMethod("ExpandVirtualHardDisk", inParams, null);
|
|
||||||
return CreateJobResultFromWmiMethodResults(outParams);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public JobResult ConvertVirtualHardDisk(string sourcePath, string destinationPath, VirtualHardDiskType diskType)
|
public JobResult ConvertVirtualHardDisk(string sourcePath, string destinationPath, VirtualHardDiskType diskType)
|
||||||
|
@ -1888,15 +1889,6 @@ exit", Convert.ToInt32(objDisk["Index"])));
|
||||||
return value == null ? 0 : Convert.ToInt64(value);
|
return value == null ? 0 : Convert.ToInt64(value);
|
||||||
}
|
}
|
||||||
|
|
||||||
//protected VirtualMachineSnapshot GetSnapshotById(string id)
|
|
||||||
//{
|
|
||||||
// var vms = GetVirtualMachines();
|
|
||||||
// var allSnapshots = vms.SelectMany(vm => GetVirtualMachineSnapshots(vm.Id.ToString()));
|
|
||||||
|
|
||||||
// return allSnapshots.FirstOrDefault(s => s.Id == id);
|
|
||||||
//}
|
|
||||||
|
|
||||||
|
|
||||||
protected JobResult CreateJobResultFromWmiMethodResults(ManagementBaseObject outParams)
|
protected JobResult CreateJobResultFromWmiMethodResults(ManagementBaseObject outParams)
|
||||||
{
|
{
|
||||||
JobResult result = new JobResult();
|
JobResult result = new JobResult();
|
||||||
|
@ -1918,21 +1910,11 @@ exit", Convert.ToInt32(objDisk["Index"])));
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
private ManagementObject GetJobWmiObject(string id)
|
|
||||||
{
|
|
||||||
return wmi.GetWmiObject("msvm_ConcreteJob", "InstanceID = '{0}'", id);
|
|
||||||
}
|
|
||||||
|
|
||||||
private ManagementObject GetVirtualSystemManagementService()
|
private ManagementObject GetVirtualSystemManagementService()
|
||||||
{
|
{
|
||||||
return wmi.GetWmiObject("msvm_VirtualSystemManagementService");
|
return wmi.GetWmiObject("msvm_VirtualSystemManagementService");
|
||||||
}
|
}
|
||||||
|
|
||||||
private ManagementObject GetVirtualSwitchManagementService()
|
|
||||||
{
|
|
||||||
return wmi.GetWmiObject("msvm_VirtualSwitchManagementService");
|
|
||||||
}
|
|
||||||
|
|
||||||
protected ManagementObject GetImageManagementService()
|
protected ManagementObject GetImageManagementService()
|
||||||
{
|
{
|
||||||
return wmi.GetWmiObject("msvm_ImageManagementService");
|
return wmi.GetWmiObject("msvm_ImageManagementService");
|
||||||
|
@ -1949,18 +1931,13 @@ exit", Convert.ToInt32(objDisk["Index"])));
|
||||||
wmi.GetWmiObject("Msvm_VirtualSystemSettingData", "InstanceID = '{0}'", "Microsoft:" + snapshotId);
|
wmi.GetWmiObject("Msvm_VirtualSystemSettingData", "InstanceID = '{0}'", "Microsoft:" + snapshotId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private string ConvertToUNC(string path)
|
||||||
|
|
||||||
|
|
||||||
private VirtualSwitch CreateSwitchFromWmiObject(ManagementObject objSwitch)
|
|
||||||
{
|
{
|
||||||
if (objSwitch == null || objSwitch.Properties.Count == 0)
|
if (String.IsNullOrEmpty(ServerNameSettings)
|
||||||
return null;
|
|| path.StartsWith(@"\\"))
|
||||||
|
return path;
|
||||||
|
|
||||||
VirtualSwitch sw = new VirtualSwitch();
|
return String.Format(@"\\{0}\{1}", ServerNameSettings, path.Replace(":", "$"));
|
||||||
sw.SwitchId = (string)objSwitch["Name"];
|
|
||||||
sw.Name = (string)objSwitch["ElementName"];
|
|
||||||
return sw;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private ConcreteJob CreateJobFromWmiObject(ManagementBaseObject objJob)
|
private ConcreteJob CreateJobFromWmiObject(ManagementBaseObject objJob)
|
||||||
|
@ -2061,7 +2038,7 @@ exit", Convert.ToInt32(objDisk["Index"])));
|
||||||
return File.Exists(path);
|
return File.Exists(path);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Wmi cimv2 = new Wmi(ServerNameSettings, WMI_CIMV2_NAMESPACE);
|
Wmi cimv2 = new Wmi(ServerNameSettings, Constants.WMI_CIMV2_NAMESPACE);
|
||||||
ManagementObject objFile = cimv2.GetWmiObject("CIM_Datafile", "Name='{0}'", path.Replace("\\", "\\\\"));
|
ManagementObject objFile = cimv2.GetWmiObject("CIM_Datafile", "Name='{0}'", path.Replace("\\", "\\\\"));
|
||||||
return (objFile != null);
|
return (objFile != null);
|
||||||
}
|
}
|
||||||
|
@ -2073,7 +2050,7 @@ exit", Convert.ToInt32(objDisk["Index"])));
|
||||||
return Directory.Exists(path);
|
return Directory.Exists(path);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Wmi cimv2 = new Wmi(ServerNameSettings, WMI_CIMV2_NAMESPACE);
|
Wmi cimv2 = new Wmi(ServerNameSettings, Constants.WMI_CIMV2_NAMESPACE);
|
||||||
ManagementObject objDir = cimv2.GetWmiObject("Win32_Directory", "Name='{0}'", path.Replace("\\", "\\\\"));
|
ManagementObject objDir = cimv2.GetWmiObject("Win32_Directory", "Name='{0}'", path.Replace("\\", "\\\\"));
|
||||||
return (objDir != null);
|
return (objDir != null);
|
||||||
}
|
}
|
||||||
|
@ -2097,7 +2074,7 @@ exit", Convert.ToInt32(objDisk["Index"])));
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
// copy using WMI
|
// copy using WMI
|
||||||
Wmi cimv2 = new Wmi(ServerNameSettings, WMI_CIMV2_NAMESPACE);
|
Wmi cimv2 = new Wmi(ServerNameSettings, Constants.WMI_CIMV2_NAMESPACE);
|
||||||
ManagementObject objFile = cimv2.GetWmiObject("CIM_Datafile", "Name='{0}'", sourceFileName.Replace("\\", "\\\\"));
|
ManagementObject objFile = cimv2.GetWmiObject("CIM_Datafile", "Name='{0}'", sourceFileName.Replace("\\", "\\\\"));
|
||||||
if (objFile == null)
|
if (objFile == null)
|
||||||
throw new Exception("Source file does not exists: " + sourceFileName);
|
throw new Exception("Source file does not exists: " + sourceFileName);
|
||||||
|
@ -2247,17 +2224,6 @@ exit", Convert.ToInt32(objDisk["Index"])));
|
||||||
return !String.IsNullOrEmpty(connString);
|
return !String.IsNullOrEmpty(connString);
|
||||||
}
|
}
|
||||||
#endregion Hyper-V Cloud
|
#endregion Hyper-V Cloud
|
||||||
|
|
||||||
#region PowerShell integration
|
|
||||||
|
|
||||||
private PowerShellManager _powerShell;
|
|
||||||
protected PowerShellManager PowerShell
|
|
||||||
{
|
|
||||||
get { return _powerShell ?? (_powerShell = new PowerShellManager(ServerNameSettings)); }
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
Loading…
Add table
Add a link
Reference in a new issue