Skip to content

Commit 3dd6f8a

Browse files
committed
dsc node configuration cmdlets
1 parent 5c7e45a commit 3dd6f8a

11 files changed

+286
-24
lines changed

src/ResourceManager/Automation/Commands.Automation/Cmdlet/GetAzureAutomationDscCompilationJob.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ namespace Microsoft.Azure.Commands.Automation.Cmdlet
2727
/// Gets Azure automation compilation job
2828
/// </summary>
2929
[Cmdlet(VerbsCommon.Get, "AzureAutomationDscCompilationJob", DefaultParameterSetName = AutomationCmdletParameterSets.ByAll)]
30-
[OutputType(typeof(DscCompilationJob))]
30+
[OutputType(typeof(CompilationJob))]
3131
public class GetAzureAutomationDscCompilationJob : AzureAutomationBaseCmdlet
3232
{
3333
/// <summary>
@@ -79,12 +79,12 @@ public class GetAzureAutomationDscCompilationJob : AzureAutomationBaseCmdlet
7979
[PermissionSet(SecurityAction.Demand, Name = "FullTrust")]
8080
protected override void AutomationExecuteCmdlet()
8181
{
82-
IEnumerable<DscCompilationJob> jobs;
82+
IEnumerable<CompilationJob> jobs;
8383

8484
if (this.Id != null && !Guid.Empty.Equals(this.Id))
8585
{
8686
// ByJobId
87-
jobs = new List<DscCompilationJob> { this.AutomationClient.GetCompilationJob(this.ResourceGroupName, this.AutomationAccountName, this.Id) };
87+
jobs = new List<CompilationJob> { this.AutomationClient.GetCompilationJob(this.ResourceGroupName, this.AutomationAccountName, this.Id) };
8888
}
8989
else if (this.ConfigurationName != null)
9090
{
Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
// ----------------------------------------------------------------------------------
2+
//
3+
// Copyright Microsoft Corporation
4+
// Licensed under the Apache License, Version 2.0 (the "License");
5+
// you may not use this file except in compliance with the License.
6+
// You may obtain a copy of the License at
7+
// http://www.apache.org/licenses/LICENSE-2.0
8+
// Unless required by applicable law or agreed to in writing, software
9+
// distributed under the License is distributed on an "AS IS" BASIS,
10+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11+
// See the License for the specific language governing permissions and
12+
// limitations under the License.
13+
// ----------------------------------------------------------------------------------
14+
15+
using System;
16+
using System.Collections;
17+
using System.Collections.Generic;
18+
using System.Management.Automation;
19+
using System.Security.Permissions;
20+
using Microsoft.Azure.Commands.Automation.Common;
21+
using Microsoft.Azure.Commands.Automation.Model;
22+
using Microsoft.WindowsAzure.Commands.Utilities.Common;
23+
24+
namespace Microsoft.Azure.Commands.Automation.Cmdlet
25+
{
26+
/// <summary>
27+
/// Gets Azure automation node configurations
28+
/// </summary>
29+
[Cmdlet(VerbsCommon.Get, "AzureAutomationDscNodeConfiguration", DefaultParameterSetName = AutomationCmdletParameterSets.ByAll)]
30+
[OutputType(typeof(CompilationJob))]
31+
public class GetAzureAutomationDscNodeConfiguration : AzureAutomationBaseCmdlet
32+
{
33+
/// <summary>
34+
/// Gets or sets the automation account name.
35+
/// </summary>
36+
[Parameter(Mandatory = true, ValueFromPipelineByPropertyName = true, HelpMessage = "The automation account name.")]
37+
[ValidateNotNullOrEmpty]
38+
public string AutomationAccountName { get; set; }
39+
40+
/// <summary>
41+
/// Gets or sets the job id.
42+
/// </summary>
43+
[Parameter(ParameterSetName = AutomationCmdletParameterSets.ByNodeConfigurationName, Mandatory = true, ValueFromPipelineByPropertyName = true, HelpMessage = "The dsc node configuration name.")]
44+
[Alias("NodeConfigurationName")]
45+
public string Name { get; set; }
46+
47+
/// <summary>
48+
/// Gets or sets the runbook name of the job.
49+
/// </summary>
50+
[Parameter(ParameterSetName = AutomationCmdletParameterSets.ByConfigurationName, Mandatory = true, HelpMessage = "The configuration name.")]
51+
public string ConfigurationName { get; set; }
52+
53+
/// <summary>
54+
/// Execute this cmdlet.
55+
/// </summary>
56+
[PermissionSet(SecurityAction.Demand, Name = "FullTrust")]
57+
protected override void AutomationExecuteCmdlet()
58+
{
59+
IEnumerable<NodeConfiguration> nodeConfigurations;
60+
61+
if (this.Name != null && !Guid.Empty.Equals(this.Name))
62+
{
63+
// ByJobId
64+
nodeConfigurations = new List<NodeConfiguration> { this.AutomationClient.GetNodeConfiguration(this.ResourceGroupName, this.AutomationAccountName, this.Name) };
65+
}
66+
else if (this.ConfigurationName != null)
67+
{
68+
// ByConfiguration
69+
nodeConfigurations = this.AutomationClient.ListNodeConfigurationsByConfigurationName(this.ResourceGroupName, this.AutomationAccountName, this.ConfigurationName);
70+
}
71+
else
72+
{
73+
// ByAll
74+
nodeConfigurations = this.AutomationClient.ListNodeConfigurations(this.ResourceGroupName, this.AutomationAccountName);
75+
}
76+
77+
this.WriteObject(nodeConfigurations, true);
78+
}
79+
}
80+
}

src/ResourceManager/Automation/Commands.Automation/Cmdlet/StartAzureAutomationDscCompilationJob.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ namespace Microsoft.Azure.Commands.Automation.Cmdlet
2626
/// starts azure automation compilation job
2727
/// </summary>
2828
[Cmdlet(VerbsLifecycle.Start, "AzureAutomationDscCompilationJob", DefaultParameterSetName = AutomationCmdletParameterSets.ByConfigurationName)]
29-
[OutputType(typeof(DscCompilationJob))]
29+
[OutputType(typeof(CompilationJob))]
3030
public class StartAzureAutomationDscCompilationJob : AzureAutomationBaseCmdlet
3131
{
3232
/// <summary>
@@ -54,7 +54,7 @@ public class StartAzureAutomationDscCompilationJob : AzureAutomationBaseCmdlet
5454
[PermissionSet(SecurityAction.Demand, Name = "FullTrust")]
5555
protected override void AutomationExecuteCmdlet()
5656
{
57-
DscCompilationJob job = null;
57+
CompilationJob job = null;
5858

5959
job = this.AutomationClient.StartCompilationJob(this.ResourceGroupName, this.AutomationAccountName, this.ConfigurationName, this.Parameters);
6060

src/ResourceManager/Automation/Commands.Automation/Commands.ResourceManagement.Automation.csproj

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,7 @@
118118
<Compile Include="Cmdlet\AzureAutomationBaseCmdlet.cs" />
119119
<Compile Include="Cmdlet\GetAzureAutomationDscCompilationJob.cs" />
120120
<Compile Include="Cmdlet\GetAzureAutomationDscCompilationJobOutput.cs" />
121+
<Compile Include="Cmdlet\GetAzureAutomationDscNodeConfiguration.cs" />
121122
<Compile Include="Cmdlet\StartAzureAutomationDscCompilationJob.cs" />
122123
<Compile Include="Cmdlet\GetAzureAutomationAgentRegistrationInformation.cs" />
123124
<Compile Include="Cmdlet\GetAzureAutomationConfiguration.cs" />
@@ -145,9 +146,10 @@
145146
<Compile Include="DataContract\OdataErrorMessage.cs" />
146147
<Compile Include="Model\AgentRegistration.cs" />
147148
<Compile Include="Model\AutomationAccount.cs" />
148-
<Compile Include="Model\DscCompilationJob.cs" />
149+
<Compile Include="Model\CompilationJob.cs" />
149150
<Compile Include="Model\Configuration.cs" />
150151
<Compile Include="Model\JobStream.cs" />
152+
<Compile Include="Model\NodeConfiguration.cs" />
151153
<Compile Include="Properties\AssemblyInfo.cs" />
152154
<Compile Include="Properties\Resources.Designer.cs">
153155
<AutoGen>True</AutoGen>

src/ResourceManager/Automation/Commands.Automation/Common/AutomationClientDSC.cs

Lines changed: 72 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -164,7 +164,7 @@ public Model.AgentRegistration NewAgentRegistrationKey(
164164

165165
#region compilationjob
166166

167-
public Model.DscCompilationJob GetCompilationJob(string resourceGroupName, string automationAccountName, Guid Id)
167+
public Model.CompilationJob GetCompilationJob(string resourceGroupName, string automationAccountName, Guid Id)
168168
{
169169
using (var request = new RequestSettings(this.automationManagementClient))
170170
{
@@ -175,11 +175,11 @@ public Model.DscCompilationJob GetCompilationJob(string resourceGroupName, strin
175175
string.Format(CultureInfo.CurrentCulture, Resources.CompilationJobNotFound, Id));
176176
}
177177

178-
return new Model.DscCompilationJob(automationAccountName, job);
178+
return new Model.CompilationJob(automationAccountName, job);
179179
}
180180
}
181181

182-
public IEnumerable<Model.DscCompilationJob> ListCompilationJobsByConfigurationName(string resourceGroupName, string automationAccountName, string configurationName, DateTimeOffset? startTime, DateTimeOffset? endTime, string jobStatus)
182+
public IEnumerable<Model.CompilationJob> ListCompilationJobsByConfigurationName(string resourceGroupName, string automationAccountName, string configurationName, DateTimeOffset? startTime, DateTimeOffset? endTime, string jobStatus)
183183
{
184184
using (var request = new RequestSettings(this.automationManagementClient))
185185
{
@@ -257,11 +257,11 @@ public Model.DscCompilationJob GetCompilationJob(string resourceGroupName, strin
257257
});
258258
}
259259

260-
return jobModels.Select(jobModel => new Commands.Automation.Model.DscCompilationJob(automationAccountName, jobModel));
260+
return jobModels.Select(jobModel => new Commands.Automation.Model.CompilationJob(automationAccountName, jobModel));
261261
}
262262
}
263263

264-
public IEnumerable<Model.DscCompilationJob> ListCompilationJobs(string resourceGroupName, string automationAccountName, DateTimeOffset? startTime, DateTimeOffset? endTime, string jobStatus)
264+
public IEnumerable<Model.CompilationJob> ListCompilationJobs(string resourceGroupName, string automationAccountName, DateTimeOffset? startTime, DateTimeOffset? endTime, string jobStatus)
265265
{
266266
using (var request = new RequestSettings(this.automationManagementClient))
267267
{
@@ -332,11 +332,11 @@ public Model.DscCompilationJob GetCompilationJob(string resourceGroupName, strin
332332
});
333333
}
334334

335-
return jobModels.Select(jobModel => new Model.DscCompilationJob(automationAccountName, jobModel));
335+
return jobModels.Select(jobModel => new Model.CompilationJob(automationAccountName, jobModel));
336336
}
337337
}
338338

339-
public Model.DscCompilationJob StartCompilationJob(string resourceGroupName, string automationAccountName, string configurationName, IDictionary parameters)
339+
public Model.CompilationJob StartCompilationJob(string resourceGroupName, string automationAccountName, string configurationName, IDictionary parameters)
340340
{
341341
using (var request = new RequestSettings(this.automationManagementClient))
342342
{
@@ -354,7 +354,7 @@ public Model.DscCompilationJob StartCompilationJob(string resourceGroupName, str
354354

355355
var job = this.automationManagementClient.CompilationJobs.Create(resourceGroupName, automationAccountName, createJobParameters);
356356

357-
return new Model.DscCompilationJob(automationAccountName, job.DscCompilationJob);
357+
return new Model.CompilationJob(automationAccountName, job.DscCompilationJob);
358358
}
359359
}
360360

@@ -381,6 +381,70 @@ public Model.DscCompilationJob StartCompilationJob(string resourceGroupName, str
381381

382382
#endregion
383383

384+
#region node configuration
385+
public Model.NodeConfiguration GetNodeConfiguration(string resourceGroupName, string automationAccountName, string nodeConfigurationName)
386+
{
387+
using (var request = new RequestSettings(this.automationManagementClient))
388+
{
389+
var nodeConfiguration = this.automationManagementClient.NodeConfigurations.Get(resourceGroupName, automationAccountName, nodeConfigurationName).NodeConfiguration;
390+
if (nodeConfiguration == null)
391+
{
392+
throw new ResourceNotFoundException(typeof(NodeConfiguration),
393+
string.Format(CultureInfo.CurrentCulture, Resources.NodeConfigurationNotFound, nodeConfigurationName));
394+
}
395+
396+
return new Model.NodeConfiguration(automationAccountName, nodeConfiguration);
397+
}
398+
}
399+
400+
public IEnumerable<Model.NodeConfiguration> ListNodeConfigurationsByConfigurationName(string resourceGroupName, string automationAccountName, string configurationName)
401+
{
402+
using (var request = new RequestSettings(this.automationManagementClient))
403+
{
404+
IEnumerable<AutomationManagement.Models.DscNodeConfiguration> nodeConfigModels;
405+
406+
nodeConfigModels = AutomationManagementClient.ContinuationTokenHandler(
407+
skipToken =>
408+
{
409+
var response = this.automationManagementClient.NodeConfigurations.List(
410+
resourceGroupName,
411+
automationAccountName,
412+
new AutomationManagement.Models.DscNodeConfigurationListParameters
413+
{
414+
ConfigurationName = configurationName
415+
});
416+
return new ResponseWithSkipToken<AutomationManagement.Models.DscNodeConfiguration>(response, response.DscNodeConfigurations);
417+
});
418+
419+
420+
return nodeConfigModels.Select(nodeConfigModel => new Commands.Automation.Model.NodeConfiguration(automationAccountName, nodeConfigModel));
421+
}
422+
}
423+
424+
public IEnumerable<Model.NodeConfiguration> ListNodeConfigurations(string resourceGroupName, string automationAccountName)
425+
{
426+
using (var request = new RequestSettings(this.automationManagementClient))
427+
{
428+
IEnumerable<AutomationManagement.Models.DscNodeConfiguration> nodeConfigModels;
429+
430+
nodeConfigModels = AutomationManagementClient.ContinuationTokenHandler(
431+
skipToken =>
432+
{
433+
var response = this.automationManagementClient.NodeConfigurations.List(
434+
resourceGroupName,
435+
automationAccountName,
436+
new AutomationManagement.Models.DscNodeConfigurationListParameters());
437+
438+
return new ResponseWithSkipToken<AutomationManagement.Models.DscNodeConfiguration>(response, response.DscNodeConfigurations);
439+
});
440+
441+
442+
return nodeConfigModels.Select(nodeConfigModel => new Model.NodeConfiguration(automationAccountName, nodeConfigModel));
443+
}
444+
}
445+
446+
#endregion
447+
384448
#region privatemethods
385449

386450
private string FormatDateTime(DateTimeOffset dateTime)

src/ResourceManager/Automation/Commands.Automation/Common/AutomationCmdletParameterSet.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,11 @@ internal static class AutomationCmdletParameterSets
7373
/// </summary>
7474
internal const string ByConfigurationName = "ByConfigurationName";
7575

76+
/// <summary>
77+
/// The Node Configuration name parameter set.
78+
/// </summary>
79+
internal const string ByNodeConfigurationName = "ByNodeConfigurationName";
80+
7681
/// <summary>
7782
/// The Schedule name parameter set.
7883
/// </summary>

src/ResourceManager/Automation/Commands.Automation/Common/IAutomationClient.cs

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -41,17 +41,25 @@ public interface IAutomationClient
4141

4242
#region Compilationjobs
4343

44-
DscCompilationJob GetCompilationJob(string resourceGroupName, string automationAccountName, Guid id);
44+
CompilationJob GetCompilationJob(string resourceGroupName, string automationAccountName, Guid id);
4545

46-
IEnumerable<DscCompilationJob> ListCompilationJobsByConfigurationName(string resourceGroupName, string automationAccountName, string configurationName, DateTimeOffset? startTime, DateTimeOffset? endTime, string jobStatus);
46+
IEnumerable<CompilationJob> ListCompilationJobsByConfigurationName(string resourceGroupName, string automationAccountName, string configurationName, DateTimeOffset? startTime, DateTimeOffset? endTime, string jobStatus);
4747

48-
IEnumerable<DscCompilationJob> ListCompilationJobs(string resourceGroupName, string automationAccountName, DateTimeOffset? startTime, DateTimeOffset? endTime, string jobStatus);
48+
IEnumerable<CompilationJob> ListCompilationJobs(string resourceGroupName, string automationAccountName, DateTimeOffset? startTime, DateTimeOffset? endTime, string jobStatus);
4949

50-
DscCompilationJob StartCompilationJob(string resourceGroupName, string automationAccountName, string configurationName, IDictionary parameters);
50+
CompilationJob StartCompilationJob(string resourceGroupName, string automationAccountName, string configurationName, IDictionary parameters);
5151

5252
IEnumerable<JobStream> GetDscCompilationJobStream(string resourceGroupName, string automationAccountname, Guid jobId, DateTimeOffset? time, string streamType);
5353
#endregion
5454

55+
#region NodeConfiguration
56+
NodeConfiguration GetNodeConfiguration(string resourceGroupName, string automationAccountName, string nodeConfigurationName);
57+
58+
IEnumerable<NodeConfiguration> ListNodeConfigurationsByConfigurationName(string resourceGroupName, string automationAccountName, string configurationName);
59+
60+
IEnumerable<NodeConfiguration> ListNodeConfigurations(string resourceGroupName, string automationAccountName);
61+
#endregion
62+
5563
#region Configurations
5664

5765
IEnumerable<DscConfiguration> ListAutomationConfigurations(string resourceGroupName, string automationAccountName);

src/ResourceManager/Automation/Commands.Automation/Model/DscCompilationJob.cs renamed to src/ResourceManager/Automation/Commands.Automation/Model/CompilationJob.cs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -26,10 +26,10 @@ namespace Microsoft.Azure.Commands.Automation.Model
2626
/// <summary>
2727
/// The Dsc Compilation Job
2828
/// </summary>
29-
public class DscCompilationJob
29+
public class CompilationJob
3030
{
3131
/// <summary>
32-
/// Initializes a new instance of the <see cref="DscCompilationJob"/> class.
32+
/// Initializes a new instance of the <see cref="CompilationJob"/> class.
3333
/// </summary>
3434
/// <param name="accountName">
3535
/// The account name.
@@ -39,7 +39,7 @@ public class DscCompilationJob
3939
/// </param>
4040
/// <exception cref="System.ArgumentException">
4141
/// </exception>
42-
public DscCompilationJob(string accountName, AutomationManagement.Models.DscCompilationJob job)
42+
public CompilationJob(string accountName, AutomationManagement.Models.DscCompilationJob job)
4343
{
4444
Requires.Argument("job", job).NotNull();
4545
Requires.Argument("accountName", accountName).NotNull();
@@ -62,14 +62,14 @@ public DscCompilationJob(string accountName, AutomationManagement.Models.DscComp
6262
foreach (var kvp in job.Properties.Parameters.Where(kvp => 0 != String.Compare(kvp.Key, Constants.JobStartedByParameterName, CultureInfo.InvariantCulture,
6363
CompareOptions.IgnoreCase)))
6464
{
65-
this.JobParameters.Add(kvp.Key, (object)PowerShellJsonConverter.Deserialize(kvp.Value));
65+
this.JobParameters.Add(kvp.Key, (object)(kvp.Value));
6666
}
6767
}
6868

6969
/// <summary>
70-
/// Initializes a new instance of the <see cref="DscCompilationJob"/> class.
70+
/// Initializes a new instance of the <see cref="CompilationJob"/> class.
7171
/// </summary>
72-
public DscCompilationJob()
72+
public CompilationJob()
7373
{
7474
}
7575

0 commit comments

Comments
 (0)