From 9adb5cb8fa42af8be20f2816ffb2b56e6d0ed9cf Mon Sep 17 00:00:00 2001 From: Olivier Huber Date: Sun, 4 Jul 2010 06:12:33 +0200 Subject: [PATCH] [./gestion/extractionbcfg2.py] Ajout darcs-hash:20100704041233-8fbb1-a294db2b2a280c3e73605fc06d9fbbd386054629.gz --- gestion/extractionbcfg2.py | 69 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100755 gestion/extractionbcfg2.py diff --git a/gestion/extractionbcfg2.py b/gestion/extractionbcfg2.py new file mode 100755 index 00000000..810a644a --- /dev/null +++ b/gestion/extractionbcfg2.py @@ -0,0 +1,69 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# © Olivier Huber, 2010 +# Licence MIT +""" Ce script va chercher la correspondance entre des attributs et des serveurs""" + +from lxml import etree + +template = """# -*- python -*- +# -*- coding: utf-8 -*- + +# Généré par gestion/extractionbcfg2.py sur bcfg2, à partir de Metadata/groups.xml + +adm_only = %(adm_list)s + +role = %(role_dict)s +""" + +srvDict = { 'external' : [], + 'connection-main' : [], + 'main-proxy-server' : [], + 'failover-proxy-server' : [], + 'vlan-ens' : [], + 'users' : [], + 'sniffer' : [], + 'router-wifi' : [] +} + +tr = { 'external' : 'externe', + 'connection-main' : 'main-router', + 'main-proxy-server' : 'main-proxy', + 'vlan-ens' : 'appt-proxy', + 'failover-proxy-server' : 'failover-proxy', + 'router-wifi' : 'wifi-router', + 'users' : 'adherents-server', + 'sniffer' : 'sniffer' +} + +fin = open('/var/lib/bcfg2/Metadata/groups.xml') + +# La gestion des exceptions est laissée en exercice pour ceux qui vont +# casser Metadata/groups.xml +parsedGroups = etree.parse(fin) + +for key in srvDict.keys(): + srvDict[key] = parsedGroups.xpath('//Group[@name="%s"]/../@name' % key) + if srvDict[key] == []: + print "Erreur, il n'y a pas de serveur associé à l'attribut %s" % key + exit(1) + + +# On cherche les serveurs qui sont seulement sur le vlan adm +admOnly = parsedGroups.xpath('//Group[@name="adm-only"]/../@name') + +fin.close() + +out = {} +for key, values in srvDict.items(): + for value in values: + if value in out.keys(): + out[value].append(tr[key]) + else: + out[value] = [tr[key]] + +fout = open('/usr/scripts/gestion/config_srv.py', 'w') + +fout.write(template % {'adm_list': admOnly.__str__(), 'role_dict' : out.__str__()}) + +fout.close()