Skip to content

Commit dce5f6f

Browse files
committed
Get-AzureAutomationDscNode ByConfiguration implemented
1 parent cb6d075 commit dce5f6f

File tree

3 files changed

+60
-1
lines changed

3 files changed

+60
-1
lines changed

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

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,13 @@ public class GetAzureAutomationDscNode : AzureAutomationBaseCmdlet
5959
[ValidateNotNullOrEmpty]
6060
public string NodeConfigurationName { get; set; }
6161

62+
/// <summary>
63+
/// Gets or sets the configuration name.
64+
/// </summary>
65+
[Parameter(ParameterSetName = AutomationCmdletParameterSets.ByConfigurationName, Mandatory = true, HelpMessage = "The configuration name.")]
66+
[ValidateNotNullOrEmpty]
67+
public string ConfigurationName { get; set; }
68+
6269
/// <summary>
6370
/// Execute this cmdlet.
6471
/// </summary>
@@ -90,6 +97,14 @@ public override void ExecuteCmdlet()
9097
this.NodeConfigurationName,
9198
this.Status);
9299
}
100+
else if (this.ParameterSetName == AutomationCmdletParameterSets.ByConfigurationName)
101+
{
102+
ret = this.AutomationClient.ListDscNodesByConfiguration(
103+
this.ResourceGroupName,
104+
this.AutomationAccountName,
105+
this.ConfigurationName,
106+
this.Status);
107+
}
93108
else
94109
{
95110
// ByAll

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

Lines changed: 40 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -459,7 +459,46 @@ public Model.DscNode GetDscNodeById(
459459

460460
return dscNodes.Select(dscNode => new Model.DscNode(resourceGroupName, automationAccountName, dscNode));
461461
}
462-
462+
463+
public IEnumerable<Model.DscNode> ListDscNodesByConfiguration(
464+
string resourceGroupName,
465+
string automationAccountName,
466+
string configurationName,
467+
string status)
468+
{
469+
Requires.Argument("ResourceGroupName", resourceGroupName).NotNull();
470+
Requires.Argument("AutomationAccountName", automationAccountName).NotNull();
471+
Requires.Argument("ConfigurationName", configurationName).NotNull();
472+
473+
IEnumerable<Model.DscNode> listOfNodes = Enumerable.Empty<Model.DscNode>();
474+
475+
// first get the list of node configurations for the given configuration
476+
IEnumerable < Model.NodeConfiguration > listOfNodeConfigurations = this.ListNodeConfigurationsByConfigurationName(
477+
resourceGroupName,
478+
automationAccountName,
479+
configurationName);
480+
481+
IEnumerable<Model.DscNode> listOfNodesForGivenNodeConfiguration;
482+
483+
// for each nodeconfiguration, get the list of nodes and concatenate
484+
foreach (var nodeConfiguration in listOfNodeConfigurations)
485+
{
486+
listOfNodesForGivenNodeConfiguration =
487+
this.ListDscNodesByNodeConfiguration(
488+
resourceGroupName,
489+
automationAccountName,
490+
nodeConfiguration.Name,
491+
status);
492+
493+
if (listOfNodesForGivenNodeConfiguration != null)
494+
{
495+
listOfNodes = listOfNodes.Concat(listOfNodesForGivenNodeConfiguration);
496+
}
497+
}
498+
499+
return listOfNodes;
500+
}
501+
463502
public IEnumerable<Model.DscNode> ListDscNodes(
464503
string resourceGroupName,
465504
string automationAccountName,

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

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,11 @@ public interface IAutomationClient
9090
IEnumerable<DscNode> ListDscNodesByName(string resourceGroupName, string automationAccountName, string nodeName, string status);
9191
IEnumerable<DscNode> ListDscNodesByNodeConfiguration(string resourceGroupName, string automationAccountName, string nodeConfigurationName, string status);
9292

93+
IEnumerable<DscNode> ListDscNodesByConfiguration(
94+
string resourceGroupName,
95+
string automationAccountName,
96+
string configurationName,
97+
string status);
9398
DscNode SetDscNodeById(string resourceGroupName, string automationAccountName, Guid nodeId, string nodeConfigurationName, bool force);
9499

95100
void DeleteDscNode(string resourceGroupName, string automationAccountName, Guid nodeId);

0 commit comments

Comments
 (0)