From 1cb58baf2f7780fd46108d14fd718460831b4a89 Mon Sep 17 00:00:00 2001 From: Paul Morie Date: Wed, 11 Nov 2015 14:55:58 -0500 Subject: [PATCH] Refactor map field handling for clientcmd.LoadFromFile --- pkg/client/unversioned/clientcmd/loader.go | 10 +++++++ .../unversioned/clientcmd/loader_test.go | 26 +++++++++++++++++++ pkg/kubectl/cmd/config/config.go | 4 --- 3 files changed, 36 insertions(+), 4 deletions(-) diff --git a/pkg/client/unversioned/clientcmd/loader.go b/pkg/client/unversioned/clientcmd/loader.go index 2e7ef62c2b..c6837fcded 100644 --- a/pkg/client/unversioned/clientcmd/loader.go +++ b/pkg/client/unversioned/clientcmd/loader.go @@ -240,6 +240,16 @@ func LoadFromFile(filename string) (*clientcmdapi.Config, error) { config.Contexts[key] = obj } + if config.AuthInfos == nil { + config.AuthInfos = map[string]*clientcmdapi.AuthInfo{} + } + if config.Clusters == nil { + config.Clusters = map[string]*clientcmdapi.Cluster{} + } + if config.Contexts == nil { + config.Contexts = map[string]*clientcmdapi.Context{} + } + return config, nil } diff --git a/pkg/client/unversioned/clientcmd/loader_test.go b/pkg/client/unversioned/clientcmd/loader_test.go index 8e0c7a4f14..22926e7752 100644 --- a/pkg/client/unversioned/clientcmd/loader_test.go +++ b/pkg/client/unversioned/clientcmd/loader_test.go @@ -174,6 +174,32 @@ func TestConflictingCurrentContext(t *testing.T) { } } +func TestLoadingEmptyMaps(t *testing.T) { + configFile, _ := ioutil.TempFile("", "") + defer os.Remove(configFile.Name()) + + mockConfig := clientcmdapi.Config{ + CurrentContext: "any-context-value", + } + + WriteToFile(mockConfig, configFile.Name()) + + config, err := LoadFromFile(configFile.Name()) + if err != nil { + t.Errorf("Unexpected error: %v", err) + } + + if config.Clusters == nil { + t.Error("expected config.Clusters to be non-nil") + } + if config.AuthInfos == nil { + t.Error("expected config.AuthInfos to be non-nil") + } + if config.Contexts == nil { + t.Error("expected config.Contexts to be non-nil") + } +} + func TestResolveRelativePaths(t *testing.T) { pathResolutionConfig1 := clientcmdapi.Config{ AuthInfos: map[string]*clientcmdapi.AuthInfo{ diff --git a/pkg/kubectl/cmd/config/config.go b/pkg/kubectl/cmd/config/config.go index 9c8fd465ba..a74ea753ad 100644 --- a/pkg/kubectl/cmd/config/config.go +++ b/pkg/kubectl/cmd/config/config.go @@ -430,10 +430,6 @@ func getConfigFromFileOrDie(filename string) *clientcmdapi.Config { return clientcmdapi.NewConfig() } - if config.Clusters == nil { - config.Clusters = map[string]*clientcmdapi.Cluster{} - } - return config }