From 5f90a4bc7e96ca0715629d769889357db42088a3 Mon Sep 17 00:00:00 2001 From: Matt Morrison Date: Thu, 5 Nov 2015 12:38:17 +1300 Subject: [PATCH] Issue #3742 - terraform destroy fails if Google Compute Instance no longer exists --- builtin/providers/google/resource_compute_instance.go | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/builtin/providers/google/resource_compute_instance.go b/builtin/providers/google/resource_compute_instance.go index 808c5de78..ce56b17e9 100644 --- a/builtin/providers/google/resource_compute_instance.go +++ b/builtin/providers/google/resource_compute_instance.go @@ -8,6 +8,7 @@ import ( "github.com/hashicorp/terraform/helper/schema" "google.golang.org/api/compute/v1" "google.golang.org/api/googleapi" + "strings" ) func stringHashcode(v interface{}) int { @@ -285,9 +286,10 @@ func getInstance(config *Config, d *schema.ResourceData) (*compute.Instance, err if err != nil { if gerr, ok := err.(*googleapi.Error); ok && gerr.Code == 404 { // The resource doesn't exist anymore + id := d.Id() d.SetId("") - return nil, fmt.Errorf("Resource %s no longer exists", config.Project) + return nil, fmt.Errorf("Resource %s no longer exists", id) } return nil, fmt.Errorf("Error reading instance: %s", err) @@ -549,6 +551,9 @@ func resourceComputeInstanceRead(d *schema.ResourceData, meta interface{}) error instance, err := getInstance(config, d) if err != nil { + if strings.Contains(err.Error(), "no longer exists") { + return nil + } return err }