Skip to content

Commit da36356

Browse files
Add support for evaluationMissingData in AlertPolicy (#6295) (#4502)
Signed-off-by: Modular Magician <[email protected]>
1 parent 1964cee commit da36356

File tree

3 files changed

+93
-0
lines changed

3 files changed

+93
-0
lines changed

.changelog/6295.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
```release-note:enhancement
2+
monitoring: added `evaluation_missing_data` field to `google_monitoring_alert_policy`
3+
```

google-beta/resource_monitoring_alert_policy.go

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -302,6 +302,14 @@ alerted on quickly.`,
302302
Required: true,
303303
Description: `Monitoring Query Language query that outputs a boolean stream.`,
304304
},
305+
"evaluation_missing_data": {
306+
Type: schema.TypeString,
307+
Optional: true,
308+
ValidateFunc: validateEnum([]string{"EVALUATION_MISSING_DATA_INACTIVE", "EVALUATION_MISSING_DATA_ACTIVE", "EVALUATION_MISSING_DATA_NO_OP", ""}),
309+
Description: `A condition control that determines how
310+
metric-threshold conditions are evaluated when
311+
data stops arriving. Possible values: ["EVALUATION_MISSING_DATA_INACTIVE", "EVALUATION_MISSING_DATA_ACTIVE", "EVALUATION_MISSING_DATA_NO_OP"]`,
312+
},
305313
"trigger": {
306314
Type: schema.TypeList,
307315
Optional: true,
@@ -627,6 +635,14 @@ contain restrictions on resource type,
627635
resource labels, and metric labels. This
628636
field may not exceed 2048 Unicode characters
629637
in length.`,
638+
},
639+
"evaluation_missing_data": {
640+
Type: schema.TypeString,
641+
Optional: true,
642+
ValidateFunc: validateEnum([]string{"EVALUATION_MISSING_DATA_INACTIVE", "EVALUATION_MISSING_DATA_ACTIVE", "EVALUATION_MISSING_DATA_NO_OP", ""}),
643+
Description: `A condition control that determines how
644+
metric-threshold conditions are evaluated when
645+
data stops arriving. Possible values: ["EVALUATION_MISSING_DATA_INACTIVE", "EVALUATION_MISSING_DATA_ACTIVE", "EVALUATION_MISSING_DATA_NO_OP"]`,
630646
},
631647
"filter": {
632648
Type: schema.TypeString,
@@ -1395,6 +1411,8 @@ func flattenMonitoringAlertPolicyConditionsConditionMonitoringQueryLanguage(v in
13951411
flattenMonitoringAlertPolicyConditionsConditionMonitoringQueryLanguageDuration(original["duration"], d, config)
13961412
transformed["trigger"] =
13971413
flattenMonitoringAlertPolicyConditionsConditionMonitoringQueryLanguageTrigger(original["trigger"], d, config)
1414+
transformed["evaluation_missing_data"] =
1415+
flattenMonitoringAlertPolicyConditionsConditionMonitoringQueryLanguageEvaluationMissingData(original["evaluationMissingData"], d, config)
13981416
return []interface{}{transformed}
13991417
}
14001418
func flattenMonitoringAlertPolicyConditionsConditionMonitoringQueryLanguageQuery(v interface{}, d *schema.ResourceData, config *Config) interface{} {
@@ -1441,6 +1459,10 @@ func flattenMonitoringAlertPolicyConditionsConditionMonitoringQueryLanguageTrigg
14411459
return v // let terraform core handle it otherwise
14421460
}
14431461

1462+
func flattenMonitoringAlertPolicyConditionsConditionMonitoringQueryLanguageEvaluationMissingData(v interface{}, d *schema.ResourceData, config *Config) interface{} {
1463+
return v
1464+
}
1465+
14441466
func flattenMonitoringAlertPolicyConditionsConditionThreshold(v interface{}, d *schema.ResourceData, config *Config) interface{} {
14451467
if v == nil {
14461468
return nil
@@ -1466,6 +1488,8 @@ func flattenMonitoringAlertPolicyConditionsConditionThreshold(v interface{}, d *
14661488
flattenMonitoringAlertPolicyConditionsConditionThresholdAggregations(original["aggregations"], d, config)
14671489
transformed["filter"] =
14681490
flattenMonitoringAlertPolicyConditionsConditionThresholdFilter(original["filter"], d, config)
1491+
transformed["evaluation_missing_data"] =
1492+
flattenMonitoringAlertPolicyConditionsConditionThresholdEvaluationMissingData(original["evaluationMissingData"], d, config)
14691493
return []interface{}{transformed}
14701494
}
14711495
func flattenMonitoringAlertPolicyConditionsConditionThresholdThresholdValue(v interface{}, d *schema.ResourceData, config *Config) interface{} {
@@ -1598,6 +1622,10 @@ func flattenMonitoringAlertPolicyConditionsConditionThresholdFilter(v interface{
15981622
return v
15991623
}
16001624

1625+
func flattenMonitoringAlertPolicyConditionsConditionThresholdEvaluationMissingData(v interface{}, d *schema.ResourceData, config *Config) interface{} {
1626+
return v
1627+
}
1628+
16011629
func flattenMonitoringAlertPolicyConditionsDisplayName(v interface{}, d *schema.ResourceData, config *Config) interface{} {
16021630
return v
16031631
}
@@ -1936,6 +1964,13 @@ func expandMonitoringAlertPolicyConditionsConditionMonitoringQueryLanguage(v int
19361964
transformed["trigger"] = transformedTrigger
19371965
}
19381966

1967+
transformedEvaluationMissingData, err := expandMonitoringAlertPolicyConditionsConditionMonitoringQueryLanguageEvaluationMissingData(original["evaluation_missing_data"], d, config)
1968+
if err != nil {
1969+
return nil, err
1970+
} else if val := reflect.ValueOf(transformedEvaluationMissingData); val.IsValid() && !isEmptyValue(val) {
1971+
transformed["evaluationMissingData"] = transformedEvaluationMissingData
1972+
}
1973+
19391974
return transformed, nil
19401975
}
19411976

@@ -1981,6 +2016,10 @@ func expandMonitoringAlertPolicyConditionsConditionMonitoringQueryLanguageTrigge
19812016
return v, nil
19822017
}
19832018

2019+
func expandMonitoringAlertPolicyConditionsConditionMonitoringQueryLanguageEvaluationMissingData(v interface{}, d TerraformResourceData, config *Config) (interface{}, error) {
2020+
return v, nil
2021+
}
2022+
19842023
func expandMonitoringAlertPolicyConditionsConditionThreshold(v interface{}, d TerraformResourceData, config *Config) (interface{}, error) {
19852024
l := v.([]interface{})
19862025
if len(l) == 0 || l[0] == nil {
@@ -2046,6 +2085,13 @@ func expandMonitoringAlertPolicyConditionsConditionThreshold(v interface{}, d Te
20462085
transformed["filter"] = transformedFilter
20472086
}
20482087

2088+
transformedEvaluationMissingData, err := expandMonitoringAlertPolicyConditionsConditionThresholdEvaluationMissingData(original["evaluation_missing_data"], d, config)
2089+
if err != nil {
2090+
return nil, err
2091+
} else if val := reflect.ValueOf(transformedEvaluationMissingData); val.IsValid() && !isEmptyValue(val) {
2092+
transformed["evaluationMissingData"] = transformedEvaluationMissingData
2093+
}
2094+
20492095
return transformed, nil
20502096
}
20512097

@@ -2221,6 +2267,10 @@ func expandMonitoringAlertPolicyConditionsConditionThresholdFilter(v interface{}
22212267
return v, nil
22222268
}
22232269

2270+
func expandMonitoringAlertPolicyConditionsConditionThresholdEvaluationMissingData(v interface{}, d TerraformResourceData, config *Config) (interface{}, error) {
2271+
return v, nil
2272+
}
2273+
22242274
func expandMonitoringAlertPolicyConditionsDisplayName(v interface{}, d TerraformResourceData, config *Config) (interface{}, error) {
22252275
return v, nil
22262276
}

website/docs/r/monitoring_alert_policy.html.markdown

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,32 @@ resource "google_monitoring_alert_policy" "alert_policy" {
6060
}
6161
}
6262
```
63+
## Example Usage - Monitoring Alert Policy Evaluation Missing Data
64+
65+
66+
```hcl
67+
resource "google_monitoring_alert_policy" "alert_policy" {
68+
display_name = "My Alert Policy"
69+
combiner = "OR"
70+
conditions {
71+
display_name = "test condition"
72+
condition_threshold {
73+
filter = "metric.type=\"compute.googleapis.com/instance/disk/write_bytes_count\" AND resource.type=\"gce_instance\""
74+
duration = "60s"
75+
comparison = "COMPARISON_GT"
76+
aggregations {
77+
alignment_period = "60s"
78+
per_series_aligner = "ALIGN_RATE"
79+
}
80+
evaluation_missing_data = "EVALUATION_MISSING_DATA_INACTIVE"
81+
}
82+
}
83+
84+
user_labels = {
85+
foo = "bar"
86+
}
87+
}
88+
```
6389

6490
## Argument Reference
6591

@@ -318,6 +344,13 @@ The following arguments are supported:
318344
denominator_aggregations are specified.
319345
Structure is [documented below](#nested_trigger).
320346

347+
* `evaluation_missing_data` -
348+
(Optional)
349+
A condition control that determines how
350+
metric-threshold conditions are evaluated when
351+
data stops arriving.
352+
Possible values are `EVALUATION_MISSING_DATA_INACTIVE`, `EVALUATION_MISSING_DATA_ACTIVE`, and `EVALUATION_MISSING_DATA_NO_OP`.
353+
321354

322355
<a name="nested_trigger"></a>The `trigger` block supports:
323356

@@ -452,6 +485,13 @@ The following arguments are supported:
452485
field may not exceed 2048 Unicode characters
453486
in length.
454487

488+
* `evaluation_missing_data` -
489+
(Optional)
490+
A condition control that determines how
491+
metric-threshold conditions are evaluated when
492+
data stops arriving.
493+
Possible values are `EVALUATION_MISSING_DATA_INACTIVE`, `EVALUATION_MISSING_DATA_ACTIVE`, and `EVALUATION_MISSING_DATA_NO_OP`.
494+
455495

456496
<a name="nested_denominator_aggregations"></a>The `denominator_aggregations` block supports:
457497

0 commit comments

Comments
 (0)