---
- name: Ensuring config directories exist
  become: true
  file:
    path: "{{ node_config_directory }}/{{ item.key }}"
    state: "directory"
    owner: "{{ config_owner_user }}"
    group: "{{ config_owner_group }}"
    mode: "0770"
  when:
    - inventory_hostname in groups[item.value.group]
    - item.value.enabled | bool
  with_dict: "{{ horizon_services }}"

- name: Set empty custom policy
  set_fact:
    custom_policy: []

- include_tasks: policy_item.yml
  vars:
    project_name: "{{ item.name }}"
  when: item.enabled | bool
  with_items:
    - { name: "ceilometer", enabled: "{{ enable_ceilometer_horizon_policy_file }}" }
    - { name: "cinder", enabled: "{{ enable_cinder_horizon_policy_file }}" }
    - { name: "cloudkitty", enabled: "{{ enable_horizon_cloudkitty }}" }
    - { name: "designate", enabled: "{{ enable_horizon_designate }}" }
    - { name: "glance", enabled: "{{ enable_glance_horizon_policy_file }}" }
    - { name: "heat", enabled: "{{ enable_heat_horizon_policy_file }}" }
    - { name: "ironic", enabled: "{{ enable_horizon_ironic }}" }
    - { name: "keystone", enabled: "{{ enable_keystone_horizon_policy_file }}" }
    - { name: "magnum", enabled: "{{ enable_horizon_magnum }}" }
    - { name: "manila", enabled: "{{ enable_horizon_manila }}" }
    - { name: "masakari", enabled: "{{ enable_horizon_masakari }}" }
    - { name: "mistral", enabled: "{{ enable_horizon_mistral }}" }
    - { name: "neutron", enabled: "{{ enable_neutron_horizon_policy_file }}" }
    - { name: "nova", enabled: "{{ enable_nova_horizon_policy_file }}" }
    - { name: "octavia", enabled: "{{ enable_horizon_octavia }}" }
    - { name: "tacker", enabled: "{{ enable_horizon_tacker }}" }
    - { name: "trove", enabled: "{{ enable_horizon_trove }}" }
    - { name: "watcher", enabled: "{{ enable_horizon_watcher }}" }

- name: Copying over config.json files for services
  become: true
  vars:
    horizon: "{{ horizon_services['horizon'] }}"
  template:
    src: "horizon.json.j2"
    dest: "{{ node_config_directory }}/horizon/config.json"
    mode: "0660"
  when:
    - horizon.enabled | bool
    - inventory_hostname in groups[horizon.group]
  notify:
    - Restart horizon container

- name: Copying over horizon.conf
  become: true
  vars:
    horizon: "{{ horizon_services['horizon'] }}"
  template:
    src: "{{ item }}"
    dest: "{{ node_config_directory }}/horizon/horizon.conf"
    mode: "0660"
  with_first_found:
    - "{{ node_custom_config }}/horizon/{{ inventory_hostname }}/horizon.conf"
    - "{{ node_custom_config }}/horizon/horizon.conf"
    - "horizon.conf.j2"
  when:
    - horizon.enabled | bool
    - inventory_hostname in groups[horizon.group]
  notify:
    - Restart horizon container

- name: Copying over kolla-settings.py
  become: true
  vars:
    horizon: "{{ horizon_services['horizon'] }}"
  template:
    src: "{{ item }}"
    dest: "{{ node_config_directory }}/horizon/_9998-kolla-settings.py"
    mode: "0660"
  with_first_found:
    - "{{ node_custom_config }}/horizon/{{ inventory_hostname }}/_9998-kolla-settings.py"
    - "{{ node_custom_config }}/horizon/_9998-kolla-settings.py"
    - "_9998-kolla-settings.py.j2"
  when:
    - horizon.enabled | bool
    - inventory_hostname in groups[horizon.group]
  notify:
    - Restart horizon container

- name: Copying over custom-settings.py
  become: true
  vars:
    horizon: "{{ horizon_services['horizon'] }}"
  template:
    src: "{{ item }}"
    dest: "{{ node_config_directory }}/horizon/_9999-custom-settings.py"
    mode: "0660"
  with_first_found:
    - "{{ node_custom_config }}/horizon/{{ inventory_hostname }}/_9999-custom-settings.py"
    - "{{ node_custom_config }}/horizon/_9999-custom-settings.py"
    - "_9999-custom-settings.py.j2"
  when:
    - horizon.enabled | bool
    - inventory_hostname in groups[horizon.group]
  notify:
    - Restart horizon container

- name: Copying over existing policy file
  become: true
  vars:
    horizon: "{{ horizon_services['horizon'] }}"
  template:
    src: "{{ item }}"
    dest: "{{ node_config_directory }}/horizon/{{ item | basename }}"
    mode: "0660"
  when:
    - horizon.enabled | bool
    - inventory_hostname in groups[horizon.group]
  with_items: "{{ custom_policy }}"
  notify:
    - Restart horizon container

- name: Copying over custom themes
  become: true
  vars:
    horizon: "{{ horizon_services['horizon'] }}"
  copy:
    src: "{{ node_custom_config }}/horizon/themes/{{ item.name }}"
    dest: "{{ node_config_directory }}/horizon/themes/"
    mode: 0660
  when:
    - horizon.enabled | bool
    - inventory_hostname in groups[horizon.group]
    - horizon_custom_themes | length > 0
  with_items: "{{ horizon_custom_themes }}"
  notify:
    - Restart horizon container

- include_tasks: copy-certs.yml
  when:
    - kolla_copy_ca_into_containers | bool or horizon_enable_tls_backend | bool
