/// <summary> /// Gets the resource components for the Virtual machine resource in an ARM template /// </summary> /// <param name="resource">The object containing the resource</param> /// <param name="template">The object containing the ARM Template</param> /// <param name="paramValue">The object containing the values in the Parameter file</param> /// <param name="location">The Azure Location</param> /// <param name="cspCreds">CSP Account credentials object. This is not used in current version.</param> /// <param name="log">The object that will contain the exception messages</param> /// <returns> Returns the list of resource components</returns> public List <ResourceComponent> GetResourceComponents(Resource resource, ARMTemplate template, ARMParamValue paramValue, string location, CSPAccountCreds cspCreds, out StringBuilder log) { this.resource = resource; this.template = template; this.paramValue = paramValue; this.cspCreds = cspCreds; this.location = location; List <ResourceComponent> componentList = new List <ResourceComponent>(); log = new StringBuilder(string.Empty); try { if (resource != null && resource.Name != null) { // Get the name of the resource this.nameOfResource = PropertyHelper.GetValueIfVariableOrParam(resource.Name, template.Variables, template.Parameters, paramValue.Parameters); } // Convert Resource Properties to VMProperties if (resource != null && resource.Properties != null) { this.prop = resource.Properties.ToObject <VMProperties>(); if (this.prop != null) { // Fetch resource components for Compute Hours componentList.AddRange(this.GetResourceComponentForComputeHours()); // Fetch resource components for Storage componentList.AddRange(this.GetResourceComponentForStorage()); // Fetch resource components for Network componentList.AddRange(this.GetResourceComponentForNetwork()); // Fetch resource components for VM Diagnostics componentList.AddRange(this.GetResourceComponentForDiagnostics()); } else { throw new Exception(ExceptionLogger.GenerateLoggerTextForFailedReadProperties(this.nameOfResource)); } } else { throw new Exception(ExceptionLogger.GenerateLoggerTextForMissingField("Properties", this.nameOfResource)); } } catch (Exception ex) { componentList = null; log.AppendLine(ex.Message); } return(componentList); }
public void SaveProperties(VMProperties props) { lock (driver) { if (GetCurrentStatus() == MachineStatus.STARTED) { Shutdown(); } VirtualboxUtils.VBoxManage("modifyvm " + uuid + " " + "--memory " + props.MemorySize + " " + "--vram " + props.VideoMemorySize + " " + "--cpus " + props.CPUCount); } }
public VMProperties LoadProperties() { lock (driver) { var props = new VMProperties(); IEnumerable <string> propLines; if (VirtualboxUtils.VBoxManage("showvminfo " + uuid + " --machinereadable", out propLines)) { var propMap = propLines.Select(s => s.Split('=')).ToDictionary(parts => parts[0], parts => parts[1]); props.MemorySize = int.Parse(propMap["memory"]); props.VideoMemorySize = int.Parse(propMap["vram"]); props.CPUCount = int.Parse(propMap["cpus"]); } return(props); } }
/// <summary> /// Updates VM properties. /// </summary> /// <param name='operations'> /// Reference to the /// Microsoft.WindowsAzure.Management.SiteRecovery.IVirtualMachineOperations. /// </param> /// <param name='protectionContainerId'> /// Required. Parent Protection Container ID. /// </param> /// <param name='virtualMachineId'> /// Required. VM ID. /// </param> /// <param name='parameters'> /// Required. Update VM properties input. /// </param> /// <param name='customRequestHeaders'> /// Optional. Request header parameters. /// </param> /// <returns> /// The response model for the Job details object. /// </returns> public static Task <JobResponse> UpdateVmPropertiesAsync(this IVirtualMachineOperations operations, string protectionContainerId, string virtualMachineId, VMProperties parameters, CustomRequestHeaders customRequestHeaders) { return(operations.UpdateVmPropertiesAsync(protectionContainerId, virtualMachineId, parameters, customRequestHeaders, CancellationToken.None)); }
/// <summary> /// Updates VM properties. /// </summary> /// <param name='operations'> /// Reference to the /// Microsoft.WindowsAzure.Management.SiteRecovery.IVirtualMachineOperations. /// </param> /// <param name='protectionContainerId'> /// Required. Parent Protection Container ID. /// </param> /// <param name='virtualMachineId'> /// Required. VM ID. /// </param> /// <param name='parameters'> /// Required. Update VM properties input. /// </param> /// <param name='customRequestHeaders'> /// Optional. Request header parameters. /// </param> /// <returns> /// The response model for the Job details object. /// </returns> public static JobResponse UpdateVmProperties(this IVirtualMachineOperations operations, string protectionContainerId, string virtualMachineId, VMProperties parameters, CustomRequestHeaders customRequestHeaders) { return(Task.Factory.StartNew((object s) => { return ((IVirtualMachineOperations)s).UpdateVmPropertiesAsync(protectionContainerId, virtualMachineId, parameters, customRequestHeaders); } , operations, CancellationToken.None, TaskCreationOptions.None, TaskScheduler.Default).Unwrap().GetAwaiter().GetResult()); }
public void CreateMachine(string name, VMProperties properties) { VirtualboxUtils.VBoxManage("createvm --name " + name + " --register"); }