From f2fe986aa93b970107290a66d0248ce9e53207c7 Mon Sep 17 00:00:00 2001 From: Slavek Kabrda Date: Wed, 25 Sep 2019 13:22:44 +0200 Subject: [PATCH] Add missing 'exists' methods to PD integration and PD service objects --- .../resource_datadog_integration_pagerduty.go | 16 ++++++++++++++++ ...tadog_integration_pagerduty_service_object.go | 16 ++++++++++++++++ 2 files changed, 32 insertions(+) diff --git a/datadog/resource_datadog_integration_pagerduty.go b/datadog/resource_datadog_integration_pagerduty.go index cc8a718ac3..5ddbbc869b 100644 --- a/datadog/resource_datadog_integration_pagerduty.go +++ b/datadog/resource_datadog_integration_pagerduty.go @@ -2,6 +2,7 @@ package datadog import ( "fmt" + "strings" "sync" "github.com/hashicorp/terraform/helper/schema" @@ -16,6 +17,7 @@ func resourceDatadogIntegrationPagerduty() *schema.Resource { return &schema.Resource{ Create: resourceDatadogIntegrationPagerdutyCreate, Read: resourceDatadogIntegrationPagerdutyRead, + Exists: resourceDatadogIntegrationPagerdutyExists, Update: resourceDatadogIntegrationPagerdutyUpdate, Delete: resourceDatadogIntegrationPagerdutyDelete, Importer: &schema.ResourceImporter{ @@ -150,6 +152,20 @@ func resourceDatadogIntegrationPagerdutyRead(d *schema.ResourceData, meta interf return nil } +func resourceDatadogIntegrationPagerdutyExists(d *schema.ResourceData, meta interface{}) (b bool, e error) { + client := meta.(*datadog.Client) + + _, err := client.GetIntegrationPD() + if err != nil { + if strings.Contains(err.Error(), "404 Not Found") { + return false, nil + } + return false, err + } + + return true, nil +} + func resourceDatadogIntegrationPagerdutyUpdate(d *schema.ResourceData, meta interface{}) error { client := meta.(*datadog.Client) integrationPdMutex.Lock() diff --git a/datadog/resource_datadog_integration_pagerduty_service_object.go b/datadog/resource_datadog_integration_pagerduty_service_object.go index 7a38fce435..69b834d294 100644 --- a/datadog/resource_datadog_integration_pagerduty_service_object.go +++ b/datadog/resource_datadog_integration_pagerduty_service_object.go @@ -2,6 +2,7 @@ package datadog import ( "fmt" + "strings" "github.com/hashicorp/terraform/helper/schema" "github.com/zorkian/go-datadog-api" @@ -13,6 +14,7 @@ func resourceDatadogIntegrationPagerdutySO() *schema.Resource { return &schema.Resource{ Create: resourceDatadogIntegrationPagerdutySOCreate, Read: resourceDatadogIntegrationPagerdutySORead, + Exists: resourceDatadogIntegrationPagerdutySOExists, Update: resourceDatadogIntegrationPagerdutySOUpdate, Delete: resourceDatadogIntegrationPagerdutySODelete, // since the API never returns service_key, it's impossible to meaningfully import resources @@ -79,6 +81,20 @@ func resourceDatadogIntegrationPagerdutySORead(d *schema.ResourceData, meta inte return nil } +func resourceDatadogIntegrationPagerdutySOExists(d *schema.ResourceData, meta interface{}) (b bool, e error) { + client := meta.(*datadog.Client) + + _, err := client.GetIntegrationPDService(d.Id()) + if err != nil { + if strings.Contains(err.Error(), "404 Not Found") { + return false, nil + } + return false, err + } + + return true, nil +} + func resourceDatadogIntegrationPagerdutySOUpdate(d *schema.ResourceData, meta interface{}) error { client := meta.(*datadog.Client) integrationPdMutex.Lock()