Merge "Automatically configure Monasca Grafana datasource"
This commit is contained in:
commit
42ab513ec9
@ -220,6 +220,19 @@ monasca_metric_pipeline_threads: 2
|
|||||||
# authentication. This must *not* match any OpenStack username.
|
# authentication. This must *not* match any OpenStack username.
|
||||||
monasca_grafana_admin_username: "grafana_local_admin"
|
monasca_grafana_admin_username: "grafana_local_admin"
|
||||||
|
|
||||||
|
monasca_grafana_data_sources:
|
||||||
|
monasca:
|
||||||
|
enabled: True
|
||||||
|
data:
|
||||||
|
name: "Monasca API"
|
||||||
|
type: "monasca-datasource"
|
||||||
|
access: "proxy"
|
||||||
|
url: "{{ internal_protocol }}://{{ kolla_internal_vip_address }}:{{ monasca_api_port }}"
|
||||||
|
isDefault: True
|
||||||
|
basicAuth: false
|
||||||
|
jsonData:
|
||||||
|
keystoneAuth: True
|
||||||
|
|
||||||
####################
|
####################
|
||||||
# Docker
|
# Docker
|
||||||
####################
|
####################
|
||||||
|
@ -34,3 +34,5 @@
|
|||||||
inventory_hostname in groups['monasca-thresh'] or
|
inventory_hostname in groups['monasca-thresh'] or
|
||||||
inventory_hostname in groups['monasca-notification'] or
|
inventory_hostname in groups['monasca-notification'] or
|
||||||
inventory_hostname in groups['monasca-persister']
|
inventory_hostname in groups['monasca-persister']
|
||||||
|
|
||||||
|
- include_tasks: post_config.yml
|
||||||
|
90
ansible/roles/monasca/tasks/post_config.yml
Normal file
90
ansible/roles/monasca/tasks/post_config.yml
Normal file
@ -0,0 +1,90 @@
|
|||||||
|
---
|
||||||
|
- 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
|
||||||
|
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
|
||||||
|
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
|
||||||
|
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
|
||||||
|
|
||||||
|
- 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
|
Loading…
x
Reference in New Issue
Block a user