Skip to content

Commit 85954a0

Browse files
authored
Merge pull request #29896 from hashicorp/b-cloudwatch-alarm-period
resource/aws_cloudwatch_metric_alarm: Add `period` to `metric_query` block
2 parents eb02d81 + a03bb8c commit 85954a0

File tree

4 files changed

+262
-173
lines changed

4 files changed

+262
-173
lines changed

.changelog/29896.txt

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
```release-note:enhancement
2+
resource/aws_cloudwatch_metric_alarm: Add `period` parameter to `metric_query`
3+
```
4+
5+
```release-note:enhancement
6+
resource/aws_cloudwatch_metric_alarm: Add validation to `period` parameter of `metric_query.metric`
7+
```

internal/service/cloudwatch/metric_alarm.go

+18
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,10 @@ func ResourceMetricAlarm() *schema.Resource {
113113
"period": {
114114
Type: schema.TypeInt,
115115
Required: true,
116+
ValidateFunc: validation.Any(
117+
validation.IntInSlice([]int{1, 5, 10, 30}),
118+
validation.IntDivisibleBy(60),
119+
),
116120
},
117121
"stat": {
118122
Type: schema.TypeString,
@@ -138,6 +142,14 @@ func ResourceMetricAlarm() *schema.Resource {
138142
Type: schema.TypeString,
139143
Optional: true,
140144
},
145+
"period": {
146+
Type: schema.TypeInt,
147+
Optional: true,
148+
ValidateFunc: validation.Any(
149+
validation.IntInSlice([]int{1, 5, 10, 30}),
150+
validation.IntDivisibleBy(60),
151+
),
152+
},
141153
"return_data": {
142154
Type: schema.TypeBool,
143155
Optional: true,
@@ -611,6 +623,9 @@ func flattenMetricAlarmMetrics(metrics []*cloudwatch.MetricDataQuery) []map[stri
611623
metric := flattenMetricAlarmMetricsMetricStat(mq.MetricStat)
612624
metricQuery["metric"] = []interface{}{metric}
613625
}
626+
if mq.Period != nil {
627+
metricQuery["period"] = aws.Int64Value(mq.Period)
628+
}
614629
metricQueries = append(metricQueries, metricQuery)
615630
}
616631

@@ -655,6 +670,9 @@ func expandMetricAlarmMetrics(v *schema.Set) []*cloudwatch.MetricDataQuery {
655670
if v := metricQueryResource["metric"]; v != nil && len(v.([]interface{})) > 0 {
656671
metricQuery.MetricStat = expandMetricAlarmMetricsMetric(v.([]interface{}))
657672
}
673+
if v, ok := metricQueryResource["period"]; ok && v.(int) != 0 {
674+
metricQuery.Period = aws.Int64(int64(v.(int)))
675+
}
658676
if v, ok := metricQueryResource["account_id"]; ok && v.(string) != "" {
659677
metricQuery.AccountId = aws.String(v.(string))
660678
}

0 commit comments

Comments
 (0)