aboutsummaryrefslogtreecommitdiffstats
path: root/arthur/apis/grafana/teams.py
diff options
context:
space:
mode:
Diffstat (limited to 'arthur/apis/grafana/teams.py')
-rw-r--r--arthur/apis/grafana/teams.py51
1 files changed, 51 insertions, 0 deletions
diff --git a/arthur/apis/grafana/teams.py b/arthur/apis/grafana/teams.py
new file mode 100644
index 0000000..9e3f66a
--- /dev/null
+++ b/arthur/apis/grafana/teams.py
@@ -0,0 +1,51 @@
+import aiohttp
+
+from arthur import logger
+from arthur.config import CONFIG
+
+AUTH_HEADER = {"Authorization": f"Bearer {CONFIG.grafana_token.get_secret_value()}"}
+
+
+async def list_teams(session: aiohttp.ClientSession) -> dict[str, str]:
+ """List all Grafana teams."""
+ endpoint = CONFIG.grafana_url + "/api/teams/search"
+ async with session.get(endpoint, headers=AUTH_HEADER) as response:
+ teams = await response.json()
+ if not response.ok:
+ logger.error(teams)
+ return teams["teams"]
+
+
+async def list_team_members(team_id: int, session: aiohttp.ClientSession) -> list[dict[str, str]]:
+ """List all members within a team."""
+ endpoint = CONFIG.grafana_url + f"/api/teams/{team_id}/members"
+ async with session.get(endpoint, headers=AUTH_HEADER) as response:
+ team_members = await response.json()
+ if not response.ok:
+ logger.error(team_members)
+ return team_members
+
+
+async def add_user_to_team(
+ user_id: int,
+ team_id: int,
+ session: aiohttp.ClientSession,
+) -> dict[str, str]:
+ """Add a Grafana user to a team."""
+ endpoint = CONFIG.grafana_url + f"/api/teams/{team_id}/members"
+ payload = {"userId": user_id}
+ async with session.post(endpoint, headers=AUTH_HEADER, json=payload) as response:
+ add_resp = await response.json()
+ if not response.ok:
+ logger.error(add_resp)
+ return add_resp
+
+
+async def get_all_users(session: aiohttp.ClientSession) -> list[dict[str, str]]:
+ """Get a grafana users."""
+ endpoint = CONFIG.grafana_url + "/api/org/users/lookup"
+ async with session.get(endpoint, headers=AUTH_HEADER) as response:
+ users = await response.json()
+ if not response.ok:
+ logger.error(users)
+ return users