0933
This commit is contained in:
@@ -370,6 +370,14 @@
|
|||||||
effective_max_attempts: "{{ (max_attempts | default(3)) | int }}"
|
effective_max_attempts: "{{ (max_attempts | default(3)) | int }}"
|
||||||
correlation_id: "{{ correlation_id | default('') }}"
|
correlation_id: "{{ correlation_id | default('') }}"
|
||||||
original_emitted_at: "{{ original_emitted_at | default('') }}"
|
original_emitted_at: "{{ original_emitted_at | default('') }}"
|
||||||
|
is_run_by_effective: "{{ is_run_by | default('manual') }}"
|
||||||
|
|
||||||
|
|
||||||
|
- name: Debug is_run_by mode
|
||||||
|
ansible.builtin.debug:
|
||||||
|
msg:
|
||||||
|
- "is_run_by={{ is_run_by | default('UNSET') }}"
|
||||||
|
- "is_run_by_effective={{ is_run_by_effective }}"
|
||||||
|
|
||||||
- name: Compute read_ok flag based on firmware readout
|
- name: Compute read_ok flag based on firmware readout
|
||||||
delegate_to: localhost
|
delegate_to: localhost
|
||||||
@@ -641,6 +649,190 @@
|
|||||||
register: rmq_customfield_fw
|
register: rmq_customfield_fw
|
||||||
changed_when: (rmq_customfield_fw.json is defined) and (rmq_customfield_fw.json.routed | default(false) | bool)
|
changed_when: (rmq_customfield_fw.json is defined) and (rmq_customfield_fw.json.routed | default(false) | bool)
|
||||||
|
|
||||||
|
- name: Success publish action_state done
|
||||||
|
when: journal_success_payload is defined
|
||||||
|
delegate_to: localhost
|
||||||
|
ansible.builtin.uri:
|
||||||
|
url: "http://{{ rmq_host }}:{{ rmq_port }}/api/exchanges/{{ rmq_vhost | urlencode }}/{{ rmq_exchange | urlencode }}/publish"
|
||||||
|
method: POST
|
||||||
|
user: "{{ rmq_user }}"
|
||||||
|
password: "{{ rmq_pass }}"
|
||||||
|
force_basic_auth: true
|
||||||
|
status_code: 200
|
||||||
|
headers:
|
||||||
|
content-type: "application/json"
|
||||||
|
body_format: json
|
||||||
|
body:
|
||||||
|
properties:
|
||||||
|
content_type: "application/json"
|
||||||
|
routing_key: "{{ control_queue }}"
|
||||||
|
payload: "{{ { 'inscope_device': (ansible_hostname | default(inventory_hostname)), 'task_name': 'custom_field_set', 'task_add1': 'action_state', 'task_result': 'done' } | to_json }}"
|
||||||
|
payload_encoding: "string"
|
||||||
|
changed_when: false
|
||||||
|
|
||||||
|
- name: Success pause before NetBox wrapup custom fields
|
||||||
|
ansible.builtin.pause:
|
||||||
|
seconds: 1
|
||||||
|
delegate_to: localhost
|
||||||
|
changed_when: false
|
||||||
|
when: journal_success_payload is defined
|
||||||
|
|
||||||
|
- name: Success clear action_restart_timestamp
|
||||||
|
when: journal_success_payload is defined
|
||||||
|
delegate_to: localhost
|
||||||
|
ansible.builtin.uri:
|
||||||
|
url: "http://{{ rmq_host }}:{{ rmq_port }}/api/exchanges/{{ rmq_vhost | urlencode }}/{{ rmq_exchange | urlencode }}/publish"
|
||||||
|
method: POST
|
||||||
|
user: "{{ rmq_user }}"
|
||||||
|
password: "{{ rmq_pass }}"
|
||||||
|
force_basic_auth: true
|
||||||
|
status_code: 200
|
||||||
|
headers:
|
||||||
|
content-type: "application/json"
|
||||||
|
body_format: json
|
||||||
|
body:
|
||||||
|
properties:
|
||||||
|
content_type: "application/json"
|
||||||
|
routing_key: "{{ control_queue }}"
|
||||||
|
payload: "{{ { 'inscope_device': (ansible_hostname | default(inventory_hostname)), 'task_name': 'custom_field_set', 'task_add1': 'action_restart_timestamp', 'task_result': '' } | to_json }}"
|
||||||
|
payload_encoding: "string"
|
||||||
|
changed_when: false
|
||||||
|
|
||||||
|
- name: Success pause before NetBox wrapup custom fields
|
||||||
|
ansible.builtin.pause:
|
||||||
|
seconds: 1
|
||||||
|
delegate_to: localhost
|
||||||
|
changed_when: false
|
||||||
|
when: journal_success_payload is defined
|
||||||
|
|
||||||
|
- name: Success clear action_next
|
||||||
|
when: journal_success_payload is defined
|
||||||
|
delegate_to: localhost
|
||||||
|
ansible.builtin.uri:
|
||||||
|
url: "http://{{ rmq_host }}:{{ rmq_port }}/api/exchanges/{{ rmq_vhost | urlencode }}/{{ rmq_exchange | urlencode }}/publish"
|
||||||
|
method: POST
|
||||||
|
user: "{{ rmq_user }}"
|
||||||
|
password: "{{ rmq_pass }}"
|
||||||
|
force_basic_auth: true
|
||||||
|
status_code: 200
|
||||||
|
headers:
|
||||||
|
content-type: "application/json"
|
||||||
|
body_format: json
|
||||||
|
body:
|
||||||
|
properties:
|
||||||
|
content_type: "application/json"
|
||||||
|
routing_key: "{{ control_queue }}"
|
||||||
|
payload: "{{ { 'inscope_device': (ansible_hostname | default(inventory_hostname)), 'task_name': 'custom_field_set', 'task_add1': 'action_next', 'task_result': '' } | to_json }}"
|
||||||
|
payload_encoding: "string"
|
||||||
|
changed_when: false
|
||||||
|
|
||||||
|
- name: Success pause before NetBox wrapup custom fields
|
||||||
|
ansible.builtin.pause:
|
||||||
|
seconds: 1
|
||||||
|
delegate_to: localhost
|
||||||
|
changed_when: false
|
||||||
|
when: journal_success_payload is defined
|
||||||
|
|
||||||
|
- name: Success clear action_next_timestamp
|
||||||
|
when: journal_success_payload is defined
|
||||||
|
delegate_to: localhost
|
||||||
|
ansible.builtin.uri:
|
||||||
|
url: "http://{{ rmq_host }}:{{ rmq_port }}/api/exchanges/{{ rmq_vhost | urlencode }}/{{ rmq_exchange | urlencode }}/publish"
|
||||||
|
method: POST
|
||||||
|
user: "{{ rmq_user }}"
|
||||||
|
password: "{{ rmq_pass }}"
|
||||||
|
force_basic_auth: true
|
||||||
|
status_code: 200
|
||||||
|
headers:
|
||||||
|
content-type: "application/json"
|
||||||
|
body_format: json
|
||||||
|
body:
|
||||||
|
properties:
|
||||||
|
content_type: "application/json"
|
||||||
|
routing_key: "{{ control_queue }}"
|
||||||
|
payload: "{{ { 'inscope_device': (ansible_hostname | default(inventory_hostname)), 'task_name': 'custom_field_set', 'task_add1': 'action_next_timestamp', 'task_result': '' } | to_json }}"
|
||||||
|
payload_encoding: "string"
|
||||||
|
changed_when: false
|
||||||
|
|
||||||
|
- name: Success pause before NetBox wrapup custom fields
|
||||||
|
ansible.builtin.pause:
|
||||||
|
seconds: 3
|
||||||
|
delegate_to: localhost
|
||||||
|
changed_when: false
|
||||||
|
when: journal_success_payload is defined
|
||||||
|
|
||||||
|
- name: Build cleanup control payload update_cleanup_success
|
||||||
|
when: journal_success_payload is defined
|
||||||
|
delegate_to: localhost
|
||||||
|
ansible.builtin.set_fact:
|
||||||
|
control_cleanup_payload:
|
||||||
|
inscope_device: "{{ ansible_hostname | default(inventory_hostname) }}"
|
||||||
|
task_name: "update_cleanup_success"
|
||||||
|
|
||||||
|
- name: Publish cleanup control message to control queue
|
||||||
|
when: control_cleanup_payload is defined
|
||||||
|
delegate_to: localhost
|
||||||
|
ansible.builtin.uri:
|
||||||
|
url: "http://{{ rmq_host }}:{{ rmq_port }}/api/exchanges/{{ rmq_vhost | urlencode }}/{{ rmq_exchange | urlencode }}/publish"
|
||||||
|
method: POST
|
||||||
|
user: "{{ rmq_user }}"
|
||||||
|
password: "{{ rmq_pass }}"
|
||||||
|
force_basic_auth: true
|
||||||
|
status_code: 200
|
||||||
|
headers:
|
||||||
|
content-type: "application/json"
|
||||||
|
body_format: json
|
||||||
|
body:
|
||||||
|
properties:
|
||||||
|
content_type: "application/json"
|
||||||
|
routing_key: "{{ control_queue }}"
|
||||||
|
payload: "{{ control_cleanup_payload | to_json }}"
|
||||||
|
payload_encoding: "string"
|
||||||
|
register: rmq_cleanup_success
|
||||||
|
changed_when: (rmq_cleanup_success.json is defined) and (rmq_cleanup_success.json.routed | default(false) | bool)
|
||||||
|
|
||||||
|
- name: Scheduled success set action_next to sot-updater-wrapper
|
||||||
|
when: journal_success_payload is defined and (is_run_by_effective | default('manual')) == 'scheduler'
|
||||||
|
delegate_to: localhost
|
||||||
|
ansible.builtin.uri:
|
||||||
|
url: "http://{{ rmq_host }}:{{ rmq_port }}/api/exchanges/{{ rmq_vhost | urlencode }}/{{ rmq_exchange | urlencode }}/publish"
|
||||||
|
method: POST
|
||||||
|
user: "{{ rmq_user }}"
|
||||||
|
password: "{{ rmq_pass }}"
|
||||||
|
force_basic_auth: true
|
||||||
|
status_code: 200
|
||||||
|
headers:
|
||||||
|
content-type: "application/json"
|
||||||
|
body_format: json
|
||||||
|
body:
|
||||||
|
properties:
|
||||||
|
content_type: "application/json"
|
||||||
|
routing_key: "{{ control_queue }}"
|
||||||
|
payload: "{{ { 'inscope_device': (ansible_hostname | default(inventory_hostname)), 'task_name': 'custom_field_set', 'task_add1': 'action_next', 'task_result': 'sot-updater-wrapper' } | to_json }}"
|
||||||
|
payload_encoding: "string"
|
||||||
|
changed_when: false
|
||||||
|
|
||||||
|
- name: Scheduled success publish sot-updater-wrapper work message
|
||||||
|
when: journal_success_payload is defined and (is_run_by_effective | default('manual')) == 'scheduler'
|
||||||
|
delegate_to: localhost
|
||||||
|
ansible.builtin.uri:
|
||||||
|
url: "http://{{ rmq_host }}:{{ rmq_port }}/api/exchanges/{{ rmq_vhost | urlencode }}/{{ 'deviceconfig' | urlencode }}/publish"
|
||||||
|
method: POST
|
||||||
|
user: "{{ rmq_user }}"
|
||||||
|
password: "{{ rmq_pass }}"
|
||||||
|
force_basic_auth: true
|
||||||
|
status_code: 200
|
||||||
|
headers:
|
||||||
|
content-type: "application/json"
|
||||||
|
body_format: json
|
||||||
|
body:
|
||||||
|
properties:
|
||||||
|
content_type: "application/json"
|
||||||
|
routing_key: "deviceconfig"
|
||||||
|
payload: "{{ { 'inscope_device': (ansible_hostname | default(inventory_hostname)), 'task_name': 'sot-updater-wrapper' } | to_json }}"
|
||||||
|
payload_encoding: "string"
|
||||||
|
changed_when: false
|
||||||
|
|
||||||
# MISMATCH path
|
# MISMATCH path
|
||||||
- name: Build journal payload for version mismatch after upgrade
|
- name: Build journal payload for version mismatch after upgrade
|
||||||
when: (read_ok | bool) and (not (version_match | bool))
|
when: (read_ok | bool) and (not (version_match | bool))
|
||||||
@@ -676,6 +868,34 @@
|
|||||||
register: rmq_j_mismatch
|
register: rmq_j_mismatch
|
||||||
changed_when: (rmq_j_mismatch.json is defined) and (rmq_j_mismatch.json.routed | default(false) | bool)
|
changed_when: (rmq_j_mismatch.json is defined) and (rmq_j_mismatch.json.routed | default(false) | bool)
|
||||||
|
|
||||||
|
- name: Failure pause before action_state failed mismatch
|
||||||
|
ansible.builtin.pause:
|
||||||
|
seconds: 1
|
||||||
|
delegate_to: localhost
|
||||||
|
changed_when: false
|
||||||
|
when: journal_mismatch_payload is defined
|
||||||
|
|
||||||
|
- name: Failure publish action_state failed mismatch
|
||||||
|
when: journal_mismatch_payload is defined
|
||||||
|
delegate_to: localhost
|
||||||
|
ansible.builtin.uri:
|
||||||
|
url: "http://{{ rmq_host }}:{{ rmq_port }}/api/exchanges/{{ rmq_vhost | urlencode }}/{{ rmq_exchange | urlencode }}/publish"
|
||||||
|
method: POST
|
||||||
|
user: "{{ rmq_user }}"
|
||||||
|
password: "{{ rmq_pass }}"
|
||||||
|
force_basic_auth: true
|
||||||
|
status_code: 200
|
||||||
|
headers:
|
||||||
|
content-type: "application/json"
|
||||||
|
body_format: json
|
||||||
|
body:
|
||||||
|
properties:
|
||||||
|
content_type: "application/json"
|
||||||
|
routing_key: "{{ control_queue }}"
|
||||||
|
payload: "{{ { 'inscope_device': (ansible_hostname | default(inventory_hostname)), 'task_name': 'custom_field_set', 'task_add1': 'action_state', 'task_result': 'failed' } | to_json }}"
|
||||||
|
payload_encoding: "string"
|
||||||
|
changed_when: false
|
||||||
|
|
||||||
- name: Stop host after mismatch path is handled
|
- name: Stop host after mismatch path is handled
|
||||||
when: journal_mismatch_payload is defined
|
when: journal_mismatch_payload is defined
|
||||||
ansible.builtin.meta: end_host
|
ansible.builtin.meta: end_host
|
||||||
@@ -754,6 +974,34 @@
|
|||||||
register: rmq_pub_gaveup
|
register: rmq_pub_gaveup
|
||||||
changed_when: (rmq_pub_gaveup.json is defined) and (rmq_pub_gaveup.json.routed | default(false) | bool)
|
changed_when: (rmq_pub_gaveup.json is defined) and (rmq_pub_gaveup.json.routed | default(false) | bool)
|
||||||
|
|
||||||
|
- name: Failure pause before action_state failed gaveup
|
||||||
|
ansible.builtin.pause:
|
||||||
|
seconds: 1
|
||||||
|
delegate_to: localhost
|
||||||
|
changed_when: false
|
||||||
|
when: journal_gaveup_payload is defined
|
||||||
|
|
||||||
|
- name: Failure publish action_state failed gaveup
|
||||||
|
when: journal_gaveup_payload is defined
|
||||||
|
delegate_to: localhost
|
||||||
|
ansible.builtin.uri:
|
||||||
|
url: "http://{{ rmq_host }}:{{ rmq_port }}/api/exchanges/{{ rmq_vhost | urlencode }}/{{ rmq_exchange | urlencode }}/publish"
|
||||||
|
method: POST
|
||||||
|
user: "{{ rmq_user }}"
|
||||||
|
password: "{{ rmq_pass }}"
|
||||||
|
force_basic_auth: true
|
||||||
|
status_code: 200
|
||||||
|
headers:
|
||||||
|
content-type: "application/json"
|
||||||
|
body_format: json
|
||||||
|
body:
|
||||||
|
properties:
|
||||||
|
content_type: "application/json"
|
||||||
|
routing_key: "{{ control_queue }}"
|
||||||
|
payload: "{{ { 'inscope_device': (ansible_hostname | default(inventory_hostname)), 'task_name': 'custom_field_set', 'task_add1': 'action_state', 'task_result': 'failed' } | to_json }}"
|
||||||
|
payload_encoding: "string"
|
||||||
|
changed_when: false
|
||||||
|
|
||||||
# Only schedule next attempt if budget left
|
# Only schedule next attempt if budget left
|
||||||
- name: Build delayed payload for next indoor attempt wait ten minutes
|
- name: Build delayed payload for next indoor attempt wait ten minutes
|
||||||
when: (not (read_ok | bool)) and ((attempt | int) < (effective_max_attempts | int))
|
when: (not (read_ok | bool)) and ((attempt | int) < (effective_max_attempts | int))
|
||||||
|
|||||||
Reference in New Issue
Block a user