Coverage for chalicelib/core/log_tools/bugsnag.py: 70%
45 statements
« prev ^ index » next coverage.py v7.15.2, created at 2026-10-10 12:56 +0000
« prev ^ index » next coverage.py v7.15.2, created at 2026-10-10 12:56 +0000
1import logging
3import requests
5from chalicelib.core.log_tools import log_tools
6from chalicelib.utils.log import sanitize
7from schemas import schemas
9logger = logging.getLogger(__name__)
10IN_TY = "bugsnag"
13def list_projects(auth_token):
14 r = requests.get(url="https://api.bugsnag.com/user/organizations",
15 params={"per_page": "100"},
16 headers={"Authorization": "token " + auth_token, "X-Version": "2"})
17 if r.status_code != 200: 17 ↛ 23line 17 didn't jump to line 23 because the condition on line 17 was always true
18 logger.error("=======> bugsnag get organizations: something went wrong")
19 logger.error(r.status_code)
20 logger.error(sanitize(r.text))
21 return []
23 orgs = []
24 for i in r.json():
26 pr = requests.get(url="https://api.bugsnag.com/organizations/%s/projects" % i["id"],
27 params={"per_page": "100"},
28 headers={"Authorization": "token " + auth_token, "X-Version": "2"})
29 if pr.status_code != 200:
30 logger.error("=======> bugsnag get projects: something went wrong")
31 logger.error(pr.status_code)
32 logger.error(sanitize(pr.text))
33 continue
34 orgs.append({"name": i["name"], "projects": [{"name": p["name"], "id": p["id"]} for p in pr.json()]})
35 return orgs
38def get_all(tenant_id):
39 return log_tools.get_all_by_tenant(tenant_id=tenant_id, integration=IN_TY)
42def get(project_id):
43 return log_tools.get(project_id=project_id, integration=IN_TY)
46def update(tenant_id, project_id, changes):
47 options = {}
48 if "authorizationToken" in changes: 48 ↛ 50line 48 didn't jump to line 50 because the condition on line 48 was always true
49 options["authorizationToken"] = changes.pop("authorizationToken")
50 if "bugsnagProjectId" in changes: 50 ↛ 52line 50 didn't jump to line 52 because the condition on line 50 was always true
51 options["bugsnagProjectId"] = changes.pop("bugsnagProjectId")
52 return log_tools.edit(project_id=project_id, integration=IN_TY, changes=options)
55def add(tenant_id, project_id, authorization_token, bugsnag_project_id):
56 options = {
57 "bugsnagProjectId": bugsnag_project_id,
58 "authorizationToken": authorization_token,
59 }
60 return log_tools.add(project_id=project_id, integration=IN_TY, options=options)
63def delete(tenant_id, project_id):
64 return log_tools.delete(project_id=project_id, integration=IN_TY)
67def add_edit(tenant_id, project_id, data:schemas.IntegrationBugsnagSchema ):
68 s = get(project_id)
69 if s is not None:
70 return update(tenant_id=tenant_id, project_id=project_id,
71 changes={"authorizationToken": data.authorization_token,
72 "bugsnagProjectId": data.bugsnag_project_id})
73 else:
74 return add(tenant_id=tenant_id,
75 project_id=project_id,
76 authorization_token=data.authorization_token,
77 bugsnag_project_id=data.bugsnag_project_id)