Skip to content

Commit d27f81e

Browse files
authored
[Resources] Add a default api version in export template cmdlet (#13120)
* Update export template cmdlet to use latest API version when there is no value provided for ApiVersion parameter * Update constant name * Add change log * Update test to use secure credentials * Remove suppression message * Remove credential secure strings * Remove credentials from New-AzResource call * Remove credentials from New-AzResource call in other export tests
1 parent be0e33c commit d27f81e

File tree

7 files changed

+3453
-694
lines changed

7 files changed

+3453
-694
lines changed

src/Resources/ResourceManager/Implementation/ResourceGroups/ExportAzureResourceGroupCmdlet.cs

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,12 @@ namespace Microsoft.Azure.Commands.ResourceManager.Cmdlets.Implementation
3535
[Cmdlet("Export", ResourceManager.Common.AzureRMConstants.AzureRMPrefix + "ResourceGroup", SupportsShouldProcess = true), OutputType(typeof(PSObject))]
3636
public class ExportAzureResourceGroupCmdlet : ResourceManagerCmdletBaseWithAPiVersion
3737
{
38+
/// <summary>
39+
/// Adding a hard-coded API version to be used when there is no value provided for 'ApiVersion' parameter.
40+
/// This is a temporary change until we update the cmdlet to use .NET SDK based client.
41+
/// </summary>
42+
private const string DefaultApiVersion = "2020-06-01";
43+
3844
/// <summary>
3945
/// Gets or sets the resource group name parameter.
4046
/// </summary>
@@ -98,7 +104,7 @@ protected override void OnProcessRecord()
98104

99105
var resourceGroupId = this.GetResourceGroupId();
100106

101-
var apiVersion = this.DetermineApiVersion(resourceId: resourceGroupId).Result;
107+
var apiVersion = this.ApiVersion ?? DefaultApiVersion;
102108

103109
var parameters = new ExportTemplateParameters
104110
{

src/Resources/Resources.Test/ScenarioTests/ResourceGroupTests.cs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,13 @@ public void TestExportResourceGroup()
8181
TestRunner.RunTestScript("Test-ExportResourceGroup");
8282
}
8383

84+
[Fact]
85+
[Trait(Category.AcceptanceType, Category.CheckIn)]
86+
public void TestExportResourceGroupAsyncRoute()
87+
{
88+
TestRunner.RunTestScript("Test-ExportResourceGroup-AsyncRoute");
89+
}
90+
8491
[Fact]
8592
[Trait(Category.AcceptanceType, Category.CheckIn)]
8693
public void TestExportResourceGroupWithFiltering()

src/Resources/Resources.Test/ScenarioTests/ResourceGroupTests.ps1

Lines changed: 45 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -378,8 +378,8 @@ function Test-ExportResourceGroup
378378
{
379379
# Test
380380
New-AzResourceGroup -Name $rgname -Location $rglocation
381-
#[SuppressMessage("Microsoft.Security", "CS002:SecretInNextLine")]
382-
$r = New-AzResource -Name $rname -Location "centralus" -Tags @{ testtag = "testval" } -ResourceGroupName $rgname -ResourceType $resourceType -PropertyObject @{"administratorLogin" = "adminuser"; "administratorLoginPassword" = "P@ssword1"} -SkuObject @{ Name = "A0" } -ApiVersion $apiversion -Force
381+
382+
$r = New-AzResource -Name $rname -Location "centralus" -Tags @{ testtag = "testval" } -ResourceGroupName $rgname -ResourceType $resourceType -SkuObject @{ Name = "A0" } -ApiVersion $apiversion -Force
383383
Assert-AreEqual $r.ResourceGroupName $rgname
384384

385385
$exportOutput = Export-AzResourceGroup -ResourceGroupName $rgname -Force
@@ -394,6 +394,47 @@ function Test-ExportResourceGroup
394394
}
395395
}
396396

397+
<#
398+
.SYNOPSIS
399+
Tests async export to export resource group template file.
400+
#>
401+
function Test-ExportResourceGroup-AsyncRoute
402+
{
403+
# Setup
404+
$rgname = Get-ResourceGroupName
405+
$rname = Get-ResourceName
406+
$rnameConstant = Get-ResourceName
407+
$rglocation = Get-Location "Microsoft.Resources" "resourceGroups" "West US"
408+
$resourceType = "Providers.Test/statefulResources"
409+
410+
try
411+
{
412+
# Test
413+
New-AzResourceGroup -Name $rgname -Location $rglocation
414+
415+
$i = 0;
416+
while($i -lt 25)
417+
{
418+
$rname = $rnameConstant + $i.ToString()
419+
New-AzResource -Name $rname -Location "centralus" -Tags @{ testtag = "testval" } -ResourceGroupName $rgname -ResourceType $resourceType -SkuObject @{ Name = "A0" } -Force
420+
$i++
421+
}
422+
423+
$resourcesCount = (Get-AzResource -ResourceGroupName $rgname).Length
424+
Assert-True { $resourcesCount -gt 20 }
425+
426+
$exportOutput = Export-AzResourceGroup -ResourceGroupName $rgname -Force
427+
Assert-NotNull $exportOutput
428+
Assert-True { $exportOutput.Path.Contains($rgname + ".json") }
429+
}
430+
431+
finally
432+
{
433+
# Cleanup
434+
Clean-ResourceGroup $rgname
435+
}
436+
}
437+
397438
<#
398439
.SYNOPSIS
399440
Tests export resource group with resource filtering.
@@ -414,12 +455,10 @@ function Test-ExportResourceGroupWithFiltering
414455
# Test
415456
New-AzResourceGroup -Name $rgname -Location $rglocation
416457

417-
#[SuppressMessage("Microsoft.Security", "CS002:SecretInNextLine")]
418-
$r1 = New-AzResource -Name $rname1 -Location "centralus" -Tags @{ testtag = "testval" } -ResourceGroupName $rgname -ResourceType $resourceType -PropertyObject @{"administratorLogin" = "adminuser"; "administratorLoginPassword" = "P@ssword1"} -SkuObject @{ Name = "A0" } -ApiVersion $apiversion -Force
458+
$r1 = New-AzResource -Name $rname1 -Location "centralus" -Tags @{ testtag = "testval" } -ResourceGroupName $rgname -ResourceType $resourceType -SkuObject @{ Name = "A0" } -ApiVersion $apiversion -Force
419459
Assert-NotNull $r1.ResourceId
420460

421-
#[SuppressMessage("Microsoft.Security", "CS002:SecretInNextLine")]
422-
$r2 = New-AzResource -Name $rname2 -Location "centralus" -Tags @{ testtag = "testval" } -ResourceGroupName $rgname -ResourceType $resourceType -PropertyObject @{"administratorLogin" = "adminuser"; "administratorLoginPassword" = "P@ssword1"} -SkuObject @{ Name = "A0" } -ApiVersion $apiversion -Force
461+
$r2 = New-AzResource -Name $rname2 -Location "centralus" -Tags @{ testtag = "testval" } -ResourceGroupName $rgname -ResourceType $resourceType -SkuObject @{ Name = "A0" } -ApiVersion $apiversion -Force
423462
Assert-NotNull $r2.ResourceId
424463

425464
$exportOutput = Export-AzResourceGroup -ResourceGroupName $rgname -Force -Resource @($r2.ResourceId) -IncludeParameterDefaultValue -IncludeComments

src/Resources/Resources.Test/SessionRecords/Microsoft.Azure.Commands.Resources.Test.ScenarioTests.ResourceGroupTests/TestExportResourceGroup.json

Lines changed: 373 additions & 438 deletions
Large diffs are not rendered by default.

src/Resources/Resources.Test/SessionRecords/Microsoft.Azure.Commands.Resources.Test.ScenarioTests.ResourceGroupTests/TestExportResourceGroupAsyncRoute.json

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

src/Resources/Resources.Test/SessionRecords/Microsoft.Azure.Commands.Resources.Test.ScenarioTests.ResourceGroupTests/TestExportResourceGroupWithFiltering.json

Lines changed: 184 additions & 249 deletions
Large diffs are not rendered by default.

src/Resources/Resources/ChangeLog.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
- Additional information about change #1
1919
-->
2020
## Upcoming Release
21+
* Add a default API version to be used in `Export-AzResourceGroup` cmdlet
2122

2223
## Version 2.5.1
2324
* Added missing check for Set-AzRoleAssignment

0 commit comments

Comments
 (0)