diff --git a/files/ansible-playbooks/update-indoor.yml b/files/ansible-playbooks/update-indoor.yml index c27b2fe..0626e06 100644 --- a/files/ansible-playbooks/update-indoor.yml +++ b/files/ansible-playbooks/update-indoor.yml @@ -50,7 +50,6 @@ control_queue: "{{ lookup('env','CONTROLQUEUE') | default('queue_controls', true) }}" afterupgrade_routing_key: "{{ lookup('env','AFTERUP_ROUTING_KEY') | default('deviceconfig', true) }}" - pre_tasks: # ------------------------------- Hostname sanity DEV1 ------------------------------- - name: Read DEV1 hostname from env busybox safe @@ -606,7 +605,6 @@ 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 \ @@ -931,7 +929,6 @@ when: tag_restart_sched_payload is defined delegate_to: localhost - - name: Note reboot request bad format when: (rebootin | default('') | string | trim | length) > 0 and not _reboot_requested ansible.builtin.debug: @@ -987,10 +984,8 @@ when: journal_indoor_updated is defined delegate_to: localhost - # ──────────────────────────────── NEW: derive expected version for the checker ──────────────────────────────── - - # >>> ADDED: initialize scheduling window so au_delay_sec exists for the derivation <<< + # Schedule window (we only send after-upgrade if write succeeded & not blocked) - name: Init after-upgrade scheduling vars (attempt 1 + delay from reboot + 6m) ansible.builtin.set_fact: au_attempt: 1 @@ -1005,17 +1000,15 @@ au_original_emitted_at: "{{ lookup('pipe', 'date -u +%FT%TZ') }}" when: au_delay_sec is defined delegate_to: localhost - # <<< END ADDED >>> - - # --- SAFE expected target derivation (split into separate set_fact tasks) --- + # Strict, single-source expected version: "X.Y.Z-rNNNN" from image_filename - name: Compute expected firmware core "X.Y.Z-rNNNN" from image filename (strict) delegate_to: localhost ansible.builtin.set_fact: expected_fw_core: >- {{ image_filename - | regex_replace('.*?([0-9]+\.[0-9]+\.[0-9]+)-r([0-9]+).*','\1-r\2') + | regex_replace('.*?([0-9]+\\.[0-9]+\\.[0-9]+)-r([0-9]+).*','\\1-r\\2') }} when: au_delay_sec is defined @@ -1039,54 +1032,12 @@ - "expected_fw_core={{ expected_fw_core }}" when: expected_fw_core is defined - - - name: If no -rNNNN, also try to pull rev from 'rev NNNN' (case-insensitive) - delegate_to: localhost - ansible.builtin.set_fact: - _img_rev_num: >- - {{ - (_img_rev_num | length) > 0 - | ternary( - _img_rev_num, - ( - (_img_base is search('(?i)rev[^0-9]*[0-9]+')) - | ternary( - (_img_base | regex_replace('.*(?i)rev[^0-9]*([0-9]+).*','\\1')), - '' - ) - ) - ) - }} - when: au_delay_sec is defined - - - name: Assemble expected_fw_core (prefer X.Y.Z-rNNNN → X.Y.Z → image base) - delegate_to: localhost - ansible.builtin.set_fact: - expected_fw_core: >- - {{ - (_img_ver_core | length) > 0 and (_img_rev_num | length) > 0 - and (_img_ver_core ~ '-r' ~ _img_rev_num) - or - ((_img_ver_core | length) > 0 and _img_ver_core) - or - _img_base - }} - when: au_delay_sec is defined - - - name: Debug derived target version - delegate_to: localhost - ansible.builtin.debug: - msg: - - "image_filename={{ image_filename }}" - - "expected_fw_core={{ expected_fw_core }}" - when: expected_fw_core is defined - - name: Build after-upgrade check payload (attempt 1) ansible.builtin.set_fact: afterupgrade_payload: task_name: "afterupgrade_indoor_check" inscope_device: "{{ ansible_hostname | default(inventory_hostname) }}" - target_version: "{{ expected_fw_core | default(fw_banner_repr | default(image_filename | regex_replace('\\.bin$',''))) }}" + target_version: "{{ expected_fw_core }}" attempt: "{{ au_attempt }}" max_attempts: "{{ au_max_attempts }}" current_delay_sec: "{{ au_delay_sec }}" @@ -1096,7 +1047,6 @@ when: au_delay_sec is defined delegate_to: localhost - - name: Debug x-delay about to be sent (ms) ansible.builtin.debug: msg: "x-delay(ms) = {{ (au_delay_sec | int) * 1000 }}" @@ -1130,7 +1080,6 @@ when: afterupgrade_payload is defined delegate_to: localhost - # ---------------------------- summary ---------------------------- - name: Summary show key results delegate_to: localhost @@ -1194,4 +1143,3 @@ - "del_ip.stdout={{ (del_ip.stdout | default('')) | trim }}" - "del_ip.stderr={{ (del_ip.stderr | default('')) | trim }}" when: del_ip is defined -