From a871738c86a0bdf7c3b8924d1932e6f2c85ea8d8 Mon Sep 17 00:00:00 2001 From: Maciej Szulik Date: Fri, 17 Apr 2020 16:37:15 +0200 Subject: [PATCH 1/2] Revert "stop defaulting kubeconfig to http://localhost:8080" This reverts commit b19ad9e7a78fea0ecdffe7aa53bbe309d9d346ee. --- .../k8s.io/client-go/tools/clientcmd/client_config.go | 11 ++++++++++- test/cmd/legacy-script.sh | 1 - 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/staging/src/k8s.io/client-go/tools/clientcmd/client_config.go b/staging/src/k8s.io/client-go/tools/clientcmd/client_config.go index 5096f51d2f5..a9806384aab 100644 --- a/staging/src/k8s.io/client-go/tools/clientcmd/client_config.go +++ b/staging/src/k8s.io/client-go/tools/clientcmd/client_config.go @@ -35,7 +35,7 @@ import ( var ( // ClusterDefaults has the same behavior as the old EnvVar and DefaultCluster fields // DEPRECATED will be replaced - ClusterDefaults = clientcmdapi.Cluster{Server: os.Getenv("KUBERNETES_MASTER")} + ClusterDefaults = clientcmdapi.Cluster{Server: getDefaultServer()} // DefaultClientConfig represents the legacy behavior of this package for defaulting // DEPRECATED will be replace DefaultClientConfig = DirectClientConfig{*clientcmdapi.NewConfig(), "", &ConfigOverrides{ @@ -43,6 +43,15 @@ var ( }, nil, NewDefaultClientConfigLoadingRules(), promptedCredentials{}} ) +// getDefaultServer returns a default setting for DefaultClientConfig +// DEPRECATED +func getDefaultServer() string { + if server := os.Getenv("KUBERNETES_MASTER"); len(server) > 0 { + return server + } + return "http://localhost:8080" +} + // ClientConfig is used to make it easy to get an api server client type ClientConfig interface { // RawConfig returns the merged result of all overrides diff --git a/test/cmd/legacy-script.sh b/test/cmd/legacy-script.sh index ec16f804a41..c9b368de587 100755 --- a/test/cmd/legacy-script.sh +++ b/test/cmd/legacy-script.sh @@ -324,7 +324,6 @@ runTests() { exit 1 fi kube::log::status "Checking kubectl version" - export KUBERNETES_MASTER=http://127.0.0.1:${API_PORT} kubectl version # Generate a random namespace name, based on the current time (to make From 34865774a89db5f5b8684d5dd1042f6f4c2b21d0 Mon Sep 17 00:00:00 2001 From: Maciej Szulik Date: Fri, 17 Apr 2020 17:50:24 +0200 Subject: [PATCH 2/2] Fix kubectl version test to tolerate Run error coming from default localhost:8080 --- staging/src/k8s.io/kubectl/pkg/cmd/version/BUILD | 1 + .../kubectl/pkg/cmd/version/version_test.go | 16 +++++++++++++--- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/staging/src/k8s.io/kubectl/pkg/cmd/version/BUILD b/staging/src/k8s.io/kubectl/pkg/cmd/version/BUILD index 622835ebfc3..5bf7b43e094 100644 --- a/staging/src/k8s.io/kubectl/pkg/cmd/version/BUILD +++ b/staging/src/k8s.io/kubectl/pkg/cmd/version/BUILD @@ -27,6 +27,7 @@ go_test( deps = [ "//staging/src/k8s.io/cli-runtime/pkg/genericclioptions:go_default_library", "//staging/src/k8s.io/kubectl/pkg/cmd/util:go_default_library", + "//vendor/github.com/spf13/cobra:go_default_library", ], ) diff --git a/staging/src/k8s.io/kubectl/pkg/cmd/version/version_test.go b/staging/src/k8s.io/kubectl/pkg/cmd/version/version_test.go index 376602412a1..5b1fbf1f581 100644 --- a/staging/src/k8s.io/kubectl/pkg/cmd/version/version_test.go +++ b/staging/src/k8s.io/kubectl/pkg/cmd/version/version_test.go @@ -20,6 +20,8 @@ import ( "strings" "testing" + "github.com/spf13/cobra" + "k8s.io/cli-runtime/pkg/genericclioptions" cmdutil "k8s.io/kubectl/pkg/cmd/util" ) @@ -27,9 +29,17 @@ import ( func TestNewCmdVersionWithoutConfigFile(t *testing.T) { tf := cmdutil.NewFactory(&genericclioptions.ConfigFlags{}) streams, _, buf, _ := genericclioptions.NewTestIOStreams() - cmd := NewCmdVersion(tf, streams) - cmd.SetOutput(buf) - if err := cmd.Execute(); err != nil { + o := NewOptions(streams) + if err := o.Complete(tf, &cobra.Command{}); err != nil { + t.Errorf("Unexpected error: %v", err) + } + if err := o.Validate(); err != nil { + t.Errorf("Unexpected error: %v", err) + } + // FIXME soltysh: + // since we have defaulting to localhost:8080 in staging/src/k8s.io/client-go/tools/clientcmd/client_config.go#getDefaultServer + // we need to ignore the localhost:8080 server, when above gets removed this should be dropped too + if err := o.Run(); err != nil && !strings.Contains(err.Error(), "localhost:8080") { t.Errorf("Cannot execute version command: %v", err) } if !strings.Contains(buf.String(), "Client Version") {