wsp-10323 Convert the VSP provider into one utilizing PowerShell. Step 2

This commit is contained in:
AlexanderTr 2015-03-06 15:03:07 +03:00
parent a96931786c
commit 5b09a543f8
10 changed files with 699 additions and 493 deletions

View file

@ -0,0 +1,83 @@
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Management.Automation;
using System.Management.Automation.Runspaces;
using System.Text;
using System.Threading.Tasks;
namespace WebsitePanel.Providers.Virtualization
{
public static class DvdDriveHelper
{
public static DvdDriveInfo Get(PowerShellManager powerShell, string vmName)
{
DvdDriveInfo info = new DvdDriveInfo();
Command cmd = new Command("Get-VMDvdDrive");
cmd.Parameters.Add("VMName", vmName);
Collection<PSObject> result = powerShell.Execute(cmd, false);
if (result != null && result.Count > 0)
{
info.Id = result[0].GetString("Id");
info.Name = result[0].GetString("Name");
info.ControllerType = result[0].GetEnum<ControllerType>("ControllerType");
info.ControllerNumber = result[0].GetInt("ControllerNumber");
info.ControllerLocation = result[0].GetInt("ControllerLocation");
}
return info;
}
public static void Set(PowerShellManager powerShell, string vmName, string path)
{
var dvd = Get(powerShell, vmName);
Command cmd = new Command("Set-VMDvdDrive");
cmd.Parameters.Add("VMName", vmName);
cmd.Parameters.Add("Path", path);
cmd.Parameters.Add("ControllerNumber", dvd.ControllerNumber);
cmd.Parameters.Add("ControllerLocation", dvd.ControllerLocation);
powerShell.Execute(cmd, false);
}
public static void Update(PowerShellManager powerShell, VirtualMachine vm, bool dvdDriveShouldBeInstalled)
{
if (!vm.DvdDriveInstalled && dvdDriveShouldBeInstalled)
Add(powerShell, vm.Name);
else if (vm.DvdDriveInstalled && !dvdDriveShouldBeInstalled)
Remove(powerShell, vm.Name);
}
public static void Add(PowerShellManager powerShell, string vmName)
{
var dvd = Get(powerShell, vmName);
Command cmd = new Command("Add-VMDvdDrive");
cmd.Parameters.Add("VMName", vmName);
cmd.Parameters.Add("ControllerNumber", dvd.ControllerNumber);
cmd.Parameters.Add("ControllerLocation", dvd.ControllerLocation);
powerShell.Execute(cmd, false);
}
public static void Remove(PowerShellManager powerShell, string vmName)
{
var dvd = Get(powerShell, vmName);
Command cmd = new Command("Remove-VMDvdDrive");
cmd.Parameters.Add("VMName", vmName);
cmd.Parameters.Add("ControllerNumber", dvd.ControllerNumber);
cmd.Parameters.Add("ControllerLocation", dvd.ControllerLocation);
powerShell.Execute(cmd, false);
}
}
}