dashboard_json_data["folderId"] = folder_id
dashboard_json_data["overwrite"] = False
- response = requests.request(
- "POST", self.url + "/api/dashboards/db/", data=json.dumps(dashboard_json_data), headers=self.headers)
+ response = self.send_request_for_creating_dashboard(dashboard_json_data)
+
+ # Admin dashboard will be created if already exists. Rest will remain same.
+ if json.loads(response.text).get("status") == "name-exists":
+ # Delete any previous project-admin dashboard if it already exist.
+ if name == 'admin':
+ self.delete_admin_dashboard()
+ response = self.send_request_for_creating_dashboard(dashboard_json_data)
+ else:
+ return
# Get team id
if project_name is not None:
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)
except Exception:
log.exception("Exception processing message: ")
+ def send_request_for_creating_dashboard(self, dashboard_data):
+ response = requests.request(
+ "POST", self.url + "/api/dashboards/db/", data=json.dumps(dashboard_data), headers=self.headers)
+ return response
+
def delete_dashboard(self, uid):
response = requests.request("DELETE", self.url + "/api/dashboards/uid/" + uid, headers=self.headers)
log.debug("Dashboard %s deleted from Grafana", uid)
return response
+ def delete_admin_dashboard(self):
+ requests.request(
+ "DELETE", self.url + "/api/dashboards/db/osm-project-status-admin", headers=self.headers)
+ log.debug("Dashboard osm-project-status-admin deleted from Grafana")
+
def create_grafana_users(self, user):
email = "{}@osm.etsi.org".format(user)
user_payload = {
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)
+
+ # delete user from grafana
def delete_grafana_users(self, user_name):
# Get user id
response_id = requests.request("GET", self.url + "/api/users/lookup?loginOrEmail={}".format(user_name),
log.info("User %s deleted in Grafana", user_name)
return response
+ # delete team from grafana
def delete_grafana_team(self, project_name):
# Delete Grafana folder
requests.request("DELETE", self.url + "/api/folders/{}".format(project_name),
log.info("Team %s deleted in Grafana", project_name)
return response
+ # update grafana team
def update_grafana_teams(self, project_new_name, project_old_name):
team_obj = requests.request("GET", self.url + "/api/teams/search?name={}".format(project_old_name),
headers=self.headers)
response = requests.request("PUT", self.url + "/api/teams/{}".format(team_id), json=data, headers=self.headers)
log.info("Grafana team updated %s", response.text)
return response
+
+ # remove member from grafana team
+ def remove_grafana_team_member(self, user_name, project_data):
+ # Get user id
+ response_id = requests.request("GET", self.url + "/api/users/lookup?loginOrEmail={}".format(user_name),
+ headers=self.headers)
+ user_id = json.loads(response_id.text)["id"]
+ for project in project_data:
+ # Get team id
+ team_obj = requests.request("GET", self.url + "/api/teams/search?name={}".format(project['project']),
+ headers=self.headers)
+ team_id = json.loads(team_obj.text)["teams"][0]["id"]
+ response = requests.request("DELETE", self.url + "/api/teams/{}/members/{}".format(team_id, user_id),
+ headers=self.headers)
+ return response