Repair inconsistent Seriatim build input state
This commit is contained in:
@@ -20,6 +20,7 @@
|
||||
- name: Calculate desired Seriatim build fingerprint
|
||||
ansible.builtin.set_fact:
|
||||
seriatim_desired_fingerprint: "{{ seriatim_build_inputs | hash('sha256') }}"
|
||||
seriatim_stored_build_inputs: ""
|
||||
seriatim_stored_fingerprint: ""
|
||||
seriatim_stored_checksum: ""
|
||||
|
||||
@@ -50,6 +51,14 @@
|
||||
register: seriatim_stored_fingerprint_result
|
||||
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
|
||||
ansible.builtin.slurp:
|
||||
src: "{{ seriatim_build_state_dir }}/binary.sha256"
|
||||
@@ -58,11 +67,15 @@
|
||||
|
||||
- name: Record stored Seriatim state values
|
||||
ansible.builtin.set_fact:
|
||||
seriatim_stored_build_inputs: >-
|
||||
{{ seriatim_stored_build_inputs_result.content | b64decode | trim }}
|
||||
seriatim_stored_fingerprint: >-
|
||||
{{ seriatim_stored_fingerprint_result.content | b64decode | trim }}
|
||||
seriatim_stored_checksum: >-
|
||||
{{ seriatim_stored_checksum_result.content | b64decode | trim }}
|
||||
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_checksum_state_stat.stat.exists
|
||||
|
||||
@@ -83,6 +96,9 @@
|
||||
or not seriatim_build_inputs_state_stat.stat.exists
|
||||
or not seriatim_fingerprint_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_checksum != (seriatim_installed_binary_stat.stat.checksum | default(''))
|
||||
or (seriatim_installed_version_result.rc | default(1)) != 0
|
||||
|
||||
@@ -58,6 +58,14 @@ run_converge
|
||||
run_converge | tee "$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_state=$(state_digest)
|
||||
for scenario in \
|
||||
|
||||
Reference in New Issue
Block a user