From beddf4153387abb8806782d73e3c3c0a9f814da6 Mon Sep 17 00:00:00 2001 From: Jessica Yuen <im.jessicayuen@gmail.com> Date: Tue, 7 Nov 2017 12:07:18 -0800 Subject: [PATCH] Pass overrides by reference when initiating client This fixes the bug where objects weren't being deployed to the cluster specified by the environment. This bug occurred because overrides (ex: cluster, namespace) were being lost because we weren't applying the changes to the correct override object. To fix this, we needed to pass the overrides by reference. --- cmd/diff.go | 4 ++-- cmd/root.go | 10 +++++----- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/cmd/diff.go b/cmd/diff.go index 6becb80d..129b81b7 100644 --- a/cmd/diff.go +++ b/cmd/diff.go @@ -270,10 +270,10 @@ func initDiffRemoteCmd(localEnv, remoteEnv, diffStrategy string, cmd *cobra.Comm } func setupClientConfig(env *string, cmd *cobra.Command) (dynamic.ClientPool, discovery.DiscoveryInterface, string, error) { - overrides := clientcmd.ConfigOverrides{} + overrides := &clientcmd.ConfigOverrides{} loadingRules := *clientcmd.NewDefaultClientConfigLoadingRules() loadingRules.DefaultClientConfig = &clientcmd.DefaultClientConfig - config := clientcmd.NewInteractiveDeferredLoadingClientConfig(&loadingRules, &overrides, os.Stdin) + config := clientcmd.NewInteractiveDeferredLoadingClientConfig(&loadingRules, overrides, os.Stdin) clientPool, discovery, err := restClient(cmd, env, config, overrides) if err != nil { diff --git a/cmd/root.go b/cmd/root.go index 95a42328..250024e0 100644 --- a/cmd/root.go +++ b/cmd/root.go @@ -121,10 +121,10 @@ var RootCmd = &cobra.Command{ // clientConfig.Namespace() is broken in client-go 3.0: // namespace in config erroneously overrides explicit --namespace func namespace() (string, error) { - return namespaceFor(clientConfig, overrides) + return namespaceFor(clientConfig, &overrides) } -func namespaceFor(c clientcmd.ClientConfig, overrides clientcmd.ConfigOverrides) (string, error) { +func namespaceFor(c clientcmd.ClientConfig, overrides *clientcmd.ConfigOverrides) (string, error) { if overrides.Context.Namespace != "" { return overrides.Context.Namespace, nil } @@ -260,7 +260,7 @@ func dumpJSON(v interface{}) string { return string(buf.Bytes()) } -func restClient(cmd *cobra.Command, envName *string, config clientcmd.ClientConfig, overrides clientcmd.ConfigOverrides) (dynamic.ClientPool, discovery.DiscoveryInterface, error) { +func restClient(cmd *cobra.Command, envName *string, config clientcmd.ClientConfig, overrides *clientcmd.ConfigOverrides) (dynamic.ClientPool, discovery.DiscoveryInterface, error) { if envName != nil { err := overrideCluster(*envName, config, overrides) if err != nil { @@ -287,7 +287,7 @@ func restClient(cmd *cobra.Command, envName *string, config clientcmd.ClientConf } func restClientPool(cmd *cobra.Command, envName *string) (dynamic.ClientPool, discovery.DiscoveryInterface, error) { - return restClient(cmd, envName, clientConfig, overrides) + return restClient(cmd, envName, clientConfig, &overrides) } type envSpec struct { @@ -326,7 +326,7 @@ func parseEnvCmd(cmd *cobra.Command, args []string) (*envSpec, error) { // If the environment server the user is attempting to deploy to is not the current // kubeconfig context, we must manually override the client-go --cluster flag // to ensure we are deploying to the correct cluster. -func overrideCluster(envName string, clientConfig clientcmd.ClientConfig, overrides clientcmd.ConfigOverrides) error { +func overrideCluster(envName string, clientConfig clientcmd.ClientConfig, overrides *clientcmd.ConfigOverrides) error { cwd, err := os.Getwd() if err != nil { return err -- GitLab