From 945a22166c48079d903d88287870e0391b772f45 Mon Sep 17 00:00:00 2001 From: Jiri Stransky Date: Wed, 10 Jul 2019 15:24:13 +0200 Subject: [PATCH] Handle edge cases in staged upgrade hiera data We make sure the hiera is set in an either-or branches so that we prevent from executing both at the same time or none at all. Edge case 1 which is not that much of an edge case -- single-controller environment with Pacemaker. Previously we ran both branches resulting in duplicate entries. Edge case 2 -- having the service in roles data but having no node assigned to that role. In that case previously we wouldn't set the variables and the upgrade would fail. Change-Id: I1681a5e5ac7842500fc5e9dd0900ee6121773537 Partial-Bug: #1831690 (cherry picked from commit 2b427970a36a63cc2b9afbd61f10fe033287aca5) --- deployment/database/mysql-pacemaker-puppet.yaml | 6 ++++-- deployment/database/redis-pacemaker-puppet.yaml | 6 ++++-- deployment/haproxy/haproxy-pacemaker-puppet.yaml | 6 ++++-- .../rabbitmq-messaging-notify-pacemaker-puppet.yaml | 6 ++++-- .../rabbitmq/rabbitmq-messaging-pacemaker-puppet.yaml | 6 ++++-- .../rabbitmq/rabbitmq-messaging-rpc-pacemaker-puppet.yaml | 6 ++++-- puppet/services/pacemaker.yaml | 6 ++++-- 7 files changed, 28 insertions(+), 14 deletions(-) diff --git a/deployment/database/mysql-pacemaker-puppet.yaml b/deployment/database/mysql-pacemaker-puppet.yaml index edcd991880..21088bd2a1 100644 --- a/deployment/database/mysql-pacemaker-puppet.yaml +++ b/deployment/database/mysql-pacemaker-puppet.yaml @@ -417,13 +417,15 @@ outputs: mysql_short_node_names_upgraded: "{{ mysql_short_node_names }}" mysql_node_names_upgraded: "{{ mysql_node_names }}" cacheable: no - when: groups['mysql'] | length == 1 + when: groups['mysql'] | length <= 1 - name: set mysql upgrade node facts from the limit option set_fact: mysql_short_node_names_upgraded: "{{ mysql_short_node_names_upgraded|default([]) + [item.split('.')[0]] }}" mysql_node_names_upgraded: "{{ mysql_node_names_upgraded|default([]) + [item] }}" cacheable: no - when: item.split('.')[0] in ansible_limit.split(',') + when: + - groups['mysql'] | length > 1 + - item.split('.')[0] in ansible_limit.split(',') loop: "{{ mysql_node_names }}" - debug: diff --git a/deployment/database/redis-pacemaker-puppet.yaml b/deployment/database/redis-pacemaker-puppet.yaml index 07dba0e469..68146e74b7 100644 --- a/deployment/database/redis-pacemaker-puppet.yaml +++ b/deployment/database/redis-pacemaker-puppet.yaml @@ -355,12 +355,14 @@ outputs: set_fact: redis_short_node_names_upgraded: "{{ redis_short_node_names }}" cacheable: no - when: groups['redis'] | length == 1 + when: groups['redis'] | length <= 1 - name: set redis upgrade node facts from the limit option set_fact: redis_short_node_names_upgraded: "{{ redis_short_node_names_upgraded|default([]) + [item.split('.')[0]] }}" cacheable: no - when: item.split('.')[0] in ansible_limit.split(',') + when: + - groups['redis'] | length > 1 + - item.split('.')[0] in ansible_limit.split(',') loop: "{{ redis_short_node_names }}" - debug: diff --git a/deployment/haproxy/haproxy-pacemaker-puppet.yaml b/deployment/haproxy/haproxy-pacemaker-puppet.yaml index 8fa5ff667d..8100ae875f 100644 --- a/deployment/haproxy/haproxy-pacemaker-puppet.yaml +++ b/deployment/haproxy/haproxy-pacemaker-puppet.yaml @@ -437,12 +437,14 @@ outputs: set_fact: haproxy_short_node_names_upgraded: "{{ haproxy_short_node_names }}" cacheable: no - when: groups['haproxy'] | length == 1 + when: groups['haproxy'] | length <= 1 - name: set haproxy upgrade node facts from the limit option set_fact: haproxy_short_node_names_upgraded: "{{ haproxy_short_node_names_upgraded|default([]) + [item.split('.')[0]] }}" cacheable: no - when: item.split('.')[0] in ansible_limit.split(',') + when: + - groups['haproxy'] | length > 1 + - item.split('.')[0] in ansible_limit.split(',') loop: "{{ haproxy_short_node_names }}" - debug: diff --git a/deployment/rabbitmq/rabbitmq-messaging-notify-pacemaker-puppet.yaml b/deployment/rabbitmq/rabbitmq-messaging-notify-pacemaker-puppet.yaml index f4eaccec0f..61c9571271 100644 --- a/deployment/rabbitmq/rabbitmq-messaging-notify-pacemaker-puppet.yaml +++ b/deployment/rabbitmq/rabbitmq-messaging-notify-pacemaker-puppet.yaml @@ -316,13 +316,15 @@ outputs: oslo_messaging_notify_short_node_names_upgraded: "{{ oslo_messaging_notify_short_node_names }}" oslo_messaging_notify_node_names_upgraded: "{{ oslo_messaging_notify_node_names }}" cacheable: no - when: groups['oslo_messaging_notify'] | length == 1 + when: groups['oslo_messaging_notify'] | length <= 1 - name: set oslo_messaging_notify upgrade node facts from the limit option set_fact: oslo_messaging_notify_short_node_names_upgraded: "{{ oslo_messaging_notify_short_node_names_upgraded|default([]) + [item.split('.')[0]] }}" oslo_messaging_notify_node_names_upgraded: "{{ oslo_messaging_notify_node_names_upgraded|default([]) + [item] }}" cacheable: no - when: item.split('.')[0] in ansible_limit.split(',') + when: + - groups['oslo_messaging_notify'] | length > 1 + - item.split('.')[0] in ansible_limit.split(',') loop: "{{ oslo_messaging_notify_node_names }}" - debug: diff --git a/deployment/rabbitmq/rabbitmq-messaging-pacemaker-puppet.yaml b/deployment/rabbitmq/rabbitmq-messaging-pacemaker-puppet.yaml index 5482d197fa..04955bacca 100644 --- a/deployment/rabbitmq/rabbitmq-messaging-pacemaker-puppet.yaml +++ b/deployment/rabbitmq/rabbitmq-messaging-pacemaker-puppet.yaml @@ -314,12 +314,14 @@ outputs: set_fact: rabbitmq_short_node_names_upgraded: "{{ rabbitmq_short_node_names }}" cacheable: no - when: groups['rabbitmq'] | length == 1 + when: groups['rabbitmq'] | length <= 1 - name: set rabbitmq upgrade node facts from the limit option set_fact: rabbitmq_short_node_names_upgraded: "{{ rabbitmq_short_node_names_upgraded|default([]) + [item.split('.')[0]] }}" cacheable: no - when: item.split('.')[0] in ansible_limit.split(',') + when: + - groups['rabbitmq'] | length > 1 + - item.split('.')[0] in ansible_limit.split(',') loop: "{{ rabbitmq_short_node_names }}" - debug: diff --git a/deployment/rabbitmq/rabbitmq-messaging-rpc-pacemaker-puppet.yaml b/deployment/rabbitmq/rabbitmq-messaging-rpc-pacemaker-puppet.yaml index 205849ac11..a791cfb32c 100644 --- a/deployment/rabbitmq/rabbitmq-messaging-rpc-pacemaker-puppet.yaml +++ b/deployment/rabbitmq/rabbitmq-messaging-rpc-pacemaker-puppet.yaml @@ -315,13 +315,15 @@ outputs: oslo_messaging_rpc_short_node_names_upgraded: "{{ oslo_messaging_rpc_short_node_names }}" oslo_messaging_rpc_node_names_upgraded: "{{ oslo_messaging_rpc_node_names }}" cacheable: no - when: groups['oslo_messaging_rpc'] | length == 1 + when: groups['oslo_messaging_rpc'] | length <= 1 - name: set oslo_messaging_rpc upgrade node facts from the limit option set_fact: oslo_messaging_rpc_short_node_names_upgraded: "{{ oslo_messaging_rpc_short_node_names_upgraded|default([]) + [item.split('.')[0]] }}" oslo_messaging_rpc_node_names_upgraded: "{{ oslo_messaging_rpc_node_names_upgraded|default([]) + [item] }}" cacheable: no - when: item.split('.')[0] in ansible_limit.split(',') + when: + - groups['oslo_messaging_rpc'] | length > 1 + - item.split('.')[0] in ansible_limit.split(',') loop: "{{ oslo_messaging_rpc_node_names }}" - debug: diff --git a/puppet/services/pacemaker.yaml b/puppet/services/pacemaker.yaml index 311123b949..2ce32aaccf 100644 --- a/puppet/services/pacemaker.yaml +++ b/puppet/services/pacemaker.yaml @@ -183,12 +183,14 @@ outputs: set_fact: pacemaker_short_node_names_upgraded: "{{ pacemaker_short_node_names }}" cacheable: no - when: groups['pacemaker'] | length == 1 + when: groups['pacemaker'] | length <= 1 - name: set pacemaker upgrade node facts from the limit option set_fact: pacemaker_short_node_names_upgraded: "{{ pacemaker_short_node_names_upgraded|default([]) + [item.split('.')[0]] }}" cacheable: no - when: item.split('.')[0] in ansible_limit.split(',') + when: + - groups['pacemaker'] | length > 1 + - item.split('.')[0] in ansible_limit.split(',') loop: "{{ pacemaker_short_node_names }}" - debug: