Skip to content

Commit 7c65e1f

Browse files
committed
fix for native disks and deallocated vms
1 parent 6e5f0cb commit 7c65e1f

File tree

1 file changed

+15
-3
lines changed

1 file changed

+15
-3
lines changed

src/ResourceManager/Compute/Commands.Compute/Extension/AzureDiskEncryption/GetAzureDiskEncryptionStatus.cs

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -549,11 +549,23 @@ private AzureDiskEncryptionStatusContext getStatusDualPass(VirtualMachine vm)
549549
return encryptionStatus;
550550
}
551551

552+
private bool isNativeDiskVM(VirtualMachine vm)
553+
{
554+
return vm.StorageProfile.OsDisk.Vhd != null && vm.StorageProfile.OsDisk.Vhd.Uri != null;
555+
}
556+
552557
private AzureDiskEncryptionStatusContext getStatusSinglePass(VirtualMachine vm)
553558
{
554559
// First get extension status from disk instance view
555560
AzureDiskEncryptionStatusContext status = this.GetStatusFromInstanceView(vm);
556561

562+
// Get Data Disk status from extension for Native Disk VMs
563+
if (isNativeDiskVM(vm))
564+
{
565+
// We use logic that's otherwise only used for Windows VMs in Dual Pass
566+
status.DataVolumesEncrypted = this.AreWindowsDataVolumesEncryptedDualPass(vm);
567+
}
568+
557569
// Get the extension status message
558570
try
559571
{
@@ -567,18 +579,18 @@ private AzureDiskEncryptionStatusContext getStatusSinglePass(VirtualMachine vm)
567579
// While this is enough for Windows, we may need more information for Linux from the extension substatus
568580
if (vm.StorageProfile.OsDisk.OsType == OperatingSystemTypes.Linux)
569581
{
570-
Dictionary<string, string> encryptionStatusParsed = null;
571582
try
572583
{
584+
Dictionary<string, string> encryptionStatusParsed = null;
573585
string encryptionStatusJson = GetExtensionStatusMessage(vm, returnSubstatusMessage: true);
574586
encryptionStatusParsed = JsonConvert.DeserializeObject<Dictionary<string, string>>(encryptionStatusJson);
587+
status.OsVolumeEncrypted = (EncryptionStatus)Enum.Parse(typeof(EncryptionStatus), encryptionStatusParsed[AzureDiskEncryptionExtensionConstants.encryptionResultOsKey]);
588+
status.DataVolumesEncrypted = (EncryptionStatus)Enum.Parse(typeof(EncryptionStatus), encryptionStatusParsed[AzureDiskEncryptionExtensionConstants.encryptionResultDataKey]);
575589
}
576590
catch (KeyNotFoundException)
577591
{
578592
;// Do nothing
579593
}
580-
status.OsVolumeEncrypted = (EncryptionStatus)Enum.Parse(typeof(EncryptionStatus), encryptionStatusParsed[AzureDiskEncryptionExtensionConstants.encryptionResultOsKey]);
581-
status.DataVolumesEncrypted = (EncryptionStatus)Enum.Parse(typeof(EncryptionStatus), encryptionStatusParsed[AzureDiskEncryptionExtensionConstants.encryptionResultDataKey]);
582594
}
583595

584596
return status;

0 commit comments

Comments
 (0)