Пример #1
0
    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
Пример #2
0
    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
Пример #3
0
    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
        ]
Пример #4
0
    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"]))
Пример #5
0
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