Skip to content

Commit e825b29

Browse files
author
Kamran Khan
committed
Parse the encryption status from JSON in substatus field for Linux VMs
1 parent 930cadb commit e825b29

File tree

3 files changed

+20
-5
lines changed

3 files changed

+20
-5
lines changed

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,7 @@ public AzureDiskEncryptionExtensionContext(PSVirtualMachineExtension psExt)
9494
ProtectedSettings = psExt.ProtectedSettings;
9595
ProvisioningState = psExt.ProvisioningState;
9696
Statuses = psExt.Statuses;
97+
SubStatuses = psExt.SubStatuses;
9798

9899
InitializeAzureDiskEncryptionMembers(psExt);
99100
}

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

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,10 @@
1717
using Microsoft.Azure.Management.Compute;
1818
using Microsoft.Azure.Management.Compute.Models;
1919
using Microsoft.Rest.Azure;
20+
using Newtonsoft.Json;
2021
using System;
2122
using System.Collections;
23+
using System.Collections.Generic;
2224
using System.Globalization;
2325
using System.Management.Automation;
2426

@@ -74,7 +76,7 @@ private VirtualMachineExtension GetVmExtensionParameters(VirtualMachine vmParame
7476

7577
VirtualMachineExtension vmExtensionParameters = null;
7678

77-
if (OperatingSystemTypes.Windows.Equals(currentOSType))
79+
if (OSType.Windows.Equals(currentOSType))
7880
{
7981
this.Name = this.Name ?? AzureDiskEncryptionExtensionContext.ExtensionDefaultName;
8082
vmExtensionParameters = new VirtualMachineExtension
@@ -87,7 +89,7 @@ private VirtualMachineExtension GetVmExtensionParameters(VirtualMachine vmParame
8789
ProtectedSettings = protectedSettings
8890
};
8991
}
90-
else if (OperatingSystemTypes.Linux.Equals(currentOSType))
92+
else if (OSType.Linux.Equals(currentOSType))
9193
{
9294
this.Name = this.Name ?? AzureDiskEncryptionExtensionContext.LinuxExtensionDefaultName;
9395
vmExtensionParameters = new VirtualMachineExtension
@@ -104,7 +106,7 @@ private VirtualMachineExtension GetVmExtensionParameters(VirtualMachine vmParame
104106
return vmExtensionParameters;
105107
}
106108

107-
private string GetExtensionStatusMessage(OSType currentOSType)
109+
private string GetExtensionStatusMessage(OSType currentOSType, bool returnSubstatusMessage=false)
108110
{
109111
AzureOperationResponse<VirtualMachineExtension> extensionResult = this.VirtualMachineExtensionClient.GetWithInstanceView(this.ResourceGroupName, this.VMName, this.Name);
110112
if (extensionResult == null)
@@ -157,6 +159,12 @@ private string GetExtensionStatusMessage(OSType currentOSType)
157159
ErrorCategory.InvalidResult,
158160
null));
159161
}
162+
163+
if (returnSubstatusMessage)
164+
{
165+
return context.SubStatuses[0].Message;
166+
}
167+
160168
return context.Statuses[0].Message;
161169
}
162170
else
@@ -359,10 +367,13 @@ public override void ExecuteCmdlet()
359367
this.Name,
360368
parameters).GetAwaiter().GetResult();
361369

370+
string encryptionStatusJson = GetExtensionStatusMessage(osType, returnSubstatusMessage: true);
371+
Dictionary<string, string> encryptionStatusParsed = JsonConvert.DeserializeObject<Dictionary<string, string>>(encryptionStatusJson);
372+
362373
encryptionStatus = new AzureDiskEncryptionStatusContext
363374
{
364-
OsVolumeEncrypted = osVolumeEncrypted,
365-
DataVolumesEncrypted = dataVolumesEncrypted,
375+
OsVolumeEncrypted = (EncryptionStatus) Enum.Parse(typeof(EncryptionStatus), encryptionStatusParsed["os"]),
376+
DataVolumesEncrypted = (EncryptionStatus)Enum.Parse(typeof(EncryptionStatus), encryptionStatusParsed["data"]),
366377
OsVolumeEncryptionSettings = osVolumeEncryptionSettings,
367378
ProgressMessage = GetExtensionStatusMessage(osType)
368379
};

src/ResourceManager/Compute/Commands.Compute/Models/AzureDiskEncryptionStatusContext.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,9 @@ enum EncryptionStatus
2121
{
2222
Encrypted,
2323
NotEncrypted,
24+
NotMounted,
25+
EncryptionInProgress,
26+
VMRestartPending,
2427
Unknown
2528
}
2629

0 commit comments

Comments
 (0)