Add Gnocchi datasource for Grafana
Change-Id: I7a48be1b447b84f672e4462fde29cbe044613acd Closes-bug: PROD-21747
This commit is contained in:
parent
1973172e8a
commit
2f77faae7f
2 changed files with 46 additions and 6 deletions
|
@ -61,6 +61,9 @@ def present(name,
|
|||
basic_auth=False,
|
||||
basic_auth_user='',
|
||||
basic_auth_password='',
|
||||
mode=None,
|
||||
domain='default',
|
||||
project=None,
|
||||
is_default=False,
|
||||
profile='grafana'):
|
||||
'''
|
||||
|
@ -97,6 +100,15 @@ def present(name,
|
|||
basic_auth_password
|
||||
Optional - HTTP basic auth password.
|
||||
|
||||
mode
|
||||
Optional - Gnocchi authentication mode.
|
||||
|
||||
domain
|
||||
Optional - Gnocchi domain, defaults to "default".
|
||||
|
||||
project
|
||||
Optional - Keystone user for Gnocchi.
|
||||
|
||||
is_default
|
||||
Optional - Set data source as default. Default: False
|
||||
'''
|
||||
|
@ -113,6 +125,9 @@ def present(name,
|
|||
basic_auth=basic_auth,
|
||||
basic_auth_user=basic_auth_user,
|
||||
basic_auth_password=basic_auth_password,
|
||||
mode=mode,
|
||||
domain=domain,
|
||||
project=project,
|
||||
is_default=is_default)
|
||||
|
||||
if datasource:
|
||||
|
@ -194,21 +209,20 @@ def _get_datasource(profile, name):
|
|||
for datasource in data:
|
||||
if datasource['name'] == name:
|
||||
return datasource
|
||||
return None
|
||||
|
||||
|
||||
def _get_headers(profile):
|
||||
|
||||
headers = {'Content-type': 'application/json'}
|
||||
|
||||
if profile.get('grafana_token', False):
|
||||
if profile.get('grafana_token'):
|
||||
headers['Authorization'] = 'Bearer {0}'.format(profile['grafana_token'])
|
||||
|
||||
return headers
|
||||
|
||||
|
||||
def _get_auth(profile):
|
||||
if profile.get('grafana_token', False):
|
||||
if profile.get('grafana_token'):
|
||||
return None
|
||||
|
||||
return requests.auth.HTTPBasicAuth(
|
||||
|
@ -227,10 +241,13 @@ def _get_json_data(name,
|
|||
basic_auth=False,
|
||||
basic_auth_user='',
|
||||
basic_auth_password='',
|
||||
mode=None,
|
||||
domain=None,
|
||||
project=None,
|
||||
is_default=False,
|
||||
type_logo_url='public/app/plugins/datasource/influxdb/img/influxdb_logo.svg',
|
||||
with_credentials=False):
|
||||
return {
|
||||
data = {
|
||||
'name': name,
|
||||
'type': type,
|
||||
'url': url,
|
||||
|
@ -245,6 +262,18 @@ def _get_json_data(name,
|
|||
'typeLogoUrl': type_logo_url,
|
||||
'withCredentials': with_credentials,
|
||||
}
|
||||
if data['type'] == 'gnocchixyz-gnocchi-datasource':
|
||||
json_data = {}
|
||||
for special in ['mode', 'domain', 'project', 'user', 'password']:
|
||||
value = locals().get(special)
|
||||
if value is not None:
|
||||
if special == 'user':
|
||||
json_data['username'] = value
|
||||
else:
|
||||
json_data[special] = value
|
||||
if json_data:
|
||||
data['jsonData'] = json_data
|
||||
return data
|
||||
|
||||
|
||||
def _diff(old, new):
|
||||
|
@ -252,7 +281,7 @@ def _diff(old, new):
|
|||
old = old.copy()
|
||||
new = new.copy()
|
||||
for key in old_keys:
|
||||
if key == 'id' or key == 'orgId':
|
||||
if key in ['id', 'orgId']:
|
||||
del old[key]
|
||||
# New versions of Grafana can introduce new keys that are not present
|
||||
# in _get_json_data.
|
||||
|
|
|
@ -9,7 +9,11 @@ grafana_client_datasource_{{ datasource_name }}:
|
|||
grafana3_datasource.present:
|
||||
- name: {{ datasource.name|default(datasource_name) }}
|
||||
- type: {{ datasource.type }}
|
||||
- url: http://{{ datasource.host }}:{{ datasource.get('port', 80) }}
|
||||
{%- if datasource.port is defined %}
|
||||
- url: {{ datasource.get('protocol', 'http') }}://{{ datasource.host }}:{{ datasource.port }}{{ datasource.get('url_path', '') }}
|
||||
{%- else %}
|
||||
- url: {{ datasource.get('protocol', 'http') }}://{{ datasource.host }}{{ datasource.get('url_path', '') }}
|
||||
{%- endif %}
|
||||
{%- if datasource.access is defined %}
|
||||
- access: proxy
|
||||
{%- endif %}
|
||||
|
@ -23,6 +27,13 @@ grafana_client_datasource_{{ datasource_name }}:
|
|||
{%- if datasource.database is defined %}
|
||||
- database: {{ datasource.database }}
|
||||
{%- endif %}
|
||||
{%- if datasource.mode is defined %}
|
||||
- mode: {{ datasource.mode }}
|
||||
{%- if datasource.mode == 'keystone' %}
|
||||
- domain: {{ datasource.get('domain', 'default') }}
|
||||
- project: {{ datasource.get('project', 'service') }}
|
||||
{%- endif %}
|
||||
{%- endif %}
|
||||
|
||||
{%- endfor %}
|
||||
|
||||
|
|
Loading…
Reference in a new issue