---
- import_role:
    name: service-precheck
  vars:
    service_precheck_services: "{{ cinder_services }}"
    service_name: "{{ project_name }}"

- name: Get container facts
  become: true
  kolla_container_facts:
    container_engine: "{{ kolla_container_engine }}"
    name:
      - cinder_api
  check_mode: false
  register: container_facts

- name: Checking free port for Cinder API
  wait_for:
    host: "{{ api_interface_address }}"
    port: "{{ cinder_api_listen_port }}"
    connect_timeout: 1
    timeout: 1
    state: stopped
  when:
    - container_facts['cinder_api'] is not defined
    - inventory_hostname in groups['cinder-api']

- name: Checking at least one valid backend is enabled for Cinder
  run_once: True
  fail:
    msg: "Please enable at least one backend when enabling Cinder"
  when:
    - not skip_cinder_backend_check | bool
    - not enable_cinder_backend_hnas_nfs | bool
    - not enable_cinder_backend_iscsi | bool
    - not enable_cinder_backend_lvm | bool
    - not enable_cinder_backend_nfs | bool
    - not cinder_backend_ceph | bool
    - not cinder_backend_vmwarevc_vmdk | bool
    - not cinder_backend_vmware_vstorage_object | bool
    - not enable_cinder_backend_quobyte | bool
    - not enable_cinder_backend_pure_iscsi | bool
    - not enable_cinder_backend_pure_fc | bool
    - not enable_cinder_backend_pure_roce | bool

- name: Checking LVM volume group exists for Cinder
  become: true
  command: "vgs {{ cinder_volume_group }}"
  register: result
  changed_when: false
  failed_when: result is failed
  check_mode: false
  when:
    - enable_cinder | bool
    - enable_cinder_backend_lvm | bool
    - inventory_hostname in groups['cinder-volume']

- name: Check if S3 configurations are defined
  assert:
    that:
      - vars[item] is defined
    msg: "Cinder backup S3 backend is enabled, either the {{ item }} or {{ item | replace('cinder_backup_', '') }} variable must be defined."
  with_items:
    - cinder_backup_s3_url
    - cinder_backup_s3_bucket
    - cinder_backup_s3_access_key
    - cinder_backup_s3_secret_key
  when: cinder_backup_driver == "s3"
