/// <summary> /// Disables encryption on the given disk volume. /// </summary> /// <param name="volumeType">The disk volume.</param> /// <return>An observable that emits the decryption status.</return> ///GENMHASH:B980B0A762D67885E3B127392FD42890:A65E5C07D8DA37A2AB5EC199276933B9 internal async Task <Microsoft.Azure.Management.Compute.Fluent.IDiskVolumeEncryptionMonitor> DisableEncryptionAsync(DiskVolumeType volumeType, CancellationToken cancellationToken = default(CancellationToken)) { var encryptConfig = EncryptionSettings.CreateDisable(volumeType); await ValidateBeforeDecryptAsync(volumeType, cancellationToken); // Update the encryption extension if already installed // IVirtualMachineExtension extension = await GetEncryptionExtensionInstalledInVMAsync(cancellationToken); IVirtualMachine virtualMachine = await UpdateEncryptionExtensionAsync(encryptConfig, extension, cancellationToken); bool isNoAAD = EncryptionExtensionIdentifier.IsNoAADVersion(osType, extension.VersionName); if (virtualMachine != null && !isNoAAD) { // Validate and retrieve the encryption extension status // string status = await RetrieveEncryptionExtensionStatusStringAsync(ERROR_ENCRYPTION_EXTENSION_STATUS_IS_EMPTY, cancellationToken); // Update the VM's OS profile by marking encryption disabled // virtualMachine = await UpdateVMStorageProfileAsync(encryptConfig, cancellationToken); } // Gets the encryption status // return(await GetDiskVolumeEncryptDecryptStatusAsync(virtualMachine, isNoAAD, cancellationToken)); }
///GENMHASH:F5C4065BE678A5CA018C264CAFF7901A:1C7F0F2F318A44EF8EF32F689B1ABFB4 public async Task <Microsoft.Azure.Management.Compute.Fluent.IDiskVolumeEncryptionMonitor> GetMonitorAsync(CancellationToken cancellationToken = default(CancellationToken)) { var extension = await GetEncryptionExtensionAsync(cancellationToken); if (extension == null) { return(null); } bool isNoAAD = EncryptionExtensionIdentifier.IsNoAADVersion(this.virtualMachine.OSType, extension.VersionName); IDiskVolumeEncryptionMonitor monitor = null; if (this.virtualMachine.OSType == OperatingSystemTypes.Linux) { if (isNoAAD) { monitor = new LinuxDiskVolumeNoAADEncryptionMonitorImpl(virtualMachine.Id, virtualMachine.Manager); } else { monitor = new LinuxDiskVolumeLegacyEncryptionMonitorImpl(virtualMachine.Id, virtualMachine.Manager); } } else { if (isNoAAD) { monitor = new WindowsVolumeNoAADEncryptionMonitorImpl(virtualMachine.Id, virtualMachine.Manager); } else { monitor = new WindowsVolumeLegacyEncryptionMonitorImpl(virtualMachine.Id, virtualMachine.Manager); } } return(await monitor.RefreshAsync(cancellationToken)); }