From 880762e07ecf313caa8844260e4b37054848ca2d Mon Sep 17 00:00:00 2001 From: Eric Matysek Date: Fri, 9 Nov 2018 17:27:11 -0500 Subject: [PATCH] Fix consistency issue in grafana_dashboard module. (#47459) * Move check for 'dashboard' key to before the create/update if statement. * Add changelog fragment for PR #47459 --- .../fragments/47459_grafana_dashboard_consistency_fix.yaml | 2 ++ lib/ansible/modules/monitoring/grafana_dashboard.py | 6 ++++-- 2 files changed, 6 insertions(+), 2 deletions(-) create mode 100644 changelogs/fragments/47459_grafana_dashboard_consistency_fix.yaml diff --git a/changelogs/fragments/47459_grafana_dashboard_consistency_fix.yaml b/changelogs/fragments/47459_grafana_dashboard_consistency_fix.yaml new file mode 100644 index 0000000000..6bc7216cb0 --- /dev/null +++ b/changelogs/fragments/47459_grafana_dashboard_consistency_fix.yaml @@ -0,0 +1,2 @@ +bugfixes: + - Fix consistency issue in grafana_dashboard module where the module would detect absence of 'dashboard' key on dashboard create but not dashboard update. \ No newline at end of file diff --git a/lib/ansible/modules/monitoring/grafana_dashboard.py b/lib/ansible/modules/monitoring/grafana_dashboard.py index cb1aa51af8..e974d865d4 100644 --- a/lib/ansible/modules/monitoring/grafana_dashboard.py +++ b/lib/ansible/modules/monitoring/grafana_dashboard.py @@ -225,6 +225,10 @@ def grafana_create_dashboard(module, data): except Exception as e: raise GrafanaAPIException("Can't load json file %s" % to_native(e)) + # Check that the dashboard JSON is nested under the 'dashboard' key + if 'dashboard' not in payload: + payload = {'dashboard': payload} + # define http header headers = grafana_headers(module, data) @@ -277,8 +281,6 @@ def grafana_create_dashboard(module, data): raise GrafanaAPIException('Unable to update the dashboard %s : %s' % (uid, body['message'])) else: # create - if 'dashboard' not in payload: - payload = {'dashboard': payload} r, info = fetch_url(module, '%s/api/dashboards/db' % data['grafana_url'], data=json.dumps(payload), headers=headers, method='POST') if info['status'] == 200: result['msg'] = "Dashboard %s created" % uid