@@ -62,13 +62,37 @@ def get_bugzilla_issues(issues: list[str]) -> list[dict]:
62
62
return bugs
63
63
64
64
65
- def get_jira_issues (issues : list [str ]) -> list [dict ]:
65
+ def get_jira_issue (url : str ) -> dict | None :
66
+ """
67
+ Get Jira issue
68
+ """
69
+ if not JIRA_TOKEN :
70
+ return None
71
+ issue = os .path .basename (url )
72
+ api_url = f"https://jira.suse.com/rest/api/2/issue/{ issue } "
73
+ headers = {"Authorization" : f"Bearer { JIRA_TOKEN } " }
74
+ params = {"fields" : "summary" }
75
+ try :
76
+ got = session .get (api_url , headers = headers , params = params , timeout = TIMEOUT )
77
+ got .raise_for_status ()
78
+ data = got .json ()
79
+ except RequestException as exc :
80
+ print (f"ERROR: { api_url } : { exc } " , file = sys .stderr )
81
+ return None
82
+ return {
83
+ "id" : issue ,
84
+ "title" : data ["fields" ]["summary" ],
85
+ "url" : f"https://jira.suse.com/browse/{ issue } " ,
86
+ }
87
+
88
+
89
+ def get_jira_issues (urls : list [str ]) -> list [dict ]:
66
90
"""
67
91
Get Jira issues
68
92
"""
69
93
if not JIRA_TOKEN :
70
94
return []
71
- issues = [os .path .basename (i ) for i in issues ]
95
+ issues = [os .path .basename (i ) for i in urls ]
72
96
url = "https://jira.suse.com/rest/api/2/search"
73
97
headers = {"Authorization" : f"Bearer { JIRA_TOKEN } " }
74
98
bugs = []
@@ -85,10 +109,21 @@ def get_jira_issues(issues: list[str]) -> list[dict]:
85
109
return []
86
110
bugs .extend (
87
111
[
88
- {"id" : issue ["key" ], "summary" : issue ["fields" ]["summary" ]}
112
+ {
113
+ "id" : issue ["key" ],
114
+ "summary" : issue ["fields" ]["summary" ],
115
+ "url" : f"https://jira.suse.com/browse/{ issue ['key' ]} " ,
116
+ }
89
117
for issue in got .json ()["issues" ]
90
118
]
91
119
)
120
+ # Some Jira issues may be missing because they were renamed, etc
121
+ missing = [u for u in urls if u not in set (b ["url" ] for b in bugs )]
122
+ if missing :
123
+ with ThreadPoolExecutor () as executor :
124
+ for bug in executor .map (get_jira_issue , missing ):
125
+ if bug is not None :
126
+ bugs .append (bug )
92
127
return bugs
93
128
94
129
0 commit comments