def run(self): """Run the sync""" pkgs = DBSession.query(Package) distros = DBSession.query(Distro) for distro in distros: self.log.info("Synchronizing %s..." % distro.name) builds = self.get_latest_builds(distro) for build in builds: self.log.info("Processing %s..." % build.name) pkg = pkgs.filter(and_(Package.name==build.name, Package.distro==distro)).first() if not pkg and build.blocked: self.log.debug("Ignoring %s: it was never sync-ed and is " "now blocked" % build.name) continue elif not pkg and not build.blocked: pkg = Package(name=build.name, distro=distro, evr=build.evr) DBSession.add(pkg) self.log.debug("%s is a newly sync-ed package" % pkg.name) elif pkg and build.blocked: self.log.warning("%s has been blocked, deleting it" % pkg.name) DBSession.delete(pkg) elif pkg and not build.blocked: if pkg.evr != build.evr: self.log.debug("%s was updated to %s" % (pkg, build.evr)) pkg.evr = build.evr try: pkg.upstream = self.get_upstream(pkg) self.log.debug("Found package upstream: %s" % pkg.upstream) except SyncError as e: self.log.error(e) pkg.upstream = None continue try: pkg.upstream_evr = self.get_upstream_evr(pkg) self.log.debug("Found package upstream evr: %s" % pkg.upstream_evr) except YumError as e: self.log.error(e) pkg.upstream_evr = None continue transaction.commit()
def remove(request): DBSession.delete(request.context) return {}