[trigger] On tente un truc plus simple

This commit is contained in:
Pierre-Elliott Bécue 2014-06-12 19:26:50 +02:00
parent 9346d174e2
commit 50d067aee8
7 changed files with 44 additions and 29 deletions

View file

@ -18,11 +18,14 @@ import socket
import gestion.config.trigger as trigger_config
import gestion.affichage as affichage
import sys
from gestion.trigger.host import trigger
hostname = socket.gethostname().split(".")[0]
import importlib
triggerhost = importlib.import_module("gestion.trigger.hosts.%s" % (hostname,))
services = {}
for config_service in trigger_config.services[hostname]:
services[config_service] = importlib.import_module("gestion.trigger.services.%s" % (config_service,))
logger = clogger.CLogger("trigger", "info")
class EvenementListener(cmb.AsynchronousConsumer):
@ -45,13 +48,14 @@ class EvenementListener(cmb.AsynchronousConsumer):
"""
about = basic_deliver.routing_key.split(".")[1]
origin = properties.app_id
message_id = properties.message_id
# Peut-être utile plus tard
#origin = properties.app_id
#message_id = properties.message_id
logger.info('Received message # %s from %s: %s',
basic_deliver.delivery_tag, properties.app_id, body)
body = cPickle.loads(body)
try:
triggerhost.trigger(about)(body)
trigger(about)(body)
except AttributeError:
logger.warning('No suitable trigger found for message # %s from %s: %s on host %s. Discarding it.',
basic_deliver.delivery_tag, properties.app_id, body, hostname)
@ -86,8 +90,8 @@ if __name__ == '__main__':
parser.add_argument('-d', '--daemon', help="Écouter sur civet en arrière plan.", action="store_true")
parser.add_argument('-h', '--help', help="Affiche ce message et quitte.", action="store_true")
# For each service supposingly managed by host, generate one parser option
for service in trigger_config.services[hostname]:
parser.add_argument('--%s' % (service,), help="Force la régénération du service %s." % (service,), action="store_true")
for arg_service in trigger_config.services[hostname]:
parser.add_argument('--%s' % (arg_service,), help="Force la régénération du service %s." % (arg_service,), action="store_true")
args = parser.parse_args()
if args.help:
@ -95,18 +99,18 @@ if __name__ == '__main__':
sys.exit(0)
elif args.all:
# Regenerates all services availables, don't crash on nonexistant ones
for service in trigger_config.services[hostname]:
for host_service in trigger_config.services[hostname]:
try:
print affichage.style(" (Ré)Génération du service %s" % (service,), "cyan")
triggerhost.trigger(service)(True)
print affichage.style(" (Ré)Génération du service %s" % (host_service,), "cyan")
trigger(host_service)(True)
except AttributeError:
print "No suitable trigger handle found for service %s on host %s" % (service, hostname)
print "No suitable trigger handle found for service %s on host %s" % (host_service, hostname)
elif args.daemon:
# Daemonize the trigger app, in order to listen and execute commands from civet.
daemonize()
else:
# If not all and not daemon, try all services one by one.
for service in trigger_config.services[hostname]:
if getattr(args, service, False) == True:
print affichage.style(" (Ré)Génération du service %s" % (service,), "cyan")
triggerhost.trigger(service)(True)
for arg_service in trigger_config.services[hostname]:
if getattr(args, arg_service, False) == True:
print affichage.style(" (Ré)Génération du service %s" % (arg_service,), "cyan")
trigger(arg_service)(True)