From e028953d0b1507f0c048bddf0d5cedab69f4bfbe Mon Sep 17 00:00:00 2001 From: Luke Short Date: Tue, 12 Nov 2019 14:17:52 -0500 Subject: [PATCH] Escape invalid JSON characters during deployment. By first quoting the JSON query, it is possible to easily pass it to the json_query plugin. This allows elements with special characters, such as a hyphen -, to be resolvable. Change-Id: I56f3e5f96dc25f16aed585ca6678de53721071b7 Closes-Bug: #1853321 Signed-off-by: Luke Short --- tripleo_common/templates/deployments.yaml | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/tripleo_common/templates/deployments.yaml b/tripleo_common/templates/deployments.yaml index 5c02d8357..aa26f2267 100644 --- a/tripleo_common/templates/deployments.yaml +++ b/tripleo_common/templates/deployments.yaml @@ -1,11 +1,16 @@ +- name: Quote the JSON queries to escape invalid characters + set_fact: + item_id: '"{{ item }}".id' + item_group: '"{{ item }}".group' + item_only: '"{{ item }}"' + - name: Lookup deployment UUID set_fact: - deployment_uuid: "{{ lookup('file', tripleo_role_name ~ '/' ~ ansible_hostname | lower ~ '/' ~ item) | from_yaml | json_query(item ~ '.id') }}" + deployment_uuid: "{{ lookup('file', tripleo_role_name ~ '/' ~ ansible_hostname | lower ~ '/' ~ item) | from_yaml | json_query(item_id) }}" - name: Lookup deployment group set_fact: - deployment_group: "{{ lookup('file', tripleo_role_name ~ '/' ~ ansible_hostname | lower ~ '/' ~ item) | from_yaml | json_query(item ~ '.group') }}" - + deployment_group: "{{ lookup('file', tripleo_role_name ~ '/' ~ ansible_hostname | lower ~ '/' ~ item) | from_yaml | json_query(item_group) }}" - name: Hiera check and diff mode block: @@ -47,7 +52,7 @@ - name: "Remote copy deployment file for {{ item }}" copy: - content: "[ {{ deployment_content.content | b64decode | from_yaml | json_query(item) }} ]" + content: "[ {{ deployment_content.content | b64decode | from_yaml | json_query(item_only) }} ]" dest: "/var/lib/heat-config/check-mode/tripleo-config-download/{{ item ~ '-' ~ deployment_uuid }}" - name: Run hiera deployment for check mode @@ -132,7 +137,7 @@ - name: "Remote copy deployment file for {{ item }}" copy: - content: "[ {{ deployment_content.content | b64decode | from_yaml | json_query(item) }} ]" + content: "[ {{ deployment_content.content | b64decode | from_yaml | json_query(item_only) }} ]" dest: "/var/lib/heat-config/tripleo-config-download/{{ item ~ '-' ~ deployment_uuid }}" - name: "Check if deployed file exists for {{ item }}"