Repair inconsistent Seriatim build input state
This commit is contained in:
@@ -20,6 +20,7 @@
|
|||||||
- name: Calculate desired Seriatim build fingerprint
|
- name: Calculate desired Seriatim build fingerprint
|
||||||
ansible.builtin.set_fact:
|
ansible.builtin.set_fact:
|
||||||
seriatim_desired_fingerprint: "{{ seriatim_build_inputs | hash('sha256') }}"
|
seriatim_desired_fingerprint: "{{ seriatim_build_inputs | hash('sha256') }}"
|
||||||
|
seriatim_stored_build_inputs: ""
|
||||||
seriatim_stored_fingerprint: ""
|
seriatim_stored_fingerprint: ""
|
||||||
seriatim_stored_checksum: ""
|
seriatim_stored_checksum: ""
|
||||||
|
|
||||||
@@ -50,6 +51,14 @@
|
|||||||
register: seriatim_stored_fingerprint_result
|
register: seriatim_stored_fingerprint_result
|
||||||
when: seriatim_fingerprint_state_stat.stat.exists
|
when: seriatim_fingerprint_state_stat.stat.exists
|
||||||
|
|
||||||
|
- name: Read stored Seriatim build inputs
|
||||||
|
ansible.builtin.slurp:
|
||||||
|
src: "{{ seriatim_build_state_dir }}/build-inputs.json"
|
||||||
|
register: seriatim_stored_build_inputs_result
|
||||||
|
when:
|
||||||
|
- seriatim_build_inputs_state_stat.stat.isreg | default(false)
|
||||||
|
- seriatim_build_inputs_state_stat.stat.readable | default(false)
|
||||||
|
|
||||||
- name: Read stored Seriatim checksum
|
- name: Read stored Seriatim checksum
|
||||||
ansible.builtin.slurp:
|
ansible.builtin.slurp:
|
||||||
src: "{{ seriatim_build_state_dir }}/binary.sha256"
|
src: "{{ seriatim_build_state_dir }}/binary.sha256"
|
||||||
@@ -58,11 +67,15 @@
|
|||||||
|
|
||||||
- name: Record stored Seriatim state values
|
- name: Record stored Seriatim state values
|
||||||
ansible.builtin.set_fact:
|
ansible.builtin.set_fact:
|
||||||
|
seriatim_stored_build_inputs: >-
|
||||||
|
{{ seriatim_stored_build_inputs_result.content | b64decode | trim }}
|
||||||
seriatim_stored_fingerprint: >-
|
seriatim_stored_fingerprint: >-
|
||||||
{{ seriatim_stored_fingerprint_result.content | b64decode | trim }}
|
{{ seriatim_stored_fingerprint_result.content | b64decode | trim }}
|
||||||
seriatim_stored_checksum: >-
|
seriatim_stored_checksum: >-
|
||||||
{{ seriatim_stored_checksum_result.content | b64decode | trim }}
|
{{ seriatim_stored_checksum_result.content | b64decode | trim }}
|
||||||
when:
|
when:
|
||||||
|
- seriatim_build_inputs_state_stat.stat.isreg | default(false)
|
||||||
|
- seriatim_build_inputs_state_stat.stat.readable | default(false)
|
||||||
- seriatim_fingerprint_state_stat.stat.exists
|
- seriatim_fingerprint_state_stat.stat.exists
|
||||||
- seriatim_checksum_state_stat.stat.exists
|
- seriatim_checksum_state_stat.stat.exists
|
||||||
|
|
||||||
@@ -83,6 +96,9 @@
|
|||||||
or not seriatim_build_inputs_state_stat.stat.exists
|
or not seriatim_build_inputs_state_stat.stat.exists
|
||||||
or not seriatim_fingerprint_state_stat.stat.exists
|
or not seriatim_fingerprint_state_stat.stat.exists
|
||||||
or not seriatim_checksum_state_stat.stat.exists
|
or not seriatim_checksum_state_stat.stat.exists
|
||||||
|
or seriatim_stored_build_inputs != seriatim_build_inputs
|
||||||
|
or (seriatim_stored_build_inputs | hash('sha256')) != seriatim_stored_fingerprint
|
||||||
|
or (seriatim_stored_build_inputs | hash('sha256')) != seriatim_desired_fingerprint
|
||||||
or seriatim_stored_fingerprint != seriatim_desired_fingerprint
|
or seriatim_stored_fingerprint != seriatim_desired_fingerprint
|
||||||
or seriatim_stored_checksum != (seriatim_installed_binary_stat.stat.checksum | default(''))
|
or seriatim_stored_checksum != (seriatim_installed_binary_stat.stat.checksum | default(''))
|
||||||
or (seriatim_installed_version_result.rc | default(1)) != 0
|
or (seriatim_installed_version_result.rc | default(1)) != 0
|
||||||
|
|||||||
@@ -58,6 +58,14 @@ run_converge
|
|||||||
run_converge | tee "$test_tmp/default-repeat.log"
|
run_converge | tee "$test_tmp/default-repeat.log"
|
||||||
require_clean_recap "$test_tmp/default-repeat.log"
|
require_clean_recap "$test_tmp/default-repeat.log"
|
||||||
|
|
||||||
|
printf '%s\n' 'corrupt build inputs' |
|
||||||
|
sudo tee /usr/local/src/seriatim.ansible-build-state/build-inputs.json >/dev/null
|
||||||
|
run_converge | tee "$test_tmp/build-input-repair.log"
|
||||||
|
require_changed_recap "$test_tmp/build-input-repair.log"
|
||||||
|
"$playbook" -i "$inventory" tests/verify.yml
|
||||||
|
run_converge | tee "$test_tmp/build-input-repair-repeat.log"
|
||||||
|
require_clean_recap "$test_tmp/build-input-repair-repeat.log"
|
||||||
|
|
||||||
baseline_binary=$(binary_digest)
|
baseline_binary=$(binary_digest)
|
||||||
baseline_state=$(state_digest)
|
baseline_state=$(state_digest)
|
||||||
for scenario in \
|
for scenario in \
|
||||||
|
|||||||
Reference in New Issue
Block a user