diff options
| author | Brad Marshall <brad.marshall@canonical.com> | 2017-07-10 13:41:51 +1000 | 
|---|---|---|
| committer | Brad Marshall <brad.marshall@canonical.com> | 2017-07-10 13:41:51 +1000 | 
| commit | afd175ae866d18f2aab6c99f261ccd1df61fd4b0 (patch) | |
| tree | eb4f3d4e93047a9f84423c827bb7d58b1a1d647a | |
| parent | efd23a7d7889ce164c48bc61eda746aefdaa9b0e (diff) | |
Improved readme and error handling
| -rw-r--r-- | README.md | 6 | ||||
| -rwxr-xr-x | actions/import-dashboard | 24 | 
2 files changed, 22 insertions, 8 deletions
| @@ -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  | 
