Skip to content

Commit 37e7adc

Browse files
authored
Update Test Deployments to allow the user to specify a deployment name (#15082)
* Update TestAzureSubscriptionDeploymentCmdlet.cs * For TestAzureSubscriptionDeployment - If deployment name is null, then generate the name, otherwise, pass the deployment name * Allow to specify deployment name for validate on management group, subscription, and tenant deployments * changelog Allow naming the deployment when testing deployments [#11497] * change help message * Update-MarkdownHelpModule Co-authored-by: Jonathan Reynes <[email protected]>
1 parent f0a6be6 commit 37e7adc

File tree

7 files changed

+157
-89
lines changed

7 files changed

+157
-89
lines changed

src/Resources/ResourceManager/Implementation/Deployments/TestAzureManagementGroupDeploymentCmdlet.cs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,12 @@ namespace Microsoft.Azure.Commands.ResourceManager.Cmdlets.Implementation
2828
[Cmdlet(VerbsDiagnostic.Test, AzureRMConstants.AzureRMPrefix + "ManagementGroupDeployment", DefaultParameterSetName = ParameterlessTemplateFileParameterSetName), OutputType(typeof(PSResourceManagerError))]
2929
public class TestAzureManagementGroupDeploymentCmdlet : TestDeploymentCmdletBase
3030
{
31+
[Alias("DeploymentName")]
32+
[Parameter(Mandatory = false,
33+
HelpMessage = "The name of the deployment it's going to test. If not specified, defaults to the template file name when a template file is provided")]
34+
[ValidateNotNullOrEmpty]
35+
public string Name { get; set; }
36+
3137
[Parameter(Mandatory = true, HelpMessage = "The management group id.")]
3238
[ValidateNotNullOrEmpty]
3339
public string ManagementGroupId { get; set; }
@@ -44,6 +50,7 @@ protected override void OnProcessRecord()
4450
ScopeType = DeploymentScopeType.ManagementGroup,
4551
ManagementGroupId = this.ManagementGroupId,
4652
Location = this.Location,
53+
DeploymentName = this.Name,
4754
QueryString = QueryString,
4855
TemplateFile = this.TemplateUri ?? this.TryResolvePath(this.TemplateFile),
4956
TemplateObject = this.TemplateObject,

src/Resources/ResourceManager/Implementation/Deployments/TestAzureSubscriptionDeploymentCmdlet.cs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,12 @@ namespace Microsoft.Azure.Commands.ResourceManager.Cmdlets.Implementation
2929
[Alias("Test-AzSubscriptionDeployment")]
3030
public class TestAzureSubscriptionDeploymentCmdlet : TestDeploymentCmdletBase
3131
{
32+
[Alias("DeploymentName")]
33+
[Parameter(Mandatory = false,
34+
HelpMessage = "The name of the deployment it's going to test. If not specified, defaults to the template file name when a template file is provided")]
35+
[ValidateNotNullOrEmpty]
36+
public string Name { get; set; }
37+
3238
[Parameter(Mandatory = true, HelpMessage = "The location to store deployment data.")]
3339
[LocationCompleter("Microsoft.Resources/resourceGroups")]
3440
[ValidateNotNullOrEmpty]
@@ -40,6 +46,7 @@ protected override void OnProcessRecord()
4046
{
4147
ScopeType = DeploymentScopeType.Subscription,
4248
Location = Location,
49+
DeploymentName = this.Name,
4350
TemplateFile = TemplateUri ?? this.TryResolvePath(TemplateFile),
4451
TemplateObject = TemplateObject,
4552
QueryString = QueryString,

src/Resources/ResourceManager/Implementation/Deployments/TestAzureTenantDeploymentCmdlet.cs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,12 @@ namespace Microsoft.Azure.Commands.ResourceManager.Cmdlets.Implementation
2929
DefaultParameterSetName = ParameterlessTemplateFileParameterSetName), OutputType(typeof(PSResourceManagerError))]
3030
public class TestAzureTenantDeploymentCmdlet : TestDeploymentCmdletBase
3131
{
32+
[Alias("DeploymentName")]
33+
[Parameter(Mandatory = false,
34+
HelpMessage = "The name of the deployment it's going to test. If not specified, defaults to the template file name when a template file is provided")]
35+
[ValidateNotNullOrEmpty]
36+
public string Name { get; set; }
37+
3238
[Parameter(Mandatory = true, HelpMessage = "The location to store deployment data.")]
3339
[LocationCompleter("Microsoft.Resources/resourceGroups")]
3440
[ValidateNotNullOrEmpty]
@@ -40,6 +46,7 @@ protected override void OnProcessRecord()
4046
{
4147
ScopeType = DeploymentScopeType.Tenant,
4248
Location = this.Location,
49+
DeploymentName = this.Name,
4350
TemplateFile = this.TemplateUri ?? this.TryResolvePath(this.TemplateFile),
4451
TemplateObject = this.TemplateObject,
4552
QueryString = QueryString,

src/Resources/ResourceManager/SdkClient/ResourceManagerSdkClient.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1671,7 +1671,9 @@ private void CancelDeploymentAtResourceGroup(List<PSDeployment> deployments, str
16711671
/// <returns>The validation errors if there's any, or empty list otherwise.</returns>
16721672
public virtual List<PSResourceManagerError> ValidateDeployment(PSDeploymentCmdletParameters parameters)
16731673
{
1674-
parameters.DeploymentName = GenerateDeploymentName(parameters);
1674+
if (parameters.DeploymentName == null){
1675+
parameters.DeploymentName = GenerateDeploymentName(parameters);
1676+
}
16751677
Deployment deployment = CreateBasicDeployment(parameters, parameters.DeploymentMode, null);
16761678

16771679
var validationInfo = this.GetTemplateValidationResult(parameters, deployment);

src/Resources/Resources/ChangeLog.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
-->
2020

2121
## Upcoming Release
22+
* Allow naming the deployment when testing deployments [#11497]
2223

2324
## Version 4.1.0
2425
* Changed `-IdentifierUris` in `New-AzADApplication` to optional parameter

src/Resources/Resources/help/Test-AzManagementGroupDeployment.md

Lines changed: 70 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -14,107 +14,114 @@ Validates a deployment at a management group.
1414

1515
### ByTemplateFileWithNoParameters (Default)
1616
```
17-
Test-AzManagementGroupDeployment -ManagementGroupId <String> -Location <String> [-QueryString <String>]
18-
-TemplateFile <String> [-SkipTemplateParameterPrompt] [-Pre] [-DefaultProfile <IAzureContextContainer>]
19-
[<CommonParameters>]
17+
Test-AzManagementGroupDeployment [-Name <String>] -ManagementGroupId <String> -Location <String>
18+
[-QueryString <String>] -TemplateFile <String> [-SkipTemplateParameterPrompt] [-Pre]
19+
[-DefaultProfile <IAzureContextContainer>] [<CommonParameters>]
2020
```
2121

2222
### ByTemplateObjectAndParameterObject
2323
```
24-
Test-AzManagementGroupDeployment -ManagementGroupId <String> -Location <String> [-QueryString <String>]
25-
-TemplateParameterObject <Hashtable> -TemplateObject <Hashtable> [-SkipTemplateParameterPrompt] [-Pre]
26-
[-DefaultProfile <IAzureContextContainer>] [<CommonParameters>]
24+
Test-AzManagementGroupDeployment [-Name <String>] -ManagementGroupId <String> -Location <String>
25+
[-QueryString <String>] -TemplateParameterObject <Hashtable> -TemplateObject <Hashtable>
26+
[-SkipTemplateParameterPrompt] [-Pre] [-DefaultProfile <IAzureContextContainer>] [<CommonParameters>]
2727
```
2828

2929
### ByTemplateFileAndParameterObject
3030
```
31-
Test-AzManagementGroupDeployment -ManagementGroupId <String> -Location <String> [-QueryString <String>]
32-
-TemplateParameterObject <Hashtable> -TemplateFile <String> [-SkipTemplateParameterPrompt] [-Pre]
33-
[-DefaultProfile <IAzureContextContainer>] [<CommonParameters>]
31+
Test-AzManagementGroupDeployment [-Name <String>] -ManagementGroupId <String> -Location <String>
32+
[-QueryString <String>] -TemplateParameterObject <Hashtable> -TemplateFile <String>
33+
[-SkipTemplateParameterPrompt] [-Pre] [-DefaultProfile <IAzureContextContainer>] [<CommonParameters>]
3434
```
3535

3636
### ByTemplateUriAndParameterObject
3737
```
38-
Test-AzManagementGroupDeployment -ManagementGroupId <String> -Location <String> [-QueryString <String>]
39-
-TemplateParameterObject <Hashtable> -TemplateUri <String> [-SkipTemplateParameterPrompt] [-Pre]
40-
[-DefaultProfile <IAzureContextContainer>] [<CommonParameters>]
38+
Test-AzManagementGroupDeployment [-Name <String>] -ManagementGroupId <String> -Location <String>
39+
[-QueryString <String>] -TemplateParameterObject <Hashtable> -TemplateUri <String>
40+
[-SkipTemplateParameterPrompt] [-Pre] [-DefaultProfile <IAzureContextContainer>] [<CommonParameters>]
41+
```
42+
43+
### ByTemplateSpecResourceIdAndParamsObject
44+
```
45+
Test-AzManagementGroupDeployment [-Name <String>] -ManagementGroupId <String> -Location <String>
46+
[-QueryString <String>] -TemplateParameterObject <Hashtable> -TemplateSpecId <String>
47+
[-SkipTemplateParameterPrompt] [-Pre] [-DefaultProfile <IAzureContextContainer>] [<CommonParameters>]
4148
```
4249

4350
### ByTemplateObjectAndParameterFile
4451
```
45-
Test-AzManagementGroupDeployment -ManagementGroupId <String> -Location <String> [-QueryString <String>]
46-
-TemplateParameterFile <String> -TemplateObject <Hashtable> [-SkipTemplateParameterPrompt] [-Pre]
47-
[-DefaultProfile <IAzureContextContainer>] [<CommonParameters>]
52+
Test-AzManagementGroupDeployment [-Name <String>] -ManagementGroupId <String> -Location <String>
53+
[-QueryString <String>] -TemplateParameterFile <String> -TemplateObject <Hashtable>
54+
[-SkipTemplateParameterPrompt] [-Pre] [-DefaultProfile <IAzureContextContainer>] [<CommonParameters>]
4855
```
4956

5057
### ByTemplateFileAndParameterFile
5158
```
52-
Test-AzManagementGroupDeployment -ManagementGroupId <String> -Location <String> [-QueryString <String>]
53-
-TemplateParameterFile <String> -TemplateFile <String> [-SkipTemplateParameterPrompt] [-Pre]
54-
[-DefaultProfile <IAzureContextContainer>] [<CommonParameters>]
59+
Test-AzManagementGroupDeployment [-Name <String>] -ManagementGroupId <String> -Location <String>
60+
[-QueryString <String>] -TemplateParameterFile <String> -TemplateFile <String> [-SkipTemplateParameterPrompt]
61+
[-Pre] [-DefaultProfile <IAzureContextContainer>] [<CommonParameters>]
5562
```
5663

5764
### ByTemplateUriAndParameterFile
5865
```
59-
Test-AzManagementGroupDeployment -ManagementGroupId <String> -Location <String> [-QueryString <String>]
60-
-TemplateParameterFile <String> -TemplateUri <String> [-SkipTemplateParameterPrompt] [-Pre]
61-
[-DefaultProfile <IAzureContextContainer>] [<CommonParameters>]
66+
Test-AzManagementGroupDeployment [-Name <String>] -ManagementGroupId <String> -Location <String>
67+
[-QueryString <String>] -TemplateParameterFile <String> -TemplateUri <String> [-SkipTemplateParameterPrompt]
68+
[-Pre] [-DefaultProfile <IAzureContextContainer>] [<CommonParameters>]
6269
```
6370

6471
### ByTemplateSpecResourceIdAndParams
6572
```
66-
Test-AzManagementGroupDeployment -ManagementGroupId <String> -Location <String> [-QueryString <String>]
67-
-TemplateParameterFile <String> -TemplateSpecId <String> [-SkipTemplateParameterPrompt] [-Pre]
68-
[-DefaultProfile <IAzureContextContainer>] [<CommonParameters>]
73+
Test-AzManagementGroupDeployment [-Name <String>] -ManagementGroupId <String> -Location <String>
74+
[-QueryString <String>] -TemplateParameterFile <String> -TemplateSpecId <String>
75+
[-SkipTemplateParameterPrompt] [-Pre] [-DefaultProfile <IAzureContextContainer>] [<CommonParameters>]
6976
```
7077

7178
### ByTemplateObjectAndParameterUri
7279
```
73-
Test-AzManagementGroupDeployment -ManagementGroupId <String> -Location <String> [-QueryString <String>]
74-
-TemplateParameterUri <String> -TemplateObject <Hashtable> [-SkipTemplateParameterPrompt] [-Pre]
75-
[-DefaultProfile <IAzureContextContainer>] [<CommonParameters>]
80+
Test-AzManagementGroupDeployment [-Name <String>] -ManagementGroupId <String> -Location <String>
81+
[-QueryString <String>] -TemplateParameterUri <String> -TemplateObject <Hashtable>
82+
[-SkipTemplateParameterPrompt] [-Pre] [-DefaultProfile <IAzureContextContainer>] [<CommonParameters>]
7683
```
7784

7885
### ByTemplateFileAndParameterUri
7986
```
80-
Test-AzManagementGroupDeployment -ManagementGroupId <String> -Location <String> [-QueryString <String>]
81-
-TemplateParameterUri <String> -TemplateFile <String> [-SkipTemplateParameterPrompt] [-Pre]
82-
[-DefaultProfile <IAzureContextContainer>] [<CommonParameters>]
87+
Test-AzManagementGroupDeployment [-Name <String>] -ManagementGroupId <String> -Location <String>
88+
[-QueryString <String>] -TemplateParameterUri <String> -TemplateFile <String> [-SkipTemplateParameterPrompt]
89+
[-Pre] [-DefaultProfile <IAzureContextContainer>] [<CommonParameters>]
8390
```
8491

8592
### ByTemplateUriAndParameterUri
8693
```
87-
Test-AzManagementGroupDeployment -ManagementGroupId <String> -Location <String> [-QueryString <String>]
88-
-TemplateParameterUri <String> -TemplateUri <String> [-SkipTemplateParameterPrompt] [-Pre]
89-
[-DefaultProfile <IAzureContextContainer>] [<CommonParameters>]
94+
Test-AzManagementGroupDeployment [-Name <String>] -ManagementGroupId <String> -Location <String>
95+
[-QueryString <String>] -TemplateParameterUri <String> -TemplateUri <String> [-SkipTemplateParameterPrompt]
96+
[-Pre] [-DefaultProfile <IAzureContextContainer>] [<CommonParameters>]
9097
```
9198

9299
### ByTemplateSpecResourceIdAndParamsUri
93100
```
94-
Test-AzManagementGroupDeployment -ManagementGroupId <String> -Location <String> [-QueryString <String>]
95-
-TemplateParameterUri <String> -TemplateSpecId <String> [-SkipTemplateParameterPrompt] [-Pre]
96-
[-DefaultProfile <IAzureContextContainer>] [<CommonParameters>]
101+
Test-AzManagementGroupDeployment [-Name <String>] -ManagementGroupId <String> -Location <String>
102+
[-QueryString <String>] -TemplateParameterUri <String> -TemplateSpecId <String> [-SkipTemplateParameterPrompt]
103+
[-Pre] [-DefaultProfile <IAzureContextContainer>] [<CommonParameters>]
97104
```
98105

99106
### ByTemplateObjectWithNoParameters
100107
```
101-
Test-AzManagementGroupDeployment -ManagementGroupId <String> -Location <String> [-QueryString <String>]
102-
-TemplateObject <Hashtable> [-SkipTemplateParameterPrompt] [-Pre] [-DefaultProfile <IAzureContextContainer>]
103-
[<CommonParameters>]
108+
Test-AzManagementGroupDeployment [-Name <String>] -ManagementGroupId <String> -Location <String>
109+
[-QueryString <String>] -TemplateObject <Hashtable> [-SkipTemplateParameterPrompt] [-Pre]
110+
[-DefaultProfile <IAzureContextContainer>] [<CommonParameters>]
104111
```
105112

106113
### ByTemplateUriWithNoParameters
107114
```
108-
Test-AzManagementGroupDeployment -ManagementGroupId <String> -Location <String> [-QueryString <String>]
109-
-TemplateUri <String> [-SkipTemplateParameterPrompt] [-Pre] [-DefaultProfile <IAzureContextContainer>]
110-
[<CommonParameters>]
115+
Test-AzManagementGroupDeployment [-Name <String>] -ManagementGroupId <String> -Location <String>
116+
[-QueryString <String>] -TemplateUri <String> [-SkipTemplateParameterPrompt] [-Pre]
117+
[-DefaultProfile <IAzureContextContainer>] [<CommonParameters>]
111118
```
112119

113120
### ByTemplateSpecResourceId
114121
```
115-
Test-AzManagementGroupDeployment -ManagementGroupId <String> -Location <String> [-QueryString <String>]
116-
-TemplateSpecId <String> [-SkipTemplateParameterPrompt] [-Pre] [-DefaultProfile <IAzureContextContainer>]
117-
[<CommonParameters>]
122+
Test-AzManagementGroupDeployment [-Name <String>] -ManagementGroupId <String> -Location <String>
123+
[-QueryString <String>] -TemplateSpecId <String> [-SkipTemplateParameterPrompt] [-Pre]
124+
[-DefaultProfile <IAzureContextContainer>] [<CommonParameters>]
118125
```
119126

120127
## DESCRIPTION
@@ -185,6 +192,21 @@ Accept pipeline input: False
185192
Accept wildcard characters: False
186193
```
187194
195+
### -Name
196+
The name of the deployment it's going to test. If not specified, defaults to the template file name when a template file is provided
197+
198+
```yaml
199+
Type: System.String
200+
Parameter Sets: (All)
201+
Aliases: DeploymentName
202+
203+
Required: False
204+
Position: Named
205+
Default value: None
206+
Accept pipeline input: False
207+
Accept wildcard characters: False
208+
```
209+
188210
### -Pre
189211
When set, indicates that the cmdlet should use pre-release API versions when automatically determining which version to use.
190212
@@ -282,7 +304,7 @@ A hash table which represents the parameters.
282304
283305
```yaml
284306
Type: System.Collections.Hashtable
285-
Parameter Sets: ByTemplateObjectAndParameterObject, ByTemplateFileAndParameterObject, ByTemplateUriAndParameterObject
307+
Parameter Sets: ByTemplateObjectAndParameterObject, ByTemplateFileAndParameterObject, ByTemplateUriAndParameterObject, ByTemplateSpecResourceIdAndParamsObject
286308
Aliases:
287309

288310
Required: True
@@ -312,7 +334,7 @@ Resource ID of the templateSpec to be deployed.
312334
313335
```yaml
314336
Type: System.String
315-
Parameter Sets: ByTemplateSpecResourceIdAndParams, ByTemplateSpecResourceIdAndParamsUri, ByTemplateSpecResourceId
337+
Parameter Sets: ByTemplateSpecResourceIdAndParamsObject, ByTemplateSpecResourceIdAndParams, ByTemplateSpecResourceIdAndParamsUri, ByTemplateSpecResourceId
316338
Aliases:
317339

318340
Required: True
@@ -352,4 +374,4 @@ This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable
352374
353375
## NOTES
354376
355-
## RELATED LINKS
377+
## RELATED LINKS

0 commit comments

Comments
 (0)