Skip to content

Commit b8de959

Browse files
authored
Removing and updating broken Image aliases used in VM creation (#21012)
* test play * test good going * dev and test and haiders dev * changelog * example and help doc * Update ChangeLog.md * clean * clean * clean * versioned linux aliases except rhel * versioned tests and cleanup * clean * breaking change update * breaking update * clean breaking * break change update * break * test cleanup * Update NewAzureVMCommand.cs * Update NewAzureVMCommand.cs * Update New-AzVM.md * Update New-AzVM.md * Update Images.json * rhel versioned alias * ubuntu22 test * Update ChangeLog.md * Update New-AzVM.md * Update NewAzureVMCommand.cs * Update ExampleIssues.csv
1 parent 96b5f67 commit b8de959

File tree

9 files changed

+1413
-19
lines changed

9 files changed

+1413
-19
lines changed

src/Compute/Compute.Test/ScenarioTests/ImageTests.cs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,5 +37,12 @@ public void TestImageCapture()
3737
{
3838
TestRunner.RunTestScript("Test-ImageCapture $null");
3939
}
40+
41+
[Fact]
42+
[Trait(Category.AcceptanceType, Category.CheckIn)]
43+
public void TestDefaultImagesExistManual()
44+
{
45+
TestRunner.RunTestScript("Test-DefaultImagesExistManual");
46+
}
4047
}
4148
}

src/Compute/Compute.Test/ScenarioTests/ImageTests.ps1

Lines changed: 151 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -312,3 +312,154 @@ function Test-ImageCapture
312312
}
313313
}
314314

315+
function Test-DefaultImagesExistManual
316+
{
317+
318+
# Setup
319+
#$rgname = Get-ComputeTestResourceName;
320+
$loc = Get-ComputeVMLocation;
321+
322+
try
323+
{
324+
# assuming the below file path:
325+
# C:\repos\ps3\azure-powershell\src\Compute\Compute\Strategies\ComputeRp\Images.json
326+
#$imagesFile = Get-Content -Path "..\..\..\..\Compute\Compute\Strategies\ComputeRp\Images.json";
327+
$imagesFile = Get-Content -Path "..\..\..\..\Compute\Strategies\ComputeRp\Images.json";
328+
$images = $imagesFile | ConvertFrom-Json;
329+
330+
# Linux
331+
# UbuntuLTS test
332+
$publisher = $images.Linux.UbuntuLTS.publisher;
333+
$offer = $images.Linux.UbuntuLTS.offer;
334+
$sku = $images.Linux.UbuntuLTS.sku;
335+
$version = $images.Linux.UbuntuLTS.version;
336+
$img = Get-AzVMImage -Location $loc -Publisher $publisher -Offer $offer -Sku $sku -Version $version;
337+
Assert-NotNull $img;
338+
339+
# Ubuntu2204 test
340+
$publisher = $images.Linux.Ubuntu2204.publisher;
341+
$offer = $images.Linux.Ubuntu2204.offer;
342+
$sku = $images.Linux.Ubuntu2204.sku;
343+
$version = $images.Linux.Ubuntu2204.version;
344+
$img = Get-AzVMImage -Location $loc -Publisher $publisher -Offer $offer -Sku $sku -Version $version;
345+
Assert-NotNull $img;
346+
347+
# CentOS test
348+
$publisher = $images.Linux.CentOS.publisher;
349+
$offer = $images.Linux.CentOS.offer;
350+
$sku = $images.Linux.CentOS.sku;
351+
$version = $images.Linux.CentOS.version;
352+
$img = Get-AzVMImage -Location $loc -Publisher $publisher -Offer $offer -Sku $sku -Version $version;
353+
Assert-NotNull $img;
354+
355+
# CentOS versioned test
356+
$publisher = $images.Linux.CentOS85Gen2.publisher;
357+
$offer = $images.Linux.CentOS85Gen2.offer;
358+
$sku = $images.Linux.CentOS85Gen2.sku;
359+
$version = $images.Linux.CentOS85Gen2.version;
360+
$img = Get-AzVMImage -Location $loc -Publisher $publisher -Offer $offer -Sku $sku -Version $version;
361+
Assert-NotNull $img;
362+
363+
# Debian test
364+
$publisher = $images.Linux.Debian.publisher;
365+
$offer = $images.Linux.Debian.offer;
366+
$sku = $images.Linux.Debian.sku;
367+
$version = $images.Linux.Debian.version;
368+
$img = Get-AzVMImage -Location $loc -Publisher $publisher -Offer $offer -Sku $sku -Version $version;
369+
Assert-NotNull $img;
370+
371+
# Debian versioned test
372+
$publisher = $images.Linux.Debian9.publisher;
373+
$offer = $images.Linux.Debian9.offer;
374+
$sku = $images.Linux.Debian9.sku;
375+
$version = $images.Linux.Debian9.version;
376+
$img = Get-AzVMImage -Location $loc -Publisher $publisher -Offer $offer -Sku $sku -Version $version;
377+
Assert-NotNull $img;
378+
379+
# LinOpenSuseLeap154 versioned test
380+
$publisher = $images.Linux.OpenSuseLeap154.publisher;
381+
$offer = $images.Linux.OpenSuseLeap154.offer;
382+
$sku = $images.Linux.OpenSuseLeap154.sku;
383+
$version = $images.Linux.OpenSuseLeap154.version;
384+
$img = Get-AzVMImage -Location $loc -Publisher $publisher -Offer $offer -Sku $sku -Version $version;
385+
Assert-NotNull $img;
386+
387+
# RHEL test
388+
$publisher = $images.Linux.RHEL.publisher;
389+
$offer = $images.Linux.RHEL.offer;
390+
$sku = $images.Linux.RHEL.sku;
391+
$version = $images.Linux.RHEL.version;
392+
$img = Get-AzVMImage -Location $loc -Publisher $publisher -Offer $offer -Sku $sku -Version $version;
393+
Assert-NotNull $img;
394+
395+
# RHELRaw91Gen2 test
396+
$publisher = $images.Linux.RHELRaw91Gen2.publisher;
397+
$offer = $images.Linux.RHELRaw91Gen2.offer;
398+
$sku = $images.Linux.RHELRaw91Gen2.sku;
399+
$version = $images.Linux.RHELRaw91Gen2.version;
400+
$img = Get-AzVMImage -Location $loc -Publisher $publisher -Offer $offer -Sku $sku -Version $version;
401+
Assert-NotNull $img;
402+
403+
# LinSuseSles15SP4 versioned test
404+
$publisher = $images.Linux.SuseSles15SP4.publisher;
405+
$offer = $images.Linux.SuseSles15SP4.offer;
406+
$sku = $images.Linux.SuseSles15SP4.sku;
407+
$version = $images.Linux.SuseSles15SP4.version;
408+
$img = Get-AzVMImage -Location $loc -Publisher $publisher -Offer $offer -Sku $sku -Version $version;
409+
Assert-NotNull $img;
410+
411+
# Windows
412+
# Win2022AzureEditionCore test
413+
$publisher = $images.Windows.Win2022AzureEditionCore.publisher;
414+
$offer = $images.Windows.Win2022AzureEditionCore.offer;
415+
$sku = $images.Windows.Win2022AzureEditionCore.sku;
416+
$version = $images.Windows.Win2022AzureEditionCore.version;
417+
$img = Get-AzVMImage -Location $loc -Publisher $publisher -Offer $offer -Sku $sku -Version $version;
418+
Assert-NotNull $img;
419+
420+
# Win2019Datacenter test
421+
$publisher = $images.Windows.Win2019Datacenter.publisher;
422+
$offer = $images.Windows.Win2019Datacenter.offer;
423+
$sku = $images.Windows.Win2019Datacenter.sku;
424+
$version = $images.Windows.Win2019Datacenter.version;
425+
$img = Get-AzVMImage -Location $loc -Publisher $publisher -Offer $offer -Sku $sku -Version $version;
426+
Assert-NotNull $img;
427+
428+
# Win2016Datacenter test
429+
$publisher = $images.Windows.Win2016Datacenter.publisher;
430+
$offer = $images.Windows.Win2016Datacenter.offer;
431+
$sku = $images.Windows.Win2016Datacenter.sku;
432+
$version = $images.Windows.Win2016Datacenter.version;
433+
$img = Get-AzVMImage -Location $loc -Publisher $publisher -Offer $offer -Sku $sku -Version $version;
434+
Assert-NotNull $img;
435+
436+
# Win2012R2Datacenter test
437+
$publisher = $images.Windows.Win2012R2Datacenter.publisher;
438+
$offer = $images.Windows.Win2012R2Datacenter.offer;
439+
$sku = $images.Windows.Win2012R2Datacenter.sku;
440+
$version = $images.Windows.Win2012R2Datacenter.version;
441+
$img = Get-AzVMImage -Location $loc -Publisher $publisher -Offer $offer -Sku $sku -Version $version;
442+
Assert-NotNull $img;
443+
444+
# Win2012Datacenter test
445+
$publisher = $images.Windows.Win2012Datacenter.publisher;
446+
$offer = $images.Windows.Win2012Datacenter.offer;
447+
$sku = $images.Windows.Win2012Datacenter.sku;
448+
$version = $images.Windows.Win2012Datacenter.version;
449+
$img = Get-AzVMImage -Location $loc -Publisher $publisher -Offer $offer -Sku $sku -Version $version;
450+
Assert-NotNull $img;
451+
452+
# Win10 test
453+
$publisher = $images.Windows.Win10.publisher;
454+
$offer = $images.Windows.Win10.offer;
455+
$sku = $images.Windows.Win10.sku;
456+
$version = $images.Windows.Win10.version;
457+
$img = Get-AzVMImage -Location $loc -Publisher $publisher -Offer $offer -Sku $sku -Version $version;
458+
Assert-NotNull $img;
459+
}
460+
finally
461+
{
462+
# Cleanup
463+
Clean-ResourceGroup $rgname
464+
}
465+
}

src/Compute/Compute.Test/SessionRecords/Microsoft.Azure.Commands.Compute.Test.ScenarioTests.ImageTests/TestDefaultImagesExistManual.json

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

src/Compute/Compute/ChangeLog.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,9 @@
2727
* Added 'MaxSurge' to Set-AzVmssRollingUpgradePolicyCommand
2828
* Added support for 'latest' in 'Get-AzvmImage' '-Version' parameter
2929
* Added `CompletionPercent` property to PSDisk object.
30+
* Removed the image alias `CoreOS` as the publisher CoreOS no longer has any images for Azure.
31+
Updated the names of the `openSUSE-Leap` and `SLES` aliases to `OpenSuseLeap154` and `SuseSles15SP4` respectively. Updated these aliases to point to an image that actually exists and updated the alias names to be descriptive and versioned.
32+
* Added new descriptive and versioned alias names for the Linux image aliases.
3033

3134
## Version 5.4.0
3235
* Added `-SkipIdentity`, `-PathUserIdentity`, `-IsTest` parameter to `Set-AzVMAEMExtension`

src/Compute/Compute/Images/GetAzureVMImageCommand.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ public class GetAzureVMImageCommand : VirtualMachineImageBaseCmdlet
8080
[Parameter(ParameterSetName = GetVMImageDetailParamSetName,
8181
Mandatory = true,
8282
ValueFromPipelineByPropertyName = true,
83-
HelpMessage ="Specifies the version of the image. Use 'latest' to get the latest image")]
83+
HelpMessage = "Specifies the version of the image. Use 'latest' to get the latest image")]
8484
[ValidateNotNullOrEmpty]
8585
[SupportsWildcards]
8686
public string Version { get; set; }

src/Compute/Compute/Strategies/ComputeRp/Images.json

Lines changed: 29 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,10 @@
66
"sku": "7.5",
77
"version": "latest"
88
},
9-
"CoreOS": {
10-
"publisher": "CoreOS",
11-
"offer": "CoreOS",
12-
"sku": "Stable",
9+
"CentOS85Gen2": {
10+
"publisher": "OpenLogic",
11+
"offer": "CentOS",
12+
"sku": "8_5-gen2",
1313
"version": "latest"
1414
},
1515
"Debian": {
@@ -18,10 +18,16 @@
1818
"sku": "8",
1919
"version": "latest"
2020
},
21-
"openSUSE-Leap": {
21+
"Debian9": {
22+
"publisher": "credativ",
23+
"offer": "Debian",
24+
"sku": "9",
25+
"version": "latest"
26+
},
27+
"OpenSuseLeap154": {
2228
"publisher": "SUSE",
23-
"offer": "openSUSE-Leap",
24-
"sku": "42.3",
29+
"offer": "openSUSE-leap-15-4",
30+
"sku": "gen2",
2531
"version": "latest"
2632
},
2733
"RHEL": {
@@ -30,19 +36,31 @@
3036
"sku": "7-RAW",
3137
"version": "latest"
3238
},
33-
"SLES": {
39+
"RHELRaw91Gen2": {
40+
"publisher": "RedHat",
41+
"offer": "rhel-raw",
42+
"sku": "91-gen2",
43+
"version": "latest"
44+
},
45+
"SuseSles15SP4": {
3446
"publisher": "SUSE",
35-
"offer": "SLES",
36-
"sku": "12-SP2",
47+
"offer": "sles-15-sp4",
48+
"sku": "gen2",
3749
"version": "latest"
3850
},
3951
"UbuntuLTS": {
4052
"publisher": "Canonical",
4153
"offer": "UbuntuServer",
4254
"sku": "16.04-LTS",
4355
"version": "latest"
56+
},
57+
"Ubuntu2204": {
58+
"publisher": "Canonical",
59+
"offer": "0001-com-ubuntu-pro-advanced-sla-ca",
60+
"sku": "22_04",
61+
"version": "latest"
4462
}
45-
},
63+
},
4664
"Windows": {
4765
"Win2022AzureEditionCore": {
4866
"publisher": "MicrosoftWindowsServer",

src/Compute/Compute/VirtualMachine/Operation/NewAzureVMCommand.cs

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,8 @@
5454

5555
namespace Microsoft.Azure.Commands.Compute
5656
{
57-
[GenericBreakingChange("Starting in May 2023 the \"New-AzVM\" cmdlet will deploy with the Trusted Launch configuration by default. To know more about Trusted Launch, please visit https://learn.microsoft.com/en-us/azure/virtual-machines/trusted-launch")]
57+
[GenericBreakingChange("Consider using the image alias including the version of the distribution you want to use in the \"-Image\" parameter of the \"New-AzVM\" cmdlet. On April 30, 2023, the image deployed using `UbuntuLTS` will reach its end of life. ")]
58+
[GenericBreakingChange("Starting in May 2023 the \"New-AzVM\" cmdlet will deploy with the Trusted Launch configuration by default. To know more about Trusted Launch, please visit https://docs.microsoft.com/en-us/azure/virtual-machines/trusted-launch")]
5859
[GenericBreakingChange("It is recommended to use parameter \"-PublicIpSku Standard\" in order to create a new VM with a Standard public IP.Specifying zone(s) using the \"-Zone\" parameter will also result in a Standard public IP.If \"-Zone\" and \"-PublicIpSku\" are not specified, the VM will be created with a Basic public IP instead.Please note that the Standard SKU IPs will become the default behavior for VM creation in the future")]
5960
[Cmdlet("New", ResourceManager.Common.AzureRMConstants.AzureRMPrefix + "VM", SupportsShouldProcess = true, DefaultParameterSetName = "SimpleParameterSet")]
6061
[OutputType(typeof(PSAzureOperationResponse), typeof(PSVirtualMachine))]
@@ -210,12 +211,15 @@ public class NewAzureVMCommand : VirtualMachineBaseCmdlet
210211
[Parameter(ParameterSetName = SimpleParameterSet, Mandatory = false)]
211212
[PSArgumentCompleter(
212213
"CentOS",
213-
"CoreOS",
214+
"CentOS85Gen2",
214215
"Debian",
215-
"openSUSE-Leap",
216+
"Debian9",
217+
"OpenSuseLeap154",
216218
"RHEL",
217-
"SLES",
219+
"RHELRaw91Gen2",
220+
"SuseSles15SP4",
218221
"UbuntuLTS",
222+
"Ubuntu2204",
219223
"Win2022AzureEditionCore",
220224
"Win2019Datacenter",
221225
"Win2016Datacenter",

src/Compute/Compute/help/New-AzVM.md

Lines changed: 25 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -249,7 +249,7 @@ $vmss = New-AzVmss -ResourceGroupName $resourceGroupName -Name $vmssName -Virtua
249249
$vm = New-AzVM -ResourceGroupName $resourceGroupName -Name $vmname -Credential $cred -DomainNameLabel $domainNameLabel -PlatformFaultDomain $platformFaultDomainVMDefaultSet -VmssId $vmss.Id
250250
```
251251

252-
This example Creates a new VM as part of a VMSS with a PlatformFaultDomain value.
252+
This example creates a new VM as part of a VMSS with a PlatformFaultDomain value.
253253

254254
### Example 7: Creating a new VM with the GuestAttestation extension installed by default, then recreating the VM with DisableIntegrityMonitoring to prevent this.
255255
```
@@ -315,7 +315,29 @@ New-AzVM -ResourceGroupName $rgname -Location $loc -VM $vmConfig -DisableIntegri
315315
# This VM does not have the Guest Attestation extension installed on it, and the Identity is not set to SystemAssigned by default.
316316
```
317317

318-
This example Creates a new VM with the GuestAttestation extension installed by default, then recreating the VM with DisableIntegrityMonitoring to prevent this.
318+
This example creates a new VM with the GuestAttestation extension installed by default, then recreating the VM with DisableIntegrityMonitoring to prevent this.
319+
320+
### Example 8: Create a VM using the -Image alias.
321+
```powershell
322+
$resourceGroupName= "<Resource Group Name>"
323+
$loc = "<Azure Region>"
324+
$domainNameLabel = "<Domain Name Label>"
325+
$vmname = "<Virtual Machine Name>"
326+
$securePassword = "<Password>" | ConvertTo-SecureString -AsPlainText -Force
327+
$user = "<Username>"
328+
$cred = New-Object System.Management.Automation.PSCredential ($user, $securePassword)
329+
330+
New-AzResourceGroup -Name $rgname -Location $loc -Force
331+
332+
# Create a VM using an Image alias.
333+
$vmname = 'v' + $rgname
334+
$domainNameLabel = "d" + $rgname
335+
$vm = New-AzVM -ResourceGroupName $rgname -Name $vmname -Credential $cred -Image LinOpenSuseLeap154 -DomainNameLabel $domainNameLabel
336+
337+
$vm = Get-AzVM -ResourceGroupName $rgname -Name $vmname
338+
```
339+
340+
This example creates a new VM using the -Image parameter, providing many default values to the VM.
319341

320342
## PARAMETERS
321343

@@ -664,7 +686,7 @@ Accept wildcard characters: False
664686
```
665687

666688
### -Image
667-
The friendly image name upon which the VM will be built. These include: Win2022AzureEditionCore, Win2019Datacenter, Win2016Datacenter, Win2012R2Datacenter, Win2012Datacenter, UbuntuLTS, CentOS, CoreOS, Debian, openSUSE-Leap, RHEL, SLES.
689+
The friendly image name upon which the VM will be built. The available aliases are: Win2022AzureEditionCore, Win2019Datacenter, Win2016Datacenter, Win2012R2Datacenter, Win2012Datacenter, UbuntuLTS, Ubuntu2204, CentOS, CentOS85Gen2, Debian, Debian9, OpenSuseLeap154, RHEL, RHELRaw91Gen2, SuseSles15SP4.
668690

669691
```yaml
670692
Type: System.String

tools/StaticAnalysis/Exceptions/Az.Compute/ExampleIssues.csv

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,3 +17,4 @@
1717
"Az.Compute","Set-AzVMSecurityProfile","2","26","Capitalization_Conventions_Violated","5101","1","Set-AzVmSecurityProfile doesn't follow the Capitalization Conventions.","Set-AzVmSecurityProfile -VM $VirtualMachine -SecurityType $SecurityType","Check the Capitalization Conventions. Suggest format: Set-AzVMSecurityProfile"
1818
"Az.Compute","Set-AzVMSecurityProfile","2","27","Capitalization_Conventions_Violated","5101","1","Set-AzVmUefi doesn't follow the Capitalization Conventions.","Set-AzVmUefi -VM $VirtualMachine -EnableVtpm $true -EnableSecureBoot $true","Check the Capitalization Conventions. Suggest format: Set-AzVMUefi"
1919
"Az.Compute","Set-AzVMSecurityProfile","2","33","Capitalization_Conventions_Violated","5101","1","Get-AzVm doesn't follow the Capitalization Conventions.","Get-AzVm -ResourceGroupName $rgname -Name $vmname","Check the Capitalization Conventions. Suggest format: Get-AzVM"
20+
"Az.Compute","New-AzVM","8","9","Invalid_Cmdlet","5000","1","New-AzResourceGroup is not a valid command name.","New-AzResourceGroup -Name $rgname -Location $loc -Force","Check the spell of New-AzResourceGroup."

0 commit comments

Comments
 (0)