From f4730bb6eaa9d9ee9fe7d3374beba9c293aef7eb Mon Sep 17 00:00:00 2001 From: Valentin Samir Date: Mon, 3 Feb 2014 00:15:18 +0100 Subject: [PATCH] =?UTF-8?q?Un=20fonction=20pour=20g=C3=A9n=C3=A9rer=20des?= =?UTF-8?q?=20objets=20machine=20lc=5Fldap=20=C3=A0=20partir=20du=20dump?= =?UTF-8?q?=20des=20annonces=20sap=20dans=20/usr/scripts?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Ça permet d'utiliser des fonctions générique sur les machines lc_ldap pour s'occuper aussi du multicast. Notamment dans /usr/scripts/gestion/gen_confs/bind2.py où cela nous permet de générer gratuirement la zone tv.crans.org et son reverse. --- lc_ldap.py | 23 ++++++++++++++++++++++- objets.py | 12 ++++++++++++ 2 files changed, 34 insertions(+), 1 deletion(-) diff --git a/lc_ldap.py b/lc_ldap.py index 0378c7f..9b52a6c 100644 --- a/lc_ldap.py +++ b/lc_ldap.py @@ -193,8 +193,29 @@ class lc_ldap(ldap.ldapobject.LDAPObject, object): ret.append(objets.new_cransldapobject(self, dn, mode, uldif)) return ret + def machinesMulticast(self): + import cPickle + import tv.dns + import config.dns + machines = [] + sap=cPickle.load(open('/usr/scripts/var/tv/sap.pickel')) + for name_ip in sap.values(): + for (nom, ip) in name_ip.items(): + nom=unicode(nom, 'utf-8') + nom_ascii=tv.dns.ascii(nom) + nom_punycode=tv.dns.punycode(nom) + ldif = { + 'ipHostNumber' : [unicode(ip)], + 'objectClass': [u'machineFixe'], + 'host': [u"%s.%s" % (nom_ascii, config.dns.zone_tv)] + } + if nom_punycode: + ldif['hostAlias']=[u"%s.%s" % (nom_punycode, config.dns.zone_tv)] + machines.append(objets.machineMulticast(self, "", ldif=ldif)) + return machines + def allMachinesAdherents(self, mode='ro'): - """Renvoie la liste de toutes les machines et de tous les adherents + """Renvoie la liste de toutes les machines et de tous les adherents (club et Association Crans compris). Conçue pour s'éxécuter le plus rapidement possible. On dumpe malgré tout toute la base.""" res = {} diff --git a/objets.py b/objets.py index ee30071..276390b 100644 --- a/objets.py +++ b/objets.py @@ -901,6 +901,18 @@ class machineFixe(machine): u"""Machine fixe""" ldap_name = "machineFixe" +class machineMulticast(machine): + u"""Machine pour inféré à partir des announces sap""" + ldap_name = None + def save(self): + pass + def delete(self): + pass + def create(self): + pass + def ressuscite(self, comm, login): + pass + @crans_object class machineWifi(machine): u"""Machine wifi"""