From 3a2bbadfb345ed46d04dca78b4444344489b80fb Mon Sep 17 00:00:00 2001 From: Jon Schlueter Date: Mon, 20 Apr 2020 12:44:35 -0400 Subject: [PATCH] WIP: add several helpers to connector for query WIP usage of implemented ErrataConnector::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: https://github.com/red-hat-storage/errata-tool/issues/132 --- errata_tool/connector.py | 43 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/errata_tool/connector.py b/errata_tool/connector.py index 761a3f2..8c11d39 100644 --- a/errata_tool/connector.py +++ b/errata_tool/connector.py @@ -344,3 +344,46 @@ def get_filter(self, endpoint, filter_arg, **kwargs): return {'data': self.get_paginated_data(url)} return self._get(url) + + def get_releases_for_product(self, product_name_or_id, return_ids_only=True): + """search for and return list of releases by name or id of product""" + args = {'is_active': 'true', 'enabled': 'true'} + + try: + args['id'] = int(product_name_or_id) + except ValueError: + args['name'] = product_name_or_id + + data = self.filter('/api/v1/releases', 'filter', **args) + if return_ids_only: + return [i['id'] for i in data['data']] + + return data + + def get_open_advisories_for_release(self, release_id): + data = self._get('/errata/errata_for_release/' + + '{0}.json'.format(release_id)) + + ADVISORY_STATES = ('NEW_FILES', 'QE', 'REL_PREP', 'PUSH_READY') + advisory_ids = set() + + for advisory_result in data: + if advisory_result['status'] in ADVISORY_STATES: + advisory_ids.add(advisory_result['id']) + return list(advisory_ids) + + def get_open_advisories_for_release_filter(self, release_id, + return_ids_only=True): + """Return list of open advisories for a release either id's or json""" + + data = self.filter( + '/errata', 'errata_filter[filter_params]', + show_type_RHBA=1, show_type_RHEA=1, show_type_RHSA=1, + show_state_NEW_FILES=1, show_state_QE=1, show_state_REL_PREP=1, + show_state_PUSH_READY=1, open_closed_option='exclude', + release=release_id) + + if return_ids_only: + return [i['id'] for i in data] + + return data