Skip to content

Commit 0557de3

Browse files
committed
made changes to implement NodeConfiguration.GetByConfiguration
1 parent c9c2bb5 commit 0557de3

File tree

4 files changed

+62
-13
lines changed

4 files changed

+62
-13
lines changed

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

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,15 @@ public class GetAzureAutomationDscNodeConfiguration : AzureAutomationBaseCmdlet
4343
[Parameter(ParameterSetName = AutomationCmdletParameterSets.ByConfigurationName, Mandatory = true, HelpMessage = "The configuration name.")]
4444
public string ConfigurationName { get; set; }
4545

46+
/// <summary>
47+
/// Gets or sets the status of a job.
48+
/// </summary>
49+
[Parameter(ParameterSetName = AutomationCmdletParameterSets.ByConfigurationName, Mandatory = false, HelpMessage = "Filter node configurations by RollupStatus.")]
50+
[Parameter(ParameterSetName = AutomationCmdletParameterSets.ByNodeConfigurationName, Mandatory = false, HelpMessage = "Filter node configurations by RollupStatus.")]
51+
[Parameter(ParameterSetName = AutomationCmdletParameterSets.ByAll, Mandatory = false, HelpMessage = "Filter node configurations by RollupStatus.")]
52+
[ValidateSet("Good", "Bad")]
53+
public string RollupStatus { get; set; }
54+
4655
/// <summary>
4756
/// Execute this cmdlet.
4857
/// </summary>
@@ -54,17 +63,17 @@ protected override void AutomationExecuteCmdlet()
5463
if (this.Name != null && !Guid.Empty.Equals(this.Name))
5564
{
5665
// ByJobId
57-
nodeConfigurations = new List<NodeConfiguration> { this.AutomationClient.GetNodeConfiguration(this.ResourceGroupName, this.AutomationAccountName, this.Name) };
66+
nodeConfigurations = new List<NodeConfiguration> { this.AutomationClient.GetNodeConfiguration(this.ResourceGroupName, this.AutomationAccountName, this.Name, this.RollupStatus) };
5867
}
5968
else if (this.ConfigurationName != null)
6069
{
6170
// ByConfiguration
62-
nodeConfigurations = this.AutomationClient.ListNodeConfigurationsByConfigurationName(this.ResourceGroupName, this.AutomationAccountName, this.ConfigurationName);
71+
nodeConfigurations = this.AutomationClient.ListNodeConfigurationsByConfigurationName(this.ResourceGroupName, this.AutomationAccountName, this.ConfigurationName, this.RollupStatus);
6372
}
6473
else
6574
{
6675
// ByAll
67-
nodeConfigurations = this.AutomationClient.ListNodeConfigurations(this.ResourceGroupName, this.AutomationAccountName);
76+
nodeConfigurations = this.AutomationClient.ListNodeConfigurations(this.ResourceGroupName, this.AutomationAccountName, this.RollupStatus);
6877
}
6978

7079
this.WriteObject(nodeConfigurations, true);

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

Lines changed: 40 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -795,7 +795,7 @@ public Model.CompilationJob StartCompilationJob(string resourceGroupName, string
795795
#endregion
796796

797797
#region node configuration
798-
public Model.NodeConfiguration GetNodeConfiguration(string resourceGroupName, string automationAccountName, string nodeConfigurationName)
798+
public Model.NodeConfiguration GetNodeConfiguration(string resourceGroupName, string automationAccountName, string nodeConfigurationName, string rollupStatus)
799799
{
800800
using (var request = new RequestSettings(this.automationManagementClient))
801801
{
@@ -806,11 +806,26 @@ public Model.NodeConfiguration GetNodeConfiguration(string resourceGroupName, st
806806
string.Format(CultureInfo.CurrentCulture, Resources.NodeConfigurationNotFound, nodeConfigurationName));
807807
}
808808

809-
return new Model.NodeConfiguration(automationAccountName, nodeConfiguration);
809+
string computedRollupStatus = "Good";
810+
var nodes = this.ListDscNodesByNodeConfiguration(resourceGroupName, automationAccountName, nodeConfigurationName, null);
811+
foreach (var node in nodes)
812+
{
813+
if (node.Status.Equals("Not Compliant") || node.Status.Equals("Failed") || node.Status.Equals("Unresponsive"))
814+
{
815+
computedRollupStatus = "Bad";
816+
}
817+
}
818+
819+
if (string.IsNullOrEmpty(rollupStatus) || (rollupStatus != null && computedRollupStatus.Equals(rollupStatus)))
820+
{
821+
return new Model.NodeConfiguration(automationAccountName, nodeConfiguration, computedRollupStatus);
822+
}
823+
824+
return null;
810825
}
811826
}
812827

813-
public IEnumerable<Model.NodeConfiguration> ListNodeConfigurationsByConfigurationName(string resourceGroupName, string automationAccountName, string configurationName)
828+
public IEnumerable<Model.NodeConfiguration> ListNodeConfigurationsByConfigurationName(string resourceGroupName, string automationAccountName, string configurationName, string rollupStatus)
814829
{
815830
using (var request = new RequestSettings(this.automationManagementClient))
816831
{
@@ -829,12 +844,13 @@ public Model.NodeConfiguration GetNodeConfiguration(string resourceGroupName, st
829844
return new ResponseWithSkipToken<AutomationManagement.Models.DscNodeConfiguration>(response, response.DscNodeConfigurations);
830845
});
831846

847+
string computedRollUpStatus = "Good";
832848

833-
return nodeConfigModels.Select(nodeConfigModel => new Commands.Automation.Model.NodeConfiguration(automationAccountName, nodeConfigModel));
849+
return nodeConfigModels.Select(nodeConfigModel => new Commands.Automation.Model.NodeConfiguration(automationAccountName, nodeConfigModel, computedRollUpStatus));
834850
}
835851
}
836852

837-
public IEnumerable<Model.NodeConfiguration> ListNodeConfigurations(string resourceGroupName, string automationAccountName)
853+
public IEnumerable<Model.NodeConfiguration> ListNodeConfigurations(string resourceGroupName, string automationAccountName, string rollupStatus)
838854
{
839855
using (var request = new RequestSettings(this.automationManagementClient))
840856
{
@@ -851,8 +867,26 @@ public Model.NodeConfiguration GetNodeConfiguration(string resourceGroupName, st
851867
return new ResponseWithSkipToken<AutomationManagement.Models.DscNodeConfiguration>(response, response.DscNodeConfigurations);
852868
});
853869

870+
var nodeConfigurations = new List<Model.NodeConfiguration>();
871+
foreach (var nodeConfiguration in nodeConfigModels)
872+
{
873+
string computedRollupStatus = "Good";
874+
var configName = nodeConfiguration.Configuration != null ? nodeConfiguration.Configuration.Name : null;
875+
var nodes = this.ListDscNodesByNodeConfiguration(resourceGroupName, automationAccountName, configName, null);
876+
foreach (var node in nodes)
877+
{
878+
if (node.Status.Equals("Not Compliant") || node.Status.Equals("Failed") || node.Status.Equals("Unresponsive"))
879+
{
880+
computedRollupStatus = "Bad";
881+
}
882+
}
883+
if (string.IsNullOrEmpty(rollupStatus) || (rollupStatus != null && computedRollupStatus.Equals(rollupStatus)))
884+
{
885+
nodeConfigurations.Add(new Model.NodeConfiguration(automationAccountName, nodeConfiguration, computedRollupStatus));
886+
}
887+
}
854888

855-
return nodeConfigModels.Select(nodeConfigModel => new Model.NodeConfiguration(automationAccountName, nodeConfigModel));
889+
return nodeConfigurations.AsEnumerable<Model.NodeConfiguration>();
856890
}
857891
}
858892

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -54,11 +54,11 @@ public interface IAutomationClient
5454
#endregion
5555

5656
#region NodeConfiguration
57-
NodeConfiguration GetNodeConfiguration(string resourceGroupName, string automationAccountName, string nodeConfigurationName);
57+
NodeConfiguration GetNodeConfiguration(string resourceGroupName, string automationAccountName, string nodeConfigurationName, string rollupStatus);
5858

59-
IEnumerable<NodeConfiguration> ListNodeConfigurationsByConfigurationName(string resourceGroupName, string automationAccountName, string configurationName);
59+
IEnumerable<NodeConfiguration> ListNodeConfigurationsByConfigurationName(string resourceGroupName, string automationAccountName, string configurationName, string rollupStatus);
6060

61-
IEnumerable<NodeConfiguration> ListNodeConfigurations(string resourceGroupName, string automationAccountName);
61+
IEnumerable<NodeConfiguration> ListNodeConfigurations(string resourceGroupName, string automationAccountName, string rollupStatus);
6262
#endregion
6363

6464
#region Configurations

src/ResourceManager/Automation/Commands.Automation/Model/NodeConfiguration.cs

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ public class NodeConfiguration
3939
/// </param>
4040
/// <exception cref="System.ArgumentException">
4141
/// </exception>
42-
public NodeConfiguration(string accountName, AutomationManagement.Models.DscNodeConfiguration nodeConfiguration)
42+
public NodeConfiguration(string accountName, AutomationManagement.Models.DscNodeConfiguration nodeConfiguration, string rollUpStatus)
4343
{
4444
Requires.Argument("nodeConfiguration", nodeConfiguration).NotNull();
4545
Requires.Argument("accountName", accountName).NotNull();
@@ -49,6 +49,7 @@ public NodeConfiguration(string accountName, AutomationManagement.Models.DscNode
4949
this.Name = nodeConfiguration.Name;
5050
this.CreationTime = nodeConfiguration.CreationTime.ToLocalTime();
5151
this.LastModifiedTime = nodeConfiguration.LastModifiedTime.ToLocalTime();
52+
this.RollupStatus = rollUpStatus;
5253
if (nodeConfiguration.Configuration != null)
5354
{
5455
this.ConfigurationName = nodeConfiguration.Configuration.Name;
@@ -86,5 +87,10 @@ public NodeConfiguration()
8687
/// Gets or sets the configuration.
8788
/// </summary>
8889
public string ConfigurationName { get; set; }
90+
91+
/// <summary>
92+
/// Gets or sets the rollup status.
93+
/// </summary>
94+
public string RollupStatus { get; set; }
8995
}
9096
}

0 commit comments

Comments
 (0)