public override void ExecuteCmdlet() { base.ExecuteCmdlet(); ExecuteClientAction(() => { VirtualMachine vmParameters = (this.ComputeClient.ComputeManagementClient.VirtualMachines.Get(this.ResourceGroupName, this.VMName)).VirtualMachine; bool osVolumeEncrypted = IsOsVolumeEncrypted(vmParameters); DiskEncryptionSettings osVolumeEncryptionSettings = GetOsVolumeEncryptionSettings(vmParameters); bool dataVolumesEncrypted = AreDataVolumesEncrypted(vmParameters); AzureDiskEncryptionStatusContext encryptionStatus = new AzureDiskEncryptionStatusContext { OsVolumeEncrypted = osVolumeEncrypted, OsVolumeEncryptionSettings = osVolumeEncryptionSettings, DataVolumesEncrypted = dataVolumesEncrypted }; WriteObject(encryptionStatus); }); }
public override void ExecuteCmdlet() { base.ExecuteCmdlet(); ExecuteClientAction(() => { VirtualMachine vmParameters = (this.ComputeClient.ComputeManagementClient.VirtualMachines.Get(this.ResourceGroupName, this.VMName)); EncryptionStatus osVolumeEncrypted = IsOsVolumeEncrypted(vmParameters); DiskEncryptionSettings osVolumeEncryptionSettings = GetOsVolumeEncryptionSettings(vmParameters); EncryptionStatus dataVolumesEncrypted = AreDataVolumesEncrypted(vmParameters); AzureDiskEncryptionStatusContext encryptionStatus = null; string progressMessage = null; OSType osType = GetOSType(vmParameters); switch (osType) { case OSType.Windows: encryptionStatus = new AzureDiskEncryptionStatusContext { OsVolumeEncrypted = osVolumeEncrypted, DataVolumesEncrypted = dataVolumesEncrypted, OsVolumeEncryptionSettings = osVolumeEncryptionSettings, ProgressMessage = string.Format(CultureInfo.CurrentUICulture, "OsVolume: {0}, DataVolumes: {1}", osVolumeEncrypted, dataVolumesEncrypted) }; WriteObject(encryptionStatus); break; case OSType.Linux: if (!IsExtensionInstalled(osType)) { VirtualMachine virtualMachineResponse = this.ComputeClient.ComputeManagementClient.VirtualMachines.GetWithInstanceView( this.ResourceGroupName, VMName).Body; VirtualMachineExtension parameters = GetVmExtensionParameters(virtualMachineResponse, osType); this.VirtualMachineExtensionClient.CreateOrUpdateWithHttpMessagesAsync( this.ResourceGroupName, this.VMName, this.Name, parameters).GetAwaiter().GetResult(); } Dictionary<string, string> encryptionStatusParsed = null; try { string encryptionStatusJson = GetExtensionStatusMessage(osType, returnSubstatusMessage: true); encryptionStatusParsed = JsonConvert.DeserializeObject<Dictionary<string, string>>(encryptionStatusJson); } catch(KeyNotFoundException) { encryptionStatusParsed = new Dictionary<string, string>() { { AzureDiskEncryptionExtensionConstants.encryptionResultOsKey, EncryptionStatus.Unknown.ToString() }, { AzureDiskEncryptionExtensionConstants.encryptionResultDataKey, EncryptionStatus.Unknown.ToString() } }; } try { progressMessage = GetExtensionStatusMessage(osType); } catch(KeyNotFoundException) { progressMessage = string.Format(CultureInfo.CurrentUICulture, "Extension status not available on the VM"); } encryptionStatus = new AzureDiskEncryptionStatusContext { OsVolumeEncrypted = (EncryptionStatus)Enum.Parse(typeof(EncryptionStatus), encryptionStatusParsed[AzureDiskEncryptionExtensionConstants.encryptionResultOsKey]), DataVolumesEncrypted = (EncryptionStatus)Enum.Parse(typeof(EncryptionStatus), encryptionStatusParsed[AzureDiskEncryptionExtensionConstants.encryptionResultDataKey]), OsVolumeEncryptionSettings = osVolumeEncryptionSettings, ProgressMessage = progressMessage }; WriteObject(encryptionStatus); break; case OSType.Unknown: ThrowTerminatingError(new ErrorRecord(new ApplicationException(string.Format(CultureInfo.CurrentUICulture, "OS type unknown.")), "InvalidResult", ErrorCategory.InvalidResult, null)); break; } }); }
public override void ExecuteCmdlet() { base.ExecuteCmdlet(); ExecuteClientAction(() => { VirtualMachine vmParameters = (this.ComputeClient.ComputeManagementClient.VirtualMachines.Get(this.ResourceGroupName, this.VMName)); EncryptionStatus osVolumeEncrypted = IsOsVolumeEncrypted(vmParameters); DiskEncryptionSettings osVolumeEncryptionSettings = GetOsVolumeEncryptionSettings(vmParameters); EncryptionStatus dataVolumesEncrypted = AreDataVolumesEncrypted(vmParameters); OSType osType = GetOSType(vmParameters); switch (osType) { case OSType.Windows: case OSType.Linux: AzureDiskEncryptionStatusContext encryptionStatus = new AzureDiskEncryptionStatusContext { OsVolumeEncrypted = osVolumeEncrypted, DataVolumesEncrypted = dataVolumesEncrypted, OsVolumeEncryptionSettings = osVolumeEncryptionSettings }; WriteObject(encryptionStatus); break; case OSType.Unknown: ThrowTerminatingError(new ErrorRecord(new ApplicationException(string.Format(CultureInfo.CurrentUICulture, "OS type unknown.")), "InvalidResult", ErrorCategory.InvalidResult, null)); break; } }); }