Skip to content

Commit

Permalink
Merge pull request #897 from jberry-suse/supersede-build-remain
Browse files Browse the repository at this point in the history
stagingapi: carry over build state during supersede.
  • Loading branch information
nilxam committed Sep 7, 2017
2 parents 5900f69 + 00dee0d commit 36f1995
Showing 1 changed file with 22 additions and 1 deletion.
23 changes: 22 additions & 1 deletion osclib/stagingapi.py
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,8 @@ def __init__(self, apiurl, project):
self._ring_packages_for_links = None
self._packages_staged = None
self._package_metas = dict()
self._supersede = False
self._package_disabled = {}

# If the project support rings, inititialize some variables.
if self.crings:
Expand Down Expand Up @@ -660,6 +662,7 @@ def dispatch_open_requests(self, target_requests=None):
target_requests = []

# get all current pending requests
self._supersede = True
requests = self.get_open_requests()
requests_ignored = self.get_ignored_requests()
# check if we can reduce it down by accepting some
Expand All @@ -672,6 +675,7 @@ def dispatch_open_requests(self, target_requests=None):
stage_info, code = self.update_superseded_request(rq, target_requests)
if stage_info:
yield (stage_info, code, rq)
self._supersede = False

def get_prj_meta_revision(self, project):
log = get_commitlog(self.apiurl, project, '_project', None, format='xml', meta=True)
Expand Down Expand Up @@ -828,15 +832,27 @@ def rm_from_prj(self, project, package=None, request_id=None,

self._remove_package_from_prj_pseudometa(project, package)
subprj = self.map_ring_package_to_subject(project, package)
if self._supersede:
self.is_package_disabled(subprj, package, store=True)
delete_package(self.apiurl, subprj, package, force=True, msg=msg)

for sub_prj, sub_pkg in self.get_sub_packages(package):
sub_prj = self.map_ring_package_to_subject(project, sub_pkg)
if self._supersede:
self.is_package_disabled(sub_prj, sub_pkg, store=True)
if sub_prj != subprj: # if different to the main package's prj
delete_package(self.apiurl, sub_prj, sub_pkg, force=True, msg=msg)

self.set_review(request_id, project, state=review, msg=msg)

def is_package_disabled(self, project, package, store=False):
meta = show_package_meta(self.apiurl, project, package)
meta = ET.fromstring(''.join(meta))
disabled = len(meta.xpath('build/disable[not(@*)]')) > 0
if store:
self._package_disabled['/'.join([project, package])] = disabled
return disabled

def create_package_container(self, project, package, disable_build=False):
"""
Creates a package container without any fields in project/package
Expand Down Expand Up @@ -1177,6 +1193,9 @@ def submit_to_prj(self, act, project, force_enable_build=False):
else:
project = self.map_ring_package_to_subject(project, tar_pkg)

if self._supersede:
disable_build = self._package_disabled.get('/'.join([project, tar_pkg]), disable_build)

self.create_package_container(project, tar_pkg,
disable_build=disable_build)

Expand All @@ -1202,7 +1221,9 @@ def submit_to_prj(self, act, project, force_enable_build=False):
# print project, tar_pkg, sub_pkg, sub_prj
if sub_prj == project: # skip inner-project links
continue
self.create_package_container(sub_prj, sub_pkg)
if self._supersede:
disable_build = self._package_disabled.get('/'.join([sub_prj, sub_pkg]), False)
self.create_package_container(sub_prj, sub_pkg, disable_build=disable_build)

root = ET.Element('link', package=tar_pkg, project=project)
url = self.makeurl(['source', sub_prj, sub_pkg, '_link'])
Expand Down

0 comments on commit 36f1995

Please sign in to comment.