Read named ports changes properly in google_compute_instance_group (#188)

This commit is contained in:
Vincent Roseberry 2017-07-13 10:24:25 -07:00 committed by Dana Hoffman
parent 349847400f
commit 666351627d
2 changed files with 19 additions and 19 deletions

View File

@ -186,14 +186,14 @@ func resourceComputeInstanceGroupRead(d *schema.ResourceData, meta interface{})
return err return err
} }
// retreive instance group // retrieve instance group
instanceGroup, err := config.clientCompute.InstanceGroups.Get( instanceGroup, err := config.clientCompute.InstanceGroups.Get(
project, d.Get("zone").(string), d.Id()).Do() project, d.Get("zone").(string), d.Id()).Do()
if err != nil { if err != nil {
return handleNotFoundError(err, d, fmt.Sprintf("Instance Group %q", d.Get("name").(string))) return handleNotFoundError(err, d, fmt.Sprintf("Instance Group %q", d.Get("name").(string)))
} }
// retreive instance group members // retrieve instance group members
var memberUrls []string var memberUrls []string
members, err := config.clientCompute.InstanceGroups.ListInstances( members, err := config.clientCompute.InstanceGroups.ListInstances(
project, d.Get("zone").(string), d.Id(), &compute.InstanceGroupsListInstancesRequest{ project, d.Get("zone").(string), d.Id(), &compute.InstanceGroupsListInstancesRequest{
@ -215,6 +215,8 @@ func resourceComputeInstanceGroupRead(d *schema.ResourceData, meta interface{})
d.Set("instances", memberUrls) d.Set("instances", memberUrls)
} }
d.Set("named_port", flattenNamedPorts(instanceGroup.NamedPorts))
// Set computed fields // Set computed fields
d.Set("network", instanceGroup.Network) d.Set("network", instanceGroup.Network)
d.Set("size", instanceGroup.Size) d.Set("size", instanceGroup.Size)
@ -230,12 +232,6 @@ func resourceComputeInstanceGroupUpdate(d *schema.ResourceData, meta interface{}
return err return err
} }
// refresh the state incase referenced instances have been removed earlier in the run
err = resourceComputeInstanceGroupRead(d, meta)
if err != nil {
return fmt.Errorf("Error reading InstanceGroup: %s", err)
}
d.Partial(true) d.Partial(true)
if d.HasChange("instances") { if d.HasChange("instances") {
@ -263,13 +259,17 @@ func resourceComputeInstanceGroupUpdate(d *schema.ResourceData, meta interface{}
removeOp, err := config.clientCompute.InstanceGroups.RemoveInstances( removeOp, err := config.clientCompute.InstanceGroups.RemoveInstances(
project, d.Get("zone").(string), d.Id(), removeReq).Do() project, d.Get("zone").(string), d.Id(), removeReq).Do()
if err != nil { if err != nil {
return fmt.Errorf("Error removing instances from InstanceGroup: %s", err) if gerr, ok := err.(*googleapi.Error); ok && gerr.Code == 404 {
} log.Printf("[WARN] Instances already removed from InstanceGroup: %s", remove)
} else {
// Wait for the operation to complete return fmt.Errorf("Error removing instances from InstanceGroup: %s", err)
err = computeOperationWaitZone(config, removeOp, project, d.Get("zone").(string), "Updating InstanceGroup") }
if err != nil { } else {
return err // Wait for the operation to complete
err = computeOperationWaitZone(config, removeOp, project, d.Get("zone").(string), "Updating InstanceGroup")
if err != nil {
return err
}
} }
} }

View File

@ -59,7 +59,7 @@ func TestAccComputeInstanceGroup_update(t *testing.T) {
testAccComputeInstanceGroup_exists( testAccComputeInstanceGroup_exists(
"google_compute_instance_group.update", &instanceGroup), "google_compute_instance_group.update", &instanceGroup),
testAccComputeInstanceGroup_updated( testAccComputeInstanceGroup_updated(
"google_compute_instance_group.update", 3, &instanceGroup), "google_compute_instance_group.update", 1, &instanceGroup),
testAccComputeInstanceGroup_named_ports( testAccComputeInstanceGroup_named_ports(
"google_compute_instance_group.update", "google_compute_instance_group.update",
map[string]int64{"http": 8081, "test": 8444}, map[string]int64{"http": 8081, "test": 8444},
@ -319,7 +319,7 @@ func testAccComputeInstanceGroup_update(instance string) string {
machine_type = "n1-standard-1" machine_type = "n1-standard-1"
can_ip_forward = false can_ip_forward = false
zone = "us-central1-c" zone = "us-central1-c"
count = 1 count = 2
disk { disk {
image = "debian-8-jessie-v20160803" image = "debian-8-jessie-v20160803"
@ -334,7 +334,7 @@ func testAccComputeInstanceGroup_update(instance string) string {
description = "Terraform test instance group" description = "Terraform test instance group"
name = "%s" name = "%s"
zone = "us-central1-c" zone = "us-central1-c"
instances = [ "${google_compute_instance.ig_instance.self_link}" ] instances = [ "${google_compute_instance.ig_instance.*.self_link}" ]
named_port { named_port {
name = "http" name = "http"
port = "8080" port = "8080"
@ -354,7 +354,7 @@ func testAccComputeInstanceGroup_update2(instance string) string {
machine_type = "n1-standard-1" machine_type = "n1-standard-1"
can_ip_forward = false can_ip_forward = false
zone = "us-central1-c" zone = "us-central1-c"
count = 3 count = 1
disk { disk {
image = "debian-8-jessie-v20160803" image = "debian-8-jessie-v20160803"