Skip to content

Commit 5979158

Browse files
committed
[reproducer] Fix PreMetal handling of extra_variable_files
PreMetal provisions hosts from the main branch, generating reproducer-variables.yml with base scenario vars. During the actual Zuul job, overwrite_zuul_vars.yml only merges zuul_vars.yaml into reproducer-variables.yml, ignoring extra_variable_files entirely. Additionally, the slurp + copy-content pattern for transferring reproducer-variables.yml triggers Jinja2 evaluation on the file content, breaking when the bootstrap bakes raw templates into nested structures. Signed-off-by: Samuel Rac <srac@redhat.com>
1 parent 21dbd39 commit 5979158

2 files changed

Lines changed: 52 additions & 16 deletions

File tree

roles/reproducer/tasks/overwrite_zuul_vars.yml

Lines changed: 43 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -19,18 +19,12 @@
1919
temp_reproducer_var_path: /tmp/reproducer-variables.yml
2020
temp_merged_reproducer_var_path: /tmp/merged-reproducer-variables.yml
2121
block:
22-
- name: Slurp reproducer-variables.yml to hypervisor
23-
ansible.builtin.slurp:
22+
- name: Fetch reproducer-variables.yml from controller-0
23+
ansible.builtin.fetch:
2424
src: "{{ cifmw_basedir }}/parameters/reproducer-variables.yml"
25-
register: reproducer_original
26-
delegate_to: controller-0
27-
no_log: "{{ cifmw_nolog | default(true) | bool }}"
28-
29-
- name: Create temp file reproducer-variables.yml on hypervisor
30-
ansible.builtin.copy:
31-
content: "{{ reproducer_original.content | b64decode }}"
3225
dest: "{{ temp_reproducer_var_path }}"
33-
mode: "0664"
26+
flat: true
27+
delegate_to: controller-0
3428
no_log: "{{ cifmw_nolog | default(true) | bool }}"
3529

3630
- name: Copy merge yamls script
@@ -48,15 +42,48 @@
4842
{{ temp_merged_reproducer_var_path }}
4943
no_log: "{{ cifmw_nolog | default(true) | bool }}"
5044

51-
- name: Slurp merged reproducer-variables.yml from hypervisor
52-
ansible.builtin.slurp:
53-
src: "{{ temp_merged_reproducer_var_path }}"
54-
register: merged_reproducer_slurp
45+
- name: Merge scenario variable files into reproducer-variables.yml
46+
when: variable_files_dirs is defined
47+
block:
48+
- name: Find scenario variable files
49+
ansible.builtin.find:
50+
paths: "{{ variable_files_dirs }}"
51+
patterns: "*.yaml,*.yml"
52+
recurse: false
53+
register: _scenario_var_files
54+
55+
- name: Merge each scenario variable file
56+
ansible.builtin.shell: >
57+
python3 /usr/local/bin/merge_yaml_override
58+
{{ temp_merged_reproducer_var_path }}
59+
{{ scenario_var_file.path }} >
60+
{{ temp_merged_reproducer_var_path }}.tmp &&
61+
mv {{ temp_merged_reproducer_var_path }}.tmp
62+
{{ temp_merged_reproducer_var_path }}
63+
loop: "{{ _scenario_var_files.files | sort(attribute='path') }}"
64+
loop_control:
65+
loop_var: scenario_var_file
66+
label: "{{ scenario_var_file.path | basename }}"
67+
no_log: "{{ cifmw_nolog | default(true) | bool }}"
68+
69+
- name: Merge extra variable files into reproducer-variables.yml
70+
when: extra_variable_files is defined
71+
ansible.builtin.shell: >
72+
python3 /usr/local/bin/merge_yaml_override
73+
{{ temp_merged_reproducer_var_path }}
74+
{{ extra_variable_file }} >
75+
{{ temp_merged_reproducer_var_path }}.tmp &&
76+
mv {{ temp_merged_reproducer_var_path }}.tmp
77+
{{ temp_merged_reproducer_var_path }}
78+
loop: "{{ extra_variable_files }}"
79+
loop_control:
80+
loop_var: extra_variable_file
81+
label: "{{ extra_variable_file | basename }}"
5582
no_log: "{{ cifmw_nolog | default(true) | bool }}"
5683

5784
- name: Write back merged reproducer-variables.yml
5885
ansible.builtin.copy:
59-
content: "{{ merged_reproducer_slurp.content | b64decode }}"
86+
src: "{{ temp_merged_reproducer_var_path }}"
6087
dest: "{{ cifmw_basedir }}/parameters/reproducer-variables.yml"
6188
mode: "0664"
6289
backup: true
@@ -65,7 +92,7 @@
6592

6693
- name: Overwrite custom-params.yml
6794
ansible.builtin.copy:
68-
content: "{{ merged_reproducer_slurp.content | b64decode }}"
95+
src: "{{ temp_merged_reproducer_var_path }}"
6996
dest: "{{ cifmw_basedir }}/artifacts/parameters/custom-params.yml"
7097
mode: "0664"
7198
no_log: "{{ cifmw_nolog | default(true) | bool }}"

roles/reproducer/tasks/premetal.yml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,15 @@
3030
loop_control:
3131
loop_var: secret_file
3232

33+
- name: Pass extra variable files to deployment scripts
34+
ansible.builtin.set_fact:
35+
cifmw_deploy_architecture_args: >
36+
{{ cifmw_deploy_architecture_args | default('') }}
37+
-e @{{ extra_variable_file }}
38+
loop: "{{ extra_variable_files | default([]) }}"
39+
loop_control:
40+
loop_var: extra_variable_file
41+
3342
- name: Print final cifmw_deploy_architecture_args
3443
ansible.builtin.debug:
3544
msg: >

0 commit comments

Comments
 (0)