Skip to content

Commit 923e518

Browse files
committed
few parameter names changed, new parameter -TemplateParameterObject added and few other fixes
1 parent 15f8462 commit 923e518

File tree

7 files changed

+187
-48
lines changed

7 files changed

+187
-48
lines changed

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

Lines changed: 24 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -90,10 +90,30 @@ protected Hashtable GetParameterObject(string parameterFile)
9090
return parameters;
9191
}
9292

93-
/// <summary>
94-
/// Unregisters delegating handler if registered.
95-
/// </summary>
96-
protected void UnregisterDelegatingHandlerIfRegistered()
93+
protected Hashtable GetTemplateParameterObject(Hashtable templateParameterObject)
94+
{
95+
//create a new Hashtable so that user can re-use the templateParameterObject.
96+
var parameterObject = new Hashtable();
97+
foreach (var parameterKey in templateParameterObject.Keys)
98+
{
99+
// Let default behavior of a value parameter if not a KeyVault reference Hashtable
100+
var hashtableParameter = templateParameterObject[parameterKey] as Hashtable;
101+
if (hashtableParameter != null && hashtableParameter.ContainsKey("reference"))
102+
{
103+
parameterObject[parameterKey] = templateParameterObject[parameterKey];
104+
}
105+
else
106+
{
107+
parameterObject[parameterKey] = new Hashtable { { "value", templateParameterObject[parameterKey] } };
108+
}
109+
}
110+
return parameterObject;
111+
}
112+
113+
/// <summary>
114+
/// Unregisters delegating handler if registered.
115+
/// </summary>
116+
protected void UnregisterDelegatingHandlerIfRegistered()
97117
{
98118
var apiExpandHandler = GetStacksHandler();
99119

src/Resources/ResourceManager/Implementation/DeploymentStacks/NewAzResourceGroupDeploymentStack.cs

Lines changed: 43 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,10 @@ public class NewAzResourceGroupDeploymentStack : DeploymentStacksCmdletBase
4545
internal const string ParameterUriTemplateUriParameterSetName = "ByTemplateUriWithParameterUri";
4646
internal const string ParameterUriTemplateSpecParameterSetName = "ByTemplateSpecWithParameterUri";
4747

48+
internal const string ParameterObjectTemplateFileParameterSetName = "ByTemplateFileWithParameterObject";
49+
internal const string ParameterObjectTemplateUriParameterSetName = "ByTemplateUriWithParameterObject";
50+
internal const string ParameterObjectTemplateSpecParameterSetName = "ByTemplateSpecWithParameterObject";
51+
4852
[Flags]
4953
public enum updateBehvaiorEnum { detachResources, purgeResources }
5054

@@ -64,6 +68,8 @@ public enum updateBehvaiorEnum { detachResources, purgeResources }
6468
Mandatory = true, ValueFromPipelineByPropertyName = true, HelpMessage = "TemplateFile to be used to create the stack")]
6569
[Parameter(Position = 2, ParameterSetName = ParameterUriTemplateFileParameterSetName,
6670
Mandatory = true, ValueFromPipelineByPropertyName = true, HelpMessage = "TemplateFile to be used to create the stack")]
71+
[Parameter(Position = 2, ParameterSetName = ParameterObjectTemplateFileParameterSetName,
72+
Mandatory = true, ValueFromPipelineByPropertyName = true, HelpMessage = "TemplateFile to be used to create the stack")]
6773
[Parameter(Position = 2, ParameterSetName = ParameterlessTemplateFileParameterSetName,
6874
Mandatory = true, ValueFromPipelineByPropertyName = true, HelpMessage = "TemplateFile to be used to create the stack")]
6975
public string TemplateFile { get; set; }
@@ -72,6 +78,8 @@ public enum updateBehvaiorEnum { detachResources, purgeResources }
7278
Mandatory = true, ValueFromPipelineByPropertyName = true, HelpMessage = "Location of the Template to be used to create the stack")]
7379
[Parameter(Position = 2, ParameterSetName = ParameterUriTemplateUriParameterSetName,
7480
Mandatory = true, ValueFromPipelineByPropertyName = true, HelpMessage = "Location of the Template to be used to create the stack")]
81+
[Parameter(Position = 2, ParameterSetName = ParameterObjectTemplateUriParameterSetName,
82+
Mandatory = true, ValueFromPipelineByPropertyName = true, HelpMessage = "Location of the Template to be used to create the stack")]
7583
[Parameter(Position = 2, ParameterSetName = ParameterlessTemplateUriParameterSetName,
7684
Mandatory = true, ValueFromPipelineByPropertyName = true, HelpMessage = "Location of the Template to be used to create the stack")]
7785
public string TemplateUri { get; set; }
@@ -80,6 +88,8 @@ public enum updateBehvaiorEnum { detachResources, purgeResources }
8088
Mandatory = true, ValueFromPipelineByPropertyName = true, HelpMessage = "ResourceId of the TemplateSpec to be used to create the stack")]
8189
[Parameter(Position = 2, ParameterSetName = ParameterUriTemplateSpecParameterSetName,
8290
Mandatory = true, ValueFromPipelineByPropertyName = true, HelpMessage = "ResourceId of the TemplateSpec to be used to create the stack")]
91+
[Parameter(Position = 2, ParameterSetName = ParameterObjectTemplateSpecParameterSetName,
92+
Mandatory = true, ValueFromPipelineByPropertyName = true, HelpMessage = "ResourceId of the TemplateSpec to be used to create the stack")]
8393
[Parameter(Position = 2, ParameterSetName = ParameterlessTemplateSpecParameterSetName,
8494
Mandatory = true, ValueFromPipelineByPropertyName = true, HelpMessage = "ResourceId of the TemplateSpec to be used to create the stack")]
8595
public string TemplateSpecId { get; set; }
@@ -90,15 +100,23 @@ public enum updateBehvaiorEnum { detachResources, purgeResources }
90100
Mandatory = true, ValueFromPipelineByPropertyName = true, HelpMessage = "Parameter file to use for the template")]
91101
[Parameter(Position = 3, ParameterSetName = ParameterFileTemplateSpecParameterSetName,
92102
Mandatory = true, ValueFromPipelineByPropertyName = true, HelpMessage = "Parameter file to use for the template")]
93-
public string ParameterFile { get; set; }
103+
public string TemplateParameterFile { get; set; }
94104

95105
[Parameter(Position = 3, ParameterSetName = ParameterUriTemplateFileParameterSetName,
96106
Mandatory = true, ValueFromPipelineByPropertyName = true, HelpMessage = "Location of the Parameter file to use for the template")]
97107
[Parameter(Position = 3, ParameterSetName = ParameterUriTemplateUriParameterSetName,
98108
Mandatory = true, ValueFromPipelineByPropertyName = true, HelpMessage = "Location of the Parameter file to use for the template")]
99109
[Parameter(Position = 3, ParameterSetName = ParameterUriTemplateSpecParameterSetName,
100110
Mandatory = true, ValueFromPipelineByPropertyName = true, HelpMessage = "Location of the Parameter file to use for the template")]
101-
public string ParameterUri { get; set; }
111+
public string TemplateParameterUri { get; set; }
112+
113+
[Parameter(ParameterSetName = ParameterObjectTemplateFileParameterSetName,
114+
Mandatory = true, ValueFromPipelineByPropertyName = true, HelpMessage = "A hash table which represents the parameters.")]
115+
[Parameter(ParameterSetName = ParameterObjectTemplateUriParameterSetName,
116+
Mandatory = true, ValueFromPipelineByPropertyName = true, HelpMessage = "A hash table which represents the parameters.")]
117+
[Parameter(ParameterSetName = ParameterObjectTemplateSpecParameterSetName,
118+
Mandatory = true, ValueFromPipelineByPropertyName = true, HelpMessage = "A hash table which represents the parameters.")]
119+
public Hashtable TemplateParameterObject { get; set; }
102120

103121
[Parameter(Mandatory = false, ValueFromPipelineByPropertyName = true,
104122
HelpMessage = "Description for the stack")]
@@ -108,10 +126,6 @@ public enum updateBehvaiorEnum { detachResources, purgeResources }
108126
HelpMessage = "Update behavior for the stack. Value can be detachResources or failedResources.")]
109127
public updateBehvaiorEnum UpdateBehavior { get; set; }
110128

111-
[Parameter(Mandatory = false,
112-
HelpMessage = "The scope at which the initial deployment should be created. If a scope isn't specified, it will default to the scope of the deployment stack.")]
113-
public string DeploymentScope { get; set; }
114-
115129
[Parameter(Mandatory = false,
116130
HelpMessage = "Do not ask for confirmation when overwriting an existing stack.")]
117131
public SwitchParameter Force { get; set; }
@@ -128,11 +142,12 @@ public override void ExecuteCmdlet()
128142
try
129143
{
130144
Hashtable parameters = new Hashtable();
145+
string filePath = "";
131146
switch (ParameterSetName)
132147
{
133148
case ParameterlessTemplateFileParameterSetName:
134149
case ParameterUriTemplateFileParameterSetName:
135-
string filePath = this.TryResolvePath(TemplateFile);
150+
filePath = this.TryResolvePath(TemplateFile);
136151
if(!File.Exists(filePath))
137152
{
138153
throw new PSInvalidOperationException(
@@ -142,17 +157,31 @@ public override void ExecuteCmdlet()
142157
break;
143158
case ParameterFileTemplateSpecParameterSetName:
144159
case ParameterFileTemplateUriParameterSetName:
145-
parameters = this.GetParameterObject(ParameterFile);
160+
parameters = this.GetParameterObject(TemplateParameterFile);
146161
break;
147162
case ParameterFileTemplateFileParameterSetName:
148-
string templatePath = this.TryResolvePath(TemplateFile);
149-
if (!File.Exists(templatePath))
163+
filePath = this.TryResolvePath(TemplateFile);
164+
if (!File.Exists(filePath))
150165
{
151166
throw new PSInvalidOperationException(
152167
string.Format(ProjectResources.InvalidFilePath, TemplateFile));
153168
}
154-
parameters = this.GetParameterObject(ParameterFile);
155-
TemplateUri = templatePath;
169+
parameters = this.GetParameterObject(TemplateParameterFile);
170+
TemplateUri = filePath;
171+
break;
172+
case ParameterObjectTemplateFileParameterSetName:
173+
filePath = this.TryResolvePath(TemplateFile);
174+
if (!File.Exists(filePath))
175+
{
176+
throw new PSInvalidOperationException(
177+
string.Format(ProjectResources.InvalidFilePath, TemplateFile));
178+
}
179+
TemplateUri = filePath;
180+
parameters = GetTemplateParameterObject(TemplateParameterObject);
181+
break;
182+
case ParameterObjectTemplateSpecParameterSetName:
183+
case ParameterObjectTemplateUriParameterSetName:
184+
parameters = GetTemplateParameterObject(TemplateParameterObject);
156185
break;
157186
}
158187

@@ -163,11 +192,10 @@ public override void ExecuteCmdlet()
163192
ResourceGroupName,
164193
TemplateUri,
165194
TemplateSpecId,
166-
ParameterUri,
195+
TemplateParameterUri,
167196
parameters,
168197
Description,
169-
(UpdateBehavior.ToString() == "detachResources") ? "detach" : "purge",
170-
DeploymentScope
198+
(UpdateBehavior.ToString() == "detachResources") ? "detach" : "purge"
171199
);
172200
WriteObject(deploymentStack);
173201
};

0 commit comments

Comments
 (0)