Ejemplo n.º 1
0
    def list(self, build=None, tg_errors=None, mine=False, release=None, 
             show_expired=False, **kw):
        query = []
        title = '%d Buildroot Overrides'
        if mine:
            show_expired = True
            query.append(
                BuildRootOverride.q.submitter == identity.current.user_name)
            title += ' submitted by %s' % identity.current.user_name
        if release:
            rel = Release.byName(release)
            query.append(
                BuildRootOverride.q.releaseID == rel.id)
            title += ' for %s' % rel.long_name
        if not show_expired:
            query.append(
                BuildRootOverride.q.date_expired == None)

        overrides = BuildRootOverride.select(AND(*query))

        if request_format() == 'json':
            overrides = [o.__json__() for o in overrides]
            num_items = len(overrides)
        else:
            num_items = overrides.count()
        return dict(overrides=overrides,
                    title=title % num_items,
                    num_items=num_items,
                    show_expired=show_expired,
                    mine=mine)
Ejemplo n.º 2
0
def expire_buildroot_overrides():
    """ Iterate over all of the buildroot overrides, expiring appropriately """
    log.info('Running expire_buildroot_overrides job')
    now = datetime.utcnow()
    for override in BuildRootOverride.select(BuildRootOverride.q.date_expired == None):
        if override.expiration and now > override.expiration:
            log.info('Automatically expiring buildroot override: %s' %
                     override.build)

            # Hack around overrides w/o a release.
            if not override.release:
                try:
                    build = PackageBuild.byNvr(override.build)
                    if len(build.updates):
                        override.release = build.updates[0].release
                        print "Fixing release for %s: %s" % (override.build,
                                override.release.name)
                        override.untag()
                        override.date_expired = now
                    else:
                        log.error("Cannot determine release for override: %s" % override)
                except SQLObjectNotFound:
                    log.error("Cannot find build for override: %s" % override)
            else:
                override.untag()
                override.date_expired = now

    log.info('expire_buildroot_overrides job complete!')
Ejemplo n.º 3
0
def save_db():
    ## Save each release and it's metrics
    releases = []
    for release in Release.select():
        rel = {}
        for attr in ('name', 'long_name', 'id_prefix', 'dist_tag',
                     'locked', 'metrics'):
            rel[attr] = getattr(release, attr)
        releases.append(rel)

    updates = []
    all_updates = PackageUpdate.select()
    progress = ProgressBar(maxValue=all_updates.count())

    for update in all_updates:
        data = {}
        data['title'] = update.title
        data['builds'] = [(build.package.name, build.nvr) for build in update.builds]
        data['date_submitted'] = update.date_submitted
        data['date_pushed'] = update.date_pushed
        data['date_modified'] = update.date_modified
        data['release'] = [update.release.name, update.release.long_name,
                           update.release.id_prefix, update.release.dist_tag]
        data['submitter'] = update.submitter
        data['update_id'] = hasattr(update, 'update_id') and update.update_id or update.updateid
        data['type'] = update.type
        data['karma'] = update.karma
        data['cves'] = [cve.cve_id for cve in update.cves]
        data['bugs'] = []
        for bug in update.bugs:
            data['bugs'].append([bug.bz_id, bug.title, bug.security])
            if hasattr(bug, 'parent'):
                data['bugs'][-1].append(bug.parent)
            else:
                data['bugs'][-1].append(False)
        data['status'] = update.status
        data['pushed'] = update.pushed
        data['notes'] = update.notes
        data['request'] = update.request
        data['comments'] = [(c.timestamp, c.author, c.text, c.karma, c.anonymous) for c in update.comments]
        if hasattr(update, 'approved'):
            data['approved'] = update.approved
        else:
            data['approved'] = None

        updates.append(data)
        progress()

    # Save all buildroot overrides
    overrides = []
    for override in BuildRootOverride.select():
        try:
            overrides.append(override.__json__())
        except:
            print("Removing stray override: %s" % override)
            override.destroySelf()

    dump = file('bodhi-pickledb-%s' % time.strftime("%y%m%d.%H%M"), 'w')
    pickle.dump({'updates': updates, 'releases': releases, 'overrides': overrides}, dump)
    dump.close()
Ejemplo n.º 4
0
    def list(self,
             build=None,
             tg_errors=None,
             mine=False,
             release=None,
             show_expired=False,
             **kw):
        query = []
        title = '%d Buildroot Overrides'
        if mine:
            query.append(
                BuildRootOverride.q.submitter == identity.current.user_name)
            title += ' submitted by %s' % identity.current.user_name
        if release:
            rel = Release.byName(release)
            query.append(BuildRootOverride.q.releaseID == rel.id)
            title += ' for %s' % rel.long_name
        if not show_expired:
            query.append(BuildRootOverride.q.date_expired == None)

        overrides = BuildRootOverride.select(AND(*query))

        if request_format() == 'json':
            overrides = [o.__json__() for o in overrides]
            num_items = len(overrides)
        else:
            num_items = overrides.count()
        return dict(overrides=overrides,
                    title=title % num_items,
                    num_items=num_items,
                    show_expired=show_expired,
                    mine=mine)
Ejemplo n.º 5
0
def expire_buildroot_overrides():
    """ Iterate over all of the buildroot overrides, expiring appropriately """
    log.info('Running expire_buildroot_overrides job')
    now = datetime.utcnow()
    for override in BuildRootOverride.select(
            BuildRootOverride.q.date_expired == None):
        if override.expiration and now > override.expiration:
            log.info('Automatically expiring buildroot override: %s' %
                     override.build)

            # Hack around overrides w/o a release.
            if not override.release:
                try:
                    build = PackageBuild.byNvr(override.build)
                    if len(build.updates):
                        override.release = build.updates[0].release
                        print "Fixing release for %s: %s" % (
                            override.build, override.release.name)
                        override.untag()
                        override.date_expired = now
                    else:
                        log.error("Cannot determine release for override: %s" %
                                  override)
                except SQLObjectNotFound:
                    log.error("Cannot find build for override: %s" % override)
            else:
                override.untag()
                override.date_expired = now

    log.info('expire_buildroot_overrides job complete!')
Ejemplo n.º 6
0
def expire_buildroot_overrides():
    """ Iterate over all of the buildroot overrides, expiring appropriately """
    log.info('Running expire_buildroot_overrides job')
    now = datetime.utcnow()
    for override in BuildRootOverride.select(BuildRootOverride.date_expired == None):
        if now > override.expiration:
            log.info('Automatically expiring buildroot override: %s' %
                     override.build)
            override.untag()
            override.date_expired = now
    log.info('expire_buildroot_overrides job complete!')
Ejemplo n.º 7
0
def expire_buildroot_overrides():
    """ Iterate over all of the buildroot overrides, expiring appropriately """
    log.info('Running expire_buildroot_overrides job')
    now = datetime.utcnow()
    for override in BuildRootOverride.select(
            BuildRootOverride.date_expired == None):
        if now > override.expiration:
            log.info('Automatically expiring buildroot override: %s' %
                     override.build)
            override.untag()
            override.date_expired = now
    log.info('expire_buildroot_overrides job complete!')
Ejemplo n.º 8
0
def main():
    load_config()
    __connection__ = hub = PackageHub("bodhi")
    if len(sys.argv) != 2:
        print "Usage: %s <release>" % sys.argv[0]
        sys.exit(1)
    try:
        release = Release.byName(sys.argv[1].upper())
    except SQLObjectNotFound:
        print "Cannot find Release '%s'" % sys.argv[1]
        sys.exit(1)

    updates = PackageUpdate.select(PackageUpdate.q.releaseID == release.id)
    progress = ProgressBar(maxValue=updates.count())
    print "Destroying all updates, comments, and bugs associated with %s" % release.name

    for update in updates:
        for comment in update.comments:
            comment.destroySelf()
        for build in update.builds:
            build.destroySelf()
        for bug in update.bugs:
            if len(bug.updates) == 1:
                bug.destroySelf()
        update.destroySelf()
        progress()

    overrides = BuildRootOverride.select(
        BuildRootOverride.releaseID == release.id)
    num_overrides = overrides.count()
    if num_overrides:
        progress = ProgressBar(maxValue=num_overrides)
        print "Destroying all buildroot overrides associated with %s" % release.name
        for override in overrides:
            override.destroySelf()
            progress()

    release.destroySelf()
    hub.commit()
    print
Ejemplo n.º 9
0
def main():
    load_config()
    __connection__ = hub = PackageHub("bodhi")
    if len(sys.argv) != 2:
        print "Usage: %s <release>" % sys.argv[0]
        sys.exit(1)
    try:
        release = Release.byName(sys.argv[1].upper())
    except SQLObjectNotFound:
        print "Cannot find Release '%s'" % sys.argv[1]
        sys.exit(1)

    updates = PackageUpdate.select(PackageUpdate.q.releaseID == release.id)
    progress = ProgressBar(maxValue=updates.count())
    print "Destroying all updates, comments, and bugs associated with %s" % release.name

    for update in updates:
        for comment in update.comments:
            comment.destroySelf()
        for build in update.builds:
            build.destroySelf()
        for bug in update.bugs:
            if len(bug.updates) == 1:
                bug.destroySelf()
        update.destroySelf()
        progress()

    overrides = BuildRootOverride.select(BuildRootOverride.releaseID==release.id)
    num_overrides = overrides.count()
    if num_overrides:
        progress = ProgressBar(maxValue=num_overrides)
        print "Destroying all buildroot overrides associated with %s" % release.name
        for override in overrides:
            override.destroySelf()
            progress()

    release.destroySelf()
    hub.commit()
    print
Ejemplo n.º 10
0
def save_db():
    ## Save each release and it's metrics
    releases = []
    for release in Release.select():
        rel = {}
        for attr in ('name', 'long_name', 'id_prefix', 'dist_tag', 'locked',
                     'metrics'):
            rel[attr] = getattr(release, attr)
        releases.append(rel)

    updates = []
    all_updates = PackageUpdate.select()
    progress = ProgressBar(maxValue=all_updates.count())

    for update in all_updates:
        data = {}
        data['title'] = update.title
        data['builds'] = [(build.package.name, build.nvr)
                          for build in update.builds]
        data['date_submitted'] = update.date_submitted
        data['date_pushed'] = update.date_pushed
        data['date_modified'] = update.date_modified
        data['release'] = [
            update.release.name, update.release.long_name,
            update.release.id_prefix, update.release.dist_tag
        ]
        data['submitter'] = update.submitter
        data['update_id'] = hasattr(
            update, 'update_id') and update.update_id or update.updateid
        data['type'] = update.type
        data['karma'] = update.karma
        data['cves'] = [cve.cve_id for cve in update.cves]
        data['bugs'] = []
        for bug in update.bugs:
            data['bugs'].append([bug.bz_id, bug.title, bug.security])
            if hasattr(bug, 'parent'):
                data['bugs'][-1].append(bug.parent)
            else:
                data['bugs'][-1].append(False)
        data['status'] = update.status
        data['pushed'] = update.pushed
        data['notes'] = update.notes
        data['request'] = update.request
        data['comments'] = [(c.timestamp, c.author, c.text, c.karma,
                             c.anonymous) for c in update.comments]
        if hasattr(update, 'approved'):
            data['approved'] = update.approved
        else:
            data['approved'] = None

        updates.append(data)
        progress()

    # Save all buildroot overrides
    overrides = []
    for override in BuildRootOverride.select():
        try:
            overrides.append(override.__json__())
        except:
            print("Removing stray override: %s" % override)
            override.destroySelf()

    dump = file('bodhi-pickledb-%s' % time.strftime("%y%m%d.%H%M"), 'w')
    pickle.dump(
        {
            'updates': updates,
            'releases': releases,
            'overrides': overrides
        }, dump)
    dump.close()