schedule only appropriate flavors based on critpath groups
Signed-off-by: Adam Williamson <awilliam@redhat.com>
This commit is contained in:
parent
177e6093e4
commit
c1ac713c25
1 changed files with 13 additions and 4 deletions
|
|
@ -249,7 +249,7 @@ class OpenQAScheduler(object):
|
|||
self.logger.info(tmpl, ', '.join(flavors), advisory)
|
||||
self._update_schedule(advisory, version, flavors, force=force, updic=update)
|
||||
|
||||
def _jobs_from_flag(self, flag, version, branch, prid):
|
||||
def _jobs_from_flag(self, flag, version, branch, prid, pkgname):
|
||||
""""""
|
||||
if flag.get("comment") == "RPM build succeeded." and flag.get("user", {}).get("name") == "packit":
|
||||
if not f" {branch} " in flag.get("username", ""):
|
||||
|
|
@ -260,8 +260,15 @@ class OpenQAScheduler(object):
|
|||
self.logger.warning("Task ID %s unexpected!", task)
|
||||
return False
|
||||
self.logger.info("Running tests on pull request %s", prid)
|
||||
# discover appropriate flavors
|
||||
critpath = SESSION.get("https://bodhi.fedoraproject.org/get_critpath_components").json()
|
||||
groups = [group for group in critpath if pkgname in critpath[group]]
|
||||
# this is hella janky, but we'll just construct an update
|
||||
# dict realistic enough we can reuse get_critpath_flavors
|
||||
fakeupd = {"critpath_groups": groups, "release": {"version": version}}
|
||||
flavors = schedule.get_critpath_flavors(fakeupd) or None
|
||||
build = f"PR-{task}-{prid}"
|
||||
self._update_schedule(build, version, None, force=True, updic=None)
|
||||
self._update_schedule(build, version, flavors, force=True, updic=None)
|
||||
overviewurl = f"{self.openqa_baseurl}/tests/overview?"
|
||||
params = {"distri": "fedora", "build": f"{build}-NOREPORT", "groupid": 2, "version": version}
|
||||
overviewurl += urlencode(params)
|
||||
|
|
@ -286,6 +293,7 @@ class OpenQAScheduler(object):
|
|||
self.logger.debug("Not a comment requesting openQA tests")
|
||||
return
|
||||
prid = pr.get("project", {}).get("fullname", "") + "#" + str(pr.get("id", ""))
|
||||
pkgname = pr.get("project", {}).get("name", "")
|
||||
version, branch = _version_from_branch(body, self.logger)
|
||||
if not version:
|
||||
return
|
||||
|
|
@ -293,7 +301,7 @@ class OpenQAScheduler(object):
|
|||
flags = SESSION.get(flagurl, timeout=60).json().get("flags", [{}])
|
||||
flags.sort(key=lambda x: int(x.get("date_updated")))
|
||||
for flag in flags:
|
||||
ret = self._jobs_from_flag(flag, version, branch, prid)
|
||||
ret = self._jobs_from_flag(flag, version, branch, prid, pkgname)
|
||||
if ret:
|
||||
task, overviewurl = ret
|
||||
_set_pr_flag(flagurl, "pending", task, overviewurl, self.logger)
|
||||
|
|
@ -317,7 +325,8 @@ class OpenQAScheduler(object):
|
|||
return
|
||||
flag = body.get("flag", {})
|
||||
prid = pr.get("project", {}).get("fullname", "") + "#" + str(pr["id"])
|
||||
ret = self._jobs_from_flag(flag, version, branch, prid)
|
||||
pkgname = pr.get("project", {}).get("name", "")
|
||||
ret = self._jobs_from_flag(flag, version, branch, prid, pkgname)
|
||||
if ret:
|
||||
task, overviewurl = ret
|
||||
flagurl = fullurl.replace("/rpms", "/api/0/rpms") + "/flag"
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue