Skip to content

Commit a2f3905

Browse files
authored
Merge pull request #8342 from cormacpayne/new-deployment-fix
Resolve path provided to -TemplateFile parameter for RG deployment cmdlets
2 parents 84039d9 + 0b0f631 commit a2f3905

File tree

7 files changed

+1082
-25
lines changed

7 files changed

+1082
-25
lines changed

src/Resources/ResourceManager/Implementation/CmdletBase/ResourceWithParameterCmdletBase.cs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -99,15 +99,15 @@ public object GetDynamicParameters()
9999
if (string.IsNullOrEmpty(TemplateParameterUri))
100100
{
101101
dynamicParameters = TemplateUtility.GetTemplateParametersFromFile(
102-
this.TryResolvePath(TemplateFile),
102+
this.ResolvePath(TemplateFile),
103103
TemplateParameterObject,
104-
this.TryResolvePath(TemplateParameterFile),
104+
this.ResolvePath(TemplateParameterFile),
105105
MyInvocation.MyCommand.Parameters.Keys.ToArray());
106106
}
107107
else
108108
{
109109
dynamicParameters = TemplateUtility.GetTemplateParametersFromFile(
110-
this.TryResolvePath(TemplateFile),
110+
this.ResolvePath(TemplateFile),
111111
TemplateParameterObject,
112112
TemplateParameterUri,
113113
MyInvocation.MyCommand.Parameters.Keys.ToArray());
@@ -122,7 +122,7 @@ public object GetDynamicParameters()
122122
dynamicParameters = TemplateUtility.GetTemplateParametersFromFile(
123123
TemplateUri,
124124
TemplateParameterObject,
125-
this.TryResolvePath(TemplateParameterFile),
125+
this.ResolvePath(TemplateParameterFile),
126126
MyInvocation.MyCommand.Parameters.Keys.ToArray());
127127
}
128128
else
@@ -162,7 +162,7 @@ protected Hashtable GetTemplateParameterObject(Hashtable templateParameterObject
162162
}
163163

164164
// Load parameters from the file
165-
string templateParameterFilePath = this.TryResolvePath(TemplateParameterFile);
165+
string templateParameterFilePath = this.ResolvePath(TemplateParameterFile);
166166
if (templateParameterFilePath != null && FileUtilities.DataStore.FileExists(templateParameterFilePath))
167167
{
168168
var parametersFromFile = TemplateUtility.ParseTemplateParameterFileContents(templateParameterFilePath);

src/Resources/ResourceManager/Implementation/ResourceGroupDeployments/TestAzureResourceGroupDeploymentCmdlet.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ public override void ExecuteCmdlet()
5858
PSDeploymentCmdletParameters parameters = new PSDeploymentCmdletParameters()
5959
{
6060
ResourceGroupName = ResourceGroupName,
61-
TemplateFile = TemplateUri ?? this.TryResolvePath(TemplateFile),
61+
TemplateFile = TemplateUri ?? this.ResolvePath(TemplateFile),
6262
TemplateParameterObject = GetTemplateParameterObject(TemplateParameterObject),
6363
ParameterUri = TemplateParameterUri,
6464
OnErrorDeployment = RollbackToLastDeployment || !string.IsNullOrEmpty(RollBackDeploymentName)

src/Resources/Resources.Test/ScenarioTests/DeploymentTests.cs

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -115,5 +115,19 @@ public void TestNewDeploymentWithKeyVaultReferenceInParameterObject()
115115
{
116116
TestRunner.RunTestScript("Test-NewDeploymentWithKeyVaultReferenceInParameterObject");
117117
}
118+
119+
[Fact]
120+
[Trait(Category.AcceptanceType, Category.CheckIn)]
121+
public void TestNewDeploymentFromNonexistentTemplateFile()
122+
{
123+
TestRunner.RunTestScript("Test-NewDeploymentFromNonexistentTemplateFile");
124+
}
125+
126+
[Fact]
127+
[Trait(Category.AcceptanceType, Category.CheckIn)]
128+
public void TestNewDeploymentFromNonexistentTemplateParameterFile()
129+
{
130+
TestRunner.RunTestScript("Test-NewDeploymentFromNonexistentTemplateParameterFile");
131+
}
118132
}
119133
}

src/Resources/Resources.Test/ScenarioTests/DeploymentTests.ps1

Lines changed: 75 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ function Test-ValidateDeployment
2626

2727
# Test
2828
New-AzResourceGroup -Name $rgname -Location $rglocation
29-
29+
3030
$list = Test-AzureResourceGroupTemplate -ResourceGroupName $rgname -TemplateFile Build2014_Website_App.json -siteName $rname -hostingPlanName $rname -siteLocation $location -sku Free -workerSize 0
3131

3232
# Assert
@@ -50,7 +50,7 @@ function Test-NewDeploymentFromTemplateFile
5050
{
5151
# Test
5252
New-AzResourceGroup -Name $rgname -Location $rglocation
53-
53+
5454
$deployment = New-AzResourceGroupDeployment -Name $rname -ResourceGroupName $rgname -TemplateFile sampleDeploymentTemplate.json -TemplateParameterFile sampleDeploymentTemplateParams.json
5555

5656
# Assert
@@ -61,7 +61,7 @@ function Test-NewDeploymentFromTemplateFile
6161
$getById = Get-AzResourceGroupDeployment -Id $deploymentId
6262
Assert-AreEqual $getById.DeploymentName $deployment.DeploymentName
6363
}
64-
64+
6565
finally
6666
{
6767
# Cleanup
@@ -88,7 +88,7 @@ function Test-CrossResourceGroupDeploymentFromTemplateFile
8888
# Test
8989
New-AzResourceGroup -Name $rgname -Location $rglocation
9090
New-AzResourceGroup -Name $rgname2 -Location $rglocation
91-
91+
9292
$parameters = @{ "NestedDeploymentResourceGroup" = $rgname2 }
9393
$deployment = New-AzResourceGroupDeployment -Name $rname -ResourceGroupName $rgname -TemplateFile sampleTemplateWithCrossResourceGroupDeployment.json -TemplateParameterObject $parameters
9494

@@ -104,7 +104,7 @@ function Test-CrossResourceGroupDeploymentFromTemplateFile
104104
$nestedDeployment = Get-AzResourceGroupDeployment -Id $nestedDeploymentId
105105
Assert-AreEqual Succeeded $nestedDeployment.ProvisioningState
106106
}
107-
107+
108108
finally
109109
{
110110
# Cleanup
@@ -159,7 +159,7 @@ function Test-NestedDeploymentFromTemplateFile
159159
{
160160
# Test
161161
New-AzResourceGroup -Name $rgname -Location $rglocation
162-
162+
163163
$deployment = New-AzResourceGroupDeployment -Name $rname -ResourceGroupName $rgname -TemplateFile sampleNestedTemplate.json -TemplateParameterFile sampleNestedTemplateParams.json
164164

165165
# Assert
@@ -170,7 +170,7 @@ function Test-NestedDeploymentFromTemplateFile
170170
$getById = Get-AzResourceGroupDeployment -Id $deploymentId
171171
Assert-AreEqual $getById.DeploymentName $deployment.DeploymentName
172172
}
173-
173+
174174
finally
175175
{
176176
# Cleanup
@@ -195,17 +195,17 @@ function Test-SaveDeploymentTemplateFile
195195
{
196196
# Test
197197
New-AzResourceGroup -Name $rgname -Location $rglocation
198-
198+
199199
$deployment = New-AzResourceGroupDeployment -Name $rname -ResourceGroupName $rgname -TemplateFile sampleDeploymentTemplate.json -TemplateParameterFile sampleDeploymentTemplateParams.json
200200

201201
# Assert
202202
Assert-AreEqual Succeeded $deployment.ProvisioningState
203-
203+
204204
$saveOutput = Save-AzResourceGroupDeploymentTemplate -ResourceGroupName $rgname -DeploymentName $rname -Force
205205
Assert-NotNull $saveOutput
206206
Assert-True { $saveOutput.Path.Contains($rname + ".json") }
207207
}
208-
208+
209209
finally
210210
{
211211
# Cleanup
@@ -239,7 +239,7 @@ function Test-NewDeploymentWithKeyVaultReference
239239
$adUser = Get-AzADUser -UserPrincipalName $context.Account.Id
240240
$objectId = $adUser.Id
241241
$KeyVaultResourceId = "/subscriptions/" + $subscriptionId + "/resourcegroups/" + $rgname + "/providers/Microsoft.KeyVault/vaults/" + $keyVaultname
242-
242+
243243
$parameters = @{ "keyVaultName" = $keyVaultname; "secretName" = $secretName; "secretValue" = $hostplanName; "tenantId" = $tenantId; "objectId" = $objectId }
244244
$deployment = New-AzResourceGroupDeployment -Name $rname -ResourceGroupName $rgname -TemplateFile keyVaultSetupTemplate.json -TemplateParameterObject $parameters
245245

@@ -261,7 +261,7 @@ function Test-NewDeploymentWithKeyVaultReference
261261
$getById = Get-AzResourceGroupDeployment -Id $deploymentId
262262
Assert-AreEqual $getById.DeploymentName $deployment.DeploymentName
263263
}
264-
264+
265265
finally
266266
{
267267
# Cleanup
@@ -284,7 +284,7 @@ function Test-NewDeploymentWithComplexPramaters
284284
{
285285
# Test
286286
New-AzResourceGroup -Name $rgname -Location $rglocation
287-
287+
288288
$deployment = New-AzResourceGroupDeployment -Name $rname -ResourceGroupName $rgname -TemplateFile complexParametersTemplate.json -TemplateParameterFile complexParameters.json
289289

290290
# Assert
@@ -295,7 +295,7 @@ function Test-NewDeploymentWithComplexPramaters
295295
$getById = Get-AzResourceGroupDeployment -Id $deploymentId
296296
Assert-AreEqual $getById.DeploymentName $deployment.DeploymentName
297297
}
298-
298+
299299
finally
300300
{
301301
# Cleanup
@@ -318,7 +318,7 @@ function Test-NewDeploymentWithParameterObject
318318
{
319319
# Test
320320
New-AzResourceGroup -Name $rgname -Location $rglocation
321-
321+
322322
$deployment = New-AzResourceGroupDeployment -Name $rname -ResourceGroupName $rgname -TemplateFile complexParametersTemplate.json -TemplateParameterObject @{appSku=@{code="f1"; name="Free"}; servicePlan="plan1"; ranks=@("c", "d")}
323323

324324
# Assert
@@ -329,7 +329,7 @@ function Test-NewDeploymentWithParameterObject
329329
$getById = Get-AzResourceGroupDeployment -Id $deploymentId
330330
Assert-AreEqual $getById.DeploymentName $deployment.DeploymentName
331331
}
332-
332+
333333
finally
334334
{
335335
# Cleanup
@@ -352,7 +352,7 @@ function Test-NewDeploymentWithDynamicParameters
352352
{
353353
# Test
354354
New-AzResourceGroup -Name $rgname -Location $rglocation
355-
355+
356356
$deployment = New-AzResourceGroupDeployment -Name $rname -ResourceGroupName $rgname -TemplateFile complexParametersTemplate.json -appSku @{code="f3"; name=@{major="Official"; minor="1.0"}} -servicePlan "plan1" -ranks @("c", "d")
357357

358358
# Assert
@@ -363,7 +363,7 @@ function Test-NewDeploymentWithDynamicParameters
363363
$getById = Get-AzResourceGroupDeployment -Id $deploymentId
364364
Assert-AreEqual $getById.DeploymentName $deployment.DeploymentName
365365
}
366-
366+
367367
finally
368368
{
369369
# Cleanup
@@ -427,10 +427,66 @@ function Test-NewDeploymentWithKeyVaultReferenceInParameterObject
427427
# Assert
428428
Assert-AreEqual Succeeded $deployment.ProvisioningState
429429
}
430-
430+
431431
finally
432432
{
433433
# Cleanup
434434
Clean-ResourceGroup $deploymentRG
435435
}
436+
}
437+
438+
<#
439+
.SYNOPSIS
440+
Tests deployment exception thrown with nonexistent template file.
441+
#>
442+
function Test-NewDeploymentFromNonexistentTemplateFile
443+
{
444+
# Setup
445+
$rgname = Get-ResourceGroupName
446+
$rname = Get-ResourceName
447+
$rglocation = "West US 2"
448+
try
449+
{
450+
# Test
451+
New-AzResourceGroup -Name $rgname -Location $rglocation
452+
453+
# Assert exception is thrown
454+
$path = (Get-Item ".\").FullName
455+
$file = Join-Path $path "nonexistentFile.json"
456+
$exceptionMessage = "Cannot retrieve the dynamic parameters for the cmdlet. Cannot find path '$file' because it does not exist."
457+
Assert-Throws { New-AzResourceGroupDeployment -Name $rname -ResourceGroupName $rgname -TemplateFile $file -TemplateParameterFile sampleTemplateParams.json } $exceptionMessage
458+
}
459+
finally
460+
{
461+
# Cleanup
462+
Clean-ResourceGroup $rgname
463+
}
464+
}
465+
466+
<#
467+
.SYNOPSIS
468+
Tests deployment exception thrown with nonexistent template parameter file.
469+
#>
470+
function Test-NewDeploymentFromNonexistentTemplateParameterFile
471+
{
472+
# Setup
473+
$rgname = Get-ResourceGroupName
474+
$rname = Get-ResourceName
475+
$rglocation = "West US 2"
476+
try
477+
{
478+
# Test
479+
New-AzResourceGroup -Name $rgname -Location $rglocation
480+
481+
# Assert exception is thrown
482+
$path = (Get-Item ".\").FullName
483+
$file = Join-Path $path "nonexistentFile.json"
484+
$exceptionMessage = "Cannot retrieve the dynamic parameters for the cmdlet. Cannot find path '$file' because it does not exist."
485+
Assert-Throws { New-AzResourceGroupDeployment -Name $rname -ResourceGroupName $rgname -TemplateFile sampleTemplateParams.json -TemplateParameterFile $file } $exceptionMessage
486+
}
487+
finally
488+
{
489+
# Cleanup
490+
Clean-ResourceGroup $rgname
491+
}
436492
}

0 commit comments

Comments
 (0)