Use no user when the especified user is not found in the users section

This commit is contained in:
Sergi Almacellas Abellana 2017-06-06 10:03:09 +02:00
parent 7adf7e280d
commit 6f9322d212
2 changed files with 25 additions and 3 deletions

View File

@ -132,8 +132,12 @@ class KubeConfigLoader(object):
context_name)
if (self._current_context['context'].safe_get('user')
and self._config.safe_get('users')):
self._user = self._config['users'].get_with_name(
self._current_context['context']['user'])['user']
user = self._config['users'].get_with_name(
self._current_context['context']['user'], safe=True)
if user:
self._user = user['user']
else:
self._user = None
else:
self._user = None
self._cluster = self._config['clusters'].get_with_name(
@ -257,7 +261,7 @@ class ConfigNode(object):
else:
return v
def get_with_name(self, name):
def get_with_name(self, name, safe=False):
if not isinstance(self.value, list):
raise ConfigException(
'Invalid kube-config file. Expected %s to be a list'
@ -270,6 +274,8 @@ class ConfigNode(object):
% self.name)
if v['name'] == name:
return ConfigNode('%s[name=%s]' % (self.name, name), v)
if safe:
return None
raise ConfigException(
'Invalid kube-config file. '
'Expected object with name %s in %s list' % (name, self.name))

View File

@ -339,6 +339,13 @@ class TestKubeConfigLoader(BaseTestCase):
"user": "ssl-local-file"
}
},
{
"name": "non_existing_user",
"context": {
"cluster": "default",
"user": "non_existing_user"
}
},
],
"clusters": [
{
@ -626,6 +633,15 @@ class TestKubeConfigLoader(BaseTestCase):
client_configuration=actual).load_and_set()
self.assertEqual(expected, actual)
def test_non_existing_user(self):
expected = FakeConfig(host=TEST_HOST)
actual = FakeConfig()
KubeConfigLoader(
config_dict=self.TEST_KUBE_CONFIG,
active_context="non_existing_user",
client_configuration=actual).load_and_set()
self.assertEqual(expected, actual)
if __name__ == '__main__':
unittest.main()