From 811597926a91d8acdd71d0c4b343fa382f2f0e94 Mon Sep 17 00:00:00 2001 From: Minhan Xia Date: Fri, 7 Jul 2017 13:48:36 -0700 Subject: [PATCH] support GCE alpha beta API override --- pkg/cloudprovider/providers/gce/BUILD | 1 + pkg/cloudprovider/providers/gce/gce.go | 18 ++++++++++++++---- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/pkg/cloudprovider/providers/gce/BUILD b/pkg/cloudprovider/providers/gce/BUILD index 038d2f8b6ba..30d47605797 100644 --- a/pkg/cloudprovider/providers/gce/BUILD +++ b/pkg/cloudprovider/providers/gce/BUILD @@ -56,6 +56,7 @@ go_library( "//vendor/golang.org/x/oauth2:go_default_library", "//vendor/golang.org/x/oauth2/google:go_default_library", "//vendor/google.golang.org/api/cloudkms/v1:go_default_library", + "//vendor/google.golang.org/api/compute/v0.alpha:go_default_library", "//vendor/google.golang.org/api/compute/v0.beta:go_default_library", "//vendor/google.golang.org/api/compute/v1:go_default_library", "//vendor/google.golang.org/api/container/v1:go_default_library", diff --git a/pkg/cloudprovider/providers/gce/gce.go b/pkg/cloudprovider/providers/gce/gce.go index cc9d50e6b70..fe021568d3c 100644 --- a/pkg/cloudprovider/providers/gce/gce.go +++ b/pkg/cloudprovider/providers/gce/gce.go @@ -39,6 +39,7 @@ import ( "golang.org/x/oauth2" "golang.org/x/oauth2/google" cloudkms "google.golang.org/api/cloudkms/v1" + computealpha "google.golang.org/api/compute/v0.alpha" computebeta "google.golang.org/api/compute/v0.beta" compute "google.golang.org/api/compute/v1" container "google.golang.org/api/container/v1" @@ -85,6 +86,7 @@ type GCECloud struct { service *compute.Service serviceBeta *computebeta.Service + serviceAlpha *computealpha.Service containerService *container.Service cloudkmsService *cloudkms.Service clientBuilder controller.ControllerClientBuilder @@ -273,16 +275,24 @@ func CreateGCECloud(apiEndpoint, projectID, networkProjectID, region, zone strin return nil, err } - if apiEndpoint != "" { - service.BasePath = fmt.Sprintf("%sprojects/", apiEndpoint) - } - client, err = newOauthClient(tokenSource) serviceBeta, err := computebeta.New(client) if err != nil { return nil, err } + client, err = newOauthClient(tokenSource) + serviceAlpha, err := computealpha.New(client) + if err != nil { + return nil, err + } + + if apiEndpoint != "" { + service.BasePath = fmt.Sprintf("%sprojects/", apiEndpoint) + serviceBeta.BasePath = fmt.Sprintf("%sprojects/", strings.Replace(apiEndpoint, "v1", "beta", 0)) + serviceAlpha.BasePath = fmt.Sprintf("%sprojects/", strings.Replace(apiEndpoint, "v1", "alpha", 0)) + } + containerService, err := container.New(client) if err != nil { return nil, err