1// +build go1.13
2
3// Copyright (c) Microsoft Corporation. All rights reserved.
4// Licensed under the MIT License. See License.txt in the project root for license information.
5// Code generated by Microsoft (R) AutoRest Code Generator.
6// Changes may cause incorrect behavior and will be lost if the code is regenerated.
7
8package armmonitor
9
10import "encoding/json"
11
12func unmarshalActionClassification(rawMsg json.RawMessage) (ActionClassification, error) {
13	if rawMsg == nil {
14		return nil, nil
15	}
16	var m map[string]interface{}
17	if err := json.Unmarshal(rawMsg, &m); err != nil {
18		return nil, err
19	}
20	var b ActionClassification
21	switch m["odata.type"] {
22	case "Microsoft.WindowsAzure.Management.Monitoring.Alerts.Models.Microsoft.AppInsights.Nexus.DataContracts.Resources.ScheduledQueryRules.AlertingAction":
23		b = &AlertingAction{}
24	case "Microsoft.WindowsAzure.Management.Monitoring.Alerts.Models.Microsoft.AppInsights.Nexus.DataContracts.Resources.ScheduledQueryRules.LogToMetricAction":
25		b = &LogToMetricAction{}
26	default:
27		b = &Action{}
28	}
29	return b, json.Unmarshal(rawMsg, b)
30}
31
32func unmarshalActionClassificationArray(rawMsg json.RawMessage) ([]ActionClassification, error) {
33	if rawMsg == nil {
34		return nil, nil
35	}
36	var rawMessages []json.RawMessage
37	if err := json.Unmarshal(rawMsg, &rawMessages); err != nil {
38		return nil, err
39	}
40	fArray := make([]ActionClassification, len(rawMessages))
41	for index, rawMessage := range rawMessages {
42		f, err := unmarshalActionClassification(rawMessage)
43		if err != nil {
44			return nil, err
45		}
46		fArray[index] = f
47	}
48	return fArray, nil
49}
50
51func unmarshalMetricAlertCriteriaClassification(rawMsg json.RawMessage) (MetricAlertCriteriaClassification, error) {
52	if rawMsg == nil {
53		return nil, nil
54	}
55	var m map[string]interface{}
56	if err := json.Unmarshal(rawMsg, &m); err != nil {
57		return nil, err
58	}
59	var b MetricAlertCriteriaClassification
60	switch m["odata.type"] {
61	case string(OdatatypeMicrosoftAzureMonitorMultipleResourceMultipleMetricCriteria):
62		b = &MetricAlertMultipleResourceMultipleMetricCriteria{}
63	case string(OdatatypeMicrosoftAzureMonitorSingleResourceMultipleMetricCriteria):
64		b = &MetricAlertSingleResourceMultipleMetricCriteria{}
65	case string(OdatatypeMicrosoftAzureMonitorWebtestLocationAvailabilityCriteria):
66		b = &WebtestLocationAvailabilityCriteria{}
67	default:
68		b = &MetricAlertCriteria{}
69	}
70	return b, json.Unmarshal(rawMsg, b)
71}
72
73func unmarshalMetricAlertCriteriaClassificationArray(rawMsg json.RawMessage) ([]MetricAlertCriteriaClassification, error) {
74	if rawMsg == nil {
75		return nil, nil
76	}
77	var rawMessages []json.RawMessage
78	if err := json.Unmarshal(rawMsg, &rawMessages); err != nil {
79		return nil, err
80	}
81	fArray := make([]MetricAlertCriteriaClassification, len(rawMessages))
82	for index, rawMessage := range rawMessages {
83		f, err := unmarshalMetricAlertCriteriaClassification(rawMessage)
84		if err != nil {
85			return nil, err
86		}
87		fArray[index] = f
88	}
89	return fArray, nil
90}
91
92func unmarshalMultiMetricCriteriaClassification(rawMsg json.RawMessage) (MultiMetricCriteriaClassification, error) {
93	if rawMsg == nil {
94		return nil, nil
95	}
96	var m map[string]interface{}
97	if err := json.Unmarshal(rawMsg, &m); err != nil {
98		return nil, err
99	}
100	var b MultiMetricCriteriaClassification
101	switch m["criterionType"] {
102	case string(CriterionTypeDynamicThresholdCriterion):
103		b = &DynamicMetricCriteria{}
104	case string(CriterionTypeStaticThresholdCriterion):
105		b = &MetricCriteria{}
106	default:
107		b = &MultiMetricCriteria{}
108	}
109	return b, json.Unmarshal(rawMsg, b)
110}
111
112func unmarshalMultiMetricCriteriaClassificationArray(rawMsg json.RawMessage) ([]MultiMetricCriteriaClassification, error) {
113	if rawMsg == nil {
114		return nil, nil
115	}
116	var rawMessages []json.RawMessage
117	if err := json.Unmarshal(rawMsg, &rawMessages); err != nil {
118		return nil, err
119	}
120	fArray := make([]MultiMetricCriteriaClassification, len(rawMessages))
121	for index, rawMessage := range rawMessages {
122		f, err := unmarshalMultiMetricCriteriaClassification(rawMessage)
123		if err != nil {
124			return nil, err
125		}
126		fArray[index] = f
127	}
128	return fArray, nil
129}
130
131func unmarshalRuleActionClassification(rawMsg json.RawMessage) (RuleActionClassification, error) {
132	if rawMsg == nil {
133		return nil, nil
134	}
135	var m map[string]interface{}
136	if err := json.Unmarshal(rawMsg, &m); err != nil {
137		return nil, err
138	}
139	var b RuleActionClassification
140	switch m["odata.type"] {
141	case "Microsoft.Azure.Management.Insights.Models.RuleEmailAction":
142		b = &RuleEmailAction{}
143	case "Microsoft.Azure.Management.Insights.Models.RuleWebhookAction":
144		b = &RuleWebhookAction{}
145	default:
146		b = &RuleAction{}
147	}
148	return b, json.Unmarshal(rawMsg, b)
149}
150
151func unmarshalRuleActionClassificationArray(rawMsg json.RawMessage) ([]RuleActionClassification, error) {
152	if rawMsg == nil {
153		return nil, nil
154	}
155	var rawMessages []json.RawMessage
156	if err := json.Unmarshal(rawMsg, &rawMessages); err != nil {
157		return nil, err
158	}
159	fArray := make([]RuleActionClassification, len(rawMessages))
160	for index, rawMessage := range rawMessages {
161		f, err := unmarshalRuleActionClassification(rawMessage)
162		if err != nil {
163			return nil, err
164		}
165		fArray[index] = f
166	}
167	return fArray, nil
168}
169
170func unmarshalRuleConditionClassification(rawMsg json.RawMessage) (RuleConditionClassification, error) {
171	if rawMsg == nil {
172		return nil, nil
173	}
174	var m map[string]interface{}
175	if err := json.Unmarshal(rawMsg, &m); err != nil {
176		return nil, err
177	}
178	var b RuleConditionClassification
179	switch m["odata.type"] {
180	case "Microsoft.Azure.Management.Insights.Models.LocationThresholdRuleCondition":
181		b = &LocationThresholdRuleCondition{}
182	case "Microsoft.Azure.Management.Insights.Models.ManagementEventRuleCondition":
183		b = &ManagementEventRuleCondition{}
184	case "Microsoft.Azure.Management.Insights.Models.ThresholdRuleCondition":
185		b = &ThresholdRuleCondition{}
186	default:
187		b = &RuleCondition{}
188	}
189	return b, json.Unmarshal(rawMsg, b)
190}
191
192func unmarshalRuleConditionClassificationArray(rawMsg json.RawMessage) ([]RuleConditionClassification, error) {
193	if rawMsg == nil {
194		return nil, nil
195	}
196	var rawMessages []json.RawMessage
197	if err := json.Unmarshal(rawMsg, &rawMessages); err != nil {
198		return nil, err
199	}
200	fArray := make([]RuleConditionClassification, len(rawMessages))
201	for index, rawMessage := range rawMessages {
202		f, err := unmarshalRuleConditionClassification(rawMessage)
203		if err != nil {
204			return nil, err
205		}
206		fArray[index] = f
207	}
208	return fArray, nil
209}
210
211func unmarshalRuleDataSourceClassification(rawMsg json.RawMessage) (RuleDataSourceClassification, error) {
212	if rawMsg == nil {
213		return nil, nil
214	}
215	var m map[string]interface{}
216	if err := json.Unmarshal(rawMsg, &m); err != nil {
217		return nil, err
218	}
219	var b RuleDataSourceClassification
220	switch m["odata.type"] {
221	case "Microsoft.Azure.Management.Insights.Models.RuleManagementEventDataSource":
222		b = &RuleManagementEventDataSource{}
223	case "Microsoft.Azure.Management.Insights.Models.RuleMetricDataSource":
224		b = &RuleMetricDataSource{}
225	default:
226		b = &RuleDataSource{}
227	}
228	return b, json.Unmarshal(rawMsg, b)
229}
230
231func unmarshalRuleDataSourceClassificationArray(rawMsg json.RawMessage) ([]RuleDataSourceClassification, error) {
232	if rawMsg == nil {
233		return nil, nil
234	}
235	var rawMessages []json.RawMessage
236	if err := json.Unmarshal(rawMsg, &rawMessages); err != nil {
237		return nil, err
238	}
239	fArray := make([]RuleDataSourceClassification, len(rawMessages))
240	for index, rawMessage := range rawMessages {
241		f, err := unmarshalRuleDataSourceClassification(rawMessage)
242		if err != nil {
243			return nil, err
244		}
245		fArray[index] = f
246	}
247	return fArray, nil
248}
249