feat(override): Add to override list type of value
armada apply --set option can override string type of value but not list type of value like chart_groups. This PS support to override list type of value. Closes: #175 Change-Id: Idd2a205f94c04bc36c247f4386ecaea3cfbc7f0d
This commit is contained in:
parent
59c1146946
commit
be7b49fb14
|
@ -43,6 +43,8 @@ class Override(object):
|
||||||
if isinstance(v, collections.Mapping):
|
if isinstance(v, collections.Mapping):
|
||||||
r = self.update(d.get(k, {}), v)
|
r = self.update(d.get(k, {}), v)
|
||||||
d[k] = r
|
d[k] = r
|
||||||
|
elif isinstance(v, str) and isinstance(d.get(k), (list, tuple)):
|
||||||
|
d[k] = [x.strip() for x in v.split(',')]
|
||||||
else:
|
else:
|
||||||
d[k] = u[k]
|
d[k] = u[k]
|
||||||
return d
|
return d
|
||||||
|
@ -140,7 +142,6 @@ class Override(object):
|
||||||
for value in self.values:
|
for value in self.values:
|
||||||
merging_values = self._load_yaml_file(value)
|
merging_values = self._load_yaml_file(value)
|
||||||
self.update_document(merging_values)
|
self.update_document(merging_values)
|
||||||
|
|
||||||
if self.overrides:
|
if self.overrides:
|
||||||
for override in self.overrides:
|
for override in self.overrides:
|
||||||
new_value = override.split('=')[1]
|
new_value = override.split('=')[1]
|
||||||
|
|
|
@ -0,0 +1,10 @@
|
||||||
|
---
|
||||||
|
schema: armada/Manifest/v1
|
||||||
|
metadata:
|
||||||
|
schema: metadata/Document/v1
|
||||||
|
name: simple-armada
|
||||||
|
data:
|
||||||
|
release_prefix: armada
|
||||||
|
chart_groups:
|
||||||
|
- blog-group3
|
||||||
|
- blog-group4
|
|
@ -62,6 +62,21 @@ class OverrideTestCase(unittest.TestCase):
|
||||||
|
|
||||||
self.assertEqual(ovr_doc, expect_doc)
|
self.assertEqual(ovr_doc, expect_doc)
|
||||||
|
|
||||||
|
def test_set_list_valid(self):
|
||||||
|
expected = "{}/templates/override-{}-expected.yaml".format(
|
||||||
|
self.basepath, '03')
|
||||||
|
|
||||||
|
with open(self.base_manifest) as f, open(expected) as e:
|
||||||
|
doc_obj = list(yaml.safe_load_all(f.read()))
|
||||||
|
doc_path = ['manifest', 'simple-armada']
|
||||||
|
override = ('manifest:simple-armada:chart_groups=\
|
||||||
|
blog-group3,blog-group4',)
|
||||||
|
ovr = Override(doc_obj, override)
|
||||||
|
ovr.update_manifests()
|
||||||
|
ovr_doc = ovr.find_manifest_document(doc_path)
|
||||||
|
expect_doc = list(yaml.load_all(e.read()))[0]
|
||||||
|
self.assertEqual(expect_doc, ovr_doc)
|
||||||
|
|
||||||
def test_find_manifest_document_valid(self):
|
def test_find_manifest_document_valid(self):
|
||||||
expected = "{}/templates/override-{}-expected.yaml".format(
|
expected = "{}/templates/override-{}-expected.yaml".format(
|
||||||
self.basepath, '02')
|
self.basepath, '02')
|
||||||
|
|
Loading…
Reference in New Issue