---
- 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 }}"

- set_fact:
    custom_policy: []

- include: policy_item.yml
  vars:
    project_name: "{{ item.name }}"
  when: item.enabled | bool
  with_items:
    - { name: "ceilometer", enabled: "{{ enable_ceilometer }}" }
    - { name: "cinder", enabled: "{{ enable_cinder }}" }
    - { name: "congress", enabled: "{{ enable_congress }}" }
    - { name: "cloudkitty", enabled: "{{ enable_horizon_cloudkitty }}" }
    - { name: "designate", enabled: "{{ enable_horizon_designate }}" }
    - { name: "freezer", enabled: "{{ enable_horizon_freezer }}" }
    - { name: "glance", enabled: "{{ enable_glance }}" }
    - { name: "heat", enabled: "{{ enable_heat }}" }
    - { name: "ironic", enabled: "{{ enable_horizon_ironic }}" }
    - { name: "keystone", enabled: "{{ enable_keystone }}" }
    - { name: "karbor", enabled: "{{ enable_horizon_karbor }}" }
    - { name: "magnum", enabled: "{{ enable_horizon_magnum }}" }
    - { name: "manila", enabled: "{{ enable_horizon_manila }}" }
    - { name: "mistral", enabled: "{{ enable_horizon_mistral }}" }
    - { name: "murano", enabled: "{{ enable_horizon_murano }}" }
    - { name: "neutron", enabled: "{{ enable_neutron }}" }
    - { name: "nova", enabled: "{{ enable_nova }}" }
    - { name: "sahara", enabled: "{{ enable_horizon_sahara }}" }
    - { name: "searchlight", enabled: "{{ enable_horizon_searchlight }}" }
    - { name: "senlin", enabled: "{{ enable_horizon_senlin }}" }
    - { name: "solum", enabled: "{{ enable_horizon_solum }}" }
    - { 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"
  register: horizon_config_json
  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"
  register: horizon_conf
  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 local_settings
  become: true
  vars:
    horizon: "{{ horizon_services['horizon'] }}"
  template:
    src: "{{ item }}"
    dest: "{{ node_config_directory }}/horizon/local_settings"
    mode: "0660"
  with_first_found:
    - "{{ node_custom_config }}/horizon/{{ inventory_hostname }}/local_settings"
    - "{{ node_custom_config }}/horizon/local_settings"
    - "local_settings.j2"
  register: horizon_local_settings
  when:
    - horizon.enabled | bool
    - inventory_hostname in groups[horizon.group]
  notify:
    - Restart horizon container

- name: Copying over custom_local_settings
  become: true
  vars:
    horizon: "{{ horizon_services['horizon'] }}"
  template:
    src: "{{ item }}"
    dest: "{{ node_config_directory }}/horizon/custom_local_settings"
    mode: "0660"
  with_first_found:
    - "{{ node_custom_config }}/horizon/{{ inventory_hostname }}/custom_local_settings"
    - "{{ node_custom_config }}/horizon/custom_local_settings"
    - "custom_local_settings.j2"
  register: horizon_custom_local_settings
  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"
  register: policy_jsons
  when:
    - horizon.enabled | bool
    - inventory_hostname in groups[horizon.group]
  with_items: "{{ custom_policy }}"
  notify:
    - Restart horizon container

- name: Check horizon container
  vars:
    horizon: "{{ horizon_services['horizon'] }}"
  become: true
  kolla_docker:
    action: "compare_container"
    common_options: "{{ docker_common_options }}"
    name: "{{ horizon.container_name }}"
    image: "{{ horizon.image }}"
    environment: "{{ horizon.environment }}"
    volumes: "{{ horizon.volumes }}"
    dimensions: "{{ horizon.dimensions }}"
  register: check_horizon_container
  when:
    - kolla_action != "config"
    - inventory_hostname in groups[horizon.group]
    - horizon.enabled | bool
  notify:
    - Restart horizon container
