From ac5d24e5ca09cc4addf6078f56a7975a6f957aa6 Mon Sep 17 00:00:00 2001 From: Ernesto Puerta Date: Fri, 21 May 2021 10:57:23 +0200 Subject: [PATCH] mgr/dashboard: remove non-null id in Grafana dashb Testing added to prevent this situation. Fixes: https://tracker.ceph.com/issues/50918 Signed-off-by: Ernesto Puerta --- .../grafana/dashboards/pool-overview.json | 2 +- .../mgr/dashboard/ci/check_grafana_uids.py | 50 +++++++++++-------- 2 files changed, 29 insertions(+), 23 deletions(-) diff --git a/monitoring/grafana/dashboards/pool-overview.json b/monitoring/grafana/dashboards/pool-overview.json index 1815236ecd551..cd699348b07fe 100644 --- a/monitoring/grafana/dashboards/pool-overview.json +++ b/monitoring/grafana/dashboards/pool-overview.json @@ -15,7 +15,7 @@ "editable": false, "gnetId": null, "graphTooltip": 0, - "id": 15, + "id": null, "iteration": 1617656284287, "links": [], "panels": [ diff --git a/src/pybind/mgr/dashboard/ci/check_grafana_uids.py b/src/pybind/mgr/dashboard/ci/check_grafana_uids.py index f82ddbbc8bab7..250fb8bad480e 100644 --- a/src/pybind/mgr/dashboard/ci/check_grafana_uids.py +++ b/src/pybind/mgr/dashboard/ci/check_grafana_uids.py @@ -72,28 +72,34 @@ def get_grafana_dashboards(base_dir): json_files = get_files(base_dir, 'json') dashboards = {} for json_file in json_files: - with open(json_file) as f: - dashboard_config = json.load(f) - uid = dashboard_config.get('uid') - - # Grafana dashboard checks - title = dashboard_config['title'] - assert len(title) > 0, \ - "Title not found in '{}'".format(json_file) - assert len(dashboard_config.get('links', [])) == 0, \ - "Links found in '{}'".format(json_file) - if not uid: - continue - if uid in dashboards: - # duplicated uids - error_msg = 'Duplicated UID {} found, already defined in {}'.\ - format(uid, dashboards[uid]['file']) - exit(error_msg) - - dashboards[uid] = { - 'file': json_file, - 'title': title - } + try: + with open(json_file) as f: + dashboard_config = json.load(f) + uid = dashboard_config.get('uid') + assert dashboard_config['id'] is None, \ + "'id' not null: '{}'".format(dashboard_config['id']) + + # Grafana dashboard checks + title = dashboard_config['title'] + assert len(title) > 0, \ + "Title not found in '{}'".format(json_file) + assert len(dashboard_config.get('links', [])) == 0, \ + "Links found in '{}'".format(json_file) + if not uid: + continue + if uid in dashboards: + # duplicated uids + error_msg = 'Duplicated UID {} found, already defined in {}'.\ + format(uid, dashboards[uid]['file']) + exit(error_msg) + + dashboards[uid] = { + 'file': json_file, + 'title': title + } + except Exception as e: + print(f"Error in file {json_file}") + raise e return dashboards -- 2.39.5