From ba974dbbc72b44a2d994fdb20ebb62b0bf327f46 Mon Sep 17 00:00:00 2001 From: Erik McClenney Date: Wed, 16 Aug 2017 11:37:24 -0700 Subject: [PATCH 1/7] Add Kubernetes user agent to GCP API calls. --- pkg/cloudprovider/providers/gce/BUILD | 1 + pkg/cloudprovider/providers/gce/gce.go | 8 ++++++++ 2 files changed, 9 insertions(+) diff --git a/pkg/cloudprovider/providers/gce/BUILD b/pkg/cloudprovider/providers/gce/BUILD index 086c4cafa4..0b8083b6ed 100644 --- a/pkg/cloudprovider/providers/gce/BUILD +++ b/pkg/cloudprovider/providers/gce/BUILD @@ -47,6 +47,7 @@ go_library( "//pkg/master/ports:go_default_library", "//pkg/util/net/sets:go_default_library", "//pkg/util/version:go_default_library", + "//pkg/version:go_default_library", "//pkg/volume:go_default_library", "//vendor/cloud.google.com/go/compute/metadata:go_default_library", "//vendor/github.com/golang/glog:go_default_library", diff --git a/pkg/cloudprovider/providers/gce/gce.go b/pkg/cloudprovider/providers/gce/gce.go index a4dd5eab15..271b0c541b 100644 --- a/pkg/cloudprovider/providers/gce/gce.go +++ b/pkg/cloudprovider/providers/gce/gce.go @@ -21,6 +21,7 @@ import ( "io" "net/http" "regexp" + "runtime" "strings" "sync" "time" @@ -34,6 +35,7 @@ import ( "k8s.io/client-go/util/flowcontrol" "k8s.io/kubernetes/pkg/cloudprovider" "k8s.io/kubernetes/pkg/controller" + "k8s.io/kubernetes/pkg/version" "github.com/golang/glog" "golang.org/x/oauth2" @@ -301,6 +303,7 @@ func generateCloudConfig(configFile *ConfigFile) (cloudConfig *CloudConfig, err // If no tokenSource is specified, uses oauth2.DefaultTokenSource. // If managedZones is nil / empty all zones in the region will be managed. func CreateGCECloud(config *CloudConfig) (*GCECloud, error) { + userAgent := fmt.Sprintf("(%s %s) Kubernetes/%s", runtime.GOOS, runtime.GOARCH, version.Get().GitVersion) client, err := newOauthClient(config.TokenSource) if err != nil { @@ -310,6 +313,7 @@ func CreateGCECloud(config *CloudConfig) (*GCECloud, error) { if err != nil { return nil, err } + service.UserAgent = userAgent client, err = newOauthClient(config.TokenSource) if err != nil { @@ -319,6 +323,7 @@ func CreateGCECloud(config *CloudConfig) (*GCECloud, error) { if err != nil { return nil, err } + serviceBeta.UserAgent = userAgent client, err = newOauthClient(config.TokenSource) if err != nil { @@ -328,6 +333,7 @@ func CreateGCECloud(config *CloudConfig) (*GCECloud, error) { if err != nil { return nil, err } + serviceAlpha.UserAgent = userAgent // Expect override api endpoint to always be v1 api and follows the same pattern as prod. // Generate alpha and beta api endpoints based on override v1 api endpoint. @@ -343,11 +349,13 @@ func CreateGCECloud(config *CloudConfig) (*GCECloud, error) { if err != nil { return nil, err } + containerService.UserAgent = userAgent cloudkmsService, err := cloudkms.New(client) if err != nil { return nil, err } + cloudkmsService.UserAgent = userAgent if config.NetworkURL == "" { networkName, err := getNetworkNameViaAPICall(service, config.ProjectID) From c947339f27e6c711cf77097f53f856343ce65f91 Mon Sep 17 00:00:00 2001 From: Erik McClenney Date: Mon, 11 Sep 2017 17:19:08 -0700 Subject: [PATCH 2/7] Parse out numeric portion of semantic version. --- pkg/cloudprovider/providers/gce/gce.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pkg/cloudprovider/providers/gce/gce.go b/pkg/cloudprovider/providers/gce/gce.go index 271b0c541b..fc6f584aae 100644 --- a/pkg/cloudprovider/providers/gce/gce.go +++ b/pkg/cloudprovider/providers/gce/gce.go @@ -303,7 +303,8 @@ func generateCloudConfig(configFile *ConfigFile) (cloudConfig *CloudConfig, err // If no tokenSource is specified, uses oauth2.DefaultTokenSource. // If managedZones is nil / empty all zones in the region will be managed. func CreateGCECloud(config *CloudConfig) (*GCECloud, error) { - userAgent := fmt.Sprintf("(%s %s) Kubernetes/%s", runtime.GOOS, runtime.GOARCH, version.Get().GitVersion) + version := strings.Split(strings.Split(version.Get().GitVersion, "-")[0], "+")[0] + userAgent := fmt.Sprintf("(%s %s) Kubernetes/%s", runtime.GOOS, runtime.GOARCH, version) client, err := newOauthClient(config.TokenSource) if err != nil { From b6f23b1eedfa29688a4e9927a9a49d080eb15bd4 Mon Sep 17 00:00:00 2001 From: Erik McClenney Date: Wed, 13 Sep 2017 11:16:36 -0700 Subject: [PATCH 3/7] Add some comments to the version and user-agent changes. --- pkg/cloudprovider/providers/gce/gce.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/pkg/cloudprovider/providers/gce/gce.go b/pkg/cloudprovider/providers/gce/gce.go index fc6f584aae..9c5da0cfec 100644 --- a/pkg/cloudprovider/providers/gce/gce.go +++ b/pkg/cloudprovider/providers/gce/gce.go @@ -303,7 +303,11 @@ func generateCloudConfig(configFile *ConfigFile) (cloudConfig *CloudConfig, err // If no tokenSource is specified, uses oauth2.DefaultTokenSource. // If managedZones is nil / empty all zones in the region will be managed. func CreateGCECloud(config *CloudConfig) (*GCECloud, error) { + // Remove any pre-release version and build metadata from the semver, leaving only the MAJOR.MINOR.PATCH portion. + // See http://semver.org/. version := strings.Split(strings.Split(version.Get().GitVersion, "-")[0], "+")[0] + + // Create a user-agent header append string to supply to the Google API clients, to identify Kubernetes as the origin of the GCP API calls. userAgent := fmt.Sprintf("(%s %s) Kubernetes/%s", runtime.GOOS, runtime.GOARCH, version) client, err := newOauthClient(config.TokenSource) From 7221fe6dd4a450f260e5f59ef70520eff4f63953 Mon Sep 17 00:00:00 2001 From: Erik McClenney Date: Thu, 28 Sep 2017 10:11:30 -0700 Subject: [PATCH 4/7] Fix indentation and skip leading v on the semver. --- pkg/cloudprovider/providers/gce/gce.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkg/cloudprovider/providers/gce/gce.go b/pkg/cloudprovider/providers/gce/gce.go index 9c5da0cfec..9ae4241f65 100644 --- a/pkg/cloudprovider/providers/gce/gce.go +++ b/pkg/cloudprovider/providers/gce/gce.go @@ -304,8 +304,8 @@ func generateCloudConfig(configFile *ConfigFile) (cloudConfig *CloudConfig, err // If managedZones is nil / empty all zones in the region will be managed. func CreateGCECloud(config *CloudConfig) (*GCECloud, error) { // Remove any pre-release version and build metadata from the semver, leaving only the MAJOR.MINOR.PATCH portion. - // See http://semver.org/. - version := strings.Split(strings.Split(version.Get().GitVersion, "-")[0], "+")[0] + // See http://semver.org/. + version := strings.TrimLeft(strings.Split(strings.Split(version.Get().GitVersion, "-")[0], "+")[0], "v") // Create a user-agent header append string to supply to the Google API clients, to identify Kubernetes as the origin of the GCP API calls. userAgent := fmt.Sprintf("(%s %s) Kubernetes/%s", runtime.GOOS, runtime.GOARCH, version) From f0920670fae17103e39bbdedd7c8b4cfe60d41e3 Mon Sep 17 00:00:00 2001 From: Erik McClenney Date: Thu, 28 Sep 2017 10:41:04 -0700 Subject: [PATCH 5/7] Fix another space vs tab formatting error. --- pkg/cloudprovider/providers/gce/gce.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/cloudprovider/providers/gce/gce.go b/pkg/cloudprovider/providers/gce/gce.go index 9ae4241f65..61a4f40ff5 100644 --- a/pkg/cloudprovider/providers/gce/gce.go +++ b/pkg/cloudprovider/providers/gce/gce.go @@ -307,7 +307,7 @@ func CreateGCECloud(config *CloudConfig) (*GCECloud, error) { // See http://semver.org/. version := strings.TrimLeft(strings.Split(strings.Split(version.Get().GitVersion, "-")[0], "+")[0], "v") - // Create a user-agent header append string to supply to the Google API clients, to identify Kubernetes as the origin of the GCP API calls. + // Create a user-agent header append string to supply to the Google API clients, to identify Kubernetes as the origin of the GCP API calls. userAgent := fmt.Sprintf("(%s %s) Kubernetes/%s", runtime.GOOS, runtime.GOARCH, version) client, err := newOauthClient(config.TokenSource) From 99d100a353973b154815da7be604ce0164dd4f0f Mon Sep 17 00:00:00 2001 From: Erik McClenney Date: Fri, 29 Sep 2017 12:09:10 -0700 Subject: [PATCH 6/7] Fix user-agent append string component order. --- pkg/cloudprovider/providers/gce/gce.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/cloudprovider/providers/gce/gce.go b/pkg/cloudprovider/providers/gce/gce.go index 61a4f40ff5..5750c04597 100644 --- a/pkg/cloudprovider/providers/gce/gce.go +++ b/pkg/cloudprovider/providers/gce/gce.go @@ -308,7 +308,7 @@ func CreateGCECloud(config *CloudConfig) (*GCECloud, error) { version := strings.TrimLeft(strings.Split(strings.Split(version.Get().GitVersion, "-")[0], "+")[0], "v") // Create a user-agent header append string to supply to the Google API clients, to identify Kubernetes as the origin of the GCP API calls. - userAgent := fmt.Sprintf("(%s %s) Kubernetes/%s", runtime.GOOS, runtime.GOARCH, version) + userAgent := fmt.Sprintf("Kubernetes/%s (%s %s)", version, runtime.GOOS, runtime.GOARCH) client, err := newOauthClient(config.TokenSource) if err != nil { From 7aa9a46067a9adc829017540e47f6f7e17e13acf Mon Sep 17 00:00:00 2001 From: Erik McClenney Date: Fri, 29 Sep 2017 13:55:54 -0700 Subject: [PATCH 7/7] Fix merge conflicts. --- pkg/cloudprovider/providers/gce/gce.go | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/pkg/cloudprovider/providers/gce/gce.go b/pkg/cloudprovider/providers/gce/gce.go index 4e74de1318..a6b7103524 100644 --- a/pkg/cloudprovider/providers/gce/gce.go +++ b/pkg/cloudprovider/providers/gce/gce.go @@ -21,11 +21,8 @@ import ( "io" "net/http" "regexp" -<<<<<<< master "runtime" -======= "strconv" ->>>>>>> master "strings" "sync" "time" @@ -348,19 +345,17 @@ func generateCloudConfig(configFile *ConfigFile) (cloudConfig *CloudConfig, err // If no tokenSource is specified, uses oauth2.DefaultTokenSource. // If managedZones is nil / empty all zones in the region will be managed. func CreateGCECloud(config *CloudConfig) (*GCECloud, error) { -<<<<<<< master // Remove any pre-release version and build metadata from the semver, leaving only the MAJOR.MINOR.PATCH portion. // See http://semver.org/. version := strings.TrimLeft(strings.Split(strings.Split(version.Get().GitVersion, "-")[0], "+")[0], "v") // Create a user-agent header append string to supply to the Google API clients, to identify Kubernetes as the origin of the GCP API calls. userAgent := fmt.Sprintf("Kubernetes/%s (%s %s)", version, runtime.GOOS, runtime.GOARCH) -======= + // Use ProjectID for NetworkProjectID, if it wasn't explicitly set. if config.NetworkProjectID == "" { config.NetworkProjectID = config.ProjectID } ->>>>>>> master client, err := newOauthClient(config.TokenSource) if err != nil {