Repair inconsistent Seriatim build input state

This commit is contained in:
2026-09-07 18:52:46 +00:00
parent efd4734744
commit c6c1907f78
2 changed files with 24 additions and 0 deletions

View File

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

View File

@@ -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 \