From 9d479f948adeabf97ba9e6e4f771fb50e1d1935e Mon Sep 17 00:00:00 2001 From: Angus Lees Date: Wed, 24 Aug 2016 12:59:37 +1000 Subject: [PATCH] gce: Update LB API hosts->nodes Update EnsureLoadBalancer/UpdateLoadBalancer API to use node objects. --- pkg/cloudprovider/providers/gce/gce.go | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/pkg/cloudprovider/providers/gce/gce.go b/pkg/cloudprovider/providers/gce/gce.go index a4063718b27..9280571f347 100644 --- a/pkg/cloudprovider/providers/gce/gce.go +++ b/pkg/cloudprovider/providers/gce/gce.go @@ -547,6 +547,14 @@ func isHTTPErrorCode(err error, code int) bool { return ok && apiErr.Code == code } +func nodeNames(nodes []*v1.Node) []string { + ret := make([]string, len(nodes)) + for i, node := range nodes { + ret[i] = node.Name + } + return ret +} + // EnsureLoadBalancer is an implementation of LoadBalancer.EnsureLoadBalancer. // Our load balancers in GCE consist of four separate GCE resources - a static // IP address, a firewall rule, a target pool, and a forwarding rule. This @@ -554,11 +562,12 @@ func isHTTPErrorCode(err error, code int) bool { // Due to an interesting series of design decisions, this handles both creating // new load balancers and updating existing load balancers, recognizing when // each is needed. -func (gce *GCECloud) EnsureLoadBalancer(clusterName string, apiService *v1.Service, hostNames []string) (*v1.LoadBalancerStatus, error) { - if len(hostNames) == 0 { +func (gce *GCECloud) EnsureLoadBalancer(clusterName string, apiService *v1.Service, nodes []*v1.Node) (*v1.LoadBalancerStatus, error) { + if len(nodes) == 0 { return nil, fmt.Errorf("Cannot EnsureLoadBalancer() with no hosts") } + hostNames := nodeNames(nodes) hosts, err := gce.getInstancesByNames(hostNames) if err != nil { return nil, err @@ -1331,8 +1340,8 @@ func (gce *GCECloud) ensureStaticIP(name, serviceName, region, existingIP string } // UpdateLoadBalancer is an implementation of LoadBalancer.UpdateLoadBalancer. -func (gce *GCECloud) UpdateLoadBalancer(clusterName string, service *v1.Service, hostNames []string) error { - hosts, err := gce.getInstancesByNames(hostNames) +func (gce *GCECloud) UpdateLoadBalancer(clusterName string, service *v1.Service, nodes []*v1.Node) error { + hosts, err := gce.getInstancesByNames(nodeNames(nodes)) if err != nil { return err }