X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=osm_mon%2Fdashboarder%2Fbackends%2Fgrafana.py;h=eeb5e7541fa58966bbf5e7c3148fe4a87089aed0;hb=refs%2Fchanges%2F50%2F10450%2F1;hp=ff87507917a46d0e59a1a357b4666460209b3a42;hpb=f0d7566a26a214fdcce6b7459fbbe5f02108d1d2;p=osm%2FMON.git diff --git a/osm_mon/dashboarder/backends/grafana.py b/osm_mon/dashboarder/backends/grafana.py index ff87507..eeb5e75 100644 --- a/osm_mon/dashboarder/backends/grafana.py +++ b/osm_mon/dashboarder/backends/grafana.py @@ -78,25 +78,20 @@ class GrafanaBackend: response = requests.request( "POST", self.url + "/api/dashboards/db/", data=json.dumps(dashboard_json_data), headers=self.headers) + # Don't create the dashboard if already exists. + if json.loads(response.text).get("status") == "name-exists": + return + # Get team id if project_name is not None: name = project_name response_team = requests.request( "GET", self.url + "/api/teams/search?name={}".format(name), headers=self.headers) - # Check if team informaiton is available - if len(json.loads(response_team.text)["teams"]) > 0: - # As team information is available so it is a non-admin user - team_id = json.loads(response_team.text)["teams"][0]["id"] - permission_data = {"items": [{"teamId": team_id, "permission": 2}, ]} - # Give required permission to the team's folder - response = requests.request( - "POST", self.url + "/api/folders/{}/permissions".format(project_name), json=permission_data, - headers=self.headers) - else: + # Remove default permissions of admin user's dashboard so that it is not visible to non-admin users + if len(json.loads(response_team.text)["teams"]) == 0: # As team information is not available so it is admin user dahboard_id = json.loads(response.text)["id"] - # Remove dashboard's default permissions so that it is only visible to admin user requests.request( "POST", self.url + "/api/dashboards/id/{}/permissions".format(dahboard_id), headers=self.headers) @@ -199,6 +194,19 @@ class GrafanaBackend: requests.request("POST", self.url + "/api/folders", json=folder_payload, headers=self.headers) log.info("Dashboard folder %s created", folder_name) + response_team = requests.request("GET", self.url + "/api/teams/search?name={}".format(folder_name), + headers=self.headers) + # Create team if it doesn't already exists + if len(json.loads(response_team.text)["teams"]) == 0: + self.create_grafana_teams(folder_name) + response_team = requests.request("GET", self.url + "/api/teams/search?name={}".format(folder_name), + headers=self.headers) + # Assign required permission to the team's folder + team_id = json.loads(response_team.text)["teams"][0]["id"] + permission_data = {"items": [{"teamId": team_id, "permission": 2}, ]} + requests.request("POST", self.url + "/api/folders/{}/permissions".format(folder_name), + json=permission_data, headers=self.headers) + def delete_grafana_users(self, user_name): # Get user id response_id = requests.request("GET", self.url + "/api/users/lookup?loginOrEmail={}".format(user_name),