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:
Dae Seong Kim 2017-11-27 09:33:31 +09:00
parent 59c1146946
commit be7b49fb14
3 changed files with 27 additions and 1 deletions

View File

@ -43,6 +43,8 @@ class Override(object):
if isinstance(v, collections.Mapping):
r = self.update(d.get(k, {}), v)
d[k] = r
elif isinstance(v, str) and isinstance(d.get(k), (list, tuple)):
d[k] = [x.strip() for x in v.split(',')]
else:
d[k] = u[k]
return d
@ -140,7 +142,6 @@ class Override(object):
for value in self.values:
merging_values = self._load_yaml_file(value)
self.update_document(merging_values)
if self.overrides:
for override in self.overrides:
new_value = override.split('=')[1]

View File

@ -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

View File

@ -62,6 +62,21 @@ class OverrideTestCase(unittest.TestCase):
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):
expected = "{}/templates/override-{}-expected.yaml".format(
self.basepath, '02')