From 447730bede5991078156cf03a4d490c81a0c2f60 Mon Sep 17 00:00:00 2001 From: pavel Date: Thu, 12 Feb 2026 05:07:03 +0200 Subject: [PATCH] 0506 --- .../update-reboot-scheduler.yml | 67 +++++++++++++++++++ files/rabbit-client.sh | 6 +- 2 files changed, 72 insertions(+), 1 deletion(-) create mode 100644 files/ansible-playbooks/update-reboot-scheduler.yml diff --git a/files/ansible-playbooks/update-reboot-scheduler.yml b/files/ansible-playbooks/update-reboot-scheduler.yml new file mode 100644 index 0000000..d2eda5f --- /dev/null +++ b/files/ansible-playbooks/update-reboot-scheduler.yml @@ -0,0 +1,67 @@ +# update-reboot-scheduler.yml +# Single nbplay invocation: +# Phase 1: Cloud -> NetBox sync (via sot-updater-iponly.yml in wrapper mode) +# Phase 2: Refresh ansible_host from nb_ip, reset_connection +# Phase 3: Run update-rebootin224.yml +# Phase 4: Run afterupgrade_check.yml + +- hosts: all + gather_facts: no + vars: + rmq_host: "{{ lookup('env','RMQ_HOST') | default('10.210.12.2', true) }}" + rmq_port: "{{ lookup('env','RMQ_PORT') | default('15672', true) }}" + rmq_user: "{{ lookup('env','RMQ_USER') | default('admin', true) }}" + rmq_pass: "{{ lookup('env','RMQ_PASS') | default('change_me', true) }}" + rmq_vhost: "{{ lookup('env','RMQ_VHOST') | default('app', true) }}" + rmq_exchange: "{{ lookup('env','RMQ_EXCHANGE') | default('controls', true) }}" + control_queue: "{{ lookup('env','CONTROLQUEUE') | default('queue_controls', true) }}" + tasks: [] + +- import_playbook: sot-updater-iponly.yml + vars: + sot_wrapper_mode: true + + +- name: Phase 2 | Refresh in-memory target IP after iponly + hosts: all + gather_facts: no + vars: + rmq_host: "{{ lookup('env','RMQ_HOST') | default('10.210.12.2', true) }}" + rmq_port: "{{ lookup('env','RMQ_PORT') | default('15672', true) }}" + rmq_user: "{{ lookup('env','RMQ_USER') | default('admin', true) }}" + rmq_pass: "{{ lookup('env','RMQ_PASS') | default('change_me', true) }}" + rmq_vhost: "{{ lookup('env','RMQ_VHOST') | default('app', true) }}" + rmq_exchange: "{{ lookup('env','RMQ_EXCHANGE') | default('controls', true) }}" + control_queue: "{{ lookup('env','CONTROLQUEUE') | default('queue_controls', true) }}" + + + tasks: + - name: "Wrapper | Extract nb_ip from nb_onedevice_update.py stdout" + vars: + _lines: "{{ (nb_preflight.stdout_lines | default([])) | map('regex_replace','\r','') | map('trim') | list }}" + _ok_line: "{{ (_lines | select('match','^OK\\s+') | list | last | default('')) }}" + _fail_line: "{{ (_lines | select('match','^FAIL\\s+') | list | last | default('')) }}" + _ip_raw: "{{ _ok_line | regex_search('([0-9]{1,3}(?:\\.[0-9]{1,3}){3})','\\1') | default('') }}" + set_fact: + nb_ip: "{{ _ip_raw }}" + nb_ip_ok: "{{ (_ip_raw | length) > 0 }}" + nb_ip_err: "{{ _fail_line }}" + changed_when: false + + - name: "Wrapper | Abort if nb_ip not available" + fail: + msg: "Wrapper preflight did not produce nb_ip. FAIL line: {{ nb_ip_err | default('') }}" + when: not nb_ip_ok + + - name: "Wrapper | Update ansible_host to nb_ip" + set_fact: + ansible_host: "{{ nb_ip }}" + changed_when: false + + - name: "Wrapper | Reset connection after ansible_host change" + meta: reset_connection + + +- import_playbook: update-rebootin224.yml + +- import_playbook: afterupgrade_check.yml diff --git a/files/rabbit-client.sh b/files/rabbit-client.sh index 2376afc..ea409e1 100644 --- a/files/rabbit-client.sh +++ b/files/rabbit-client.sh @@ -146,6 +146,10 @@ dispatch_task() { n="${BASH_REMATCH[1]}" base_task="update-reboot" # runs update-reboot.yml (wrapper -> update-rebootin222.yml) extra_nbplay_opts+=("-erebootin=${n}") + elif [[ "$base_task" =~ ^update-reboot-scheduler_([0-9]{1,4})$ ]]; then + n="${BASH_REMATCH[1]}" + base_task="update-reboot-scheduler" + extra_nbplay_opts+=("-erebootin=${n}") elif [[ "$base_task" =~ ^update-indoor_([0-9]{1,4})$ ]]; then # CHANGED: keep same convention as others — pass HOURS directly via -e rebootin= n="${BASH_REMATCH[1]}" @@ -160,7 +164,7 @@ dispatch_task() { fi # --- Default rebootin for reboot-family when not explicitly provided --- - if [[ "$base_task" =~ ^(update-rebootin222|update-rebootin|update-reboot)$ ]]; then + if [[ "$base_task" =~ ^(update-rebootin222|update-rebootin|update-reboot|update-reboot-scheduler)$ ]]; then # only set if neither task_options nor extra_nbplay_opts already contain rebootin if [[ "$task_options" != *"rebootin="* ]] && ! printf '%s\n' "${extra_nbplay_opts[@]}" | grep -q 'rebootin='; then # restore legacy behavior: immediate reboot if none specified