Last active
November 13, 2016 03:17
-
-
Save kentfredric/82c2bace9025954b3f61fc268165c230 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| import json | |
| import pprint | |
| import zmq | |
| def _dist_gentoo(x): return x["distro"] == "Gentoo" | |
| def _package_gentoo(x): return x["package_name"] | |
| def version_update(msg): | |
| message = msg['message'] | |
| best_version = message['upstream_version'] | |
| project_name = message['project']['name'] | |
| distros = map(_package_gentoo, filter(_dist_gentoo,message['packages'])) | |
| if distros: | |
| print("version.update for %s version %s (%s)" % ( project_name, best_version, pprint.pformat(distros) )) | |
| else: | |
| print("(unhandled) version.update for %s version %s" % (project_name, best_version)) | |
| def new_mapping(msg): | |
| message = msg['message'] | |
| if message['distro'] == "Gentoo": | |
| print("map.new: %s added %s => %s / %s" % ( message['agent'], message['new'], message['project'], msg['project']['backend'])) | |
| else: | |
| print("(unhandled) map.new for %s: %s" % ( message['distro'], message['project'] )) | |
| def new_project(msg): | |
| print("project.add %s => %s" % ( msg['project']['name'], msg['project']['backend'] )) | |
| def update_mapping(msg): | |
| print("map.update for %s" % ( msg['project']['name'] )) | |
| def project_edit(msg): | |
| print("project.edit for %s" %s ( msg['project']['name'] )) | |
| def project_flag(msg): | |
| print("project.flag for %s" %s ( msg['project']['name'] )) | |
| def unhandled(topic, msg): | |
| print("Unhandled topic %s => %s" % ( topic, pprint.pformat(msg) )) | |
| def handle_result(topic, message): | |
| payload = json.loads(message) | |
| msg = payload['msg'] | |
| if topic == "org.release-monitoring.prod.anitya.project.version.update": | |
| return version_update(msg) | |
| if topic == "org.release-monitoring.prod.anitya.project.map.new": | |
| return new_mapping(msg) | |
| if topic == "org.release-monitoring.prod.anitya.project.add": | |
| return new_project(msg) | |
| if topic == "org.release-monitoring.prod.anitya.project.map.update": | |
| return update_mapping(msg) | |
| if topic == "org.release-monitoring.prod.anitya.project.edit": | |
| return project_edit(msg) | |
| if topic == "org.release-monitoring.prod.anitya.project.flag": | |
| return project_flag(msg) | |
| return unhandled(topic, msg) | |
| def listen_and_print(): | |
| #endpoint = 'tcp://release-monitoring.org:9940' | |
| #endpoint = 'tcp://hub.fedoraproject.org:9940' | |
| #topic = 'org.release-monitoring.prod.anitya.' | |
| topic = 'org.' | |
| ctx = zmq.Context() | |
| s = ctx.socket(zmq.SUB) | |
| # s.connect('tcp://hub.fedoraproject.org:9940') | |
| s.connect('tcp://release-monitoring.org:9940') | |
| # s.connect('tcp://fedmsg.olasd.eu:9940') | |
| s.setsockopt(zmq.SUBSCRIBE, topic) | |
| poller = zmq.Poller() | |
| poller.register(s, zmq.POLLIN) | |
| while True: | |
| evts = poller.poll() | |
| topic, msg = s.recv_multipart() | |
| handle_result(topic, msg) | |
| if __name__ == "__main__": | |
| listen_and_print() |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Output: | |
| project.add Email-Filter => CPAN (perl) | |
| map.new: http://oid.fox.geek.nz/kentfredric added dev-perl/Email-Filter => Email-Filter / CPAN (perl) | |
| version.update for Email-Filter version 1.034 ([u'dev-perl/Email-Filter']) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment