diff --git a/files/ansible-playbooks/update-indoor.yml b/files/ansible-playbooks/update-indoor.yml index e864ce3..1ff1ace 100644 --- a/files/ansible-playbooks/update-indoor.yml +++ b/files/ansible-playbooks/update-indoor.yml @@ -50,6 +50,12 @@ control_queue: "{{ lookup('env','CONTROLQUEUE') | default('queue_controls', true) }}" afterupgrade_routing_key: "{{ lookup('env','AFTERUP_ROUTING_KEY') | default('deviceconfig', true) }}" + # --- TEMP: stall-test knobs (remove later) --- + aic_stall_test: true # enable/disable the simulated stall on DEV2 + aic_stall_sleep: 1000 # seconds to sleep on DEV2 (simulate hang) + aic_stall_async: 10 # async timeout (seconds) for the sleep job on DEV2 + aic_stall_poll: 2 # poll interval (seconds) while watching the job + pre_tasks: # ------------------------------- Hostname sanity DEV1 ------------------------------- - name: Read DEV1 hostname (busybox-safe) @@ -455,6 +461,63 @@ _blocked: true _journal: "{{ _journal + [ 'Preparation markers already present on DEV2 (count=' ~ (dev2_prep_count.stdout | trim) ~ '). Skipping staging/write' ] }}" + # test test test + + # === TEMP: STALL TEST ON DEV2 (BEGIN) ======================================== + # Enable with: -e aic_stall_test=true + # Optional knobs: -e aic_stall_sleep=1000 -e aic_stall_async=10 -e aic_stall_poll=2 + + - name: TEMP | Set stall test toggles from env/defaults + delegate_to: localhost + ansible.builtin.set_fact: + aic_stall_test: "{{ (aic_stall_test | default(lookup('env','AIC_STALL_TEST') | default('false', true))) | bool }}" + aic_stall_sleep: "{{ (aic_stall_sleep | default(lookup('env','AIC_STALL_SLEEP') | default(1000, true))) | int }}" + aic_stall_async: "{{ (aic_stall_async | default(lookup('env','AIC_STALL_ASYNC') | default(10, true))) | int }}" + aic_stall_poll: "{{ (aic_stall_poll | default(lookup('env','AIC_STALL_POLL') | default(2, true))) | int }}" + + - name: TEMP | Announce stall test settings + when: aic_stall_test + delegate_to: localhost + ansible.builtin.debug: + msg: + - "STALL TEST ENABLED" + - "sleep={{ aic_stall_sleep }}s async_cap={{ aic_stall_async }}s poll={{ aic_stall_poll }}s" + + - name: TEMP | Simulate a stuck operation on DEV2 via tunnel (async-capped) + when: aic_stall_test + delegate_to: localhost + ansible.builtin.shell: | + set -e + PORT="{{ _local_port }}" + sshpass -f "{{ dev2_passfile_used }}" ssh \ + -o AddressFamily=inet \ + -o StrictHostKeyChecking=no -o PubkeyAuthentication=no \ + -o PreferredAuthentications=password -o NumberOfPasswordPrompts=1 \ + -o ConnectTimeout=10 \ + -p "$PORT" "{{ dev2_ssh_user }}@127.0.0.1" \ + "sh -c 'date; echo STALL-TEST-START; sleep {{ aic_stall_sleep }}; echo STALL-TEST-END; date'" + args: + executable: /bin/bash + async: "{{ aic_stall_async }}" + poll: "{{ aic_stall_poll }}" + register: stall_test_result + changed_when: false + failed_when: false # capture outcome; don't fail the whole play + + - name: TEMP | Show stall test result (expect timeout-ish when sleep > async) + when: aic_stall_test + delegate_to: localhost + ansible.builtin.debug: + var: stall_test_result + + - name: TEMP | Exit early after stall test (no device actions beyond this point) + when: aic_stall_test + ansible.builtin.meta: end_play + # === TEMP: STALL TEST ON DEV2 (END) ========================================== + + + # test test test + # ---------------------------- DEV2 version firmux primary check ---------------------------- - name: Read DEV2 /usr/lib/release/firmux (if present) when: dev2_passfile_used != "NONE"