Add monitor for commits
This commit is contained in:
		
							
								
								
									
										37
									
								
								opensuse-monitor.py
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										37
									
								
								opensuse-monitor.py
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,37 @@
 | 
			
		||||
#!/usr/bin/python3
 | 
			
		||||
import json
 | 
			
		||||
from pathlib import Path
 | 
			
		||||
import pika
 | 
			
		||||
import sys
 | 
			
		||||
 | 
			
		||||
MY_TASKS_DIR = Path(__file__).parent / "tasks"
 | 
			
		||||
 | 
			
		||||
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=True)
 | 
			
		||||
 | 
			
		||||
result = channel.queue_declare("", exclusive=True)
 | 
			
		||||
queue_name = result.method.queue
 | 
			
		||||
 | 
			
		||||
channel.queue_bind(exchange='pubsub',
 | 
			
		||||
                   queue=queue_name,routing_key='#')
 | 
			
		||||
 | 
			
		||||
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()
 | 
			
		||||
		Reference in New Issue
	
	Block a user