try deferring all startup and registration tasks to handlers; skip if atl_startup_restart is false to match other products

This commit is contained in:
Lee Goolsbee
2024-04-04 11:08:18 -05:00
parent 9668c34b9d
commit b4b05f49f5
3 changed files with 34 additions and 40 deletions

View File

@@ -30,5 +30,8 @@
- role: product_common - role: product_common
- role: product_install - role: product_install
tags: [skip_on_stack_update] tags: [skip_on_stack_update]
# startup before config here so that the handlers from each role are
# executed in the right order at the end of the play; only task in startup
# is to create the systemd service file, so this should have no ill effects
- role: product_startup - role: product_startup
- role: bitbucket_mesh_config - role: bitbucket_mesh_config

View File

@@ -1,6 +1,13 @@
--- ---
# Handlers are executed in the order they are defined in the handlers section, not in the order listed in the notify statement. # Handlers are executed in the order they are defined in the handlers section, not in the order listed in the notify statement.
- name: Wait for Mesh to become available
ansible.builtin.wait_for:
port: "{{ mesh_node_port }}"
timeout: 300
delegate_to: localhost
become: false
- name: Register New Mesh Node - name: Register New Mesh Node
ansible.builtin.uri: ansible.builtin.uri:
url: '{{ atl_proxy_name }}/rest/api/latest/admin/git/mesh/nodes' url: '{{ atl_proxy_name }}/rest/api/latest/admin/git/mesh/nodes'
@@ -14,8 +21,6 @@
body: body:
name: "{{ mesh_node_name }}" name: "{{ mesh_node_name }}"
rpcUrl: "{{ mesh_node_scheme }}://{{ mesh_node_name }}.{{ atl_aws_stack_name }}-{{ ansible_ec2_placement_region }}.{{ atl_hostedzone }}:{{ mesh_node_port }}" rpcUrl: "{{ mesh_node_scheme }}://{{ mesh_node_name }}.{{ atl_aws_stack_name }}-{{ ansible_ec2_placement_region }}.{{ atl_hostedzone }}:{{ mesh_node_port }}"
changed_when: register_mesh_node_result.status == 200
notify: Stop Product
register: register_mesh_node_result register: register_mesh_node_result
until: register_mesh_node_result is not failed until: register_mesh_node_result is not failed
retries: 5 retries: 5
@@ -43,15 +48,6 @@
delay: 30 delay: 30
no_log: True no_log: True
- name: Stop Product
ansible.builtin.service:
name: "{{ atl_systemd_service_name }}"
state: stopped
when:
- not atl_startup_restart | bool
- molecule_yml is not defined
no_log: true
- name: Remove orphan_vol lease lock - name: Remove orphan_vol lease lock
ansible.builtin.file: ansible.builtin.file:
path: '{{ atl_shared_mountpoint }}/.{{ orphan_vol }}' path: '{{ atl_shared_mountpoint }}/.{{ orphan_vol }}'

View File

@@ -1,32 +1,4 @@
--- ---
- name: Enable and Start Mesh Product
ansible.builtin.service:
name: "{{ atl_systemd_service_name }}"
enabled: true
state: started
when:
- molecule_yml is not defined
no_log: true
- name: Wait for service to become available
ansible.builtin.wait_for:
port: "{{ mesh_node_port }}"
timeout: 300
delegate_to: localhost
become: false
- name: Trigger the handler to update this existing mesh node
ansible.builtin.assert:
that:
- mesh_nodes_report.json | community.general.json_query(query) | length == 0
changed_when: true
notify: Update Existing Mesh Node
when:
- bitbucket_cluster_available
- mesh_nodes_report.json | community.general.json_query(query) | length == 0
- (mesh_node_id is defined) and (mesh_node_id | length > 0)
vars:
query: "[?name=='{{ mesh_node_name }}']"
# if node.id doesnt exist this is new/clean mesh node and we need to register a new node # if node.id doesnt exist this is new/clean mesh node and we need to register a new node
- name: If this node is not registered, cleanup any old keys to allow registration of new - name: If this node is not registered, cleanup any old keys to allow registration of new
@@ -43,13 +15,36 @@
vars: vars:
query: "[?name=='{{ mesh_node_name }}']" query: "[?name=='{{ mesh_node_name }}']"
- name: Trigger the handler to update this existing mesh node
ansible.builtin.assert:
that:
- mesh_nodes_report.json | community.general.json_query(query) | length == 0
changed_when: true
notify:
- Enable Product
- Restart Product
- Wait for Mesh to become available
- Update Existing Mesh Node
when:
- atl_startup_restart | bool
- bitbucket_cluster_available
- mesh_nodes_report.json | community.general.json_query(query) | length == 0
- (mesh_node_id is defined) and (mesh_node_id | length > 0)
vars:
query: "[?name=='{{ mesh_node_name }}']"
- name: Trigger the handler to register this new mesh node - name: Trigger the handler to register this new mesh node
ansible.builtin.assert: ansible.builtin.assert:
that: that:
- mesh_nodes_report.json | community.general.json_query(query) | length == 0 - mesh_nodes_report.json | community.general.json_query(query) | length == 0
changed_when: true changed_when: true
notify: Register New Mesh Node notify:
- Enable Product
- Restart Product
- Wait for Mesh to become available
- Register New Mesh Node
when: when:
- atl_startup_restart | bool
- bitbucket_cluster_available - bitbucket_cluster_available
- mesh_nodes_report.json | community.general.json_query(query) | length == 0 - mesh_nodes_report.json | community.general.json_query(query) | length == 0
- (mesh_node_id is not defined) or (mesh_node_id | length == 0) - (mesh_node_id is not defined) or (mesh_node_id | length == 0)