From f4f3bc2f9b43d6723df275463dd2d4db6762f4b6 Mon Sep 17 00:00:00 2001
From: Bjarke Madsen <bjarke.madsen@geant.org>
Date: Thu, 15 Apr 2021 15:43:20 +0200
Subject: [PATCH] Delete NREN dashboards every time. Required in the event of
 stale NREN dashboards

---
 brian_dashboard_manager/config.py            | 1 +
 brian_dashboard_manager/grafana/provision.py | 4 ++++
 test/test_update.py                          | 9 +++++++++
 3 files changed, 14 insertions(+)

diff --git a/brian_dashboard_manager/config.py b/brian_dashboard_manager/config.py
index 58d5427..294e16e 100644
--- a/brian_dashboard_manager/config.py
+++ b/brian_dashboard_manager/config.py
@@ -84,6 +84,7 @@ DEFAULT_ORGANIZATIONS = [
         "excluded_nrens": [
             "CUSTOMER GEANT",
             "GEANT-IT",
+            "PSNC",
             "PIONIER",
         ],
         "excluded_dashboards": [
diff --git a/brian_dashboard_manager/grafana/provision.py b/brian_dashboard_manager/grafana/provision.py
index 2fdca14..80b5aae 100644
--- a/brian_dashboard_manager/grafana/provision.py
+++ b/brian_dashboard_manager/grafana/provision.py
@@ -313,7 +313,11 @@ def provision(config):
         # NREN Access dashboards
         # uses a different template than the above.
         logger.info('Provisioning NREN Access dashboards')
+        # always recreate NREN folder
+        delete_folder(token_request, 'NREN Access')
+
         folder = find_folder(token_request, 'NREN Access')
+
         nrens = filter(is_nren, excluded_interfaces)
         generate_all_nrens(token_request,
                            nrens, folder['id'], datasource_name)
diff --git a/test/test_update.py b/test/test_update.py
index 4b63f49..04851d0 100644
--- a/test/test_update.py
+++ b/test/test_update.py
@@ -1,5 +1,6 @@
 import responses
 import json
+import re
 from brian_dashboard_manager.templating.nren_access import get_nrens
 from brian_dashboard_manager.grafana.provision import provision_folder, \
     generate_all_nrens, provision
@@ -330,6 +331,14 @@ def test_provision(data_config, mocker, client):
         url=f"http://{data_config['hostname']}/api/folders",
         callback=folder_get)
 
+    def folder_delete(request):
+        return 200, {}, json.dumps({"message": "Deleted folder"})
+
+    responses.add_callback(
+        method=responses.DELETE,
+        url=re.compile(f"http://{data_config['hostname']}/api/folders"),
+        callback=folder_delete, )
+
     def folder_post(request):
         data = json.loads(request.body)
         return 200, {}, json.dumps(generate_folder(data))
-- 
GitLab