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); }); }
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(); }
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); }
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); }