1package insights 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// 6// Code generated by Microsoft (R) AutoRest Code Generator. 7// Changes may cause incorrect behavior and will be lost if the code is regenerated. 8 9import ( 10 "context" 11 "encoding/json" 12 "github.com/Azure/go-autorest/autorest" 13 "github.com/Azure/go-autorest/autorest/date" 14 "github.com/Azure/go-autorest/autorest/to" 15 "github.com/Azure/go-autorest/tracing" 16 "net/http" 17) 18 19// The package's fully qualified name. 20const fqdn = "github.com/Azure/azure-sdk-for-go/services/preview/monitor/mgmt/2018-03-01/insights" 21 22// BasicAction action descriptor. 23type BasicAction interface { 24 AsAlertingAction() (*AlertingAction, bool) 25 AsLogToMetricAction() (*LogToMetricAction, bool) 26 AsAction() (*Action, bool) 27} 28 29// Action action descriptor. 30type Action struct { 31 // OdataType - Possible values include: 'OdataTypeAction', 'OdataTypeMicrosoftWindowsAzureManagementMonitoringAlertsModelsMicrosoftAppInsightsNexusDataContractsResourcesScheduledQueryRulesAlertingAction', 'OdataTypeMicrosoftWindowsAzureManagementMonitoringAlertsModelsMicrosoftAppInsightsNexusDataContractsResourcesScheduledQueryRulesLogToMetricAction' 32 OdataType OdataTypeBasicAction `json:"odata.type,omitempty"` 33} 34 35func unmarshalBasicAction(body []byte) (BasicAction, error) { 36 var m map[string]interface{} 37 err := json.Unmarshal(body, &m) 38 if err != nil { 39 return nil, err 40 } 41 42 switch m["odata.type"] { 43 case string(OdataTypeMicrosoftWindowsAzureManagementMonitoringAlertsModelsMicrosoftAppInsightsNexusDataContractsResourcesScheduledQueryRulesAlertingAction): 44 var aa AlertingAction 45 err := json.Unmarshal(body, &aa) 46 return aa, err 47 case string(OdataTypeMicrosoftWindowsAzureManagementMonitoringAlertsModelsMicrosoftAppInsightsNexusDataContractsResourcesScheduledQueryRulesLogToMetricAction): 48 var ltma LogToMetricAction 49 err := json.Unmarshal(body, <ma) 50 return ltma, err 51 default: 52 var a Action 53 err := json.Unmarshal(body, &a) 54 return a, err 55 } 56} 57func unmarshalBasicActionArray(body []byte) ([]BasicAction, error) { 58 var rawMessages []*json.RawMessage 59 err := json.Unmarshal(body, &rawMessages) 60 if err != nil { 61 return nil, err 62 } 63 64 aArray := make([]BasicAction, len(rawMessages)) 65 66 for index, rawMessage := range rawMessages { 67 a, err := unmarshalBasicAction(*rawMessage) 68 if err != nil { 69 return nil, err 70 } 71 aArray[index] = a 72 } 73 return aArray, nil 74} 75 76// MarshalJSON is the custom marshaler for Action. 77func (a Action) MarshalJSON() ([]byte, error) { 78 a.OdataType = OdataTypeAction 79 objectMap := make(map[string]interface{}) 80 if a.OdataType != "" { 81 objectMap["odata.type"] = a.OdataType 82 } 83 return json.Marshal(objectMap) 84} 85 86// AsAlertingAction is the BasicAction implementation for Action. 87func (a Action) AsAlertingAction() (*AlertingAction, bool) { 88 return nil, false 89} 90 91// AsLogToMetricAction is the BasicAction implementation for Action. 92func (a Action) AsLogToMetricAction() (*LogToMetricAction, bool) { 93 return nil, false 94} 95 96// AsAction is the BasicAction implementation for Action. 97func (a Action) AsAction() (*Action, bool) { 98 return &a, true 99} 100 101// AsBasicAction is the BasicAction implementation for Action. 102func (a Action) AsBasicAction() (BasicAction, bool) { 103 return &a, true 104} 105 106// ActionGroup an Azure action group. 107type ActionGroup struct { 108 // GroupShortName - The short name of the action group. This will be used in SMS messages. 109 GroupShortName *string `json:"groupShortName,omitempty"` 110 // Enabled - Indicates whether this action group is enabled. If an action group is not enabled, then none of its receivers will receive communications. 111 Enabled *bool `json:"enabled,omitempty"` 112 // EmailReceivers - The list of email receivers that are part of this action group. 113 EmailReceivers *[]EmailReceiver `json:"emailReceivers,omitempty"` 114 // SmsReceivers - The list of SMS receivers that are part of this action group. 115 SmsReceivers *[]SmsReceiver `json:"smsReceivers,omitempty"` 116 // WebhookReceivers - The list of webhook receivers that are part of this action group. 117 WebhookReceivers *[]WebhookReceiver `json:"webhookReceivers,omitempty"` 118 // ItsmReceivers - The list of ITSM receivers that are part of this action group. 119 ItsmReceivers *[]ItsmReceiver `json:"itsmReceivers,omitempty"` 120 // AzureAppPushReceivers - The list of AzureAppPush receivers that are part of this action group. 121 AzureAppPushReceivers *[]AzureAppPushReceiver `json:"azureAppPushReceivers,omitempty"` 122 // AutomationRunbookReceivers - The list of AutomationRunbook receivers that are part of this action group. 123 AutomationRunbookReceivers *[]AutomationRunbookReceiver `json:"automationRunbookReceivers,omitempty"` 124 // VoiceReceivers - The list of voice receivers that are part of this action group. 125 VoiceReceivers *[]VoiceReceiver `json:"voiceReceivers,omitempty"` 126 // LogicAppReceivers - The list of logic app receivers that are part of this action group. 127 LogicAppReceivers *[]LogicAppReceiver `json:"logicAppReceivers,omitempty"` 128 // AzureFunctionReceivers - The list of azure function receivers that are part of this action group. 129 AzureFunctionReceivers *[]AzureFunctionReceiver `json:"azureFunctionReceivers,omitempty"` 130} 131 132// ActionGroupList a list of action groups. 133type ActionGroupList struct { 134 autorest.Response `json:"-"` 135 // Value - The list of action groups. 136 Value *[]ActionGroupResource `json:"value,omitempty"` 137 // NextLink - Provides the link to retrieve the next set of elements. 138 NextLink *string `json:"nextLink,omitempty"` 139} 140 141// ActionGroupPatch an Azure action group for patch operations. 142type ActionGroupPatch struct { 143 // Enabled - Indicates whether this action group is enabled. If an action group is not enabled, then none of its actions will be activated. 144 Enabled *bool `json:"enabled,omitempty"` 145} 146 147// ActionGroupPatchBody an action group object for the body of patch operations. 148type ActionGroupPatchBody struct { 149 // Tags - Resource tags 150 Tags map[string]*string `json:"tags"` 151 // ActionGroupPatch - The action group settings for an update operation. 152 *ActionGroupPatch `json:"properties,omitempty"` 153} 154 155// MarshalJSON is the custom marshaler for ActionGroupPatchBody. 156func (agpb ActionGroupPatchBody) MarshalJSON() ([]byte, error) { 157 objectMap := make(map[string]interface{}) 158 if agpb.Tags != nil { 159 objectMap["tags"] = agpb.Tags 160 } 161 if agpb.ActionGroupPatch != nil { 162 objectMap["properties"] = agpb.ActionGroupPatch 163 } 164 return json.Marshal(objectMap) 165} 166 167// UnmarshalJSON is the custom unmarshaler for ActionGroupPatchBody struct. 168func (agpb *ActionGroupPatchBody) UnmarshalJSON(body []byte) error { 169 var m map[string]*json.RawMessage 170 err := json.Unmarshal(body, &m) 171 if err != nil { 172 return err 173 } 174 for k, v := range m { 175 switch k { 176 case "tags": 177 if v != nil { 178 var tags map[string]*string 179 err = json.Unmarshal(*v, &tags) 180 if err != nil { 181 return err 182 } 183 agpb.Tags = tags 184 } 185 case "properties": 186 if v != nil { 187 var actionGroupPatch ActionGroupPatch 188 err = json.Unmarshal(*v, &actionGroupPatch) 189 if err != nil { 190 return err 191 } 192 agpb.ActionGroupPatch = &actionGroupPatch 193 } 194 } 195 } 196 197 return nil 198} 199 200// ActionGroupResource an action group resource. 201type ActionGroupResource struct { 202 autorest.Response `json:"-"` 203 // ActionGroup - The action groups properties of the resource. 204 *ActionGroup `json:"properties,omitempty"` 205 // ID - READ-ONLY; Azure resource Id 206 ID *string `json:"id,omitempty"` 207 // Name - READ-ONLY; Azure resource name 208 Name *string `json:"name,omitempty"` 209 // Type - READ-ONLY; Azure resource type 210 Type *string `json:"type,omitempty"` 211 // Location - Resource location 212 Location *string `json:"location,omitempty"` 213 // Tags - Resource tags 214 Tags map[string]*string `json:"tags"` 215} 216 217// MarshalJSON is the custom marshaler for ActionGroupResource. 218func (agr ActionGroupResource) MarshalJSON() ([]byte, error) { 219 objectMap := make(map[string]interface{}) 220 if agr.ActionGroup != nil { 221 objectMap["properties"] = agr.ActionGroup 222 } 223 if agr.Location != nil { 224 objectMap["location"] = agr.Location 225 } 226 if agr.Tags != nil { 227 objectMap["tags"] = agr.Tags 228 } 229 return json.Marshal(objectMap) 230} 231 232// UnmarshalJSON is the custom unmarshaler for ActionGroupResource struct. 233func (agr *ActionGroupResource) UnmarshalJSON(body []byte) error { 234 var m map[string]*json.RawMessage 235 err := json.Unmarshal(body, &m) 236 if err != nil { 237 return err 238 } 239 for k, v := range m { 240 switch k { 241 case "properties": 242 if v != nil { 243 var actionGroup ActionGroup 244 err = json.Unmarshal(*v, &actionGroup) 245 if err != nil { 246 return err 247 } 248 agr.ActionGroup = &actionGroup 249 } 250 case "id": 251 if v != nil { 252 var ID string 253 err = json.Unmarshal(*v, &ID) 254 if err != nil { 255 return err 256 } 257 agr.ID = &ID 258 } 259 case "name": 260 if v != nil { 261 var name string 262 err = json.Unmarshal(*v, &name) 263 if err != nil { 264 return err 265 } 266 agr.Name = &name 267 } 268 case "type": 269 if v != nil { 270 var typeVar string 271 err = json.Unmarshal(*v, &typeVar) 272 if err != nil { 273 return err 274 } 275 agr.Type = &typeVar 276 } 277 case "location": 278 if v != nil { 279 var location string 280 err = json.Unmarshal(*v, &location) 281 if err != nil { 282 return err 283 } 284 agr.Location = &location 285 } 286 case "tags": 287 if v != nil { 288 var tags map[string]*string 289 err = json.Unmarshal(*v, &tags) 290 if err != nil { 291 return err 292 } 293 agr.Tags = tags 294 } 295 } 296 } 297 298 return nil 299} 300 301// ActivityLogAlert an Azure activity log alert. 302type ActivityLogAlert struct { 303 // Scopes - A list of resourceIds that will be used as prefixes. The alert will only apply to activityLogs with resourceIds that fall under one of these prefixes. This list must include at least one item. 304 Scopes *[]string `json:"scopes,omitempty"` 305 // Enabled - Indicates whether this activity log alert is enabled. If an activity log alert is not enabled, then none of its actions will be activated. 306 Enabled *bool `json:"enabled,omitempty"` 307 // Condition - The condition that will cause this alert to activate. 308 Condition *ActivityLogAlertAllOfCondition `json:"condition,omitempty"` 309 // Actions - The actions that will activate when the condition is met. 310 Actions *ActivityLogAlertActionList `json:"actions,omitempty"` 311 // Description - A description of this activity log alert. 312 Description *string `json:"description,omitempty"` 313} 314 315// ActivityLogAlertActionGroup a pointer to an Azure Action Group. 316type ActivityLogAlertActionGroup struct { 317 // ActionGroupID - The resourceId of the action group. This cannot be null or empty. 318 ActionGroupID *string `json:"actionGroupId,omitempty"` 319 // WebhookProperties - the dictionary of custom properties to include with the post operation. These data are appended to the webhook payload. 320 WebhookProperties map[string]*string `json:"webhookProperties"` 321} 322 323// MarshalJSON is the custom marshaler for ActivityLogAlertActionGroup. 324func (alaag ActivityLogAlertActionGroup) MarshalJSON() ([]byte, error) { 325 objectMap := make(map[string]interface{}) 326 if alaag.ActionGroupID != nil { 327 objectMap["actionGroupId"] = alaag.ActionGroupID 328 } 329 if alaag.WebhookProperties != nil { 330 objectMap["webhookProperties"] = alaag.WebhookProperties 331 } 332 return json.Marshal(objectMap) 333} 334 335// ActivityLogAlertActionList a list of activity log alert actions. 336type ActivityLogAlertActionList struct { 337 // ActionGroups - The list of activity log alerts. 338 ActionGroups *[]ActivityLogAlertActionGroup `json:"actionGroups,omitempty"` 339} 340 341// ActivityLogAlertAllOfCondition an Activity Log alert condition that is met when all its member 342// conditions are met. 343type ActivityLogAlertAllOfCondition struct { 344 // AllOf - The list of activity log alert conditions. 345 AllOf *[]ActivityLogAlertLeafCondition `json:"allOf,omitempty"` 346} 347 348// ActivityLogAlertLeafCondition an Activity Log alert condition that is met by comparing an activity log 349// field and value. 350type ActivityLogAlertLeafCondition struct { 351 // Field - The name of the field that this condition will examine. The possible values for this field are (case-insensitive): 'resourceId', 'category', 'caller', 'level', 'operationName', 'resourceGroup', 'resourceProvider', 'status', 'subStatus', 'resourceType', or anything beginning with 'properties.'. 352 Field *string `json:"field,omitempty"` 353 // Equals - The field value will be compared to this value (case-insensitive) to determine if the condition is met. 354 Equals *string `json:"equals,omitempty"` 355} 356 357// ActivityLogAlertList a list of activity log alerts. 358type ActivityLogAlertList struct { 359 autorest.Response `json:"-"` 360 // Value - The list of activity log alerts. 361 Value *[]ActivityLogAlertResource `json:"value,omitempty"` 362 // NextLink - Provides the link to retrieve the next set of elements. 363 NextLink *string `json:"nextLink,omitempty"` 364} 365 366// ActivityLogAlertPatch an Azure activity log alert for patch operations. 367type ActivityLogAlertPatch struct { 368 // Enabled - Indicates whether this activity log alert is enabled. If an activity log alert is not enabled, then none of its actions will be activated. 369 Enabled *bool `json:"enabled,omitempty"` 370} 371 372// ActivityLogAlertPatchBody an activity log alert object for the body of patch operations. 373type ActivityLogAlertPatchBody struct { 374 // Tags - Resource tags 375 Tags map[string]*string `json:"tags"` 376 // ActivityLogAlertPatch - The activity log alert settings for an update operation. 377 *ActivityLogAlertPatch `json:"properties,omitempty"` 378} 379 380// MarshalJSON is the custom marshaler for ActivityLogAlertPatchBody. 381func (alapb ActivityLogAlertPatchBody) MarshalJSON() ([]byte, error) { 382 objectMap := make(map[string]interface{}) 383 if alapb.Tags != nil { 384 objectMap["tags"] = alapb.Tags 385 } 386 if alapb.ActivityLogAlertPatch != nil { 387 objectMap["properties"] = alapb.ActivityLogAlertPatch 388 } 389 return json.Marshal(objectMap) 390} 391 392// UnmarshalJSON is the custom unmarshaler for ActivityLogAlertPatchBody struct. 393func (alapb *ActivityLogAlertPatchBody) UnmarshalJSON(body []byte) error { 394 var m map[string]*json.RawMessage 395 err := json.Unmarshal(body, &m) 396 if err != nil { 397 return err 398 } 399 for k, v := range m { 400 switch k { 401 case "tags": 402 if v != nil { 403 var tags map[string]*string 404 err = json.Unmarshal(*v, &tags) 405 if err != nil { 406 return err 407 } 408 alapb.Tags = tags 409 } 410 case "properties": 411 if v != nil { 412 var activityLogAlertPatch ActivityLogAlertPatch 413 err = json.Unmarshal(*v, &activityLogAlertPatch) 414 if err != nil { 415 return err 416 } 417 alapb.ActivityLogAlertPatch = &activityLogAlertPatch 418 } 419 } 420 } 421 422 return nil 423} 424 425// ActivityLogAlertResource an activity log alert resource. 426type ActivityLogAlertResource struct { 427 autorest.Response `json:"-"` 428 // ActivityLogAlert - The activity log alert properties of the resource. 429 *ActivityLogAlert `json:"properties,omitempty"` 430 // ID - READ-ONLY; Azure resource Id 431 ID *string `json:"id,omitempty"` 432 // Name - READ-ONLY; Azure resource name 433 Name *string `json:"name,omitempty"` 434 // Type - READ-ONLY; Azure resource type 435 Type *string `json:"type,omitempty"` 436 // Location - Resource location 437 Location *string `json:"location,omitempty"` 438 // Tags - Resource tags 439 Tags map[string]*string `json:"tags"` 440} 441 442// MarshalJSON is the custom marshaler for ActivityLogAlertResource. 443func (alar ActivityLogAlertResource) MarshalJSON() ([]byte, error) { 444 objectMap := make(map[string]interface{}) 445 if alar.ActivityLogAlert != nil { 446 objectMap["properties"] = alar.ActivityLogAlert 447 } 448 if alar.Location != nil { 449 objectMap["location"] = alar.Location 450 } 451 if alar.Tags != nil { 452 objectMap["tags"] = alar.Tags 453 } 454 return json.Marshal(objectMap) 455} 456 457// UnmarshalJSON is the custom unmarshaler for ActivityLogAlertResource struct. 458func (alar *ActivityLogAlertResource) UnmarshalJSON(body []byte) error { 459 var m map[string]*json.RawMessage 460 err := json.Unmarshal(body, &m) 461 if err != nil { 462 return err 463 } 464 for k, v := range m { 465 switch k { 466 case "properties": 467 if v != nil { 468 var activityLogAlert ActivityLogAlert 469 err = json.Unmarshal(*v, &activityLogAlert) 470 if err != nil { 471 return err 472 } 473 alar.ActivityLogAlert = &activityLogAlert 474 } 475 case "id": 476 if v != nil { 477 var ID string 478 err = json.Unmarshal(*v, &ID) 479 if err != nil { 480 return err 481 } 482 alar.ID = &ID 483 } 484 case "name": 485 if v != nil { 486 var name string 487 err = json.Unmarshal(*v, &name) 488 if err != nil { 489 return err 490 } 491 alar.Name = &name 492 } 493 case "type": 494 if v != nil { 495 var typeVar string 496 err = json.Unmarshal(*v, &typeVar) 497 if err != nil { 498 return err 499 } 500 alar.Type = &typeVar 501 } 502 case "location": 503 if v != nil { 504 var location string 505 err = json.Unmarshal(*v, &location) 506 if err != nil { 507 return err 508 } 509 alar.Location = &location 510 } 511 case "tags": 512 if v != nil { 513 var tags map[string]*string 514 err = json.Unmarshal(*v, &tags) 515 if err != nil { 516 return err 517 } 518 alar.Tags = tags 519 } 520 } 521 } 522 523 return nil 524} 525 526// AlertingAction specify action need to be taken when rule type is Alert 527type AlertingAction struct { 528 // Severity - Severity of the alert. Possible values include: 'Zero', 'One', 'Two', 'Three', 'Four' 529 Severity AlertSeverity `json:"severity,omitempty"` 530 // AznsAction - Azure action group reference. 531 AznsAction *AzNsActionGroup `json:"aznsAction,omitempty"` 532 // ThrottlingInMin - time (in minutes) for which Alerts should be throttled or suppressed. 533 ThrottlingInMin *int32 `json:"throttlingInMin,omitempty"` 534 // Trigger - The trigger condition that results in the alert rule being. 535 Trigger *TriggerCondition `json:"trigger,omitempty"` 536 // OdataType - Possible values include: 'OdataTypeAction', 'OdataTypeMicrosoftWindowsAzureManagementMonitoringAlertsModelsMicrosoftAppInsightsNexusDataContractsResourcesScheduledQueryRulesAlertingAction', 'OdataTypeMicrosoftWindowsAzureManagementMonitoringAlertsModelsMicrosoftAppInsightsNexusDataContractsResourcesScheduledQueryRulesLogToMetricAction' 537 OdataType OdataTypeBasicAction `json:"odata.type,omitempty"` 538} 539 540// MarshalJSON is the custom marshaler for AlertingAction. 541func (aa AlertingAction) MarshalJSON() ([]byte, error) { 542 aa.OdataType = OdataTypeMicrosoftWindowsAzureManagementMonitoringAlertsModelsMicrosoftAppInsightsNexusDataContractsResourcesScheduledQueryRulesAlertingAction 543 objectMap := make(map[string]interface{}) 544 if aa.Severity != "" { 545 objectMap["severity"] = aa.Severity 546 } 547 if aa.AznsAction != nil { 548 objectMap["aznsAction"] = aa.AznsAction 549 } 550 if aa.ThrottlingInMin != nil { 551 objectMap["throttlingInMin"] = aa.ThrottlingInMin 552 } 553 if aa.Trigger != nil { 554 objectMap["trigger"] = aa.Trigger 555 } 556 if aa.OdataType != "" { 557 objectMap["odata.type"] = aa.OdataType 558 } 559 return json.Marshal(objectMap) 560} 561 562// AsAlertingAction is the BasicAction implementation for AlertingAction. 563func (aa AlertingAction) AsAlertingAction() (*AlertingAction, bool) { 564 return &aa, true 565} 566 567// AsLogToMetricAction is the BasicAction implementation for AlertingAction. 568func (aa AlertingAction) AsLogToMetricAction() (*LogToMetricAction, bool) { 569 return nil, false 570} 571 572// AsAction is the BasicAction implementation for AlertingAction. 573func (aa AlertingAction) AsAction() (*Action, bool) { 574 return nil, false 575} 576 577// AsBasicAction is the BasicAction implementation for AlertingAction. 578func (aa AlertingAction) AsBasicAction() (BasicAction, bool) { 579 return &aa, true 580} 581 582// AlertRule an alert rule. 583type AlertRule struct { 584 // Name - the name of the alert rule. 585 Name *string `json:"name,omitempty"` 586 // Description - the description of the alert rule that will be included in the alert email. 587 Description *string `json:"description,omitempty"` 588 // IsEnabled - the flag that indicates whether the alert rule is enabled. 589 IsEnabled *bool `json:"isEnabled,omitempty"` 590 // Condition - the condition that results in the alert rule being activated. 591 Condition BasicRuleCondition `json:"condition,omitempty"` 592 // Actions - the array of actions that are performed when the alert rule becomes active, and when an alert condition is resolved. 593 Actions *[]BasicRuleAction `json:"actions,omitempty"` 594 // LastUpdatedTime - READ-ONLY; Last time the rule was updated in ISO8601 format. 595 LastUpdatedTime *date.Time `json:"lastUpdatedTime,omitempty"` 596} 597 598// MarshalJSON is the custom marshaler for AlertRule. 599func (ar AlertRule) MarshalJSON() ([]byte, error) { 600 objectMap := make(map[string]interface{}) 601 if ar.Name != nil { 602 objectMap["name"] = ar.Name 603 } 604 if ar.Description != nil { 605 objectMap["description"] = ar.Description 606 } 607 if ar.IsEnabled != nil { 608 objectMap["isEnabled"] = ar.IsEnabled 609 } 610 objectMap["condition"] = ar.Condition 611 if ar.Actions != nil { 612 objectMap["actions"] = ar.Actions 613 } 614 return json.Marshal(objectMap) 615} 616 617// UnmarshalJSON is the custom unmarshaler for AlertRule struct. 618func (ar *AlertRule) UnmarshalJSON(body []byte) error { 619 var m map[string]*json.RawMessage 620 err := json.Unmarshal(body, &m) 621 if err != nil { 622 return err 623 } 624 for k, v := range m { 625 switch k { 626 case "name": 627 if v != nil { 628 var name string 629 err = json.Unmarshal(*v, &name) 630 if err != nil { 631 return err 632 } 633 ar.Name = &name 634 } 635 case "description": 636 if v != nil { 637 var description string 638 err = json.Unmarshal(*v, &description) 639 if err != nil { 640 return err 641 } 642 ar.Description = &description 643 } 644 case "isEnabled": 645 if v != nil { 646 var isEnabled bool 647 err = json.Unmarshal(*v, &isEnabled) 648 if err != nil { 649 return err 650 } 651 ar.IsEnabled = &isEnabled 652 } 653 case "condition": 654 if v != nil { 655 condition, err := unmarshalBasicRuleCondition(*v) 656 if err != nil { 657 return err 658 } 659 ar.Condition = condition 660 } 661 case "actions": 662 if v != nil { 663 actions, err := unmarshalBasicRuleActionArray(*v) 664 if err != nil { 665 return err 666 } 667 ar.Actions = &actions 668 } 669 case "lastUpdatedTime": 670 if v != nil { 671 var lastUpdatedTime date.Time 672 err = json.Unmarshal(*v, &lastUpdatedTime) 673 if err != nil { 674 return err 675 } 676 ar.LastUpdatedTime = &lastUpdatedTime 677 } 678 } 679 } 680 681 return nil 682} 683 684// AlertRuleResource the alert rule resource. 685type AlertRuleResource struct { 686 autorest.Response `json:"-"` 687 // AlertRule - The alert rule properties of the resource. 688 *AlertRule `json:"properties,omitempty"` 689 // ID - READ-ONLY; Azure resource Id 690 ID *string `json:"id,omitempty"` 691 // Name - READ-ONLY; Azure resource name 692 Name *string `json:"name,omitempty"` 693 // Type - READ-ONLY; Azure resource type 694 Type *string `json:"type,omitempty"` 695 // Location - Resource location 696 Location *string `json:"location,omitempty"` 697 // Tags - Resource tags 698 Tags map[string]*string `json:"tags"` 699} 700 701// MarshalJSON is the custom marshaler for AlertRuleResource. 702func (arr AlertRuleResource) MarshalJSON() ([]byte, error) { 703 objectMap := make(map[string]interface{}) 704 if arr.AlertRule != nil { 705 objectMap["properties"] = arr.AlertRule 706 } 707 if arr.Location != nil { 708 objectMap["location"] = arr.Location 709 } 710 if arr.Tags != nil { 711 objectMap["tags"] = arr.Tags 712 } 713 return json.Marshal(objectMap) 714} 715 716// UnmarshalJSON is the custom unmarshaler for AlertRuleResource struct. 717func (arr *AlertRuleResource) UnmarshalJSON(body []byte) error { 718 var m map[string]*json.RawMessage 719 err := json.Unmarshal(body, &m) 720 if err != nil { 721 return err 722 } 723 for k, v := range m { 724 switch k { 725 case "properties": 726 if v != nil { 727 var alertRule AlertRule 728 err = json.Unmarshal(*v, &alertRule) 729 if err != nil { 730 return err 731 } 732 arr.AlertRule = &alertRule 733 } 734 case "id": 735 if v != nil { 736 var ID string 737 err = json.Unmarshal(*v, &ID) 738 if err != nil { 739 return err 740 } 741 arr.ID = &ID 742 } 743 case "name": 744 if v != nil { 745 var name string 746 err = json.Unmarshal(*v, &name) 747 if err != nil { 748 return err 749 } 750 arr.Name = &name 751 } 752 case "type": 753 if v != nil { 754 var typeVar string 755 err = json.Unmarshal(*v, &typeVar) 756 if err != nil { 757 return err 758 } 759 arr.Type = &typeVar 760 } 761 case "location": 762 if v != nil { 763 var location string 764 err = json.Unmarshal(*v, &location) 765 if err != nil { 766 return err 767 } 768 arr.Location = &location 769 } 770 case "tags": 771 if v != nil { 772 var tags map[string]*string 773 err = json.Unmarshal(*v, &tags) 774 if err != nil { 775 return err 776 } 777 arr.Tags = tags 778 } 779 } 780 } 781 782 return nil 783} 784 785// AlertRuleResourceCollection represents a collection of alert rule resources. 786type AlertRuleResourceCollection struct { 787 autorest.Response `json:"-"` 788 // Value - the values for the alert rule resources. 789 Value *[]AlertRuleResource `json:"value,omitempty"` 790} 791 792// AlertRuleResourcePatch the alert rule object for patch operations. 793type AlertRuleResourcePatch struct { 794 // Tags - Resource tags 795 Tags map[string]*string `json:"tags"` 796 // AlertRule - The properties of an alert rule. 797 *AlertRule `json:"properties,omitempty"` 798} 799 800// MarshalJSON is the custom marshaler for AlertRuleResourcePatch. 801func (arrp AlertRuleResourcePatch) MarshalJSON() ([]byte, error) { 802 objectMap := make(map[string]interface{}) 803 if arrp.Tags != nil { 804 objectMap["tags"] = arrp.Tags 805 } 806 if arrp.AlertRule != nil { 807 objectMap["properties"] = arrp.AlertRule 808 } 809 return json.Marshal(objectMap) 810} 811 812// UnmarshalJSON is the custom unmarshaler for AlertRuleResourcePatch struct. 813func (arrp *AlertRuleResourcePatch) UnmarshalJSON(body []byte) error { 814 var m map[string]*json.RawMessage 815 err := json.Unmarshal(body, &m) 816 if err != nil { 817 return err 818 } 819 for k, v := range m { 820 switch k { 821 case "tags": 822 if v != nil { 823 var tags map[string]*string 824 err = json.Unmarshal(*v, &tags) 825 if err != nil { 826 return err 827 } 828 arrp.Tags = tags 829 } 830 case "properties": 831 if v != nil { 832 var alertRule AlertRule 833 err = json.Unmarshal(*v, &alertRule) 834 if err != nil { 835 return err 836 } 837 arrp.AlertRule = &alertRule 838 } 839 } 840 } 841 842 return nil 843} 844 845// AutomationRunbookReceiver the Azure Automation Runbook notification receiver. 846type AutomationRunbookReceiver struct { 847 // AutomationAccountID - The Azure automation account Id which holds this runbook and authenticate to Azure resource. 848 AutomationAccountID *string `json:"automationAccountId,omitempty"` 849 // RunbookName - The name for this runbook. 850 RunbookName *string `json:"runbookName,omitempty"` 851 // WebhookResourceID - The resource id for webhook linked to this runbook. 852 WebhookResourceID *string `json:"webhookResourceId,omitempty"` 853 // IsGlobalRunbook - Indicates whether this instance is global runbook. 854 IsGlobalRunbook *bool `json:"isGlobalRunbook,omitempty"` 855 // Name - Indicates name of the webhook. 856 Name *string `json:"name,omitempty"` 857 // ServiceURI - The URI where webhooks should be sent. 858 ServiceURI *string `json:"serviceUri,omitempty"` 859} 860 861// AutoscaleNotification autoscale notification. 862type AutoscaleNotification struct { 863 // Operation - the operation associated with the notification and its value must be "scale" 864 Operation *string `json:"operation,omitempty"` 865 // Email - the email notification. 866 Email *EmailNotification `json:"email,omitempty"` 867 // Webhooks - the collection of webhook notifications. 868 Webhooks *[]WebhookNotification `json:"webhooks,omitempty"` 869} 870 871// AutoscaleProfile autoscale profile. 872type AutoscaleProfile struct { 873 // Name - the name of the profile. 874 Name *string `json:"name,omitempty"` 875 // Capacity - the number of instances that can be used during this profile. 876 Capacity *ScaleCapacity `json:"capacity,omitempty"` 877 // Rules - the collection of rules that provide the triggers and parameters for the scaling action. A maximum of 10 rules can be specified. 878 Rules *[]ScaleRule `json:"rules,omitempty"` 879 // FixedDate - the specific date-time for the profile. This element is not used if the Recurrence element is used. 880 FixedDate *TimeWindow `json:"fixedDate,omitempty"` 881 // Recurrence - the repeating times at which this profile begins. This element is not used if the FixedDate element is used. 882 Recurrence *Recurrence `json:"recurrence,omitempty"` 883} 884 885// AutoscaleSetting a setting that contains all of the configuration for the automatic scaling of a 886// resource. 887type AutoscaleSetting struct { 888 // Profiles - the collection of automatic scaling profiles that specify different scaling parameters for different time periods. A maximum of 20 profiles can be specified. 889 Profiles *[]AutoscaleProfile `json:"profiles,omitempty"` 890 // Notifications - the collection of notifications. 891 Notifications *[]AutoscaleNotification `json:"notifications,omitempty"` 892 // Enabled - the enabled flag. Specifies whether automatic scaling is enabled for the resource. The default value is 'true'. 893 Enabled *bool `json:"enabled,omitempty"` 894 // Name - the name of the autoscale setting. 895 Name *string `json:"name,omitempty"` 896 // TargetResourceURI - the resource identifier of the resource that the autoscale setting should be added to. 897 TargetResourceURI *string `json:"targetResourceUri,omitempty"` 898} 899 900// AutoscaleSettingResource the autoscale setting resource. 901type AutoscaleSettingResource struct { 902 autorest.Response `json:"-"` 903 // AutoscaleSetting - The autoscale setting of the resource. 904 *AutoscaleSetting `json:"properties,omitempty"` 905 // ID - READ-ONLY; Azure resource Id 906 ID *string `json:"id,omitempty"` 907 // Name - READ-ONLY; Azure resource name 908 Name *string `json:"name,omitempty"` 909 // Type - READ-ONLY; Azure resource type 910 Type *string `json:"type,omitempty"` 911 // Location - Resource location 912 Location *string `json:"location,omitempty"` 913 // Tags - Resource tags 914 Tags map[string]*string `json:"tags"` 915} 916 917// MarshalJSON is the custom marshaler for AutoscaleSettingResource. 918func (asr AutoscaleSettingResource) MarshalJSON() ([]byte, error) { 919 objectMap := make(map[string]interface{}) 920 if asr.AutoscaleSetting != nil { 921 objectMap["properties"] = asr.AutoscaleSetting 922 } 923 if asr.Location != nil { 924 objectMap["location"] = asr.Location 925 } 926 if asr.Tags != nil { 927 objectMap["tags"] = asr.Tags 928 } 929 return json.Marshal(objectMap) 930} 931 932// UnmarshalJSON is the custom unmarshaler for AutoscaleSettingResource struct. 933func (asr *AutoscaleSettingResource) UnmarshalJSON(body []byte) error { 934 var m map[string]*json.RawMessage 935 err := json.Unmarshal(body, &m) 936 if err != nil { 937 return err 938 } 939 for k, v := range m { 940 switch k { 941 case "properties": 942 if v != nil { 943 var autoscaleSetting AutoscaleSetting 944 err = json.Unmarshal(*v, &autoscaleSetting) 945 if err != nil { 946 return err 947 } 948 asr.AutoscaleSetting = &autoscaleSetting 949 } 950 case "id": 951 if v != nil { 952 var ID string 953 err = json.Unmarshal(*v, &ID) 954 if err != nil { 955 return err 956 } 957 asr.ID = &ID 958 } 959 case "name": 960 if v != nil { 961 var name string 962 err = json.Unmarshal(*v, &name) 963 if err != nil { 964 return err 965 } 966 asr.Name = &name 967 } 968 case "type": 969 if v != nil { 970 var typeVar string 971 err = json.Unmarshal(*v, &typeVar) 972 if err != nil { 973 return err 974 } 975 asr.Type = &typeVar 976 } 977 case "location": 978 if v != nil { 979 var location string 980 err = json.Unmarshal(*v, &location) 981 if err != nil { 982 return err 983 } 984 asr.Location = &location 985 } 986 case "tags": 987 if v != nil { 988 var tags map[string]*string 989 err = json.Unmarshal(*v, &tags) 990 if err != nil { 991 return err 992 } 993 asr.Tags = tags 994 } 995 } 996 } 997 998 return nil 999} 1000 1001// AutoscaleSettingResourceCollection represents a collection of autoscale setting resources. 1002type AutoscaleSettingResourceCollection struct { 1003 autorest.Response `json:"-"` 1004 // Value - the values for the autoscale setting resources. 1005 Value *[]AutoscaleSettingResource `json:"value,omitempty"` 1006 // NextLink - URL to get the next set of results. 1007 NextLink *string `json:"nextLink,omitempty"` 1008} 1009 1010// AutoscaleSettingResourceCollectionIterator provides access to a complete listing of 1011// AutoscaleSettingResource values. 1012type AutoscaleSettingResourceCollectionIterator struct { 1013 i int 1014 page AutoscaleSettingResourceCollectionPage 1015} 1016 1017// NextWithContext advances to the next value. If there was an error making 1018// the request the iterator does not advance and the error is returned. 1019func (iter *AutoscaleSettingResourceCollectionIterator) NextWithContext(ctx context.Context) (err error) { 1020 if tracing.IsEnabled() { 1021 ctx = tracing.StartSpan(ctx, fqdn+"/AutoscaleSettingResourceCollectionIterator.NextWithContext") 1022 defer func() { 1023 sc := -1 1024 if iter.Response().Response.Response != nil { 1025 sc = iter.Response().Response.Response.StatusCode 1026 } 1027 tracing.EndSpan(ctx, sc, err) 1028 }() 1029 } 1030 iter.i++ 1031 if iter.i < len(iter.page.Values()) { 1032 return nil 1033 } 1034 err = iter.page.NextWithContext(ctx) 1035 if err != nil { 1036 iter.i-- 1037 return err 1038 } 1039 iter.i = 0 1040 return nil 1041} 1042 1043// Next advances to the next value. If there was an error making 1044// the request the iterator does not advance and the error is returned. 1045// Deprecated: Use NextWithContext() instead. 1046func (iter *AutoscaleSettingResourceCollectionIterator) Next() error { 1047 return iter.NextWithContext(context.Background()) 1048} 1049 1050// NotDone returns true if the enumeration should be started or is not yet complete. 1051func (iter AutoscaleSettingResourceCollectionIterator) NotDone() bool { 1052 return iter.page.NotDone() && iter.i < len(iter.page.Values()) 1053} 1054 1055// Response returns the raw server response from the last page request. 1056func (iter AutoscaleSettingResourceCollectionIterator) Response() AutoscaleSettingResourceCollection { 1057 return iter.page.Response() 1058} 1059 1060// Value returns the current value or a zero-initialized value if the 1061// iterator has advanced beyond the end of the collection. 1062func (iter AutoscaleSettingResourceCollectionIterator) Value() AutoscaleSettingResource { 1063 if !iter.page.NotDone() { 1064 return AutoscaleSettingResource{} 1065 } 1066 return iter.page.Values()[iter.i] 1067} 1068 1069// Creates a new instance of the AutoscaleSettingResourceCollectionIterator type. 1070func NewAutoscaleSettingResourceCollectionIterator(page AutoscaleSettingResourceCollectionPage) AutoscaleSettingResourceCollectionIterator { 1071 return AutoscaleSettingResourceCollectionIterator{page: page} 1072} 1073 1074// IsEmpty returns true if the ListResult contains no values. 1075func (asrc AutoscaleSettingResourceCollection) IsEmpty() bool { 1076 return asrc.Value == nil || len(*asrc.Value) == 0 1077} 1078 1079// hasNextLink returns true if the NextLink is not empty. 1080func (asrc AutoscaleSettingResourceCollection) hasNextLink() bool { 1081 return asrc.NextLink != nil && len(*asrc.NextLink) != 0 1082} 1083 1084// autoscaleSettingResourceCollectionPreparer prepares a request to retrieve the next set of results. 1085// It returns nil if no more results exist. 1086func (asrc AutoscaleSettingResourceCollection) autoscaleSettingResourceCollectionPreparer(ctx context.Context) (*http.Request, error) { 1087 if !asrc.hasNextLink() { 1088 return nil, nil 1089 } 1090 return autorest.Prepare((&http.Request{}).WithContext(ctx), 1091 autorest.AsJSON(), 1092 autorest.AsGet(), 1093 autorest.WithBaseURL(to.String(asrc.NextLink))) 1094} 1095 1096// AutoscaleSettingResourceCollectionPage contains a page of AutoscaleSettingResource values. 1097type AutoscaleSettingResourceCollectionPage struct { 1098 fn func(context.Context, AutoscaleSettingResourceCollection) (AutoscaleSettingResourceCollection, error) 1099 asrc AutoscaleSettingResourceCollection 1100} 1101 1102// NextWithContext advances to the next page of values. If there was an error making 1103// the request the page does not advance and the error is returned. 1104func (page *AutoscaleSettingResourceCollectionPage) NextWithContext(ctx context.Context) (err error) { 1105 if tracing.IsEnabled() { 1106 ctx = tracing.StartSpan(ctx, fqdn+"/AutoscaleSettingResourceCollectionPage.NextWithContext") 1107 defer func() { 1108 sc := -1 1109 if page.Response().Response.Response != nil { 1110 sc = page.Response().Response.Response.StatusCode 1111 } 1112 tracing.EndSpan(ctx, sc, err) 1113 }() 1114 } 1115 for { 1116 next, err := page.fn(ctx, page.asrc) 1117 if err != nil { 1118 return err 1119 } 1120 page.asrc = next 1121 if !next.hasNextLink() || !next.IsEmpty() { 1122 break 1123 } 1124 } 1125 return nil 1126} 1127 1128// Next advances to the next page of values. If there was an error making 1129// the request the page does not advance and the error is returned. 1130// Deprecated: Use NextWithContext() instead. 1131func (page *AutoscaleSettingResourceCollectionPage) Next() error { 1132 return page.NextWithContext(context.Background()) 1133} 1134 1135// NotDone returns true if the page enumeration should be started or is not yet complete. 1136func (page AutoscaleSettingResourceCollectionPage) NotDone() bool { 1137 return !page.asrc.IsEmpty() 1138} 1139 1140// Response returns the raw server response from the last page request. 1141func (page AutoscaleSettingResourceCollectionPage) Response() AutoscaleSettingResourceCollection { 1142 return page.asrc 1143} 1144 1145// Values returns the slice of values for the current page or nil if there are no values. 1146func (page AutoscaleSettingResourceCollectionPage) Values() []AutoscaleSettingResource { 1147 if page.asrc.IsEmpty() { 1148 return nil 1149 } 1150 return *page.asrc.Value 1151} 1152 1153// Creates a new instance of the AutoscaleSettingResourceCollectionPage type. 1154func NewAutoscaleSettingResourceCollectionPage(cur AutoscaleSettingResourceCollection, getNextPage func(context.Context, AutoscaleSettingResourceCollection) (AutoscaleSettingResourceCollection, error)) AutoscaleSettingResourceCollectionPage { 1155 return AutoscaleSettingResourceCollectionPage{ 1156 fn: getNextPage, 1157 asrc: cur, 1158 } 1159} 1160 1161// AutoscaleSettingResourcePatch the autoscale setting object for patch operations. 1162type AutoscaleSettingResourcePatch struct { 1163 // Tags - Resource tags 1164 Tags map[string]*string `json:"tags"` 1165 // AutoscaleSetting - The autoscale setting properties of the update operation. 1166 *AutoscaleSetting `json:"properties,omitempty"` 1167} 1168 1169// MarshalJSON is the custom marshaler for AutoscaleSettingResourcePatch. 1170func (asrp AutoscaleSettingResourcePatch) MarshalJSON() ([]byte, error) { 1171 objectMap := make(map[string]interface{}) 1172 if asrp.Tags != nil { 1173 objectMap["tags"] = asrp.Tags 1174 } 1175 if asrp.AutoscaleSetting != nil { 1176 objectMap["properties"] = asrp.AutoscaleSetting 1177 } 1178 return json.Marshal(objectMap) 1179} 1180 1181// UnmarshalJSON is the custom unmarshaler for AutoscaleSettingResourcePatch struct. 1182func (asrp *AutoscaleSettingResourcePatch) UnmarshalJSON(body []byte) error { 1183 var m map[string]*json.RawMessage 1184 err := json.Unmarshal(body, &m) 1185 if err != nil { 1186 return err 1187 } 1188 for k, v := range m { 1189 switch k { 1190 case "tags": 1191 if v != nil { 1192 var tags map[string]*string 1193 err = json.Unmarshal(*v, &tags) 1194 if err != nil { 1195 return err 1196 } 1197 asrp.Tags = tags 1198 } 1199 case "properties": 1200 if v != nil { 1201 var autoscaleSetting AutoscaleSetting 1202 err = json.Unmarshal(*v, &autoscaleSetting) 1203 if err != nil { 1204 return err 1205 } 1206 asrp.AutoscaleSetting = &autoscaleSetting 1207 } 1208 } 1209 } 1210 1211 return nil 1212} 1213 1214// AzNsActionGroup azure action group 1215type AzNsActionGroup struct { 1216 // ActionGroup - Azure Action Group reference. 1217 ActionGroup *[]string `json:"actionGroup,omitempty"` 1218 // EmailSubject - Custom subject override for all email ids in Azure action group 1219 EmailSubject *string `json:"emailSubject,omitempty"` 1220 // CustomWebhookPayload - Custom payload to be sent for all webhook URI in Azure action group 1221 CustomWebhookPayload *string `json:"customWebhookPayload,omitempty"` 1222} 1223 1224// AzureAppPushReceiver the Azure mobile App push notification receiver. 1225type AzureAppPushReceiver struct { 1226 // Name - The name of the Azure mobile app push receiver. Names must be unique across all receivers within an action group. 1227 Name *string `json:"name,omitempty"` 1228 // EmailAddress - The email address registered for the Azure mobile app. 1229 EmailAddress *string `json:"emailAddress,omitempty"` 1230} 1231 1232// AzureFunctionReceiver an azure function receiver. 1233type AzureFunctionReceiver struct { 1234 // Name - The name of the azure function receiver. Names must be unique across all receivers within an action group. 1235 Name *string `json:"name,omitempty"` 1236 // FunctionAppResourceID - The azure resource id of the function app. 1237 FunctionAppResourceID *string `json:"functionAppResourceId,omitempty"` 1238 // FunctionName - The function name in the function app. 1239 FunctionName *string `json:"functionName,omitempty"` 1240 // HTTPTriggerURL - The http trigger url where http request sent to. 1241 HTTPTriggerURL *string `json:"httpTriggerUrl,omitempty"` 1242} 1243 1244// Baseline the baseline values for a single sensitivity value. 1245type Baseline struct { 1246 // Sensitivity - the sensitivity of the baseline. Possible values include: 'SensitivityLow', 'SensitivityMedium', 'SensitivityHigh' 1247 Sensitivity Sensitivity `json:"sensitivity,omitempty"` 1248 // LowThresholds - The low thresholds of the baseline. 1249 LowThresholds *[]float64 `json:"lowThresholds,omitempty"` 1250 // HighThresholds - The high thresholds of the baseline. 1251 HighThresholds *[]float64 `json:"highThresholds,omitempty"` 1252} 1253 1254// BaselineMetadataValue represents a baseline metadata value. 1255type BaselineMetadataValue struct { 1256 // Name - the name of the metadata. 1257 Name *LocalizableString `json:"name,omitempty"` 1258 // Value - the value of the metadata. 1259 Value *string `json:"value,omitempty"` 1260} 1261 1262// BaselineProperties the baseline properties class. 1263type BaselineProperties struct { 1264 // Timespan - The timespan for which the data was retrieved. Its value consists of two datetimes concatenated, separated by '/'. This may be adjusted in the future and returned back from what was originally requested. 1265 Timespan *string `json:"timespan,omitempty"` 1266 // Interval - The interval (window size) for which the metric data was returned in. This may be adjusted in the future and returned back from what was originally requested. This is not present if a metadata request was made. 1267 Interval *string `json:"interval,omitempty"` 1268 // Aggregation - The aggregation type of the metric. 1269 Aggregation *string `json:"aggregation,omitempty"` 1270 // Timestamps - the array of timestamps of the baselines. 1271 Timestamps *[]date.Time `json:"timestamps,omitempty"` 1272 // Baseline - the baseline values for each sensitivity. 1273 Baseline *[]Baseline `json:"baseline,omitempty"` 1274 // Metadata - the baseline metadata values. 1275 Metadata *[]BaselineMetadataValue `json:"metadata,omitempty"` 1276} 1277 1278// BaselineResponse the response to a baseline query. 1279type BaselineResponse struct { 1280 autorest.Response `json:"-"` 1281 // ID - READ-ONLY; the metric baseline Id. 1282 ID *string `json:"id,omitempty"` 1283 // Type - READ-ONLY; the resource type of the baseline resource. 1284 Type *string `json:"type,omitempty"` 1285 // Name - READ-ONLY; the name and the display name of the metric, i.e. it is localizable string. 1286 Name *LocalizableString `json:"name,omitempty"` 1287 // BaselineProperties - the properties of the baseline. 1288 *BaselineProperties `json:"properties,omitempty"` 1289} 1290 1291// MarshalJSON is the custom marshaler for BaselineResponse. 1292func (br BaselineResponse) MarshalJSON() ([]byte, error) { 1293 objectMap := make(map[string]interface{}) 1294 if br.BaselineProperties != nil { 1295 objectMap["properties"] = br.BaselineProperties 1296 } 1297 return json.Marshal(objectMap) 1298} 1299 1300// UnmarshalJSON is the custom unmarshaler for BaselineResponse struct. 1301func (br *BaselineResponse) UnmarshalJSON(body []byte) error { 1302 var m map[string]*json.RawMessage 1303 err := json.Unmarshal(body, &m) 1304 if err != nil { 1305 return err 1306 } 1307 for k, v := range m { 1308 switch k { 1309 case "id": 1310 if v != nil { 1311 var ID string 1312 err = json.Unmarshal(*v, &ID) 1313 if err != nil { 1314 return err 1315 } 1316 br.ID = &ID 1317 } 1318 case "type": 1319 if v != nil { 1320 var typeVar string 1321 err = json.Unmarshal(*v, &typeVar) 1322 if err != nil { 1323 return err 1324 } 1325 br.Type = &typeVar 1326 } 1327 case "name": 1328 if v != nil { 1329 var name LocalizableString 1330 err = json.Unmarshal(*v, &name) 1331 if err != nil { 1332 return err 1333 } 1334 br.Name = &name 1335 } 1336 case "properties": 1337 if v != nil { 1338 var baselineProperties BaselineProperties 1339 err = json.Unmarshal(*v, &baselineProperties) 1340 if err != nil { 1341 return err 1342 } 1343 br.BaselineProperties = &baselineProperties 1344 } 1345 } 1346 } 1347 1348 return nil 1349} 1350 1351// CalculateBaselineResponse the response to a calculate baseline call. 1352type CalculateBaselineResponse struct { 1353 autorest.Response `json:"-"` 1354 // Type - the resource type of the baseline resource. 1355 Type *string `json:"type,omitempty"` 1356 // Timestamps - the array of timestamps of the baselines. 1357 Timestamps *[]date.Time `json:"timestamps,omitempty"` 1358 // Baseline - the baseline values for each sensitivity. 1359 Baseline *[]Baseline `json:"baseline,omitempty"` 1360} 1361 1362// Criteria specifies the criteria for converting log to metric. 1363type Criteria struct { 1364 // MetricName - Name of the metric 1365 MetricName *string `json:"metricName,omitempty"` 1366 // Dimensions - List of Dimensions for creating metric 1367 Dimensions *[]Dimension `json:"dimensions,omitempty"` 1368} 1369 1370// DiagnosticSettings the diagnostic settings. 1371type DiagnosticSettings struct { 1372 // StorageAccountID - The resource ID of the storage account to which you would like to send Diagnostic Logs. 1373 StorageAccountID *string `json:"storageAccountId,omitempty"` 1374 // ServiceBusRuleID - The service bus rule Id of the diagnostic setting. This is here to maintain backwards compatibility. 1375 ServiceBusRuleID *string `json:"serviceBusRuleId,omitempty"` 1376 // EventHubAuthorizationRuleID - The resource Id for the event hub authorization rule. 1377 EventHubAuthorizationRuleID *string `json:"eventHubAuthorizationRuleId,omitempty"` 1378 // EventHubName - The name of the event hub. If none is specified, the default event hub will be selected. 1379 EventHubName *string `json:"eventHubName,omitempty"` 1380 // Metrics - The list of metric settings. 1381 Metrics *[]MetricSettings `json:"metrics,omitempty"` 1382 // Logs - The list of logs settings. 1383 Logs *[]LogSettings `json:"logs,omitempty"` 1384 // WorkspaceID - The full ARM resource ID of the Log Analytics workspace to which you would like to send Diagnostic Logs. Example: /subscriptions/4b9e8510-67ab-4e9a-95a9-e2f1e570ea9c/resourceGroups/insights-integration/providers/Microsoft.OperationalInsights/workspaces/viruela2 1385 WorkspaceID *string `json:"workspaceId,omitempty"` 1386 // LogAnalyticsDestinationType - A string indicating whether the export to Log Analytics should use the default destination type, i.e. AzureDiagnostics, or use a destination type constructed as follows: <normalized service identity>_<normalized category name>. Possible values are: Dedicated and null (null is default.) 1387 LogAnalyticsDestinationType *string `json:"logAnalyticsDestinationType,omitempty"` 1388} 1389 1390// DiagnosticSettingsCategory the diagnostic settings Category. 1391type DiagnosticSettingsCategory struct { 1392 // CategoryType - The type of the diagnostic settings category. Possible values include: 'Metrics', 'Logs' 1393 CategoryType CategoryType `json:"categoryType,omitempty"` 1394} 1395 1396// DiagnosticSettingsCategoryResource the diagnostic settings category resource. 1397type DiagnosticSettingsCategoryResource struct { 1398 autorest.Response `json:"-"` 1399 // DiagnosticSettingsCategory - The properties of a Diagnostic Settings Category. 1400 *DiagnosticSettingsCategory `json:"properties,omitempty"` 1401 // ID - READ-ONLY; Azure resource Id 1402 ID *string `json:"id,omitempty"` 1403 // Name - READ-ONLY; Azure resource name 1404 Name *string `json:"name,omitempty"` 1405 // Type - READ-ONLY; Azure resource type 1406 Type *string `json:"type,omitempty"` 1407} 1408 1409// MarshalJSON is the custom marshaler for DiagnosticSettingsCategoryResource. 1410func (dscr DiagnosticSettingsCategoryResource) MarshalJSON() ([]byte, error) { 1411 objectMap := make(map[string]interface{}) 1412 if dscr.DiagnosticSettingsCategory != nil { 1413 objectMap["properties"] = dscr.DiagnosticSettingsCategory 1414 } 1415 return json.Marshal(objectMap) 1416} 1417 1418// UnmarshalJSON is the custom unmarshaler for DiagnosticSettingsCategoryResource struct. 1419func (dscr *DiagnosticSettingsCategoryResource) UnmarshalJSON(body []byte) error { 1420 var m map[string]*json.RawMessage 1421 err := json.Unmarshal(body, &m) 1422 if err != nil { 1423 return err 1424 } 1425 for k, v := range m { 1426 switch k { 1427 case "properties": 1428 if v != nil { 1429 var diagnosticSettingsCategory DiagnosticSettingsCategory 1430 err = json.Unmarshal(*v, &diagnosticSettingsCategory) 1431 if err != nil { 1432 return err 1433 } 1434 dscr.DiagnosticSettingsCategory = &diagnosticSettingsCategory 1435 } 1436 case "id": 1437 if v != nil { 1438 var ID string 1439 err = json.Unmarshal(*v, &ID) 1440 if err != nil { 1441 return err 1442 } 1443 dscr.ID = &ID 1444 } 1445 case "name": 1446 if v != nil { 1447 var name string 1448 err = json.Unmarshal(*v, &name) 1449 if err != nil { 1450 return err 1451 } 1452 dscr.Name = &name 1453 } 1454 case "type": 1455 if v != nil { 1456 var typeVar string 1457 err = json.Unmarshal(*v, &typeVar) 1458 if err != nil { 1459 return err 1460 } 1461 dscr.Type = &typeVar 1462 } 1463 } 1464 } 1465 1466 return nil 1467} 1468 1469// DiagnosticSettingsCategoryResourceCollection represents a collection of diagnostic setting category 1470// resources. 1471type DiagnosticSettingsCategoryResourceCollection struct { 1472 autorest.Response `json:"-"` 1473 // Value - The collection of diagnostic settings category resources. 1474 Value *[]DiagnosticSettingsCategoryResource `json:"value,omitempty"` 1475} 1476 1477// DiagnosticSettingsResource the diagnostic setting resource. 1478type DiagnosticSettingsResource struct { 1479 autorest.Response `json:"-"` 1480 // DiagnosticSettings - Properties of a Diagnostic Settings Resource. 1481 *DiagnosticSettings `json:"properties,omitempty"` 1482 // ID - READ-ONLY; Azure resource Id 1483 ID *string `json:"id,omitempty"` 1484 // Name - READ-ONLY; Azure resource name 1485 Name *string `json:"name,omitempty"` 1486 // Type - READ-ONLY; Azure resource type 1487 Type *string `json:"type,omitempty"` 1488} 1489 1490// MarshalJSON is the custom marshaler for DiagnosticSettingsResource. 1491func (dsr DiagnosticSettingsResource) MarshalJSON() ([]byte, error) { 1492 objectMap := make(map[string]interface{}) 1493 if dsr.DiagnosticSettings != nil { 1494 objectMap["properties"] = dsr.DiagnosticSettings 1495 } 1496 return json.Marshal(objectMap) 1497} 1498 1499// UnmarshalJSON is the custom unmarshaler for DiagnosticSettingsResource struct. 1500func (dsr *DiagnosticSettingsResource) UnmarshalJSON(body []byte) error { 1501 var m map[string]*json.RawMessage 1502 err := json.Unmarshal(body, &m) 1503 if err != nil { 1504 return err 1505 } 1506 for k, v := range m { 1507 switch k { 1508 case "properties": 1509 if v != nil { 1510 var diagnosticSettings DiagnosticSettings 1511 err = json.Unmarshal(*v, &diagnosticSettings) 1512 if err != nil { 1513 return err 1514 } 1515 dsr.DiagnosticSettings = &diagnosticSettings 1516 } 1517 case "id": 1518 if v != nil { 1519 var ID string 1520 err = json.Unmarshal(*v, &ID) 1521 if err != nil { 1522 return err 1523 } 1524 dsr.ID = &ID 1525 } 1526 case "name": 1527 if v != nil { 1528 var name string 1529 err = json.Unmarshal(*v, &name) 1530 if err != nil { 1531 return err 1532 } 1533 dsr.Name = &name 1534 } 1535 case "type": 1536 if v != nil { 1537 var typeVar string 1538 err = json.Unmarshal(*v, &typeVar) 1539 if err != nil { 1540 return err 1541 } 1542 dsr.Type = &typeVar 1543 } 1544 } 1545 } 1546 1547 return nil 1548} 1549 1550// DiagnosticSettingsResourceCollection represents a collection of alert rule resources. 1551type DiagnosticSettingsResourceCollection struct { 1552 autorest.Response `json:"-"` 1553 // Value - The collection of diagnostic settings resources;. 1554 Value *[]DiagnosticSettingsResource `json:"value,omitempty"` 1555} 1556 1557// Dimension specifies the criteria for converting log to metric. 1558type Dimension struct { 1559 // Name - Name of the dimension 1560 Name *string `json:"name,omitempty"` 1561 // Operator - Operator for dimension values 1562 Operator *string `json:"operator,omitempty"` 1563 // Values - List of dimension values 1564 Values *[]string `json:"values,omitempty"` 1565} 1566 1567// DynamicMetricCriteria criterion for dynamic threshold. 1568type DynamicMetricCriteria struct { 1569 // Operator - The operator used to compare the metric value against the threshold. Possible values include: 'DynamicThresholdOperatorGreaterThan', 'DynamicThresholdOperatorLessThan', 'DynamicThresholdOperatorGreaterOrLessThan' 1570 Operator DynamicThresholdOperator `json:"operator,omitempty"` 1571 // AlertSensitivity - The extent of deviation required to trigger an alert. This will affect how tight the threshold is to the metric series pattern. Possible values include: 'Low', 'Medium', 'High' 1572 AlertSensitivity DynamicThresholdSensitivity `json:"alertSensitivity,omitempty"` 1573 // FailingPeriods - The minimum number of violations required within the selected lookback time window required to raise an alert. 1574 FailingPeriods *DynamicThresholdFailingPeriods `json:"failingPeriods,omitempty"` 1575 // IgnoreDataBefore - Use this option to set the date from which to start learning the metric historical data and calculate the dynamic thresholds (in ISO8601 format) 1576 IgnoreDataBefore *date.Time `json:"ignoreDataBefore,omitempty"` 1577 // AdditionalProperties - Unmatched properties from the message are deserialized this collection 1578 AdditionalProperties map[string]interface{} `json:""` 1579 // Name - Name of the criteria. 1580 Name *string `json:"name,omitempty"` 1581 // MetricName - Name of the metric. 1582 MetricName *string `json:"metricName,omitempty"` 1583 // MetricNamespace - Namespace of the metric. 1584 MetricNamespace *string `json:"metricNamespace,omitempty"` 1585 // TimeAggregation - the criteria time aggregation types. 1586 TimeAggregation interface{} `json:"timeAggregation,omitempty"` 1587 // Dimensions - List of dimension conditions. 1588 Dimensions *[]MetricDimension `json:"dimensions,omitempty"` 1589 // SkipMetricValidation - Allows creating an alert rule on a custom metric that isn't yet emitted, by causing the metric validation to be skipped. 1590 SkipMetricValidation *bool `json:"skipMetricValidation,omitempty"` 1591 // CriterionType - Possible values include: 'CriterionTypeMultiMetricCriteria', 'CriterionTypeStaticThresholdCriterion', 'CriterionTypeDynamicThresholdCriterion' 1592 CriterionType CriterionType `json:"criterionType,omitempty"` 1593} 1594 1595// MarshalJSON is the custom marshaler for DynamicMetricCriteria. 1596func (dmc DynamicMetricCriteria) MarshalJSON() ([]byte, error) { 1597 dmc.CriterionType = CriterionTypeDynamicThresholdCriterion 1598 objectMap := make(map[string]interface{}) 1599 if dmc.Operator != "" { 1600 objectMap["operator"] = dmc.Operator 1601 } 1602 if dmc.AlertSensitivity != "" { 1603 objectMap["alertSensitivity"] = dmc.AlertSensitivity 1604 } 1605 if dmc.FailingPeriods != nil { 1606 objectMap["failingPeriods"] = dmc.FailingPeriods 1607 } 1608 if dmc.IgnoreDataBefore != nil { 1609 objectMap["ignoreDataBefore"] = dmc.IgnoreDataBefore 1610 } 1611 if dmc.Name != nil { 1612 objectMap["name"] = dmc.Name 1613 } 1614 if dmc.MetricName != nil { 1615 objectMap["metricName"] = dmc.MetricName 1616 } 1617 if dmc.MetricNamespace != nil { 1618 objectMap["metricNamespace"] = dmc.MetricNamespace 1619 } 1620 if dmc.TimeAggregation != nil { 1621 objectMap["timeAggregation"] = dmc.TimeAggregation 1622 } 1623 if dmc.Dimensions != nil { 1624 objectMap["dimensions"] = dmc.Dimensions 1625 } 1626 if dmc.SkipMetricValidation != nil { 1627 objectMap["skipMetricValidation"] = dmc.SkipMetricValidation 1628 } 1629 if dmc.CriterionType != "" { 1630 objectMap["criterionType"] = dmc.CriterionType 1631 } 1632 for k, v := range dmc.AdditionalProperties { 1633 objectMap[k] = v 1634 } 1635 return json.Marshal(objectMap) 1636} 1637 1638// AsMetricCriteria is the BasicMultiMetricCriteria implementation for DynamicMetricCriteria. 1639func (dmc DynamicMetricCriteria) AsMetricCriteria() (*MetricCriteria, bool) { 1640 return nil, false 1641} 1642 1643// AsDynamicMetricCriteria is the BasicMultiMetricCriteria implementation for DynamicMetricCriteria. 1644func (dmc DynamicMetricCriteria) AsDynamicMetricCriteria() (*DynamicMetricCriteria, bool) { 1645 return &dmc, true 1646} 1647 1648// AsMultiMetricCriteria is the BasicMultiMetricCriteria implementation for DynamicMetricCriteria. 1649func (dmc DynamicMetricCriteria) AsMultiMetricCriteria() (*MultiMetricCriteria, bool) { 1650 return nil, false 1651} 1652 1653// AsBasicMultiMetricCriteria is the BasicMultiMetricCriteria implementation for DynamicMetricCriteria. 1654func (dmc DynamicMetricCriteria) AsBasicMultiMetricCriteria() (BasicMultiMetricCriteria, bool) { 1655 return &dmc, true 1656} 1657 1658// UnmarshalJSON is the custom unmarshaler for DynamicMetricCriteria struct. 1659func (dmc *DynamicMetricCriteria) UnmarshalJSON(body []byte) error { 1660 var m map[string]*json.RawMessage 1661 err := json.Unmarshal(body, &m) 1662 if err != nil { 1663 return err 1664 } 1665 for k, v := range m { 1666 switch k { 1667 case "operator": 1668 if v != nil { 1669 var operator DynamicThresholdOperator 1670 err = json.Unmarshal(*v, &operator) 1671 if err != nil { 1672 return err 1673 } 1674 dmc.Operator = operator 1675 } 1676 case "alertSensitivity": 1677 if v != nil { 1678 var alertSensitivity DynamicThresholdSensitivity 1679 err = json.Unmarshal(*v, &alertSensitivity) 1680 if err != nil { 1681 return err 1682 } 1683 dmc.AlertSensitivity = alertSensitivity 1684 } 1685 case "failingPeriods": 1686 if v != nil { 1687 var failingPeriods DynamicThresholdFailingPeriods 1688 err = json.Unmarshal(*v, &failingPeriods) 1689 if err != nil { 1690 return err 1691 } 1692 dmc.FailingPeriods = &failingPeriods 1693 } 1694 case "ignoreDataBefore": 1695 if v != nil { 1696 var ignoreDataBefore date.Time 1697 err = json.Unmarshal(*v, &ignoreDataBefore) 1698 if err != nil { 1699 return err 1700 } 1701 dmc.IgnoreDataBefore = &ignoreDataBefore 1702 } 1703 default: 1704 if v != nil { 1705 var additionalProperties interface{} 1706 err = json.Unmarshal(*v, &additionalProperties) 1707 if err != nil { 1708 return err 1709 } 1710 if dmc.AdditionalProperties == nil { 1711 dmc.AdditionalProperties = make(map[string]interface{}) 1712 } 1713 dmc.AdditionalProperties[k] = additionalProperties 1714 } 1715 case "name": 1716 if v != nil { 1717 var name string 1718 err = json.Unmarshal(*v, &name) 1719 if err != nil { 1720 return err 1721 } 1722 dmc.Name = &name 1723 } 1724 case "metricName": 1725 if v != nil { 1726 var metricName string 1727 err = json.Unmarshal(*v, &metricName) 1728 if err != nil { 1729 return err 1730 } 1731 dmc.MetricName = &metricName 1732 } 1733 case "metricNamespace": 1734 if v != nil { 1735 var metricNamespace string 1736 err = json.Unmarshal(*v, &metricNamespace) 1737 if err != nil { 1738 return err 1739 } 1740 dmc.MetricNamespace = &metricNamespace 1741 } 1742 case "timeAggregation": 1743 if v != nil { 1744 var timeAggregation interface{} 1745 err = json.Unmarshal(*v, &timeAggregation) 1746 if err != nil { 1747 return err 1748 } 1749 dmc.TimeAggregation = timeAggregation 1750 } 1751 case "dimensions": 1752 if v != nil { 1753 var dimensions []MetricDimension 1754 err = json.Unmarshal(*v, &dimensions) 1755 if err != nil { 1756 return err 1757 } 1758 dmc.Dimensions = &dimensions 1759 } 1760 case "skipMetricValidation": 1761 if v != nil { 1762 var skipMetricValidation bool 1763 err = json.Unmarshal(*v, &skipMetricValidation) 1764 if err != nil { 1765 return err 1766 } 1767 dmc.SkipMetricValidation = &skipMetricValidation 1768 } 1769 case "criterionType": 1770 if v != nil { 1771 var criterionType CriterionType 1772 err = json.Unmarshal(*v, &criterionType) 1773 if err != nil { 1774 return err 1775 } 1776 dmc.CriterionType = criterionType 1777 } 1778 } 1779 } 1780 1781 return nil 1782} 1783 1784// DynamicThresholdFailingPeriods the minimum number of violations required within the selected lookback 1785// time window required to raise an alert. 1786type DynamicThresholdFailingPeriods struct { 1787 // NumberOfEvaluationPeriods - The number of aggregated lookback points. The lookback time window is calculated based on the aggregation granularity (windowSize) and the selected number of aggregated points. 1788 NumberOfEvaluationPeriods *float64 `json:"numberOfEvaluationPeriods,omitempty"` 1789 // MinFailingPeriodsToAlert - The number of violations to trigger an alert. Should be smaller or equal to numberOfEvaluationPeriods. 1790 MinFailingPeriodsToAlert *float64 `json:"minFailingPeriodsToAlert,omitempty"` 1791} 1792 1793// EmailNotification email notification of an autoscale event. 1794type EmailNotification struct { 1795 // SendToSubscriptionAdministrator - a value indicating whether to send email to subscription administrator. 1796 SendToSubscriptionAdministrator *bool `json:"sendToSubscriptionAdministrator,omitempty"` 1797 // SendToSubscriptionCoAdministrators - a value indicating whether to send email to subscription co-administrators. 1798 SendToSubscriptionCoAdministrators *bool `json:"sendToSubscriptionCoAdministrators,omitempty"` 1799 // CustomEmails - the custom e-mails list. This value can be null or empty, in which case this attribute will be ignored. 1800 CustomEmails *[]string `json:"customEmails,omitempty"` 1801} 1802 1803// EmailReceiver an email receiver. 1804type EmailReceiver struct { 1805 // Name - The name of the email receiver. Names must be unique across all receivers within an action group. 1806 Name *string `json:"name,omitempty"` 1807 // EmailAddress - The email address of this receiver. 1808 EmailAddress *string `json:"emailAddress,omitempty"` 1809 // Status - READ-ONLY; The receiver status of the e-mail. Possible values include: 'ReceiverStatusNotSpecified', 'ReceiverStatusEnabled', 'ReceiverStatusDisabled' 1810 Status ReceiverStatus `json:"status,omitempty"` 1811} 1812 1813// MarshalJSON is the custom marshaler for EmailReceiver. 1814func (er EmailReceiver) MarshalJSON() ([]byte, error) { 1815 objectMap := make(map[string]interface{}) 1816 if er.Name != nil { 1817 objectMap["name"] = er.Name 1818 } 1819 if er.EmailAddress != nil { 1820 objectMap["emailAddress"] = er.EmailAddress 1821 } 1822 return json.Marshal(objectMap) 1823} 1824 1825// EnableRequest describes a receiver that should be resubscribed. 1826type EnableRequest struct { 1827 // ReceiverName - The name of the receiver to resubscribe. 1828 ReceiverName *string `json:"receiverName,omitempty"` 1829} 1830 1831// ErrorResponse describes the format of Error response. 1832type ErrorResponse struct { 1833 // Code - Error code 1834 Code *string `json:"code,omitempty"` 1835 // Message - Error message indicating why the operation failed. 1836 Message *string `json:"message,omitempty"` 1837} 1838 1839// EventCategoryCollection a collection of event categories. Currently possible values are: Administrative, 1840// Security, ServiceHealth, Alert, Recommendation, Policy. 1841type EventCategoryCollection struct { 1842 autorest.Response `json:"-"` 1843 // Value - the list that includes the Azure event categories. 1844 Value *[]LocalizableString `json:"value,omitempty"` 1845} 1846 1847// EventData the Azure event log entries are of type EventData 1848type EventData struct { 1849 // Authorization - READ-ONLY; The sender authorization information. 1850 Authorization *SenderAuthorization `json:"authorization,omitempty"` 1851 // Claims - READ-ONLY; key value pairs to identify ARM permissions. 1852 Claims map[string]*string `json:"claims"` 1853 // Caller - READ-ONLY; the email address of the user who has performed the operation, the UPN claim or SPN claim based on availability. 1854 Caller *string `json:"caller,omitempty"` 1855 // Description - READ-ONLY; the description of the event. 1856 Description *string `json:"description,omitempty"` 1857 // ID - READ-ONLY; the Id of this event as required by ARM for RBAC. It contains the EventDataID and a timestamp information. 1858 ID *string `json:"id,omitempty"` 1859 // EventDataID - READ-ONLY; the event data Id. This is a unique identifier for an event. 1860 EventDataID *string `json:"eventDataId,omitempty"` 1861 // CorrelationID - READ-ONLY; the correlation Id, usually a GUID in the string format. The correlation Id is shared among the events that belong to the same uber operation. 1862 CorrelationID *string `json:"correlationId,omitempty"` 1863 // EventName - READ-ONLY; the event name. This value should not be confused with OperationName. For practical purposes, OperationName might be more appealing to end users. 1864 EventName *LocalizableString `json:"eventName,omitempty"` 1865 // Category - READ-ONLY; the event category. 1866 Category *LocalizableString `json:"category,omitempty"` 1867 // HTTPRequest - READ-ONLY; the HTTP request info. Usually includes the 'clientRequestId', 'clientIpAddress' (IP address of the user who initiated the event) and 'method' (HTTP method e.g. PUT). 1868 HTTPRequest *HTTPRequestInfo `json:"httpRequest,omitempty"` 1869 // Level - READ-ONLY; the event level. Possible values include: 'Critical', 'Error', 'Warning', 'Informational', 'Verbose' 1870 Level EventLevel `json:"level,omitempty"` 1871 // ResourceGroupName - READ-ONLY; the resource group name of the impacted resource. 1872 ResourceGroupName *string `json:"resourceGroupName,omitempty"` 1873 // ResourceProviderName - READ-ONLY; the resource provider name of the impacted resource. 1874 ResourceProviderName *LocalizableString `json:"resourceProviderName,omitempty"` 1875 // ResourceID - READ-ONLY; the resource uri that uniquely identifies the resource that caused this event. 1876 ResourceID *string `json:"resourceId,omitempty"` 1877 // ResourceType - READ-ONLY; the resource type 1878 ResourceType *LocalizableString `json:"resourceType,omitempty"` 1879 // OperationID - READ-ONLY; It is usually a GUID shared among the events corresponding to single operation. This value should not be confused with EventName. 1880 OperationID *string `json:"operationId,omitempty"` 1881 // OperationName - READ-ONLY; the operation name. 1882 OperationName *LocalizableString `json:"operationName,omitempty"` 1883 // Properties - READ-ONLY; the set of <Key, Value> pairs (usually a Dictionary<String, String>) that includes details about the event. 1884 Properties map[string]*string `json:"properties"` 1885 // Status - READ-ONLY; a string describing the status of the operation. Some typical values are: Started, In progress, Succeeded, Failed, Resolved. 1886 Status *LocalizableString `json:"status,omitempty"` 1887 // SubStatus - READ-ONLY; the event sub status. Most of the time, when included, this captures the HTTP status code of the REST call. Common values are: OK (HTTP Status Code: 200), Created (HTTP Status Code: 201), Accepted (HTTP Status Code: 202), No Content (HTTP Status Code: 204), Bad Request(HTTP Status Code: 400), Not Found (HTTP Status Code: 404), Conflict (HTTP Status Code: 409), Internal Server Error (HTTP Status Code: 500), Service Unavailable (HTTP Status Code:503), Gateway Timeout (HTTP Status Code: 504) 1888 SubStatus *LocalizableString `json:"subStatus,omitempty"` 1889 // EventTimestamp - READ-ONLY; the timestamp of when the event was generated by the Azure service processing the request corresponding the event. It in ISO 8601 format. 1890 EventTimestamp *date.Time `json:"eventTimestamp,omitempty"` 1891 // SubmissionTimestamp - READ-ONLY; the timestamp of when the event became available for querying via this API. It is in ISO 8601 format. This value should not be confused eventTimestamp. As there might be a delay between the occurrence time of the event, and the time that the event is submitted to the Azure logging infrastructure. 1892 SubmissionTimestamp *date.Time `json:"submissionTimestamp,omitempty"` 1893 // SubscriptionID - READ-ONLY; the Azure subscription Id usually a GUID. 1894 SubscriptionID *string `json:"subscriptionId,omitempty"` 1895 // TenantID - READ-ONLY; the Azure tenant Id 1896 TenantID *string `json:"tenantId,omitempty"` 1897} 1898 1899// MarshalJSON is the custom marshaler for EventData. 1900func (ed EventData) MarshalJSON() ([]byte, error) { 1901 objectMap := make(map[string]interface{}) 1902 return json.Marshal(objectMap) 1903} 1904 1905// EventDataCollection represents collection of events. 1906type EventDataCollection struct { 1907 autorest.Response `json:"-"` 1908 // Value - this list that includes the Azure audit logs. 1909 Value *[]EventData `json:"value,omitempty"` 1910 // NextLink - Provides the link to retrieve the next set of events. 1911 NextLink *string `json:"nextLink,omitempty"` 1912} 1913 1914// EventDataCollectionIterator provides access to a complete listing of EventData values. 1915type EventDataCollectionIterator struct { 1916 i int 1917 page EventDataCollectionPage 1918} 1919 1920// NextWithContext advances to the next value. If there was an error making 1921// the request the iterator does not advance and the error is returned. 1922func (iter *EventDataCollectionIterator) NextWithContext(ctx context.Context) (err error) { 1923 if tracing.IsEnabled() { 1924 ctx = tracing.StartSpan(ctx, fqdn+"/EventDataCollectionIterator.NextWithContext") 1925 defer func() { 1926 sc := -1 1927 if iter.Response().Response.Response != nil { 1928 sc = iter.Response().Response.Response.StatusCode 1929 } 1930 tracing.EndSpan(ctx, sc, err) 1931 }() 1932 } 1933 iter.i++ 1934 if iter.i < len(iter.page.Values()) { 1935 return nil 1936 } 1937 err = iter.page.NextWithContext(ctx) 1938 if err != nil { 1939 iter.i-- 1940 return err 1941 } 1942 iter.i = 0 1943 return nil 1944} 1945 1946// Next advances to the next value. If there was an error making 1947// the request the iterator does not advance and the error is returned. 1948// Deprecated: Use NextWithContext() instead. 1949func (iter *EventDataCollectionIterator) Next() error { 1950 return iter.NextWithContext(context.Background()) 1951} 1952 1953// NotDone returns true if the enumeration should be started or is not yet complete. 1954func (iter EventDataCollectionIterator) NotDone() bool { 1955 return iter.page.NotDone() && iter.i < len(iter.page.Values()) 1956} 1957 1958// Response returns the raw server response from the last page request. 1959func (iter EventDataCollectionIterator) Response() EventDataCollection { 1960 return iter.page.Response() 1961} 1962 1963// Value returns the current value or a zero-initialized value if the 1964// iterator has advanced beyond the end of the collection. 1965func (iter EventDataCollectionIterator) Value() EventData { 1966 if !iter.page.NotDone() { 1967 return EventData{} 1968 } 1969 return iter.page.Values()[iter.i] 1970} 1971 1972// Creates a new instance of the EventDataCollectionIterator type. 1973func NewEventDataCollectionIterator(page EventDataCollectionPage) EventDataCollectionIterator { 1974 return EventDataCollectionIterator{page: page} 1975} 1976 1977// IsEmpty returns true if the ListResult contains no values. 1978func (edc EventDataCollection) IsEmpty() bool { 1979 return edc.Value == nil || len(*edc.Value) == 0 1980} 1981 1982// hasNextLink returns true if the NextLink is not empty. 1983func (edc EventDataCollection) hasNextLink() bool { 1984 return edc.NextLink != nil && len(*edc.NextLink) != 0 1985} 1986 1987// eventDataCollectionPreparer prepares a request to retrieve the next set of results. 1988// It returns nil if no more results exist. 1989func (edc EventDataCollection) eventDataCollectionPreparer(ctx context.Context) (*http.Request, error) { 1990 if !edc.hasNextLink() { 1991 return nil, nil 1992 } 1993 return autorest.Prepare((&http.Request{}).WithContext(ctx), 1994 autorest.AsJSON(), 1995 autorest.AsGet(), 1996 autorest.WithBaseURL(to.String(edc.NextLink))) 1997} 1998 1999// EventDataCollectionPage contains a page of EventData values. 2000type EventDataCollectionPage struct { 2001 fn func(context.Context, EventDataCollection) (EventDataCollection, error) 2002 edc EventDataCollection 2003} 2004 2005// NextWithContext advances to the next page of values. If there was an error making 2006// the request the page does not advance and the error is returned. 2007func (page *EventDataCollectionPage) NextWithContext(ctx context.Context) (err error) { 2008 if tracing.IsEnabled() { 2009 ctx = tracing.StartSpan(ctx, fqdn+"/EventDataCollectionPage.NextWithContext") 2010 defer func() { 2011 sc := -1 2012 if page.Response().Response.Response != nil { 2013 sc = page.Response().Response.Response.StatusCode 2014 } 2015 tracing.EndSpan(ctx, sc, err) 2016 }() 2017 } 2018 for { 2019 next, err := page.fn(ctx, page.edc) 2020 if err != nil { 2021 return err 2022 } 2023 page.edc = next 2024 if !next.hasNextLink() || !next.IsEmpty() { 2025 break 2026 } 2027 } 2028 return nil 2029} 2030 2031// Next advances to the next page of values. If there was an error making 2032// the request the page does not advance and the error is returned. 2033// Deprecated: Use NextWithContext() instead. 2034func (page *EventDataCollectionPage) Next() error { 2035 return page.NextWithContext(context.Background()) 2036} 2037 2038// NotDone returns true if the page enumeration should be started or is not yet complete. 2039func (page EventDataCollectionPage) NotDone() bool { 2040 return !page.edc.IsEmpty() 2041} 2042 2043// Response returns the raw server response from the last page request. 2044func (page EventDataCollectionPage) Response() EventDataCollection { 2045 return page.edc 2046} 2047 2048// Values returns the slice of values for the current page or nil if there are no values. 2049func (page EventDataCollectionPage) Values() []EventData { 2050 if page.edc.IsEmpty() { 2051 return nil 2052 } 2053 return *page.edc.Value 2054} 2055 2056// Creates a new instance of the EventDataCollectionPage type. 2057func NewEventDataCollectionPage(cur EventDataCollection, getNextPage func(context.Context, EventDataCollection) (EventDataCollection, error)) EventDataCollectionPage { 2058 return EventDataCollectionPage{ 2059 fn: getNextPage, 2060 edc: cur, 2061 } 2062} 2063 2064// HTTPRequestInfo the Http request info. 2065type HTTPRequestInfo struct { 2066 // ClientRequestID - the client request id. 2067 ClientRequestID *string `json:"clientRequestId,omitempty"` 2068 // ClientIPAddress - the client Ip Address 2069 ClientIPAddress *string `json:"clientIpAddress,omitempty"` 2070 // Method - the Http request method. 2071 Method *string `json:"method,omitempty"` 2072 // URI - the Uri. 2073 URI *string `json:"uri,omitempty"` 2074} 2075 2076// Incident an alert incident indicates the activation status of an alert rule. 2077type Incident struct { 2078 autorest.Response `json:"-"` 2079 // Name - READ-ONLY; Incident name. 2080 Name *string `json:"name,omitempty"` 2081 // RuleName - READ-ONLY; Rule name that is associated with the incident. 2082 RuleName *string `json:"ruleName,omitempty"` 2083 // IsActive - READ-ONLY; A boolean to indicate whether the incident is active or resolved. 2084 IsActive *bool `json:"isActive,omitempty"` 2085 // ActivatedTime - READ-ONLY; The time at which the incident was activated in ISO8601 format. 2086 ActivatedTime *date.Time `json:"activatedTime,omitempty"` 2087 // ResolvedTime - READ-ONLY; The time at which the incident was resolved in ISO8601 format. If null, it means the incident is still active. 2088 ResolvedTime *date.Time `json:"resolvedTime,omitempty"` 2089} 2090 2091// MarshalJSON is the custom marshaler for Incident. 2092func (i Incident) MarshalJSON() ([]byte, error) { 2093 objectMap := make(map[string]interface{}) 2094 return json.Marshal(objectMap) 2095} 2096 2097// IncidentListResult the List incidents operation response. 2098type IncidentListResult struct { 2099 autorest.Response `json:"-"` 2100 // Value - the incident collection. 2101 Value *[]Incident `json:"value,omitempty"` 2102} 2103 2104// ItsmReceiver an Itsm receiver. 2105type ItsmReceiver struct { 2106 // Name - The name of the Itsm receiver. Names must be unique across all receivers within an action group. 2107 Name *string `json:"name,omitempty"` 2108 // WorkspaceID - OMS LA instance identifier. 2109 WorkspaceID *string `json:"workspaceId,omitempty"` 2110 // ConnectionID - Unique identification of ITSM connection among multiple defined in above workspace. 2111 ConnectionID *string `json:"connectionId,omitempty"` 2112 // TicketConfiguration - JSON blob for the configurations of the ITSM action. CreateMultipleWorkItems option will be part of this blob as well. 2113 TicketConfiguration *string `json:"ticketConfiguration,omitempty"` 2114 // Region - Region in which workspace resides. Supported values:'centralindia','japaneast','southeastasia','australiasoutheast','uksouth','westcentralus','canadacentral','eastus','westeurope' 2115 Region *string `json:"region,omitempty"` 2116} 2117 2118// LocalizableString the localizable string class. 2119type LocalizableString struct { 2120 // Value - the invariant value. 2121 Value *string `json:"value,omitempty"` 2122 // LocalizedValue - the locale specific value. 2123 LocalizedValue *string `json:"localizedValue,omitempty"` 2124} 2125 2126// LocationThresholdRuleCondition a rule condition based on a certain number of locations failing. 2127type LocationThresholdRuleCondition struct { 2128 // WindowSize - the period of time (in ISO 8601 duration format) that is used to monitor alert activity based on the threshold. If specified then it must be between 5 minutes and 1 day. 2129 WindowSize *string `json:"windowSize,omitempty"` 2130 // FailedLocationCount - the number of locations that must fail to activate the alert. 2131 FailedLocationCount *int32 `json:"failedLocationCount,omitempty"` 2132 // DataSource - the resource from which the rule collects its data. For this type dataSource will always be of type RuleMetricDataSource. 2133 DataSource BasicRuleDataSource `json:"dataSource,omitempty"` 2134 // OdataType - Possible values include: 'OdataTypeRuleCondition', 'OdataTypeMicrosoftAzureManagementInsightsModelsThresholdRuleCondition', 'OdataTypeMicrosoftAzureManagementInsightsModelsLocationThresholdRuleCondition', 'OdataTypeMicrosoftAzureManagementInsightsModelsManagementEventRuleCondition' 2135 OdataType OdataTypeBasicRuleCondition `json:"odata.type,omitempty"` 2136} 2137 2138// MarshalJSON is the custom marshaler for LocationThresholdRuleCondition. 2139func (ltrc LocationThresholdRuleCondition) MarshalJSON() ([]byte, error) { 2140 ltrc.OdataType = OdataTypeMicrosoftAzureManagementInsightsModelsLocationThresholdRuleCondition 2141 objectMap := make(map[string]interface{}) 2142 if ltrc.WindowSize != nil { 2143 objectMap["windowSize"] = ltrc.WindowSize 2144 } 2145 if ltrc.FailedLocationCount != nil { 2146 objectMap["failedLocationCount"] = ltrc.FailedLocationCount 2147 } 2148 objectMap["dataSource"] = ltrc.DataSource 2149 if ltrc.OdataType != "" { 2150 objectMap["odata.type"] = ltrc.OdataType 2151 } 2152 return json.Marshal(objectMap) 2153} 2154 2155// AsThresholdRuleCondition is the BasicRuleCondition implementation for LocationThresholdRuleCondition. 2156func (ltrc LocationThresholdRuleCondition) AsThresholdRuleCondition() (*ThresholdRuleCondition, bool) { 2157 return nil, false 2158} 2159 2160// AsLocationThresholdRuleCondition is the BasicRuleCondition implementation for LocationThresholdRuleCondition. 2161func (ltrc LocationThresholdRuleCondition) AsLocationThresholdRuleCondition() (*LocationThresholdRuleCondition, bool) { 2162 return <rc, true 2163} 2164 2165// AsManagementEventRuleCondition is the BasicRuleCondition implementation for LocationThresholdRuleCondition. 2166func (ltrc LocationThresholdRuleCondition) AsManagementEventRuleCondition() (*ManagementEventRuleCondition, bool) { 2167 return nil, false 2168} 2169 2170// AsRuleCondition is the BasicRuleCondition implementation for LocationThresholdRuleCondition. 2171func (ltrc LocationThresholdRuleCondition) AsRuleCondition() (*RuleCondition, bool) { 2172 return nil, false 2173} 2174 2175// AsBasicRuleCondition is the BasicRuleCondition implementation for LocationThresholdRuleCondition. 2176func (ltrc LocationThresholdRuleCondition) AsBasicRuleCondition() (BasicRuleCondition, bool) { 2177 return <rc, true 2178} 2179 2180// UnmarshalJSON is the custom unmarshaler for LocationThresholdRuleCondition struct. 2181func (ltrc *LocationThresholdRuleCondition) UnmarshalJSON(body []byte) error { 2182 var m map[string]*json.RawMessage 2183 err := json.Unmarshal(body, &m) 2184 if err != nil { 2185 return err 2186 } 2187 for k, v := range m { 2188 switch k { 2189 case "windowSize": 2190 if v != nil { 2191 var windowSize string 2192 err = json.Unmarshal(*v, &windowSize) 2193 if err != nil { 2194 return err 2195 } 2196 ltrc.WindowSize = &windowSize 2197 } 2198 case "failedLocationCount": 2199 if v != nil { 2200 var failedLocationCount int32 2201 err = json.Unmarshal(*v, &failedLocationCount) 2202 if err != nil { 2203 return err 2204 } 2205 ltrc.FailedLocationCount = &failedLocationCount 2206 } 2207 case "dataSource": 2208 if v != nil { 2209 dataSource, err := unmarshalBasicRuleDataSource(*v) 2210 if err != nil { 2211 return err 2212 } 2213 ltrc.DataSource = dataSource 2214 } 2215 case "odata.type": 2216 if v != nil { 2217 var odataType OdataTypeBasicRuleCondition 2218 err = json.Unmarshal(*v, &odataType) 2219 if err != nil { 2220 return err 2221 } 2222 ltrc.OdataType = odataType 2223 } 2224 } 2225 } 2226 2227 return nil 2228} 2229 2230// LogicAppReceiver a logic app receiver. 2231type LogicAppReceiver struct { 2232 // Name - The name of the logic app receiver. Names must be unique across all receivers within an action group. 2233 Name *string `json:"name,omitempty"` 2234 // ResourceID - The azure resource id of the logic app receiver. 2235 ResourceID *string `json:"resourceId,omitempty"` 2236 // CallbackURL - The callback url where http request sent to. 2237 CallbackURL *string `json:"callbackUrl,omitempty"` 2238} 2239 2240// LogMetricTrigger a log metrics trigger descriptor. 2241type LogMetricTrigger struct { 2242 // ThresholdOperator - Evaluation operation for Metric -'GreaterThan' or 'LessThan' or 'Equal'. Possible values include: 'ConditionalOperatorGreaterThan', 'ConditionalOperatorLessThan', 'ConditionalOperatorEqual' 2243 ThresholdOperator ConditionalOperator `json:"thresholdOperator,omitempty"` 2244 // Threshold - The threshold of the metric trigger. 2245 Threshold *float64 `json:"threshold,omitempty"` 2246 // MetricTriggerType - Metric Trigger Type - 'Consecutive' or 'Total'. Possible values include: 'MetricTriggerTypeConsecutive', 'MetricTriggerTypeTotal' 2247 MetricTriggerType MetricTriggerType `json:"metricTriggerType,omitempty"` 2248 // MetricColumn - Evaluation of metric on a particular column 2249 MetricColumn *string `json:"metricColumn,omitempty"` 2250} 2251 2252// LogProfileCollection represents a collection of log profiles. 2253type LogProfileCollection struct { 2254 autorest.Response `json:"-"` 2255 // Value - the values of the log profiles. 2256 Value *[]LogProfileResource `json:"value,omitempty"` 2257} 2258 2259// LogProfileProperties the log profile properties. 2260type LogProfileProperties struct { 2261 // StorageAccountID - the resource id of the storage account to which you would like to send the Activity Log. 2262 StorageAccountID *string `json:"storageAccountId,omitempty"` 2263 // ServiceBusRuleID - The service bus rule ID of the service bus namespace in which you would like to have Event Hubs created for streaming the Activity Log. The rule ID is of the format: '{service bus resource ID}/authorizationrules/{key name}'. 2264 ServiceBusRuleID *string `json:"serviceBusRuleId,omitempty"` 2265 // Locations - List of regions for which Activity Log events should be stored or streamed. It is a comma separated list of valid ARM locations including the 'global' location. 2266 Locations *[]string `json:"locations,omitempty"` 2267 // Categories - the categories of the logs. These categories are created as is convenient to the user. Some values are: 'Write', 'Delete', and/or 'Action.' 2268 Categories *[]string `json:"categories,omitempty"` 2269 // RetentionPolicy - the retention policy for the events in the log. 2270 RetentionPolicy *RetentionPolicy `json:"retentionPolicy,omitempty"` 2271} 2272 2273// LogProfileResource the log profile resource. 2274type LogProfileResource struct { 2275 autorest.Response `json:"-"` 2276 // LogProfileProperties - The log profile properties of the resource. 2277 *LogProfileProperties `json:"properties,omitempty"` 2278 // ID - READ-ONLY; Azure resource Id 2279 ID *string `json:"id,omitempty"` 2280 // Name - READ-ONLY; Azure resource name 2281 Name *string `json:"name,omitempty"` 2282 // Type - READ-ONLY; Azure resource type 2283 Type *string `json:"type,omitempty"` 2284 // Location - Resource location 2285 Location *string `json:"location,omitempty"` 2286 // Tags - Resource tags 2287 Tags map[string]*string `json:"tags"` 2288} 2289 2290// MarshalJSON is the custom marshaler for LogProfileResource. 2291func (lpr LogProfileResource) MarshalJSON() ([]byte, error) { 2292 objectMap := make(map[string]interface{}) 2293 if lpr.LogProfileProperties != nil { 2294 objectMap["properties"] = lpr.LogProfileProperties 2295 } 2296 if lpr.Location != nil { 2297 objectMap["location"] = lpr.Location 2298 } 2299 if lpr.Tags != nil { 2300 objectMap["tags"] = lpr.Tags 2301 } 2302 return json.Marshal(objectMap) 2303} 2304 2305// UnmarshalJSON is the custom unmarshaler for LogProfileResource struct. 2306func (lpr *LogProfileResource) UnmarshalJSON(body []byte) error { 2307 var m map[string]*json.RawMessage 2308 err := json.Unmarshal(body, &m) 2309 if err != nil { 2310 return err 2311 } 2312 for k, v := range m { 2313 switch k { 2314 case "properties": 2315 if v != nil { 2316 var logProfileProperties LogProfileProperties 2317 err = json.Unmarshal(*v, &logProfileProperties) 2318 if err != nil { 2319 return err 2320 } 2321 lpr.LogProfileProperties = &logProfileProperties 2322 } 2323 case "id": 2324 if v != nil { 2325 var ID string 2326 err = json.Unmarshal(*v, &ID) 2327 if err != nil { 2328 return err 2329 } 2330 lpr.ID = &ID 2331 } 2332 case "name": 2333 if v != nil { 2334 var name string 2335 err = json.Unmarshal(*v, &name) 2336 if err != nil { 2337 return err 2338 } 2339 lpr.Name = &name 2340 } 2341 case "type": 2342 if v != nil { 2343 var typeVar string 2344 err = json.Unmarshal(*v, &typeVar) 2345 if err != nil { 2346 return err 2347 } 2348 lpr.Type = &typeVar 2349 } 2350 case "location": 2351 if v != nil { 2352 var location string 2353 err = json.Unmarshal(*v, &location) 2354 if err != nil { 2355 return err 2356 } 2357 lpr.Location = &location 2358 } 2359 case "tags": 2360 if v != nil { 2361 var tags map[string]*string 2362 err = json.Unmarshal(*v, &tags) 2363 if err != nil { 2364 return err 2365 } 2366 lpr.Tags = tags 2367 } 2368 } 2369 } 2370 2371 return nil 2372} 2373 2374// LogProfileResourcePatch the log profile resource for patch operations. 2375type LogProfileResourcePatch struct { 2376 // Tags - Resource tags 2377 Tags map[string]*string `json:"tags"` 2378 // LogProfileProperties - The log profile properties for an update operation. 2379 *LogProfileProperties `json:"properties,omitempty"` 2380} 2381 2382// MarshalJSON is the custom marshaler for LogProfileResourcePatch. 2383func (lprp LogProfileResourcePatch) MarshalJSON() ([]byte, error) { 2384 objectMap := make(map[string]interface{}) 2385 if lprp.Tags != nil { 2386 objectMap["tags"] = lprp.Tags 2387 } 2388 if lprp.LogProfileProperties != nil { 2389 objectMap["properties"] = lprp.LogProfileProperties 2390 } 2391 return json.Marshal(objectMap) 2392} 2393 2394// UnmarshalJSON is the custom unmarshaler for LogProfileResourcePatch struct. 2395func (lprp *LogProfileResourcePatch) UnmarshalJSON(body []byte) error { 2396 var m map[string]*json.RawMessage 2397 err := json.Unmarshal(body, &m) 2398 if err != nil { 2399 return err 2400 } 2401 for k, v := range m { 2402 switch k { 2403 case "tags": 2404 if v != nil { 2405 var tags map[string]*string 2406 err = json.Unmarshal(*v, &tags) 2407 if err != nil { 2408 return err 2409 } 2410 lprp.Tags = tags 2411 } 2412 case "properties": 2413 if v != nil { 2414 var logProfileProperties LogProfileProperties 2415 err = json.Unmarshal(*v, &logProfileProperties) 2416 if err != nil { 2417 return err 2418 } 2419 lprp.LogProfileProperties = &logProfileProperties 2420 } 2421 } 2422 } 2423 2424 return nil 2425} 2426 2427// LogSearchRule log Search Rule Definition 2428type LogSearchRule struct { 2429 // Description - The description of the Log Search rule. 2430 Description *string `json:"description,omitempty"` 2431 // Enabled - The flag which indicates whether the Log Search rule is enabled. Value should be true or false. Possible values include: 'True', 'False' 2432 Enabled Enabled `json:"enabled,omitempty"` 2433 // LastUpdatedTime - READ-ONLY; Last time the rule was updated in IS08601 format. 2434 LastUpdatedTime *date.Time `json:"lastUpdatedTime,omitempty"` 2435 // ProvisioningState - READ-ONLY; Provisioning state of the scheduled query rule. Possible values include: 'Succeeded', 'Deploying', 'Canceled', 'Failed' 2436 ProvisioningState ProvisioningState `json:"provisioningState,omitempty"` 2437 // Source - Data Source against which rule will Query Data 2438 Source *Source `json:"source,omitempty"` 2439 // Schedule - Schedule (Frequency, Time Window) for rule. Required for action type - AlertingAction 2440 Schedule *Schedule `json:"schedule,omitempty"` 2441 // Action - Action needs to be taken on rule execution. 2442 Action BasicAction `json:"action,omitempty"` 2443} 2444 2445// MarshalJSON is the custom marshaler for LogSearchRule. 2446func (lsr LogSearchRule) MarshalJSON() ([]byte, error) { 2447 objectMap := make(map[string]interface{}) 2448 if lsr.Description != nil { 2449 objectMap["description"] = lsr.Description 2450 } 2451 if lsr.Enabled != "" { 2452 objectMap["enabled"] = lsr.Enabled 2453 } 2454 if lsr.Source != nil { 2455 objectMap["source"] = lsr.Source 2456 } 2457 if lsr.Schedule != nil { 2458 objectMap["schedule"] = lsr.Schedule 2459 } 2460 objectMap["action"] = lsr.Action 2461 return json.Marshal(objectMap) 2462} 2463 2464// UnmarshalJSON is the custom unmarshaler for LogSearchRule struct. 2465func (lsr *LogSearchRule) UnmarshalJSON(body []byte) error { 2466 var m map[string]*json.RawMessage 2467 err := json.Unmarshal(body, &m) 2468 if err != nil { 2469 return err 2470 } 2471 for k, v := range m { 2472 switch k { 2473 case "description": 2474 if v != nil { 2475 var description string 2476 err = json.Unmarshal(*v, &description) 2477 if err != nil { 2478 return err 2479 } 2480 lsr.Description = &description 2481 } 2482 case "enabled": 2483 if v != nil { 2484 var enabled Enabled 2485 err = json.Unmarshal(*v, &enabled) 2486 if err != nil { 2487 return err 2488 } 2489 lsr.Enabled = enabled 2490 } 2491 case "lastUpdatedTime": 2492 if v != nil { 2493 var lastUpdatedTime date.Time 2494 err = json.Unmarshal(*v, &lastUpdatedTime) 2495 if err != nil { 2496 return err 2497 } 2498 lsr.LastUpdatedTime = &lastUpdatedTime 2499 } 2500 case "provisioningState": 2501 if v != nil { 2502 var provisioningState ProvisioningState 2503 err = json.Unmarshal(*v, &provisioningState) 2504 if err != nil { 2505 return err 2506 } 2507 lsr.ProvisioningState = provisioningState 2508 } 2509 case "source": 2510 if v != nil { 2511 var source Source 2512 err = json.Unmarshal(*v, &source) 2513 if err != nil { 2514 return err 2515 } 2516 lsr.Source = &source 2517 } 2518 case "schedule": 2519 if v != nil { 2520 var schedule Schedule 2521 err = json.Unmarshal(*v, &schedule) 2522 if err != nil { 2523 return err 2524 } 2525 lsr.Schedule = &schedule 2526 } 2527 case "action": 2528 if v != nil { 2529 action, err := unmarshalBasicAction(*v) 2530 if err != nil { 2531 return err 2532 } 2533 lsr.Action = action 2534 } 2535 } 2536 } 2537 2538 return nil 2539} 2540 2541// LogSearchRulePatch log Search Rule Definition for Patching 2542type LogSearchRulePatch struct { 2543 // Enabled - The flag which indicates whether the Log Search rule is enabled. Value should be true or false. Possible values include: 'True', 'False' 2544 Enabled Enabled `json:"enabled,omitempty"` 2545} 2546 2547// LogSearchRuleResource the Log Search Rule resource. 2548type LogSearchRuleResource struct { 2549 autorest.Response `json:"-"` 2550 // LogSearchRule - The rule properties of the resource. 2551 *LogSearchRule `json:"properties,omitempty"` 2552 // ID - READ-ONLY; Azure resource Id 2553 ID *string `json:"id,omitempty"` 2554 // Name - READ-ONLY; Azure resource name 2555 Name *string `json:"name,omitempty"` 2556 // Type - READ-ONLY; Azure resource type 2557 Type *string `json:"type,omitempty"` 2558 // Location - Resource location 2559 Location *string `json:"location,omitempty"` 2560 // Tags - Resource tags 2561 Tags map[string]*string `json:"tags"` 2562} 2563 2564// MarshalJSON is the custom marshaler for LogSearchRuleResource. 2565func (lsrr LogSearchRuleResource) MarshalJSON() ([]byte, error) { 2566 objectMap := make(map[string]interface{}) 2567 if lsrr.LogSearchRule != nil { 2568 objectMap["properties"] = lsrr.LogSearchRule 2569 } 2570 if lsrr.Location != nil { 2571 objectMap["location"] = lsrr.Location 2572 } 2573 if lsrr.Tags != nil { 2574 objectMap["tags"] = lsrr.Tags 2575 } 2576 return json.Marshal(objectMap) 2577} 2578 2579// UnmarshalJSON is the custom unmarshaler for LogSearchRuleResource struct. 2580func (lsrr *LogSearchRuleResource) UnmarshalJSON(body []byte) error { 2581 var m map[string]*json.RawMessage 2582 err := json.Unmarshal(body, &m) 2583 if err != nil { 2584 return err 2585 } 2586 for k, v := range m { 2587 switch k { 2588 case "properties": 2589 if v != nil { 2590 var logSearchRule LogSearchRule 2591 err = json.Unmarshal(*v, &logSearchRule) 2592 if err != nil { 2593 return err 2594 } 2595 lsrr.LogSearchRule = &logSearchRule 2596 } 2597 case "id": 2598 if v != nil { 2599 var ID string 2600 err = json.Unmarshal(*v, &ID) 2601 if err != nil { 2602 return err 2603 } 2604 lsrr.ID = &ID 2605 } 2606 case "name": 2607 if v != nil { 2608 var name string 2609 err = json.Unmarshal(*v, &name) 2610 if err != nil { 2611 return err 2612 } 2613 lsrr.Name = &name 2614 } 2615 case "type": 2616 if v != nil { 2617 var typeVar string 2618 err = json.Unmarshal(*v, &typeVar) 2619 if err != nil { 2620 return err 2621 } 2622 lsrr.Type = &typeVar 2623 } 2624 case "location": 2625 if v != nil { 2626 var location string 2627 err = json.Unmarshal(*v, &location) 2628 if err != nil { 2629 return err 2630 } 2631 lsrr.Location = &location 2632 } 2633 case "tags": 2634 if v != nil { 2635 var tags map[string]*string 2636 err = json.Unmarshal(*v, &tags) 2637 if err != nil { 2638 return err 2639 } 2640 lsrr.Tags = tags 2641 } 2642 } 2643 } 2644 2645 return nil 2646} 2647 2648// LogSearchRuleResourceCollection represents a collection of Log Search rule resources. 2649type LogSearchRuleResourceCollection struct { 2650 autorest.Response `json:"-"` 2651 // Value - The values for the Log Search Rule resources. 2652 Value *[]LogSearchRuleResource `json:"value,omitempty"` 2653} 2654 2655// LogSearchRuleResourcePatch the log search rule resource for patch operations. 2656type LogSearchRuleResourcePatch struct { 2657 // Tags - Resource tags 2658 Tags map[string]*string `json:"tags"` 2659 // LogSearchRulePatch - The log search rule properties of the resource. 2660 *LogSearchRulePatch `json:"properties,omitempty"` 2661} 2662 2663// MarshalJSON is the custom marshaler for LogSearchRuleResourcePatch. 2664func (lsrrp LogSearchRuleResourcePatch) MarshalJSON() ([]byte, error) { 2665 objectMap := make(map[string]interface{}) 2666 if lsrrp.Tags != nil { 2667 objectMap["tags"] = lsrrp.Tags 2668 } 2669 if lsrrp.LogSearchRulePatch != nil { 2670 objectMap["properties"] = lsrrp.LogSearchRulePatch 2671 } 2672 return json.Marshal(objectMap) 2673} 2674 2675// UnmarshalJSON is the custom unmarshaler for LogSearchRuleResourcePatch struct. 2676func (lsrrp *LogSearchRuleResourcePatch) UnmarshalJSON(body []byte) error { 2677 var m map[string]*json.RawMessage 2678 err := json.Unmarshal(body, &m) 2679 if err != nil { 2680 return err 2681 } 2682 for k, v := range m { 2683 switch k { 2684 case "tags": 2685 if v != nil { 2686 var tags map[string]*string 2687 err = json.Unmarshal(*v, &tags) 2688 if err != nil { 2689 return err 2690 } 2691 lsrrp.Tags = tags 2692 } 2693 case "properties": 2694 if v != nil { 2695 var logSearchRulePatch LogSearchRulePatch 2696 err = json.Unmarshal(*v, &logSearchRulePatch) 2697 if err != nil { 2698 return err 2699 } 2700 lsrrp.LogSearchRulePatch = &logSearchRulePatch 2701 } 2702 } 2703 } 2704 2705 return nil 2706} 2707 2708// LogSettings part of MultiTenantDiagnosticSettings. Specifies the settings for a particular log. 2709type LogSettings struct { 2710 // Category - Name of a Diagnostic Log category for a resource type this setting is applied to. To obtain the list of Diagnostic Log categories for a resource, first perform a GET diagnostic settings operation. 2711 Category *string `json:"category,omitempty"` 2712 // Enabled - a value indicating whether this log is enabled. 2713 Enabled *bool `json:"enabled,omitempty"` 2714 // RetentionPolicy - the retention policy for this log. 2715 RetentionPolicy *RetentionPolicy `json:"retentionPolicy,omitempty"` 2716} 2717 2718// LogToMetricAction specify action need to be taken when rule type is converting log to metric 2719type LogToMetricAction struct { 2720 // Criteria - Criteria of Metric 2721 Criteria *[]Criteria `json:"criteria,omitempty"` 2722 // OdataType - Possible values include: 'OdataTypeAction', 'OdataTypeMicrosoftWindowsAzureManagementMonitoringAlertsModelsMicrosoftAppInsightsNexusDataContractsResourcesScheduledQueryRulesAlertingAction', 'OdataTypeMicrosoftWindowsAzureManagementMonitoringAlertsModelsMicrosoftAppInsightsNexusDataContractsResourcesScheduledQueryRulesLogToMetricAction' 2723 OdataType OdataTypeBasicAction `json:"odata.type,omitempty"` 2724} 2725 2726// MarshalJSON is the custom marshaler for LogToMetricAction. 2727func (ltma LogToMetricAction) MarshalJSON() ([]byte, error) { 2728 ltma.OdataType = OdataTypeMicrosoftWindowsAzureManagementMonitoringAlertsModelsMicrosoftAppInsightsNexusDataContractsResourcesScheduledQueryRulesLogToMetricAction 2729 objectMap := make(map[string]interface{}) 2730 if ltma.Criteria != nil { 2731 objectMap["criteria"] = ltma.Criteria 2732 } 2733 if ltma.OdataType != "" { 2734 objectMap["odata.type"] = ltma.OdataType 2735 } 2736 return json.Marshal(objectMap) 2737} 2738 2739// AsAlertingAction is the BasicAction implementation for LogToMetricAction. 2740func (ltma LogToMetricAction) AsAlertingAction() (*AlertingAction, bool) { 2741 return nil, false 2742} 2743 2744// AsLogToMetricAction is the BasicAction implementation for LogToMetricAction. 2745func (ltma LogToMetricAction) AsLogToMetricAction() (*LogToMetricAction, bool) { 2746 return <ma, true 2747} 2748 2749// AsAction is the BasicAction implementation for LogToMetricAction. 2750func (ltma LogToMetricAction) AsAction() (*Action, bool) { 2751 return nil, false 2752} 2753 2754// AsBasicAction is the BasicAction implementation for LogToMetricAction. 2755func (ltma LogToMetricAction) AsBasicAction() (BasicAction, bool) { 2756 return <ma, true 2757} 2758 2759// ManagementEventAggregationCondition how the data that is collected should be combined over time. 2760type ManagementEventAggregationCondition struct { 2761 // Operator - the condition operator. Possible values include: 'ConditionOperatorGreaterThan', 'ConditionOperatorGreaterThanOrEqual', 'ConditionOperatorLessThan', 'ConditionOperatorLessThanOrEqual' 2762 Operator ConditionOperator `json:"operator,omitempty"` 2763 // Threshold - The threshold value that activates the alert. 2764 Threshold *float64 `json:"threshold,omitempty"` 2765 // WindowSize - the period of time (in ISO 8601 duration format) that is used to monitor alert activity based on the threshold. If specified then it must be between 5 minutes and 1 day. 2766 WindowSize *string `json:"windowSize,omitempty"` 2767} 2768 2769// ManagementEventRuleCondition a management event rule condition. 2770type ManagementEventRuleCondition struct { 2771 // Aggregation - How the data that is collected should be combined over time and when the alert is activated. Note that for management event alerts aggregation is optional – if it is not provided then any event will cause the alert to activate. 2772 Aggregation *ManagementEventAggregationCondition `json:"aggregation,omitempty"` 2773 // DataSource - the resource from which the rule collects its data. For this type dataSource will always be of type RuleMetricDataSource. 2774 DataSource BasicRuleDataSource `json:"dataSource,omitempty"` 2775 // OdataType - Possible values include: 'OdataTypeRuleCondition', 'OdataTypeMicrosoftAzureManagementInsightsModelsThresholdRuleCondition', 'OdataTypeMicrosoftAzureManagementInsightsModelsLocationThresholdRuleCondition', 'OdataTypeMicrosoftAzureManagementInsightsModelsManagementEventRuleCondition' 2776 OdataType OdataTypeBasicRuleCondition `json:"odata.type,omitempty"` 2777} 2778 2779// MarshalJSON is the custom marshaler for ManagementEventRuleCondition. 2780func (merc ManagementEventRuleCondition) MarshalJSON() ([]byte, error) { 2781 merc.OdataType = OdataTypeMicrosoftAzureManagementInsightsModelsManagementEventRuleCondition 2782 objectMap := make(map[string]interface{}) 2783 if merc.Aggregation != nil { 2784 objectMap["aggregation"] = merc.Aggregation 2785 } 2786 objectMap["dataSource"] = merc.DataSource 2787 if merc.OdataType != "" { 2788 objectMap["odata.type"] = merc.OdataType 2789 } 2790 return json.Marshal(objectMap) 2791} 2792 2793// AsThresholdRuleCondition is the BasicRuleCondition implementation for ManagementEventRuleCondition. 2794func (merc ManagementEventRuleCondition) AsThresholdRuleCondition() (*ThresholdRuleCondition, bool) { 2795 return nil, false 2796} 2797 2798// AsLocationThresholdRuleCondition is the BasicRuleCondition implementation for ManagementEventRuleCondition. 2799func (merc ManagementEventRuleCondition) AsLocationThresholdRuleCondition() (*LocationThresholdRuleCondition, bool) { 2800 return nil, false 2801} 2802 2803// AsManagementEventRuleCondition is the BasicRuleCondition implementation for ManagementEventRuleCondition. 2804func (merc ManagementEventRuleCondition) AsManagementEventRuleCondition() (*ManagementEventRuleCondition, bool) { 2805 return &merc, true 2806} 2807 2808// AsRuleCondition is the BasicRuleCondition implementation for ManagementEventRuleCondition. 2809func (merc ManagementEventRuleCondition) AsRuleCondition() (*RuleCondition, bool) { 2810 return nil, false 2811} 2812 2813// AsBasicRuleCondition is the BasicRuleCondition implementation for ManagementEventRuleCondition. 2814func (merc ManagementEventRuleCondition) AsBasicRuleCondition() (BasicRuleCondition, bool) { 2815 return &merc, true 2816} 2817 2818// UnmarshalJSON is the custom unmarshaler for ManagementEventRuleCondition struct. 2819func (merc *ManagementEventRuleCondition) UnmarshalJSON(body []byte) error { 2820 var m map[string]*json.RawMessage 2821 err := json.Unmarshal(body, &m) 2822 if err != nil { 2823 return err 2824 } 2825 for k, v := range m { 2826 switch k { 2827 case "aggregation": 2828 if v != nil { 2829 var aggregation ManagementEventAggregationCondition 2830 err = json.Unmarshal(*v, &aggregation) 2831 if err != nil { 2832 return err 2833 } 2834 merc.Aggregation = &aggregation 2835 } 2836 case "dataSource": 2837 if v != nil { 2838 dataSource, err := unmarshalBasicRuleDataSource(*v) 2839 if err != nil { 2840 return err 2841 } 2842 merc.DataSource = dataSource 2843 } 2844 case "odata.type": 2845 if v != nil { 2846 var odataType OdataTypeBasicRuleCondition 2847 err = json.Unmarshal(*v, &odataType) 2848 if err != nil { 2849 return err 2850 } 2851 merc.OdataType = odataType 2852 } 2853 } 2854 } 2855 2856 return nil 2857} 2858 2859// MetadataValue represents a metric metadata value. 2860type MetadataValue struct { 2861 // Name - the name of the metadata. 2862 Name *LocalizableString `json:"name,omitempty"` 2863 // Value - the value of the metadata. 2864 Value *string `json:"value,omitempty"` 2865} 2866 2867// Metric the result data of a query. 2868type Metric struct { 2869 // ID - the metric Id. 2870 ID *string `json:"id,omitempty"` 2871 // Type - the resource type of the metric resource. 2872 Type *string `json:"type,omitempty"` 2873 // Name - the name and the display name of the metric, i.e. it is localizable string. 2874 Name *LocalizableString `json:"name,omitempty"` 2875 // Unit - the unit of the metric. Possible values include: 'UnitCount', 'UnitBytes', 'UnitSeconds', 'UnitCountPerSecond', 'UnitBytesPerSecond', 'UnitPercent', 'UnitMilliSeconds', 'UnitByteSeconds', 'UnitUnspecified', 'UnitCores', 'UnitMilliCores', 'UnitNanoCores', 'UnitBitsPerSecond' 2876 Unit Unit `json:"unit,omitempty"` 2877 // Timeseries - the time series returned when a data query is performed. 2878 Timeseries *[]TimeSeriesElement `json:"timeseries,omitempty"` 2879} 2880 2881// MetricAlertAction an alert action. 2882type MetricAlertAction struct { 2883 // ActionGroupID - the id of the action group to use. 2884 ActionGroupID *string `json:"actionGroupId,omitempty"` 2885 // WebHookProperties - The properties of a webhook object. 2886 WebHookProperties map[string]*string `json:"webHookProperties"` 2887} 2888 2889// MarshalJSON is the custom marshaler for MetricAlertAction. 2890func (maa MetricAlertAction) MarshalJSON() ([]byte, error) { 2891 objectMap := make(map[string]interface{}) 2892 if maa.ActionGroupID != nil { 2893 objectMap["actionGroupId"] = maa.ActionGroupID 2894 } 2895 if maa.WebHookProperties != nil { 2896 objectMap["webHookProperties"] = maa.WebHookProperties 2897 } 2898 return json.Marshal(objectMap) 2899} 2900 2901// BasicMetricAlertCriteria the rule criteria that defines the conditions of the alert rule. 2902type BasicMetricAlertCriteria interface { 2903 AsMetricAlertSingleResourceMultipleMetricCriteria() (*MetricAlertSingleResourceMultipleMetricCriteria, bool) 2904 AsWebtestLocationAvailabilityCriteria() (*WebtestLocationAvailabilityCriteria, bool) 2905 AsMetricAlertMultipleResourceMultipleMetricCriteria() (*MetricAlertMultipleResourceMultipleMetricCriteria, bool) 2906 AsMetricAlertCriteria() (*MetricAlertCriteria, bool) 2907} 2908 2909// MetricAlertCriteria the rule criteria that defines the conditions of the alert rule. 2910type MetricAlertCriteria struct { 2911 // AdditionalProperties - Unmatched properties from the message are deserialized this collection 2912 AdditionalProperties map[string]interface{} `json:""` 2913 // OdataType - Possible values include: 'OdataTypeMetricAlertCriteria', 'OdataTypeMicrosoftAzureMonitorSingleResourceMultipleMetricCriteria', 'OdataTypeMicrosoftAzureMonitorWebtestLocationAvailabilityCriteria', 'OdataTypeMicrosoftAzureMonitorMultipleResourceMultipleMetricCriteria' 2914 OdataType OdataTypeBasicMetricAlertCriteria `json:"odata.type,omitempty"` 2915} 2916 2917func unmarshalBasicMetricAlertCriteria(body []byte) (BasicMetricAlertCriteria, error) { 2918 var m map[string]interface{} 2919 err := json.Unmarshal(body, &m) 2920 if err != nil { 2921 return nil, err 2922 } 2923 2924 switch m["odata.type"] { 2925 case string(OdataTypeMicrosoftAzureMonitorSingleResourceMultipleMetricCriteria): 2926 var masrmmc MetricAlertSingleResourceMultipleMetricCriteria 2927 err := json.Unmarshal(body, &masrmmc) 2928 return masrmmc, err 2929 case string(OdataTypeMicrosoftAzureMonitorWebtestLocationAvailabilityCriteria): 2930 var wlac WebtestLocationAvailabilityCriteria 2931 err := json.Unmarshal(body, &wlac) 2932 return wlac, err 2933 case string(OdataTypeMicrosoftAzureMonitorMultipleResourceMultipleMetricCriteria): 2934 var mamrmmc MetricAlertMultipleResourceMultipleMetricCriteria 2935 err := json.Unmarshal(body, &mamrmmc) 2936 return mamrmmc, err 2937 default: 2938 var mac MetricAlertCriteria 2939 err := json.Unmarshal(body, &mac) 2940 return mac, err 2941 } 2942} 2943func unmarshalBasicMetricAlertCriteriaArray(body []byte) ([]BasicMetricAlertCriteria, error) { 2944 var rawMessages []*json.RawMessage 2945 err := json.Unmarshal(body, &rawMessages) 2946 if err != nil { 2947 return nil, err 2948 } 2949 2950 macArray := make([]BasicMetricAlertCriteria, len(rawMessages)) 2951 2952 for index, rawMessage := range rawMessages { 2953 mac, err := unmarshalBasicMetricAlertCriteria(*rawMessage) 2954 if err != nil { 2955 return nil, err 2956 } 2957 macArray[index] = mac 2958 } 2959 return macArray, nil 2960} 2961 2962// MarshalJSON is the custom marshaler for MetricAlertCriteria. 2963func (mac MetricAlertCriteria) MarshalJSON() ([]byte, error) { 2964 mac.OdataType = OdataTypeMetricAlertCriteria 2965 objectMap := make(map[string]interface{}) 2966 if mac.OdataType != "" { 2967 objectMap["odata.type"] = mac.OdataType 2968 } 2969 for k, v := range mac.AdditionalProperties { 2970 objectMap[k] = v 2971 } 2972 return json.Marshal(objectMap) 2973} 2974 2975// AsMetricAlertSingleResourceMultipleMetricCriteria is the BasicMetricAlertCriteria implementation for MetricAlertCriteria. 2976func (mac MetricAlertCriteria) AsMetricAlertSingleResourceMultipleMetricCriteria() (*MetricAlertSingleResourceMultipleMetricCriteria, bool) { 2977 return nil, false 2978} 2979 2980// AsWebtestLocationAvailabilityCriteria is the BasicMetricAlertCriteria implementation for MetricAlertCriteria. 2981func (mac MetricAlertCriteria) AsWebtestLocationAvailabilityCriteria() (*WebtestLocationAvailabilityCriteria, bool) { 2982 return nil, false 2983} 2984 2985// AsMetricAlertMultipleResourceMultipleMetricCriteria is the BasicMetricAlertCriteria implementation for MetricAlertCriteria. 2986func (mac MetricAlertCriteria) AsMetricAlertMultipleResourceMultipleMetricCriteria() (*MetricAlertMultipleResourceMultipleMetricCriteria, bool) { 2987 return nil, false 2988} 2989 2990// AsMetricAlertCriteria is the BasicMetricAlertCriteria implementation for MetricAlertCriteria. 2991func (mac MetricAlertCriteria) AsMetricAlertCriteria() (*MetricAlertCriteria, bool) { 2992 return &mac, true 2993} 2994 2995// AsBasicMetricAlertCriteria is the BasicMetricAlertCriteria implementation for MetricAlertCriteria. 2996func (mac MetricAlertCriteria) AsBasicMetricAlertCriteria() (BasicMetricAlertCriteria, bool) { 2997 return &mac, true 2998} 2999 3000// UnmarshalJSON is the custom unmarshaler for MetricAlertCriteria struct. 3001func (mac *MetricAlertCriteria) UnmarshalJSON(body []byte) error { 3002 var m map[string]*json.RawMessage 3003 err := json.Unmarshal(body, &m) 3004 if err != nil { 3005 return err 3006 } 3007 for k, v := range m { 3008 switch k { 3009 default: 3010 if v != nil { 3011 var additionalProperties interface{} 3012 err = json.Unmarshal(*v, &additionalProperties) 3013 if err != nil { 3014 return err 3015 } 3016 if mac.AdditionalProperties == nil { 3017 mac.AdditionalProperties = make(map[string]interface{}) 3018 } 3019 mac.AdditionalProperties[k] = additionalProperties 3020 } 3021 case "odata.type": 3022 if v != nil { 3023 var odataType OdataTypeBasicMetricAlertCriteria 3024 err = json.Unmarshal(*v, &odataType) 3025 if err != nil { 3026 return err 3027 } 3028 mac.OdataType = odataType 3029 } 3030 } 3031 } 3032 3033 return nil 3034} 3035 3036// MetricAlertMultipleResourceMultipleMetricCriteria specifies the metric alert criteria for multiple 3037// resource that has multiple metric criteria. 3038type MetricAlertMultipleResourceMultipleMetricCriteria struct { 3039 // AllOf - the list of multiple metric criteria for this 'all of' operation. 3040 AllOf *[]BasicMultiMetricCriteria `json:"allOf,omitempty"` 3041 // AdditionalProperties - Unmatched properties from the message are deserialized this collection 3042 AdditionalProperties map[string]interface{} `json:""` 3043 // OdataType - Possible values include: 'OdataTypeMetricAlertCriteria', 'OdataTypeMicrosoftAzureMonitorSingleResourceMultipleMetricCriteria', 'OdataTypeMicrosoftAzureMonitorWebtestLocationAvailabilityCriteria', 'OdataTypeMicrosoftAzureMonitorMultipleResourceMultipleMetricCriteria' 3044 OdataType OdataTypeBasicMetricAlertCriteria `json:"odata.type,omitempty"` 3045} 3046 3047// MarshalJSON is the custom marshaler for MetricAlertMultipleResourceMultipleMetricCriteria. 3048func (mamrmmc MetricAlertMultipleResourceMultipleMetricCriteria) MarshalJSON() ([]byte, error) { 3049 mamrmmc.OdataType = OdataTypeMicrosoftAzureMonitorMultipleResourceMultipleMetricCriteria 3050 objectMap := make(map[string]interface{}) 3051 if mamrmmc.AllOf != nil { 3052 objectMap["allOf"] = mamrmmc.AllOf 3053 } 3054 if mamrmmc.OdataType != "" { 3055 objectMap["odata.type"] = mamrmmc.OdataType 3056 } 3057 for k, v := range mamrmmc.AdditionalProperties { 3058 objectMap[k] = v 3059 } 3060 return json.Marshal(objectMap) 3061} 3062 3063// AsMetricAlertSingleResourceMultipleMetricCriteria is the BasicMetricAlertCriteria implementation for MetricAlertMultipleResourceMultipleMetricCriteria. 3064func (mamrmmc MetricAlertMultipleResourceMultipleMetricCriteria) AsMetricAlertSingleResourceMultipleMetricCriteria() (*MetricAlertSingleResourceMultipleMetricCriteria, bool) { 3065 return nil, false 3066} 3067 3068// AsWebtestLocationAvailabilityCriteria is the BasicMetricAlertCriteria implementation for MetricAlertMultipleResourceMultipleMetricCriteria. 3069func (mamrmmc MetricAlertMultipleResourceMultipleMetricCriteria) AsWebtestLocationAvailabilityCriteria() (*WebtestLocationAvailabilityCriteria, bool) { 3070 return nil, false 3071} 3072 3073// AsMetricAlertMultipleResourceMultipleMetricCriteria is the BasicMetricAlertCriteria implementation for MetricAlertMultipleResourceMultipleMetricCriteria. 3074func (mamrmmc MetricAlertMultipleResourceMultipleMetricCriteria) AsMetricAlertMultipleResourceMultipleMetricCriteria() (*MetricAlertMultipleResourceMultipleMetricCriteria, bool) { 3075 return &mamrmmc, true 3076} 3077 3078// AsMetricAlertCriteria is the BasicMetricAlertCriteria implementation for MetricAlertMultipleResourceMultipleMetricCriteria. 3079func (mamrmmc MetricAlertMultipleResourceMultipleMetricCriteria) AsMetricAlertCriteria() (*MetricAlertCriteria, bool) { 3080 return nil, false 3081} 3082 3083// AsBasicMetricAlertCriteria is the BasicMetricAlertCriteria implementation for MetricAlertMultipleResourceMultipleMetricCriteria. 3084func (mamrmmc MetricAlertMultipleResourceMultipleMetricCriteria) AsBasicMetricAlertCriteria() (BasicMetricAlertCriteria, bool) { 3085 return &mamrmmc, true 3086} 3087 3088// UnmarshalJSON is the custom unmarshaler for MetricAlertMultipleResourceMultipleMetricCriteria struct. 3089func (mamrmmc *MetricAlertMultipleResourceMultipleMetricCriteria) UnmarshalJSON(body []byte) error { 3090 var m map[string]*json.RawMessage 3091 err := json.Unmarshal(body, &m) 3092 if err != nil { 3093 return err 3094 } 3095 for k, v := range m { 3096 switch k { 3097 case "allOf": 3098 if v != nil { 3099 allOf, err := unmarshalBasicMultiMetricCriteriaArray(*v) 3100 if err != nil { 3101 return err 3102 } 3103 mamrmmc.AllOf = &allOf 3104 } 3105 default: 3106 if v != nil { 3107 var additionalProperties interface{} 3108 err = json.Unmarshal(*v, &additionalProperties) 3109 if err != nil { 3110 return err 3111 } 3112 if mamrmmc.AdditionalProperties == nil { 3113 mamrmmc.AdditionalProperties = make(map[string]interface{}) 3114 } 3115 mamrmmc.AdditionalProperties[k] = additionalProperties 3116 } 3117 case "odata.type": 3118 if v != nil { 3119 var odataType OdataTypeBasicMetricAlertCriteria 3120 err = json.Unmarshal(*v, &odataType) 3121 if err != nil { 3122 return err 3123 } 3124 mamrmmc.OdataType = odataType 3125 } 3126 } 3127 } 3128 3129 return nil 3130} 3131 3132// MetricAlertProperties an alert rule. 3133type MetricAlertProperties struct { 3134 // Description - the description of the metric alert that will be included in the alert email. 3135 Description *string `json:"description,omitempty"` 3136 // Severity - Alert severity {0, 1, 2, 3, 4} 3137 Severity *int32 `json:"severity,omitempty"` 3138 // Enabled - the flag that indicates whether the metric alert is enabled. 3139 Enabled *bool `json:"enabled,omitempty"` 3140 // Scopes - the list of resource id's that this metric alert is scoped to. 3141 Scopes *[]string `json:"scopes,omitempty"` 3142 // EvaluationFrequency - how often the metric alert is evaluated represented in ISO 8601 duration format. 3143 EvaluationFrequency *string `json:"evaluationFrequency,omitempty"` 3144 // WindowSize - the period of time (in ISO 8601 duration format) that is used to monitor alert activity based on the threshold. 3145 WindowSize *string `json:"windowSize,omitempty"` 3146 // TargetResourceType - the resource type of the target resource(s) on which the alert is created/updated. Mandatory for MultipleResourceMultipleMetricCriteria. 3147 TargetResourceType *string `json:"targetResourceType,omitempty"` 3148 // TargetResourceRegion - the region of the target resource(s) on which the alert is created/updated. Mandatory for MultipleResourceMultipleMetricCriteria. 3149 TargetResourceRegion *string `json:"targetResourceRegion,omitempty"` 3150 // Criteria - defines the specific alert criteria information. 3151 Criteria BasicMetricAlertCriteria `json:"criteria,omitempty"` 3152 // AutoMitigate - the flag that indicates whether the alert should be auto resolved or not. The default is true. 3153 AutoMitigate *bool `json:"autoMitigate,omitempty"` 3154 // Actions - the array of actions that are performed when the alert rule becomes active, and when an alert condition is resolved. 3155 Actions *[]MetricAlertAction `json:"actions,omitempty"` 3156 // LastUpdatedTime - READ-ONLY; Last time the rule was updated in ISO8601 format. 3157 LastUpdatedTime *date.Time `json:"lastUpdatedTime,omitempty"` 3158} 3159 3160// MarshalJSON is the custom marshaler for MetricAlertProperties. 3161func (mapVar MetricAlertProperties) MarshalJSON() ([]byte, error) { 3162 objectMap := make(map[string]interface{}) 3163 if mapVar.Description != nil { 3164 objectMap["description"] = mapVar.Description 3165 } 3166 if mapVar.Severity != nil { 3167 objectMap["severity"] = mapVar.Severity 3168 } 3169 if mapVar.Enabled != nil { 3170 objectMap["enabled"] = mapVar.Enabled 3171 } 3172 if mapVar.Scopes != nil { 3173 objectMap["scopes"] = mapVar.Scopes 3174 } 3175 if mapVar.EvaluationFrequency != nil { 3176 objectMap["evaluationFrequency"] = mapVar.EvaluationFrequency 3177 } 3178 if mapVar.WindowSize != nil { 3179 objectMap["windowSize"] = mapVar.WindowSize 3180 } 3181 if mapVar.TargetResourceType != nil { 3182 objectMap["targetResourceType"] = mapVar.TargetResourceType 3183 } 3184 if mapVar.TargetResourceRegion != nil { 3185 objectMap["targetResourceRegion"] = mapVar.TargetResourceRegion 3186 } 3187 objectMap["criteria"] = mapVar.Criteria 3188 if mapVar.AutoMitigate != nil { 3189 objectMap["autoMitigate"] = mapVar.AutoMitigate 3190 } 3191 if mapVar.Actions != nil { 3192 objectMap["actions"] = mapVar.Actions 3193 } 3194 return json.Marshal(objectMap) 3195} 3196 3197// UnmarshalJSON is the custom unmarshaler for MetricAlertProperties struct. 3198func (mapVar *MetricAlertProperties) UnmarshalJSON(body []byte) error { 3199 var m map[string]*json.RawMessage 3200 err := json.Unmarshal(body, &m) 3201 if err != nil { 3202 return err 3203 } 3204 for k, v := range m { 3205 switch k { 3206 case "description": 3207 if v != nil { 3208 var description string 3209 err = json.Unmarshal(*v, &description) 3210 if err != nil { 3211 return err 3212 } 3213 mapVar.Description = &description 3214 } 3215 case "severity": 3216 if v != nil { 3217 var severity int32 3218 err = json.Unmarshal(*v, &severity) 3219 if err != nil { 3220 return err 3221 } 3222 mapVar.Severity = &severity 3223 } 3224 case "enabled": 3225 if v != nil { 3226 var enabled bool 3227 err = json.Unmarshal(*v, &enabled) 3228 if err != nil { 3229 return err 3230 } 3231 mapVar.Enabled = &enabled 3232 } 3233 case "scopes": 3234 if v != nil { 3235 var scopes []string 3236 err = json.Unmarshal(*v, &scopes) 3237 if err != nil { 3238 return err 3239 } 3240 mapVar.Scopes = &scopes 3241 } 3242 case "evaluationFrequency": 3243 if v != nil { 3244 var evaluationFrequency string 3245 err = json.Unmarshal(*v, &evaluationFrequency) 3246 if err != nil { 3247 return err 3248 } 3249 mapVar.EvaluationFrequency = &evaluationFrequency 3250 } 3251 case "windowSize": 3252 if v != nil { 3253 var windowSize string 3254 err = json.Unmarshal(*v, &windowSize) 3255 if err != nil { 3256 return err 3257 } 3258 mapVar.WindowSize = &windowSize 3259 } 3260 case "targetResourceType": 3261 if v != nil { 3262 var targetResourceType string 3263 err = json.Unmarshal(*v, &targetResourceType) 3264 if err != nil { 3265 return err 3266 } 3267 mapVar.TargetResourceType = &targetResourceType 3268 } 3269 case "targetResourceRegion": 3270 if v != nil { 3271 var targetResourceRegion string 3272 err = json.Unmarshal(*v, &targetResourceRegion) 3273 if err != nil { 3274 return err 3275 } 3276 mapVar.TargetResourceRegion = &targetResourceRegion 3277 } 3278 case "criteria": 3279 if v != nil { 3280 criteria, err := unmarshalBasicMetricAlertCriteria(*v) 3281 if err != nil { 3282 return err 3283 } 3284 mapVar.Criteria = criteria 3285 } 3286 case "autoMitigate": 3287 if v != nil { 3288 var autoMitigate bool 3289 err = json.Unmarshal(*v, &autoMitigate) 3290 if err != nil { 3291 return err 3292 } 3293 mapVar.AutoMitigate = &autoMitigate 3294 } 3295 case "actions": 3296 if v != nil { 3297 var actions []MetricAlertAction 3298 err = json.Unmarshal(*v, &actions) 3299 if err != nil { 3300 return err 3301 } 3302 mapVar.Actions = &actions 3303 } 3304 case "lastUpdatedTime": 3305 if v != nil { 3306 var lastUpdatedTime date.Time 3307 err = json.Unmarshal(*v, &lastUpdatedTime) 3308 if err != nil { 3309 return err 3310 } 3311 mapVar.LastUpdatedTime = &lastUpdatedTime 3312 } 3313 } 3314 } 3315 3316 return nil 3317} 3318 3319// MetricAlertResource the metric alert resource. 3320type MetricAlertResource struct { 3321 autorest.Response `json:"-"` 3322 // MetricAlertProperties - The alert rule properties of the resource. 3323 *MetricAlertProperties `json:"properties,omitempty"` 3324 // ID - READ-ONLY; Azure resource Id 3325 ID *string `json:"id,omitempty"` 3326 // Name - READ-ONLY; Azure resource name 3327 Name *string `json:"name,omitempty"` 3328 // Type - READ-ONLY; Azure resource type 3329 Type *string `json:"type,omitempty"` 3330 // Location - Resource location 3331 Location *string `json:"location,omitempty"` 3332 // Tags - Resource tags 3333 Tags map[string]*string `json:"tags"` 3334} 3335 3336// MarshalJSON is the custom marshaler for MetricAlertResource. 3337func (mar MetricAlertResource) MarshalJSON() ([]byte, error) { 3338 objectMap := make(map[string]interface{}) 3339 if mar.MetricAlertProperties != nil { 3340 objectMap["properties"] = mar.MetricAlertProperties 3341 } 3342 if mar.Location != nil { 3343 objectMap["location"] = mar.Location 3344 } 3345 if mar.Tags != nil { 3346 objectMap["tags"] = mar.Tags 3347 } 3348 return json.Marshal(objectMap) 3349} 3350 3351// UnmarshalJSON is the custom unmarshaler for MetricAlertResource struct. 3352func (mar *MetricAlertResource) UnmarshalJSON(body []byte) error { 3353 var m map[string]*json.RawMessage 3354 err := json.Unmarshal(body, &m) 3355 if err != nil { 3356 return err 3357 } 3358 for k, v := range m { 3359 switch k { 3360 case "properties": 3361 if v != nil { 3362 var metricAlertProperties MetricAlertProperties 3363 err = json.Unmarshal(*v, &metricAlertProperties) 3364 if err != nil { 3365 return err 3366 } 3367 mar.MetricAlertProperties = &metricAlertProperties 3368 } 3369 case "id": 3370 if v != nil { 3371 var ID string 3372 err = json.Unmarshal(*v, &ID) 3373 if err != nil { 3374 return err 3375 } 3376 mar.ID = &ID 3377 } 3378 case "name": 3379 if v != nil { 3380 var name string 3381 err = json.Unmarshal(*v, &name) 3382 if err != nil { 3383 return err 3384 } 3385 mar.Name = &name 3386 } 3387 case "type": 3388 if v != nil { 3389 var typeVar string 3390 err = json.Unmarshal(*v, &typeVar) 3391 if err != nil { 3392 return err 3393 } 3394 mar.Type = &typeVar 3395 } 3396 case "location": 3397 if v != nil { 3398 var location string 3399 err = json.Unmarshal(*v, &location) 3400 if err != nil { 3401 return err 3402 } 3403 mar.Location = &location 3404 } 3405 case "tags": 3406 if v != nil { 3407 var tags map[string]*string 3408 err = json.Unmarshal(*v, &tags) 3409 if err != nil { 3410 return err 3411 } 3412 mar.Tags = tags 3413 } 3414 } 3415 } 3416 3417 return nil 3418} 3419 3420// MetricAlertResourceCollection represents a collection of alert rule resources. 3421type MetricAlertResourceCollection struct { 3422 autorest.Response `json:"-"` 3423 // Value - the values for the alert rule resources. 3424 Value *[]MetricAlertResource `json:"value,omitempty"` 3425} 3426 3427// MetricAlertResourcePatch the metric alert resource for patch operations. 3428type MetricAlertResourcePatch struct { 3429 // Tags - Resource tags 3430 Tags map[string]*string `json:"tags"` 3431 // MetricAlertProperties - The alert rule properties of the resource. 3432 *MetricAlertProperties `json:"properties,omitempty"` 3433} 3434 3435// MarshalJSON is the custom marshaler for MetricAlertResourcePatch. 3436func (marp MetricAlertResourcePatch) MarshalJSON() ([]byte, error) { 3437 objectMap := make(map[string]interface{}) 3438 if marp.Tags != nil { 3439 objectMap["tags"] = marp.Tags 3440 } 3441 if marp.MetricAlertProperties != nil { 3442 objectMap["properties"] = marp.MetricAlertProperties 3443 } 3444 return json.Marshal(objectMap) 3445} 3446 3447// UnmarshalJSON is the custom unmarshaler for MetricAlertResourcePatch struct. 3448func (marp *MetricAlertResourcePatch) UnmarshalJSON(body []byte) error { 3449 var m map[string]*json.RawMessage 3450 err := json.Unmarshal(body, &m) 3451 if err != nil { 3452 return err 3453 } 3454 for k, v := range m { 3455 switch k { 3456 case "tags": 3457 if v != nil { 3458 var tags map[string]*string 3459 err = json.Unmarshal(*v, &tags) 3460 if err != nil { 3461 return err 3462 } 3463 marp.Tags = tags 3464 } 3465 case "properties": 3466 if v != nil { 3467 var metricAlertProperties MetricAlertProperties 3468 err = json.Unmarshal(*v, &metricAlertProperties) 3469 if err != nil { 3470 return err 3471 } 3472 marp.MetricAlertProperties = &metricAlertProperties 3473 } 3474 } 3475 } 3476 3477 return nil 3478} 3479 3480// MetricAlertSingleResourceMultipleMetricCriteria specifies the metric alert criteria for a single 3481// resource that has multiple metric criteria. 3482type MetricAlertSingleResourceMultipleMetricCriteria struct { 3483 // AllOf - The list of metric criteria for this 'all of' operation. 3484 AllOf *[]MetricCriteria `json:"allOf,omitempty"` 3485 // AdditionalProperties - Unmatched properties from the message are deserialized this collection 3486 AdditionalProperties map[string]interface{} `json:""` 3487 // OdataType - Possible values include: 'OdataTypeMetricAlertCriteria', 'OdataTypeMicrosoftAzureMonitorSingleResourceMultipleMetricCriteria', 'OdataTypeMicrosoftAzureMonitorWebtestLocationAvailabilityCriteria', 'OdataTypeMicrosoftAzureMonitorMultipleResourceMultipleMetricCriteria' 3488 OdataType OdataTypeBasicMetricAlertCriteria `json:"odata.type,omitempty"` 3489} 3490 3491// MarshalJSON is the custom marshaler for MetricAlertSingleResourceMultipleMetricCriteria. 3492func (masrmmc MetricAlertSingleResourceMultipleMetricCriteria) MarshalJSON() ([]byte, error) { 3493 masrmmc.OdataType = OdataTypeMicrosoftAzureMonitorSingleResourceMultipleMetricCriteria 3494 objectMap := make(map[string]interface{}) 3495 if masrmmc.AllOf != nil { 3496 objectMap["allOf"] = masrmmc.AllOf 3497 } 3498 if masrmmc.OdataType != "" { 3499 objectMap["odata.type"] = masrmmc.OdataType 3500 } 3501 for k, v := range masrmmc.AdditionalProperties { 3502 objectMap[k] = v 3503 } 3504 return json.Marshal(objectMap) 3505} 3506 3507// AsMetricAlertSingleResourceMultipleMetricCriteria is the BasicMetricAlertCriteria implementation for MetricAlertSingleResourceMultipleMetricCriteria. 3508func (masrmmc MetricAlertSingleResourceMultipleMetricCriteria) AsMetricAlertSingleResourceMultipleMetricCriteria() (*MetricAlertSingleResourceMultipleMetricCriteria, bool) { 3509 return &masrmmc, true 3510} 3511 3512// AsWebtestLocationAvailabilityCriteria is the BasicMetricAlertCriteria implementation for MetricAlertSingleResourceMultipleMetricCriteria. 3513func (masrmmc MetricAlertSingleResourceMultipleMetricCriteria) AsWebtestLocationAvailabilityCriteria() (*WebtestLocationAvailabilityCriteria, bool) { 3514 return nil, false 3515} 3516 3517// AsMetricAlertMultipleResourceMultipleMetricCriteria is the BasicMetricAlertCriteria implementation for MetricAlertSingleResourceMultipleMetricCriteria. 3518func (masrmmc MetricAlertSingleResourceMultipleMetricCriteria) AsMetricAlertMultipleResourceMultipleMetricCriteria() (*MetricAlertMultipleResourceMultipleMetricCriteria, bool) { 3519 return nil, false 3520} 3521 3522// AsMetricAlertCriteria is the BasicMetricAlertCriteria implementation for MetricAlertSingleResourceMultipleMetricCriteria. 3523func (masrmmc MetricAlertSingleResourceMultipleMetricCriteria) AsMetricAlertCriteria() (*MetricAlertCriteria, bool) { 3524 return nil, false 3525} 3526 3527// AsBasicMetricAlertCriteria is the BasicMetricAlertCriteria implementation for MetricAlertSingleResourceMultipleMetricCriteria. 3528func (masrmmc MetricAlertSingleResourceMultipleMetricCriteria) AsBasicMetricAlertCriteria() (BasicMetricAlertCriteria, bool) { 3529 return &masrmmc, true 3530} 3531 3532// UnmarshalJSON is the custom unmarshaler for MetricAlertSingleResourceMultipleMetricCriteria struct. 3533func (masrmmc *MetricAlertSingleResourceMultipleMetricCriteria) UnmarshalJSON(body []byte) error { 3534 var m map[string]*json.RawMessage 3535 err := json.Unmarshal(body, &m) 3536 if err != nil { 3537 return err 3538 } 3539 for k, v := range m { 3540 switch k { 3541 case "allOf": 3542 if v != nil { 3543 var allOf []MetricCriteria 3544 err = json.Unmarshal(*v, &allOf) 3545 if err != nil { 3546 return err 3547 } 3548 masrmmc.AllOf = &allOf 3549 } 3550 default: 3551 if v != nil { 3552 var additionalProperties interface{} 3553 err = json.Unmarshal(*v, &additionalProperties) 3554 if err != nil { 3555 return err 3556 } 3557 if masrmmc.AdditionalProperties == nil { 3558 masrmmc.AdditionalProperties = make(map[string]interface{}) 3559 } 3560 masrmmc.AdditionalProperties[k] = additionalProperties 3561 } 3562 case "odata.type": 3563 if v != nil { 3564 var odataType OdataTypeBasicMetricAlertCriteria 3565 err = json.Unmarshal(*v, &odataType) 3566 if err != nil { 3567 return err 3568 } 3569 masrmmc.OdataType = odataType 3570 } 3571 } 3572 } 3573 3574 return nil 3575} 3576 3577// MetricAlertStatus an alert status. 3578type MetricAlertStatus struct { 3579 // Name - The status name. 3580 Name *string `json:"name,omitempty"` 3581 // ID - The alert rule arm id. 3582 ID *string `json:"id,omitempty"` 3583 // Type - The extended resource type name. 3584 Type *string `json:"type,omitempty"` 3585 // Properties - The alert status properties of the metric alert status. 3586 Properties *MetricAlertStatusProperties `json:"properties,omitempty"` 3587} 3588 3589// MetricAlertStatusCollection represents a collection of alert rule resources. 3590type MetricAlertStatusCollection struct { 3591 autorest.Response `json:"-"` 3592 // Value - the values for the alert rule resources. 3593 Value *[]MetricAlertStatus `json:"value,omitempty"` 3594} 3595 3596// MetricAlertStatusProperties an alert status properties. 3597type MetricAlertStatusProperties struct { 3598 // Dimensions - An object describing the type of the dimensions. 3599 Dimensions map[string]*string `json:"dimensions"` 3600 // Status - status value 3601 Status *string `json:"status,omitempty"` 3602 // Timestamp - UTC time when the status was checked. 3603 Timestamp *date.Time `json:"timestamp,omitempty"` 3604} 3605 3606// MarshalJSON is the custom marshaler for MetricAlertStatusProperties. 3607func (masp MetricAlertStatusProperties) MarshalJSON() ([]byte, error) { 3608 objectMap := make(map[string]interface{}) 3609 if masp.Dimensions != nil { 3610 objectMap["dimensions"] = masp.Dimensions 3611 } 3612 if masp.Status != nil { 3613 objectMap["status"] = masp.Status 3614 } 3615 if masp.Timestamp != nil { 3616 objectMap["timestamp"] = masp.Timestamp 3617 } 3618 return json.Marshal(objectMap) 3619} 3620 3621// MetricAvailability metric availability specifies the time grain (aggregation interval or frequency) and 3622// the retention period for that time grain. 3623type MetricAvailability struct { 3624 // TimeGrain - the time grain specifies the aggregation interval for the metric. Expressed as a duration 'PT1M', 'P1D', etc. 3625 TimeGrain *string `json:"timeGrain,omitempty"` 3626 // Retention - the retention period for the metric at the specified timegrain. Expressed as a duration 'PT1M', 'P1D', etc. 3627 Retention *string `json:"retention,omitempty"` 3628} 3629 3630// MetricCriteria criterion to filter metrics. 3631type MetricCriteria struct { 3632 // Operator - the criteria operator. Possible values include: 'OperatorEquals', 'OperatorNotEquals', 'OperatorGreaterThan', 'OperatorGreaterThanOrEqual', 'OperatorLessThan', 'OperatorLessThanOrEqual' 3633 Operator Operator `json:"operator,omitempty"` 3634 // Threshold - the criteria threshold value that activates the alert. 3635 Threshold *float64 `json:"threshold,omitempty"` 3636 // AdditionalProperties - Unmatched properties from the message are deserialized this collection 3637 AdditionalProperties map[string]interface{} `json:""` 3638 // Name - Name of the criteria. 3639 Name *string `json:"name,omitempty"` 3640 // MetricName - Name of the metric. 3641 MetricName *string `json:"metricName,omitempty"` 3642 // MetricNamespace - Namespace of the metric. 3643 MetricNamespace *string `json:"metricNamespace,omitempty"` 3644 // TimeAggregation - the criteria time aggregation types. 3645 TimeAggregation interface{} `json:"timeAggregation,omitempty"` 3646 // Dimensions - List of dimension conditions. 3647 Dimensions *[]MetricDimension `json:"dimensions,omitempty"` 3648 // SkipMetricValidation - Allows creating an alert rule on a custom metric that isn't yet emitted, by causing the metric validation to be skipped. 3649 SkipMetricValidation *bool `json:"skipMetricValidation,omitempty"` 3650 // CriterionType - Possible values include: 'CriterionTypeMultiMetricCriteria', 'CriterionTypeStaticThresholdCriterion', 'CriterionTypeDynamicThresholdCriterion' 3651 CriterionType CriterionType `json:"criterionType,omitempty"` 3652} 3653 3654// MarshalJSON is the custom marshaler for MetricCriteria. 3655func (mc MetricCriteria) MarshalJSON() ([]byte, error) { 3656 mc.CriterionType = CriterionTypeStaticThresholdCriterion 3657 objectMap := make(map[string]interface{}) 3658 if mc.Operator != "" { 3659 objectMap["operator"] = mc.Operator 3660 } 3661 if mc.Threshold != nil { 3662 objectMap["threshold"] = mc.Threshold 3663 } 3664 if mc.Name != nil { 3665 objectMap["name"] = mc.Name 3666 } 3667 if mc.MetricName != nil { 3668 objectMap["metricName"] = mc.MetricName 3669 } 3670 if mc.MetricNamespace != nil { 3671 objectMap["metricNamespace"] = mc.MetricNamespace 3672 } 3673 if mc.TimeAggregation != nil { 3674 objectMap["timeAggregation"] = mc.TimeAggregation 3675 } 3676 if mc.Dimensions != nil { 3677 objectMap["dimensions"] = mc.Dimensions 3678 } 3679 if mc.SkipMetricValidation != nil { 3680 objectMap["skipMetricValidation"] = mc.SkipMetricValidation 3681 } 3682 if mc.CriterionType != "" { 3683 objectMap["criterionType"] = mc.CriterionType 3684 } 3685 for k, v := range mc.AdditionalProperties { 3686 objectMap[k] = v 3687 } 3688 return json.Marshal(objectMap) 3689} 3690 3691// AsMetricCriteria is the BasicMultiMetricCriteria implementation for MetricCriteria. 3692func (mc MetricCriteria) AsMetricCriteria() (*MetricCriteria, bool) { 3693 return &mc, true 3694} 3695 3696// AsDynamicMetricCriteria is the BasicMultiMetricCriteria implementation for MetricCriteria. 3697func (mc MetricCriteria) AsDynamicMetricCriteria() (*DynamicMetricCriteria, bool) { 3698 return nil, false 3699} 3700 3701// AsMultiMetricCriteria is the BasicMultiMetricCriteria implementation for MetricCriteria. 3702func (mc MetricCriteria) AsMultiMetricCriteria() (*MultiMetricCriteria, bool) { 3703 return nil, false 3704} 3705 3706// AsBasicMultiMetricCriteria is the BasicMultiMetricCriteria implementation for MetricCriteria. 3707func (mc MetricCriteria) AsBasicMultiMetricCriteria() (BasicMultiMetricCriteria, bool) { 3708 return &mc, true 3709} 3710 3711// UnmarshalJSON is the custom unmarshaler for MetricCriteria struct. 3712func (mc *MetricCriteria) UnmarshalJSON(body []byte) error { 3713 var m map[string]*json.RawMessage 3714 err := json.Unmarshal(body, &m) 3715 if err != nil { 3716 return err 3717 } 3718 for k, v := range m { 3719 switch k { 3720 case "operator": 3721 if v != nil { 3722 var operator Operator 3723 err = json.Unmarshal(*v, &operator) 3724 if err != nil { 3725 return err 3726 } 3727 mc.Operator = operator 3728 } 3729 case "threshold": 3730 if v != nil { 3731 var threshold float64 3732 err = json.Unmarshal(*v, &threshold) 3733 if err != nil { 3734 return err 3735 } 3736 mc.Threshold = &threshold 3737 } 3738 default: 3739 if v != nil { 3740 var additionalProperties interface{} 3741 err = json.Unmarshal(*v, &additionalProperties) 3742 if err != nil { 3743 return err 3744 } 3745 if mc.AdditionalProperties == nil { 3746 mc.AdditionalProperties = make(map[string]interface{}) 3747 } 3748 mc.AdditionalProperties[k] = additionalProperties 3749 } 3750 case "name": 3751 if v != nil { 3752 var name string 3753 err = json.Unmarshal(*v, &name) 3754 if err != nil { 3755 return err 3756 } 3757 mc.Name = &name 3758 } 3759 case "metricName": 3760 if v != nil { 3761 var metricName string 3762 err = json.Unmarshal(*v, &metricName) 3763 if err != nil { 3764 return err 3765 } 3766 mc.MetricName = &metricName 3767 } 3768 case "metricNamespace": 3769 if v != nil { 3770 var metricNamespace string 3771 err = json.Unmarshal(*v, &metricNamespace) 3772 if err != nil { 3773 return err 3774 } 3775 mc.MetricNamespace = &metricNamespace 3776 } 3777 case "timeAggregation": 3778 if v != nil { 3779 var timeAggregation interface{} 3780 err = json.Unmarshal(*v, &timeAggregation) 3781 if err != nil { 3782 return err 3783 } 3784 mc.TimeAggregation = timeAggregation 3785 } 3786 case "dimensions": 3787 if v != nil { 3788 var dimensions []MetricDimension 3789 err = json.Unmarshal(*v, &dimensions) 3790 if err != nil { 3791 return err 3792 } 3793 mc.Dimensions = &dimensions 3794 } 3795 case "skipMetricValidation": 3796 if v != nil { 3797 var skipMetricValidation bool 3798 err = json.Unmarshal(*v, &skipMetricValidation) 3799 if err != nil { 3800 return err 3801 } 3802 mc.SkipMetricValidation = &skipMetricValidation 3803 } 3804 case "criterionType": 3805 if v != nil { 3806 var criterionType CriterionType 3807 err = json.Unmarshal(*v, &criterionType) 3808 if err != nil { 3809 return err 3810 } 3811 mc.CriterionType = criterionType 3812 } 3813 } 3814 } 3815 3816 return nil 3817} 3818 3819// MetricDefinition metric definition class specifies the metadata for a metric. 3820type MetricDefinition struct { 3821 // IsDimensionRequired - Flag to indicate whether the dimension is required. 3822 IsDimensionRequired *bool `json:"isDimensionRequired,omitempty"` 3823 // ResourceID - the resource identifier of the resource that emitted the metric. 3824 ResourceID *string `json:"resourceId,omitempty"` 3825 // Namespace - the namespace the metric belongs to. 3826 Namespace *string `json:"namespace,omitempty"` 3827 // Name - the name and the display name of the metric, i.e. it is a localizable string. 3828 Name *LocalizableString `json:"name,omitempty"` 3829 // Unit - the unit of the metric. Possible values include: 'UnitCount', 'UnitBytes', 'UnitSeconds', 'UnitCountPerSecond', 'UnitBytesPerSecond', 'UnitPercent', 'UnitMilliSeconds', 'UnitByteSeconds', 'UnitUnspecified', 'UnitCores', 'UnitMilliCores', 'UnitNanoCores', 'UnitBitsPerSecond' 3830 Unit Unit `json:"unit,omitempty"` 3831 // PrimaryAggregationType - the primary aggregation type value defining how to use the values for display. Possible values include: 'None', 'Average', 'Count', 'Minimum', 'Maximum', 'Total' 3832 PrimaryAggregationType AggregationType `json:"primaryAggregationType,omitempty"` 3833 // SupportedAggregationTypes - the collection of what aggregation types are supported. 3834 SupportedAggregationTypes *[]AggregationType `json:"supportedAggregationTypes,omitempty"` 3835 // MetricAvailabilities - the collection of what aggregation intervals are available to be queried. 3836 MetricAvailabilities *[]MetricAvailability `json:"metricAvailabilities,omitempty"` 3837 // ID - the resource identifier of the metric definition. 3838 ID *string `json:"id,omitempty"` 3839 // Dimensions - the name and the display name of the dimension, i.e. it is a localizable string. 3840 Dimensions *[]LocalizableString `json:"dimensions,omitempty"` 3841} 3842 3843// MetricDefinitionCollection represents collection of metric definitions. 3844type MetricDefinitionCollection struct { 3845 autorest.Response `json:"-"` 3846 // Value - the values for the metric definitions. 3847 Value *[]MetricDefinition `json:"value,omitempty"` 3848} 3849 3850// MetricDimension specifies a metric dimension. 3851type MetricDimension struct { 3852 // Name - Name of the dimension. 3853 Name *string `json:"name,omitempty"` 3854 // Operator - the dimension operator. Only 'Include' and 'Exclude' are supported 3855 Operator *string `json:"operator,omitempty"` 3856 // Values - list of dimension values. 3857 Values *[]string `json:"values,omitempty"` 3858} 3859 3860// MetricSettings part of MultiTenantDiagnosticSettings. Specifies the settings for a particular metric. 3861type MetricSettings struct { 3862 // TimeGrain - the timegrain of the metric in ISO8601 format. 3863 TimeGrain *string `json:"timeGrain,omitempty"` 3864 // Category - Name of a Diagnostic Metric category for a resource type this setting is applied to. To obtain the list of Diagnostic metric categories for a resource, first perform a GET diagnostic settings operation. 3865 Category *string `json:"category,omitempty"` 3866 // Enabled - a value indicating whether this category is enabled. 3867 Enabled *bool `json:"enabled,omitempty"` 3868 // RetentionPolicy - the retention policy for this category. 3869 RetentionPolicy *RetentionPolicy `json:"retentionPolicy,omitempty"` 3870} 3871 3872// MetricTrigger the trigger that results in a scaling action. 3873type MetricTrigger struct { 3874 // MetricName - the name of the metric that defines what the rule monitors. 3875 MetricName *string `json:"metricName,omitempty"` 3876 // MetricNamespace - the namespace of the metric that defines what the rule monitors. 3877 MetricNamespace *string `json:"metricNamespace,omitempty"` 3878 // MetricResourceURI - the resource identifier of the resource the rule monitors. 3879 MetricResourceURI *string `json:"metricResourceUri,omitempty"` 3880 // TimeGrain - the granularity of metrics the rule monitors. Must be one of the predefined values returned from metric definitions for the metric. Must be between 12 hours and 1 minute. 3881 TimeGrain *string `json:"timeGrain,omitempty"` 3882 // Statistic - the metric statistic type. How the metrics from multiple instances are combined. Possible values include: 'MetricStatisticTypeAverage', 'MetricStatisticTypeMin', 'MetricStatisticTypeMax', 'MetricStatisticTypeSum' 3883 Statistic MetricStatisticType `json:"statistic,omitempty"` 3884 // TimeWindow - the range of time in which instance data is collected. This value must be greater than the delay in metric collection, which can vary from resource-to-resource. Must be between 12 hours and 5 minutes. 3885 TimeWindow *string `json:"timeWindow,omitempty"` 3886 // TimeAggregation - time aggregation type. How the data that is collected should be combined over time. The default value is Average. Possible values include: 'TimeAggregationTypeAverage', 'TimeAggregationTypeMinimum', 'TimeAggregationTypeMaximum', 'TimeAggregationTypeTotal', 'TimeAggregationTypeCount', 'TimeAggregationTypeLast' 3887 TimeAggregation TimeAggregationType `json:"timeAggregation,omitempty"` 3888 // Operator - the operator that is used to compare the metric data and the threshold. Possible values include: 'Equals', 'NotEquals', 'GreaterThan', 'GreaterThanOrEqual', 'LessThan', 'LessThanOrEqual' 3889 Operator ComparisonOperationType `json:"operator,omitempty"` 3890 // Threshold - the threshold of the metric that triggers the scale action. 3891 Threshold *float64 `json:"threshold,omitempty"` 3892 // Dimensions - List of dimension conditions. For example: [{"DimensionName":"AppName","Operator":"Equals","Values":["App1"]},{"DimensionName":"Deployment","Operator":"Equals","Values":["default"]}]. 3893 Dimensions *[]ScaleRuleMetricDimension `json:"dimensions,omitempty"` 3894} 3895 3896// MetricValue represents a metric value. 3897type MetricValue struct { 3898 // TimeStamp - the timestamp for the metric value in ISO 8601 format. 3899 TimeStamp *date.Time `json:"timeStamp,omitempty"` 3900 // Average - the average value in the time range. 3901 Average *float64 `json:"average,omitempty"` 3902 // Minimum - the least value in the time range. 3903 Minimum *float64 `json:"minimum,omitempty"` 3904 // Maximum - the greatest value in the time range. 3905 Maximum *float64 `json:"maximum,omitempty"` 3906 // Total - the sum of all of the values in the time range. 3907 Total *float64 `json:"total,omitempty"` 3908 // Count - the number of samples in the time range. Can be used to determine the number of values that contributed to the average value. 3909 Count *float64 `json:"count,omitempty"` 3910} 3911 3912// BasicMultiMetricCriteria the types of conditions for a multi resource alert. 3913type BasicMultiMetricCriteria interface { 3914 AsMetricCriteria() (*MetricCriteria, bool) 3915 AsDynamicMetricCriteria() (*DynamicMetricCriteria, bool) 3916 AsMultiMetricCriteria() (*MultiMetricCriteria, bool) 3917} 3918 3919// MultiMetricCriteria the types of conditions for a multi resource alert. 3920type MultiMetricCriteria struct { 3921 // AdditionalProperties - Unmatched properties from the message are deserialized this collection 3922 AdditionalProperties map[string]interface{} `json:""` 3923 // Name - Name of the criteria. 3924 Name *string `json:"name,omitempty"` 3925 // MetricName - Name of the metric. 3926 MetricName *string `json:"metricName,omitempty"` 3927 // MetricNamespace - Namespace of the metric. 3928 MetricNamespace *string `json:"metricNamespace,omitempty"` 3929 // TimeAggregation - the criteria time aggregation types. 3930 TimeAggregation interface{} `json:"timeAggregation,omitempty"` 3931 // Dimensions - List of dimension conditions. 3932 Dimensions *[]MetricDimension `json:"dimensions,omitempty"` 3933 // SkipMetricValidation - Allows creating an alert rule on a custom metric that isn't yet emitted, by causing the metric validation to be skipped. 3934 SkipMetricValidation *bool `json:"skipMetricValidation,omitempty"` 3935 // CriterionType - Possible values include: 'CriterionTypeMultiMetricCriteria', 'CriterionTypeStaticThresholdCriterion', 'CriterionTypeDynamicThresholdCriterion' 3936 CriterionType CriterionType `json:"criterionType,omitempty"` 3937} 3938 3939func unmarshalBasicMultiMetricCriteria(body []byte) (BasicMultiMetricCriteria, error) { 3940 var m map[string]interface{} 3941 err := json.Unmarshal(body, &m) 3942 if err != nil { 3943 return nil, err 3944 } 3945 3946 switch m["criterionType"] { 3947 case string(CriterionTypeStaticThresholdCriterion): 3948 var mc MetricCriteria 3949 err := json.Unmarshal(body, &mc) 3950 return mc, err 3951 case string(CriterionTypeDynamicThresholdCriterion): 3952 var dmc DynamicMetricCriteria 3953 err := json.Unmarshal(body, &dmc) 3954 return dmc, err 3955 default: 3956 var mmc MultiMetricCriteria 3957 err := json.Unmarshal(body, &mmc) 3958 return mmc, err 3959 } 3960} 3961func unmarshalBasicMultiMetricCriteriaArray(body []byte) ([]BasicMultiMetricCriteria, error) { 3962 var rawMessages []*json.RawMessage 3963 err := json.Unmarshal(body, &rawMessages) 3964 if err != nil { 3965 return nil, err 3966 } 3967 3968 mmcArray := make([]BasicMultiMetricCriteria, len(rawMessages)) 3969 3970 for index, rawMessage := range rawMessages { 3971 mmc, err := unmarshalBasicMultiMetricCriteria(*rawMessage) 3972 if err != nil { 3973 return nil, err 3974 } 3975 mmcArray[index] = mmc 3976 } 3977 return mmcArray, nil 3978} 3979 3980// MarshalJSON is the custom marshaler for MultiMetricCriteria. 3981func (mmc MultiMetricCriteria) MarshalJSON() ([]byte, error) { 3982 mmc.CriterionType = CriterionTypeMultiMetricCriteria 3983 objectMap := make(map[string]interface{}) 3984 if mmc.Name != nil { 3985 objectMap["name"] = mmc.Name 3986 } 3987 if mmc.MetricName != nil { 3988 objectMap["metricName"] = mmc.MetricName 3989 } 3990 if mmc.MetricNamespace != nil { 3991 objectMap["metricNamespace"] = mmc.MetricNamespace 3992 } 3993 if mmc.TimeAggregation != nil { 3994 objectMap["timeAggregation"] = mmc.TimeAggregation 3995 } 3996 if mmc.Dimensions != nil { 3997 objectMap["dimensions"] = mmc.Dimensions 3998 } 3999 if mmc.SkipMetricValidation != nil { 4000 objectMap["skipMetricValidation"] = mmc.SkipMetricValidation 4001 } 4002 if mmc.CriterionType != "" { 4003 objectMap["criterionType"] = mmc.CriterionType 4004 } 4005 for k, v := range mmc.AdditionalProperties { 4006 objectMap[k] = v 4007 } 4008 return json.Marshal(objectMap) 4009} 4010 4011// AsMetricCriteria is the BasicMultiMetricCriteria implementation for MultiMetricCriteria. 4012func (mmc MultiMetricCriteria) AsMetricCriteria() (*MetricCriteria, bool) { 4013 return nil, false 4014} 4015 4016// AsDynamicMetricCriteria is the BasicMultiMetricCriteria implementation for MultiMetricCriteria. 4017func (mmc MultiMetricCriteria) AsDynamicMetricCriteria() (*DynamicMetricCriteria, bool) { 4018 return nil, false 4019} 4020 4021// AsMultiMetricCriteria is the BasicMultiMetricCriteria implementation for MultiMetricCriteria. 4022func (mmc MultiMetricCriteria) AsMultiMetricCriteria() (*MultiMetricCriteria, bool) { 4023 return &mmc, true 4024} 4025 4026// AsBasicMultiMetricCriteria is the BasicMultiMetricCriteria implementation for MultiMetricCriteria. 4027func (mmc MultiMetricCriteria) AsBasicMultiMetricCriteria() (BasicMultiMetricCriteria, bool) { 4028 return &mmc, true 4029} 4030 4031// UnmarshalJSON is the custom unmarshaler for MultiMetricCriteria struct. 4032func (mmc *MultiMetricCriteria) UnmarshalJSON(body []byte) error { 4033 var m map[string]*json.RawMessage 4034 err := json.Unmarshal(body, &m) 4035 if err != nil { 4036 return err 4037 } 4038 for k, v := range m { 4039 switch k { 4040 default: 4041 if v != nil { 4042 var additionalProperties interface{} 4043 err = json.Unmarshal(*v, &additionalProperties) 4044 if err != nil { 4045 return err 4046 } 4047 if mmc.AdditionalProperties == nil { 4048 mmc.AdditionalProperties = make(map[string]interface{}) 4049 } 4050 mmc.AdditionalProperties[k] = additionalProperties 4051 } 4052 case "name": 4053 if v != nil { 4054 var name string 4055 err = json.Unmarshal(*v, &name) 4056 if err != nil { 4057 return err 4058 } 4059 mmc.Name = &name 4060 } 4061 case "metricName": 4062 if v != nil { 4063 var metricName string 4064 err = json.Unmarshal(*v, &metricName) 4065 if err != nil { 4066 return err 4067 } 4068 mmc.MetricName = &metricName 4069 } 4070 case "metricNamespace": 4071 if v != nil { 4072 var metricNamespace string 4073 err = json.Unmarshal(*v, &metricNamespace) 4074 if err != nil { 4075 return err 4076 } 4077 mmc.MetricNamespace = &metricNamespace 4078 } 4079 case "timeAggregation": 4080 if v != nil { 4081 var timeAggregation interface{} 4082 err = json.Unmarshal(*v, &timeAggregation) 4083 if err != nil { 4084 return err 4085 } 4086 mmc.TimeAggregation = timeAggregation 4087 } 4088 case "dimensions": 4089 if v != nil { 4090 var dimensions []MetricDimension 4091 err = json.Unmarshal(*v, &dimensions) 4092 if err != nil { 4093 return err 4094 } 4095 mmc.Dimensions = &dimensions 4096 } 4097 case "skipMetricValidation": 4098 if v != nil { 4099 var skipMetricValidation bool 4100 err = json.Unmarshal(*v, &skipMetricValidation) 4101 if err != nil { 4102 return err 4103 } 4104 mmc.SkipMetricValidation = &skipMetricValidation 4105 } 4106 case "criterionType": 4107 if v != nil { 4108 var criterionType CriterionType 4109 err = json.Unmarshal(*v, &criterionType) 4110 if err != nil { 4111 return err 4112 } 4113 mmc.CriterionType = criterionType 4114 } 4115 } 4116 } 4117 4118 return nil 4119} 4120 4121// Operation microsoft Insights API operation definition. 4122type Operation struct { 4123 // Name - Operation name: {provider}/{resource}/{operation} 4124 Name *string `json:"name,omitempty"` 4125 // Display - Display metadata associated with the operation. 4126 Display *OperationDisplay `json:"display,omitempty"` 4127} 4128 4129// OperationDisplay display metadata associated with the operation. 4130type OperationDisplay struct { 4131 // Provider - Service provider: Microsoft.Insights 4132 Provider *string `json:"provider,omitempty"` 4133 // Resource - Resource on which the operation is performed: AlertRules, Autoscale, etc. 4134 Resource *string `json:"resource,omitempty"` 4135 // Operation - Operation type: Read, write, delete, etc. 4136 Operation *string `json:"operation,omitempty"` 4137} 4138 4139// OperationListResult result of the request to list Microsoft.Insights operations. It contains a list of 4140// operations and a URL link to get the next set of results. 4141type OperationListResult struct { 4142 autorest.Response `json:"-"` 4143 // Value - List of operations supported by the Microsoft.Insights provider. 4144 Value *[]Operation `json:"value,omitempty"` 4145 // NextLink - URL to get the next set of operation list results if there are any. 4146 NextLink *string `json:"nextLink,omitempty"` 4147} 4148 4149// ProxyOnlyResource a proxy only azure resource object 4150type ProxyOnlyResource struct { 4151 // ID - READ-ONLY; Azure resource Id 4152 ID *string `json:"id,omitempty"` 4153 // Name - READ-ONLY; Azure resource name 4154 Name *string `json:"name,omitempty"` 4155 // Type - READ-ONLY; Azure resource type 4156 Type *string `json:"type,omitempty"` 4157} 4158 4159// MarshalJSON is the custom marshaler for ProxyOnlyResource. 4160func (por ProxyOnlyResource) MarshalJSON() ([]byte, error) { 4161 objectMap := make(map[string]interface{}) 4162 return json.Marshal(objectMap) 4163} 4164 4165// Recurrence the repeating times at which this profile begins. This element is not used if the FixedDate 4166// element is used. 4167type Recurrence struct { 4168 // Frequency - the recurrence frequency. How often the schedule profile should take effect. This value must be Week, meaning each week will have the same set of profiles. For example, to set a daily schedule, set **schedule** to every day of the week. The frequency property specifies that the schedule is repeated weekly. Possible values include: 'RecurrenceFrequencyNone', 'RecurrenceFrequencySecond', 'RecurrenceFrequencyMinute', 'RecurrenceFrequencyHour', 'RecurrenceFrequencyDay', 'RecurrenceFrequencyWeek', 'RecurrenceFrequencyMonth', 'RecurrenceFrequencyYear' 4169 Frequency RecurrenceFrequency `json:"frequency,omitempty"` 4170 // Schedule - the scheduling constraints for when the profile begins. 4171 Schedule *RecurrentSchedule `json:"schedule,omitempty"` 4172} 4173 4174// RecurrentSchedule the scheduling constraints for when the profile begins. 4175type RecurrentSchedule struct { 4176 // TimeZone - the timezone for the hours of the profile. Some examples of valid time zones are: Dateline Standard Time, UTC-11, Hawaiian Standard Time, Alaskan Standard Time, Pacific Standard Time (Mexico), Pacific Standard Time, US Mountain Standard Time, Mountain Standard Time (Mexico), Mountain Standard Time, Central America Standard Time, Central Standard Time, Central Standard Time (Mexico), Canada Central Standard Time, SA Pacific Standard Time, Eastern Standard Time, US Eastern Standard Time, Venezuela Standard Time, Paraguay Standard Time, Atlantic Standard Time, Central Brazilian Standard Time, SA Western Standard Time, Pacific SA Standard Time, Newfoundland Standard Time, E. South America Standard Time, Argentina Standard Time, SA Eastern Standard Time, Greenland Standard Time, Montevideo Standard Time, Bahia Standard Time, UTC-02, Mid-Atlantic Standard Time, Azores Standard Time, Cape Verde Standard Time, Morocco Standard Time, UTC, GMT Standard Time, Greenwich Standard Time, W. Europe Standard Time, Central Europe Standard Time, Romance Standard Time, Central European Standard Time, W. Central Africa Standard Time, Namibia Standard Time, Jordan Standard Time, GTB Standard Time, Middle East Standard Time, Egypt Standard Time, Syria Standard Time, E. Europe Standard Time, South Africa Standard Time, FLE Standard Time, Turkey Standard Time, Israel Standard Time, Kaliningrad Standard Time, Libya Standard Time, Arabic Standard Time, Arab Standard Time, Belarus Standard Time, Russian Standard Time, E. Africa Standard Time, Iran Standard Time, Arabian Standard Time, Azerbaijan Standard Time, Russia Time Zone 3, Mauritius Standard Time, Georgian Standard Time, Caucasus Standard Time, Afghanistan Standard Time, West Asia Standard Time, Ekaterinburg Standard Time, Pakistan Standard Time, India Standard Time, Sri Lanka Standard Time, Nepal Standard Time, Central Asia Standard Time, Bangladesh Standard Time, N. Central Asia Standard Time, Myanmar Standard Time, SE Asia Standard Time, North Asia Standard Time, China Standard Time, North Asia East Standard Time, Singapore Standard Time, W. Australia Standard Time, Taipei Standard Time, Ulaanbaatar Standard Time, Tokyo Standard Time, Korea Standard Time, Yakutsk Standard Time, Cen. Australia Standard Time, AUS Central Standard Time, E. Australia Standard Time, AUS Eastern Standard Time, West Pacific Standard Time, Tasmania Standard Time, Magadan Standard Time, Vladivostok Standard Time, Russia Time Zone 10, Central Pacific Standard Time, Russia Time Zone 11, New Zealand Standard Time, UTC+12, Fiji Standard Time, Kamchatka Standard Time, Tonga Standard Time, Samoa Standard Time, Line Islands Standard Time 4177 TimeZone *string `json:"timeZone,omitempty"` 4178 // Days - the collection of days that the profile takes effect on. Possible values are Sunday through Saturday. 4179 Days *[]string `json:"days,omitempty"` 4180 // Hours - A collection of hours that the profile takes effect on. Values supported are 0 to 23 on the 24-hour clock (AM/PM times are not supported). 4181 Hours *[]int32 `json:"hours,omitempty"` 4182 // Minutes - A collection of minutes at which the profile takes effect at. 4183 Minutes *[]int32 `json:"minutes,omitempty"` 4184} 4185 4186// Resource an azure resource object 4187type Resource struct { 4188 // ID - READ-ONLY; Azure resource Id 4189 ID *string `json:"id,omitempty"` 4190 // Name - READ-ONLY; Azure resource name 4191 Name *string `json:"name,omitempty"` 4192 // Type - READ-ONLY; Azure resource type 4193 Type *string `json:"type,omitempty"` 4194 // Location - Resource location 4195 Location *string `json:"location,omitempty"` 4196 // Tags - Resource tags 4197 Tags map[string]*string `json:"tags"` 4198} 4199 4200// MarshalJSON is the custom marshaler for Resource. 4201func (r Resource) MarshalJSON() ([]byte, error) { 4202 objectMap := make(map[string]interface{}) 4203 if r.Location != nil { 4204 objectMap["location"] = r.Location 4205 } 4206 if r.Tags != nil { 4207 objectMap["tags"] = r.Tags 4208 } 4209 return json.Marshal(objectMap) 4210} 4211 4212// Response the response to a metrics query. 4213type Response struct { 4214 autorest.Response `json:"-"` 4215 // Cost - The integer value representing the cost of the query, for data case. 4216 Cost *float64 `json:"cost,omitempty"` 4217 // Timespan - The timespan for which the data was retrieved. Its value consists of two datetimes concatenated, separated by '/'. This may be adjusted in the future and returned back from what was originally requested. 4218 Timespan *string `json:"timespan,omitempty"` 4219 // Interval - The interval (window size) for which the metric data was returned in. This may be adjusted in the future and returned back from what was originally requested. This is not present if a metadata request was made. 4220 Interval *string `json:"interval,omitempty"` 4221 // Namespace - The namespace of the metrics been queried 4222 Namespace *string `json:"namespace,omitempty"` 4223 // Resourceregion - The region of the resource been queried for metrics. 4224 Resourceregion *string `json:"resourceregion,omitempty"` 4225 // Value - the value of the collection. 4226 Value *[]Metric `json:"value,omitempty"` 4227} 4228 4229// RetentionPolicy specifies the retention policy for the log. 4230type RetentionPolicy struct { 4231 // Enabled - a value indicating whether the retention policy is enabled. 4232 Enabled *bool `json:"enabled,omitempty"` 4233 // Days - the number of days for the retention in days. A value of 0 will retain the events indefinitely. 4234 Days *int32 `json:"days,omitempty"` 4235} 4236 4237// BasicRuleAction the action that is performed when the alert rule becomes active, and when an alert condition is 4238// resolved. 4239type BasicRuleAction interface { 4240 AsRuleEmailAction() (*RuleEmailAction, bool) 4241 AsRuleWebhookAction() (*RuleWebhookAction, bool) 4242 AsRuleAction() (*RuleAction, bool) 4243} 4244 4245// RuleAction the action that is performed when the alert rule becomes active, and when an alert condition is 4246// resolved. 4247type RuleAction struct { 4248 // OdataType - Possible values include: 'OdataTypeRuleAction', 'OdataTypeMicrosoftAzureManagementInsightsModelsRuleEmailAction', 'OdataTypeMicrosoftAzureManagementInsightsModelsRuleWebhookAction' 4249 OdataType OdataTypeBasicRuleAction `json:"odata.type,omitempty"` 4250} 4251 4252func unmarshalBasicRuleAction(body []byte) (BasicRuleAction, error) { 4253 var m map[string]interface{} 4254 err := json.Unmarshal(body, &m) 4255 if err != nil { 4256 return nil, err 4257 } 4258 4259 switch m["odata.type"] { 4260 case string(OdataTypeMicrosoftAzureManagementInsightsModelsRuleEmailAction): 4261 var rea RuleEmailAction 4262 err := json.Unmarshal(body, &rea) 4263 return rea, err 4264 case string(OdataTypeMicrosoftAzureManagementInsightsModelsRuleWebhookAction): 4265 var rwa RuleWebhookAction 4266 err := json.Unmarshal(body, &rwa) 4267 return rwa, err 4268 default: 4269 var ra RuleAction 4270 err := json.Unmarshal(body, &ra) 4271 return ra, err 4272 } 4273} 4274func unmarshalBasicRuleActionArray(body []byte) ([]BasicRuleAction, error) { 4275 var rawMessages []*json.RawMessage 4276 err := json.Unmarshal(body, &rawMessages) 4277 if err != nil { 4278 return nil, err 4279 } 4280 4281 raArray := make([]BasicRuleAction, len(rawMessages)) 4282 4283 for index, rawMessage := range rawMessages { 4284 ra, err := unmarshalBasicRuleAction(*rawMessage) 4285 if err != nil { 4286 return nil, err 4287 } 4288 raArray[index] = ra 4289 } 4290 return raArray, nil 4291} 4292 4293// MarshalJSON is the custom marshaler for RuleAction. 4294func (ra RuleAction) MarshalJSON() ([]byte, error) { 4295 ra.OdataType = OdataTypeRuleAction 4296 objectMap := make(map[string]interface{}) 4297 if ra.OdataType != "" { 4298 objectMap["odata.type"] = ra.OdataType 4299 } 4300 return json.Marshal(objectMap) 4301} 4302 4303// AsRuleEmailAction is the BasicRuleAction implementation for RuleAction. 4304func (ra RuleAction) AsRuleEmailAction() (*RuleEmailAction, bool) { 4305 return nil, false 4306} 4307 4308// AsRuleWebhookAction is the BasicRuleAction implementation for RuleAction. 4309func (ra RuleAction) AsRuleWebhookAction() (*RuleWebhookAction, bool) { 4310 return nil, false 4311} 4312 4313// AsRuleAction is the BasicRuleAction implementation for RuleAction. 4314func (ra RuleAction) AsRuleAction() (*RuleAction, bool) { 4315 return &ra, true 4316} 4317 4318// AsBasicRuleAction is the BasicRuleAction implementation for RuleAction. 4319func (ra RuleAction) AsBasicRuleAction() (BasicRuleAction, bool) { 4320 return &ra, true 4321} 4322 4323// BasicRuleCondition the condition that results in the alert rule being activated. 4324type BasicRuleCondition interface { 4325 AsThresholdRuleCondition() (*ThresholdRuleCondition, bool) 4326 AsLocationThresholdRuleCondition() (*LocationThresholdRuleCondition, bool) 4327 AsManagementEventRuleCondition() (*ManagementEventRuleCondition, bool) 4328 AsRuleCondition() (*RuleCondition, bool) 4329} 4330 4331// RuleCondition the condition that results in the alert rule being activated. 4332type RuleCondition struct { 4333 // DataSource - the resource from which the rule collects its data. For this type dataSource will always be of type RuleMetricDataSource. 4334 DataSource BasicRuleDataSource `json:"dataSource,omitempty"` 4335 // OdataType - Possible values include: 'OdataTypeRuleCondition', 'OdataTypeMicrosoftAzureManagementInsightsModelsThresholdRuleCondition', 'OdataTypeMicrosoftAzureManagementInsightsModelsLocationThresholdRuleCondition', 'OdataTypeMicrosoftAzureManagementInsightsModelsManagementEventRuleCondition' 4336 OdataType OdataTypeBasicRuleCondition `json:"odata.type,omitempty"` 4337} 4338 4339func unmarshalBasicRuleCondition(body []byte) (BasicRuleCondition, error) { 4340 var m map[string]interface{} 4341 err := json.Unmarshal(body, &m) 4342 if err != nil { 4343 return nil, err 4344 } 4345 4346 switch m["odata.type"] { 4347 case string(OdataTypeMicrosoftAzureManagementInsightsModelsThresholdRuleCondition): 4348 var trc ThresholdRuleCondition 4349 err := json.Unmarshal(body, &trc) 4350 return trc, err 4351 case string(OdataTypeMicrosoftAzureManagementInsightsModelsLocationThresholdRuleCondition): 4352 var ltrc LocationThresholdRuleCondition 4353 err := json.Unmarshal(body, <rc) 4354 return ltrc, err 4355 case string(OdataTypeMicrosoftAzureManagementInsightsModelsManagementEventRuleCondition): 4356 var merc ManagementEventRuleCondition 4357 err := json.Unmarshal(body, &merc) 4358 return merc, err 4359 default: 4360 var rc RuleCondition 4361 err := json.Unmarshal(body, &rc) 4362 return rc, err 4363 } 4364} 4365func unmarshalBasicRuleConditionArray(body []byte) ([]BasicRuleCondition, error) { 4366 var rawMessages []*json.RawMessage 4367 err := json.Unmarshal(body, &rawMessages) 4368 if err != nil { 4369 return nil, err 4370 } 4371 4372 rcArray := make([]BasicRuleCondition, len(rawMessages)) 4373 4374 for index, rawMessage := range rawMessages { 4375 rc, err := unmarshalBasicRuleCondition(*rawMessage) 4376 if err != nil { 4377 return nil, err 4378 } 4379 rcArray[index] = rc 4380 } 4381 return rcArray, nil 4382} 4383 4384// MarshalJSON is the custom marshaler for RuleCondition. 4385func (rc RuleCondition) MarshalJSON() ([]byte, error) { 4386 rc.OdataType = OdataTypeRuleCondition 4387 objectMap := make(map[string]interface{}) 4388 objectMap["dataSource"] = rc.DataSource 4389 if rc.OdataType != "" { 4390 objectMap["odata.type"] = rc.OdataType 4391 } 4392 return json.Marshal(objectMap) 4393} 4394 4395// AsThresholdRuleCondition is the BasicRuleCondition implementation for RuleCondition. 4396func (rc RuleCondition) AsThresholdRuleCondition() (*ThresholdRuleCondition, bool) { 4397 return nil, false 4398} 4399 4400// AsLocationThresholdRuleCondition is the BasicRuleCondition implementation for RuleCondition. 4401func (rc RuleCondition) AsLocationThresholdRuleCondition() (*LocationThresholdRuleCondition, bool) { 4402 return nil, false 4403} 4404 4405// AsManagementEventRuleCondition is the BasicRuleCondition implementation for RuleCondition. 4406func (rc RuleCondition) AsManagementEventRuleCondition() (*ManagementEventRuleCondition, bool) { 4407 return nil, false 4408} 4409 4410// AsRuleCondition is the BasicRuleCondition implementation for RuleCondition. 4411func (rc RuleCondition) AsRuleCondition() (*RuleCondition, bool) { 4412 return &rc, true 4413} 4414 4415// AsBasicRuleCondition is the BasicRuleCondition implementation for RuleCondition. 4416func (rc RuleCondition) AsBasicRuleCondition() (BasicRuleCondition, bool) { 4417 return &rc, true 4418} 4419 4420// UnmarshalJSON is the custom unmarshaler for RuleCondition struct. 4421func (rc *RuleCondition) UnmarshalJSON(body []byte) error { 4422 var m map[string]*json.RawMessage 4423 err := json.Unmarshal(body, &m) 4424 if err != nil { 4425 return err 4426 } 4427 for k, v := range m { 4428 switch k { 4429 case "dataSource": 4430 if v != nil { 4431 dataSource, err := unmarshalBasicRuleDataSource(*v) 4432 if err != nil { 4433 return err 4434 } 4435 rc.DataSource = dataSource 4436 } 4437 case "odata.type": 4438 if v != nil { 4439 var odataType OdataTypeBasicRuleCondition 4440 err = json.Unmarshal(*v, &odataType) 4441 if err != nil { 4442 return err 4443 } 4444 rc.OdataType = odataType 4445 } 4446 } 4447 } 4448 4449 return nil 4450} 4451 4452// BasicRuleDataSource the resource from which the rule collects its data. 4453type BasicRuleDataSource interface { 4454 AsRuleMetricDataSource() (*RuleMetricDataSource, bool) 4455 AsRuleManagementEventDataSource() (*RuleManagementEventDataSource, bool) 4456 AsRuleDataSource() (*RuleDataSource, bool) 4457} 4458 4459// RuleDataSource the resource from which the rule collects its data. 4460type RuleDataSource struct { 4461 // ResourceURI - the resource identifier of the resource the rule monitors. **NOTE**: this property cannot be updated for an existing rule. 4462 ResourceURI *string `json:"resourceUri,omitempty"` 4463 // OdataType - Possible values include: 'OdataTypeRuleDataSource', 'OdataTypeMicrosoftAzureManagementInsightsModelsRuleMetricDataSource', 'OdataTypeMicrosoftAzureManagementInsightsModelsRuleManagementEventDataSource' 4464 OdataType OdataType `json:"odata.type,omitempty"` 4465} 4466 4467func unmarshalBasicRuleDataSource(body []byte) (BasicRuleDataSource, error) { 4468 var m map[string]interface{} 4469 err := json.Unmarshal(body, &m) 4470 if err != nil { 4471 return nil, err 4472 } 4473 4474 switch m["odata.type"] { 4475 case string(OdataTypeMicrosoftAzureManagementInsightsModelsRuleMetricDataSource): 4476 var rmds RuleMetricDataSource 4477 err := json.Unmarshal(body, &rmds) 4478 return rmds, err 4479 case string(OdataTypeMicrosoftAzureManagementInsightsModelsRuleManagementEventDataSource): 4480 var rmeds RuleManagementEventDataSource 4481 err := json.Unmarshal(body, &rmeds) 4482 return rmeds, err 4483 default: 4484 var rds RuleDataSource 4485 err := json.Unmarshal(body, &rds) 4486 return rds, err 4487 } 4488} 4489func unmarshalBasicRuleDataSourceArray(body []byte) ([]BasicRuleDataSource, error) { 4490 var rawMessages []*json.RawMessage 4491 err := json.Unmarshal(body, &rawMessages) 4492 if err != nil { 4493 return nil, err 4494 } 4495 4496 rdsArray := make([]BasicRuleDataSource, len(rawMessages)) 4497 4498 for index, rawMessage := range rawMessages { 4499 rds, err := unmarshalBasicRuleDataSource(*rawMessage) 4500 if err != nil { 4501 return nil, err 4502 } 4503 rdsArray[index] = rds 4504 } 4505 return rdsArray, nil 4506} 4507 4508// MarshalJSON is the custom marshaler for RuleDataSource. 4509func (rds RuleDataSource) MarshalJSON() ([]byte, error) { 4510 rds.OdataType = OdataTypeRuleDataSource 4511 objectMap := make(map[string]interface{}) 4512 if rds.ResourceURI != nil { 4513 objectMap["resourceUri"] = rds.ResourceURI 4514 } 4515 if rds.OdataType != "" { 4516 objectMap["odata.type"] = rds.OdataType 4517 } 4518 return json.Marshal(objectMap) 4519} 4520 4521// AsRuleMetricDataSource is the BasicRuleDataSource implementation for RuleDataSource. 4522func (rds RuleDataSource) AsRuleMetricDataSource() (*RuleMetricDataSource, bool) { 4523 return nil, false 4524} 4525 4526// AsRuleManagementEventDataSource is the BasicRuleDataSource implementation for RuleDataSource. 4527func (rds RuleDataSource) AsRuleManagementEventDataSource() (*RuleManagementEventDataSource, bool) { 4528 return nil, false 4529} 4530 4531// AsRuleDataSource is the BasicRuleDataSource implementation for RuleDataSource. 4532func (rds RuleDataSource) AsRuleDataSource() (*RuleDataSource, bool) { 4533 return &rds, true 4534} 4535 4536// AsBasicRuleDataSource is the BasicRuleDataSource implementation for RuleDataSource. 4537func (rds RuleDataSource) AsBasicRuleDataSource() (BasicRuleDataSource, bool) { 4538 return &rds, true 4539} 4540 4541// RuleEmailAction specifies the action to send email when the rule condition is evaluated. The 4542// discriminator is always RuleEmailAction in this case. 4543type RuleEmailAction struct { 4544 // SendToServiceOwners - Whether the administrators (service and co-administrators) of the service should be notified when the alert is activated. 4545 SendToServiceOwners *bool `json:"sendToServiceOwners,omitempty"` 4546 // CustomEmails - the list of administrator's custom email addresses to notify of the activation of the alert. 4547 CustomEmails *[]string `json:"customEmails,omitempty"` 4548 // OdataType - Possible values include: 'OdataTypeRuleAction', 'OdataTypeMicrosoftAzureManagementInsightsModelsRuleEmailAction', 'OdataTypeMicrosoftAzureManagementInsightsModelsRuleWebhookAction' 4549 OdataType OdataTypeBasicRuleAction `json:"odata.type,omitempty"` 4550} 4551 4552// MarshalJSON is the custom marshaler for RuleEmailAction. 4553func (rea RuleEmailAction) MarshalJSON() ([]byte, error) { 4554 rea.OdataType = OdataTypeMicrosoftAzureManagementInsightsModelsRuleEmailAction 4555 objectMap := make(map[string]interface{}) 4556 if rea.SendToServiceOwners != nil { 4557 objectMap["sendToServiceOwners"] = rea.SendToServiceOwners 4558 } 4559 if rea.CustomEmails != nil { 4560 objectMap["customEmails"] = rea.CustomEmails 4561 } 4562 if rea.OdataType != "" { 4563 objectMap["odata.type"] = rea.OdataType 4564 } 4565 return json.Marshal(objectMap) 4566} 4567 4568// AsRuleEmailAction is the BasicRuleAction implementation for RuleEmailAction. 4569func (rea RuleEmailAction) AsRuleEmailAction() (*RuleEmailAction, bool) { 4570 return &rea, true 4571} 4572 4573// AsRuleWebhookAction is the BasicRuleAction implementation for RuleEmailAction. 4574func (rea RuleEmailAction) AsRuleWebhookAction() (*RuleWebhookAction, bool) { 4575 return nil, false 4576} 4577 4578// AsRuleAction is the BasicRuleAction implementation for RuleEmailAction. 4579func (rea RuleEmailAction) AsRuleAction() (*RuleAction, bool) { 4580 return nil, false 4581} 4582 4583// AsBasicRuleAction is the BasicRuleAction implementation for RuleEmailAction. 4584func (rea RuleEmailAction) AsBasicRuleAction() (BasicRuleAction, bool) { 4585 return &rea, true 4586} 4587 4588// RuleManagementEventClaimsDataSource the claims for a rule management event data source. 4589type RuleManagementEventClaimsDataSource struct { 4590 // EmailAddress - the email address. 4591 EmailAddress *string `json:"emailAddress,omitempty"` 4592} 4593 4594// RuleManagementEventDataSource a rule management event data source. The discriminator fields is always 4595// RuleManagementEventDataSource in this case. 4596type RuleManagementEventDataSource struct { 4597 // EventName - the event name. 4598 EventName *string `json:"eventName,omitempty"` 4599 // EventSource - the event source. 4600 EventSource *string `json:"eventSource,omitempty"` 4601 // Level - the level. 4602 Level *string `json:"level,omitempty"` 4603 // OperationName - The name of the operation that should be checked for. If no name is provided, any operation will match. 4604 OperationName *string `json:"operationName,omitempty"` 4605 // ResourceGroupName - the resource group name. 4606 ResourceGroupName *string `json:"resourceGroupName,omitempty"` 4607 // ResourceProviderName - the resource provider name. 4608 ResourceProviderName *string `json:"resourceProviderName,omitempty"` 4609 // Status - The status of the operation that should be checked for. If no status is provided, any status will match. 4610 Status *string `json:"status,omitempty"` 4611 // SubStatus - the substatus. 4612 SubStatus *string `json:"subStatus,omitempty"` 4613 // Claims - the claims. 4614 Claims *RuleManagementEventClaimsDataSource `json:"claims,omitempty"` 4615 // ResourceURI - the resource identifier of the resource the rule monitors. **NOTE**: this property cannot be updated for an existing rule. 4616 ResourceURI *string `json:"resourceUri,omitempty"` 4617 // OdataType - Possible values include: 'OdataTypeRuleDataSource', 'OdataTypeMicrosoftAzureManagementInsightsModelsRuleMetricDataSource', 'OdataTypeMicrosoftAzureManagementInsightsModelsRuleManagementEventDataSource' 4618 OdataType OdataType `json:"odata.type,omitempty"` 4619} 4620 4621// MarshalJSON is the custom marshaler for RuleManagementEventDataSource. 4622func (rmeds RuleManagementEventDataSource) MarshalJSON() ([]byte, error) { 4623 rmeds.OdataType = OdataTypeMicrosoftAzureManagementInsightsModelsRuleManagementEventDataSource 4624 objectMap := make(map[string]interface{}) 4625 if rmeds.EventName != nil { 4626 objectMap["eventName"] = rmeds.EventName 4627 } 4628 if rmeds.EventSource != nil { 4629 objectMap["eventSource"] = rmeds.EventSource 4630 } 4631 if rmeds.Level != nil { 4632 objectMap["level"] = rmeds.Level 4633 } 4634 if rmeds.OperationName != nil { 4635 objectMap["operationName"] = rmeds.OperationName 4636 } 4637 if rmeds.ResourceGroupName != nil { 4638 objectMap["resourceGroupName"] = rmeds.ResourceGroupName 4639 } 4640 if rmeds.ResourceProviderName != nil { 4641 objectMap["resourceProviderName"] = rmeds.ResourceProviderName 4642 } 4643 if rmeds.Status != nil { 4644 objectMap["status"] = rmeds.Status 4645 } 4646 if rmeds.SubStatus != nil { 4647 objectMap["subStatus"] = rmeds.SubStatus 4648 } 4649 if rmeds.Claims != nil { 4650 objectMap["claims"] = rmeds.Claims 4651 } 4652 if rmeds.ResourceURI != nil { 4653 objectMap["resourceUri"] = rmeds.ResourceURI 4654 } 4655 if rmeds.OdataType != "" { 4656 objectMap["odata.type"] = rmeds.OdataType 4657 } 4658 return json.Marshal(objectMap) 4659} 4660 4661// AsRuleMetricDataSource is the BasicRuleDataSource implementation for RuleManagementEventDataSource. 4662func (rmeds RuleManagementEventDataSource) AsRuleMetricDataSource() (*RuleMetricDataSource, bool) { 4663 return nil, false 4664} 4665 4666// AsRuleManagementEventDataSource is the BasicRuleDataSource implementation for RuleManagementEventDataSource. 4667func (rmeds RuleManagementEventDataSource) AsRuleManagementEventDataSource() (*RuleManagementEventDataSource, bool) { 4668 return &rmeds, true 4669} 4670 4671// AsRuleDataSource is the BasicRuleDataSource implementation for RuleManagementEventDataSource. 4672func (rmeds RuleManagementEventDataSource) AsRuleDataSource() (*RuleDataSource, bool) { 4673 return nil, false 4674} 4675 4676// AsBasicRuleDataSource is the BasicRuleDataSource implementation for RuleManagementEventDataSource. 4677func (rmeds RuleManagementEventDataSource) AsBasicRuleDataSource() (BasicRuleDataSource, bool) { 4678 return &rmeds, true 4679} 4680 4681// RuleMetricDataSource a rule metric data source. The discriminator value is always RuleMetricDataSource 4682// in this case. 4683type RuleMetricDataSource struct { 4684 // MetricName - the name of the metric that defines what the rule monitors. 4685 MetricName *string `json:"metricName,omitempty"` 4686 // ResourceURI - the resource identifier of the resource the rule monitors. **NOTE**: this property cannot be updated for an existing rule. 4687 ResourceURI *string `json:"resourceUri,omitempty"` 4688 // OdataType - Possible values include: 'OdataTypeRuleDataSource', 'OdataTypeMicrosoftAzureManagementInsightsModelsRuleMetricDataSource', 'OdataTypeMicrosoftAzureManagementInsightsModelsRuleManagementEventDataSource' 4689 OdataType OdataType `json:"odata.type,omitempty"` 4690} 4691 4692// MarshalJSON is the custom marshaler for RuleMetricDataSource. 4693func (rmds RuleMetricDataSource) MarshalJSON() ([]byte, error) { 4694 rmds.OdataType = OdataTypeMicrosoftAzureManagementInsightsModelsRuleMetricDataSource 4695 objectMap := make(map[string]interface{}) 4696 if rmds.MetricName != nil { 4697 objectMap["metricName"] = rmds.MetricName 4698 } 4699 if rmds.ResourceURI != nil { 4700 objectMap["resourceUri"] = rmds.ResourceURI 4701 } 4702 if rmds.OdataType != "" { 4703 objectMap["odata.type"] = rmds.OdataType 4704 } 4705 return json.Marshal(objectMap) 4706} 4707 4708// AsRuleMetricDataSource is the BasicRuleDataSource implementation for RuleMetricDataSource. 4709func (rmds RuleMetricDataSource) AsRuleMetricDataSource() (*RuleMetricDataSource, bool) { 4710 return &rmds, true 4711} 4712 4713// AsRuleManagementEventDataSource is the BasicRuleDataSource implementation for RuleMetricDataSource. 4714func (rmds RuleMetricDataSource) AsRuleManagementEventDataSource() (*RuleManagementEventDataSource, bool) { 4715 return nil, false 4716} 4717 4718// AsRuleDataSource is the BasicRuleDataSource implementation for RuleMetricDataSource. 4719func (rmds RuleMetricDataSource) AsRuleDataSource() (*RuleDataSource, bool) { 4720 return nil, false 4721} 4722 4723// AsBasicRuleDataSource is the BasicRuleDataSource implementation for RuleMetricDataSource. 4724func (rmds RuleMetricDataSource) AsBasicRuleDataSource() (BasicRuleDataSource, bool) { 4725 return &rmds, true 4726} 4727 4728// RuleWebhookAction specifies the action to post to service when the rule condition is evaluated. The 4729// discriminator is always RuleWebhookAction in this case. 4730type RuleWebhookAction struct { 4731 // ServiceURI - the service uri to Post the notification when the alert activates or resolves. 4732 ServiceURI *string `json:"serviceUri,omitempty"` 4733 // Properties - the dictionary of custom properties to include with the post operation. These data are appended to the webhook payload. 4734 Properties map[string]*string `json:"properties"` 4735 // OdataType - Possible values include: 'OdataTypeRuleAction', 'OdataTypeMicrosoftAzureManagementInsightsModelsRuleEmailAction', 'OdataTypeMicrosoftAzureManagementInsightsModelsRuleWebhookAction' 4736 OdataType OdataTypeBasicRuleAction `json:"odata.type,omitempty"` 4737} 4738 4739// MarshalJSON is the custom marshaler for RuleWebhookAction. 4740func (rwa RuleWebhookAction) MarshalJSON() ([]byte, error) { 4741 rwa.OdataType = OdataTypeMicrosoftAzureManagementInsightsModelsRuleWebhookAction 4742 objectMap := make(map[string]interface{}) 4743 if rwa.ServiceURI != nil { 4744 objectMap["serviceUri"] = rwa.ServiceURI 4745 } 4746 if rwa.Properties != nil { 4747 objectMap["properties"] = rwa.Properties 4748 } 4749 if rwa.OdataType != "" { 4750 objectMap["odata.type"] = rwa.OdataType 4751 } 4752 return json.Marshal(objectMap) 4753} 4754 4755// AsRuleEmailAction is the BasicRuleAction implementation for RuleWebhookAction. 4756func (rwa RuleWebhookAction) AsRuleEmailAction() (*RuleEmailAction, bool) { 4757 return nil, false 4758} 4759 4760// AsRuleWebhookAction is the BasicRuleAction implementation for RuleWebhookAction. 4761func (rwa RuleWebhookAction) AsRuleWebhookAction() (*RuleWebhookAction, bool) { 4762 return &rwa, true 4763} 4764 4765// AsRuleAction is the BasicRuleAction implementation for RuleWebhookAction. 4766func (rwa RuleWebhookAction) AsRuleAction() (*RuleAction, bool) { 4767 return nil, false 4768} 4769 4770// AsBasicRuleAction is the BasicRuleAction implementation for RuleWebhookAction. 4771func (rwa RuleWebhookAction) AsBasicRuleAction() (BasicRuleAction, bool) { 4772 return &rwa, true 4773} 4774 4775// ScaleAction the parameters for the scaling action. 4776type ScaleAction struct { 4777 // Direction - the scale direction. Whether the scaling action increases or decreases the number of instances. Possible values include: 'ScaleDirectionNone', 'ScaleDirectionIncrease', 'ScaleDirectionDecrease' 4778 Direction ScaleDirection `json:"direction,omitempty"` 4779 // Type - the type of action that should occur when the scale rule fires. Possible values include: 'ChangeCount', 'PercentChangeCount', 'ExactCount' 4780 Type ScaleType `json:"type,omitempty"` 4781 // Value - the number of instances that are involved in the scaling action. This value must be 1 or greater. The default value is 1. 4782 Value *string `json:"value,omitempty"` 4783 // Cooldown - the amount of time to wait since the last scaling action before this action occurs. It must be between 1 week and 1 minute in ISO 8601 format. 4784 Cooldown *string `json:"cooldown,omitempty"` 4785} 4786 4787// ScaleCapacity the number of instances that can be used during this profile. 4788type ScaleCapacity struct { 4789 // Minimum - the minimum number of instances for the resource. 4790 Minimum *string `json:"minimum,omitempty"` 4791 // Maximum - the maximum number of instances for the resource. The actual maximum number of instances is limited by the cores that are available in the subscription. 4792 Maximum *string `json:"maximum,omitempty"` 4793 // Default - the number of instances that will be set if metrics are not available for evaluation. The default is only used if the current instance count is lower than the default. 4794 Default *string `json:"default,omitempty"` 4795} 4796 4797// ScaleRule a rule that provide the triggers and parameters for the scaling action. 4798type ScaleRule struct { 4799 // MetricTrigger - the trigger that results in a scaling action. 4800 MetricTrigger *MetricTrigger `json:"metricTrigger,omitempty"` 4801 // ScaleAction - the parameters for the scaling action. 4802 ScaleAction *ScaleAction `json:"scaleAction,omitempty"` 4803} 4804 4805// ScaleRuleMetricDimension specifies an auto scale rule metric dimension. 4806type ScaleRuleMetricDimension struct { 4807 // DimensionName - Name of the dimension. 4808 DimensionName *string `json:"DimensionName,omitempty"` 4809 // Operator - the dimension operator. Only 'Equals' and 'NotEquals' are supported. 'Equals' being equal to any of the values. 'NotEquals' being not equal to all of the values. Possible values include: 'ScaleRuleMetricDimensionOperationTypeEquals', 'ScaleRuleMetricDimensionOperationTypeNotEquals' 4810 Operator ScaleRuleMetricDimensionOperationType `json:"Operator,omitempty"` 4811 // Values - list of dimension values. For example: ["App1","App2"]. 4812 Values *[]string `json:"Values,omitempty"` 4813} 4814 4815// Schedule defines how often to run the search and the time interval. 4816type Schedule struct { 4817 // FrequencyInMinutes - frequency (in minutes) at which rule condition should be evaluated. 4818 FrequencyInMinutes *int32 `json:"frequencyInMinutes,omitempty"` 4819 // TimeWindowInMinutes - Time window for which data needs to be fetched for query (should be greater than or equal to frequencyInMinutes). 4820 TimeWindowInMinutes *int32 `json:"timeWindowInMinutes,omitempty"` 4821} 4822 4823// SenderAuthorization the authorization used by the user who has performed the operation that led to this 4824// event. This captures the RBAC properties of the event. These usually include the 'action', 'role' and 4825// the 'scope' 4826type SenderAuthorization struct { 4827 // Action - the permissible actions. For instance: microsoft.support/supporttickets/write 4828 Action *string `json:"action,omitempty"` 4829 // Role - the role of the user. For instance: Subscription Admin 4830 Role *string `json:"role,omitempty"` 4831 // Scope - the scope. 4832 Scope *string `json:"scope,omitempty"` 4833} 4834 4835// SmsReceiver an SMS receiver. 4836type SmsReceiver struct { 4837 // Name - The name of the SMS receiver. Names must be unique across all receivers within an action group. 4838 Name *string `json:"name,omitempty"` 4839 // CountryCode - The country code of the SMS receiver. 4840 CountryCode *string `json:"countryCode,omitempty"` 4841 // PhoneNumber - The phone number of the SMS receiver. 4842 PhoneNumber *string `json:"phoneNumber,omitempty"` 4843 // Status - READ-ONLY; The status of the receiver. Possible values include: 'ReceiverStatusNotSpecified', 'ReceiverStatusEnabled', 'ReceiverStatusDisabled' 4844 Status ReceiverStatus `json:"status,omitempty"` 4845} 4846 4847// MarshalJSON is the custom marshaler for SmsReceiver. 4848func (sr SmsReceiver) MarshalJSON() ([]byte, error) { 4849 objectMap := make(map[string]interface{}) 4850 if sr.Name != nil { 4851 objectMap["name"] = sr.Name 4852 } 4853 if sr.CountryCode != nil { 4854 objectMap["countryCode"] = sr.CountryCode 4855 } 4856 if sr.PhoneNumber != nil { 4857 objectMap["phoneNumber"] = sr.PhoneNumber 4858 } 4859 return json.Marshal(objectMap) 4860} 4861 4862// Source specifies the log search query. 4863type Source struct { 4864 // Query - Log search query. Required for action type - AlertingAction 4865 Query *string `json:"query,omitempty"` 4866 // AuthorizedResources - List of Resource referred into query 4867 AuthorizedResources *[]string `json:"authorizedResources,omitempty"` 4868 // DataSourceID - The resource uri over which log search query is to be run. 4869 DataSourceID *string `json:"dataSourceId,omitempty"` 4870 // QueryType - Set value to 'ResultCount'. Possible values include: 'ResultCount' 4871 QueryType QueryType `json:"queryType,omitempty"` 4872} 4873 4874// ThresholdRuleCondition a rule condition based on a metric crossing a threshold. 4875type ThresholdRuleCondition struct { 4876 // Operator - the operator used to compare the data and the threshold. Possible values include: 'ConditionOperatorGreaterThan', 'ConditionOperatorGreaterThanOrEqual', 'ConditionOperatorLessThan', 'ConditionOperatorLessThanOrEqual' 4877 Operator ConditionOperator `json:"operator,omitempty"` 4878 // Threshold - the threshold value that activates the alert. 4879 Threshold *float64 `json:"threshold,omitempty"` 4880 // WindowSize - the period of time (in ISO 8601 duration format) that is used to monitor alert activity based on the threshold. If specified then it must be between 5 minutes and 1 day. 4881 WindowSize *string `json:"windowSize,omitempty"` 4882 // TimeAggregation - the time aggregation operator. How the data that are collected should be combined over time. The default value is the PrimaryAggregationType of the Metric. Possible values include: 'TimeAggregationOperatorAverage', 'TimeAggregationOperatorMinimum', 'TimeAggregationOperatorMaximum', 'TimeAggregationOperatorTotal', 'TimeAggregationOperatorLast' 4883 TimeAggregation TimeAggregationOperator `json:"timeAggregation,omitempty"` 4884 // DataSource - the resource from which the rule collects its data. For this type dataSource will always be of type RuleMetricDataSource. 4885 DataSource BasicRuleDataSource `json:"dataSource,omitempty"` 4886 // OdataType - Possible values include: 'OdataTypeRuleCondition', 'OdataTypeMicrosoftAzureManagementInsightsModelsThresholdRuleCondition', 'OdataTypeMicrosoftAzureManagementInsightsModelsLocationThresholdRuleCondition', 'OdataTypeMicrosoftAzureManagementInsightsModelsManagementEventRuleCondition' 4887 OdataType OdataTypeBasicRuleCondition `json:"odata.type,omitempty"` 4888} 4889 4890// MarshalJSON is the custom marshaler for ThresholdRuleCondition. 4891func (trc ThresholdRuleCondition) MarshalJSON() ([]byte, error) { 4892 trc.OdataType = OdataTypeMicrosoftAzureManagementInsightsModelsThresholdRuleCondition 4893 objectMap := make(map[string]interface{}) 4894 if trc.Operator != "" { 4895 objectMap["operator"] = trc.Operator 4896 } 4897 if trc.Threshold != nil { 4898 objectMap["threshold"] = trc.Threshold 4899 } 4900 if trc.WindowSize != nil { 4901 objectMap["windowSize"] = trc.WindowSize 4902 } 4903 if trc.TimeAggregation != "" { 4904 objectMap["timeAggregation"] = trc.TimeAggregation 4905 } 4906 objectMap["dataSource"] = trc.DataSource 4907 if trc.OdataType != "" { 4908 objectMap["odata.type"] = trc.OdataType 4909 } 4910 return json.Marshal(objectMap) 4911} 4912 4913// AsThresholdRuleCondition is the BasicRuleCondition implementation for ThresholdRuleCondition. 4914func (trc ThresholdRuleCondition) AsThresholdRuleCondition() (*ThresholdRuleCondition, bool) { 4915 return &trc, true 4916} 4917 4918// AsLocationThresholdRuleCondition is the BasicRuleCondition implementation for ThresholdRuleCondition. 4919func (trc ThresholdRuleCondition) AsLocationThresholdRuleCondition() (*LocationThresholdRuleCondition, bool) { 4920 return nil, false 4921} 4922 4923// AsManagementEventRuleCondition is the BasicRuleCondition implementation for ThresholdRuleCondition. 4924func (trc ThresholdRuleCondition) AsManagementEventRuleCondition() (*ManagementEventRuleCondition, bool) { 4925 return nil, false 4926} 4927 4928// AsRuleCondition is the BasicRuleCondition implementation for ThresholdRuleCondition. 4929func (trc ThresholdRuleCondition) AsRuleCondition() (*RuleCondition, bool) { 4930 return nil, false 4931} 4932 4933// AsBasicRuleCondition is the BasicRuleCondition implementation for ThresholdRuleCondition. 4934func (trc ThresholdRuleCondition) AsBasicRuleCondition() (BasicRuleCondition, bool) { 4935 return &trc, true 4936} 4937 4938// UnmarshalJSON is the custom unmarshaler for ThresholdRuleCondition struct. 4939func (trc *ThresholdRuleCondition) UnmarshalJSON(body []byte) error { 4940 var m map[string]*json.RawMessage 4941 err := json.Unmarshal(body, &m) 4942 if err != nil { 4943 return err 4944 } 4945 for k, v := range m { 4946 switch k { 4947 case "operator": 4948 if v != nil { 4949 var operator ConditionOperator 4950 err = json.Unmarshal(*v, &operator) 4951 if err != nil { 4952 return err 4953 } 4954 trc.Operator = operator 4955 } 4956 case "threshold": 4957 if v != nil { 4958 var threshold float64 4959 err = json.Unmarshal(*v, &threshold) 4960 if err != nil { 4961 return err 4962 } 4963 trc.Threshold = &threshold 4964 } 4965 case "windowSize": 4966 if v != nil { 4967 var windowSize string 4968 err = json.Unmarshal(*v, &windowSize) 4969 if err != nil { 4970 return err 4971 } 4972 trc.WindowSize = &windowSize 4973 } 4974 case "timeAggregation": 4975 if v != nil { 4976 var timeAggregation TimeAggregationOperator 4977 err = json.Unmarshal(*v, &timeAggregation) 4978 if err != nil { 4979 return err 4980 } 4981 trc.TimeAggregation = timeAggregation 4982 } 4983 case "dataSource": 4984 if v != nil { 4985 dataSource, err := unmarshalBasicRuleDataSource(*v) 4986 if err != nil { 4987 return err 4988 } 4989 trc.DataSource = dataSource 4990 } 4991 case "odata.type": 4992 if v != nil { 4993 var odataType OdataTypeBasicRuleCondition 4994 err = json.Unmarshal(*v, &odataType) 4995 if err != nil { 4996 return err 4997 } 4998 trc.OdataType = odataType 4999 } 5000 } 5001 } 5002 5003 return nil 5004} 5005 5006// TimeSeriesElement a time series result type. The discriminator value is always TimeSeries in this case. 5007type TimeSeriesElement struct { 5008 // Metadatavalues - the metadata values returned if $filter was specified in the call. 5009 Metadatavalues *[]MetadataValue `json:"metadatavalues,omitempty"` 5010 // Data - An array of data points representing the metric values. This is only returned if a result type of data is specified. 5011 Data *[]MetricValue `json:"data,omitempty"` 5012} 5013 5014// TimeSeriesInformation the time series info needed for calculating the baseline. 5015type TimeSeriesInformation struct { 5016 // Sensitivities - the list of sensitivities for calculating the baseline. 5017 Sensitivities *[]string `json:"sensitivities,omitempty"` 5018 // Values - The metric values to calculate the baseline. 5019 Values *[]float64 `json:"values,omitempty"` 5020 // Timestamps - the array of timestamps of the baselines. 5021 Timestamps *[]date.Time `json:"timestamps,omitempty"` 5022} 5023 5024// TimeWindow a specific date-time for the profile. 5025type TimeWindow struct { 5026 // TimeZone - the timezone of the start and end times for the profile. Some examples of valid time zones are: Dateline Standard Time, UTC-11, Hawaiian Standard Time, Alaskan Standard Time, Pacific Standard Time (Mexico), Pacific Standard Time, US Mountain Standard Time, Mountain Standard Time (Mexico), Mountain Standard Time, Central America Standard Time, Central Standard Time, Central Standard Time (Mexico), Canada Central Standard Time, SA Pacific Standard Time, Eastern Standard Time, US Eastern Standard Time, Venezuela Standard Time, Paraguay Standard Time, Atlantic Standard Time, Central Brazilian Standard Time, SA Western Standard Time, Pacific SA Standard Time, Newfoundland Standard Time, E. South America Standard Time, Argentina Standard Time, SA Eastern Standard Time, Greenland Standard Time, Montevideo Standard Time, Bahia Standard Time, UTC-02, Mid-Atlantic Standard Time, Azores Standard Time, Cape Verde Standard Time, Morocco Standard Time, UTC, GMT Standard Time, Greenwich Standard Time, W. Europe Standard Time, Central Europe Standard Time, Romance Standard Time, Central European Standard Time, W. Central Africa Standard Time, Namibia Standard Time, Jordan Standard Time, GTB Standard Time, Middle East Standard Time, Egypt Standard Time, Syria Standard Time, E. Europe Standard Time, South Africa Standard Time, FLE Standard Time, Turkey Standard Time, Israel Standard Time, Kaliningrad Standard Time, Libya Standard Time, Arabic Standard Time, Arab Standard Time, Belarus Standard Time, Russian Standard Time, E. Africa Standard Time, Iran Standard Time, Arabian Standard Time, Azerbaijan Standard Time, Russia Time Zone 3, Mauritius Standard Time, Georgian Standard Time, Caucasus Standard Time, Afghanistan Standard Time, West Asia Standard Time, Ekaterinburg Standard Time, Pakistan Standard Time, India Standard Time, Sri Lanka Standard Time, Nepal Standard Time, Central Asia Standard Time, Bangladesh Standard Time, N. Central Asia Standard Time, Myanmar Standard Time, SE Asia Standard Time, North Asia Standard Time, China Standard Time, North Asia East Standard Time, Singapore Standard Time, W. Australia Standard Time, Taipei Standard Time, Ulaanbaatar Standard Time, Tokyo Standard Time, Korea Standard Time, Yakutsk Standard Time, Cen. Australia Standard Time, AUS Central Standard Time, E. Australia Standard Time, AUS Eastern Standard Time, West Pacific Standard Time, Tasmania Standard Time, Magadan Standard Time, Vladivostok Standard Time, Russia Time Zone 10, Central Pacific Standard Time, Russia Time Zone 11, New Zealand Standard Time, UTC+12, Fiji Standard Time, Kamchatka Standard Time, Tonga Standard Time, Samoa Standard Time, Line Islands Standard Time 5027 TimeZone *string `json:"timeZone,omitempty"` 5028 // Start - the start time for the profile in ISO 8601 format. 5029 Start *date.Time `json:"start,omitempty"` 5030 // End - the end time for the profile in ISO 8601 format. 5031 End *date.Time `json:"end,omitempty"` 5032} 5033 5034// TriggerCondition the condition that results in the Log Search rule. 5035type TriggerCondition struct { 5036 // ThresholdOperator - Evaluation operation for rule - 'GreaterThan' or 'LessThan. Possible values include: 'ConditionalOperatorGreaterThan', 'ConditionalOperatorLessThan', 'ConditionalOperatorEqual' 5037 ThresholdOperator ConditionalOperator `json:"thresholdOperator,omitempty"` 5038 // Threshold - Result or count threshold based on which rule should be triggered. 5039 Threshold *float64 `json:"threshold,omitempty"` 5040 // MetricTrigger - Trigger condition for metric query rule 5041 MetricTrigger *LogMetricTrigger `json:"metricTrigger,omitempty"` 5042} 5043 5044// VoiceReceiver a voice receiver. 5045type VoiceReceiver struct { 5046 // Name - The name of the voice receiver. Names must be unique across all receivers within an action group. 5047 Name *string `json:"name,omitempty"` 5048 // CountryCode - The country code of the voice receiver. 5049 CountryCode *string `json:"countryCode,omitempty"` 5050 // PhoneNumber - The phone number of the voice receiver. 5051 PhoneNumber *string `json:"phoneNumber,omitempty"` 5052} 5053 5054// WebhookNotification webhook notification of an autoscale event. 5055type WebhookNotification struct { 5056 // ServiceURI - the service address to receive the notification. 5057 ServiceURI *string `json:"serviceUri,omitempty"` 5058 // Properties - a property bag of settings. This value can be empty. 5059 Properties map[string]*string `json:"properties"` 5060} 5061 5062// MarshalJSON is the custom marshaler for WebhookNotification. 5063func (wn WebhookNotification) MarshalJSON() ([]byte, error) { 5064 objectMap := make(map[string]interface{}) 5065 if wn.ServiceURI != nil { 5066 objectMap["serviceUri"] = wn.ServiceURI 5067 } 5068 if wn.Properties != nil { 5069 objectMap["properties"] = wn.Properties 5070 } 5071 return json.Marshal(objectMap) 5072} 5073 5074// WebhookReceiver a webhook receiver. 5075type WebhookReceiver struct { 5076 // Name - The name of the webhook receiver. Names must be unique across all receivers within an action group. 5077 Name *string `json:"name,omitempty"` 5078 // ServiceURI - The URI where webhooks should be sent. 5079 ServiceURI *string `json:"serviceUri,omitempty"` 5080} 5081 5082// WebtestLocationAvailabilityCriteria specifies the metric alert rule criteria for a web test resource. 5083type WebtestLocationAvailabilityCriteria struct { 5084 // WebTestID - The Application Insights web test Id. 5085 WebTestID *string `json:"webTestId,omitempty"` 5086 // ComponentID - The Application Insights resource Id. 5087 ComponentID *string `json:"componentId,omitempty"` 5088 // FailedLocationCount - The number of failed locations. 5089 FailedLocationCount *float64 `json:"failedLocationCount,omitempty"` 5090 // AdditionalProperties - Unmatched properties from the message are deserialized this collection 5091 AdditionalProperties map[string]interface{} `json:""` 5092 // OdataType - Possible values include: 'OdataTypeMetricAlertCriteria', 'OdataTypeMicrosoftAzureMonitorSingleResourceMultipleMetricCriteria', 'OdataTypeMicrosoftAzureMonitorWebtestLocationAvailabilityCriteria', 'OdataTypeMicrosoftAzureMonitorMultipleResourceMultipleMetricCriteria' 5093 OdataType OdataTypeBasicMetricAlertCriteria `json:"odata.type,omitempty"` 5094} 5095 5096// MarshalJSON is the custom marshaler for WebtestLocationAvailabilityCriteria. 5097func (wlac WebtestLocationAvailabilityCriteria) MarshalJSON() ([]byte, error) { 5098 wlac.OdataType = OdataTypeMicrosoftAzureMonitorWebtestLocationAvailabilityCriteria 5099 objectMap := make(map[string]interface{}) 5100 if wlac.WebTestID != nil { 5101 objectMap["webTestId"] = wlac.WebTestID 5102 } 5103 if wlac.ComponentID != nil { 5104 objectMap["componentId"] = wlac.ComponentID 5105 } 5106 if wlac.FailedLocationCount != nil { 5107 objectMap["failedLocationCount"] = wlac.FailedLocationCount 5108 } 5109 if wlac.OdataType != "" { 5110 objectMap["odata.type"] = wlac.OdataType 5111 } 5112 for k, v := range wlac.AdditionalProperties { 5113 objectMap[k] = v 5114 } 5115 return json.Marshal(objectMap) 5116} 5117 5118// AsMetricAlertSingleResourceMultipleMetricCriteria is the BasicMetricAlertCriteria implementation for WebtestLocationAvailabilityCriteria. 5119func (wlac WebtestLocationAvailabilityCriteria) AsMetricAlertSingleResourceMultipleMetricCriteria() (*MetricAlertSingleResourceMultipleMetricCriteria, bool) { 5120 return nil, false 5121} 5122 5123// AsWebtestLocationAvailabilityCriteria is the BasicMetricAlertCriteria implementation for WebtestLocationAvailabilityCriteria. 5124func (wlac WebtestLocationAvailabilityCriteria) AsWebtestLocationAvailabilityCriteria() (*WebtestLocationAvailabilityCriteria, bool) { 5125 return &wlac, true 5126} 5127 5128// AsMetricAlertMultipleResourceMultipleMetricCriteria is the BasicMetricAlertCriteria implementation for WebtestLocationAvailabilityCriteria. 5129func (wlac WebtestLocationAvailabilityCriteria) AsMetricAlertMultipleResourceMultipleMetricCriteria() (*MetricAlertMultipleResourceMultipleMetricCriteria, bool) { 5130 return nil, false 5131} 5132 5133// AsMetricAlertCriteria is the BasicMetricAlertCriteria implementation for WebtestLocationAvailabilityCriteria. 5134func (wlac WebtestLocationAvailabilityCriteria) AsMetricAlertCriteria() (*MetricAlertCriteria, bool) { 5135 return nil, false 5136} 5137 5138// AsBasicMetricAlertCriteria is the BasicMetricAlertCriteria implementation for WebtestLocationAvailabilityCriteria. 5139func (wlac WebtestLocationAvailabilityCriteria) AsBasicMetricAlertCriteria() (BasicMetricAlertCriteria, bool) { 5140 return &wlac, true 5141} 5142 5143// UnmarshalJSON is the custom unmarshaler for WebtestLocationAvailabilityCriteria struct. 5144func (wlac *WebtestLocationAvailabilityCriteria) UnmarshalJSON(body []byte) error { 5145 var m map[string]*json.RawMessage 5146 err := json.Unmarshal(body, &m) 5147 if err != nil { 5148 return err 5149 } 5150 for k, v := range m { 5151 switch k { 5152 case "webTestId": 5153 if v != nil { 5154 var webTestID string 5155 err = json.Unmarshal(*v, &webTestID) 5156 if err != nil { 5157 return err 5158 } 5159 wlac.WebTestID = &webTestID 5160 } 5161 case "componentId": 5162 if v != nil { 5163 var componentID string 5164 err = json.Unmarshal(*v, &componentID) 5165 if err != nil { 5166 return err 5167 } 5168 wlac.ComponentID = &componentID 5169 } 5170 case "failedLocationCount": 5171 if v != nil { 5172 var failedLocationCount float64 5173 err = json.Unmarshal(*v, &failedLocationCount) 5174 if err != nil { 5175 return err 5176 } 5177 wlac.FailedLocationCount = &failedLocationCount 5178 } 5179 default: 5180 if v != nil { 5181 var additionalProperties interface{} 5182 err = json.Unmarshal(*v, &additionalProperties) 5183 if err != nil { 5184 return err 5185 } 5186 if wlac.AdditionalProperties == nil { 5187 wlac.AdditionalProperties = make(map[string]interface{}) 5188 } 5189 wlac.AdditionalProperties[k] = additionalProperties 5190 } 5191 case "odata.type": 5192 if v != nil { 5193 var odataType OdataTypeBasicMetricAlertCriteria 5194 err = json.Unmarshal(*v, &odataType) 5195 if err != nil { 5196 return err 5197 } 5198 wlac.OdataType = odataType 5199 } 5200 } 5201 } 5202 5203 return nil 5204} 5205