in jbi/jira/service.py [0:0]
def check_jira_all_project_issue_types_exist(self, actions):
# Do not bother executing the rest of checks if connection fails.
if messages := self.check_jira_connection():
return messages
try:
paginated_project_response = self.client.paginated_projects(
expand="issueTypes", keys=sorted(actions.configured_jira_projects_keys)
)
except requests.RequestException:
return [
checks.Error(
"Couldn't fetch projects",
id="jira.projects.error",
)
]
projects = paginated_project_response["values"]
issue_types_by_project = {
project["key"]: {issue_type["name"] for issue_type in project["issueTypes"]}
for project in projects
}
missing_issue_types_by_project = {}
for action in actions:
action_issue_types = set(action.parameters.issue_type_map.values())
project_issue_types = issue_types_by_project.get(
action.jira_project_key, set()
)
if missing_issue_types := action_issue_types - project_issue_types:
missing_issue_types_by_project[action.jira_project_key] = (
missing_issue_types
)
if missing_issue_types_by_project:
return [
checks.Warning(
f"Jira projects {set(missing_issue_types_by_project.keys())} with missing issue types",
obj=missing_issue_types_by_project,
id="jira.types.missing",
)
]
return []