c5d1e1d5f2
In multinode deployments creating default Grafana organization failed, because Ansible attempted to call Grafana API in the context of each host in the inventory. After creating organization via the first host, subsequent attempts via the remaining hosts failed due to already existing organization. This change enforces creating default organization only once. Other tasks using Grafana API have been enforced to be ran only once as well. Change-Id: I3a93a719b3c9b4e55ab226d3b22d571d9a0f489d Signed-off-by: Bartosz Zurkowski <b.zurkowski@samsung.com>
95 lines
4.0 KiB
YAML
95 lines
4.0 KiB
YAML
---
|
|
- name: Wait for Monasca Grafana to load
|
|
uri:
|
|
url: "{{ internal_protocol }}://{{ kolla_internal_vip_address }}:{{ monasca_grafana_server_port }}/login"
|
|
status_code: 200
|
|
register: result
|
|
until: result.get('status') == 200
|
|
retries: 10
|
|
delay: 2
|
|
run_once: true
|
|
|
|
- name: Define Monasca Grafana control plane organisation name
|
|
set_fact:
|
|
monasca_grafana_control_plane_org: "{{ monasca_control_plane_project }}@{{ default_project_domain_name }}"
|
|
|
|
- name: List Monasca Grafana organisations
|
|
uri:
|
|
method: GET
|
|
url: '{{ internal_protocol }}://{{ kolla_internal_vip_address }}:{{ monasca_grafana_server_port }}/api/orgs'
|
|
user: '{{ monasca_grafana_admin_username }}'
|
|
password: '{{ monasca_grafana_admin_password }}'
|
|
return_content: true
|
|
force_basic_auth: true
|
|
run_once: True
|
|
register: monasca_grafana_orgs
|
|
|
|
- name: Create default control plane organisation if it doesn't exist
|
|
uri:
|
|
method: POST
|
|
url: '{{ internal_protocol }}://{{ kolla_internal_vip_address }}:{{ monasca_grafana_server_port }}/api/orgs'
|
|
user: '{{ monasca_grafana_admin_username }}'
|
|
password: '{{ monasca_grafana_admin_password }}'
|
|
body_format: json
|
|
body:
|
|
name: '{{ monasca_grafana_control_plane_org }}'
|
|
force_basic_auth: true
|
|
run_once: True
|
|
when: monasca_grafana_control_plane_org not in monasca_grafana_orgs.json|map(attribute='name')|unique
|
|
|
|
- name: Lookup Monasca Grafana control plane organisation ID
|
|
uri:
|
|
method: GET
|
|
url: '{{ internal_protocol }}://{{ kolla_internal_vip_address }}:{{ monasca_grafana_server_port }}/api/orgs/name/{{ monasca_grafana_control_plane_org }}'
|
|
user: '{{ monasca_grafana_admin_username }}'
|
|
password: '{{ monasca_grafana_admin_password }}'
|
|
return_content: true
|
|
force_basic_auth: true
|
|
run_once: True
|
|
register: monasca_grafana_conf_org
|
|
|
|
- name: Add {{ monasca_grafana_admin_username }} user to control plane organisation
|
|
uri:
|
|
method: POST
|
|
url: '{{ internal_protocol }}://{{ kolla_internal_vip_address }}:{{ monasca_grafana_server_port }}/api/orgs/{{ monasca_grafana_conf_org.json.id }}/users'
|
|
user: '{{ monasca_grafana_admin_username }}'
|
|
password: '{{ monasca_grafana_admin_password }}'
|
|
body:
|
|
loginOrEmail: '{{ monasca_grafana_admin_username }}'
|
|
role: Admin
|
|
force_basic_auth: true
|
|
body_format: json
|
|
status_code: 200, 409
|
|
register: monasca_grafana_add_user_response
|
|
run_once: True
|
|
changed_when: monasca_grafana_add_user_response.status == 200
|
|
failed_when: monasca_grafana_add_user_response.status not in [200, 409] or
|
|
monasca_grafana_add_user_response.status == 409 and ("User is already" not in monasca_grafana_add_user_response.json.message|default(""))
|
|
|
|
- name: Switch Monasca Grafana to the control plane organisation
|
|
uri:
|
|
method: POST
|
|
url: '{{ internal_protocol }}://{{ kolla_internal_vip_address }}:{{ monasca_grafana_server_port }}/api/user/using/{{ monasca_grafana_conf_org.json.id }}'
|
|
user: '{{ monasca_grafana_admin_username }}'
|
|
password: '{{ monasca_grafana_admin_password }}'
|
|
force_basic_auth: true
|
|
run_once: True
|
|
|
|
- name: Enable Monasca Grafana datasource for control plane organisation
|
|
uri:
|
|
url: "{{ internal_protocol }}://{{ kolla_internal_vip_address }}:{{ monasca_grafana_server_port }}/api/datasources"
|
|
method: POST
|
|
user: "{{ monasca_grafana_admin_username }}"
|
|
password: "{{ monasca_grafana_admin_password }}"
|
|
body: "{{ item.value.data | to_json }}"
|
|
body_format: json
|
|
force_basic_auth: true
|
|
status_code: 200, 409
|
|
register: monasca_grafana_datasource_response
|
|
run_once: True
|
|
changed_when: monasca_grafana_datasource_response.status == 200
|
|
failed_when: monasca_grafana_datasource_response.status not in [200, 409] or
|
|
monasca_grafana_datasource_response.status == 409 and ("Data source with same name already exists" not in monasca_grafana_datasource_response.json.message|default(""))
|
|
with_dict: "{{ monasca_grafana_data_sources }}"
|
|
when: item.value.enabled | bool
|