scripts/gestion/trigger/services/event.py
2014-06-12 19:26:50 +02:00

59 lines
1.7 KiB
Python

#!/bin/bash /usr/scripts/python.sh
# -*- coding: utf-8 -*-
#
# Trigger library, designed to send events messages.
#
# Author : Pierre-Elliott Bécue <becue@crans.org>
# License : GPLv3
# Date : 18/05/2014
import cmb
import cPickle
import gestion.config.trigger as trigger_config
from gestion.trigger.host import record
import cranslib.clogger as clogger
import pika
logger = clogger.CLogger("trigger", "info")
class Event(cmb.BasicProducer):
"""
Event tracker
"""
def __init__(self, app_id):
"""Extended
"""
logger.info("Starting trigger Event program…")
super(Event, self).__init__(trigger_config.master, 'trigger.event', app_id)
self._connection = self.connect()
self.get_chan()
def send_message(self, routing_key, body):
"""Sends basic message with app_id and body
"""
try:
logger.info("Sending message %s with routing_key %s.", body, routing_key)
body = cPickle.dumps(body)
self._channel.basic_publish(exchange=self._exchange_name,
routing_key=routing_key,
body=body,
properties=pika.BasicProperties(
delivery_mode=2,
app_id=self._app_id,
))
except:
print "Failure in trigger.event"
raise
def announce(self, body):
self.send_message("trigger.announce", body)
@record
def event(body={}):
"""Trigger event qui transcrit toute modif ldap en truc exploitable par
trigger. Warning, bootstrap incoming.
"""
pass