From e9fbe29f113fbbc89867fa951c98daf6dade9ac1 Mon Sep 17 00:00:00 2001 From: Yuxing Jiang Date: Sat, 26 Sep 2020 09:53:34 -0400 Subject: [PATCH] Preserve quotes in building helm charts RoundTripLoader in ruamel.yaml will omit quotation marks. In some cases, the result by loading a yaml with RoundTripLoader and dumping it out will be unreadable by PYYAML. For example, the pattern: hosts: ["mon-logstash:port"] will be transformed to: hosts: [mon-logstash:port] Currently, the Armada project is using PYYAML. It's better to keep the quotes to allow the following process have to use PYYAML. Tested with rebuild the helm chart with the yaml has the pattern in the example, and the quotation marks are preserved. Change-Id: I7375a1ad498336baa337cca5af8f90028b753110 Partial-Bug: 1896530 Signed-off-by: Yuxing Jiang --- build-tools/build-helm-charts.sh | 2 +- build-tools/helm_chart_modify.py | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/build-tools/build-helm-charts.sh b/build-tools/build-helm-charts.sh index 9ac1525b..fdfe30af 100755 --- a/build-tools/build-helm-charts.sh +++ b/build-tools/build-helm-charts.sh @@ -315,7 +315,7 @@ def merge_yaml(yaml_merged, yaml_new): yaml_out = collections.OrderedDict() for yaml_file in yaml_files: print 'Merging yaml from file: %s' % yaml_file - for document in yaml.load_all(open(yaml_file), Loader=yaml.RoundTripLoader): + for document in yaml.load_all(open(yaml_file), Loader=yaml.RoundTripLoader, preserve_quotes=True): document_name = (document['schema'], document['metadata']['schema'], document['metadata']['name']) if document_name in yaml_out: merge_yaml(yaml_out[document_name], document) diff --git a/build-tools/helm_chart_modify.py b/build-tools/helm_chart_modify.py index cb805fb6..4069347b 100755 --- a/build-tools/helm_chart_modify.py +++ b/build-tools/helm_chart_modify.py @@ -159,7 +159,8 @@ def main(argv): new_image_dict[name] = image # Load chart into dictionary(s) and then modify any image locations/tags if required - for document in yaml.load_all(open(yaml_file), Loader=yaml.RoundTripLoader): + for document in yaml.load_all( + open(yaml_file), Loader=yaml.RoundTripLoader, preserve_quotes=True): document_name = (document['schema'], document['metadata']['schema'], document['metadata']['name'])