--- # Copyright 2023, 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: Perform data migrations if necessary and all cinder services are up block: - name: Perform online data migrations command: "{{ cinder_bin }}/cinder-manage db online_data_migrations" register: data_migrations changed_when: false retries: 5 delay: 3 until: "data_migrations.rc in [0, 2]" rescue: - name: Check if all cinder services are up shell: "{{ cinder_bin }}/cinder-manage service list | /usr/bin/awk '{ if(NR>1) print $5 }' | /bin/egrep -vq ':-)'" register: failed_cinder_services changed_when: false ignore_errors: True - name: Fail if any cinder service is down fail: msg: At least one cinder service is down. You need to fix this before re-running the playbook. when: failed_cinder_services.rc != 1 - name: All cinder services are up, but migration failed nontheless. fail: msg: An unexpected error occured. when: failed_cinder_services.rc == 1 become: yes become_user: "{{ cinder_system_user_name }}" when: - "ansible_local['openstack_ansible']['cinder']['need_online_data_migrations'] | bool" - name: Disable the online migrations requirement delegate_to: "{{ item }}" ini_file: dest: "/etc/ansible/facts.d/openstack_ansible.fact" section: cinder option: need_online_data_migrations value: False mode: "0644" with_items: "{{ groups[cinder_services['cinder-api']['group']] }}" when: - not data_migrations is skipped - data_migrations is succeeded