diff --git a/grafana_dashboards/builder.py b/grafana_dashboards/builder.py index 50d5c78..35b9f79 100644 --- a/grafana_dashboards/builder.py +++ b/grafana_dashboards/builder.py @@ -29,7 +29,8 @@ class Builder(object): config.get('cache', 'cachedir'), config.getboolean('cache', 'enabled')) self.grafana = Grafana( - config.get('grafana', 'apikey'), config.get('grafana', 'url')) + url=config.get('grafana', 'url'), + key=config.get('grafana', 'apikey')) self.parser = YamlParser() def delete_dashboard(self, path): diff --git a/grafana_dashboards/grafana/__init__.py b/grafana_dashboards/grafana/__init__.py index 4020e32..744a968 100644 --- a/grafana_dashboards/grafana/__init__.py +++ b/grafana_dashboards/grafana/__init__.py @@ -33,8 +33,10 @@ class Grafana(object): :type key: str """ + self.server = url + self.auth = None - base_url = urljoin(url, 'api/dashboards/db/') + base_url = urljoin(self.server, 'api/dashboards/db/') session = requests.Session() session.headers.update({ 'Content-Type': 'application/json', @@ -42,8 +44,7 @@ class Grafana(object): # NOTE(pabelanger): Grafana 2.1.0 added basic auth support so now the # api key is optional. if key: - session.headers.update({ - 'Authorization': 'Bearer %s' % key, - }) + self.auth = {'Authorization': 'Bearer %s' % key} + session.headers.update(self.auth) self.dashboard = Dashboard(base_url, session) diff --git a/tests/test_builder.py b/tests/test_builder.py index 81417e0..43366e6 100644 --- a/tests/test_builder.py +++ b/tests/test_builder.py @@ -39,6 +39,11 @@ class TestCaseBuilder(TestCase): builder2.delete_dashboard(path) self.assertEqual(mock_grafana.call_count, 1) + def test_grafana_defaults(self): + self.assertEqual( + self.builder.grafana.server, 'http://grafana.example.org') + self.assertEqual(self.builder.grafana.auth, None) + @mock.patch('grafana_dashboards.grafana.Dashboard.create') def test_update_dashboard(self, mock_grafana): path = os.path.join(