def prepare(self):
        package_name = self.kwds['package_name']
        xapian_conn = get_connector('xapian')
        result = xapian_conn.get_package_info(package_name)
        self.package_name = package_name
        self.package_info = result
        latest_build = twc.Variable(default='Koji unavailable')
        super(Details, self).prepare()

        if result['name'] == package_name:
            self.summary = result['summary']
            self.description = result['description']
        else:
            for subpkg in result['sub_pkgs']:
                if subpkg['name'] == package_name:
                    self.summary = subpkg['summary']
                    self.description = subpkg['description']
                    break

        self.package_info = result

        koji = get_connector('koji')
        try:
            builds = koji._koji_client.getLatestBuilds('rawhide',
                                                       package=result['name'])
            if builds:
                self.latest_build = builds[0]['version'] + '-' + \
                                    builds[0]['release']
            else:
                self.latest_build = 'Not built in rawhide'
        except Exception, e:
            log.error('Unable to query koji: %s' % str(e))
    def prepare(self):
        package_name = self.kwds['package_name']
        xapian_conn = get_connector('xapian')
        result = xapian_conn.get_package_info(package_name)
        self.package_name = package_name
        self.package_info = result
        latest_build = twc.Variable(default='Koji unavailable')
        super(Details, self).prepare()

        if result['name'] == package_name:
            self.summary = result['summary']
            self.description = result['description']
        else:
            for subpkg in result['sub_pkgs']:
                if subpkg['name'] == package_name:
                    self.summary = subpkg['summary']
                    self.description = subpkg['description']
                    break

        self.package_info = result

        koji = get_connector('koji')
        try:
            builds = koji._koji_client.getLatestBuilds('rawhide', package=result['name'])
            if builds:
                self.latest_build = builds[0]['version'] + '-' + \
                                    builds[0]['release']
            else:
                self.latest_build = 'Not built in rawhide'
        except Exception, e:
            log.error('Unable to query koji: %s' % str(e))
Exemple #3
0
    def prepare(self):
        super(ContentsWidget, self).prepare()

        self.package_name = self.kwds['package_name']
        self.subpackage_of = self.kwds.get('subpackage_of', '')
        xapian = get_connector('xapian')
        koji = get_connector('koji')

        if self.subpackage_of:
            latest_builds = xapian.get_latest_builds(self.subpackage_of)
        else:
            latest_builds = xapian.get_latest_builds(self.package_name)

        if not latest_builds.get('Rawhide'):
            return

        self.default_build_id = latest_builds['Rawhide']['build_id']
        self.latest_builds = latest_builds
        build_ids = []
        for build_info in self.latest_builds.values():
            build_id = build_info['build_id']
            if build_id:
                build_ids.append(build_id)

        self.default_build_id = build_ids[0]

        tasks = koji.get_tasks_for_builds(build_ids)

        self.repo_to_archtask_map = {}
        # filter tasks to only contain buildArch tasks
        for (repo_name, build_info) in self.latest_builds.items():
            arch_tasks = []

            build_tasks = tasks.get(build_info['build_id'], None)
            if not build_tasks:
                continue

            for subtasks in build_tasks.values():
                for task in subtasks:
                    if task['method'] == 'buildArch':
                        arch_tasks.append(task)
                        name = self.package_name
                        version = build_info['version']
                        release = build_info['release']
                        arch = task['label']
                        nvr = "%s-%s-%s" % (name, version, release)
                        filename = "%s.%s.rpm" % (nvr, arch)
                        task['nvr'] = nvr
                        task['filename'] = filename
                        task['package'] = name

            build_info['arch_tasks'] = arch_tasks
            self.repo_to_archtask_map[repo_name] = arch_tasks
Exemple #4
0
    def prepare(self):
        super(ContentsWidget, self).prepare()

        self.package_name = self.kwds['package_name']
        self.subpackage_of = self.kwds.get('subpackage_of', '')
        xapian = get_connector('xapian')
        koji = get_connector('koji')

        if self.subpackage_of:
            latest_builds = xapian.get_latest_builds(self.subpackage_of)
        else:
            latest_builds = xapian.get_latest_builds(self.package_name)

        if not latest_builds or not latest_builds.get('Rawhide'):
            return

        self.default_build_id = latest_builds['Rawhide']['build_id']
        self.latest_builds = latest_builds
        build_ids = []
        for build_info in self.latest_builds.values():
            build_id = build_info['build_id']
            if build_id:
                build_ids.append(build_id)

        self.default_build_id = build_ids[0]

        tasks = koji.get_tasks_for_builds(build_ids)

        self.repo_to_archtask_map = {}
        # filter tasks to only contain buildArch tasks
        for (repo_name, build_info) in self.latest_builds.items():
            arch_tasks = []

            build_tasks = tasks.get(build_info['build_id'], None)
            if not build_tasks:
                continue

            for subtasks in build_tasks.values():
                for task in subtasks:
                    if task['method'] == 'buildArch':
                        arch_tasks.append(task)
                        name = self.package_name
                        version = build_info['version']
                        release = build_info['release']
                        arch = task['label']
                        nvr = "%s-%s-%s" % (name, version, release)
                        filename = "%s.%s.rpm" % (nvr, arch)
                        task['nvr'] = nvr
                        task['filename'] = filename
                        task['package'] = name

            build_info['arch_tasks'] = arch_tasks
            self.repo_to_archtask_map[repo_name] = arch_tasks
Exemple #5
0
    def prepare(self):
        super(ContentsWidget, self).prepare()

        self.package_name = self.kwds["package_name"]
        self.subpackage_of = self.kwds.get("subpackage_of", "")
        xapian = get_connector("xapian")
        koji = get_connector("koji")

        if self.subpackage_of:
            latest_builds = xapian.get_latest_builds(self.subpackage_of)
        else:
            latest_builds = xapian.get_latest_builds(self.package_name)

        if not latest_builds or not latest_builds.get("Rawhide"):
            return

        self.default_build_id = latest_builds["Rawhide"]["build_id"]
        self.latest_builds = latest_builds
        build_ids = []
        for build_info in self.latest_builds.values():
            build_id = build_info["build_id"]
            if build_id:
                build_ids.append(build_id)

        self.default_build_id = build_ids[0]

        tasks = koji.get_tasks_for_builds(build_ids)

        self.repo_to_archtask_map = {}
        # filter tasks to only contain buildArch tasks
        for (repo_name, build_info) in self.latest_builds.items():
            arch_tasks = []

            build_tasks = tasks.get(build_info["build_id"], None)
            if not build_tasks:
                continue

            for subtasks in build_tasks.values():
                for task in subtasks:
                    if task["method"] == "buildArch":
                        arch_tasks.append(task)
                        name = self.package_name
                        version = build_info["version"]
                        release = build_info["release"]
                        arch = task["label"]
                        nvr = "%s-%s-%s" % (name, version, release)
                        filename = "%s.%s.rpm" % (nvr, arch)
                        task["nvr"] = nvr
                        task["filename"] = filename
                        task["package"] = name

            build_info["arch_tasks"] = arch_tasks
            self.repo_to_archtask_map[repo_name] = arch_tasks
Exemple #6
0
    def prepare(self):

        # Signify that we haven't loaded any bugs yet.
        self.total_rows = -1

        releases = []
        self.filters = {'package': self.package}
        pkgdb = get_connector('pkgdb')
        collections = pkgdb.get_collection_table(active_only=True)

        for id, collection in collections.items():
            name = collection['name']
            ver = collection['version']
            label = "%s %s" % (name, ver)
            value = str(ver)
            if ver == 'devel':
                name = 'Rawhide'
                ver = 9999999
                label = 'Rawhide'
                value = 'rawhide'

            if name in ('Fedora', 'Rawhide', 'Fedora EPEL'):
                releases.append({
                    'label': label,
                    'value': value,
                    'version': ver
                })

        def _sort(a, b):
            return cmp(int(b['version']), int(a['version']))

        releases.sort(_sort)
        self.release_table = releases

        super(BugsGrid, self).prepare()
Exemple #7
0
    def prepare(self):
        releases = []
        self.filters = {'package': self.package}
        pkgdb = get_connector('pkgdb')
        collections = pkgdb.get_collection_table(active_only=True)

        for id, collection in collections.items():
            name = collection['name']
            ver = collection['version']
            label = "%s %s" % (name, ver)
            value = str(ver)
            if ver == 'devel':
                name = 'Rawhide'
                ver = 9999999
                label = 'Rawhide'
                value = 'rawhide'

            if name in ('Fedora', 'Rawhide', 'Fedora EPEL'):
                releases.append({'label': label, 'value': value, 'version': ver})

        def _sort(a,b):
            return cmp(int(b['version']), int(a['version']))

        releases.sort(_sort)
        self.release_table = releases

        super(BugsGrid, self).prepare()
    def prepare(self):
        super(ReleaseFilter, self).prepare()
        releases = []
        top_repo = os.path.join(config.get('git_repo_path'), self.package)
        bodhi = get_connector('bodhi')

        for collection in bodhi.get_all_releases():
            if collection['state'] != 'current':
                continue
            name = collection['id_prefix']
            ver = collection['version']
            label = collection['long_name']
            value = ""
            branchname = collection['branch']
            if branchname:
                repo_path = os.path.join(top_repo, branchname)
                if not os.path.isdir(repo_path):
                    continue
                value = branchname
            if label != 'Fedora devel' and name in ('FEDORA', 'FEDORA-EPEL'):
                releases.append({
                    'label': label,
                    'value': value,
                    'version': ver,
                    })
        self.releases_table = sorted(releases, reverse=True,
                cmp=lambda x, y: cmp(x['version'], y['version']))
        self.releases_table.insert(0, {'label': 'Rawhide', 'value': 'master'})
Exemple #9
0
    def prepare(self):

        # Signify that we haven't loaded any bugs yet.
        self.total_rows = -1

        releases = []
        self.filters = {'package': self.package}
        bodhi = get_connector('bodhi')

        for collection in bodhi.get_all_releases():
            if collection['state'] != 'current':
                continue
            name = collection['id_prefix']
            ver = collection['version']
            label = collection['long_name']
            value = str(ver)

            if name in ('FEDORA', 'Rawhide', 'FEDORA-EPEL'):
                releases.append({'label': label, 'value': value, 'version': ver})

        releases.append({'label': 'Rawhide', 'value': 'rawhide', 'version': 9999999})

        def _sort(a,b):
            return cmp(int(b['version']), int(a['version']))

        releases.sort(_sort)
        self.release_table = releases

        super(BugsGrid, self).prepare()
Exemple #10
0
 def poll(self):
     self.log.info("Cached cla_done graph")
     stats_cache = Shove(config.get('stats_cache'))
     fas_connector = get_connector('fas')
     data = fas_connector.group_membership_over_time()
     stats_cache['group_membership_cla_done'] = data
     return True
Exemple #11
0
    def prepare(self):

        # Signify that we haven't loaded any bugs yet.
        self.total_rows = -1

        releases = []
        self.filters = {"package": self.package}
        pkgdb = get_connector("pkgdb")
        collections = pkgdb.get_collection_table(active_only=True)

        for id, collection in collections.items():
            name = collection["name"]
            ver = collection["version"]
            label = "%s %s" % (name, ver)
            value = str(ver)
            if ver == "devel":
                name = "Rawhide"
                ver = 9999999
                label = "Rawhide"
                value = "rawhide"

            if name in ("Fedora", "Rawhide", "Fedora EPEL"):
                releases.append({"label": label, "value": value, "version": ver})

        def _sort(a, b):
            return cmp(int(b["version"]), int(a["version"]))

        releases.sort(_sort)
        self.release_table = releases

        super(BugsGrid, self).prepare()
Exemple #12
0
 def prepare(self):
     super(ReleaseFilter, self).prepare()
     releases = []
     top_repo = os.path.join(config.get('git_repo_path'), self.package)
     pkgdb = get_connector('pkgdb')
     collections = pkgdb.get_collection_table(active_only=True)
     for id, collection in collections.iteritems():
         name = collection['name']
         ver = collection['version']
         label = "%s %s" % (name, ver)
         value = ""
         branchname = collection['gitbranchname']
         if branchname:
             repo_path = os.path.join(top_repo, branchname)
             if not os.path.isdir(repo_path):
                 continue
             value = branchname
         if label != 'Fedora devel' and name in ('Fedora', 'Fedora EPEL'):
             releases.append({
                 'label': label,
                 'value': value,
                 'version': ver,
             })
     self.releases_table = sorted(
         releases,
         reverse=True,
         cmp=lambda x, y: cmp(x['version'], y['version']))
     self.releases_table.insert(0, {'label': 'Rawhide', 'value': 'master'})
Exemple #13
0
 def poll(self):
     self.log.info("Cached cla_done graph")
     stats_cache = Shove(config.get('stats_cache'))
     fas_connector = get_connector('fas')
     data = fas_connector.group_membership_over_time()
     stats_cache['group_membership_cla_done'] = data
     return True
Exemple #14
0
 def prepare(self):
     super(ReleaseFilter, self).prepare()
     releases = []
     top_repo = os.path.join(config.get('git_repo_path'), self.package)
     pkgdb = get_connector('pkgdb')
     collections = pkgdb.get_collection_table(active_only=True)
     for id, collection in collections.iteritems():
         name = collection['name']
         ver = collection['version']
         label = "%s %s" % (name, ver)
         value = ""
         branchname = collection['branchname']
         if branchname:
             repo_path = os.path.join(top_repo, branchname)
             if not os.path.isdir(repo_path):
                 continue
             value = branchname
         if label != 'Fedora devel' and name in ('Fedora', 'Fedora EPEL'):
             releases.append({
                 'label': label,
                 'value': value,
                 'version': ver,
                 })
     self.releases_table = sorted(releases, reverse=True,
             cmp=lambda x, y: cmp(x['version'], y['version']))
     self.releases_table.insert(0, {'label': 'Rawhide', 'value': 'master'})
Exemple #15
0
    def prepare(self):
        self.package_name = self.kwds["package_name"]
        self.subpackage_of = self.kwds.get("subpackage_of", "")
        main_pkg = self.package_name
        if self.subpackage_of:
            main_pkg = self.subpackage_of

        self.filters = {"package": main_pkg}
        self.rows_per_page = 10

        releases = []
        pkgdb = get_connector("pkgdb")
        collections = pkgdb.get_collection_table(active_only=True)

        for id, collection in collections.items():
            name = collection["name"]
            ver = collection["version"]
            label = "%s %s" % (name, ver)
            branchname = collection["gitbranchname"]
            value = ""
            if branchname:
                value = branchname
            if label != "Fedora devel" and name in ("Fedora", "Fedora EPEL"):
                releases.append({"label": label, "value": value, "version": ver})

        def _sort(a, b):
            return cmp(int(b["version"]), int(a["version"]))

        releases.sort(_sort)
        self.release_table = releases

        # Must do this last for our Grids
        super(Updates, self).prepare()
    def prepare(self):
        name = self.args.pop(0)
        self.kwds['package_name'] = name
        self.kwds['subpackage_of'] = ""
        self.package_name = name
        xapian_conn = get_connector('xapian')
        result = xapian_conn.get_package_info(name)
        self.package_info = result

        super(PackageWidget, self).prepare()

        if not result:
            tg.redirect('/s/' + name)

        if result['name'] == name:
            self.summary = result['summary']
            self.description = result['description']
        else:
            self.kwds['subpackage_of'] = result['name']
            for subpkg in result['sub_pkgs']:
                if subpkg['name'] == name:
                    self.summary = subpkg['summary']
                    self.description = subpkg['description']
                    break
            else:
                tg.redirect('/s/' + name)
    def prepare(self):
        name = self.args.pop(0)
        self.kwds['package_name'] = name
        self.kwds['subpackage_of'] = ""
        self.package_name = name
        xapian_conn = get_connector('xapian')
        result = xapian_conn.get_package_info(name)
        self.package_info = result

        super(PackageWidget, self).prepare()

        if not result:
            tg.redirect('/s/' + name)

        if result['name'] == name:
            self.summary = result['summary']
            self.description = result['description']
        else:
            self.kwds['subpackage_of'] = result['name']
            for subpkg in result['sub_pkgs']:
                if subpkg['name'] == name:
                    self.summary = subpkg['summary']
                    self.description = subpkg['description']
                    break
            else:
                tg.redirect('/s/' + name)
Exemple #18
0
    def prepare(self):
        self.package_name = self.kwds['package_name']
        self.subpackage_of = self.kwds.get('subpackage_of', '')
        xapian = get_connector('xapian')

        if self.subpackage_of:
            latest_builds = xapian.get_latest_builds(self.subpackage_of)
        else:
            latest_builds = xapian.get_latest_builds(self.package_name)

        self.default_build_id = latest_builds['Rawhide']['build_id']
        self.latest_builds = latest_builds
Exemple #19
0
    def prepare(self):
        self.package_name = self.kwds['package_name']
        self.subpackage_of = self.kwds.get('subpackage_of', '')
        xapian = get_connector('xapian')

        if self.subpackage_of:
            latest_builds = xapian.get_latest_builds(self.subpackage_of)
        else:
            latest_builds = xapian.get_latest_builds(self.package_name)

        self.default_build_id = latest_builds['Rawhide']['build_id']
        self.latest_builds = latest_builds
    def prepare(self):
        name = self.args.pop(0)
        self.kwds['package_name'] = name
        self.kwds['subpackage_of'] = ""
        self.package_name = name
        xapian_conn = get_connector('xapian')
        result = xapian_conn.get_package_info(name)
        self.package_info = result

        super(PackageWidget, self).prepare()

        if not result:
            tg.redirect('/s/' + name)

        if result['name'] == name:
            self.summary = result['summary']
            self.description = result['description']
        else:
            self.kwds['subpackage_of'] = result['name']
            for subpkg in result['sub_pkgs']:
                if subpkg['name'] == name:
                    self.summary = subpkg['summary']
                    self.description = subpkg['description']
                    break
            else:
                tg.redirect('/s/' + name)

        koji = get_connector('koji')
        try:
            builds = koji._koji_client.getLatestBuilds('rawhide',
                                                       package=result['name'])
            if builds:
                self.latest_build = builds[0]['version'] + '-' + \
                                    builds[0]['release']
            else:
                self.latest_build = 'Not built in rawhide'
        except Exception, e:
            log.error('Unable to query koji: %s' % str(e))
Exemple #21
0
    def prepare(self):
        name = self.args.pop(0)
        self.kwds['package_name'] = name
        self.kwds['subpackage_of'] = ""
        self.package_name = name
        xapian_conn = get_connector('xapian')
        result = xapian_conn.get_package_info(name)
        self.package_info = result

        super(PackageWidget, self).prepare()

        if not result:
            tg.redirect('/s/' + name)

        if result['name'] == name:
            self.summary = result['summary']
            self.description = result['description']
        else:
            self.kwds['subpackage_of'] = result['name']
            for subpkg in result['sub_pkgs']:
                if subpkg['name'] == name:
                    self.summary = subpkg['summary']
                    self.description = subpkg['description']
                    break
            else:
                tg.redirect('/s/' + name)

        koji = get_connector('koji')
        try:
            builds = koji._koji_client.getLatestBuilds('rawhide', package=result['name'])
            if builds:
                self.latest_build = builds[0]['version'] + '-' + \
                                    builds[0]['release']
            else:
                self.latest_build = 'Not built in rawhide'
        except Exception, e:
            log.error('Unable to query koji: %s' % str(e))
Exemple #22
0
    def prepare(self):
        super(Details, self).prepare()
        package_name = self.kwds['package_name']
        xapian_conn = get_connector('xapian')
        result = xapian_conn.get_package_info(package_name)

        if result['name'] == package_name:
            self.summary = result['summary']
            self.description = result['description']
        else:
            for subpkg in result['sub_pkgs']:
                if subpkg['name'] == package_name:
                    self.summary = subpkg['summary']
                    self.description = subpkg['description']
                    break

        self.package_info = result
    def prepare(self):
        super(Details, self).prepare()
        package_name = self.kwds['package_name']
        xapian_conn = get_connector('xapian')
        result = xapian_conn.get_package_info(package_name)

        if result['name'] == package_name:
            self.summary = result['summary']
            self.description = result['description']
        else:
            for subpkg in result['sub_pkgs']:
                if subpkg['name'] == package_name:
                    self.summary = subpkg['summary']
                    self.description = subpkg['description']
                    break

        self.package_info = result
    def prepare(self):
        package_name = self.kwds["package_name"]
        xapian_conn = get_connector("xapian")
        result = xapian_conn.get_package_info(package_name)
        self.package_name = package_name
        self.package_info = result
        super(Details, self).prepare()

        if result["name"] == package_name:
            self.summary = result["summary"]
            self.description = result["description"]
        else:
            for subpkg in result["sub_pkgs"]:
                if subpkg["name"] == package_name:
                    self.summary = subpkg["summary"]
                    self.description = subpkg["description"]
                    break

        self.package_info = result
Exemple #25
0
 def prepare(self):
     super(ReleaseFilter, self).prepare()
     releases = []
     top_repo = os.path.join(config.get("git_repo_path"), self.package)
     pkgdb = get_connector("pkgdb")
     collections = pkgdb.get_collection_table(active_only=True)
     for id, collection in collections.iteritems():
         name = collection["name"]
         ver = collection["version"]
         label = "%s %s" % (name, ver)
         value = ""
         branchname = collection["gitbranchname"]
         if branchname:
             repo_path = os.path.join(top_repo, branchname)
             if not os.path.isdir(repo_path):
                 continue
             value = branchname
         if label != "Fedora devel" and name in ("Fedora", "Fedora EPEL"):
             releases.append({"label": label, "value": value, "version": ver})
     self.releases_table = sorted(releases, reverse=True, cmp=lambda x, y: cmp(x["version"], y["version"]))
     self.releases_table.insert(0, {"label": "Rawhide", "value": "master"})
    def prepare(self):
        self.package_name = self.kwds['package_name']
        self.subpackage_of = self.kwds.get('subpackage_of', '')
        self.total_rows = -1
        main_pkg = self.package_name
        if self.subpackage_of:
            main_pkg = self.subpackage_of

        self.filters = {'package': main_pkg}
        self.rows_per_page = 10

        releases = []
        bodhi = get_connector('bodhi')

        for collection in bodhi.get_all_releases():
            if collection['state'] != 'current':
                continue
            name = collection['id_prefix']
            ver = collection['version']
            label = collection['long_name']
            branchname = collection['branch']
            value = ""
            if branchname:
                value = branchname
            if label != 'Fedora devel' and name in ('FEDORA', 'FEDORA-EPEL'
):
                releases.append({
                    'label': label,
                    'value': value,
                    'version': ver,
                    })

        def _sort(a,b):
            return cmp(int(b['version']), int(a['version']))

        releases.sort(_sort)
        self.release_table = releases

        # Must do this last for our Grids
        super(Updates, self).prepare()
Exemple #27
0
    def prepare(self):
        self.package_name = self.kwds['package_name']
        self.subpackage_of = self.kwds.get('subpackage_of', '')
        self.total_rows = -1
        main_pkg = self.package_name
        if self.subpackage_of:
            main_pkg = self.subpackage_of

        self.filters = {'package': main_pkg}
        self.rows_per_page = 10

        releases = []
        bodhi = get_connector('bodhi')

        for collection in bodhi.get_all_releases():
            if collection['state'] != 'current':
                continue
            name = collection['id_prefix']
            ver = collection['version']
            label = collection['long_name']
            branchname = collection['branch']
            value = ""
            if branchname:
                value = branchname
            if label != 'Fedora devel' and name in ('FEDORA', 'FEDORA-EPEL'):
                releases.append({
                    'label': label,
                    'value': value,
                    'version': ver,
                })

        def _sort(a, b):
            return cmp(int(b['version']), int(a['version']))

        releases.sort(_sort)
        self.release_table = releases

        # Must do this last for our Grids
        super(Updates, self).prepare()
Exemple #28
0
    def prepare(self):
        self.package_name = self.kwds['package_name']
        self.subpackage_of = self.kwds.get('subpackage_of', '')
        main_pkg = self.package_name
        if self.subpackage_of:
            main_pkg = self.subpackage_of

        self.filters = {'package': main_pkg}
        self.rows_per_page = 10

        releases = []
        pkgdb = get_connector('pkgdb')
        collections = pkgdb.get_collection_table(active_only=True)

        for id, collection in collections.items():
            name = collection['name']
            ver = collection['version']
            label = "%s %s" % (name, ver)
            branchname = collection['branchname']
            value = ""
            if branchname:
                value = branchname
            if label != 'Fedora devel' and name in ('Fedora', 'Fedora EPEL'
):
                releases.append({
                    'label': label,
                    'value': value,
                    'version': ver,
                    })

        def _sort(a,b):
            return cmp(int(b['version']), int(a['version']))

        releases.sort(_sort)
        self.release_table = releases

        # Must do this last for our Grids
        super(Updates, self).prepare()
Exemple #29
0
    def prepare(self):
        self.package_name = self.kwds['package_name']
        self.subpackage_of = self.kwds.get('subpackage_of', '')
        main_pkg = self.package_name
        if self.subpackage_of:
            main_pkg = self.subpackage_of

        self.filters = {'package': main_pkg}
        self.rows_per_page = 10

        releases = []
        pkgdb = get_connector('pkgdb')
        collections = pkgdb.get_collection_table(active_only=True)

        for id, collection in collections.items():
            name = collection['name']
            ver = collection['version']
            label = "%s %s" % (name, ver)
            branchname = collection['gitbranchname']
            value = ""
            if branchname:
                value = branchname
            if label != 'Fedora devel' and name in ('Fedora', 'Fedora EPEL'):
                releases.append({
                    'label': label,
                    'value': value,
                    'version': ver,
                })

        def _sort(a, b):
            return cmp(int(b['version']), int(a['version']))

        releases.sort(_sort)
        self.release_table = releases

        # Must do this last for our Grids
        super(Updates, self).prepare()
Exemple #30
0
    def prepare(self):

        # Signify that we haven't loaded any bugs yet.
        self.total_rows = -1

        releases = []
        self.filters = {'package': self.package}
        bodhi = get_connector('bodhi')

        for collection in bodhi.get_all_releases():
            if collection['state'] != 'current':
                continue
            name = collection['id_prefix']
            ver = collection['version']
            label = collection['long_name']
            value = str(ver)

            if name in ('FEDORA', 'Rawhide', 'FEDORA-EPEL'):
                releases.append({
                    'label': label,
                    'value': value,
                    'version': ver
                })

        releases.append({
            'label': 'Rawhide',
            'value': 'rawhide',
            'version': 9999999
        })

        def _sort(a, b):
            return cmp(int(b['version']), int(a['version']))

        releases.sort(_sort)
        self.release_table = releases

        super(BugsGrid, self).prepare()
    def query_active_releases(self, filters=None, **params):
        releases = list()
        queries = list()
        # Mapping of tag -> release
        release_tag = dict()
        # List of testing builds to query bodhi for
        testing_builds = list()
        # nvr -> release lookup table
        testing_builds_row = dict()
        if not filters:
            filters = dict()
        filters = self._query_updates_filter.filter(filters, conn=self)
        package = filters.get('package')
        koji = get_connector('koji')._koji_client
        koji.multicall = True

        releases_all = self.get_all_releases()
        releases_all.append({
            'dist_tag': 'rawhide',
            'long_name': 'Rawhide',
            'stable_tag': 'rawhide',
            'testing_tag': 'no_testing_tag_found',
            'state': 'current'
        })
        releases_all = sorted(releases_all,
                              key=lambda k: k['dist_tag'],
                              reverse=True)

        for release in releases_all:
            if release['state'] not in ['current', 'pending']\
              or 'Modular' in release['long_name']:
                continue
            tag = release['dist_tag']
            name = release['long_name']
            r = {
                'release': name,
                'stable_version': 'None',
                'testing_version': 'None'
            }
            if tag == 'rawhide':
                koji.listTagged(tag,
                                package=package,
                                latest=True,
                                inherit=True)
                queries.append(tag)
                release_tag[tag] = r
            else:
                stable_tag = release['stable_tag']
                testing_tag = release['testing_tag']

                koji.listTagged(stable_tag,
                                package=package,
                                latest=True,
                                inherit=True)
                queries.append(stable_tag)
                release_tag[stable_tag] = r
                koji.listTagged(testing_tag, package=package, latest=True)
                queries.append(testing_tag)
                release_tag[testing_tag] = r
            releases.append(r)

        results = koji.multiCall()

        for i, result in enumerate(results):
            if isinstance(result, dict):
                if 'faultString' in result:
                    log.error("FAULT: %s" % result['faultString'])
                else:
                    log.error("Can't find fault string in result: %s" % result)
            else:
                query = queries[i]
                row = release_tag[query]
                release = result[0]

                if query == 'dist-rawhide':
                    if release:
                        nvr = parse_build(release[0]['nvr'])
                        row['stable_version'] = HTML.tag(
                            'a',
                            c='%(version)s-%(release)s' % nvr,
                            href=koji_build_url % nvr)
                    else:
                        row['stable_version'] = \
                            'No builds tagged with %s' % tag
                    row['testing_version'] = HTML.tag('i', c='Not Applicable')
                    continue
                if release:
                    release = release[0]
                    if query.endswith('-testing'):
                        nvr = parse_build(release['nvr'])
                        row['testing_version'] = HTML.tag(
                            'a',
                            c='%(version)s-%(release)s' % nvr,
                            href=koji_build_url % nvr)
                        testing_builds.append(release['nvr'])
                        testing_builds_row[release['nvr']] = row
                    else:
                        # stable
                        nvr = parse_build(release['nvr'])
                        row['stable_version'] = HTML.tag(
                            'a',
                            c='%(version)s-%(release)s' % nvr,
                            href=koji_build_url % nvr)
                        if release['tag_name'].endswith('-updates'):
                            row['stable_version'] += ' (' + HTML.tag(
                                'a',
                                c='update',
                                href='%s/updates/?builds=%s' %
                                (self._prod_url, nvr['nvr'])) + ')'

        # If there are updates in testing, then query bodhi with a single call
        if testing_builds:
            data = self.call('updates', {'builds': ' '.join(testing_builds)})
            updates = data['updates']
            for up in updates:

                for build in up['builds']:
                    if build['nvr'] in testing_builds:
                        break
                else:
                    continue
                build = build['nvr']

                if up.karma > 1:
                    up.karma_icon = 'good'
                elif up.karma < 0:
                    up.karma_icon = 'bad'
                else:
                    up.karma_icon = 'meh'
                karma_ico_16 = '/images/16_karma-%s.png' % up.karma_icon
                karma_icon_url = \
                    self._request.environ.get('SCRIPT_NAME', '') + \
                    karma_ico_16
                karma = 'karma_%s' % up.karma_icon
                row = testing_builds_row[build]
                row['testing_version'] += " " + HTML.tag(
                    'div',
                    c=HTML.tag('a',
                               href="%s/updates/%s" %
                               (self._prod_url, up.alias),
                               c=HTML.tag('img', src=karma_icon_url) +
                               HTML.tag('span', c='%s karma' % up.karma)),
                    **{'class': '%s' % karma})

        return (len(releases), releases)
Exemple #32
0
    def query_active_releases(self, filters=None, **params):
        releases = []
        queries = []
        release_tag = {}  # Mapping of tag -> release
        testing_builds = []  # List of testing builds to query bodhi for
        testing_builds_row = {}  # nvr -> release lookup table
        if not filters: filters = {}
        filters = self._query_updates_filter.filter(filters, conn=self)
        package = filters.get('package')
        pkgdb = get_connector('pkgdb')
        koji = get_connector('koji')._koji_client
        koji.multicall = True

        for release in pkgdb.get_fedora_releases():
            #Tag is really koji_name in this context, not disttag
            tag = release[2]
            name = release[1]
            r = {
                'release': name,
                'stable_version': 'None',
                'testing_version': 'None'
            }
            if tag == 'rawhide':
                koji.listTagged(tag,
                                package=package,
                                latest=True,
                                inherit=True)
                queries.append(tag)
                release_tag[tag] = r
            else:
                if tag.endswith('epel'):
                    stable_tag = tag
                    testing_tag = tag + '-testing'
                else:
                    stable_tag = tag + '-updates'
                    testing_tag = stable_tag + '-testing'
                koji.listTagged(stable_tag,
                                package=package,
                                latest=True,
                                inherit=True)
                queries.append(stable_tag)
                release_tag[stable_tag] = r
                koji.listTagged(testing_tag, package=package, latest=True)
                queries.append(testing_tag)
                release_tag[testing_tag] = r
            releases.append(r)

        results = koji.multiCall()

        for i, result in enumerate(results):
            if isinstance(result, dict):
                if 'faultString' in result:
                    log.error("FAULT: %s" % result['faultString'])
                else:
                    log.error("Can't find fault string in result: %s" % result)
            else:
                query = queries[i]
                row = release_tag[query]
                release = result[0]

                if query == 'dist-rawhide':
                    if release:
                        nvr = parse_build(release[0]['nvr'])
                        row['stable_version'] = '%(version)s-%(release)s' % nvr
                    else:
                        row['stable_version'] = 'No builds tagged with %s' % tag
                    row['testing_version'] = HTML.tag('i', c='Not Applicable')
                    continue
                if release:
                    release = release[0]
                    if query.endswith('-testing'):
                        nvr = parse_build(release['nvr'])
                        row['testing_version'] = HTML.tag(
                            'a',
                            c='%(version)s-%(release)s' % nvr,
                            href='%s/%s' % (self._prod_url, nvr['nvr']))
                        testing_builds.append(release['nvr'])
                        testing_builds_row[release['nvr']] = row
                    else:  # stable
                        nvr = parse_build(release['nvr'])
                        if release['tag_name'].endswith('-updates'):
                            row['stable_version'] = HTML.tag(
                                'a',
                                c='%(version)s-%(release)s' % nvr,
                                href='%s/%s' % (self._prod_url, nvr['nvr']))
                        else:
                            row['stable_version'] = '%(version)s-%(release)s' % nvr

        # If there are updates in testing, then query bodhi with a single call
        if testing_builds:
            updates = self.call('get_updates_from_builds',
                                {'builds': ' '.join(testing_builds)})
            if updates[1]:
                for build in updates[1]:
                    if build == 'tg_flash':
                        continue
                    up = updates[1][build]
                    if up.karma > 1:
                        up.karma_icon = 'good'
                    elif up.karma < 0:
                        up.karma_icon = 'bad'
                    else:
                        up.karma_icon = 'meh'
                    karma_icon_url = self._request.environ.get('SCRIPT_NAME', '') + \
    '/images/16_karma-%s.png' % up.karma_icon
                    karma = 'karma_%s' % up.karma_icon
                    row = testing_builds_row[build]
                    row['testing_version'] += HTML.tag(
                        'div',
                        c=HTML.tag('a',
                                   href="%s/%s" % (self._prod_url, up.title),
                                   c=HTML.tag('img', src=karma_icon_url) +
                                   HTML.tag('span', c='%s karma' % up.karma)),
                        **{'class': '%s' % karma})

        return (len(releases), releases)
    def query_builds(self,
                     start_row=None,
                     rows_per_page=10,
                     order=-1,
                     sort_col=None,
                     filters=None,
                     **params):

        if not filters:
            filters = {}
        filters = self._query_builds_filter.filter(filters, conn=self)

        username = filters.get('user', '')
        package = filters.get('package', '')
        state = filters.get('state')

        complete_before = None
        complete_after = None

        # need a better way to specify this
        # completed_filter = filters.get('completed')
        # if completed_filter:
        #    if completed_filter['op'] in ('>', 'after'):
        #        complete_after = completed_filter['value']
        #    elif completed_filter['op'] in ('<', 'before'):
        #        complete_before = completed_filter['value']

        if order < 0:
            order = '-' + sort_col
        else:
            order = sort_col

        user = None
        id = None
        if username:
            user = self._koji_client.getUser(username)

            # we need to check if this user exists
            if username and not user:
                return (0, [])

            id = user['id']

        pkg_id = None
        if package:
            pkg_id = self._koji_client.getPackageID(package)

        queryOpts = None

        if state:
            try:
                state = int(state)
            except ValueError:
                state_list = []
                for value in state.split(','):
                    state_list.append(int(value))
                    state = state_list

        elif state == '':
            state = None

        qo = {}
        if not (start_row is None):
            qo['offset'] = int(start_row)

        if not (rows_per_page is None):
            qo['limit'] = int(rows_per_page)

        if order:
            qo['order'] = order

        if qo:
            queryOpts = qo

        countQueryOpts = {'countOnly': True}

        self._koji_client.multicall = True
        self._koji_client.listBuilds(packageID=pkg_id,
                                     userID=id,
                                     state=state,
                                     completeBefore=complete_before,
                                     completeAfter=complete_after,
                                     queryOpts=countQueryOpts)

        self._koji_client.listBuilds(packageID=pkg_id,
                                     userID=id,
                                     state=state,
                                     completeBefore=complete_before,
                                     completeAfter=complete_after,
                                     queryOpts=queryOpts)

        results = self._koji_client.multiCall()
        builds_list = results[1][0]
        total_count = results[0][0]
        for b in builds_list:
            state = b['state']
            b['state_str'] = koji.BUILD_STATES[state].lower()
            start = DateTimeDisplay(b['creation_time'])
            complete = b['completion_time']
            completion_display = None
            if not complete:
                completion_display = {
                    'when': 'In progress...',
                    'should_display_time': False,
                    'time': '',
                }
                completion_display['elapsed'] = start.age(granularity='minute')
            else:
                completion_display = {}
                complete = DateTimeDisplay(b['completion_time'])
                completion_display['elapsed'] = start.age(complete,
                                                          granularity='minute')
                completion_display['when'] = complete.age(
                    granularity='minute', general=True) + ' ago'

                ident = self._request.environ.get('repoze.who.identity')
                if ident:
                    username = ident.get('repoze.who.userid')
                    tz = ident['person']['timezone']
                    completion_display['time'] = \
                        complete.astimezone(tz).strftime('%I:%M %p %Z')
                else:
                    completion_display['time'] = \
                        complete.datetime.strftime('%I:%M %p') + ' UTC'

            b['completion_time_display'] = completion_display

        # Query the bodhi update status for each build
        if filters.get('query_updates'):
            bodhi = get_connector('bodhi')
            bodhi.add_updates_to_builds(builds_list)

        self._koji_client.multicall = False

        return (total_count, builds_list)
    def query_active_releases(self, filters=None, **params):
        releases = list()
        queries = list()
        # Mapping of tag -> release
        release_tag = dict()
        # List of testing builds to query bodhi for
        testing_builds = list()
        # nvr -> release lookup table
        testing_builds_row = dict()
        if not filters:
            filters = dict()
        filters = self._query_updates_filter.filter(filters, conn=self)
        package = filters.get('package')
        koji = get_connector('koji')._koji_client
        koji.multicall = True

        releases_all = self.get_all_releases()
        releases_all.append({'dist_tag': 'rawhide',
                             'long_name':'Rawhide',
                             'stable_tag': 'rawhide',
                             'testing_tag': 'no_testing_tag_found',
                             'state': 'current'})
        releases_all = sorted(releases_all, key=lambda k: k['dist_tag'], reverse=True)

        for release in releases_all:
            if release['state'] not in ['current', 'pending']\
              or 'Modular' in release['long_name']:
                continue
            tag = release['dist_tag']
            name = release['long_name']
            r = {'release': name, 'stable_version': 'None',
                 'testing_version': 'None'}
            if tag == 'rawhide':
                koji.listTagged(
                    tag, package=package, latest=True, inherit=True)
                queries.append(tag)
                release_tag[tag] = r
            else:
                stable_tag = release['stable_tag']
                testing_tag = release['testing_tag']

                koji.listTagged(stable_tag, package=package,
                                latest=True, inherit=True)
                queries.append(stable_tag)
                release_tag[stable_tag] = r
                koji.listTagged(testing_tag, package=package, latest=True)
                queries.append(testing_tag)
                release_tag[testing_tag] = r
            releases.append(r)

        results = koji.multiCall()

        for i, result in enumerate(results):
            if isinstance(result, dict):
                if 'faultString' in result:
                    log.error("FAULT: %s" % result['faultString'])
                else:
                    log.error("Can't find fault string in result: %s" % result)
            else:
                query = queries[i]
                row = release_tag[query]
                release = result[0]

                if query == 'dist-rawhide':
                    if release:
                        nvr = parse_build(release[0]['nvr'])
                        row['stable_version'] = HTML.tag(
                            'a',
                            c='%(version)s-%(release)s' % nvr,
                            href=koji_build_url % nvr)
                    else:
                        row['stable_version'] = \
                            'No builds tagged with %s' % tag
                    row['testing_version'] = HTML.tag('i', c='Not Applicable')
                    continue
                if release:
                    release = release[0]
                    if query.endswith('-testing'):
                        nvr = parse_build(release['nvr'])
                        row['testing_version'] = HTML.tag(
                            'a',
                            c='%(version)s-%(release)s' % nvr,
                            href=koji_build_url % nvr)
                        testing_builds.append(release['nvr'])
                        testing_builds_row[release['nvr']] = row
                    else:
                        # stable
                        nvr = parse_build(release['nvr'])
                        row['stable_version'] = HTML.tag(
                            'a',
                            c='%(version)s-%(release)s' % nvr,
                            href=koji_build_url % nvr)
                        if release['tag_name'].endswith('-updates'):
                            row['stable_version'] +=  ' (' + HTML.tag(
                                'a', c='update',
                                href='%s/updates/?builds=%s' % (
                                    self._prod_url, nvr['nvr']
                                )
                            ) + ')'

        # If there are updates in testing, then query bodhi with a single call
        if testing_builds:
            data = self.call('updates', {
                'builds': ' '.join(testing_builds)
            })
            updates = data['updates']
            for up in updates:

                for build in up['builds']:
                    if build['nvr'] in testing_builds:
                        break
                else:
                    continue
                build = build['nvr']

                if up.karma > 1:
                    up.karma_icon = 'good'
                elif up.karma < 0:
                    up.karma_icon = 'bad'
                else:
                    up.karma_icon = 'meh'
                karma_ico_16 = '/images/16_karma-%s.png' % up.karma_icon
                karma_icon_url = \
                    self._request.environ.get('SCRIPT_NAME', '') + \
                    karma_ico_16
                karma = 'karma_%s' % up.karma_icon
                row = testing_builds_row[build]
                row['testing_version'] += " " + HTML.tag(
                    'div',
                    c=HTML.tag(
                        'a', href="%s/updates/%s" % (
                            self._prod_url, up.alias),
                        c=HTML.tag(
                            'img', src=karma_icon_url) + HTML.tag(
                            'span',
                            c='%s karma' % up.karma)),
                        **{'class': '%s' % karma})

        return (len(releases), releases)
    def query_active_releases(self, filters=None, **params):
        releases = []
        queries = []
        release_tag = {} # Mapping of tag -> release
        testing_builds = [] # List of testing builds to query bodhi for
        testing_builds_row = {} # nvr -> release lookup table
        if not filters: filters = {}
        filters = self._query_updates_filter.filter(filters, conn=self)
        package = filters.get('package')
        pkgdb = get_connector('pkgdb')
        koji = get_connector('koji')._koji_client
        koji.multicall = True

        for release in pkgdb.get_fedora_releases():
            #Tag is really koji_name in this context, not disttag
            tag = release[2]
            name = release[1]
            r = {'release': name, 'stable_version': 'None',
                 'testing_version': 'None'}
            if tag == 'rawhide':
                koji.listTagged(tag, package=package, latest=True, inherit=True)
                queries.append(tag)
                release_tag[tag] = r
            else:
                if tag.endswith('epel'):
                    stable_tag = tag
                    testing_tag = tag + '-testing'
                else:
                    stable_tag = tag + '-updates'
                    testing_tag = stable_tag + '-testing'
                koji.listTagged(stable_tag, package=package,
                                latest=True, inherit=True)
                queries.append(stable_tag)
                release_tag[stable_tag] = r
                koji.listTagged(testing_tag, package=package, latest=True)
                queries.append(testing_tag)
                release_tag[testing_tag] = r
            releases.append(r)

        results = koji.multiCall()

        for i, result in enumerate(results):
            if isinstance(result, dict):
                if 'faultString' in result:
                    log.error("FAULT: %s" % result['faultString'])
                else:
                    log.error("Can't find fault string in result: %s" % result)
            else:
                query = queries[i]
                row = release_tag[query]
                release = result[0]

                if query == 'dist-rawhide':
                    if release:
                        nvr = parse_build(release[0]['nvr'])
                        row['stable_version'] = '%(version)s-%(release)s' % nvr
                    else:
                        row['stable_version'] = 'No builds tagged with %s' % tag
                    row['testing_version'] = HTML.tag('i', c='Not Applicable')
                    continue
                if release:
                    release = release[0]
                    if query.endswith('-testing'):
                        nvr = parse_build(release['nvr'])
                        row['testing_version'] = HTML.tag('a',
                                c='%(version)s-%(release)s' % nvr,
                                href='%s/%s' % (self._prod_url, nvr['nvr']))
                        testing_builds.append(release['nvr'])
                        testing_builds_row[release['nvr']] = row
                    else: # stable
                        nvr = parse_build(release['nvr'])
                        if release['tag_name'].endswith('-updates'):
                            row['stable_version'] = HTML.tag('a',
                                    c='%(version)s-%(release)s' % nvr,
                                    href='%s/%s' % (self._prod_url, nvr['nvr']))
                        else:
                            row['stable_version'] = '%(version)s-%(release)s' % nvr

        # If there are updates in testing, then query bodhi with a single call
        if testing_builds:
            updates = self.call('get_updates_from_builds', {
                'builds': ' '.join(testing_builds)
                })
            if updates[1]:
                for build in updates[1]:
                    if build == 'tg_flash':
                        continue
                    up = updates[1][build]
                    if up.karma > 1:
                        up.karma_icon = 'good'
                    elif up.karma < 0:
                        up.karma_icon = 'bad'
                    else:
                        up.karma_icon = 'meh'
                    karma_icon_url = self._request.environ.get('SCRIPT_NAME', '') + \
				'/images/16_karma-%s.png' % up.karma_icon
                    karma = 'karma_%s' % up.karma_icon
                    row = testing_builds_row[build]
                    row['testing_version'] += HTML.tag('div',
                            c=HTML.tag('a', href="%s/%s" % (
                                self._prod_url, up.title),
                                c=HTML.tag('img',
                                    src=karma_icon_url) +
                                HTML.tag('span', c='%s karma' %
                                    up.karma)),
                                **{'class': '%s' %karma})

        return (len(releases), releases)
    def query_builds(self, start_row=None,
                     rows_per_page=10,
                     order=-1,
                     sort_col=None,
                     filters=None,
                     **params):

        if not filters:
            filters = {}
        filters = self._query_builds_filter.filter(filters, conn=self)

        username = filters.get('user', '')
        package = filters.get('package', '')
        state = filters.get('state')

        complete_before = None
        complete_after = None

        # need a better way to specify this
        # completed_filter = filters.get('completed')
        # if completed_filter:
        #    if completed_filter['op'] in ('>', 'after'):
        #        complete_after = completed_filter['value']
        #    elif completed_filter['op'] in ('<', 'before'):
        #        complete_before = completed_filter['value']

        if order < 0:
            order = '-' + sort_col
        else:
            order = sort_col

        user = None
        id = None
        if username:
            user = self._koji_client.getUser(username)

            # we need to check if this user exists
            if username and not user:
                return (0, [])

            id = user['id']

        pkg_id = None
        if package:
            pkg_id = self._koji_client.getPackageID(package)

        queryOpts = None

        if state:
            try:
                state = int(state)
            except ValueError:
                state_list = []
                for value in state.split(','):
                    state_list.append(int(value))
                    state = state_list

        elif state == '':
            state = None

        qo = {}
        if not (start_row is None):
            qo['offset'] = int(start_row)

        if not (rows_per_page is None):
            qo['limit'] = int(rows_per_page)

        if order:
            qo['order'] = order

        if qo:
            queryOpts = qo

        countQueryOpts = {'countOnly': True}

        self._koji_client.multicall = True
        self._koji_client.listBuilds(
            packageID=pkg_id,
            userID=id,
            state=state,
            completeBefore=complete_before,
            completeAfter=complete_after,
            queryOpts=countQueryOpts)

        self._koji_client.listBuilds(
            packageID=pkg_id,
            userID=id,
            state=state,
            completeBefore=complete_before,
            completeAfter=complete_after,
            queryOpts=queryOpts)

        results = self._koji_client.multiCall()
        builds_list = results[1][0]
        total_count = results[0][0]
        for b in builds_list:
            state = b['state']
            b['state_str'] = koji.BUILD_STATES[state].lower()
            start = DateTimeDisplay(b['creation_time'])
            complete = b['completion_time']
            completion_display = None
            if not complete:
                completion_display = {
                    'when': 'In progress...',
                    'should_display_time': False,
                    'time': '',
                    }
                completion_display['elapsed'] = start.age(granularity='minute')
            else:
                completion_display = {}
                complete = DateTimeDisplay(b['completion_time'])
                completion_display['elapsed'] = start.age(
                    complete,
                    granularity='minute')
                completion_display['when'] = complete.age(
                    granularity='minute', general=True) + ' ago'

                ident = self._request.environ.get('repoze.who.identity')
                if ident:
                    username = ident.get('repoze.who.userid')
                    tz = ident['person']['timezone']
                    completion_display['time'] = \
                        complete.astimezone(tz).strftime('%I:%M %p %Z')
                else:
                    completion_display['time'] = \
                        complete.datetime.strftime('%I:%M %p') + ' UTC'

            b['completion_time_display'] = completion_display

        # Query the bodhi update status for each build
        if filters.get('query_updates'):
            bodhi = get_connector('bodhi')
            bodhi.add_updates_to_builds(builds_list)

        self._koji_client.multicall = False

        return (total_count, builds_list)