{"id":871,"sha1":"e8051873ed9300d9e8a924e575035dc02350ba20","playbook":{"id":4,"items":{"plays":107,"tasks":2438,"results":2413,"hosts":13,"files":511,"records":0},"arguments":{"version":null,"verbosity":0,"private_key_file":null,"remote_user":null,"connection":"openstack.osa.ssh","timeout":null,"ssh_common_args":null,"sftp_extra_args":null,"scp_extra_args":null,"ssh_extra_args":null,"ask_pass":false,"connection_password_file":null,"force_handlers":true,"flush_cache":false,"become":false,"become_method":"sudo","become_user":null,"become_ask_pass":false,"become_password_file":null,"tags":["all"],"skip_tags":[],"check":false,"diff":false,"inventory":["/home/zuul/src/opendev.org/openstack/openstack-ansible/inventory/dynamic_inventory.py","/home/zuul/src/opendev.org/openstack/openstack-ansible/inventory/inventory.ini","/etc/openstack_deploy/inventory.ini"],"listhosts":false,"subset":null,"extra_vars":"Not saved by ARA as configured by 'ignored_arguments'","vault_ids":[],"ask_vault_pass":false,"vault_password_files":[],"forks":4,"module_path":null,"syntax":false,"listtasks":false,"listtags":false,"step":false,"start_at_task":null,"args":["setup-openstack.yml"]},"labels":[{"id":1,"name":"check:False"},{"id":2,"name":"tags:all"}],"started":"2025-12-14T10:21:40.790759Z","ended":"2025-12-14T11:05:36.775743Z","duration":"00:43:55.984984","name":null,"ansible_version":"2.18.6","client_version":"1.7.4","python_version":"3.13.5","server_version":"1.7.4","status":"completed","path":"/home/zuul/src/opendev.org/openstack/openstack-ansible/playbooks/setup-openstack.yml","controller":"aio1.openstack.local","user":"root"},"content":"---\n# Copyright 2014, Rackspace US, Inc.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n- name: Ensure cinder api is available\n  ansible.builtin.uri:\n    url: \"{{ cinder_service_v3_internaluri }}\"\n    status_code: 200,300\n    validate_certs: \"{{ not keystone_service_internaluri_insecure | bool }}\"\n  register: api_status\n  until: api_status  is success\n  retries: 10\n  delay: 10\n\n# TODO(odyssey4me):\n# Once these tasks can be replaced by using Ansible modules instead,\n# we should do that and use the delegation to the service setup host\n# so that we can remove the openrc file from the target host.\n- name: Implement openrc/clouds.yaml\n  ansible.builtin.import_role:\n    name: \"openstack_openrc\"\n\n- name: Create singular cinder_backends variable for all hosts\n  ansible.builtin.set_fact:\n    _cinder_backends: \"{{ (_cinder_backends | default(cinder_backends | default({}))) | combine(hostvars[item]['cinder_backends'] | default({})) }}\"\n  with_items: \"{{ groups[cinder_services['cinder-volume']['group']] }}\"\n\n- name: Add in cinder devices types\n  ansible.builtin.shell: |\n    . {{ ansible_facts['env']['HOME'] }}/openrc\n    CLI_OPTIONS=\"{{ ((keystone_service_adminuri_insecure | bool) or (keystone_service_internaluri_insecure | bool)) | ternary('--insecure', '') }}\"\n    if ! {{ __cinder_python_interpreter_dirname }}/openstack ${CLI_OPTIONS} volume type show \"{{ item.key }}\"; then\n      {{ __cinder_python_interpreter_dirname }}/openstack ${CLI_OPTIONS} volume type create \\\n        --property volume_backend_name=\"{{ item.value.volume_backend_name }}\" \\\n        {% if not (item.value.public | default(True)) | bool %} --private {% endif %} \"{{ item.key }}\"\n    fi\n  args:\n    executable: /bin/bash\n  vars:\n    __cinder_python_interpreter_dirname: \"{{ cinder_service_setup_host_python_interpreter | dirname }}\"\n  with_dict: \"{{ _cinder_backends | default({}) }}\"\n  delegate_to: \"{{ cinder_service_setup_host }}\"\n  changed_when: false\n\n- name: Add extra cinder volume types\n  ansible.builtin.shell: |\n    . {{ ansible_facts['env']['HOME'] }}/openrc\n    CLI_OPTIONS=\"{{ ((keystone_service_adminuri_insecure | bool) or (keystone_service_internaluri_insecure | bool)) | ternary('--insecure', '') }}\"\n    {% for evtype in item.value.extra_volume_types %}\n      if ! {{ __cinder_python_interpreter_dirname }}/openstack ${CLI_OPTIONS} volume type show \"{{ evtype }}\"; then\n        {{ __cinder_python_interpreter_dirname }}/openstack ${CLI_OPTIONS} volume type create \\\n          --property volume_backend_name=\"{{ item.value.volume_backend_name }}\" \\\n          {% if not (item.value.public | default(True)) | bool %} --private {% endif %} \"{{ evtype }}\"\n      fi\n    {% endfor %}\n  args:\n    executable: /bin/bash\n  vars:\n    __cinder_python_interpreter_dirname: \"{{ cinder_service_setup_host_python_interpreter | dirname }}\"\n  changed_when: false\n  with_dict: \"{{ _cinder_backends | default({}) }}\"\n  delegate_to: \"{{ cinder_service_setup_host }}\"\n  when: item.value.extra_volume_types is defined\n\n- name: Importing cinder_qos tasks\n  ansible.builtin.import_tasks: cinder_qos.yml\n  when: cinder_qos_specs is defined\n  tags:\n    - cinder-qos\n","created":"2025-12-14T10:37:22.939764Z","updated":"2025-12-14T10:37:22.939776Z","path":"/home/zuul/src/opendev.org/openstack/openstack-ansible-os_cinder/tasks/cinder_backends.yml"}