cinder-volume-pacemaker leapp upgrade with NFS

Follow up for I6deab809c88639cc00cd6497dec462ca667c636b which missed the
pacemaker version of the cinder-volume service.

Closes-Bug: rhbz#2237743
Change-Id: Id242ca962007306a4a9c82505ef2b1c628a15d87
This commit is contained in:
Oliver Walsh 2023-09-29 17:23:54 +01:00
parent e3b0a57041
commit e17b173f51

@ -267,143 +267,145 @@ outputs:
tripleo_ha_wrapper_minor_update: true tripleo_ha_wrapper_minor_update: true
upgrade_tasks: upgrade_tasks:
- name: Tear-down non-HA cinder_volume container list_concat:
when: - - name: Tear-down non-HA cinder_volume container
- step|int == 0 when:
block: *cinder_volume_teardown_nonha - step|int == 0
- name: Prepare switch of cinder_volume image name block: *cinder_volume_teardown_nonha
when: - name: Prepare switch of cinder_volume image name
- step|int == 0 when:
block: - step|int == 0
- name: Get cinder_volume image id currently used by pacemaker block:
shell: "pcs resource config openstack-cinder-volume | grep -Eo 'image=[^ ]+' | awk -F= '{print $2;}'" - name: Get cinder_volume image id currently used by pacemaker
register: cinder_volume_image_current_res shell: "pcs resource config openstack-cinder-volume | grep -Eo 'image=[^ ]+' | awk -F= '{print $2;}'"
failed_when: false register: cinder_volume_image_current_res
- name: cinder_volume image facts failed_when: false
set_fact: - name: cinder_volume image facts
cinder_volume_image_latest: *cinder_volume_image_pcmklatest set_fact:
cinder_volume_image_current: "{{cinder_volume_image_current_res.stdout}}" cinder_volume_image_latest: *cinder_volume_image_pcmklatest
- name: Temporarily tag the current cinder_volume image id with the upgraded image name cinder_volume_image_current: "{{cinder_volume_image_current_res.stdout}}"
import_role: - name: Temporarily tag the current cinder_volume image id with the upgraded image name
name: tripleo_container_tag import_role:
vars: name: tripleo_container_tag
container_image: "{{cinder_volume_image_current}}" vars:
container_image_latest: "{{cinder_volume_image_latest}}" container_image: "{{cinder_volume_image_current}}"
pull_image: false container_image_latest: "{{cinder_volume_image_latest}}"
when: pull_image: false
- cinder_volume_image_current != '' when:
- cinder_volume_image_current != cinder_volume_image_latest - cinder_volume_image_current != ''
# During an OS Upgrade, the cluster may not exist so we use - cinder_volume_image_current != cinder_volume_image_latest
# the shell module instead. # During an OS Upgrade, the cluster may not exist so we use
# TODO(odyssey4me): # the shell module instead.
# Fix the pacemaker_resource module to handle the exception # TODO(odyssey4me):
# for a non-existant cluster more gracefully. # Fix the pacemaker_resource module to handle the exception
- name: Check openstack-cinder-volume cluster resource status # for a non-existant cluster more gracefully.
shell: pcs resource config openstack-cinder-volume - name: Check openstack-cinder-volume cluster resource status
changed_when: false shell: pcs resource config openstack-cinder-volume
failed_when: false changed_when: false
register: cinder_volume_pcs_res_result failed_when: false
- name: Set fact cinder_volume_pcs_res register: cinder_volume_pcs_res_result
set_fact: - name: Set fact cinder_volume_pcs_res
cinder_volume_pcs_res: "{{cinder_volume_pcs_res_result.rc == 0}}" set_fact:
- name: set is_cinder_volume_bootstrap_node fact cinder_volume_pcs_res: "{{cinder_volume_pcs_res_result.rc == 0}}"
tags: common - name: set is_cinder_volume_bootstrap_node fact
set_fact: is_cinder_volume_bootstrap_node={{cinder_volume_short_bootstrap_node_name|lower == ansible_facts['hostname']|lower}} tags: common
- name: Update cinder_volume pcs resource bundle for new container image set_fact: is_cinder_volume_bootstrap_node={{cinder_volume_short_bootstrap_node_name|lower == ansible_facts['hostname']|lower}}
when: - name: Update cinder_volume pcs resource bundle for new container image
- step|int == 1 when:
- is_cinder_volume_bootstrap_node - step|int == 1
- cinder_volume_pcs_res|bool - is_cinder_volume_bootstrap_node
- cinder_volume_image_current != cinder_volume_image_latest - cinder_volume_pcs_res|bool
block: - cinder_volume_image_current != cinder_volume_image_latest
- name: Disable the cinder_volume cluster resource before container upgrade block:
pacemaker_resource: - name: Disable the cinder_volume cluster resource before container upgrade
resource: openstack-cinder-volume pacemaker_resource:
state: disable resource: openstack-cinder-volume
wait_for_resource: true state: disable
register: output wait_for_resource: true
retries: 5 register: output
until: output.rc == 0 retries: 5
- name: pcs resource bundle update cinder_volume for new container image name until: output.rc == 0
command: "pcs resource bundle update openstack-cinder-volume container image={{cinder_volume_image_latest}}" - name: pcs resource bundle update cinder_volume for new container image name
- name: Enable the cinder_volume cluster resource command: "pcs resource bundle update openstack-cinder-volume container image={{cinder_volume_image_latest}}"
pacemaker_resource: - name: Enable the cinder_volume cluster resource
resource: openstack-cinder-volume pacemaker_resource:
state: enable resource: openstack-cinder-volume
wait_for_resource: true state: enable
register: output wait_for_resource: true
retries: 5 register: output
until: output.rc == 0 retries: 5
- name: Create hiera data to upgrade cinder_volume in a stepwise manner. until: output.rc == 0
when: - name: Create hiera data to upgrade cinder_volume in a stepwise manner.
- step|int == 1 when:
- cluster_recreate|bool - step|int == 1
block: - cluster_recreate|bool
- name: set cinder_volume upgrade node facts in a single-node environment block:
set_fact: - name: set cinder_volume upgrade node facts in a single-node environment
cinder_volume_short_node_names_upgraded: "{{ cinder_volume_short_node_names }}" set_fact:
cinder_volume_node_names_upgraded: "{{ cinder_volume_node_names | default([]) }}" cinder_volume_short_node_names_upgraded: "{{ cinder_volume_short_node_names }}"
cacheable: no cinder_volume_node_names_upgraded: "{{ cinder_volume_node_names | default([]) }}"
when: groups['cinder_volume'] | length <= 1 cacheable: no
- name: set cinder_volume upgrade node facts from the limit option when: groups['cinder_volume'] | length <= 1
set_fact: - name: set cinder_volume upgrade node facts from the limit option
cinder_volume_short_node_names_upgraded: "{{ cinder_volume_short_node_names_upgraded|default([]) + [item.split('.')[0]] }}" set_fact:
cinder_volume_node_names_upgraded: "{{ cinder_volume_node_names_upgraded|default([]) + [item] }}" cinder_volume_short_node_names_upgraded: "{{ cinder_volume_short_node_names_upgraded|default([]) + [item.split('.')[0]] }}"
cacheable: no cinder_volume_node_names_upgraded: "{{ cinder_volume_node_names_upgraded|default([]) + [item] }}"
when: cacheable: no
- groups['cinder_volume'] | length > 1 when:
- item.split('.')[0] in ansible_limit.split(':') - groups['cinder_volume'] | length > 1
loop: "{{ cinder_volume_node_names | default([]) }}" - item.split('.')[0] in ansible_limit.split(':')
- fail: loop: "{{ cinder_volume_node_names | default([]) }}"
msg: > - fail:
You can't upgrade cinder_volume without msg: >
staged upgrade. You need to use the limit option in order You can't upgrade cinder_volume without
to do so. staged upgrade. You need to use the limit option in order
when: >- to do so.
cinder_volume_short_node_names_upgraded is not defined or when: >-
cinder_volume_short_node_names_upgraded | length == 0 or cinder_volume_short_node_names_upgraded is not defined or
cinder_volume_node_names_upgraded is not defined or cinder_volume_short_node_names_upgraded | length == 0 or
cinder_volume_node_names_upgraded | length == 0 cinder_volume_node_names_upgraded is not defined or
- debug: cinder_volume_node_names_upgraded | length == 0
msg: "Prepare cinder_volume upgrade for {{ cinder_volume_short_node_names_upgraded }}" - debug:
- name: remove cinder_volume init container on upgrade-scaleup to force re-init msg: "Prepare cinder_volume upgrade for {{ cinder_volume_short_node_names_upgraded }}"
include_role: - name: remove cinder_volume init container on upgrade-scaleup to force re-init
name: tripleo_container_rm include_role:
vars: name: tripleo_container_rm
tripleo_containers_to_rm: vars:
- cinder_volume_init_bundle tripleo_containers_to_rm:
when: - cinder_volume_init_bundle
- cinder_volume_short_node_names_upgraded | length > 1 when:
- name: add the cinder_volume short name to hiera data for the upgrade. - cinder_volume_short_node_names_upgraded | length > 1
include_role: - name: add the cinder_volume short name to hiera data for the upgrade.
name: tripleo_upgrade_hiera include_role:
tasks_from: set.yml name: tripleo_upgrade_hiera
vars: tasks_from: set.yml
tripleo_upgrade_key: cinder_volume_short_node_names_override vars:
tripleo_upgrade_value: "{{ cinder_volume_short_node_names_upgraded }}" tripleo_upgrade_key: cinder_volume_short_node_names_override
- name: add the cinder_volume long name to hiera data for the upgrade tripleo_upgrade_value: "{{ cinder_volume_short_node_names_upgraded }}"
include_role: - name: add the cinder_volume long name to hiera data for the upgrade
name: tripleo_upgrade_hiera include_role:
tasks_from: set.yml name: tripleo_upgrade_hiera
vars: tasks_from: set.yml
tripleo_upgrade_key: cinder_volume_node_names_override vars:
tripleo_upgrade_value: "{{ cinder_volume_node_names_upgraded }}" tripleo_upgrade_key: cinder_volume_node_names_override
- name: remove the extra hiera data needed for the upgrade. tripleo_upgrade_value: "{{ cinder_volume_node_names_upgraded }}"
include_role: - name: remove the extra hiera data needed for the upgrade.
name: tripleo_upgrade_hiera include_role:
tasks_from: remove.yml name: tripleo_upgrade_hiera
vars: tasks_from: remove.yml
tripleo_upgrade_key: "{{ item }}" vars:
loop: tripleo_upgrade_key: "{{ item }}"
- cinder_volume_short_node_names_override loop:
- cinder_volume_node_names_override - cinder_volume_short_node_names_override
when: cinder_volume_short_node_names_upgraded | length == cinder_volume_node_names | length - cinder_volume_node_names_override
- name: Retag the pacemaker image if containerized when: cinder_volume_short_node_names_upgraded | length == cinder_volume_node_names | length
when: - name: Retag the pacemaker image if containerized
- step|int == 3 when:
block: - step|int == 3
- block: *cinder_volume_container_image_facts block:
- block: *cinder_volume_fetch_retag_container_tasks - block: *cinder_volume_container_image_facts
- block: *cinder_volume_fetch_retag_container_tasks
- {get_attr: [CinderCommon, cinder_volume_upgrade_tasks]}
post_upgrade_tasks: post_upgrade_tasks:
- name: Start cinder_volume service (pacemaker) - name: Start cinder_volume service (pacemaker)