Skip to content

Commit

Permalink
[Upstream] Standardize google_compute_instance import (GoogleCloudPla…
Browse files Browse the repository at this point in the history
…tform#3329)

* Standardize google_compute_instance import ID

This patch changes the import ID of google_compute_instance to have a
format that is more consistent with other resources like
google_compute_subnetwork while still supporting the previously
supported import ID of {{project}}/{{zone}}/{{name}} in order to have
backwards compatibility.

* Standardize google_compute_instance import ID

This patch changes the import ID of google_compute_instance to have a
format that is more consistent with other resources like
google_compute_subnetwork while still supporting the previously
supported import ID of {{project}}/{{zone}}/{{name}} in order to have
backwards compatibility.

Co-authored-by: Jazel Canseco <[email protected]>
  • Loading branch information
2 people authored and Nathan Klish committed May 18, 2020
1 parent fbfdb11 commit f7fa802
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 10 deletions.
21 changes: 13 additions & 8 deletions third_party/terraform/resources/resource_compute_instance.go
Original file line number Diff line number Diff line change
Expand Up @@ -1773,16 +1773,21 @@ func resourceComputeInstanceDelete(d *schema.ResourceData, meta interface{}) err
}

func resourceComputeInstanceImportState(d *schema.ResourceData, meta interface{}) ([]*schema.ResourceData, error) {
parts := strings.Split(d.Id(), "/")

if len(parts) != 3 {
return nil, fmt.Errorf("Invalid import id %q. Expecting {project}/{zone}/{instance_name}", d.Id())
config := meta.(*Config)
if err := parseImportId([]string{
"projects/(?P<project>[^/]+)/zones/(?P<zone>[^/]+)/instances/(?P<name>[^/]+)",
"(?P<project>[^/]+)/(?P<zone>[^/]+)/(?P<name>[^/]+)",
"(?P<name>[^/]+)",
}, d, config); err != nil {
return nil, err
}

d.Set("project", parts[0])
d.Set("zone", parts[1])
d.Set("name", parts[2])
d.SetId(fmt.Sprintf("projects/%s/zones/%s/instances/%s", parts[0], parts[1], parts[2]))
// Replace import id for the resource id
id, err := replaceVars(d, config, "projects/{{project}}/zones/{{zone}}/instances/{{name}}")
if err != nil {
return nil, fmt.Errorf("Error constructing id: %s", err)
}
d.SetId(id)

return []*schema.ResourceData{d}, nil
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -394,10 +394,12 @@ This resource provides the following
-> **Note:** The `desired_status` field will not be set on import. If you have it set, Terraform will update the field on the next `terraform apply`, bringing your instance to the desired status.


Instances can be imported using the `project`, `zone` and `name`, e.g.
Instances can be imported using any of these accepted formats:

```
$ terraform import google_compute_instance.default gcp-project/us-central1-a/test
$ terraform import google_compute_instance.default projects/{{project}}/zones/{{zone}}/instances/{{name}}
$ terraform import google_compute_instance.default {{project}}/{{zone}}/{{name}}
$ terraform import google_compute_instance.default {{name}}
```

[custom-vm-types]: https://cloud.google.com/dataproc/docs/concepts/compute/custom-machine-types
Expand Down

0 comments on commit f7fa802

Please sign in to comment.