Skip to content

Instantly share code, notes, and snippets.

@kentfredric
Last active November 13, 2016 03:17
Show Gist options
  • Select an option

  • Save kentfredric/82c2bace9025954b3f61fc268165c230 to your computer and use it in GitHub Desktop.

Select an option

Save kentfredric/82c2bace9025954b3f61fc268165c230 to your computer and use it in GitHub Desktop.
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()
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