Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 22 additions & 1 deletion src/Compute/Compute.Test/ScenarioTests/DiskRPTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -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");
}
}
}
108 changes: 108 additions & 0 deletions src/Compute/Compute.Test/ScenarioTests/DiskRPTests.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -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;
}
}
1 change: 1 addition & 0 deletions src/Compute/Compute/ChangeLog.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
//
//
// Copyright (c) Microsoft and contributors. All rights reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
Expand Down Expand Up @@ -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"))
Expand Down Expand Up @@ -300,6 +307,9 @@ private void Run()
// SupportedCapabilities
SupportedCapabilities vSupportedCapabilities = null;

// AvailabilityPolicy
DiskAvailabilityPolicy vAvailabilityPolicy = null;

if (this.IsParameterBound(c => c.SkuName))
{
if (vSku == null)
Expand Down Expand Up @@ -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,
Expand Down Expand Up @@ -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);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
//
//
// Copyright (c) Microsoft and contributors. All rights reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
Expand Down Expand Up @@ -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"))
Expand All @@ -211,6 +219,9 @@ private void Run()
// SupportedCapabilities
SupportedCapabilities vSupportedCapabilities = null;

// AvailabilityPolicy
DiskAvailabilityPolicy vAvailabilityPolicy = null;

if (this.IsParameterBound(c => c.EncryptionSettingsEnabled))
{
if (vEncryptionSettingsCollection == null)
Expand Down Expand Up @@ -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,
Expand All @@ -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);
}
}
}
}
6 changes: 6 additions & 0 deletions src/Compute/Compute/Generated/Models/PSDisk.cs
Original file line number Diff line number Diff line change
Expand Up @@ -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; }
}
}
7 changes: 7 additions & 0 deletions src/Compute/Compute/Generated/Models/PSDiskUpdate.cs
Original file line number Diff line number Diff line change
Expand Up @@ -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; }
Expand Down Expand Up @@ -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; }
}
}