def get_updates(self, number_of_updates: int = 3) -> List: """ Get specific number of latest updates in bodhi :param number_of_updates: int :return: None """ # https://github.com/fedora-infra/bodhi/issues/3058 from bodhi.client.bindings import BodhiClient b = BodhiClient() results = b.query( packages=self.dg.package_config.downstream_package_name)["updates"] logger.debug("Bodhi updates fetched.") stable_branches: Set[str] = set() all_updates = [[ result["title"], result["karma"], result["status"], result["release"]["branch"], ] for result in results] updates = [] for [update, karma, status, branch] in all_updates: # Don't return more than one stable update per branch if branch not in stable_branches or status != "stable": updates.append([update, karma, status]) if status == "stable": stable_branches.add(branch) if len(updates) == number_of_updates: break return updates
def get_testing_updates(self, update_alias: Optional[str]) -> List: from bodhi.client.bindings import BodhiClient b = BodhiClient() results = b.query( alias=update_alias, packages=self.dg.package_config.downstream_package_name, status="testing", )["updates"] logger.debug("Bodhi updates with status 'testing' fetched.") return results
def get_updates(self, number_of_updates: int = 3) -> List: """ Get specific number of latest updates in bodhi :param number_of_updates: int :return: None """ # https://github.com/fedora-infra/bodhi/issues/3058 from bodhi.client.bindings import BodhiClient b = BodhiClient() results = b.query(packages=self.dg.package_name)["updates"] if len(results) > number_of_updates: results = results[:number_of_updates] return [ [result["title"], result["karma"], result["status"]] for result in results ]
def get_updates(self, number_of_updates: int = 3) -> None: """ Get specific number of latest updates in bodhi :param number_of_updates: int :return: None """ logger.info("\nLatest bodhi updates:") # https://github.com/fedora-infra/bodhi/issues/3058 from bodhi.client.bindings import BodhiClient b = BodhiClient() results = b.query(packages=self.dg.package_name)["updates"] if len(results) > number_of_updates: results = results[:number_of_updates] table = [[result["title"], result["karma"], result["status"]] for result in results] logger.info(tabulate(table, headers=["Update", "Karma", "status"]))
class UpdatePromoter(object): def __init__(self, dry_run=False): self._client = BodhiClient() self._client.init_username() self._dry_run = dry_run self._log_prefix = '' if dry_run: self._log_prefix = 'dry run: ' def promote_update(self, update, status='stable'): print('{}{} - requesting {}'.format(self._log_prefix, update.title, status)) request_params = { 'update': update.alias, 'request': status, } if not self._dry_run: self._client.request(**request_params) def promote_updates(self, updates, status='stable'): for update in updates: if status in ['stable', 'batched' ] and not update.meets_testing_requirements: print('{}skipping {} - not eligible for {}'.format( self._log_prefix, update.title, status)) continue if update.request == status: continue self.promote_update(update, status) def get_updates(self, release, package=None, status='testing'): query_params = { 'mine': True, 'releases': release, 'rows_per_page': 100, 'status': status, } if package: query_params['packages'] = package return self._client.query(**query_params).updates