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 <ekultails@gmail.com>
This commit is contained in:
Luke Short 2019-11-12 14:17:52 -05:00
parent 07c7889ca5
commit e028953d0b
1 changed files with 10 additions and 5 deletions

View File

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