From 88f8265af1b7d617b6589a9b161d02f16ee36dd9 Mon Sep 17 00:00:00 2001 From: The Magician Date: Fri, 7 Oct 2022 10:45:34 -0700 Subject: [PATCH] Add DSF on reducer to suppress empty == REDUCE_NONE (#6655) (#12741) Signed-off-by: Modular Magician Signed-off-by: Modular Magician --- .changelog/6655.txt | 3 +++ google/resource_monitoring_alert_policy.go | 26 ++++++++++++------- .../resource_monitoring_alert_policy_test.go | 2 +- 3 files changed, 21 insertions(+), 10 deletions(-) create mode 100644 .changelog/6655.txt diff --git a/.changelog/6655.txt b/.changelog/6655.txt new file mode 100644 index 00000000000..fe18f7ccdd7 --- /dev/null +++ b/.changelog/6655.txt @@ -0,0 +1,3 @@ +```release-note:bug +monitoring: fixed a bug causing a perma-diff in `google_monitoring_alert_policy` when `cross_series_reducer` was set to "REDUCE_NONE" +``` diff --git a/google/resource_monitoring_alert_policy.go b/google/resource_monitoring_alert_policy.go index e7540f37b8e..d8b1c1eda76 100644 --- a/google/resource_monitoring_alert_policy.go +++ b/google/resource_monitoring_alert_policy.go @@ -24,6 +24,11 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" ) +// API does not return a value for REDUCE_NONE +func crossSeriesReducerDiffSuppress(k, old, new string, d *schema.ResourceData) bool { + return (new == "" && old == "REDUCE_NONE") || (new == "REDUCE_NONE" && old == "") +} + func resourceMonitoringAlertPolicy() *schema.Resource { return &schema.Resource{ Create: resourceMonitoringAlertPolicyCreate, @@ -117,9 +122,10 @@ this field must be defined; otherwise an error is returned.`, }, "cross_series_reducer": { - Type: schema.TypeString, - Optional: true, - ValidateFunc: validateEnum([]string{"REDUCE_NONE", "REDUCE_MEAN", "REDUCE_MIN", "REDUCE_MAX", "REDUCE_SUM", "REDUCE_STDDEV", "REDUCE_COUNT", "REDUCE_COUNT_TRUE", "REDUCE_COUNT_FALSE", "REDUCE_FRACTION_TRUE", "REDUCE_PERCENTILE_99", "REDUCE_PERCENTILE_95", "REDUCE_PERCENTILE_50", "REDUCE_PERCENTILE_05", ""}), + Type: schema.TypeString, + Optional: true, + ValidateFunc: validateEnum([]string{"REDUCE_NONE", "REDUCE_MEAN", "REDUCE_MIN", "REDUCE_MAX", "REDUCE_SUM", "REDUCE_STDDEV", "REDUCE_COUNT", "REDUCE_COUNT_TRUE", "REDUCE_COUNT_FALSE", "REDUCE_FRACTION_TRUE", "REDUCE_PERCENTILE_99", "REDUCE_PERCENTILE_95", "REDUCE_PERCENTILE_50", "REDUCE_PERCENTILE_05", ""}), + DiffSuppressFunc: crossSeriesReducerDiffSuppress, Description: `The approach to be used to combine time series. Not all reducer functions may be applied to all @@ -421,9 +427,10 @@ this field must be defined; otherwise an error is returned.`, }, "cross_series_reducer": { - Type: schema.TypeString, - Optional: true, - ValidateFunc: validateEnum([]string{"REDUCE_NONE", "REDUCE_MEAN", "REDUCE_MIN", "REDUCE_MAX", "REDUCE_SUM", "REDUCE_STDDEV", "REDUCE_COUNT", "REDUCE_COUNT_TRUE", "REDUCE_COUNT_FALSE", "REDUCE_FRACTION_TRUE", "REDUCE_PERCENTILE_99", "REDUCE_PERCENTILE_95", "REDUCE_PERCENTILE_50", "REDUCE_PERCENTILE_05", ""}), + Type: schema.TypeString, + Optional: true, + ValidateFunc: validateEnum([]string{"REDUCE_NONE", "REDUCE_MEAN", "REDUCE_MIN", "REDUCE_MAX", "REDUCE_SUM", "REDUCE_STDDEV", "REDUCE_COUNT", "REDUCE_COUNT_TRUE", "REDUCE_COUNT_FALSE", "REDUCE_FRACTION_TRUE", "REDUCE_PERCENTILE_99", "REDUCE_PERCENTILE_95", "REDUCE_PERCENTILE_50", "REDUCE_PERCENTILE_05", ""}), + DiffSuppressFunc: crossSeriesReducerDiffSuppress, Description: `The approach to be used to combine time series. Not all reducer functions may be applied to all @@ -539,9 +546,10 @@ this field must be defined; otherwise an error is returned.`, }, "cross_series_reducer": { - Type: schema.TypeString, - Optional: true, - ValidateFunc: validateEnum([]string{"REDUCE_NONE", "REDUCE_MEAN", "REDUCE_MIN", "REDUCE_MAX", "REDUCE_SUM", "REDUCE_STDDEV", "REDUCE_COUNT", "REDUCE_COUNT_TRUE", "REDUCE_COUNT_FALSE", "REDUCE_FRACTION_TRUE", "REDUCE_PERCENTILE_99", "REDUCE_PERCENTILE_95", "REDUCE_PERCENTILE_50", "REDUCE_PERCENTILE_05", ""}), + Type: schema.TypeString, + Optional: true, + ValidateFunc: validateEnum([]string{"REDUCE_NONE", "REDUCE_MEAN", "REDUCE_MIN", "REDUCE_MAX", "REDUCE_SUM", "REDUCE_STDDEV", "REDUCE_COUNT", "REDUCE_COUNT_TRUE", "REDUCE_COUNT_FALSE", "REDUCE_FRACTION_TRUE", "REDUCE_PERCENTILE_99", "REDUCE_PERCENTILE_95", "REDUCE_PERCENTILE_50", "REDUCE_PERCENTILE_05", ""}), + DiffSuppressFunc: crossSeriesReducerDiffSuppress, Description: `The approach to be used to combine time series. Not all reducer functions may be applied to all diff --git a/google/resource_monitoring_alert_policy_test.go b/google/resource_monitoring_alert_policy_test.go index b0a858c68ac..882b9b89c9e 100644 --- a/google/resource_monitoring_alert_policy_test.go +++ b/google/resource_monitoring_alert_policy_test.go @@ -249,7 +249,7 @@ resource "google_monitoring_alert_policy" "full" { aggregations { alignment_period = "60s" - cross_series_reducer = "REDUCE_MEAN" + cross_series_reducer = "REDUCE_NONE" per_series_aligner = "ALIGN_MEAN" group_by_fields = [