Skip to content
This repository was archived by the owner on Mar 13, 2022. It is now read-only.

Commit 8842e98

Browse files
authored
Merge branch 'master' into add-oidc-auth-support
2 parents 0147d38 + 11da619 commit 8842e98

File tree

2 files changed

+21
-3
lines changed

2 files changed

+21
-3
lines changed

config/kube_config.py

+10-1
Original file line numberDiff line numberDiff line change
@@ -399,14 +399,23 @@ def get_with_name(self, name, safe=False):
399399
raise ConfigException(
400400
'Invalid kube-config file. Expected %s to be a list'
401401
% self.name)
402+
result = None
402403
for v in self.value:
403404
if 'name' not in v:
404405
raise ConfigException(
405406
'Invalid kube-config file. '
406407
'Expected all values in %s list to have \'name\' key'
407408
% self.name)
408409
if v['name'] == name:
409-
return ConfigNode('%s[name=%s]' % (self.name, name), v)
410+
if result is None:
411+
result = v
412+
else:
413+
raise ConfigException(
414+
'Invalid kube-config file. '
415+
'Expected only one object with name %s in %s list'
416+
% (name, self.name))
417+
if result is not None:
418+
return ConfigNode('%s[name=%s]' % (self.name, name), result)
410419
if safe:
411420
return None
412421
raise ConfigException(

config/kube_config_test.py

+11-2
Original file line numberDiff line numberDiff line change
@@ -193,15 +193,19 @@ class TestConfigNode(BaseTestCase):
193193
"with_names": [{"name": "test_name", "value": "test_value"},
194194
{"name": "test_name2",
195195
"value": {"key1", "test"}},
196-
{"name": "test_name3", "value": [1, 2, 3]}]}
196+
{"name": "test_name3", "value": [1, 2, 3]}],
197+
"with_names_dup": [{"name": "test_name", "value": "test_value"},
198+
{"name": "test_name",
199+
"value": {"key1", "test"}},
200+
{"name": "test_name3", "value": [1, 2, 3]}]}
197201

198202
def setUp(self):
199203
super(TestConfigNode, self).setUp()
200204
self.node = ConfigNode("test_obj", self.test_obj)
201205

202206
def test_normal_map_array_operations(self):
203207
self.assertEqual("test", self.node['key1'])
204-
self.assertEqual(4, len(self.node))
208+
self.assertEqual(5, len(self.node))
205209

206210
self.assertEqual("test_obj/key2", self.node['key2'].name)
207211
self.assertEqual(["a", "b", "c"], self.node['key2'].value)
@@ -248,6 +252,11 @@ def test_get_with_name_on_name_does_not_exists(self):
248252
lambda: self.node['with_names'].get_with_name('no-name'),
249253
"Expected object with name no-name in test_obj/with_names list")
250254

255+
def test_get_with_name_on_duplicate_name(self):
256+
self.expect_exception(
257+
lambda: self.node['with_names_dup'].get_with_name('test_name'),
258+
"Expected only one object with name test_name in test_obj/with_names_dup list")
259+
251260

252261
class FakeConfig:
253262

0 commit comments

Comments
 (0)