Allow project to be specified when importing instance groups (#3597)

Signed-off-by: Modular Magician <magic-modules@google.com>
This commit is contained in:
The Magician 2019-05-08 16:20:15 -07:00 committed by Ty Larrabee
parent 2840ea9037
commit b4991087a6
4 changed files with 31 additions and 17 deletions

View File

@ -379,12 +379,17 @@ func resourceComputeInstanceGroupDelete(d *schema.ResourceData, meta interface{}
func resourceComputeInstanceGroupImportState(d *schema.ResourceData, meta interface{}) ([]*schema.ResourceData, error) {
parts := strings.Split(d.Id(), "/")
if len(parts) != 2 {
return nil, fmt.Errorf("Invalid compute instance group specifier. Expecting {zone}/{name}")
if len(parts) == 2 {
d.Set("zone", parts[0])
d.Set("name", parts[1])
} else if len(parts) == 3 {
d.Set("project", parts[0])
d.Set("zone", parts[1])
d.Set("name", parts[2])
d.SetId(parts[1] + "/" + parts[2])
} else {
return nil, fmt.Errorf("Invalid compute instance group specifier. Expecting {zone}/{name} or {project}/{zone}/{name}")
}
d.Set("zone", parts[0])
d.Set("name", parts[1])
return []*schema.ResourceData{d}, nil
}

View File

@ -15,7 +15,9 @@ func TestAccComputeInstanceGroup_basic(t *testing.T) {
t.Parallel()
var instanceGroup compute.InstanceGroup
var resourceName = "google_compute_instance_group.basic"
var instanceName = fmt.Sprintf("instancegroup-test-%s", acctest.RandString(10))
var zone = "us-central1-c"
resource.Test(t, resource.TestCase{
PreCheck: func() { testAccPreCheck(t) },
@ -23,7 +25,7 @@ func TestAccComputeInstanceGroup_basic(t *testing.T) {
CheckDestroy: testAccComputeInstanceGroup_destroy,
Steps: []resource.TestStep{
{
Config: testAccComputeInstanceGroup_basic(instanceName),
Config: testAccComputeInstanceGroup_basic(zone, instanceName),
Check: resource.ComposeTestCheckFunc(
testAccComputeInstanceGroup_exists(
"google_compute_instance_group.basic", &instanceGroup),
@ -32,10 +34,16 @@ func TestAccComputeInstanceGroup_basic(t *testing.T) {
),
},
{
ResourceName: "google_compute_instance_group.basic",
ResourceName: resourceName,
ImportState: true,
ImportStateVerify: true,
},
{
ResourceName: resourceName,
ImportState: true,
ImportStateVerify: true,
ImportStateId: fmt.Sprintf("%s/%s/%s", getTestProjectFromEnv(), zone, instanceName),
},
},
})
}
@ -307,7 +315,7 @@ func testAccComputeInstanceGroup_hasCorrectNetwork(nInstanceGroup string, nNetwo
}
}
func testAccComputeInstanceGroup_basic(instance string) string {
func testAccComputeInstanceGroup_basic(zone, instance string) string {
return fmt.Sprintf(`
data "google_compute_image" "my_image" {
family = "debian-9"
@ -334,7 +342,7 @@ func testAccComputeInstanceGroup_basic(instance string) string {
resource "google_compute_instance_group" "basic" {
description = "Terraform test instance group"
name = "%s"
zone = "us-central1-c"
zone = "%s"
instances = [ "${google_compute_instance.ig_instance.self_link}" ]
named_port {
name = "http"
@ -349,7 +357,7 @@ func testAccComputeInstanceGroup_basic(instance string) string {
resource "google_compute_instance_group" "empty" {
description = "Terraform test instance group empty"
name = "%s-empty"
zone = "us-central1-c"
zone = "%s"
named_port {
name = "http"
port = "8080"
@ -358,7 +366,7 @@ func testAccComputeInstanceGroup_basic(instance string) string {
name = "https"
port = "8443"
}
}`, instance, instance, instance)
}`, instance, instance, zone, instance, zone)
}
func testAccComputeInstanceGroup_rename(instance, instanceGroup, backend, health string) string {

View File

@ -175,8 +175,9 @@ This resource provides the following
## Import
Instance group can be imported using the `zone` and `name`, e.g.
Instance group can be imported using the `zone` and `name` with an optional `project`, e.g.
```
$ terraform import google_compute_instance_group.webservers us-central1-a/terraform-webservers
$ terraform import google_compute_instance_group.webservers big-project/us-central1-a/terraform-webservers
```

View File

@ -393,15 +393,15 @@
<li<%= sidebar_current("docs-google-compute-instance-iam") %>>
<a href="/docs/providers/google/r/compute_instance_iam.html">google_compute_instance_iam_binding</a>
</li>
</li>
<li<%= sidebar_current("docs-google-compute-instance-iam") %>>
<li<%= sidebar_current("docs-google-compute-instance-iam") %>>
<a href="/docs/providers/google/r/compute_instance_iam.html">google_compute_instance_iam_member</a>
</li>
</li>
<li<%= sidebar_current("docs-google-compute-instance-iam") %>>
<li<%= sidebar_current("docs-google-compute-instance-iam") %>>
<a href="/docs/providers/google/r/compute_instance_iam.html">google_compute_instance_iam_policy</a>
</li>
</li>
<li<%= sidebar_current("docs-google-compute-instance-from-template") %>>
<a href="/docs/providers/google/r/compute_instance_from_template.html">google_compute_instance_from_template</a>