Skip to content

Commit 4b5fd5d

Browse files
authored
Confidential VM in Vmss support (#20191)
* de and try test * session records * first test done * last test pased in record only * all tests pass in playback * test cleanup and rerecord * comments * rerecorded tests * removed unused jsons * som ecleanup, start new test * test rerecord * cleanup * cleanup * comments in tests * help doc * changelog * test try * examples * fix examples
1 parent ec9684c commit 4b5fd5d

14 files changed

+21181
-11
lines changed

src/Compute/Compute.Test/ScenarioTests/VirtualMachineScaleSetTests.cs

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -283,5 +283,33 @@ public void TestVirtuaMachineScaleSetPriorityMixPolicy()
283283
{
284284
TestRunner.RunTestScript("Test-VirtualMachineScaleSetPriorityMixPolicy");
285285
}
286+
287+
[Fact]
288+
[Trait(Category.AcceptanceType, Category.CheckIn)]
289+
public void TestVirtualMachineScaleSetConfidentialVMSSSecurityType()
290+
{
291+
TestRunner.RunTestScript("Test-VirtualMachineScaleSetConfidentialVMSSSecurityType");
292+
}
293+
294+
[Fact]
295+
[Trait(Category.AcceptanceType, Category.CheckIn)]
296+
public void TestVirtualMachineScaleSetConfidentialVMSecurityTypeDiskWithVMGuestStatePMK()
297+
{
298+
TestRunner.RunTestScript("Test-VirtualMachineScaleSetConfidentialVMDiskWithVMGuestStatePMK");
299+
}
300+
301+
[Fact]
302+
[Trait(Category.AcceptanceType, Category.CheckIn)]
303+
public void TestVirtualMachineScaleSetConfidentialVMSecurityTypeVMGuestStateOnlyPMK()
304+
{
305+
TestRunner.RunTestScript("Test-VirtualMachineScaleSetConfidentialVMVMGuestStateOnlyPMK");
306+
}
307+
308+
[Fact]
309+
[Trait(Category.AcceptanceType, Category.CheckIn)]
310+
public void TestVirtualMachineScaleSetConfidentialVMSecurityTypeDiskWithVMGuestStateCMK()
311+
{
312+
TestRunner.RunTestScript("Test-VirtualMachineScaleSetConfidentialVMDiskWithVMGuestStateCMK");
313+
}
286314
}
287315
}

src/Compute/Compute.Test/ScenarioTests/VirtualMachineScaleSetTests.ps1

Lines changed: 573 additions & 0 deletions
Large diffs are not rendered by default.

src/Compute/Compute.Test/SessionRecords/Microsoft.Azure.Commands.Compute.Test.ScenarioTests.VirtualMachineScaleSetTests/TestVirtualMachineScaleSetConfidentialVMSSSecurityType.json

Lines changed: 2359 additions & 0 deletions
Large diffs are not rendered by default.

src/Compute/Compute.Test/SessionRecords/Microsoft.Azure.Commands.Compute.Test.ScenarioTests.VirtualMachineScaleSetTests/TestVirtualMachineScaleSetConfidentialVMSecurityTypeDiskWithVMGuestStateCMK.json

Lines changed: 6591 additions & 0 deletions
Large diffs are not rendered by default.

src/Compute/Compute.Test/SessionRecords/Microsoft.Azure.Commands.Compute.Test.ScenarioTests.VirtualMachineScaleSetTests/TestVirtualMachineScaleSetConfidentialVMSecurityTypeDiskWithVMGuestStatePMK.json

Lines changed: 5619 additions & 0 deletions
Large diffs are not rendered by default.

src/Compute/Compute.Test/SessionRecords/Microsoft.Azure.Commands.Compute.Test.ScenarioTests.VirtualMachineScaleSetTests/TestVirtualMachineScaleSetConfidentialVMSecurityTypeVMGuestStateOnlyPMK.json

Lines changed: 5502 additions & 0 deletions
Large diffs are not rendered by default.

src/Compute/Compute/ChangeLog.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@
2626
* Fixed issue found for `Set-AzVmssVMRunCommand` [#19985]
2727
* Fixed `Get-AzVm` cmdlet when parameter "-Status" is provided, return property `OsName`, `OsVersion` and `HyperVGeneration`
2828
* Fixed `New-AzVM` cmdlet when creating VM with bootdiagnostic storage causes exception `Kind` cannot be null.
29+
* Added `ImageReferenceId` string parameter to the `New-AzVmssConfig` cmdlet. This allows gallery image references to be added for the Confidential VM feature.
30+
* Added `SecurityEncryptionType` and `SecureVMDiskEncryptionSet` string parameters to the `Set-AzVmssStorageProfile` cmdlet for the Confidential VM feature.
2931

3032
## Version 5.1.1
3133
* Upgraded AutoMapper to Microsoft.Azure.PowerShell.AutoMapper 6.2.2 with fix [#18721]

src/Compute/Compute/Generated/VirtualMachineScaleSet/Config/NewAzureRmVmssConfigCommand.cs

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -304,6 +304,12 @@ public partial class NewAzureRmVmssConfigCommand : Microsoft.Azure.Commands.Reso
304304
ValueFromPipelineByPropertyName = true)]
305305
public int RegularPriorityPercentage { get; set; }
306306

307+
[Parameter(
308+
Mandatory = false,
309+
HelpMessage = "Specifies the gallery image resource id for vmss deployment. This can be fetched from the gallery image GET call.")]
310+
[ResourceIdCompleter("Microsoft.Compute galleries/images/versions")]
311+
public string ImageReferenceId { get; set; }
312+
307313
protected override void ProcessRecord()
308314
{
309315
if (ShouldProcess("VirtualMachineScaleSet", "New"))
@@ -744,6 +750,25 @@ private void Run()
744750
vPriorityMixPolicy.RegularPriorityPercentageAboveBase = this.RegularPriorityPercentage;
745751
}
746752

753+
if (this.IsParameterBound(c => c.ImageReferenceId))
754+
{
755+
if (vVirtualMachineProfile == null)
756+
{
757+
vVirtualMachineProfile = new PSVirtualMachineScaleSetVMProfile();
758+
}
759+
760+
if (vVirtualMachineProfile.StorageProfile == null)
761+
{
762+
vVirtualMachineProfile.StorageProfile = new VirtualMachineScaleSetStorageProfile();
763+
}
764+
765+
if (vVirtualMachineProfile.StorageProfile.ImageReference == null)
766+
{
767+
vVirtualMachineProfile.StorageProfile.ImageReference = new ImageReference();
768+
}
769+
vVirtualMachineProfile.StorageProfile.ImageReference.Id = this.ImageReferenceId;
770+
}
771+
747772
var vVirtualMachineScaleSet = new PSVirtualMachineScaleSet
748773
{
749774
Overprovision = this.IsParameterBound(c => c.Overprovision) ? this.Overprovision : (bool?)null,

src/Compute/Compute/Generated/VirtualMachineScaleSet/Config/SetAzureRmVmssSecurityProfileCommand.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,11 +43,11 @@ public partial class SetAzureRmVmssSecurityProfileCommand : Microsoft.Azure.Comm
4343
public PSVirtualMachineScaleSet VirtualMachineScaleSet { get; set; }
4444

4545
[Parameter(
46-
HelpMessage = "Parameter to set the SecurityType on the VMs of the scale set. Possible values are TrustedLaunch",
46+
HelpMessage = "Parameter to set the SecurityType on the VMs of the scale set. Possible values are: TrustedLaunch, ConfidentialVM",
4747
Mandatory = false,
4848
Position = 1,
4949
ValueFromPipelineByPropertyName = true)]
50-
[PSArgumentCompleter("TrustedLaunch")]
50+
[PSArgumentCompleter("TrustedLaunch", "ConfidentialVM")]
5151
public string SecurityType { get; set; }
5252

5353
protected override void ProcessRecord()

src/Compute/Compute/Generated/VirtualMachineScaleSet/Config/SetAzureRmVmssStorageProfileCommand.cs

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -162,6 +162,19 @@ public partial class SetAzureRmVmssStorageProfileCommand : Microsoft.Azure.Comma
162162
[PSArgumentCompleter("SCSI", "NVMe")]
163163
public string DiskControllerType { get; set; }
164164

165+
[Parameter(
166+
Mandatory = false,
167+
ValueFromPipelineByPropertyName = true,
168+
HelpMessage = "Sets the SecurityEncryptionType of the virtual machine scale set. Possible values include: DiskWithVMGuestState, VMGuestStateOnly")]
169+
[PSArgumentCompleter("DiskWithVMGuestState", "VMGuestStateOnly")]
170+
public string SecurityEncryptionType { get; set; }
171+
172+
[Parameter(
173+
Mandatory = false,
174+
ValueFromPipelineByPropertyName = true,
175+
HelpMessage = "ResourceId of the disk encryption set to use for enabling encryption at rest.")]
176+
public string SecureVMDiskEncryptionSet { get; set; }
177+
165178
protected override void ProcessRecord()
166179
{
167180
if (ShouldProcess("VirtualMachineScaleSet", "Set"))
@@ -578,6 +591,65 @@ private void Run()
578591
this.VirtualMachineScaleSet.VirtualMachineProfile.StorageProfile.OsDisk.DiskSizeGB = this.OSDiskSizeGB;
579592
}
580593

594+
if (this.IsParameterBound(c => c.SecurityEncryptionType))
595+
{
596+
// VirtualMachineProfile
597+
if (this.VirtualMachineScaleSet.VirtualMachineProfile == null)
598+
{
599+
this.VirtualMachineScaleSet.VirtualMachineProfile = new PSVirtualMachineScaleSetVMProfile();
600+
}
601+
// StorageProfile
602+
if (this.VirtualMachineScaleSet.VirtualMachineProfile.StorageProfile == null)
603+
{
604+
this.VirtualMachineScaleSet.VirtualMachineProfile.StorageProfile = new VirtualMachineScaleSetStorageProfile();
605+
}
606+
// OsDisk
607+
if (this.VirtualMachineScaleSet.VirtualMachineProfile.StorageProfile.OsDisk == null)
608+
{
609+
this.VirtualMachineScaleSet.VirtualMachineProfile.StorageProfile.OsDisk = new VirtualMachineScaleSetOSDisk();
610+
}
611+
if (this.VirtualMachineScaleSet.VirtualMachineProfile.StorageProfile.OsDisk.ManagedDisk == null)
612+
{
613+
this.VirtualMachineScaleSet.VirtualMachineProfile.StorageProfile.OsDisk.ManagedDisk = new VirtualMachineScaleSetManagedDiskParameters();
614+
}
615+
if (this.VirtualMachineScaleSet.VirtualMachineProfile.StorageProfile.OsDisk.ManagedDisk.SecurityProfile == null)
616+
{
617+
this.VirtualMachineScaleSet.VirtualMachineProfile.StorageProfile.OsDisk.ManagedDisk.SecurityProfile = new VMDiskSecurityProfile();
618+
}
619+
this.VirtualMachineScaleSet.VirtualMachineProfile.StorageProfile.OsDisk.ManagedDisk.SecurityProfile.SecurityEncryptionType = this.SecurityEncryptionType;
620+
}
621+
622+
if (this.IsParameterBound(c => c.SecureVMDiskEncryptionSet))
623+
{
624+
// VirtualMachineProfile
625+
if (this.VirtualMachineScaleSet.VirtualMachineProfile == null)
626+
{
627+
this.VirtualMachineScaleSet.VirtualMachineProfile = new PSVirtualMachineScaleSetVMProfile();
628+
}
629+
// StorageProfile
630+
if (this.VirtualMachineScaleSet.VirtualMachineProfile.StorageProfile == null)
631+
{
632+
this.VirtualMachineScaleSet.VirtualMachineProfile.StorageProfile = new VirtualMachineScaleSetStorageProfile();
633+
}
634+
// OsDisk
635+
if (this.VirtualMachineScaleSet.VirtualMachineProfile.StorageProfile.OsDisk == null)
636+
{
637+
this.VirtualMachineScaleSet.VirtualMachineProfile.StorageProfile.OsDisk = new VirtualMachineScaleSetOSDisk();
638+
}
639+
if (this.VirtualMachineScaleSet.VirtualMachineProfile.StorageProfile.OsDisk.ManagedDisk == null)
640+
{
641+
this.VirtualMachineScaleSet.VirtualMachineProfile.StorageProfile.OsDisk.ManagedDisk = new VirtualMachineScaleSetManagedDiskParameters();
642+
}
643+
if (this.VirtualMachineScaleSet.VirtualMachineProfile.StorageProfile.OsDisk.ManagedDisk.SecurityProfile == null)
644+
{
645+
this.VirtualMachineScaleSet.VirtualMachineProfile.StorageProfile.OsDisk.ManagedDisk.SecurityProfile = new VMDiskSecurityProfile();
646+
}
647+
if (this.VirtualMachineScaleSet.VirtualMachineProfile.StorageProfile.OsDisk.ManagedDisk.SecurityProfile.DiskEncryptionSet == null)
648+
{
649+
this.VirtualMachineScaleSet.VirtualMachineProfile.StorageProfile.OsDisk.ManagedDisk.SecurityProfile.DiskEncryptionSet = new DiskEncryptionSetParameters();
650+
}
651+
this.VirtualMachineScaleSet.VirtualMachineProfile.StorageProfile.OsDisk.ManagedDisk.SecurityProfile.DiskEncryptionSet.Id = this.SecureVMDiskEncryptionSet;
652+
}
581653
WriteObject(this.VirtualMachineScaleSet);
582654
}
583655
}

0 commit comments

Comments
 (0)