From c9d716942547d4125c39a3f947102d916795112e Mon Sep 17 00:00:00 2001 From: Mridul Seth Date: Fri, 22 Jan 2021 19:13:44 +0100 Subject: [PATCH] take care of empty kube_config files --- config/kube_config.py | 8 ++++++++ config/kube_config_test.py | 9 +++++++++ 2 files changed, 17 insertions(+) diff --git a/config/kube_config.py b/config/kube_config.py index 0ed5a71c..b90dbd02 100644 --- a/config/kube_config.py +++ b/config/kube_config.py @@ -682,6 +682,9 @@ def _load_config_from_file_like_object(self, string): else: config = yaml.safe_load(string.read()) + if config is None: + raise ConfigException( + 'Invalid kube-config.') if self.config_merged is None: self.config_merged = copy.deepcopy(config) # doesn't need to do any further merging @@ -699,6 +702,11 @@ def load_config(self, path): with open(path) as f: config = yaml.safe_load(f) + if config is None: + raise ConfigException( + 'Invalid kube-config. ' + '%s file is empty' % path) + if self.config_merged is None: config_merged = copy.deepcopy(config) for item in ('clusters', 'contexts', 'users'): diff --git a/config/kube_config_test.py b/config/kube_config_test.py index de1dcc1b..a4d47fc7 100644 --- a/config/kube_config_test.py +++ b/config/kube_config_test.py @@ -1290,6 +1290,15 @@ def test_load_kube_config_from_dict(self): client_configuration=actual) self.assertEqual(expected, actual) + def test_load_kube_config_from_empty_file(self): + config_file_like_object = io.StringIO() + self.assertRaises(ConfigException, load_kube_config, config_file_like_object) + + def test_load_kube_config_from_empty_file_like_object(self): + config_file = self._create_temp_file( + yaml.safe_dump(None)) + self.assertRaises(ConfigException, load_kube_config, config_file) + def test_list_kube_config_contexts(self): config_file = self._create_temp_file( yaml.safe_dump(self.TEST_KUBE_CONFIG))