Skip to content

Commit fca0a14

Browse files
authored
Merge pull request #4848 from vermashi/shiv-test-switch
Add parameters for alternate extensions and encrypt-format
2 parents e82c8a2 + caaf87c commit fca0a14

10 files changed

+227
-43
lines changed

src/ResourceManager/Compute/ChangeLog.md

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,11 @@
1818
- Additional information about change #1
1919
-->
2020
## Current Release
21+
* Azure Disk Encryption Extension Commands
22+
- New Parameter for 'Set-AzureRmVmDiskEncryptionExtension': '-EncryptFormatAll' encrypt formats data disks
23+
- New Parameters for 'Set-AzureRmVmDiskEncryptionExtension': '-ExtensionPublisherName' and '-ExtensionType' allow switching to other versions of the extension
24+
- New Parameters for 'Disable-AzureRmVmDiskEncryption': '-ExtensionPublisherName' and '-ExtensionType' allow switching to other versions of the extension
25+
- New Parameters for 'Get-AzureRmVmDiskEncryptionStatus': '-ExtensionPublisherName' and '-ExtensionType' allow switching to other versions of the extension
2126

2227
## Version 3.4.1
2328

@@ -173,4 +178,4 @@
173178
- VMScaleSet and ContainerService now have "ResourceGroupName" property, so when piping Get command to Delete/Update command, -ResourceGroupName is not required.
174179
* Separate paremater sets for Set-AzureRmVM with Generalized and Redeploy parameter
175180
* Reduce time taken by Get-AzureRmVMDiskEncryptionStatus cmdlet from two minutes to under five seconds
176-
* Allow Set-AzureRmVMDiskEncryptionStatus to be used with VHDs residing in multiple resource groups
181+
* Allow Set-AzureRmVMDiskEncryptionStatus to be used with VHDs residing in multiple resource groups

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ public static class AzureDiskEncryptionExtensionConstants
2222
public const string aadClientCertParameterSet = "AADClientCertParameterSet";
2323
public const string aadClientSecretParameterSet = "AADClientSecretParameterSet";
2424
public const string enableEncryptionOperation = "EnableEncryption";
25+
public const string enableEncryptionFormatAllOperation = "EnableEncryptionFormatAll";
2526
public const string disableEncryptionOperation = "DisableEncryption";
2627
public const string queryEncryptionStatusOperation = "QueryEncryptionStatus";
2728
public const string encryptionResultOsKey = "os";

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,12 @@ public class AzureDiskEncryptionExtensionContext : PSVirtualMachineExtension
2525
{
2626
public const string LinuxExtensionDefaultPublisher = "Microsoft.Azure.Security";
2727
public const string LinuxExtensionDefaultName = "AzureDiskEncryptionForLinux";
28+
public const string LinuxExtensionDefaultType = "AzureDiskEncryptionForLinux";
2829
public const string LinuxExtensionDefaultVersion = "0.1";
2930

3031
public const string ExtensionDefaultPublisher = "Microsoft.Azure.Security";
3132
public const string ExtensionDefaultName = "AzureDiskEncryption";
33+
public const string ExtensionDefaultType = "AzureDiskEncryption";
3234
public const string ExtensionDefaultVersion = "1.1";
3335
public const string VolumeTypeOS = "OS";
3436
public const string VolumeTypeData = "Data";

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

Lines changed: 20 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -84,11 +84,24 @@ public class DisableAzureDiskEncryptionCommand : VirtualMachineExtensionBaseCmdl
8484

8585
[Parameter(
8686
Mandatory = false,
87-
Position = 5,
8887
ValueFromPipelineByPropertyName = true,
8988
HelpMessage = "Disable auto-upgrade of minor version")]
9089
public SwitchParameter DisableAutoUpgradeMinorVersion { get; set; }
9190

91+
[Parameter(
92+
Mandatory = false,
93+
ValueFromPipelineByPropertyName = true,
94+
HelpMessage = "The extension type. Specify this parameter to override its default value of \"AzureDiskEncryption\" for Windows VMs and \"AzureDiskEncryptionForLinux\" for Linux VMs.")]
95+
[ValidateNotNullOrEmpty]
96+
public string ExtensionType { get; set; }
97+
98+
[Parameter(
99+
Mandatory = false,
100+
ValueFromPipelineByPropertyName = true,
101+
HelpMessage = "The extension publisher name. Specify this parameter only to override the default value of \"Microsoft.Azure.Security\".")]
102+
[ValidateNotNullOrEmpty]
103+
public string ExtensionPublisherName { get; set; }
104+
92105
private OperatingSystemTypes? currentOSType = null;
93106

94107
private Hashtable GetExtensionPublicSettings()
@@ -136,9 +149,9 @@ private VirtualMachineExtension GetVmExtensionParameters(VirtualMachine vmParame
136149
vmExtensionParameters = new VirtualMachineExtension
137150
{
138151
Location = vmParameters.Location,
139-
Publisher = AzureDiskEncryptionExtensionContext.ExtensionDefaultPublisher,
140-
VirtualMachineExtensionType = AzureDiskEncryptionExtensionContext.ExtensionDefaultName,
141-
TypeHandlerVersion = (this.TypeHandlerVersion) ?? AzureDiskEncryptionExtensionContext.ExtensionDefaultVersion,
152+
Publisher = this.ExtensionPublisherName ?? AzureDiskEncryptionExtensionContext.ExtensionDefaultPublisher,
153+
VirtualMachineExtensionType = this.ExtensionType ?? AzureDiskEncryptionExtensionContext.ExtensionDefaultType,
154+
TypeHandlerVersion = this.TypeHandlerVersion ?? AzureDiskEncryptionExtensionContext.ExtensionDefaultVersion,
142155
Settings = SettingString,
143156
ProtectedSettings = ProtectedSettingString,
144157
AutoUpgradeMinorVersion = !DisableAutoUpgradeMinorVersion.IsPresent
@@ -151,9 +164,9 @@ private VirtualMachineExtension GetVmExtensionParameters(VirtualMachine vmParame
151164
vmExtensionParameters = new VirtualMachineExtension
152165
{
153166
Location = vmParameters.Location,
154-
Publisher = AzureDiskEncryptionExtensionContext.LinuxExtensionDefaultPublisher,
155-
VirtualMachineExtensionType = AzureDiskEncryptionExtensionContext.LinuxExtensionDefaultName,
156-
TypeHandlerVersion = (this.TypeHandlerVersion) ?? AzureDiskEncryptionExtensionContext.LinuxExtensionDefaultVersion,
167+
Publisher = this.ExtensionPublisherName ?? AzureDiskEncryptionExtensionContext.LinuxExtensionDefaultPublisher,
168+
VirtualMachineExtensionType = this.ExtensionType ?? AzureDiskEncryptionExtensionContext.LinuxExtensionDefaultType,
169+
TypeHandlerVersion = this.TypeHandlerVersion ?? AzureDiskEncryptionExtensionContext.LinuxExtensionDefaultVersion,
157170
Settings = SettingString,
158171
ProtectedSettings = ProtectedSettingString,
159172
AutoUpgradeMinorVersion = !DisableAutoUpgradeMinorVersion.IsPresent

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

Lines changed: 36 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,20 @@ public class GetAzureDiskEncryptionStatusCommand : VirtualMachineExtensionBaseCm
5858
[ValidateNotNullOrEmpty]
5959
public string Name { get; set; }
6060

61+
[Parameter(
62+
Mandatory = false,
63+
ValueFromPipelineByPropertyName = true,
64+
HelpMessage = "The extension type. Specify this parameter to override its default value of \"AzureDiskEncryption\" for Windows VMs and \"AzureDiskEncryptionForLinux\" for Linux VMs.")]
65+
[ValidateNotNullOrEmpty]
66+
public string ExtensionType { get; set; }
67+
68+
[Parameter(
69+
Mandatory = false,
70+
ValueFromPipelineByPropertyName = true,
71+
HelpMessage = "The extension publisher name. Specify this parameter only to override the default value of \"Microsoft.Azure.Security\".")]
72+
[ValidateNotNullOrEmpty]
73+
public string ExtensionPublisherName { get; set; }
74+
6175
private VirtualMachineExtension GetVmExtensionParameters(VirtualMachine vmParameters, OSType currentOSType)
6276
{
6377
Hashtable publicSettings = new Hashtable();
@@ -79,11 +93,13 @@ private VirtualMachineExtension GetVmExtensionParameters(VirtualMachine vmParame
7993
if (OSType.Windows.Equals(currentOSType))
8094
{
8195
this.Name = this.Name ?? AzureDiskEncryptionExtensionContext.ExtensionDefaultName;
96+
this.ExtensionPublisherName = this.ExtensionPublisherName ?? AzureDiskEncryptionExtensionContext.ExtensionDefaultPublisher;
97+
this.ExtensionType = this.ExtensionType ?? AzureDiskEncryptionExtensionContext.ExtensionDefaultType;
8298
vmExtensionParameters = new VirtualMachineExtension
8399
{
84100
Location = vmParameters.Location,
85-
Publisher = AzureDiskEncryptionExtensionContext.ExtensionDefaultPublisher,
86-
VirtualMachineExtensionType = AzureDiskEncryptionExtensionContext.ExtensionDefaultName,
101+
Publisher = this.ExtensionPublisherName,
102+
VirtualMachineExtensionType = this.ExtensionType,
87103
TypeHandlerVersion = AzureDiskEncryptionExtensionContext.ExtensionDefaultVersion,
88104
Settings = publicSettings,
89105
ProtectedSettings = protectedSettings
@@ -92,11 +108,13 @@ private VirtualMachineExtension GetVmExtensionParameters(VirtualMachine vmParame
92108
else if (OSType.Linux.Equals(currentOSType))
93109
{
94110
this.Name = this.Name ?? AzureDiskEncryptionExtensionContext.LinuxExtensionDefaultName;
111+
this.ExtensionPublisherName = this.ExtensionPublisherName ?? AzureDiskEncryptionExtensionContext.LinuxExtensionDefaultPublisher;
112+
this.ExtensionType = this.ExtensionType ?? AzureDiskEncryptionExtensionContext.LinuxExtensionDefaultType;
95113
vmExtensionParameters = new VirtualMachineExtension
96114
{
97115
Location = vmParameters.Location,
98-
Publisher = AzureDiskEncryptionExtensionContext.LinuxExtensionDefaultPublisher,
99-
VirtualMachineExtensionType = AzureDiskEncryptionExtensionContext.LinuxExtensionDefaultName,
116+
Publisher = this.ExtensionPublisherName,
117+
VirtualMachineExtensionType = this.ExtensionType,
100118
TypeHandlerVersion = AzureDiskEncryptionExtensionContext.LinuxExtensionDefaultVersion,
101119
Settings = publicSettings,
102120
ProtectedSettings = protectedSettings
@@ -135,16 +153,18 @@ private bool IsExtensionInstalled(OSType currentOSType)
135153
bool publisherMatch = false;
136154
if (OSType.Linux.Equals(currentOSType))
137155
{
138-
if (returnedExtension.Publisher.Equals(AzureDiskEncryptionExtensionContext.LinuxExtensionDefaultPublisher, StringComparison.InvariantCultureIgnoreCase) &&
139-
returnedExtension.ExtensionType.Equals(AzureDiskEncryptionExtensionContext.LinuxExtensionDefaultName, StringComparison.InvariantCultureIgnoreCase))
156+
if (returnedExtension.Publisher.Equals(this.ExtensionPublisherName ?? AzureDiskEncryptionExtensionContext.LinuxExtensionDefaultPublisher,
157+
StringComparison.InvariantCultureIgnoreCase) &&
158+
returnedExtension.ExtensionType.Equals(this.ExtensionType ?? AzureDiskEncryptionExtensionContext.LinuxExtensionDefaultType,
159+
StringComparison.InvariantCultureIgnoreCase))
140160
{
141161
publisherMatch = true;
142162
}
143163
}
144164
else if (OSType.Windows.Equals(currentOSType))
145165
{
146-
if (returnedExtension.Publisher.Equals(AzureDiskEncryptionExtensionContext.ExtensionDefaultPublisher, StringComparison.InvariantCultureIgnoreCase) &&
147-
returnedExtension.ExtensionType.Equals(AzureDiskEncryptionExtensionContext.ExtensionDefaultName, StringComparison.InvariantCultureIgnoreCase))
166+
if (returnedExtension.Publisher.Equals(this.ExtensionPublisherName ?? AzureDiskEncryptionExtensionContext.ExtensionDefaultPublisher, StringComparison.InvariantCultureIgnoreCase) &&
167+
returnedExtension.ExtensionType.Equals(this.ExtensionType ?? AzureDiskEncryptionExtensionContext.ExtensionDefaultType, StringComparison.InvariantCultureIgnoreCase))
148168
{
149169
publisherMatch = true;
150170
}
@@ -183,16 +203,16 @@ private string GetExtensionStatusMessage(OSType currentOSType, bool returnSubsta
183203
bool publisherMatch = false;
184204
if (OSType.Linux.Equals(currentOSType))
185205
{
186-
if (returnedExtension.Publisher.Equals(AzureDiskEncryptionExtensionContext.LinuxExtensionDefaultPublisher, StringComparison.InvariantCultureIgnoreCase) &&
187-
returnedExtension.ExtensionType.Equals(AzureDiskEncryptionExtensionContext.LinuxExtensionDefaultName, StringComparison.InvariantCultureIgnoreCase))
206+
if (returnedExtension.Publisher.Equals(this.ExtensionPublisherName ?? AzureDiskEncryptionExtensionContext.LinuxExtensionDefaultPublisher, StringComparison.InvariantCultureIgnoreCase) &&
207+
returnedExtension.ExtensionType.Equals(this.ExtensionType ?? AzureDiskEncryptionExtensionContext.LinuxExtensionDefaultType, StringComparison.InvariantCultureIgnoreCase))
188208
{
189209
publisherMatch = true;
190210
}
191211
}
192212
else if (OSType.Windows.Equals(currentOSType))
193213
{
194-
if (returnedExtension.Publisher.Equals(AzureDiskEncryptionExtensionContext.ExtensionDefaultPublisher, StringComparison.InvariantCultureIgnoreCase) &&
195-
returnedExtension.ExtensionType.Equals(AzureDiskEncryptionExtensionContext.ExtensionDefaultName, StringComparison.InvariantCultureIgnoreCase))
214+
if (returnedExtension.Publisher.Equals(this.ExtensionPublisherName ?? AzureDiskEncryptionExtensionContext.ExtensionDefaultPublisher, StringComparison.InvariantCultureIgnoreCase) &&
215+
returnedExtension.ExtensionType.Equals(this.ExtensionType ?? AzureDiskEncryptionExtensionContext.ExtensionDefaultType, StringComparison.InvariantCultureIgnoreCase))
196216
{
197217
publisherMatch = true;
198218
}
@@ -296,8 +316,8 @@ private bool IsAzureDiskEncryptionExtension(OSType osType, VirtualMachineExtensi
296316
if ((vmExtension != null) &&
297317
(vmExtension.Publisher != null) &&
298318
(vmExtension.VirtualMachineExtensionType != null) &&
299-
(vmExtension.Publisher.Equals(AzureDiskEncryptionExtensionContext.ExtensionDefaultPublisher, StringComparison.InvariantCultureIgnoreCase)) &&
300-
(vmExtension.VirtualMachineExtensionType.Equals(AzureDiskEncryptionExtensionContext.ExtensionDefaultName, StringComparison.InvariantCultureIgnoreCase)))
319+
(vmExtension.Publisher.Equals(this.ExtensionPublisherName ?? AzureDiskEncryptionExtensionContext.ExtensionDefaultPublisher, StringComparison.InvariantCultureIgnoreCase)) &&
320+
(vmExtension.VirtualMachineExtensionType.Equals(this.ExtensionType ?? AzureDiskEncryptionExtensionContext.ExtensionDefaultType, StringComparison.InvariantCultureIgnoreCase)))
301321
{
302322
return true;
303323
}
@@ -307,8 +327,8 @@ private bool IsAzureDiskEncryptionExtension(OSType osType, VirtualMachineExtensi
307327
if ((vmExtension != null) &&
308328
(vmExtension.Publisher != null) &&
309329
(vmExtension.VirtualMachineExtensionType != null) &&
310-
(vmExtension.Publisher.Equals(AzureDiskEncryptionExtensionContext.LinuxExtensionDefaultPublisher, StringComparison.InvariantCultureIgnoreCase)) &&
311-
(vmExtension.VirtualMachineExtensionType.Equals(AzureDiskEncryptionExtensionContext.LinuxExtensionDefaultName, StringComparison.InvariantCultureIgnoreCase)))
330+
(vmExtension.Publisher.Equals(this.ExtensionPublisherName ?? AzureDiskEncryptionExtensionContext.LinuxExtensionDefaultPublisher, StringComparison.InvariantCultureIgnoreCase)) &&
331+
(vmExtension.VirtualMachineExtensionType.Equals(this.ExtensionType ?? AzureDiskEncryptionExtensionContext.LinuxExtensionDefaultType, StringComparison.InvariantCultureIgnoreCase)))
312332
{
313333
return true;
314334
}

0 commit comments

Comments
 (0)