Exemplo n.º 1
0
        /// <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));
        }