From cd4ce5de056852b7ee8dfdd078194b3dffee048d Mon Sep 17 00:00:00 2001 From: Slavek Kabrda Date: Tue, 4 Feb 2020 17:22:36 +0100 Subject: [PATCH] Gracefully handle downtimes that were canceled manually --- datadog/resource_datadog_downtime.go | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/datadog/resource_datadog_downtime.go b/datadog/resource_datadog_downtime.go index 5ca3106de2..0a4f908e27 100644 --- a/datadog/resource_datadog_downtime.go +++ b/datadog/resource_datadog_downtime.go @@ -297,13 +297,20 @@ func resourceDatadogDowntimeExists(d *schema.ResourceData, meta interface{}) (b return false, err } - if _, err = client.GetDowntime(id); err != nil { + downtime, err := client.GetDowntime(id) + if err != nil { if strings.Contains(err.Error(), "404 Not Found") { return false, nil } return false, err } + if _, ok := downtime.GetCanceledOk(); ok { + // when the Downtime is deleted via UI, it is in fact still returned through API, it's just "canceled" + // in this case, we need to consider it deleted, as canceled downtimes can't be used again + return false, nil + } + return true, nil }