Skip to content

Commit 1583c86

Browse files
author
Hovsep
committed
Merge pull request Azure#1387 from vivsriaus/FixSetResource
Do not get nested deployment operations if the nested deployment is i…
2 parents f4c2f19 + 3f2b9c1 commit 1583c86

File tree

7 files changed

+4402
-8
lines changed

7 files changed

+4402
-8
lines changed

src/ResourceManager/Resources/Commands.Resources.Test/Commands.Resources.Test.csproj

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -324,6 +324,9 @@
324324
<None Include="SessionRecords\Microsoft.Azure.Commands.Resources.Test.ScenarioTests.ActiveDirectoryTests\TestGetADUserWithMail.json">
325325
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
326326
</None>
327+
<None Include="SessionRecords\Microsoft.Azure.Commands.Resources.Test.ScenarioTests.DeploymentTests\TestNestedDeploymentFromTemplateFile.json">
328+
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
329+
</None>
327330
<None Include="SessionRecords\Microsoft.Azure.Commands.Resources.Test.ScenarioTests.DeploymentTests\TestNewDeploymentFromTemplateFile.json">
328331
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
329332
</None>
@@ -553,6 +556,12 @@
553556
<None Include="sampleTemplateParams.json">
554557
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
555558
</None>
559+
<None Include="sampleNestedTemplate.json">
560+
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
561+
</None>
562+
<None Include="sampleNestedTemplateParams.json">
563+
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
564+
</None>
556565
</ItemGroup>
557566
<ItemGroup>
558567
<Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />

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

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,12 @@ public void TestNewDeploymentFromTemplateFile()
3030
ResourcesController.NewInstance.RunPsTest("Test-NewDeploymentFromTemplateFile");
3131
}
3232

33+
[Fact]
34+
public void TestNestedDeploymentFromTemplateFile()
35+
{
36+
ResourcesController.NewInstance.RunPsTest("Test-NestedDeploymentFromTemplateFile");
37+
}
38+
3339
[Fact(Skip = "Fix acquisition of TenantId in KeyVault Test.")]
3440
public void TestNewDeploymentWithKeyVaultReference()
3541
{

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

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,41 @@ function Test-NewDeploymentFromTemplateFile
6868
}
6969
}
7070

71+
<#
72+
.SYNOPSIS
73+
Tests nested deployment.
74+
#>
75+
function Test-NestedDeploymentFromTemplateFile
76+
{
77+
# Setup
78+
$rgname = Get-ResourceGroupName
79+
$rname = Get-ResourceName
80+
$rglocation = Get-ProviderLocation ResourceManagement
81+
$location = Get-ProviderLocation "Microsoft.Web/sites"
82+
83+
try
84+
{
85+
# Test
86+
New-AzureRmResourceGroup -Name $rgname -Location $rglocation
87+
88+
$deployment = New-AzureRmResourceGroupDeployment -Name $rname -ResourceGroupName $rgname -TemplateFile sampleNestedTemplate.json -TemplateParameterFile sampleNestedTemplateParams.json
89+
90+
# Assert
91+
Assert-AreEqual Succeeded $deployment.ProvisioningState
92+
93+
$subId = (Get-AzureRmContext).Subscription.SubscriptionId
94+
$deploymentId = "/subscriptions/$subId/resourcegroups/$rgname/providers/Microsoft.Resources/deployments/$rname"
95+
$getById = Get-AzureRmResourceGroupDeployment -Id $deploymentId
96+
Assert-AreEqual $getById.DeploymentName $deployment.DeploymentName
97+
}
98+
99+
finally
100+
{
101+
# Cleanup
102+
Clean-ResourceGroup $rgname
103+
}
104+
}
105+
71106
<#
72107
.SYNOPSIS
73108
Tests deployment via template file and parameter file with KeyVault reference.

src/ResourceManager/Resources/Commands.Resources.Test/SessionRecords/Microsoft.Azure.Commands.Resources.Test.ScenarioTests.DeploymentTests/TestNestedDeploymentFromTemplateFile.json

Lines changed: 4299 additions & 0 deletions
Large diffs are not rendered by default.
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
{
2+
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
3+
"contentVersion": "1.0.0.0",
4+
"parameters": {
5+
"StorageAccountName": {
6+
"type": "String"
7+
}
8+
},
9+
"variables": {
10+
"templatelink": "https://raw.githubusercontent.com/vivsriaus/armtemplates/master/newStorageAccount.json"
11+
},
12+
"resources": [{
13+
"apiVersion": "2015-01-01",
14+
"name": "nestedTemplate",
15+
"type": "Microsoft.Resources/deployments",
16+
"properties": {
17+
"mode": "incremental",
18+
"templateLink": {
19+
"uri": "[variables('templatelink')]",
20+
"contentVersion": "1.0.0.0"
21+
},
22+
"parameters": {
23+
"StorageAccountName": {
24+
"value": "[parameters('StorageAccountName')]"
25+
}
26+
}
27+
}
28+
}]
29+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
{
2+
"$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#",
3+
"contentVersion": "1.0.0.0",
4+
"parameters": {
5+
"StorageAccountName": {
6+
"value": "testvivek52134"
7+
}
8+
}
9+
}

src/ResourceManager/Resources/Commands.Resources/Models.ResourceGroups/ResourceClient.cs

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
using Hyak.Common;
2424
using Microsoft.Azure.Commands.Resources.Models.Authorization;
2525
using Microsoft.Azure.Commands.ResourceManager.Cmdlets.Components;
26+
using Microsoft.Azure.Commands.ResourceManager.Cmdlets.Utilities;
2627
using Microsoft.Azure.Commands.Tags.Model;
2728
using Microsoft.Azure.Common.Authentication;
2829
using Microsoft.Azure.Common.Authentication.Models;
@@ -34,6 +35,7 @@
3435
using Microsoft.WindowsAzure.Commands.Utilities.Common;
3536
using Newtonsoft.Json;
3637
using ProjectResources = Microsoft.Azure.Commands.Resources.Properties.Resources;
38+
using System.Net;
3739

3840
namespace Microsoft.Azure.Commands.Resources.Models
3941
{
@@ -340,16 +342,21 @@ private List<DeploymentOperation> GetNewOperations(List<DeploymentOperation> old
340342
//If nested deployment, get the operations under those deployments as well
341343
if(operation.Properties.TargetResource.ResourceType.Equals(Constants.MicrosoftResourcesDeploymentType, StringComparison.OrdinalIgnoreCase))
342344
{
343-
List<DeploymentOperation> newNestedOperations = new List<DeploymentOperation>();
344-
DeploymentOperationsListResult result;
345+
HttpStatusCode statusCode;
346+
Enum.TryParse<HttpStatusCode>(operation.Properties.StatusCode, out statusCode);
347+
if(!statusCode.IsClientFailureRequest())
348+
{
349+
List<DeploymentOperation> newNestedOperations = new List<DeploymentOperation>();
350+
DeploymentOperationsListResult result;
345351

346-
result = ResourceManagementClient.DeploymentOperations.List(
347-
resourceGroupName: ResourceIdUtility.GetResourceGroupName(operation.Properties.TargetResource.Id),
348-
deploymentName: operation.Properties.TargetResource.ResourceName,
349-
parameters: null);
352+
result = ResourceManagementClient.DeploymentOperations.List(
353+
resourceGroupName: ResourceIdUtility.GetResourceGroupName(operation.Properties.TargetResource.Id),
354+
deploymentName: operation.Properties.TargetResource.ResourceName,
355+
parameters: null);
350356

351-
newNestedOperations = GetNewOperations(operations, result.Operations);
352-
newOperations.AddRange(newNestedOperations);
357+
newNestedOperations = GetNewOperations(operations, result.Operations);
358+
newOperations.AddRange(newNestedOperations);
359+
}
353360
}
354361
}
355362

0 commit comments

Comments
 (0)