summaryrefslogtreecommitdiff
diff options
authorBrad Marshall <brad.marshall@canonical.com>2017-07-10 13:41:51 +1000
committerBrad Marshall <brad.marshall@canonical.com>2017-07-10 13:41:51 +1000
commitafd175ae866d18f2aab6c99f261ccd1df61fd4b0 (patch)
treeeb4f3d4e93047a9f84423c827bb7d58b1a1d647a
parentefd23a7d7889ce164c48bc61eda746aefdaa9b0e (diff)
Improved readme and error handling
-rw-r--r--README.md6
-rwxr-xr-xactions/import-dashboard24
2 files changed, 22 insertions, 8 deletions
diff --git a/README.md b/README.md
index 2c68c1c..37aed68 100644
--- a/README.md
+++ b/README.md
@@ -16,15 +16,17 @@ To retrieve autogenerated password run:
#Actions
-This charm supports adding dashboards, simply run:
+This charm supports importing dashboards, simply run:
- $ juju run-action grafana/0 add-dashboard dashboard="$(base64 mydashboard.json)"
+ $ juju run-action grafana/0 import-dashboard dashboard="$(base64 mydashboard.json)"
where mydashboard.json is a json file:
{ "dashboard": { exported-json-dashboard },
"overwrite": true }
+If you don't want to overwrite the dashboard, set overwrite to false.
+
#Development
Explicitly set `JUJU_REPOSITORY`:
diff --git a/actions/import-dashboard b/actions/import-dashboard
index be72e03..d61ff5f 100755
--- a/actions/import-dashboard
+++ b/actions/import-dashboard
@@ -15,18 +15,30 @@ from charmhelpers.core import unitdata
kv = unitdata.kv()
if kv.get('grafana.admin_password'):
- # print('Admin password: {}'.format(kv.get('grafana.admin_password')))
- passwd = kv.get('grafana.admin_password')
+ # print('Admin password: {}'.format(kv.get('grafana.admin_password')))
+ passwd = kv.get('grafana.admin_password')
elif config('admin_password'):
- passwd = config('admin_password')
- # print('Admin password: {}'.format(config('admin_password')))
+ passwd = config('admin_password')
+ # print('Admin password: {}'.format(config('admin_password')))
else:
- action_fail('ERROR! Unable to retrieve password.')
+ action_fail('ERROR! Unable to retrieve password.')
+ exit(0)
grafana = "http://localhost:3000"
api_auth = ('admin', passwd)
api_dash_import_url = "/api/dashboards/import"
-dashboard_data = json.loads(base64.b64decode(action_get('dashboard')).decode('utf-8'))
+try:
+ dashboard_data = json.loads(base64.b64decode(action_get('dashboard')).decode('utf-8'))
+except base64.binascii.Error:
+ action_fail("Failed to base64 decode dashboard!")
+ exit(0)
+except json.JSONDecodeError as e:
+ action_fail("Fail to json decode the dashboard: %s" % (e.msg))
+ exit(0)
+else:
+ action_fail("Unknown error dealing with dashboard!")
+ exit(0)
+
# Needs to be the format:
# { "dashboard": { dashboard },
# "overwrite": true } - use false here if you don't want to overwrite