Skip to content

Commit f869685

Browse files
author
Mahak Jain
committed
Updated parameter set for Get operations to make them mutually exclusive
1 parent 76bba32 commit f869685

File tree

5 files changed

+136
-89
lines changed

5 files changed

+136
-89
lines changed

src/AlertsManagement/AlertsManagement.Test/SessionRecords/Microsoft.Azure.Commands.AlertsManagement.Test.ScenarioTests.AlertTests/TestAlertsSummary.json

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -7,16 +7,16 @@
77
"RequestBody": "",
88
"RequestHeaders": {
99
"x-ms-client-request-id": [
10-
"98bc665e-310b-4463-a31e-6c6003a5cd83"
10+
"99ccde23-0553-47e8-a188-d47b53fb31f5"
1111
],
1212
"Accept-Language": [
1313
"en-US"
1414
],
1515
"User-Agent": [
1616
"FxVersion/4.6.27414.06",
1717
"OSName/Windows",
18-
"OSVersion/Microsoft.Windows.10.0.17763.",
19-
"Microsoft.Azure.Management.AlertsManagement.AlertsManagementClient/27.0.0.0"
18+
"OSVersion/Microsoft.Windows.10.0.18362.",
19+
"Microsoft.Azure.Management.AlertsManagement.AlertsManagementClient/0.9.1.0"
2020
]
2121
},
2222
"ResponseHeaders": {
@@ -27,7 +27,7 @@
2727
"no-cache"
2828
],
2929
"x-ms-request-id": [
30-
"29723c55-9ba1-4d7a-b20c-b3813af50e38"
30+
"fed00596-2f4b-4809-997c-b73bc61373f6"
3131
],
3232
"X-Content-Type-Options": [
3333
"nosniff"
@@ -39,16 +39,16 @@
3939
"999"
4040
],
4141
"x-ms-correlation-request-id": [
42-
"6fddfabf-a630-4ce3-ad4d-d3d390d607f8"
42+
"43c83f16-d3be-4e44-9e30-02df7a1a9aa4"
4343
],
4444
"x-ms-routing-request-id": [
45-
"SOUTHINDIA:20190624T233825Z:6fddfabf-a630-4ce3-ad4d-d3d390d607f8"
45+
"SOUTHINDIA:20190718T062806Z:43c83f16-d3be-4e44-9e30-02df7a1a9aa4"
4646
],
4747
"Date": [
48-
"Mon, 24 Jun 2019 23:38:24 GMT"
48+
"Thu, 18 Jul 2019 06:28:06 GMT"
4949
],
5050
"Content-Length": [
51-
"1005"
51+
"1004"
5252
],
5353
"Content-Type": [
5454
"application/json; charset=utf-8"
@@ -57,7 +57,7 @@
5757
"-1"
5858
]
5959
},
60-
"ResponseBody": "{\r\n \"properties\": {\r\n \"groupedby\": \"severity\",\r\n \"total\": 1026,\r\n \"values\": [\r\n {\r\n \"name\": \"Sev0\",\r\n \"count\": 0,\r\n \"groupedby\": \"alertState\",\r\n \"values\": [\r\n {\r\n \"name\": \"New\",\r\n \"count\": 0\r\n },\r\n {\r\n \"name\": \"Acknowledged\",\r\n \"count\": 0\r\n },\r\n {\r\n \"name\": \"Closed\",\r\n \"count\": 0\r\n }\r\n ]\r\n },\r\n {\r\n \"name\": \"Sev1\",\r\n \"count\": 399,\r\n \"groupedby\": \"alertState\",\r\n \"values\": [\r\n {\r\n \"name\": \"New\",\r\n \"count\": 396\r\n },\r\n {\r\n \"name\": \"Acknowledged\",\r\n \"count\": 0\r\n },\r\n {\r\n \"name\": \"Closed\",\r\n \"count\": 3\r\n }\r\n ]\r\n },\r\n {\r\n \"name\": \"Sev2\",\r\n \"count\": 4,\r\n \"groupedby\": \"alertState\",\r\n \"values\": [\r\n {\r\n \"name\": \"New\",\r\n \"count\": 4\r\n },\r\n {\r\n \"name\": \"Acknowledged\",\r\n \"count\": 0\r\n },\r\n {\r\n \"name\": \"Closed\",\r\n \"count\": 0\r\n }\r\n ]\r\n },\r\n {\r\n \"name\": \"Sev3\",\r\n \"count\": 404,\r\n \"groupedby\": \"alertState\",\r\n \"values\": [\r\n {\r\n \"name\": \"New\",\r\n \"count\": 400\r\n },\r\n {\r\n \"name\": \"Acknowledged\",\r\n \"count\": 2\r\n },\r\n {\r\n \"name\": \"Closed\",\r\n \"count\": 2\r\n }\r\n ]\r\n },\r\n {\r\n \"name\": \"Sev4\",\r\n \"count\": 219,\r\n \"groupedby\": \"alertState\",\r\n \"values\": [\r\n {\r\n \"name\": \"New\",\r\n \"count\": 216\r\n },\r\n {\r\n \"name\": \"Acknowledged\",\r\n \"count\": 0\r\n },\r\n {\r\n \"name\": \"Closed\",\r\n \"count\": 3\r\n }\r\n ]\r\n }\r\n ]\r\n },\r\n \"id\": \"/subscriptions/dd91de05-d791-4ceb-b6dc-988682dc7d72/providers/Microsoft.AlertsManagement/alertsSummary/current\",\r\n \"type\": \"Microsoft.AlertsManagement/alertsSummary\",\r\n \"name\": \"current\"\r\n}",
60+
"ResponseBody": "{\r\n \"properties\": {\r\n \"groupedby\": \"severity\",\r\n \"total\": 920,\r\n \"values\": [\r\n {\r\n \"name\": \"Sev0\",\r\n \"count\": 0,\r\n \"groupedby\": \"alertState\",\r\n \"values\": [\r\n {\r\n \"name\": \"New\",\r\n \"count\": 0\r\n },\r\n {\r\n \"name\": \"Acknowledged\",\r\n \"count\": 0\r\n },\r\n {\r\n \"name\": \"Closed\",\r\n \"count\": 0\r\n }\r\n ]\r\n },\r\n {\r\n \"name\": \"Sev1\",\r\n \"count\": 393,\r\n \"groupedby\": \"alertState\",\r\n \"values\": [\r\n {\r\n \"name\": \"New\",\r\n \"count\": 393\r\n },\r\n {\r\n \"name\": \"Acknowledged\",\r\n \"count\": 0\r\n },\r\n {\r\n \"name\": \"Closed\",\r\n \"count\": 0\r\n }\r\n ]\r\n },\r\n {\r\n \"name\": \"Sev2\",\r\n \"count\": 5,\r\n \"groupedby\": \"alertState\",\r\n \"values\": [\r\n {\r\n \"name\": \"New\",\r\n \"count\": 5\r\n },\r\n {\r\n \"name\": \"Acknowledged\",\r\n \"count\": 0\r\n },\r\n {\r\n \"name\": \"Closed\",\r\n \"count\": 0\r\n }\r\n ]\r\n },\r\n {\r\n \"name\": \"Sev3\",\r\n \"count\": 367,\r\n \"groupedby\": \"alertState\",\r\n \"values\": [\r\n {\r\n \"name\": \"New\",\r\n \"count\": 367\r\n },\r\n {\r\n \"name\": \"Acknowledged\",\r\n \"count\": 0\r\n },\r\n {\r\n \"name\": \"Closed\",\r\n \"count\": 0\r\n }\r\n ]\r\n },\r\n {\r\n \"name\": \"Sev4\",\r\n \"count\": 155,\r\n \"groupedby\": \"alertState\",\r\n \"values\": [\r\n {\r\n \"name\": \"New\",\r\n \"count\": 155\r\n },\r\n {\r\n \"name\": \"Acknowledged\",\r\n \"count\": 0\r\n },\r\n {\r\n \"name\": \"Closed\",\r\n \"count\": 0\r\n }\r\n ]\r\n }\r\n ]\r\n },\r\n \"id\": \"/subscriptions/dd91de05-d791-4ceb-b6dc-988682dc7d72/providers/Microsoft.AlertsManagement/alertsSummary/current\",\r\n \"type\": \"Microsoft.AlertsManagement/alertsSummary\",\r\n \"name\": \"current\"\r\n}",
6161
"StatusCode": 200
6262
}
6363
],

src/AlertsManagement/AlertsManagement/AlertCommands/MeasureAzureAlertStatistic.cs

Lines changed: 74 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -21,16 +21,27 @@
2121

2222
namespace Microsoft.Azure.Commands.AlertsManagement
2323
{
24-
[Cmdlet("Measure", ResourceManager.Common.AzureRMConstants.AzureRMPrefix + "AlertStatistic")]
24+
[Cmdlet("Measure", ResourceManager.Common.AzureRMConstants.AzureRMPrefix + "AlertStatistic", DefaultParameterSetName = SummaryFilterParameterSet)]
2525
[OutputType(typeof(PSAlertsSummary))]
2626
public class MeasureAzureAlertStatistic : AlertsManagementBaseCmdlet
2727
{
28+
#region Parameter Sets
29+
30+
private const string SummaryFilterParameterSet = "SummaryFilter";
31+
private const string SummaryTargetResourceIdFilterParameterSet = "SummaryTargetResourceIdFilter";
32+
33+
#endregion
34+
2835
#region Parameters declarations
2936

3037
/// <summary>
3138
/// Group by mentioned property of alert
3239
/// </summary>
3340
[Parameter(Mandatory = true,
41+
ParameterSetName = SummaryTargetResourceIdFilterParameterSet,
42+
HelpMessage = "Summarize by property")]
43+
[Parameter(Mandatory = true,
44+
ParameterSetName = SummaryFilterParameterSet,
3445
HelpMessage = "Summarize by property")]
3546
[ValidateNotNullOrEmpty]
3647
[PSArgumentCompleter("Severity", "AlertState", "MonitorCondition", "MonitorService", "SignalType", "AlertRule")]
@@ -39,14 +50,16 @@ public class MeasureAzureAlertStatistic : AlertsManagementBaseCmdlet
3950
/// <summary>
4051
/// Resource Id
4152
/// </summary>
42-
[Parameter(Mandatory = false,
53+
[Parameter(Mandatory = true,
54+
ParameterSetName = SummaryTargetResourceIdFilterParameterSet,
4355
HelpMessage = "Filter on Resource Id of the target resource of alert.")]
4456
public string TargetResourceId { get; set; }
4557

4658
/// <summary>
4759
/// Resource Type
4860
/// </summary>
4961
[Parameter(Mandatory = false,
62+
ParameterSetName = SummaryFilterParameterSet,
5063
HelpMessage = "Filter on Resource type of the target resource of alert.")]
5164
[ResourceTypeCompleter]
5265
public string TargetResourceType { get; set; }
@@ -55,6 +68,7 @@ public class MeasureAzureAlertStatistic : AlertsManagementBaseCmdlet
5568
/// Resource Group Name
5669
/// </summary>
5770
[Parameter(Mandatory = false,
71+
ParameterSetName = SummaryFilterParameterSet,
5872
HelpMessage = "Filter on Resource group name of the target resource of alert.")]
5973
[ResourceGroupCompleter]
6074
public string TargetResourceGroup { get; set; }
@@ -63,14 +77,25 @@ public class MeasureAzureAlertStatistic : AlertsManagementBaseCmdlet
6377
/// Monitor Service
6478
/// </summary>
6579
[Parameter(Mandatory = false,
80+
ParameterSetName = SummaryTargetResourceIdFilterParameterSet,
81+
HelpMessage = "Filter on Moniter Service")]
82+
[Parameter(Mandatory = false,
83+
ParameterSetName = SummaryFilterParameterSet,
6684
HelpMessage = "Filter on Moniter Service")]
67-
[PSArgumentCompleter("Platform", "Log Analytics", "SCOM", "Activity Log")]
85+
[PSArgumentCompleter("Application Insights", "ActivityLog Administrative", "ActivityLog Security",
86+
"ActivityLog Recommendation", "ActivityLog Policy", "ActivityLog Autoscale",
87+
"Log Analytics", "Nagios", "Platform", "SCOM", "ServiceHealth", "SmartDetector",
88+
"VM Insights", "Zabbix")]
6889
public string MonitorService { get; set; }
6990

7091
/// <summary>
7192
/// Monitor Condition
7293
/// </summary>
7394
[Parameter(Mandatory = false,
95+
ParameterSetName = SummaryTargetResourceIdFilterParameterSet,
96+
HelpMessage = "Filter on Monitor Condition")]
97+
[Parameter(Mandatory = false,
98+
ParameterSetName = SummaryFilterParameterSet,
7499
HelpMessage = "Filter on Monitor Condition")]
75100
[PSArgumentCompleter("Fired", "Resolved")]
76101
public string MonitorCondition { get; set; }
@@ -79,6 +104,10 @@ public class MeasureAzureAlertStatistic : AlertsManagementBaseCmdlet
79104
/// Severity
80105
/// </summary>
81106
[Parameter(Mandatory = false,
107+
ParameterSetName = SummaryTargetResourceIdFilterParameterSet,
108+
HelpMessage = "Filter on Severity of alert")]
109+
[Parameter(Mandatory = false,
110+
ParameterSetName = SummaryFilterParameterSet,
82111
HelpMessage = "Filter on Severity of alert")]
83112
[PSArgumentCompleter("Sev0", "Sev1", "Sev2", "Sev3", "Sev4")]
84113
public string Severity { get; set; }
@@ -87,6 +116,10 @@ public class MeasureAzureAlertStatistic : AlertsManagementBaseCmdlet
87116
/// Alert State
88117
/// </summary>
89118
[Parameter(Mandatory = false,
119+
ParameterSetName = SummaryTargetResourceIdFilterParameterSet,
120+
HelpMessage = "Filter on State of alert")]
121+
[Parameter(Mandatory = false,
122+
ParameterSetName = SummaryFilterParameterSet,
90123
HelpMessage = "Filter on State of alert")]
91124
[PSArgumentCompleter("New", "Acknowledged", "Closed")]
92125
public string State { get; set; }
@@ -95,13 +128,21 @@ public class MeasureAzureAlertStatistic : AlertsManagementBaseCmdlet
95128
/// Alert Rule Id
96129
/// </summary>
97130
[Parameter(Mandatory = false,
131+
ParameterSetName = SummaryTargetResourceIdFilterParameterSet,
132+
HelpMessage = "Filter on Alert Rule Id")]
133+
[Parameter(Mandatory = false,
134+
ParameterSetName = SummaryFilterParameterSet,
98135
HelpMessage = "Filter on Alert Rule Id")]
99136
public string AlertRuleId { get; set; }
100137

101138
/// <summary>
102139
/// Time range
103140
/// </summary>
104141
[Parameter(Mandatory = false,
142+
ParameterSetName = SummaryTargetResourceIdFilterParameterSet,
143+
HelpMessage = "Supported time range values – 1h, 1d, 7d, 30d (Default is 1d)")]
144+
[Parameter(Mandatory = false,
145+
ParameterSetName = SummaryFilterParameterSet,
105146
HelpMessage = "Supported time range values – 1h, 1d, 7d, 30d (Default is 1d)")]
106147
[PSArgumentCompleter("1h", "1d", "7d", "30d")]
107148
public string TimeRange { get; set; }
@@ -110,13 +151,21 @@ public class MeasureAzureAlertStatistic : AlertsManagementBaseCmdlet
110151
/// Custom time range
111152
/// </summary>
112153
[Parameter(Mandatory = false,
154+
ParameterSetName = SummaryTargetResourceIdFilterParameterSet,
155+
HelpMessage = "Supported format - <start-time>/<end-time> where time is in ISO-8601 format")]
156+
[Parameter(Mandatory = false,
157+
ParameterSetName = SummaryFilterParameterSet,
113158
HelpMessage = "Supported format - <start-time>/<end-time> where time is in ISO-8601 format")]
114159
public string CustomTimeRange { get; set; }
115160

116161
/// <summary>
117162
/// Include SmartGroups Count
118163
/// </summary>
119164
[Parameter(Mandatory = false,
165+
ParameterSetName = SummaryTargetResourceIdFilterParameterSet,
166+
HelpMessage = "Include SmartGroups Count")]
167+
[Parameter(Mandatory = false,
168+
ParameterSetName = SummaryFilterParameterSet,
120169
HelpMessage = "Include SmartGroups Count")]
121170
[PSArgumentCompleter("true", "false")]
122171
public bool IncludeSmartGroupsCount { get; set; }
@@ -125,22 +174,28 @@ public class MeasureAzureAlertStatistic : AlertsManagementBaseCmdlet
125174

126175
protected override void ProcessRecordInternal()
127176
{
128-
PSAlertsSummary summary = new PSAlertsSummary(this.AlertsManagementClient.Alerts.GetSummaryWithHttpMessagesAsync(
129-
groupby: GroupBy,
130-
targetResource: TargetResourceId,
131-
targetResourceType: TargetResourceType,
132-
targetResourceGroup: TargetResourceGroup,
133-
monitorService: MonitorService,
134-
monitorCondition: MonitorCondition,
135-
severity: Severity,
136-
alertState: State,
137-
alertRule: AlertRuleId,
138-
timeRange: TimeRange,
139-
customTimeRange: CustomTimeRange,
140-
includeSmartGroupsCount: IncludeSmartGroupsCount
141-
).Result.Body);
142-
143-
WriteObject(summary);
177+
switch (ParameterSetName)
178+
{
179+
case SummaryFilterParameterSet:
180+
case SummaryTargetResourceIdFilterParameterSet:
181+
PSAlertsSummary summary = new PSAlertsSummary(this.AlertsManagementClient.Alerts.GetSummaryWithHttpMessagesAsync(
182+
groupby: GroupBy,
183+
targetResource: TargetResourceId,
184+
targetResourceType: TargetResourceType,
185+
targetResourceGroup: TargetResourceGroup,
186+
monitorService: MonitorService,
187+
monitorCondition: MonitorCondition,
188+
severity: Severity,
189+
alertState: State,
190+
alertRule: AlertRuleId,
191+
timeRange: TimeRange,
192+
customTimeRange: CustomTimeRange,
193+
includeSmartGroupsCount: IncludeSmartGroupsCount
194+
).Result.Body);
195+
196+
WriteObject(summary);
197+
break;
198+
}
144199
}
145200
}
146201
}

0 commit comments

Comments
 (0)