From e21c2b7867811cf9fb099e362f635108b3f733ce Mon Sep 17 00:00:00 2001 From: Ed Bartosh Date: Sat, 10 Jan 2015 23:06:56 +0200 Subject: [PATCH] job_re: implement rebuilding of submission Implemented by triggering gbs service for specified package or all packages found in submission. This causes re-exporting of sources, which is detected by OBS. OBS then rebuilds updated package(s). Fixes: #2060 Change-Id: I05bbcadd0deee4f3a47d613b2bcb04b9e1dbd0b0 Signed-off-by: Ed Bartosh --- common/buildservice.py | 4 ++++ job_re.py | 12 +++++++++++- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/common/buildservice.py b/common/buildservice.py index 906b48f..2a4a772 100644 --- a/common/buildservice.py +++ b/common/buildservice.py @@ -653,3 +653,7 @@ class BuildService(OSC): """Set SR state.""" return core.change_request_state(self.apiurl, reqid, state, message=str(message), force=force) + + def runservice(self, project, package): + """Run remote service for the package.""" + return core.runservice(self.apiurl, project, package) diff --git a/job_re.py b/job_re.py index 58491fd..d871589 100755 --- a/job_re.py +++ b/job_re.py @@ -98,13 +98,23 @@ def main(): target_project = os.getenv("target_project") submission = os.getenv("submission") comment = os.getenv("comment") + package = os.getenv("package") if submission and comment: if action in ("accept", "reject"): state = "accepted" if action == "accept" else "declined" return accept_or_reject(build, submission, state, target_project, comment) elif action == "rebuild": - print "Not implemented yet" + prj, meta = get_project_by_name(build, submission, target_project) + packages = [os.path.basename(path) for path in meta['projects']] + if package: + if package not in packages: + raise LocalError("Package %s doesn't exist in " + "submission %s" % (package, submission)) + packages = [package] + for pkg in packages: + print "triggered rebuild for %s/%s" % (prj, pkg) + build.runservice(prj, pkg) elif action == "remove": prj = get_project_by_name(build, submission, target_project)[0] build.delete_project(prj, force=True, msg=comment) -- 2.7.4