Skip to content

Commit 36449b7

Browse files
committed
WIP: add several helpers to connector for query
WIP usage of implemented ErrataConnector::get_filter and other helpers - get_releases_for_product - get_open_advisories_for_release - get_open_advisories_for_release_filter Note: errata endpoint releases and products have to be special handled to include extra [] and multiple entries if you want them Related: #132
1 parent 48e843b commit 36449b7

File tree

1 file changed

+44
-0
lines changed

1 file changed

+44
-0
lines changed

errata_tool/connector.py

+44
Original file line numberDiff line numberDiff line change
@@ -346,3 +346,47 @@ def get_filter(self, endpoint, filter_arg, **kwargs):
346346
return {'data': self.get_paginated_data(url)}
347347

348348
return self._get(url)
349+
350+
def get_releases_for_product(self, product_name_or_id,
351+
return_ids_only=True):
352+
"""search for and return list of releases by name or id of product"""
353+
args = {'is_active': 'true', 'enabled': 'true'}
354+
355+
try:
356+
args['id'] = int(product_name_or_id)
357+
except ValueError:
358+
args['name'] = product_name_or_id
359+
360+
data = self.get_filter('/api/v1/releases', 'filter', **args)
361+
if return_ids_only:
362+
return [i['id'] for i in data['data']]
363+
364+
return data
365+
366+
def get_open_advisories_for_release(self, release_id):
367+
data = self._get('/errata/errata_for_release/' +
368+
'{0}.json'.format(release_id))
369+
370+
ADVISORY_STATES = ('NEW_FILES', 'QE', 'REL_PREP', 'PUSH_READY')
371+
advisory_ids = set()
372+
373+
for advisory_result in data:
374+
if advisory_result['status'] in ADVISORY_STATES:
375+
advisory_ids.add(advisory_result['id'])
376+
return list(advisory_ids)
377+
378+
def get_open_advisories_for_release_filter(self, release_id,
379+
return_ids_only=True):
380+
"""Return list of open advisories for a release either id's or json"""
381+
382+
data = self.get_filter(
383+
'/errata', 'errata_filter[filter_params]',
384+
show_type_RHBA=1, show_type_RHEA=1, show_type_RHSA=1,
385+
show_state_NEW_FILES=1, show_state_QE=1, show_state_REL_PREP=1,
386+
show_state_PUSH_READY=1, open_closed_option='exclude',
387+
release=release_id)
388+
389+
if return_ids_only:
390+
return [i['id'] for i in data]
391+
392+
return data

0 commit comments

Comments
 (0)