On splitte services et parsers (qui ne sont utilisés que par civet.event)
This commit is contained in:
parent
f24e463da5
commit
06095f5580
7 changed files with 96 additions and 46 deletions
4
gestion/trigger/parsers/__init__.py
Normal file
4
gestion/trigger/parsers/__init__.py
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
#!/usr/bin/env python
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
# Nauthing
|
40
gestion/trigger/parsers/dhcp.py
Normal file
40
gestion/trigger/parsers/dhcp.py
Normal file
|
@ -0,0 +1,40 @@
|
||||||
|
#!/bin/bash /usr/scripts/python.sh
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
#
|
||||||
|
# DHCP's trigger parser.
|
||||||
|
#
|
||||||
|
# Author : Pierre-Elliott Bécue <becue@crans.org>
|
||||||
|
# Licence : GPLv3
|
||||||
|
# Date : 19/11/2014
|
||||||
|
#
|
||||||
|
# TODO : Take care of each XXX or TODO and think about updating
|
||||||
|
# gestion/config/dhcp when submitting for production, because
|
||||||
|
# of .test files.
|
||||||
|
"""
|
||||||
|
Handles the parser for trigger about dhcp service
|
||||||
|
This currently is used for mac/IP updates of LDAP database.
|
||||||
|
"""
|
||||||
|
|
||||||
|
import lc_ldap.attributs
|
||||||
|
from gestion.trigger.host import record_parser
|
||||||
|
|
||||||
|
@record_parser(lc_ldap.attributs.macAddress.ldap_name, lc_ldap.attributs.ipHostNumber.ldap_name)
|
||||||
|
def send_mac_ip(body, diff):
|
||||||
|
"""Computes mac_ip data to send from body and diff
|
||||||
|
|
||||||
|
"""
|
||||||
|
macs = tuple([body[i].get(lc_ldap.attributs.macAddress.ldap_name, [''])[0] for i in xrange(1, 3)])
|
||||||
|
ips = tuple([body[i].get(lc_ldap.attributs.ipHostNumber.ldap_name, [''])[0] for i in xrange(1, 3)])
|
||||||
|
hostnames = tuple([body[i].get(lc_ldap.attributs.host.ldap_name, [''])[0] for i in xrange(1, 3)])
|
||||||
|
|
||||||
|
# Régénération du DHCP :
|
||||||
|
if not macs[0]:
|
||||||
|
# Création d'une nouvelle machine.
|
||||||
|
dhcp_dict = {'add': [(macs[1], ips[1], hostnames[1])]}
|
||||||
|
elif not macs[1]:
|
||||||
|
# Destruction d'une machine.
|
||||||
|
dhcp_dict = {'delete': [(macs[0], ips[0])]}
|
||||||
|
else:
|
||||||
|
# Mise à jour.
|
||||||
|
dhcp_dict = {'update': [(macs[0], ips[0], macs[1], ips[1], hostnames[1])]}
|
||||||
|
return ("dhcp", dhcp_dict)
|
12
gestion/trigger/parsers/event.py
Normal file
12
gestion/trigger/parsers/event.py
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
#!//usr/bin/env python
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
#
|
||||||
|
# Parser for event service. Contains nothing.
|
||||||
|
#
|
||||||
|
# Author : Pierre-Elliott Bécue <becue@crans.org>
|
||||||
|
# License : GPLv3
|
||||||
|
# Date : 19/11/2014
|
||||||
|
"""
|
||||||
|
This parser is not usefull, but still will be imported by service event.py
|
||||||
|
on civet.
|
||||||
|
"""
|
35
gestion/trigger/parsers/firewall.py
Normal file
35
gestion/trigger/parsers/firewall.py
Normal file
|
@ -0,0 +1,35 @@
|
||||||
|
#!/bin/bash /usr/scripts/python.sh
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
#
|
||||||
|
# Parser for firewall service.
|
||||||
|
#
|
||||||
|
# Author : Pierre-Elliott Bécue <becue@crans.org>
|
||||||
|
# Licence : GPLv3
|
||||||
|
# Date : 15/06/2014
|
||||||
|
"""
|
||||||
|
This is the parser for firewall service.
|
||||||
|
"""
|
||||||
|
|
||||||
|
import lc_ldap.attributs
|
||||||
|
from gestion.trigger.host import record_parser
|
||||||
|
|
||||||
|
@record_parser(lc_ldap.attributs.macAddress.ldap_name, lc_ldap.attributs.ipHostNumber.ldap_name)
|
||||||
|
def send_mac_ip(body, diff):
|
||||||
|
"""Computes mac_ip data to send from body and diff
|
||||||
|
|
||||||
|
"""
|
||||||
|
macs = tuple([body[i].get(lc_ldap.attributs.macAddress.ldap_name, [''])[0] for i in xrange(1, 3)])
|
||||||
|
ips = tuple([body[i].get(lc_ldap.attributs.ipHostNumber.ldap_name, [''])[0] for i in xrange(1, 3)])
|
||||||
|
|
||||||
|
# Mise à jour du parefeu mac_ip
|
||||||
|
if not macs[0]:
|
||||||
|
# Création d'une nouvelle machine.
|
||||||
|
fw = {'add': [(macs[1], ips[1])]}
|
||||||
|
elif not macs[1]:
|
||||||
|
# Destruction d'une machine.
|
||||||
|
fw = {'delete': [(macs[0], ips[0])]}
|
||||||
|
else:
|
||||||
|
# Mise à jour.
|
||||||
|
fw = {'update': [(macs[0], ips[0], macs[1], ips[1])]}
|
||||||
|
return ("firewall", ("mac_ip", fw))
|
||||||
|
|
|
@ -8,7 +8,7 @@
|
||||||
# Licence : GPLv3
|
# Licence : GPLv3
|
||||||
# Date : 14/07/2014
|
# Date : 14/07/2014
|
||||||
#
|
#
|
||||||
# TODO : Take care of each XXX or TODO think about updating
|
# TODO : Take care of each XXX or TODO and think about updating
|
||||||
# gestion/config/dhcp when submitting for production, because
|
# gestion/config/dhcp when submitting for production, because
|
||||||
# of .test files.
|
# of .test files.
|
||||||
|
|
||||||
|
@ -30,7 +30,7 @@ import gestion.secrets_new as secrets_new
|
||||||
import gestion.affichage as affichage
|
import gestion.affichage as affichage
|
||||||
import gestion.iptools as iptools
|
import gestion.iptools as iptools
|
||||||
from gestion.trigger.pypureomapi import pack_ip, pack_mac, OMAPI_OP_UPDATE, Omapi, OmapiMessage
|
from gestion.trigger.pypureomapi import pack_ip, pack_mac, OMAPI_OP_UPDATE, Omapi, OmapiMessage
|
||||||
from gestion.trigger.host import record_service, record_parser, TriggerFactory
|
from gestion.trigger.host import record_service
|
||||||
|
|
||||||
if "dhcp" in trigger_config.services[hostname]:
|
if "dhcp" in trigger_config.services[hostname]:
|
||||||
dhcp_omapi_keyname = secrets_new.get("dhcp_omapi_keyname")
|
dhcp_omapi_keyname = secrets_new.get("dhcp_omapi_keyname")
|
||||||
|
@ -41,27 +41,6 @@ else:
|
||||||
dhcp_omapi_key = None
|
dhcp_omapi_key = None
|
||||||
ldap_conn = None
|
ldap_conn = None
|
||||||
|
|
||||||
@record_parser(lc_ldap.attributs.macAddress.ldap_name, lc_ldap.attributs.ipHostNumber.ldap_name)
|
|
||||||
def send_mac_ip(body, diff):
|
|
||||||
"""Computes mac_ip data to send from body and diff
|
|
||||||
|
|
||||||
"""
|
|
||||||
macs = tuple([body[i].get(lc_ldap.attributs.macAddress.ldap_name, [''])[0] for i in xrange(1, 3)])
|
|
||||||
ips = tuple([body[i].get(lc_ldap.attributs.ipHostNumber.ldap_name, [''])[0] for i in xrange(1, 3)])
|
|
||||||
hostnames = tuple([body[i].get(lc_ldap.attributs.host.ldap_name, [''])[0] for i in xrange(1, 3)])
|
|
||||||
|
|
||||||
# Régénération du DHCP :
|
|
||||||
if not macs[0]:
|
|
||||||
# Création d'une nouvelle machine.
|
|
||||||
dhcp_dict = {'add': [(macs[1], ips[1], hostnames[1])]}
|
|
||||||
elif not macs[1]:
|
|
||||||
# Destruction d'une machine.
|
|
||||||
dhcp_dict = {'delete': [(macs[0], ips[0])]}
|
|
||||||
else:
|
|
||||||
# Mise à jour.
|
|
||||||
dhcp_dict = {'update': [(macs[0], ips[0], macs[1], ips[1], hostnames[1])]}
|
|
||||||
return ("dhcp", dhcp_dict)
|
|
||||||
|
|
||||||
@record_service
|
@record_service
|
||||||
def dhcp(body=None):
|
def dhcp(body=None):
|
||||||
"""Regenerates dhcp service taking body into account.
|
"""Regenerates dhcp service taking body into account.
|
||||||
|
|
|
@ -37,7 +37,7 @@ logger = clogger.CLogger("trigger", "event", trigger_config.log_level, trigger_c
|
||||||
services = []
|
services = []
|
||||||
for config_service in trigger_config.all_services:
|
for config_service in trigger_config.all_services:
|
||||||
try:
|
try:
|
||||||
services.append(importlib.import_module("gestion.trigger.services.%s" % (config_service,)))
|
services.append(importlib.import_module("gestion.trigger.parsers.%s" % (config_service,)))
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.critical("Fatal : import of %s failed, see following traceback. %s", config_service, traceback.format_exc())
|
logger.critical("Fatal : import of %s failed, see following traceback. %s", config_service, traceback.format_exc())
|
||||||
|
|
||||||
|
@ -175,7 +175,7 @@ def event(body=()):
|
||||||
#
|
#
|
||||||
#In [16]: b
|
#In [16]: b
|
||||||
#Out[16]: [('7', 3), (5, 6), ('lol', 'lal'), (3, 'lol')]
|
#Out[16]: [('7', 3), (5, 6), ('lol', 'lal'), (3, 'lol')]
|
||||||
functions = list(set([function for function in itertools.chain(*[TriggerFactory.get_parser(key) for key in diff])]))
|
functions = list(set([function for function in itertools.chain(*[TriggerFactory.get_parser(key) for key in diff]) if function is not None]))
|
||||||
msg_to_send = [function(body, diff) for function in functions]
|
msg_to_send = [function(body, diff) for function in functions]
|
||||||
|
|
||||||
for msg in msg_to_send:
|
for msg in msg_to_send:
|
||||||
|
|
|
@ -20,7 +20,7 @@ logger = clogger.CLogger("trigger", "firewall", trigger_config.log_level, trigge
|
||||||
|
|
||||||
import lc_ldap.shortcuts
|
import lc_ldap.shortcuts
|
||||||
|
|
||||||
from gestion.trigger.host import record_service, record_parser
|
from gestion.trigger.host import record_service
|
||||||
import gestion.trigger.firewall4.firewall4 as firewall4
|
import gestion.trigger.firewall4.firewall4 as firewall4
|
||||||
|
|
||||||
class FwFactory(object):
|
class FwFactory(object):
|
||||||
|
@ -41,26 +41,6 @@ class FwFactory(object):
|
||||||
def fwrecord(fun):
|
def fwrecord(fun):
|
||||||
FwFactory.register(fun.func_name, fun)
|
FwFactory.register(fun.func_name, fun)
|
||||||
|
|
||||||
@record_parser(lc_ldap.attributs.macAddress.ldap_name, lc_ldap.attributs.ipHostNumber.ldap_name)
|
|
||||||
def send_mac_ip(body, diff):
|
|
||||||
"""Computes mac_ip data to send from body and diff
|
|
||||||
|
|
||||||
"""
|
|
||||||
macs = tuple([body[i].get(lc_ldap.attributs.macAddress.ldap_name, [''])[0] for i in xrange(1, 3)])
|
|
||||||
ips = tuple([body[i].get(lc_ldap.attributs.ipHostNumber.ldap_name, [''])[0] for i in xrange(1, 3)])
|
|
||||||
|
|
||||||
# Mise à jour du parefeu mac_ip
|
|
||||||
if not macs[0]:
|
|
||||||
# Création d'une nouvelle machine.
|
|
||||||
fw = {'add': [(macs[1], ips[1])]}
|
|
||||||
elif not macs[1]:
|
|
||||||
# Destruction d'une machine.
|
|
||||||
fw = {'delete': [(macs[0], ips[0])]}
|
|
||||||
else:
|
|
||||||
# Mise à jour.
|
|
||||||
fw = {'update': [(macs[0], ips[0], macs[1], ips[1])]}
|
|
||||||
return ("firewall", ("mac_ip", fw))
|
|
||||||
|
|
||||||
@record_service
|
@record_service
|
||||||
def firewall(body=()):
|
def firewall(body=()):
|
||||||
"""Regens the specific service
|
"""Regens the specific service
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue