From f82e2ee98cbe99e970e4a46ccd806571554138dd Mon Sep 17 00:00:00 2001 From: Modular Magician Date: Wed, 10 Jun 2020 21:38:52 +0000 Subject: [PATCH] enable google_compute_instance_group to accept instances id (#3621) Co-authored-by: Edward Sun Signed-off-by: Modular Magician --- .changelog/3621.txt | 3 +++ google-beta/resource_compute_instance_group.go | 16 +++++++++++++--- .../resource_compute_instance_group_test.go | 2 +- .../docs/r/compute_instance_group.html.markdown | 8 ++++---- 4 files changed, 21 insertions(+), 8 deletions(-) create mode 100644 .changelog/3621.txt diff --git a/.changelog/3621.txt b/.changelog/3621.txt new file mode 100644 index 0000000000..99b4800141 --- /dev/null +++ b/.changelog/3621.txt @@ -0,0 +1,3 @@ +```release-note:enhancement +`compute`: enabled `google_compute_instance_group` `instances` to accept instance id field as well as self_link +``` diff --git a/google-beta/resource_compute_instance_group.go b/google-beta/resource_compute_instance_group.go index 8ea7a4983b..acbfb14a74 100644 --- a/google-beta/resource_compute_instance_group.go +++ b/google-beta/resource_compute_instance_group.go @@ -173,9 +173,19 @@ func resourceComputeInstanceGroupCreate(d *schema.ResourceData, meta interface{} } if v, ok := d.GetOk("instances"); ok { - instanceUrls := convertStringArr(v.(*schema.Set).List()) - if !validInstanceURLs(instanceUrls) { - return fmt.Errorf("Error invalid instance URLs: %v", instanceUrls) + tmpUrls := convertStringArr(v.(*schema.Set).List()) + + var instanceUrls []string + for _, v := range tmpUrls { + if strings.HasPrefix(v, "https://") { + instanceUrls = append(instanceUrls, v) + } else { + url, err := replaceVars(d, config, "{{ComputeBasePath}}"+v) + if err != nil { + return err + } + instanceUrls = append(instanceUrls, url) + } } addInstanceReq := &compute.InstanceGroupsAddInstancesRequest{ diff --git a/google-beta/resource_compute_instance_group_test.go b/google-beta/resource_compute_instance_group_test.go index 1a79e9e62a..afe10ab3b1 100644 --- a/google-beta/resource_compute_instance_group_test.go +++ b/google-beta/resource_compute_instance_group_test.go @@ -346,7 +346,7 @@ resource "google_compute_instance_group" "basic" { description = "Terraform test instance group" name = "%s" zone = "%s" - instances = [google_compute_instance.ig_instance.self_link] + instances = [google_compute_instance.ig_instance.id] named_port { name = "http" port = "8080" diff --git a/website/docs/r/compute_instance_group.html.markdown b/website/docs/r/compute_instance_group.html.markdown index 88fdd6fefc..9b29a452da 100644 --- a/website/docs/r/compute_instance_group.html.markdown +++ b/website/docs/r/compute_instance_group.html.markdown @@ -36,8 +36,8 @@ resource "google_compute_instance_group" "webservers" { description = "Terraform test instance group" instances = [ - google_compute_instance.test.self_link, - google_compute_instance.test2.self_link, + google_compute_instance.test.id, + google_compute_instance.test2.id, ] named_port { @@ -63,7 +63,7 @@ as shown in this example to avoid this type of error. resource "google_compute_instance_group" "staging_group" { name = "staging-instance-group" zone = "us-central1-c" - instances = [google_compute_instance.staging_vm.self_link] + instances = [google_compute_instance.staging_vm.id] named_port { name = "http" port = "8080" @@ -136,7 +136,7 @@ The following arguments are supported: group. * `instances` - (Optional) List of instances in the group. They should be given - as self_link URLs. When adding instances they must all be in the same + as either self_link or id. When adding instances they must all be in the same network and zone as the instance group. * `named_port` - (Optional) The named port configuration. See the section below