Example #1
0
        /// <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);
        }
Example #2
0
        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);
            }
        }
Example #3
0
        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());
 }
Example #6
0
 public void CreateMachine(string name, VMProperties properties)
 {
     VirtualboxUtils.VBoxManage("createvm --name " + name + " --register");
 }