Merge "Move verification of cluster_state to a separate file"
This commit is contained in:
3 changed files with 59 additions and 34 deletions
@@ -82,14 +82,30 @@
- name:Flush handlers
meta:flush_handlers
- name:Importing rabbitmq_feature_flags tasks
include_tasks:rabbitmq_feature_flags.yml
args:
apply:
tags:
- rabbitmq-upgrade
tags:
- rabbitmq-upgrade
- name:Ensure all flags are set after upgrade is done
when:
- _rabbitmq_is_last_play_host
- rabbitmq_upgrade
block:
- name:Including rabbitmq_cluster_state tasks
include_tasks:rabbitmq_cluster_state.yml
args:
apply:
tags:
- rabbitmq-upgrade
tags:
- rabbitmq-upgrade
- name:Importing rabbitmq_feature_flags tasks
include_tasks:rabbitmq_feature_flags.yml
args:
apply:
tags:
- rabbitmq-upgrade
tags:
- rabbitmq-upgrade
when:
- _cluster_state
- (_cluster_state.get('running_nodes', []) | length) == (groups[rabbitmq_host_group] | length)
- (_cluster_state.get('alarms', []) | length) == 0
- (_cluster_state.get('partitions', []) | length) == 0
24
tasks/rabbitmq_cluster_state.yml
Normal file
24
tasks/rabbitmq_cluster_state.yml
Normal file
@@ -0,0 +1,24 @@
---
# Copyright 2024, Cleura AB
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
- name:"Gather cluster status"
command:"rabbitmqctl cluster_status --formatter json"
register:_cluster_status
changed_when:False
failed_when:False
- name:Define cluster_state fact
set_fact:
_cluster_state:"{{ (_cluster_status.rc == 0) | ternary(_cluster_status.stdout, {} | string) | from_json }}"
@@ -13,32 +13,17 @@
# See the License for the specific language governing permissions and
# limitations under the License.
- name:"Gather cluster status"
command:"rabbitmqctl cluster_status --formatter json"
register:_cluster_status
- name:"Check for disabled RabbitMQ feature flags"
command:"rabbitmqctl list_feature_flags --formatter json name state stability"
register:_feature_flags
changed_when:False
failed_when:False
tags:
- rabbitmq-upgrade
- name:"Only enable feature flags if all cluster members are up and stable"
block:
- name:"Check for disabled RabbitMQ feature flags"
command:"rabbitmqctl list_feature_flags --formatter json name state stability"
register:_feature_flags
changed_when:False
failed_when:False
- name:"Enable missing RabbitMQ feature flags"
command:"rabbitmqctl enable_feature_flag {{ flag['name'] }}"
changed_when:True
loop:"{{ _feature_flags.stdout | from_json | rejectattr('stability', 'eq', 'experimental') | selectattr('state', 'eq', 'disabled') }}"
loop_control:
loop_var:flag
when:
- _cluster_status.rc == 0
- ((_cluster_status.stdout | from_json)['running_nodes'] | length) == (groups[rabbitmq_host_group] | length)
- ((_cluster_status.stdout | from_json)['alarms'] | length) == 0
- ((_cluster_status.stdout | from_json)['partitions'] | length) == 0
tags:
- rabbitmq-upgrade
# NOTE: changed_when required despite the above check because 'unstable'
# feature flags will remain disabled each time this runs
- name:"Enable missing RabbitMQ feature flags"
command:"rabbitmqctl enable_feature_flag {{ flag['name'] }}"
changed_when:False
loop:"{{ _feature_flags.stdout | from_json | rejectattr('stability', 'eq', 'experimental') | selectattr('state', 'eq', 'disabled') }}"
loop_control:
loop_var:flag
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.