コード例 #1
0
        public override void ExecuteCmdlet()
        {
            base.ExecuteCmdlet();

            ExecuteClientAction(() =>
            {
                var parameters = new VirtualMachineCaptureParameters
                {
                    DestinationContainerName = DestinationContainerName,
                    OverwriteVhds = Overwrite.IsPresent,
                    VhdPrefix = VHDNamePrefix
                };

                var op = this.VirtualMachineClient.CaptureWithHttpMessagesAsync(
                    this.ResourceGroupName,
                    this.Name,
                    parameters).GetAwaiter().GetResult();

                var result = Mapper.Map<PSAzureOperationResponse>(op);

                if (!string.IsNullOrWhiteSpace(this.Path))
                {
                    File.WriteAllText(this.Path, op.Body.Output.ToString());
                }
                WriteObject(result);
            });
        }
コード例 #2
0
        protected override void ProcessRecord()
        {
            base.ProcessRecord();

            ExecuteClientAction(() =>
            {
                var parameters = new VirtualMachineCaptureParameters
                {
                    DestinationContainerName = DestinationContainerName,
                    Overwrite = Overwrite.IsPresent,
                    VirtualHardDiskNamePrefix = VHDNamePrefix
                };

                var op = this.VirtualMachineClient.Capture(
                    this.ResourceGroupName,
                    this.Name,
                    parameters);

                var result = Mapper.Map<PSComputeLongRunningOperation>(op);

                if (!string.IsNullOrWhiteSpace(this.Path))
                {
                    File.WriteAllText(this.Path, result.Output);
                }
                WriteObject(result);
            });
        }
 /// <summary>
 /// Captures the VM by copying VirtualHardDisks of the VM and outputs a
 /// template that can be used to create similar VMs.
 /// </summary>
 /// <param name='operations'>
 /// Reference to the
 /// Microsoft.Azure.Management.Compute.IVirtualMachineOperations.
 /// </param>
 /// <param name='resourceGroupName'>
 /// Required. The name of the resource group.
 /// </param>
 /// <param name='vmName'>
 /// Required. The name of the virtual machine.
 /// </param>
 /// <param name='parameters'>
 /// Required. Parameters supplied to the Capture Virtual Machine
 /// operation.
 /// </param>
 /// <returns>
 /// The compute long running operation response.
 /// </returns>
 public static ComputeOperationResponse BeginCapturing(this IVirtualMachineOperations operations, string resourceGroupName, string vmName, VirtualMachineCaptureParameters parameters)
 {
     return Task.Factory.StartNew((object s) => 
     {
         return ((IVirtualMachineOperations)s).BeginCapturingAsync(resourceGroupName, vmName, parameters);
     }
     , operations, CancellationToken.None, TaskCreationOptions.None, TaskScheduler.Default).Unwrap().GetAwaiter().GetResult();
 }
コード例 #4
0
        public override void ExecuteCmdlet()
        {
            base.ExecuteCmdlet();

            var parameters = new VirtualMachineCaptureParameters
            {
                DestinationContainerName = DestinationContainerName,
                Overwrite = Overwrite.IsPresent,
                VirtualHardDiskNamePrefix = VHDNamePrefix
            };

            var op = this.VirtualMachineClient.Capture(
                this.ResourceGroupName,
                this.VMName,
                parameters);

            WriteObject(op);
        }
コード例 #5
0
        public void TestVMOperations()
        {
            using (var context = UndoContext.Current)
            {
                context.Start();
                EnsureClientsInitialized();

                ImageReference imageRef = GetPlatformVMImage(useWindowsImage: true);

                // Create resource group
                string rg1Name = TestUtilities.GenerateName(TestPrefix) + 1;
                string asName = TestUtilities.GenerateName("as");
                string storageAccountName = TestUtilities.GenerateName(TestPrefix);
                VirtualMachine inputVM1;

                bool passed = false;
                try
                {
                    // Create Storage Account, so that both the VMs can share it
                    var storageAccountOutput = CreateStorageAccount(rg1Name, storageAccountName);

                    VirtualMachine vm1 = CreateVM_NoAsyncTracking(rg1Name, asName, storageAccountOutput, imageRef, out inputVM1);

                    var startOperationResponse = m_CrpClient.VirtualMachines.BeginStarting(rg1Name, vm1.Name);
                    Assert.Equal(HttpStatusCode.Accepted, startOperationResponse.StatusCode);
                    ComputeLongRunningOperationResponse lroResponse = m_CrpClient.VirtualMachines.Start(rg1Name, vm1.Name);
                    Assert.Equal(ComputeOperationStatus.Succeeded, lroResponse.Status);

                    var restartOperationResponse = m_CrpClient.VirtualMachines.BeginRestarting(rg1Name, vm1.Name);
                    Assert.Equal(HttpStatusCode.Accepted, startOperationResponse.StatusCode);
                    lroResponse = m_CrpClient.VirtualMachines.Restart(rg1Name, vm1.Name);
                    Assert.Equal(ComputeOperationStatus.Succeeded, lroResponse.Status); 
                    
                    var stopOperationResponse = m_CrpClient.VirtualMachines.BeginPoweringOff(rg1Name, vm1.Name);
                    Assert.Equal(HttpStatusCode.Accepted, startOperationResponse.StatusCode);
                    lroResponse = m_CrpClient.VirtualMachines.PowerOff(rg1Name, vm1.Name);
                    Assert.Equal(ComputeOperationStatus.Succeeded, lroResponse.Status);

                    var deallocateOperationResponse = m_CrpClient.VirtualMachines.BeginDeallocating(rg1Name, vm1.Name);
                    Assert.Equal(HttpStatusCode.Accepted, startOperationResponse.StatusCode);
                    lroResponse = m_CrpClient.VirtualMachines.Deallocate(rg1Name, vm1.Name);
                    Assert.Equal(ComputeOperationStatus.Succeeded, lroResponse.Status);

                    var generalizeResponse = m_CrpClient.VirtualMachines.Generalize(rg1Name, vm1.Name);
                    Assert.Equal(HttpStatusCode.OK, generalizeResponse.StatusCode);

                    var captureParams = new VirtualMachineCaptureParameters
                    {
                        DestinationContainerName = TestUtilities.GenerateName(TestPrefix),
                        VirtualHardDiskNamePrefix = TestUtilities.GenerateName(TestPrefix),
                        Overwrite = true
                    };

                    ComputeLongRunningOperationResponse captureResponse = 
                        m_CrpClient.VirtualMachines.Capture(rg1Name, vm1.Name, captureParams);
                    Assert.Equal(ComputeOperationStatus.Succeeded, captureResponse.Status);
                    Assert.NotNull(captureResponse.Output);
                    string outputAsString = captureResponse.Output;
                    Assert.Equal('{', outputAsString[0]);
                    Assert.True(outputAsString.Contains(captureParams.DestinationContainerName.ToLowerInvariant()));
                    Assert.True(outputAsString.ToLowerInvariant().Contains(
                        captureParams.VirtualHardDiskNamePrefix.ToLowerInvariant()));

                    passed = true;
                }
                finally
                {
                    // Cleanup the created resources. But don't wait since it takes too long, and it's not the purpose
                    // of the test to cover deletion. CSM does persistent retrying over all RG resources.
                    var deleteRg1Response = m_ResourcesClient.ResourceGroups.BeginDeleting(rg1Name);
                    Assert.True(deleteRg1Response.StatusCode == HttpStatusCode.Accepted, "BeginDeleting status was not Accepted.");
                }

                Assert.True(passed);
            }
        }
 /// <summary>
 /// Captures the VM by copying VirtualHardDisks of the VM and outputs a
 /// template that can be used to create similar VMs.
 /// </summary>
 /// <param name='operations'>
 /// Reference to the
 /// Microsoft.Azure.Management.Compute.IVirtualMachineOperations.
 /// </param>
 /// <param name='resourceGroupName'>
 /// Required. The name of the resource group.
 /// </param>
 /// <param name='vmName'>
 /// Required. The name of the virtual machine.
 /// </param>
 /// <param name='parameters'>
 /// Required. Parameters supplied to the Capture Virtual Machine
 /// operation.
 /// </param>
 /// <returns>
 /// The compute long running operation response.
 /// </returns>
 public static Task<ComputeOperationResponse> BeginCapturingAsync(this IVirtualMachineOperations operations, string resourceGroupName, string vmName, VirtualMachineCaptureParameters parameters)
 {
     return operations.BeginCapturingAsync(resourceGroupName, vmName, parameters, CancellationToken.None);
 }