Filippo Giunchedi has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/268082

Change subject: grafana: add dashboard import tool
......................................................................

grafana: add dashboard import tool

the idea is to dump dashboards from grafana into git/puppet and thus 'freeze' 
them

Bug: T125644
Change-Id: If30f9dd06d0c3b265ed59f0f8427872fd5d2b178
---
A files/grafana/grafana-dashboard
1 file changed, 54 insertions(+), 0 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/operations/puppet 
refs/changes/82/268082/1

diff --git a/files/grafana/grafana-dashboard b/files/grafana/grafana-dashboard
new file mode 100755
index 0000000..fdf0a05
--- /dev/null
+++ b/files/grafana/grafana-dashboard
@@ -0,0 +1,54 @@
+#!/usr/bin/env python
+
+# export grafana dashboard JSON description for revision control
+# pretty printing and sorting the JSON representation should minimise
+# differences when code-reviewing changes
+
+import StringIO
+import argparse
+import json
+import logging
+import sys
+
+import requests
+
+DEFAULT_URL = 'https://grafana.wikimedia.org/api/dashboards/db/%s'
+
+log = logging.getLogger(__name__)
+
+
+def dump_dashboard(url):
+    if not url.startswith('http'):
+        name = url
+        url = DEFAULT_URL % url
+    else:
+        name = url.split('/')[-1]
+
+    req = requests.get(url)
+    req.raise_for_status()
+
+    dashboard = req.json()['dashboard']
+
+    if 'source:puppet.git' not in dashboard['tags']:
+        dashboard['tags'].append('source:puppet.git')
+
+    log.info('dumping %s into %s', url, name)
+    with open(name, 'w') as f:
+        json.dump(dashboard, f, sort_keys=True,
+                  separators=(',', ': '), indent=2)
+
+
+def main():
+    parser = argparse.ArgumentParser()
+    parser.add_argument('dashboard', help='URL or dashboard name to act on',
+                        action='append', nargs='+')
+    args = parser.parse_args()
+
+    logging.basicConfig(level=logging.INFO)
+
+    for url in args.dashboard[0]:
+        dump_dashboard(url)
+
+
+if __name__ == '__main__':
+    sys.exit(main())

-- 
To view, visit https://gerrit.wikimedia.org/r/268082
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: If30f9dd06d0c3b265ed59f0f8427872fd5d2b178
Gerrit-PatchSet: 1
Gerrit-Project: operations/puppet
Gerrit-Branch: production
Gerrit-Owner: Filippo Giunchedi <[email protected]>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to