From 228fd035ba23eff38bcd07bfa0c1321788136bbe Mon Sep 17 00:00:00 2001 From: Mitchell Hashimoto Date: Tue, 9 Sep 2014 13:36:47 -0700 Subject: [PATCH] providers/digitalocean: handle when resource deleted manually [GH-279] --- CHANGELOG.md | 2 ++ .../digitalocean/resource_digitalocean_domain.go | 8 +++++++- .../digitalocean/resource_digitalocean_record.go | 7 +++++++ 3 files changed, 16 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 286a86238..200703717 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,6 +14,8 @@ BUG FIXES: * core: "~" is expanded in `-var-file` flags. [GH-273] * core: Errors with tfvars are shown in console. [GH-269] * providers/aws: Refreshing EIP from pre-0.2 state file won't error. [GH-258] + * providers/digitalocean: Handle situations when resource was destroyed + manually. [GH-279] * providers/google: Attaching a disk source (not an image) works properly. [GH-254] diff --git a/builtin/providers/digitalocean/resource_digitalocean_domain.go b/builtin/providers/digitalocean/resource_digitalocean_domain.go index 112b75bba..1bcae663f 100644 --- a/builtin/providers/digitalocean/resource_digitalocean_domain.go +++ b/builtin/providers/digitalocean/resource_digitalocean_domain.go @@ -3,6 +3,7 @@ package digitalocean import ( "fmt" "log" + "strings" "github.com/hashicorp/terraform/helper/config" "github.com/hashicorp/terraform/helper/diff" @@ -63,8 +64,13 @@ func resource_digitalocean_domain_refresh( client := p.client domain, err := client.RetrieveDomain(s.ID) - if err != nil { + // If the domain is somehow already destroyed, mark as + // succesfully gone + if strings.Contains(err.Error(), "404 Not Found") { + return nil, nil + } + return s, fmt.Errorf("Error retrieving domain: %s", err) } diff --git a/builtin/providers/digitalocean/resource_digitalocean_record.go b/builtin/providers/digitalocean/resource_digitalocean_record.go index 346390c88..06ea8922c 100644 --- a/builtin/providers/digitalocean/resource_digitalocean_record.go +++ b/builtin/providers/digitalocean/resource_digitalocean_record.go @@ -135,6 +135,13 @@ func resourceRecordRead(d *schema.ResourceData, meta interface{}) error { rec, err := client.RetrieveRecord(d.Get("domain").(string), d.Id()) if err != nil { + // If the record is somehow already destroyed, mark as + // succesfully gone + if strings.Contains(err.Error(), "404 Not Found") { + d.SetId("") + return nil + } + return err }