Improve GCE's implementation of UpdateTCPLoadBalancer to only make the

update calls if anything has changed.
This commit is contained in:
Alex Robinson 2015-04-23 20:56:57 +00:00
parent 6ae8e40d3d
commit 5d9564b1cc

View File

@ -337,27 +337,28 @@ func (gce *GCECloud) UpdateTCPLoadBalancer(name, region string, hosts []string)
toRemove = append(toRemove, &compute.InstanceReference{link}) toRemove = append(toRemove, &compute.InstanceReference{link})
} }
add := &compute.TargetPoolsAddInstanceRequest{ if len(toAdd) > 0 {
Instances: toAdd, add := &compute.TargetPoolsAddInstanceRequest{Instances: toAdd}
}
op, err := gce.service.TargetPools.AddInstance(gce.projectID, region, name, add).Do() op, err := gce.service.TargetPools.AddInstance(gce.projectID, region, name, add).Do()
if err != nil { if err != nil {
return err return err
} }
err = gce.waitForRegionOp(op, region) if err := gce.waitForRegionOp(op, region); err != nil {
if err != nil {
return err return err
} }
}
rm := &compute.TargetPoolsRemoveInstanceRequest{ if len(toRemove) > 0 {
Instances: toRemove, rm := &compute.TargetPoolsRemoveInstanceRequest{Instances: toRemove}
} op, err := gce.service.TargetPools.RemoveInstance(gce.projectID, region, name, rm).Do()
op, err = gce.service.TargetPools.RemoveInstance(gce.projectID, region, name, rm).Do()
if err != nil { if err != nil {
return err return err
} }
err = gce.waitForRegionOp(op, region) if err := gce.waitForRegionOp(op, region); err != nil {
return err return err
}
}
return nil
} }
// DeleteTCPLoadBalancer is an implementation of TCPLoadBalancer.DeleteTCPLoadBalancer. // DeleteTCPLoadBalancer is an implementation of TCPLoadBalancer.DeleteTCPLoadBalancer.