Skip to content

Commit

Permalink
Merge 38dbf5b into 094dee5
Browse files Browse the repository at this point in the history
  • Loading branch information
jberry-suse committed Feb 1, 2017
2 parents 094dee5 + 38dbf5b commit 569b600
Show file tree
Hide file tree
Showing 4 changed files with 19 additions and 19 deletions.
8 changes: 4 additions & 4 deletions osc-staging.py
Expand Up @@ -144,18 +144,18 @@ def do_staging(self, subcmd, opts, *args):
request node as returned by OBS. Several values will supplement the
normal request node.
- ./action/source/@devel_project: the devel project for the package
- ./action/target/@devel_project: the devel project for the package
- ./action/target/@ring: the ring to which the package belongs
- ./@ignored: either false or the provided message
Some useful examples:
--filter-by './action/target[starts-with(@package, "yast-")]'
--filter-by './action/source/[@devel_project="YaST:Head"]'
--filter-by './action/target/[@devel_project="YaST:Head"]'
--filter-by './action/target[starts-with(@ring, "1")]'
--filter-by '@id!="1234567"'
--group-by='./action/source/@devel_project'
--group-by='./action/target/@devel_project'
--group-by='./action/target/@ring'
Multiple filter-by or group-by options may be used at the same time.
Expand All @@ -164,7 +164,7 @@ def do_staging(self, subcmd, opts, *args):
provided in addition to a list of requests by which to filter. A more
complex example:
select --group-by='./action/source/@devel_project' A B C 123 456 789
select --group-by='./action/target/@devel_project' A B C 123 456 789
This will separate the requests 123, 456, 789 by devel project and only
consider stagings A, B, or C, if available, for placement.
Expand Down
2 changes: 1 addition & 1 deletion osclib/adi_command.py
Expand Up @@ -58,7 +58,7 @@ def create_new_adi(self, wanted_requests, by_dp=False, split=False):
if split:
splitter.group_by('./@id')
elif by_dp:
splitter.group_by('./action/source/@devel_project')
splitter.group_by('./action/target/@devel_project')
else:
splitter.group_by('./action/source/@project')
splitter.split()
Expand Down
2 changes: 1 addition & 1 deletion osclib/list_command.py
Expand Up @@ -38,7 +38,7 @@ def perform(self, packages=None, supersede=False):
splitter.reset()

splitter.filter_add('./action[not(@type="add_role" or @type="change_devel")]')
splitter.group_by('./action/source/@devel_project')
splitter.group_by('./action/target/@devel_project')
splitter.split()

is_factory = self.api.project != 'openSUSE:Factory'
Expand Down
26 changes: 13 additions & 13 deletions osclib/request_splitter.py
Expand Up @@ -34,20 +34,19 @@ def group_by(self, xpath):
def filter_only(self):
ret = []
for request in self.requests:
target_package = request.find('./action/target').get('package')
self.suppliment(request, target_package)
self.suppliment(request)
if self.filter_check(request):
ret.append(request)
return ret

def split(self):
for request in self.requests:
target_package = request.find('./action/target').get('package')
self.suppliment(request, target_package)
self.suppliment(request)

if not self.filter_check(request):
continue

target_package = request.find('./action/target').get('package')
if self.in_ring != (not self.api.ring_packages.get(target_package)):
# Request is of desired ring type.
key = self.group_key_build(request)
Expand All @@ -65,15 +64,18 @@ def split(self):
else:
self.other.append(request)

def suppliment(self, request, target_package):
def suppliment(self, request):
""" Provide additional information for grouping """
devel = self.devel_project_get(request, target_package)
target = request.find('./action/target')
target_project = target.get('project')
target_package = target.get('package')
devel = self.devel_project_get(target_project, target_package)
if devel:
request.find('./action/source').set('devel_project', devel)
target.set('devel_project', devel)

ring = self.ring_get(target_package)
if ring:
request.find('./action/target').set('ring', ring)
target.set('ring', ring)

request_id = int(request.get('id'))
if request_id in self.requests_ignored:
Expand All @@ -89,12 +91,10 @@ def ring_get(self, target_package):
return ring[len(self.api.crings)+1:]
return None

def devel_project_get(self, request, target_project):
# Preserve logic from adi and note that not Leap development friendly.
source = request.find('./action/source')
devel = self.api.get_devel_project(source.get('project'), source.get('package'))
def devel_project_get(self, target_project, target_package):
devel = self.api.get_devel_project(target_project, target_package)
if devel is None and self.api.project.startswith('openSUSE:'):
devel = self.api.get_devel_project('openSUSE:Factory', target_project)
devel = self.api.get_devel_project('openSUSE:Factory', target_package)
return devel

def filter_check(self, request):
Expand Down

0 comments on commit 569b600

Please sign in to comment.