From 6fe9e9f7495a94758bd463f5fd6406130c561ca1 Mon Sep 17 00:00:00 2001 From: pavel Date: Thu, 30 Oct 2025 22:34:52 +0200 Subject: [PATCH] feat: adding 2.2.3-r9800 2234 --- .../afterupgrade_withcurl.yml | 39 +++++++++++++++++-- 1 file changed, 36 insertions(+), 3 deletions(-) diff --git a/files/ansible-playbooks/afterupgrade_withcurl.yml b/files/ansible-playbooks/afterupgrade_withcurl.yml index 4d62222..3396cf8 100644 --- a/files/ansible-playbooks/afterupgrade_withcurl.yml +++ b/files/ansible-playbooks/afterupgrade_withcurl.yml @@ -25,8 +25,6 @@ target_version_full: "" schema_version: 1 - - # Probing/SSH defaults tcp_port: 22 nc_timeout: 5 @@ -37,6 +35,9 @@ # Do NOT self-reference max_attempts. We’ll normalize below. max_attempts_default: 3 + # --- Hardcoded cloud API bearer (per request) --- + cloud_api_bearer: "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJlbWFpbCI6InBhdmVsLmxAOGRldmljZXMuY29tIiwic3ViIjoyMiwiaWF0IjoxNzU5NzMxMzk1LCJleHAiOjE3NjIzMjMzOTV9.C7XV-QHIsLPZTxavv1eU361p0KTpiEPfDv3AUTmAqG8" + tasks: # ---- Normalize metadata safely (no self-referential defaults) ---- - name: Normalize metadata (no clever transforms) @@ -139,7 +140,6 @@ ansible.builtin.set_fact: version_match: "{{ (target_version_effective | length > 0) and (target_version_effective in (banner_probe.stdout | default(''))) }}" - # ---- Read eth0 MAC (only after confirmed version match) ---- - name: Read eth0 MAC address via SSH when: nc_probe.rc == 0 and banner_probe.rc == 0 and (version_match | bool) @@ -166,6 +166,38 @@ ansible.builtin.debug: msg: "eth0_macaddress={{ eth0_macaddress }}" + # ---- Cloud bandwidth-control PATCH (only after match & MAC present) ---- + - name: Build URL-encoded MAC for cloud API + when: eth0_macaddress is defined and (version_match | bool) and nc_probe.rc == 0 and banner_probe.rc == 0 + ansible.builtin.set_fact: + enc_mac: "{{ eth0_macaddress | regex_replace(':', '%3A') }}" + + - name: PATCH bandwidth-control in cloud (egress 40 / ingress 10) + when: enc_mac is defined and (version_match | bool) and nc_probe.rc == 0 and banner_probe.rc == 0 + delegate_to: localhost + ansible.builtin.shell: | + set -e + curl -sS -L --request PATCH --post301 --post302 \ + "https://cloud.ikeja.co.za/v1/external/devices/{{ enc_mac }}/bandwidth-control" \ + --header "Authorization: Bearer {{ cloud_api_bearer }}" \ + --header "Content-Type: application/json" \ + --header "Accept: application/json" \ + --fail-with-body \ + --data '{"egress":{"isEnabled":true,"speedMbps":40},"ingress":{"isEnabled":true,"speedMbps":10}}' + register: cloud_patch + changed_when: false + ignore_errors: true + + - name: Flag cloud change result + when: enc_mac is defined and (version_match | bool) and nc_probe.rc == 0 and banner_probe.rc == 0 + ansible.builtin.set_fact: + cloud_change_ok: "{{ (cloud_patch is defined and (cloud_patch.rc | default(1)) == 0) }}" + + - name: Debug cloud change result + when: cloud_change_ok is defined + ansible.builtin.debug: + msg: "cloud_change={{ 'Ok' if cloud_change_ok else 'NOT ok' }}" + # ---- Journaling paths ---- # Success: banner matches expected full target_version - name: Build success journal payload @@ -179,6 +211,7 @@ afterupgrade_check SUCCESS (attempt {{ attempt }}/{{ effective_max_attempts }}): Banner='{{ (banner_probe.stdout | default('') | trim) }}' Target='{{ target_version_effective }}' Correlation={{ correlation_id }} Original={{ original_emitted_at }} + {{ 'cloud change Ok' if (cloud_change_ok | default(false)) else 'cloud change NOT ok' }} - name: Publish success journal to control queue when: journal_success_payload is defined