---
- name: Check whether Monasca is enabled
  hosts: overcloud
  gather_facts: False
  tags:
    - grafana
  tasks:
    - name: Create monitoring group with grafana enabled
      group_by:
        key: "monitoring_with_grafana_enabled_{{ kolla_enable_monasca | bool }}"
      changed_when: false

- name: Set the Monasca control plane project ID
  hosts: monitoring_with_grafana_enabled_True[0]
  tags:
    - grafana
  vars:
    venv: "{{ virtualenv_path }}/openstacksdk"
  pre_tasks:
    - name: Validate OpenStack password authentication parameters
      fail:
        msg: >
          Required OpenStack authentication parameter {{ item }} is
          {% if item in openstack_auth %}empty{% else %}not present{% endif %}
          in openstack_auth. Have you sourced the environment file?
      when:
        - openstack_auth_type == 'password'
        - item not in openstack_auth or not openstack_auth[item]
      with_items: "{{ openstack_auth_password_required_params }}"
      tags:
        - config-validation

  roles:
    - role: stackhpc.os-openstackclient
      os_openstackclient_venv: "{{ venv }}"
      os_openstackclient_install_epel: "{{ dnf_install_epel }}"
      os_openstackclient_state: latest
      os_openstackclient_upper_constraints_file: "{{ pip_upper_constraints_file }}"
      when: kolla_enable_monasca | bool

  tasks:
    - name: Look up Monasca control plane project ID
      shell: >
        . {{ venv }}/bin/activate &&
        openstack project show {{ monasca_control_plane_project }} --format json --column id
      register: monasca_project_show
      changed_when: False
      environment: "{{ openstack_auth_env }}"
      when: kolla_enable_monasca | bool

    - name: Set Monasca control plane ID
      set_fact:
        monasca_control_plane_project_id:  "{{ (monasca_project_show.stdout | from_json).get('id') }}"
      when: kolla_enable_monasca | bool

- name: Configure control plane monitoring for Grafana
  # Only required to run on a single host.
  hosts: monitoring_with_grafana_enabled_True[0]
  gather_facts: False
  tags:
    - grafana
  pre_tasks:
    - name: Include Kolla passwords for Grafana local admin account credentials
      include_vars: "{{ kayobe_env_config_path }}/kolla/passwords.yml"
  roles:
    - role: stackhpc.grafana-conf
      grafana_conf_organisation: "{{ grafana_control_plane_organisation }}"
      grafana_conf_grafana_admin_user: "{{ grafana_local_admin_user_name }}"
      grafana_conf_grafana_admin_pass: "{{ monasca_grafana_admin_password }}"
      grafana_conf_grafana_dashboard_repo:
        repo: "{{ grafana_monitoring_node_dashboard_repo }}"
        version: "{{ grafana_monitoring_node_dashboard_repo_version }}"
        checkout_path: "{{ grafana_monitoring_node_dashboard_repo_checkout_path }}"
        relative_path: "{{ grafana_monitoring_node_dashboard_repo_path }}"
      grafana_conf_grafana_url: "http://{{ kolla_internal_vip_address }}:{{ monasca_grafana_server_port }}"
      grafana_conf_grafana_datasources: "{{ grafana_datasources }}"
