@@ -549,11 +549,23 @@ private AzureDiskEncryptionStatusContext getStatusDualPass(VirtualMachine vm)
549
549
return encryptionStatus ;
550
550
}
551
551
552
+ private bool isNativeDiskVM ( VirtualMachine vm )
553
+ {
554
+ return vm . StorageProfile . OsDisk . Vhd != null && vm . StorageProfile . OsDisk . Vhd . Uri != null ;
555
+ }
556
+
552
557
private AzureDiskEncryptionStatusContext getStatusSinglePass ( VirtualMachine vm )
553
558
{
554
559
// First get extension status from disk instance view
555
560
AzureDiskEncryptionStatusContext status = this . GetStatusFromInstanceView ( vm ) ;
556
561
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
+
557
569
// Get the extension status message
558
570
try
559
571
{
@@ -567,18 +579,18 @@ private AzureDiskEncryptionStatusContext getStatusSinglePass(VirtualMachine vm)
567
579
// While this is enough for Windows, we may need more information for Linux from the extension substatus
568
580
if ( vm . StorageProfile . OsDisk . OsType == OperatingSystemTypes . Linux )
569
581
{
570
- Dictionary < string , string > encryptionStatusParsed = null ;
571
582
try
572
583
{
584
+ Dictionary < string , string > encryptionStatusParsed = null ;
573
585
string encryptionStatusJson = GetExtensionStatusMessage ( vm , returnSubstatusMessage : true ) ;
574
586
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 ] ) ;
575
589
}
576
590
catch ( KeyNotFoundException )
577
591
{
578
592
; // Do nothing
579
593
}
580
- status . OsVolumeEncrypted = ( EncryptionStatus ) Enum . Parse ( typeof ( EncryptionStatus ) , encryptionStatusParsed [ AzureDiskEncryptionExtensionConstants . encryptionResultOsKey ] ) ;
581
- status . DataVolumesEncrypted = ( EncryptionStatus ) Enum . Parse ( typeof ( EncryptionStatus ) , encryptionStatusParsed [ AzureDiskEncryptionExtensionConstants . encryptionResultDataKey ] ) ;
582
594
}
583
595
584
596
return status ;
0 commit comments