diff --git a/pkg/client/client_api_token.go b/pkg/client/client_api_token.go index f5737a65..3d3e042f 100644 --- a/pkg/client/client_api_token.go +++ b/pkg/client/client_api_token.go @@ -91,7 +91,7 @@ func (c *APITokenClient) Post(ctx context.Context, path string, body io.Reader) req.Header.Set("Content-Type", "application/json") req.Header.Set("Authorization", fmt.Sprintf("Bearer %s", c.apiToken)) - req.Header.Set("User-Agent", fmt.Sprintf("venafi-kubernetes-agent/%s", version.PreflightVersion)) + version.SetUserAgent(req) return c.client.Do(req) } diff --git a/pkg/client/client_oauth.go b/pkg/client/client_oauth.go index cb88456a..7192a331 100644 --- a/pkg/client/client_oauth.go +++ b/pkg/client/client_oauth.go @@ -152,7 +152,8 @@ func (c *OAuthClient) Post(ctx context.Context, path string, body io.Reader) (*h } req.Header.Set("Content-Type", "application/json") - req.Header.Set("User-Agent", fmt.Sprintf("venafi-kubernetes-agent/%s", version.PreflightVersion)) + + version.SetUserAgent(req) if len(token.bearer) > 0 { req.Header.Set("Authorization", fmt.Sprintf("Bearer %s", token.bearer)) @@ -190,7 +191,7 @@ func (c *OAuthClient) renewAccessToken(ctx context.Context) error { return errors.WithStack(err) } req.Header.Add("content-type", "application/x-www-form-urlencoded") - req.Header.Set("User-Agent", fmt.Sprintf("venafi-kubernetes-agent/%s", version.PreflightVersion)) + version.SetUserAgent(req) res, err := http.DefaultClient.Do(req) if err != nil { diff --git a/pkg/client/client_venafi_cloud.go b/pkg/client/client_venafi_cloud.go index 298f2af6..780f58b9 100644 --- a/pkg/client/client_venafi_cloud.go +++ b/pkg/client/client_venafi_cloud.go @@ -273,7 +273,7 @@ func (c *VenafiCloudClient) Post(ctx context.Context, path string, body io.Reade req.Header.Set("Accept", "application/json") req.Header.Set("Content-Type", "application/json") - req.Header.Set("User-Agent", fmt.Sprintf("venafi-kubernetes-agent/%s", version.PreflightVersion)) + version.SetUserAgent(req) if len(token.accessToken) > 0 { req.Header.Set("Authorization", fmt.Sprintf("Bearer %s", token.accessToken)) @@ -316,7 +316,7 @@ func (c *VenafiCloudClient) updateAccessToken(ctx context.Context) error { request.Header.Add("Content-Type", "application/x-www-form-urlencoded") request.Header.Add("Content-Length", strconv.Itoa(len(encoded))) - request.Header.Set("User-Agent", fmt.Sprintf("venafi-kubernetes-agent/%s", version.PreflightVersion)) + version.SetUserAgent(request) now := time.Now() accessToken := accessTokenInformation{} diff --git a/pkg/client/client_venconn.go b/pkg/client/client_venconn.go index 8d14c99b..f5948c1c 100644 --- a/pkg/client/client_venconn.go +++ b/pkg/client/client_venconn.go @@ -87,7 +87,7 @@ func NewVenConnClient(restcfg *rest.Config, agentMetadata *api.AgentMetadata, in _ = corev1.AddToScheme(scheme) handler, err := venafi_client.NewConnectionHandler( - "venafi-kubernetes-agent/"+version.PreflightVersion, + version.UserAgent(), "venafi-kubernetes-agent.jetstack.io", "VenafiKubernetesAgent", restcfg, @@ -168,8 +168,8 @@ func (c *VenConnClient) PostDataReadingsWithOptions(ctx context.Context, reading } req.Header.Set("Content-Type", "application/json") - req.Header.Set("User-Agent", fmt.Sprintf("venafi-kubernetes-agent/%s", version.PreflightVersion)) req.Header.Set("Authorization", fmt.Sprintf("Bearer %s", details.VCP.AccessToken)) + version.SetUserAgent(req) q := req.URL.Query() q.Set("name", opts.ClusterName) diff --git a/pkg/version/version.go b/pkg/version/version.go index 2c1ecd1e..a1f4387e 100644 --- a/pkg/version/version.go +++ b/pkg/version/version.go @@ -1,5 +1,10 @@ package version +import ( + "fmt" + "net/http" +) + // This variables are injected at build time. // PreflightVersion hosts the version of the app. @@ -13,3 +18,14 @@ var BuildDate string // GoVersion is the go version that was used to compile this var GoVersion string + +// UserAgent return a standard user agent for use with all HTTP requests. This is implemented in one place so +// it's uniform across the Kubernetes Agent. +func UserAgent() string { + return fmt.Sprintf("venafi-kubernetes-agent/%s", PreflightVersion) +} + +// SetUserAgent augments an http.Request with a standard user agent. +func SetUserAgent(req *http.Request) { + req.Header.Set("User-Agent", UserAgent()) +}