@@ -36,8 +36,9 @@ type DeferredLoadingClientConfig struct {
36
36
overrides * ConfigOverrides
37
37
fallbackReader io.Reader
38
38
39
- clientConfig ClientConfig
40
- loadingLock sync.Mutex
39
+ clientConfig ClientConfig
40
+ clientConfigNoOverrides ClientConfig
41
+ loadingLock sync.Mutex
41
42
42
43
// provided for testing
43
44
icc InClusterConfig
@@ -59,16 +60,16 @@ func NewInteractiveDeferredLoadingClientConfig(loader ClientConfigLoader, overri
59
60
return & DeferredLoadingClientConfig {loader : loader , overrides : overrides , icc : & inClusterClientConfig {overrides : overrides }, fallbackReader : fallbackReader }
60
61
}
61
62
62
- func (config * DeferredLoadingClientConfig ) createClientConfig () (ClientConfig , error ) {
63
+ func (config * DeferredLoadingClientConfig ) createClientConfig () (ClientConfig , ClientConfig , error ) {
63
64
config .loadingLock .Lock ()
64
65
defer config .loadingLock .Unlock ()
65
66
66
- if config .clientConfig != nil {
67
- return config .clientConfig , nil
67
+ if config .clientConfig != nil && config . clientConfigNoOverrides != nil {
68
+ return config .clientConfig , config . clientConfigNoOverrides , nil
68
69
}
69
70
mergedConfig , err := config .loader .Load ()
70
71
if err != nil {
71
- return nil , err
72
+ return nil , nil , err
72
73
}
73
74
74
75
var currentContext string
@@ -80,11 +81,12 @@ func (config *DeferredLoadingClientConfig) createClientConfig() (ClientConfig, e
80
81
} else {
81
82
config .clientConfig = NewNonInteractiveClientConfig (* mergedConfig , currentContext , config .overrides , config .loader )
82
83
}
83
- return config .clientConfig , nil
84
+ config .clientConfigNoOverrides = NewNonInteractiveClientConfig (* mergedConfig , "" , nil , config .loader )
85
+ return config .clientConfig , config .clientConfigNoOverrides , nil
84
86
}
85
87
86
88
func (config * DeferredLoadingClientConfig ) RawConfig () (clientcmdapi.Config , error ) {
87
- mergedConfig , err := config .createClientConfig ()
89
+ mergedConfig , _ , err := config .createClientConfig ()
88
90
if err != nil {
89
91
return clientcmdapi.Config {}, err
90
92
}
@@ -94,7 +96,7 @@ func (config *DeferredLoadingClientConfig) RawConfig() (clientcmdapi.Config, err
94
96
95
97
// ClientConfig implements ClientConfig
96
98
func (config * DeferredLoadingClientConfig ) ClientConfig () (* restclient.Config , error ) {
97
- mergedClientConfig , err := config .createClientConfig ()
99
+ mergedClientConfig , mergedClientConfigNoOverrides , err := config .createClientConfig ()
98
100
if err != nil {
99
101
return nil , err
100
102
}
@@ -109,9 +111,12 @@ func (config *DeferredLoadingClientConfig) ClientConfig() (*restclient.Config, e
109
111
return nil , err
110
112
}
111
113
case mergedConfig != nil :
112
- // the configuration is valid, but if this is equal to the defaults we should try
113
- // in-cluster configuration
114
- if ! config .loader .IsDefaultConfig (mergedConfig ) {
114
+ mergedConfigNoOverrides , err := mergedClientConfigNoOverrides .ClientConfig ()
115
+ if err != nil {
116
+ return mergedConfig , nil
117
+ }
118
+
119
+ if mergedConfigNoOverrides != nil && ! config .loader .IsDefaultConfig (mergedConfigNoOverrides ) {
115
120
return mergedConfig , nil
116
121
}
117
122
}
@@ -128,7 +133,7 @@ func (config *DeferredLoadingClientConfig) ClientConfig() (*restclient.Config, e
128
133
129
134
// Namespace implements KubeConfig
130
135
func (config * DeferredLoadingClientConfig ) Namespace () (string , bool , error ) {
131
- mergedKubeConfig , err := config .createClientConfig ()
136
+ mergedKubeConfig , _ , err := config .createClientConfig ()
132
137
if err != nil {
133
138
return "" , false , err
134
139
}
0 commit comments