From 6cd1eda2d2c4b117a9b4373b505ba33ae7942275 Mon Sep 17 00:00:00 2001 From: Bowei Du Date: Wed, 17 Jan 2018 21:58:07 -0800 Subject: [PATCH] Update NEG to use generated code --- .../providers/gce/gce_networkendpointgroup.go | 119 ++++++++---------- 1 file changed, 52 insertions(+), 67 deletions(-) diff --git a/pkg/cloudprovider/providers/gce/gce_networkendpointgroup.go b/pkg/cloudprovider/providers/gce/gce_networkendpointgroup.go index f8d3e80f4f3..f0e3fb538d2 100644 --- a/pkg/cloudprovider/providers/gce/gce_networkendpointgroup.go +++ b/pkg/cloudprovider/providers/gce/gce_networkendpointgroup.go @@ -18,8 +18,13 @@ package gce import ( "context" - computealpha "google.golang.org/api/compute/v0.alpha" + "fmt" "strings" + + computealpha "google.golang.org/api/compute/v0.alpha" + + "k8s.io/kubernetes/pkg/cloudprovider/providers/gce/cloud/filter" + "k8s.io/kubernetes/pkg/cloudprovider/providers/gce/cloud/meta" ) const ( @@ -32,48 +37,45 @@ func newNetworkEndpointGroupMetricContext(request string, zone string) *metricCo } func (gce *GCECloud) GetNetworkEndpointGroup(name string, zone string) (*computealpha.NetworkEndpointGroup, error) { - if err := gce.alphaFeatureEnabled(AlphaFeatureNetworkEndpointGroup); err != nil { - return nil, err - } mc := newNetworkEndpointGroupMetricContext("get", zone) - v, err := gce.serviceAlpha.NetworkEndpointGroups.Get(gce.ProjectID(), zone, name).Do() + if err := gce.alphaFeatureEnabled(AlphaFeatureNetworkEndpointGroup); err != nil { + return nil, mc.Observe(err) + } + v, err := gce.c.AlphaNetworkEndpointGroups().Get(context.Background(), meta.ZonalKey(name, zone)) return v, mc.Observe(err) } func (gce *GCECloud) ListNetworkEndpointGroup(zone string) ([]*computealpha.NetworkEndpointGroup, error) { - if err := gce.alphaFeatureEnabled(AlphaFeatureNetworkEndpointGroup); err != nil { - return nil, err - } mc := newNetworkEndpointGroupMetricContext("list", zone) - networkEndpointGroups := []*computealpha.NetworkEndpointGroup{} - err := gce.serviceAlpha.NetworkEndpointGroups.List(gce.ProjectID(), zone).Pages(context.Background(), func(res *computealpha.NetworkEndpointGroupList) error { - networkEndpointGroups = append(networkEndpointGroups, res.Items...) - return nil - }) - return networkEndpointGroups, mc.Observe(err) + if err := gce.alphaFeatureEnabled(AlphaFeatureNetworkEndpointGroup); err != nil { + return nil, mc.Observe(err) + } + negs, err := gce.c.AlphaNetworkEndpointGroups().List(context.Background(), zone, filter.None) + return negs, mc.Observe(err) } +// AggregatedListNetworkEndpointGroup returns a map of zone -> endpoint group. func (gce *GCECloud) AggregatedListNetworkEndpointGroup() (map[string][]*computealpha.NetworkEndpointGroup, error) { - if err := gce.alphaFeatureEnabled(AlphaFeatureNetworkEndpointGroup); err != nil { - return nil, err - } mc := newNetworkEndpointGroupMetricContext("aggregated_list", "") - zoneNetworkEndpointGroupMap := map[string][]*computealpha.NetworkEndpointGroup{} - err := gce.serviceAlpha.NetworkEndpointGroups.AggregatedList(gce.ProjectID()).Pages(context.Background(), func(res *computealpha.NetworkEndpointGroupAggregatedList) error { - for key, negs := range res.Items { - if len(negs.NetworkEndpointGroups) == 0 { - continue - } - // key has the format of "zones/${zone_name}" - zone := strings.Split(key, "/")[1] - if _, ok := zoneNetworkEndpointGroupMap[zone]; !ok { - zoneNetworkEndpointGroupMap[zone] = []*computealpha.NetworkEndpointGroup{} - } - zoneNetworkEndpointGroupMap[zone] = append(zoneNetworkEndpointGroupMap[zone], negs.NetworkEndpointGroups...) + if err := gce.alphaFeatureEnabled(AlphaFeatureNetworkEndpointGroup); err != nil { + return nil, mc.Observe(err) + } + // TODO: filter for the region the cluster is in. + all, err := gce.c.AlphaNetworkEndpointGroups().AggregatedList(context.Background(), filter.None) + if err != nil { + return nil, mc.Observe(err) + } + ret := map[string][]*computealpha.NetworkEndpointGroup{} + for key, byZone := range all { + // key is "zones/" + parts := strings.Split(key, "/") + if len(parts) != 2 { + return nil, mc.Observe(fmt.Errorf("invalid key for AggregatedListNetworkEndpointGroup: %q", key)) } - return nil - }) - return zoneNetworkEndpointGroupMap, mc.Observe(err) + zone := parts[1] + ret[zone] = append(ret[zone], byZone...) + } + return ret, mc.Observe(nil) } func (gce *GCECloud) CreateNetworkEndpointGroup(neg *computealpha.NetworkEndpointGroup, zone string) error { @@ -81,11 +83,7 @@ func (gce *GCECloud) CreateNetworkEndpointGroup(neg *computealpha.NetworkEndpoin return err } mc := newNetworkEndpointGroupMetricContext("create", zone) - op, err := gce.serviceAlpha.NetworkEndpointGroups.Insert(gce.ProjectID(), zone, neg).Do() - if err != nil { - return mc.Observe(err) - } - return gce.waitForZoneOp(op, zone, mc) + return mc.Observe(gce.c.AlphaNetworkEndpointGroups().Insert(context.Background(), meta.ZonalKey(neg.Name, zone), neg)) } func (gce *GCECloud) DeleteNetworkEndpointGroup(name string, zone string) error { @@ -93,56 +91,43 @@ func (gce *GCECloud) DeleteNetworkEndpointGroup(name string, zone string) error return err } mc := newNetworkEndpointGroupMetricContext("delete", zone) - op, err := gce.serviceAlpha.NetworkEndpointGroups.Delete(gce.ProjectID(), zone, name).Do() - if err != nil { - return mc.Observe(err) - } - return gce.waitForZoneOp(op, zone, mc) + return mc.Observe(gce.c.AlphaNetworkEndpointGroups().Delete(context.Background(), meta.ZonalKey(name, zone))) } func (gce *GCECloud) AttachNetworkEndpoints(name, zone string, endpoints []*computealpha.NetworkEndpoint) error { - if err := gce.alphaFeatureEnabled(AlphaFeatureNetworkEndpointGroup); err != nil { - return err - } mc := newNetworkEndpointGroupMetricContext("attach", zone) - op, err := gce.serviceAlpha.NetworkEndpointGroups.AttachNetworkEndpoints(gce.ProjectID(), zone, name, &computealpha.NetworkEndpointGroupsAttachEndpointsRequest{ - NetworkEndpoints: endpoints, - }).Do() - if err != nil { + if err := gce.alphaFeatureEnabled(AlphaFeatureNetworkEndpointGroup); err != nil { return mc.Observe(err) } - return gce.waitForZoneOp(op, zone, mc) + req := &computealpha.NetworkEndpointGroupsAttachEndpointsRequest{ + NetworkEndpoints: endpoints, + } + return mc.Observe(gce.c.AlphaNetworkEndpointGroups().AttachNetworkEndpoints(context.Background(), meta.ZonalKey(name, zone), req)) } func (gce *GCECloud) DetachNetworkEndpoints(name, zone string, endpoints []*computealpha.NetworkEndpoint) error { - if err := gce.alphaFeatureEnabled(AlphaFeatureNetworkEndpointGroup); err != nil { - return err - } mc := newNetworkEndpointGroupMetricContext("detach", zone) - op, err := gce.serviceAlpha.NetworkEndpointGroups.DetachNetworkEndpoints(gce.ProjectID(), zone, name, &computealpha.NetworkEndpointGroupsDetachEndpointsRequest{ - NetworkEndpoints: endpoints, - }).Do() - if err != nil { + if err := gce.alphaFeatureEnabled(AlphaFeatureNetworkEndpointGroup); err != nil { return mc.Observe(err) } - return gce.waitForZoneOp(op, zone, mc) + req := &computealpha.NetworkEndpointGroupsDetachEndpointsRequest{ + NetworkEndpoints: endpoints, + } + return mc.Observe(gce.c.AlphaNetworkEndpointGroups().DetachNetworkEndpoints(context.Background(), meta.ZonalKey(name, zone), req)) } func (gce *GCECloud) ListNetworkEndpoints(name, zone string, showHealthStatus bool) ([]*computealpha.NetworkEndpointWithHealthStatus, error) { + mc := newNetworkEndpointGroupMetricContext("list_networkendpoints", zone) if err := gce.alphaFeatureEnabled(AlphaFeatureNetworkEndpointGroup); err != nil { - return nil, err + return nil, mc.Observe(err) } healthStatus := "SKIP" if showHealthStatus { healthStatus = "SHOW" } - mc := newNetworkEndpointGroupMetricContext("list_networkendpoints", zone) - networkEndpoints := []*computealpha.NetworkEndpointWithHealthStatus{} - err := gce.serviceAlpha.NetworkEndpointGroups.ListNetworkEndpoints(gce.ProjectID(), zone, name, &computealpha.NetworkEndpointGroupsListEndpointsRequest{ + req := &computealpha.NetworkEndpointGroupsListEndpointsRequest{ HealthStatus: healthStatus, - }).Pages(context.Background(), func(res *computealpha.NetworkEndpointGroupsListNetworkEndpoints) error { - networkEndpoints = append(networkEndpoints, res.Items...) - return nil - }) - return networkEndpoints, mc.Observe(err) + } + l, err := gce.c.AlphaNetworkEndpointGroups().ListNetworkEndpoints(context.Background(), meta.ZonalKey(name, zone), req, filter.None) + return l, mc.Observe(err) }