---
# NOTE: We're not looping over the two inventory files to avoid having the file
# content displayed in the ansible-playbook output.

- name: Check whether the legacy Kolla overcloud inventory files exist
  stat:
    path: "{{ item }}"
    get_attributes: no
    get_checksum: no
    get_mime: no
  register: inventory_stat
  with_items:
    - "{{ kolla_seed_inventory_path }}"
    - "{{ kolla_overcloud_inventory_path }}"
  loop_control:
    label: "{{ item | basename }}"

- name: Ensure the legacy Kolla overcloud inventory file is absent
  file:
    path: "{{ item.item }}"
    state: absent
  with_items: "{{ inventory_stat.results }}"
  when:
    - item.stat.exists
    - item.stat.isreg
  loop_control:
    label: "{{ item.item | basename }}"

- name: Ensure the Kolla Ansible configuration directories exist
  file:
    path: "{{ item }}"
    state: directory
    owner: "{{ ansible_user_uid }}"
    group: "{{ ansible_user_gid }}"
    mode: 0750
  become: True
  with_items:
    - "{{ kolla_config_path }}"
    - "{{ kolla_seed_inventory_path }}/host_vars"
    - "{{ kolla_overcloud_inventory_path }}/host_vars"
    - "{{ kolla_node_custom_config_path }}"

- name: Ensure the Kolla global configuration file exists
  template:
    src: "globals.yml.j2"
    dest: "{{ kolla_config_path }}/globals.yml"
    mode: 0640

- name: Ensure the Kolla seed inventory file exists
  copy:
    content: "{{ kolla_seed_inventory }}"
    dest: "{{ kolla_seed_inventory_path }}/hosts"
    mode: 0640

- name: Ensure the Kolla seed host vars files exist
  template:
    src: host-vars.j2
    dest: "{{ kolla_seed_inventory_path }}/host_vars/{{ host }}"
    mode: 0640
  with_inventory_hostnames: "seed"
  vars:
    host_vars: "{{ kolla_seed_inventory_pass_through_host_vars }}"
    host_vars_map: "{{ kolla_seed_inventory_pass_through_host_vars_map }}"
  loop_control:
    loop_var: host

- name: Ensure the Kolla overcloud inventory file exists
  copy:
    content: "{{ kolla_overcloud_inventory }}"
    dest: "{{ kolla_overcloud_inventory_path }}/hosts"
    mode: 0640

- name: Ensure the Kolla overcloud host vars files exist
  template:
    src: host-vars.j2
    dest: "{{ kolla_overcloud_inventory_path }}/host_vars/{{ host }}"
    mode: 0640
  with_inventory_hostnames: "{{ kolla_overcloud_top_level_groups }}"
  vars:
    host_vars: "{{ kolla_overcloud_inventory_pass_through_host_vars }}"
    host_vars_map: "{{ kolla_overcloud_inventory_pass_through_host_vars_map }}"
  loop_control:
    loop_var: host

- name: Ensure the Kolla passwords file exists
  kolla_passwords:
    src: "{{ kolla_ansible_passwords_path }}"
    dest: "{{ kolla_ansible_passwords_path }}"
    mode: 0640
    sample: "{{ kolla_ansible_install_dir }}/etc_examples/kolla/passwords.yml"
    overrides: "{{ kolla_ansible_custom_passwords }}"
    vault_password: "{{ kolla_ansible_vault_password }}"
    virtualenv: "{{ kolla_ansible_venv or omit }}"

- name: Ensure the Kolla passwords file is copied into place
  copy:
    src: "{{ kolla_ansible_passwords_path }}"
    dest: "{{ kolla_config_path }}/passwords.yml"
    remote_src: True

- name: Ensure the HAProxy TLS certificate bundle is copied into place
  block:
    - file:
        path: "{{ kolla_external_fqdn_cert | dirname }}"
        state: directory
        recurse: yes
    - copy:
        content: "{{ kolla_tls_cert }}"
        dest: "{{ kolla_external_fqdn_cert }}"
  when:
    - kolla_tls_cert is not none
