This repository was archived by the owner on Mar 13, 2022. It is now read-only.
File tree 2 files changed +25
-3
lines changed
2 files changed +25
-3
lines changed Original file line number Diff line number Diff line change @@ -132,8 +132,12 @@ def set_active_context(self, context_name=None):
132
132
context_name )
133
133
if (self ._current_context ['context' ].safe_get ('user' )
134
134
and self ._config .safe_get ('users' )):
135
- self ._user = self ._config ['users' ].get_with_name (
136
- self ._current_context ['context' ]['user' ])['user' ]
135
+ user = self ._config ['users' ].get_with_name (
136
+ self ._current_context ['context' ]['user' ], safe = True )
137
+ if user :
138
+ self ._user = user ['user' ]
139
+ else :
140
+ self ._user = None
137
141
else :
138
142
self ._user = None
139
143
self ._cluster = self ._config ['clusters' ].get_with_name (
@@ -257,7 +261,7 @@ def __getitem__(self, key):
257
261
else :
258
262
return v
259
263
260
- def get_with_name (self , name ):
264
+ def get_with_name (self , name , safe = False ):
261
265
if not isinstance (self .value , list ):
262
266
raise ConfigException (
263
267
'Invalid kube-config file. Expected %s to be a list'
@@ -270,6 +274,8 @@ def get_with_name(self, name):
270
274
% self .name )
271
275
if v ['name' ] == name :
272
276
return ConfigNode ('%s[name=%s]' % (self .name , name ), v )
277
+ if safe :
278
+ return None
273
279
raise ConfigException (
274
280
'Invalid kube-config file. '
275
281
'Expected object with name %s in %s list' % (name , self .name ))
Original file line number Diff line number Diff line change @@ -339,6 +339,13 @@ class TestKubeConfigLoader(BaseTestCase):
339
339
"user" : "ssl-local-file"
340
340
}
341
341
},
342
+ {
343
+ "name" : "non_existing_user" ,
344
+ "context" : {
345
+ "cluster" : "default" ,
346
+ "user" : "non_existing_user"
347
+ }
348
+ },
342
349
],
343
350
"clusters" : [
344
351
{
@@ -626,6 +633,15 @@ def test_no_users_section(self):
626
633
client_configuration = actual ).load_and_set ()
627
634
self .assertEqual (expected , actual )
628
635
636
+ def test_non_existing_user (self ):
637
+ expected = FakeConfig (host = TEST_HOST )
638
+ actual = FakeConfig ()
639
+ KubeConfigLoader (
640
+ config_dict = self .TEST_KUBE_CONFIG ,
641
+ active_context = "non_existing_user" ,
642
+ client_configuration = actual ).load_and_set ()
643
+ self .assertEqual (expected , actual )
644
+
629
645
630
646
if __name__ == '__main__' :
631
647
unittest .main ()
You can’t perform that action at this time.
0 commit comments