This commit is contained in:
2025-10-22 17:07:36 +03:00
parent bf96eaa5fd
commit 6d883ce59c

View File

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