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 }
} if err := gce.waitForRegionOp(op, region); err != nil {
err = gce.waitForRegionOp(op, region) return err
if err != nil { }
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()
if err != nil {
return err
}
if err := gce.waitForRegionOp(op, region); err != nil {
return err
}
} }
op, err = gce.service.TargetPools.RemoveInstance(gce.projectID, region, name, rm).Do() return nil
if err != nil {
return err
}
err = gce.waitForRegionOp(op, region)
return err
} }
// DeleteTCPLoadBalancer is an implementation of TCPLoadBalancer.DeleteTCPLoadBalancer. // DeleteTCPLoadBalancer is an implementation of TCPLoadBalancer.DeleteTCPLoadBalancer.