#!/usr/bin/python3 import json from pathlib import Path import pika import random import sys import time MY_TASKS_DIR = Path(__file__).parent / "tasks" def listen_events(): connection = pika.BlockingConnection(pika.URLParameters("amqps://opensuse:opensuse@rabbit.opensuse.org")) channel = connection.channel() channel.exchange_declare(exchange='pubsub', exchange_type='topic', passive=True, durable=False) result = channel.queue_declare("", exclusive=True) queue_name = result.method.queue channel.queue_bind(exchange='pubsub', queue=queue_name,routing_key='opensuse.obs.package.commit') print(' [*] Waiting for logs. To exit press CTRL+C') def callback(ch, method, properties, body): if method.routing_key not in ("opensuse.obs.package.commit",): return body = json.loads(body) if 'project' in body and 'package' in body and body['project'] == 'openSUSE:Factory': if '/' in body['package']: return (MY_TASKS_DIR / body['package']).touch() print(" [x] %r:%r" % (method.routing_key, body['package'])) channel.basic_consume(queue_name, callback, auto_ack=True) channel.start_consuming() def main(): while True: try: listen_events(); except pika.exceptions.ConnectionClosed: time.sleep(random.randint(10,100)) if __name__ == '__main__': main()