def handle_monitor_toggle(self, msg): status = msg['msg']['status'] name = msg['msg']['package']['name'] homepage = msg['msg']['package']['upstream_url'] self.log.info("Considering monitored %r with %r" % (name, homepage)) if not status: self.log.info(".. but it was turned off. Dropping.") return anitya = hotness.anitya.Anitya(self.anitya_url) results = anitya.search_by_homepage(name, homepage) total = results['total'] if total > 1: self.log.info("%i projects with %r %r already exist in anitya." % (total, name, homepage)) return elif total == 1: # The project might exist in anitya, but it might not be mapped to # a Fedora package yet, so map it if necessary. project = results['projects'][0] anitya.login(self.anitya_username, self.anitya_password) reason = None try: anitya.map_new_package(name, project) except hotness.anitya.AnityaException as e: reason = str(e) self.log.warn("Failed to map: %r" % reason) self.publish("project.map", msg=dict(trigger=msg, project=project, success=not bool(reason), reason=reason)) # After mapping, force a check for new tarballs anitya.force_check(project) else: # OTHERWISE, there is *nothing* on anitya about it, so add one. self.log.info("Saw 0 matching projects on anitya. Adding.") anitya.login(self.anitya_username, self.anitya_password) reason = None try: anitya.add_new_project(name, homepage) except hotness.anitya.AnityaException as e: reason = str(e) self.log.warn("Failed to create: %r" % reason) self.publish("project.map", msg=dict(trigger=msg, success=not bool(reason), reason=reason))
def handle_new_package(self, msg, package): name = package['name'] homepage = package['upstream_url'] if not homepage: # If there is not homepage set at the outset in pkgdb, there's # nothing smart we can do with respect to anitya, so.. wait. # pkgdb has a cron script that runs weekly that updates the # upstream url there, so when that happens, we'll be triggered # and can try again. self.log.warn("New package %r has no homepage. Dropping." % name) return self.log.info("Considering new package %r with %r" % (name, homepage)) anitya = hotness.anitya.Anitya(self.anitya_url) results = anitya.search_by_homepage(name, homepage) projects = results['projects'] total = results['total'] if total > 1: self.log.warning("Fail. %i matching projects on anitya." % total) self.publish("project.map", msg=dict(trigger=msg, total=total, success=False)) elif total == 1: self.log.info("Found one match on Anitya.") project = projects[0] anitya.login(self.anitya_username, self.anitya_password) reason = None try: anitya.map_new_package(name, project) except hotness.anitya.AnityaException as e: reason = str(e) self.log.warn("Failed to map: %r" % reason) self.publish("project.map", msg=dict(trigger=msg, project=project, success=not bool(reason), reason=reason)) else: self.log.info("Saw 0 matching projects on anitya. Adding.") anitya.login(self.anitya_username, self.anitya_password) reason = None try: anitya.add_new_project(name, homepage) except hotness.anitya.AnityaException as e: reason = str(e) self.log.warn("Failed to create: %r" % reason) self.publish("project.map", msg=dict(trigger=msg, success=not bool(reason), reason=reason))
def handle_monitor_toggle(self, msg): status = msg['msg']['status'] name = msg['msg']['package']['name'] homepage = msg['msg']['package']['upstream_url'] self.log.info("Considering monitored %r with %r" % (name, homepage)) if not status: self.log.info(".. but it was turned off. Dropping.") return anitya = hotness.anitya.Anitya(self.anitya_url) results = anitya.search_by_homepage(name, homepage) total = results['total'] if total > 1: self.log.info("%i projects with %r %r already exist in anitya." % ( total, name, homepage)) return elif total == 1: # The project might exist in anitya, but it might not be mapped to # a Fedora package yet, so map it if necessary. project = results['projects'][0] anitya.login(self.anitya_username, self.anitya_password) reason = None try: anitya.map_new_package(name, project) except hotness.anitya.AnityaException as e: reason = str(e) self.publish("project.map", msg=dict( trigger=msg, project=project, success=not bool(reason), reason=reason)) # After mapping, force a check for new tarballs anitya.force_check(project) else: # OTHERWISE, there is *nothing* on anitya about it, so add one. self.log.info("Saw 0 matching projects on anitya. Adding.") anitya.login(self.anitya_username, self.anitya_password) reason = None try: anitya.add_new_project(name, homepage) except hotness.anitya.AnityaException as e: reason = str(e) self.publish("project.map", msg=dict( trigger=msg, success=not bool(reason), reason=reason))
def handle_new_package(self, msg, package): name = package['name'] homepage = package['upstream_url'] if not homepage: # If there is not homepage set at the outset in pkgdb, there's # nothing smart we can do with respect to anitya, so.. wait. # pkgdb has a cron script that runs weekly that updates the # upstream url there, so when that happens, we'll be triggered # and can try again. self.log.warn("New package %r has no homepage. Dropping." % name) return self.log.info("Considering new package %r with %r" % (name, homepage)) anitya = hotness.anitya.Anitya(self.anitya_url) results = anitya.search_by_homepage(name, homepage) projects = results['projects'] total = results['total'] if total > 1: self.log.warning("Fail. %i matching projects on anitya." % total) self.publish("project.map", msg=dict( trigger=msg, total=total, success=False)) elif total == 1: self.log.info("Found one match on Anitya.") project = projects[0] anitya.login(self.anitya_username, self.anitya_password) reason = None try: anitya.map_new_package(name, project) except hotness.anitya.AnityaException as e: reason = str(e) self.publish("project.map", msg=dict( trigger=msg, project=project, success=not bool(reason), reason=reason)) else: self.log.info("Saw 0 matching projects on anitya. Adding.") anitya.login(self.anitya_username, self.anitya_password) reason = None try: anitya.add_new_project(name, homepage) except hotness.anitya.AnityaException as e: reason = str(e) self.publish("project.map", msg=dict( trigger=msg, success=not bool(reason), reason=reason))
def handle_monitor_toggle(self, msg): """ Message handler for packages whose monitoring is adjusted in pkgdb. If a package has its monitoring turned off, this does nothing. If it is turned on, this ensures the package exists in Anitya and forces Anitya to check for the latest version. Topic: 'org.fedoraproject.prod.pkgdb.package.monitor.update' """ status = msg['msg']['status'] name = msg['msg']['package']['name'] homepage = msg['msg']['package']['upstream_url'] _log.info("Considering monitored %r with %r" % (name, homepage)) if not status: _log.info(".. but it was turned off. Dropping.") return anitya = hotness.anitya.Anitya(self.anitya_url) results = anitya.search_by_homepage(name, homepage) total = results['total'] if total > 1: _log.info("%i projects with %r %r already exist in anitya." % (total, name, homepage)) return elif total == 1: # The project might exist in anitya, but it might not be mapped to # a Fedora package yet, so map it if necessary. project = results['projects'][0] anitya.login(self.anitya_username, self.anitya_password) reason = None try: anitya.map_new_package(name, project) except hotness.anitya.AnityaException as e: reason = str(e) _log.warn("Failed to map: %r" % reason) self.publish("project.map", msg=dict(trigger=msg, project=project, success=not bool(reason), reason=reason)) # After mapping, force a check for new tarballs anitya.force_check(project) else: # OTHERWISE, there is *nothing* on anitya about it, so add one. _log.info("Saw 0 matching projects on anitya. Adding.") anitya.login(self.anitya_username, self.anitya_password) reason = None try: anitya.add_new_project(name, homepage) except hotness.anitya.AnityaException as e: reason = str(e) _log.warn("Failed to create: %r" % reason) self.publish("project.map", msg=dict(trigger=msg, success=not bool(reason), reason=reason))
def handle_new_package(self, msg, package): """ Message handler for newly added packages in pkgdb. When a new package is added to pkgdb, this ensures that there is a mapping in release-monitoring.org for that package. If it is not present, this adds it, if possible. Topic: 'org.fedoraproject.prod.pkgdb.package.new', Publish a message to ``project.map`` with the results of the attempt map the package to a project. """ name = package['name'] homepage = package['upstream_url'] if not homepage: # If there is not homepage set at the outset in pkgdb, there's # nothing smart we can do with respect to anitya, so.. wait. # pkgdb has a cron script that runs weekly that updates the # upstream url there, so when that happens, we'll be triggered # and can try again. _log.warn("New package %r has no homepage. Dropping." % name) return _log.info("Considering new package %r with %r" % (name, homepage)) anitya = hotness.anitya.Anitya(self.anitya_url) results = anitya.search_by_homepage(name, homepage) projects = results['projects'] total = results['total'] if total > 1: _log.warning("Fail. %i matching projects on anitya." % total) self.publish("project.map", msg=dict(trigger=msg, total=total, success=False)) elif total == 1: _log.info("Found one match on Anitya.") project = projects[0] anitya.login(self.anitya_username, self.anitya_password) reason = None try: anitya.map_new_package(name, project) except hotness.anitya.AnityaException as e: reason = str(e) _log.warn("Failed to map: %r" % reason) self.publish("project.map", msg=dict(trigger=msg, project=project, success=not bool(reason), reason=reason)) else: _log.info("Saw 0 matching projects on anitya. Adding.") anitya.login(self.anitya_username, self.anitya_password) reason = None try: anitya.add_new_project(name, homepage) except hotness.anitya.AnityaException as e: reason = str(e) _log.warn("Failed to create: %r" % reason) self.publish("project.map", msg=dict(trigger=msg, success=not bool(reason), reason=reason))