1707
This commit is contained in:
@@ -50,7 +50,6 @@
|
|||||||
control_queue: "{{ lookup('env','CONTROLQUEUE') | default('queue_controls', true) }}"
|
control_queue: "{{ lookup('env','CONTROLQUEUE') | default('queue_controls', true) }}"
|
||||||
afterupgrade_routing_key: "{{ lookup('env','AFTERUP_ROUTING_KEY') | default('deviceconfig', true) }}"
|
afterupgrade_routing_key: "{{ lookup('env','AFTERUP_ROUTING_KEY') | default('deviceconfig', true) }}"
|
||||||
|
|
||||||
|
|
||||||
pre_tasks:
|
pre_tasks:
|
||||||
# ------------------------------- Hostname sanity DEV1 -------------------------------
|
# ------------------------------- Hostname sanity DEV1 -------------------------------
|
||||||
- name: Read DEV1 hostname from env busybox safe
|
- name: Read DEV1 hostname from env busybox safe
|
||||||
@@ -606,7 +605,6 @@
|
|||||||
set -e
|
set -e
|
||||||
PORT="{{ _local_port }}"
|
PORT="{{ _local_port }}"
|
||||||
sshpass -f "{{ dev2_passfile_used }}" ssh \
|
sshpass -f "{{ dev2_passfile_used }}" ssh \
|
||||||
-o AddressFamily=inet \
|
|
||||||
-o StrictHostKeyChecking=no -o PubkeyAuthentication=no \
|
-o StrictHostKeyChecking=no -o PubkeyAuthentication=no \
|
||||||
-o PreferredAuthentications=password -o NumberOfPasswordPrompts=1 \
|
-o PreferredAuthentications=password -o NumberOfPasswordPrompts=1 \
|
||||||
-o ConnectTimeout=10 \
|
-o ConnectTimeout=10 \
|
||||||
@@ -931,7 +929,6 @@
|
|||||||
when: tag_restart_sched_payload is defined
|
when: tag_restart_sched_payload is defined
|
||||||
delegate_to: localhost
|
delegate_to: localhost
|
||||||
|
|
||||||
|
|
||||||
- name: Note reboot request bad format
|
- name: Note reboot request bad format
|
||||||
when: (rebootin | default('') | string | trim | length) > 0 and not _reboot_requested
|
when: (rebootin | default('') | string | trim | length) > 0 and not _reboot_requested
|
||||||
ansible.builtin.debug:
|
ansible.builtin.debug:
|
||||||
@@ -987,10 +984,8 @@
|
|||||||
when: journal_indoor_updated is defined
|
when: journal_indoor_updated is defined
|
||||||
delegate_to: localhost
|
delegate_to: localhost
|
||||||
|
|
||||||
|
|
||||||
# ──────────────────────────────── NEW: derive expected version for the checker ────────────────────────────────
|
# ──────────────────────────────── NEW: derive expected version for the checker ────────────────────────────────
|
||||||
|
# Schedule window (we only send after-upgrade if write succeeded & not blocked)
|
||||||
# >>> ADDED: initialize scheduling window so au_delay_sec exists for the derivation <<<
|
|
||||||
- name: Init after-upgrade scheduling vars (attempt 1 + delay from reboot + 6m)
|
- name: Init after-upgrade scheduling vars (attempt 1 + delay from reboot + 6m)
|
||||||
ansible.builtin.set_fact:
|
ansible.builtin.set_fact:
|
||||||
au_attempt: 1
|
au_attempt: 1
|
||||||
@@ -1005,17 +1000,15 @@
|
|||||||
au_original_emitted_at: "{{ lookup('pipe', 'date -u +%FT%TZ') }}"
|
au_original_emitted_at: "{{ lookup('pipe', 'date -u +%FT%TZ') }}"
|
||||||
when: au_delay_sec is defined
|
when: au_delay_sec is defined
|
||||||
delegate_to: localhost
|
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)
|
- name: Compute expected firmware core "X.Y.Z-rNNNN" from image filename (strict)
|
||||||
delegate_to: localhost
|
delegate_to: localhost
|
||||||
ansible.builtin.set_fact:
|
ansible.builtin.set_fact:
|
||||||
expected_fw_core: >-
|
expected_fw_core: >-
|
||||||
{{
|
{{
|
||||||
image_filename
|
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
|
when: au_delay_sec is defined
|
||||||
|
|
||||||
@@ -1039,54 +1032,12 @@
|
|||||||
- "expected_fw_core={{ expected_fw_core }}"
|
- "expected_fw_core={{ expected_fw_core }}"
|
||||||
when: expected_fw_core is defined
|
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)
|
- name: Build after-upgrade check payload (attempt 1)
|
||||||
ansible.builtin.set_fact:
|
ansible.builtin.set_fact:
|
||||||
afterupgrade_payload:
|
afterupgrade_payload:
|
||||||
task_name: "afterupgrade_indoor_check"
|
task_name: "afterupgrade_indoor_check"
|
||||||
inscope_device: "{{ ansible_hostname | default(inventory_hostname) }}"
|
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 }}"
|
attempt: "{{ au_attempt }}"
|
||||||
max_attempts: "{{ au_max_attempts }}"
|
max_attempts: "{{ au_max_attempts }}"
|
||||||
current_delay_sec: "{{ au_delay_sec }}"
|
current_delay_sec: "{{ au_delay_sec }}"
|
||||||
@@ -1096,7 +1047,6 @@
|
|||||||
when: au_delay_sec is defined
|
when: au_delay_sec is defined
|
||||||
delegate_to: localhost
|
delegate_to: localhost
|
||||||
|
|
||||||
|
|
||||||
- name: Debug x-delay about to be sent (ms)
|
- name: Debug x-delay about to be sent (ms)
|
||||||
ansible.builtin.debug:
|
ansible.builtin.debug:
|
||||||
msg: "x-delay(ms) = {{ (au_delay_sec | int) * 1000 }}"
|
msg: "x-delay(ms) = {{ (au_delay_sec | int) * 1000 }}"
|
||||||
@@ -1130,7 +1080,6 @@
|
|||||||
when: afterupgrade_payload is defined
|
when: afterupgrade_payload is defined
|
||||||
delegate_to: localhost
|
delegate_to: localhost
|
||||||
|
|
||||||
|
|
||||||
# ---------------------------- summary ----------------------------
|
# ---------------------------- summary ----------------------------
|
||||||
- name: Summary show key results
|
- name: Summary show key results
|
||||||
delegate_to: localhost
|
delegate_to: localhost
|
||||||
@@ -1194,4 +1143,3 @@
|
|||||||
- "del_ip.stdout={{ (del_ip.stdout | default('')) | trim }}"
|
- "del_ip.stdout={{ (del_ip.stdout | default('')) | trim }}"
|
||||||
- "del_ip.stderr={{ (del_ip.stderr | default('')) | trim }}"
|
- "del_ip.stderr={{ (del_ip.stderr | default('')) | trim }}"
|
||||||
when: del_ip is defined
|
when: del_ip is defined
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user