Merge pull request #8 from thouveng/use-json-for-basic-auth
Use JSON format with basic auth
diff --git a/_states/grafana3_datasource.py b/_states/grafana3_datasource.py
index fd41d86..3ac5338 100644
--- a/_states/grafana3_datasource.py
+++ b/_states/grafana3_datasource.py
@@ -40,6 +40,7 @@
'''
from __future__ import absolute_import
+import json
import requests
from salt.ext.six import string_types
@@ -115,20 +116,13 @@
is_default=is_default)
if datasource:
- if profile.get('grafana_token', False):
- requests.put(
- _get_url(profile, datasource['id']),
- data,
- headers=_get_headers(profile),
- timeout=profile.get('grafana_timeout', 3),
- )
- else:
- requests.put(
- _get_url(profile, datasource['id']),
- data,
- auth=_get_auth(profile),
- timeout=profile.get('grafana_timeout', 3),
- )
+ requests.put(
+ _get_url(profile, datasource['id']),
+ data=json.dumps(data),
+ auth=_get_auth(profile),
+ headers=_get_headers(profile),
+ timeout=profile.get('grafana_timeout', 3),
+ )
ret['result'] = True
ret['changes'] = _diff(datasource, data)
if ret['changes']['new'] or ret['changes']['old']:
@@ -137,20 +131,13 @@
ret['changes'] = None
ret['comment'] = 'Data source {0} already up-to-date'.format(name)
else:
- if profile.get('grafana_token', False):
- requests.post(
- '{0}/api/datasources'.format(profile['grafana_url']),
- data,
- headers=_get_headers(profile),
- timeout=profile.get('grafana_timeout', 3),
- )
- else:
- requests.post(
- '{0}/api/datasources'.format(profile['grafana_url']),
- data,
- auth=_get_auth(profile),
- timeout=profile.get('grafana_timeout', 3),
- )
+ requests.post(
+ '{0}/api/datasources'.format(profile['grafana_url']),
+ data=json.dumps(data),
+ auth=_get_auth(profile),
+ headers=_get_headers(profile),
+ timeout=profile.get('grafana_timeout', 3),
+ )
ret['result'] = True
ret['comment'] = 'New data source {0} added'.format(name)
ret['changes'] = data
@@ -176,18 +163,12 @@
ret['comment'] = 'Data source {0} already absent'.format(name)
return ret
- if profile.get('grafana_token', False):
- requests.delete(
- _get_url(profile, datasource['id']),
- headers=_get_headers(profile),
- timeout=profile.get('grafana_timeout', 3),
- )
- else:
- requests.delete(
- _get_url(profile, datasource['id']),
- auth=_get_auth(profile),
- timeout=profile.get('grafana_timeout', 3),
- )
+ requests.delete(
+ _get_url(profile, datasource['id']),
+ auth=_get_auth(profile),
+ headers=_get_headers(profile),
+ timeout=profile.get('grafana_timeout', 3),
+ )
ret['result'] = True
ret['comment'] = 'Data source {0} was deleted'.format(name)
@@ -203,18 +184,12 @@
def _get_datasource(profile, name):
- if profile.get('grafana_token', False):
- response = requests.get(
- '{0}/api/datasources'.format(profile['grafana_url']),
- headers=_get_headers(profile),
- timeout=profile.get('grafana_timeout', 3),
- )
- else:
- response = requests.get(
- '{0}/api/datasources'.format(profile['grafana_url']),
- auth=_get_auth(profile),
- timeout=profile.get('grafana_timeout', 3),
- )
+ response = requests.get(
+ '{0}/api/datasources'.format(profile['grafana_url']),
+ auth=_get_auth(profile),
+ headers=_get_headers(profile),
+ timeout=profile.get('grafana_timeout', 3),
+ )
data = response.json()
for datasource in data:
if datasource['name'] == name:
@@ -223,13 +198,19 @@
def _get_headers(profile):
- return {
- 'Accept': 'application/json',
- 'Authorization': 'Bearer {0}'.format(profile['grafana_token'])
- }
+
+ headers = {'Content-type': 'application/json'}
+
+ if profile.get('grafana_token', False):
+ headers['Authorization'] = 'Bearer {0}'.format(profile['grafana_token'])
+
+ return headers
def _get_auth(profile):
+ if profile.get('grafana_token', False):
+ return None
+
return requests.auth.HTTPBasicAuth(
profile['grafana_user'],
profile['grafana_password']