21
21
22
22
namespace Microsoft . Azure . Commands . AlertsManagement
23
23
{
24
- [ Cmdlet ( "Measure" , ResourceManager . Common . AzureRMConstants . AzureRMPrefix + "AlertStatistic" ) ]
24
+ [ Cmdlet ( "Measure" , ResourceManager . Common . AzureRMConstants . AzureRMPrefix + "AlertStatistic" , DefaultParameterSetName = SummaryFilterParameterSet ) ]
25
25
[ OutputType ( typeof ( PSAlertsSummary ) ) ]
26
26
public class MeasureAzureAlertStatistic : AlertsManagementBaseCmdlet
27
27
{
28
+ #region Parameter Sets
29
+
30
+ private const string SummaryFilterParameterSet = "SummaryFilter" ;
31
+ private const string SummaryTargetResourceIdFilterParameterSet = "SummaryTargetResourceIdFilter" ;
32
+
33
+ #endregion
34
+
28
35
#region Parameters declarations
29
36
30
37
/// <summary>
31
38
/// Group by mentioned property of alert
32
39
/// </summary>
33
40
[ Parameter ( Mandatory = true ,
41
+ ParameterSetName = SummaryTargetResourceIdFilterParameterSet ,
42
+ HelpMessage = "Summarize by property" ) ]
43
+ [ Parameter ( Mandatory = true ,
44
+ ParameterSetName = SummaryFilterParameterSet ,
34
45
HelpMessage = "Summarize by property" ) ]
35
46
[ ValidateNotNullOrEmpty ]
36
47
[ PSArgumentCompleter ( "Severity" , "AlertState" , "MonitorCondition" , "MonitorService" , "SignalType" , "AlertRule" ) ]
@@ -39,14 +50,16 @@ public class MeasureAzureAlertStatistic : AlertsManagementBaseCmdlet
39
50
/// <summary>
40
51
/// Resource Id
41
52
/// </summary>
42
- [ Parameter ( Mandatory = false ,
53
+ [ Parameter ( Mandatory = true ,
54
+ ParameterSetName = SummaryTargetResourceIdFilterParameterSet ,
43
55
HelpMessage = "Filter on Resource Id of the target resource of alert." ) ]
44
56
public string TargetResourceId { get ; set ; }
45
57
46
58
/// <summary>
47
59
/// Resource Type
48
60
/// </summary>
49
61
[ Parameter ( Mandatory = false ,
62
+ ParameterSetName = SummaryFilterParameterSet ,
50
63
HelpMessage = "Filter on Resource type of the target resource of alert." ) ]
51
64
[ ResourceTypeCompleter ]
52
65
public string TargetResourceType { get ; set ; }
@@ -55,6 +68,7 @@ public class MeasureAzureAlertStatistic : AlertsManagementBaseCmdlet
55
68
/// Resource Group Name
56
69
/// </summary>
57
70
[ Parameter ( Mandatory = false ,
71
+ ParameterSetName = SummaryFilterParameterSet ,
58
72
HelpMessage = "Filter on Resource group name of the target resource of alert." ) ]
59
73
[ ResourceGroupCompleter ]
60
74
public string TargetResourceGroup { get ; set ; }
@@ -63,14 +77,25 @@ public class MeasureAzureAlertStatistic : AlertsManagementBaseCmdlet
63
77
/// Monitor Service
64
78
/// </summary>
65
79
[ Parameter ( Mandatory = false ,
80
+ ParameterSetName = SummaryTargetResourceIdFilterParameterSet ,
81
+ HelpMessage = "Filter on Moniter Service" ) ]
82
+ [ Parameter ( Mandatory = false ,
83
+ ParameterSetName = SummaryFilterParameterSet ,
66
84
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" ) ]
68
89
public string MonitorService { get ; set ; }
69
90
70
91
/// <summary>
71
92
/// Monitor Condition
72
93
/// </summary>
73
94
[ Parameter ( Mandatory = false ,
95
+ ParameterSetName = SummaryTargetResourceIdFilterParameterSet ,
96
+ HelpMessage = "Filter on Monitor Condition" ) ]
97
+ [ Parameter ( Mandatory = false ,
98
+ ParameterSetName = SummaryFilterParameterSet ,
74
99
HelpMessage = "Filter on Monitor Condition" ) ]
75
100
[ PSArgumentCompleter ( "Fired" , "Resolved" ) ]
76
101
public string MonitorCondition { get ; set ; }
@@ -79,6 +104,10 @@ public class MeasureAzureAlertStatistic : AlertsManagementBaseCmdlet
79
104
/// Severity
80
105
/// </summary>
81
106
[ Parameter ( Mandatory = false ,
107
+ ParameterSetName = SummaryTargetResourceIdFilterParameterSet ,
108
+ HelpMessage = "Filter on Severity of alert" ) ]
109
+ [ Parameter ( Mandatory = false ,
110
+ ParameterSetName = SummaryFilterParameterSet ,
82
111
HelpMessage = "Filter on Severity of alert" ) ]
83
112
[ PSArgumentCompleter ( "Sev0" , "Sev1" , "Sev2" , "Sev3" , "Sev4" ) ]
84
113
public string Severity { get ; set ; }
@@ -87,6 +116,10 @@ public class MeasureAzureAlertStatistic : AlertsManagementBaseCmdlet
87
116
/// Alert State
88
117
/// </summary>
89
118
[ Parameter ( Mandatory = false ,
119
+ ParameterSetName = SummaryTargetResourceIdFilterParameterSet ,
120
+ HelpMessage = "Filter on State of alert" ) ]
121
+ [ Parameter ( Mandatory = false ,
122
+ ParameterSetName = SummaryFilterParameterSet ,
90
123
HelpMessage = "Filter on State of alert" ) ]
91
124
[ PSArgumentCompleter ( "New" , "Acknowledged" , "Closed" ) ]
92
125
public string State { get ; set ; }
@@ -95,13 +128,21 @@ public class MeasureAzureAlertStatistic : AlertsManagementBaseCmdlet
95
128
/// Alert Rule Id
96
129
/// </summary>
97
130
[ Parameter ( Mandatory = false ,
131
+ ParameterSetName = SummaryTargetResourceIdFilterParameterSet ,
132
+ HelpMessage = "Filter on Alert Rule Id" ) ]
133
+ [ Parameter ( Mandatory = false ,
134
+ ParameterSetName = SummaryFilterParameterSet ,
98
135
HelpMessage = "Filter on Alert Rule Id" ) ]
99
136
public string AlertRuleId { get ; set ; }
100
137
101
138
/// <summary>
102
139
/// Time range
103
140
/// </summary>
104
141
[ 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 ,
105
146
HelpMessage = "Supported time range values – 1h, 1d, 7d, 30d (Default is 1d)" ) ]
106
147
[ PSArgumentCompleter ( "1h" , "1d" , "7d" , "30d" ) ]
107
148
public string TimeRange { get ; set ; }
@@ -110,13 +151,21 @@ public class MeasureAzureAlertStatistic : AlertsManagementBaseCmdlet
110
151
/// Custom time range
111
152
/// </summary>
112
153
[ 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 ,
113
158
HelpMessage = "Supported format - <start-time>/<end-time> where time is in ISO-8601 format" ) ]
114
159
public string CustomTimeRange { get ; set ; }
115
160
116
161
/// <summary>
117
162
/// Include SmartGroups Count
118
163
/// </summary>
119
164
[ Parameter ( Mandatory = false ,
165
+ ParameterSetName = SummaryTargetResourceIdFilterParameterSet ,
166
+ HelpMessage = "Include SmartGroups Count" ) ]
167
+ [ Parameter ( Mandatory = false ,
168
+ ParameterSetName = SummaryFilterParameterSet ,
120
169
HelpMessage = "Include SmartGroups Count" ) ]
121
170
[ PSArgumentCompleter ( "true" , "false" ) ]
122
171
public bool IncludeSmartGroupsCount { get ; set ; }
@@ -125,22 +174,28 @@ public class MeasureAzureAlertStatistic : AlertsManagementBaseCmdlet
125
174
126
175
protected override void ProcessRecordInternal ( )
127
176
{
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
+ }
144
199
}
145
200
}
146
201
}
0 commit comments