private void TestVMWithOSProfile( bool useWindowsProfile, Action <VirtualMachine> vmCustomizer = null, Action <VirtualMachine> vmValidator = null) { string rgName = TestUtilities.GenerateName(TestPrefix); string storageAccountName = TestUtilities.GenerateName(TestPrefix); string asName = TestUtilities.GenerateName("as"); string imgRefId = GetPlatformOSImage(useWindowsProfile); VirtualMachine inputVM; try { StorageAccount storageAccountOutput = CreateStorageAccount(rgName, storageAccountName); VirtualMachine vm = CreateVM(rgName, asName, storageAccountOutput, imgRefId, out inputVM, vmCustomizer); // TODO: Remove these 2 lines once tested against prod (re-recording occurs). // These 2 lines are needed since the previous operation does a Get, which in the old recording does not // return the CreateOptionType required field. vm.StorageProfile.DataDisks.ForEach(dd => dd.CreateOption = DiskCreateOptionTypes.Empty); vm.StorageProfile.OSDisk.CreateOption = DiskCreateOptionTypes.Empty; VirtualMachineGetResponse getVMWithInstanceViewResponse = m_CrpClient.VirtualMachines.GetWithInstanceView(rgName, inputVM.Name); Assert.True(getVMWithInstanceViewResponse.StatusCode == HttpStatusCode.OK); ValidateVMInstanceView(inputVM, getVMWithInstanceViewResponse.VirtualMachine); var lroResponse = m_CrpClient.VirtualMachines.CreateOrUpdate(rgName, vm); Assert.True(lroResponse.Status == ComputeOperationStatus.Succeeded); if (vmValidator != null) { vmValidator(vm); } var deleteOperationResponse = m_CrpClient.VirtualMachines.BeginDeleting(rgName, vm.Name); Assert.True(deleteOperationResponse.StatusCode == HttpStatusCode.Accepted); // TODO: VM delete operation takes too long, disable it for now // lroResponse = m_CrpClient.VirtualMachines.Delete(rgName, vm.Name); // Assert.True(lroResponse.Status == ComputeOperationStatus.Succeeded); } finally { if (m_ResourcesClient != null) { // TODO: RG delete operation takes too long, disable it for now // var deleteResourceGroupResponse = m_ResourcesClient.ResourceGroups.Delete(rgName); // Assert.True(deleteResourceGroupResponse.StatusCode == HttpStatusCode.OK); var deleteResourceGroupResponse = m_ResourcesClient.ResourceGroups.BeginDeleting(rgName); Assert.True(deleteResourceGroupResponse.StatusCode == HttpStatusCode.Accepted); } } }
public static PSVirtualMachineInstanceView ToPSVirtualMachineInstanceView( this VirtualMachineGetResponse response, string resourceGroupName = null, string vmName = null) { if (response == null) { return(null); } return(response.VirtualMachine.InstanceView.ToPSVirtualMachineInstanceView(resourceGroupName, vmName)); }
private void TestVMWithOSProfile( string rgName, bool useWindowsProfile, Action <VirtualMachine> vmCustomizer = null, Action <VirtualMachine> vmValidator = null) { string storageAccountName = TestUtilities.GenerateName(TestPrefix); string asName = TestUtilities.GenerateName("as"); ImageReference imageRef = GetPlatformVMImage(useWindowsProfile); VirtualMachine inputVM; try { StorageAccount storageAccountOutput = CreateStorageAccount(rgName, storageAccountName); VirtualMachine vm = CreateVM_NoAsyncTracking(rgName, asName, storageAccountOutput, imageRef, out inputVM, vmCustomizer); VirtualMachineGetResponse getVMWithInstanceViewResponse = m_CrpClient.VirtualMachines.GetWithInstanceView(rgName, inputVM.Name); Assert.True(getVMWithInstanceViewResponse.StatusCode == HttpStatusCode.OK); ValidateVMInstanceView(inputVM, getVMWithInstanceViewResponse.VirtualMachine); var lroResponse = m_CrpClient.VirtualMachines.CreateOrUpdate(rgName, vm); Assert.True(lroResponse.Status == ComputeOperationStatus.Succeeded); if (vmValidator != null) { vmValidator(vm); } var deleteOperationResponse = m_CrpClient.VirtualMachines.BeginDeleting(rgName, vm.Name); Assert.True(deleteOperationResponse.StatusCode == HttpStatusCode.Accepted); // TODO: VM delete operation takes too long, disable it for now // lroResponse = m_CrpClient.VirtualMachines.Delete(rgName, vm.Name); // Assert.True(lroResponse.Status == ComputeOperationStatus.Succeeded); } finally { if (m_ResourcesClient != null) { // TODO: RG delete operation takes too long, disable it for now // var deleteResourceGroupResponse = m_ResourcesClient.ResourceGroups.Delete(rgName); // Assert.True(deleteResourceGroupResponse.StatusCode == HttpStatusCode.OK); var deleteResourceGroupResponse = m_ResourcesClient.ResourceGroups.BeginDeleting(rgName); Assert.True(deleteResourceGroupResponse.StatusCode == HttpStatusCode.Accepted); } } }
/// <summary> /// remove the vmbackups with the metadata key "vmbackuptag" and value snapshotTag, snapshotTag is the parameter passed in. /// </summary> /// <param name="resourceGroupName"></param> /// <param name="vmName"></param> /// <param name="virtualMachineExtensionType"></param> /// <param name="location"></param> /// <param name="virtualMachineResponse"></param> /// <param name="profile"></param> /// <param name="VirtualMachineExtensionClient"></param> /// <param name="snapshotTag"></param> public void RemoveSnapshot(AzureVMBackupConfig vmConfig, string snapshotTag, VirtualMachineExtensionBaseCmdlet virtualMachineExtensionBaseCmdlet) { VirtualMachineGetResponse virtualMachineResponse = virtualMachineExtensionBaseCmdlet.ComputeClient.ComputeManagementClient.VirtualMachines.GetWithInstanceView(vmConfig.ResourceGroupName, vmConfig.VMName); StorageManagementClient storageClient = AzureSession.ClientFactory.CreateClient <StorageManagementClient>(virtualMachineExtensionBaseCmdlet.DefaultProfile.Context, AzureEnvironment.Endpoint.ResourceManager); StorageCredentialsFactory storageCredentialsFactory = new StorageCredentialsFactory(vmConfig.ResourceGroupName, storageClient, virtualMachineExtensionBaseCmdlet.DefaultProfile.Context.Subscription); List <string> blobUris = this.GetDiskBlobUris(virtualMachineResponse.VirtualMachine); Dictionary <string, string> snapshotQuery = new Dictionary <string, string>(); List <CloudPageBlob> snapshots = this.FindSnapshot(blobUris, snapshotQuery, storageCredentialsFactory); foreach (CloudPageBlob snapshot in snapshots) { snapshot.Delete(); } }
protected override void ProcessRecord() { base.ProcessRecord(); VirtualMachineGetResponse virtualMachineResponse = this.ComputeClient.ComputeManagementClient.VirtualMachines.GetWithInstanceView(this.ResourceGroupName, VMName); string currentOSType = virtualMachineResponse.VirtualMachine.StorageProfile.OSDisk.OperatingSystemType; if (string.Equals(currentOSType, "Linux", StringComparison.InvariantCultureIgnoreCase)) { AzureVMBackupExtensionUtil util = new AzureVMBackupExtensionUtil(); AzureVMBackupConfig vmConfig = new AzureVMBackupConfig(); vmConfig.ResourceGroupName = ResourceGroupName; vmConfig.VMName = VMName; vmConfig.VirtualMachineExtensionType = VirtualMachineExtensionType; util.RemoveSnapshot(vmConfig, Tag, this); } else { ThrowTerminatingError(new ErrorRecord(new ArgumentException(string.Format(CultureInfo.CurrentUICulture, "The VM should be a Linux VM")), "InvalidArgument", ErrorCategory.InvalidArgument, null)); } }