diff --git a/src/Compute/Compute.Test/ScenarioTests/DiskRPTests.cs b/src/Compute/Compute.Test/ScenarioTests/DiskRPTests.cs index 240b600e3daf..9b9cd1922013 100644 --- a/src/Compute/Compute.Test/ScenarioTests/DiskRPTests.cs +++ b/src/Compute/Compute.Test/ScenarioTests/DiskRPTests.cs @@ -219,5 +219,26 @@ public void TestDiskSupportedSecurityOption() { TestRunner.RunTestScript("Test-SupportedSecurityOption"); } - } + + [Fact] + [Trait(Category.AcceptanceType, Category.CheckIn)] + public void testgennewazdiskconfig() + { + TestRunner.RunTestScript("TestGen-newazdiskconfig"); + } + + [Fact] + [Trait(Category.AcceptanceType, Category.CheckIn)] + public void testgennewazdiskupdateconfig() + { + TestRunner.RunTestScript("TestGen-newazdiskupdateconfig"); + } + + [Fact] + [Trait(Category.AcceptanceType, Category.CheckIn)] + public void testgennewazdisk() + { + TestRunner.RunTestScript("TestGen-newazdisk"); + } + } } diff --git a/src/Compute/Compute.Test/ScenarioTests/DiskRPTests.ps1 b/src/Compute/Compute.Test/ScenarioTests/DiskRPTests.ps1 index 67cfeee308f6..38ff6c1cad50 100644 --- a/src/Compute/Compute.Test/ScenarioTests/DiskRPTests.ps1 +++ b/src/Compute/Compute.Test/ScenarioTests/DiskRPTests.ps1 @@ -1983,3 +1983,111 @@ function Test-SupportedSecurityOption Clean-ResourceGroup $rgname } } + +function TestGen-newazdiskconfig +{ + $rgname = Get-ComputeTestResourceName; + $loc = Get-Location; + + try + { + New-AzResourceGroup -Name $rgname -Location $loc -Force; + + # Setup + $diskName = 'disk' + $rgname; + $diskAccountType = 'Premium_LRS'; + $createOption = 'Empty'; + $diskSize = 32; + $actionOnDiskDelay1 = 'None'; + $actionOnDiskDelay2 = 'AutomaticReattach'; + + # Test New-AzDiskConfig with availabilityPolicy.actionOnDiskDelay parameter + $diskConfig = New-AzDiskConfig -Location $loc -AccountType $diskAccountType -CreateOption $createOption -DiskSizeGB $diskSize -AvailabilityPolicy @{ actionOnDiskDelay = $actionOnDiskDelay1 }; + New-AzDisk -ResourceGroupName $rgname -DiskName $diskName -Disk $diskConfig; + $disk = Get-AzDisk -ResourceGroupName $rgname -DiskName $diskName; + Assert-AreEqual $disk.AvailabilityPolicy.actionOnDiskDelay $actionOnDiskDelay1; + + # Test New-AzDiskUpdateConfig with availabilityPolicy.actionOnDiskDelay parameter + $diskUpdateConfig = New-AzDiskUpdateConfig -AvailabilityPolicy @{ actionOnDiskDelay = $actionOnDiskDelay2 }; + Update-AzDisk -ResourceGroupName $rgname -DiskName $diskName -DiskUpdate $diskUpdateConfig; + $diskUpdated = Get-AzDisk -ResourceGroupName $rgname -DiskName $diskName; + Assert-AreEqual $diskUpdated.AvailabilityPolicy.actionOnDiskDelay $actionOnDiskDelay2; + } + finally + { + # Cleanup + Remove-AzResourceGroup -Name $rgname -Force -ErrorAction SilentlyContinue; + } +} + +function TestGen-newazdiskupdateconfig +{ + $rgname = Get-ComputeTestResourceName; + $loc = Get-Location; + + try + { + # Create a new resource group + New-AzResourceGroup -Name $rgname -Location $loc -Force; + + # Create a new disk configuration with the availability policy parameter + $diskConfig = New-AzDiskConfig -Location $loc -SkuName 'Premium_LRS' -CreateOption 'Empty' -DiskSizeGB 2 -AvailabilityPolicy @{ actionOnDiskDelay = 'AutomaticReattach' }; + $diskname = "disk" + $rgname; + + # Create a new disk using the configuration + $diskPr = New-AzDisk -ResourceGroupName $rgname -DiskName $diskname -Disk $diskConfig; + + # Retrieve the created disk and validate the availability policy + $disk = Get-AzDisk -ResourceGroupName $rgname -DiskName $diskname; + Assert-AreEqual $disk.AvailabilityPolicy.ActionOnDiskDelay "AutomaticReattach"; + + # Update the disk configuration to change the availability policy + $diskupdateconfig = New-AzDiskUpdateConfig -AvailabilityPolicy @{ actionOnDiskDelay = 'None' }; + Update-AzDisk -ResourceGroupName $rgname -DiskName $diskname -DiskUpdate $diskupdateconfig; + + # Retrieve the updated disk and validate the availability policy + $updatedDisk = Get-AzDisk -ResourceGroupName $rgname -DiskName $diskname; + Assert-AreEqual $updatedDisk.AvailabilityPolicy.ActionOnDiskDelay "None"; + } + finally + { + # Clean up the resource group + Remove-AzResourceGroup -Name $rgname -Force -ErrorAction SilentlyContinue; + } +} + +function TestGen-newazdisk +{ + $rgname = Get-ComputeTestResourceName; + $loc = Get-Location; + + try + { + New-AzResourceGroup -Name $rgname -Location $loc -Force; + + # Setup + $diskName = 'disk' + $rgname; + $diskAccountType = 'Premium_LRS'; + $createOption = 'Empty'; + $diskSize = 32; + $actionOnDiskDelay1 = 'None'; + $actionOnDiskDelay2 = 'AutomaticReattach'; + + # Test Disk Creation with availabilityPolicy.actionOnDiskDelay + $diskConfig = New-AzDiskConfig -Location $loc -AccountType $diskAccountType -CreateOption $createOption -DiskSizeGB $diskSize -AvailabilityPolicy @{ actionOnDiskDelay = $actionOnDiskDelay1 }; + New-AzDisk -ResourceGroupName $rgname -DiskName $diskName -Disk $diskConfig; + $disk = Get-AzDisk -ResourceGroupName $rgname -DiskName $diskName; + Assert-AreEqual $disk.AvailabilityPolicy.actionOnDiskDelay $actionOnDiskDelay1; + + # Test Disk Update with availabilityPolicy.actionOnDiskDelay + $diskUpdateConfig = New-AzDiskUpdateConfig -AvailabilityPolicy @{ actionOnDiskDelay = $actionOnDiskDelay2 }; + Update-AzDisk -ResourceGroupName $rgname -DiskName $diskName -DiskUpdate $diskUpdateConfig; + $diskUpdated = Get-AzDisk -ResourceGroupName $rgname -DiskName $diskName; + Assert-AreEqual $diskUpdated.AvailabilityPolicy.actionOnDiskDelay $actionOnDiskDelay2; + } + finally + { + # Cleanup + Remove-AzResourceGroup -Name $rgname -Force -ErrorAction SilentlyContinue; + } +} diff --git a/src/Compute/Compute/ChangeLog.md b/src/Compute/Compute/ChangeLog.md index 3b20e3949f01..4806a0dfc3c5 100644 --- a/src/Compute/Compute/ChangeLog.md +++ b/src/Compute/Compute/ChangeLog.md @@ -20,6 +20,7 @@ --> ## Upcoming Release +* Added parameter `availabilityPolicy.actionOnDiskDelay` to `New-AzDiskConfig` and `New-AzDiskUpdateConfig`. * Improved user experience and consistency. This may introduce breaking changes. Please refer to [here](https://go.microsoft.com/fwlink/?linkid=2340249). * Updated Azure.Core from 1.45.0 to 1.47.3 * Added `-EnableAutomaticUpgrade` and `-TreatFailureAsDeploymentFailure` parameters (Bool) to `New-AzVmGalleryApplication` and `New-AzVmssGalleryApplication` cmdlets. diff --git a/src/Compute/Compute/Generated/Disk/Config/NewAzureRmDiskConfigCommand.cs b/src/Compute/Compute/Generated/Disk/Config/NewAzureRmDiskConfigCommand.cs index 856432491e27..735ae749c17c 100644 --- a/src/Compute/Compute/Generated/Disk/Config/NewAzureRmDiskConfigCommand.cs +++ b/src/Compute/Compute/Generated/Disk/Config/NewAzureRmDiskConfigCommand.cs @@ -1,4 +1,4 @@ -// + // // Copyright (c) Microsoft and contributors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); @@ -272,6 +272,13 @@ public partial class NewAzureRmDiskConfigCommand : Microsoft.Azure.Commands.Reso [PSArgumentCompleter("TrustedLaunchSupported", "TrustedLaunchAndConfidentialVMSupported")] public string SupportedSecurityOption { get; set; } + [Parameter( + Mandatory = false, + ValueFromPipelineByPropertyName = true, + HelpMessage = "Specifies the action on disk delay policy. Values: None to remove the opt-in (Default), AutomaticReattach (Opt-in).")] + [PSArgumentCompleter("None", "AutomaticReattach")] + public string AvailabilityPolicyActionOnDiskDelay { get; set; } + protected override void ProcessRecord() { if (ShouldProcess("Disk", "New")) @@ -300,6 +307,9 @@ private void Run() // SupportedCapabilities SupportedCapabilities vSupportedCapabilities = null; + // AvailabilityPolicy + DiskAvailabilityPolicy vAvailabilityPolicy = null; + if (this.IsParameterBound(c => c.SkuName)) { if (vSku == null) @@ -507,6 +517,15 @@ private void Run() vSupportedCapabilities.SupportedSecurityOption = this.SupportedSecurityOption; } + if (this.IsParameterBound(c => c.AvailabilityPolicyActionOnDiskDelay)) + { + if (vAvailabilityPolicy == null) + { + vAvailabilityPolicy = new DiskAvailabilityPolicy(); + } + vAvailabilityPolicy.ActionOnDiskDelay = this.AvailabilityPolicyActionOnDiskDelay; + } + var vDisk = new PSDisk { Zones = this.IsParameterBound(c => c.Zone) ? this.Zone : null, @@ -534,7 +553,8 @@ private void Run() SupportedCapabilities = vSupportedCapabilities, PublicNetworkAccess = this.IsParameterBound(c => c.PublicNetworkAccess) ? PublicNetworkAccess : null, DataAccessAuthMode = this.IsParameterBound(c => c.DataAccessAuthMode) ? DataAccessAuthMode : null, - OptimizedForFrequentAttach = this.IsParameterBound(c => c.OptimizedForFrequentAttach) ? OptimizedForFrequentAttach : null + OptimizedForFrequentAttach = this.IsParameterBound(c => c.OptimizedForFrequentAttach) ? OptimizedForFrequentAttach : null, + AvailabilityPolicy = vAvailabilityPolicy }; WriteObject(vDisk); diff --git a/src/Compute/Compute/Generated/Disk/Config/NewAzureRmDiskUpdateConfigCommand.cs b/src/Compute/Compute/Generated/Disk/Config/NewAzureRmDiskUpdateConfigCommand.cs index 70c7380a5f38..057d18a741c1 100644 --- a/src/Compute/Compute/Generated/Disk/Config/NewAzureRmDiskUpdateConfigCommand.cs +++ b/src/Compute/Compute/Generated/Disk/Config/NewAzureRmDiskUpdateConfigCommand.cs @@ -1,4 +1,4 @@ -// + // // Copyright (c) Microsoft and contributors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); @@ -186,6 +186,14 @@ public partial class NewAzureRmDiskUpdateConfigCommand : Microsoft.Azure.Command [PSArgumentCompleter("TrustedLaunchSupported", "TrustedLaunchAndConfidentialVMSupported")] public string SupportedSecurityOption { get; set; } + [Parameter( + Mandatory = false, + ValueFromPipelineByPropertyName = true, + HelpMessage = "Specifies the action on disk delay policy. Values: None to remove the opt-in (Default), AutomaticReattach (Opt-in).")] + [Alias("availabilityPolicy.actionOnDiskDelay")] + [PSArgumentCompleter("None", "AutomaticReattach")] + public string AvailabilityPolicyActionOnDiskDelay { get; set; } + protected override void ProcessRecord() { if (ShouldProcess("DiskUpdate", "New")) @@ -211,6 +219,9 @@ private void Run() // SupportedCapabilities SupportedCapabilities vSupportedCapabilities = null; + // AvailabilityPolicy + DiskAvailabilityPolicy vAvailabilityPolicy = null; + if (this.IsParameterBound(c => c.EncryptionSettingsEnabled)) { if (vEncryptionSettingsCollection == null) @@ -316,6 +327,15 @@ private void Run() vSupportedCapabilities.SupportedSecurityOption = this.SupportedSecurityOption; } + if (this.IsParameterBound(c => c.AvailabilityPolicyActionOnDiskDelay)) + { + if (vAvailabilityPolicy == null) + { + vAvailabilityPolicy = new DiskAvailabilityPolicy(); + } + vAvailabilityPolicy.ActionOnDiskDelay = this.AvailabilityPolicyActionOnDiskDelay; + } + var vDiskUpdate = new PSDiskUpdate { OsType = this.IsParameterBound(c => c.OsType) ? this.OsType : (OperatingSystemTypes?)null, @@ -337,10 +357,11 @@ private void Run() SupportsHibernation = this.IsParameterBound(c => c.SupportsHibernation) ? SupportsHibernation : null, SupportedCapabilities = vSupportedCapabilities, PublicNetworkAccess = this.IsParameterBound(c => c.PublicNetworkAccess) ? PublicNetworkAccess : null, - DataAccessAuthMode = this.IsParameterBound(c => c.DataAccessAuthMode) ? DataAccessAuthMode : null + DataAccessAuthMode = this.IsParameterBound(c => c.DataAccessAuthMode) ? DataAccessAuthMode : null, + AvailabilityPolicy = vAvailabilityPolicy }; WriteObject(vDiskUpdate); } } -} +} \ No newline at end of file diff --git a/src/Compute/Compute/Generated/Models/PSDisk.cs b/src/Compute/Compute/Generated/Models/PSDisk.cs index d5a82bb38000..02d34191e569 100644 --- a/src/Compute/Compute/Generated/Models/PSDisk.cs +++ b/src/Compute/Compute/Generated/Models/PSDisk.cs @@ -81,5 +81,11 @@ public string ResourceGroupName public bool? OptimizedForFrequentAttach { get; set; } public string SecurityDataUri { get; set; } public string SecurityMetadataUri { get; set; } + public AvailabilityPolicy AvailabilityPolicy { get; set; } + } + + public partial class AvailabilityPolicy + { + public string ActionOnDiskDelay { get; set; } } } diff --git a/src/Compute/Compute/Generated/Models/PSDiskUpdate.cs b/src/Compute/Compute/Generated/Models/PSDiskUpdate.cs index b8869c26d86c..a8b047ba9855 100644 --- a/src/Compute/Compute/Generated/Models/PSDiskUpdate.cs +++ b/src/Compute/Compute/Generated/Models/PSDiskUpdate.cs @@ -25,6 +25,11 @@ namespace Microsoft.Azure.Commands.Compute.Automation.Models { + public class DiskAvailabilityPolicy + { + public string ActionOnDiskDelay { get; set; } + } + public partial class PSDiskUpdate { public OperatingSystemTypes? OsType { get; set; } @@ -57,5 +62,7 @@ public partial class PSDiskUpdate // Gets or sets possible values include: 'Enabled', 'Disabled' public string PublicNetworkAccess { get; set; } public string DataAccessAuthMode { get; set; } + + public DiskAvailabilityPolicy AvailabilityPolicy { get; set; } } }