On optimise la methode allMachines :
il est inutile losque l'on construit les propriétaires des machines de réintérroger l'annuaire ldap pour les obtenir alors que l'on vient de dumper tout l'annuaire. Pour cela, on rajoute un paramètre optionel machines à la classe proprio, et on construit directement les propriétaires en appelant la classe adhérant au lieu de passer par la methode new_cransldapobject.
This commit is contained in:
parent
454ea3e6e1
commit
5107a71ebe
1 changed files with 11 additions and 6 deletions
17
lc_ldap.py
17
lc_ldap.py
|
@ -130,14 +130,19 @@ class lc_ldap(ldap.ldapobject.LDAPObject):
|
|||
machines = []
|
||||
# On récupère tous les objets ldap et on les met dans un dico
|
||||
# (proxying de la base ldap)
|
||||
for dn, attrs in self.search_s(base_dn, scope=2):
|
||||
res[dn] = attrs
|
||||
for dn, attrs in self.search_s(base_dn, scope=2): #on fait tout dans une seule boucle
|
||||
#~ res[dn] = attrs
|
||||
# On crée la liste des machines
|
||||
for dn, attrs in res.items():
|
||||
#~ for dn, attrs in res.items():
|
||||
if dn.startswith('mid='):
|
||||
m = new_cransldapobject(self, dn, ldif = attrs)
|
||||
parent_dn = dn.split(',', 1)[1]
|
||||
m._proprio = new_cransldapobject(self, parent_dn, res[parent_dn])
|
||||
if not parent.has_key(parent_dn):
|
||||
parent[parent_dn]=adherent(self, dn,machines= [ new_cransldapobject(self, dn,ldif=attrs)]) # on utilise pas new_cransldapobject pour optimiser les appel ldap (on passe la liste des machines)
|
||||
else:
|
||||
parent[parent_dn]._machines.append(new_cransldapobject(self, dn,ldif=attrs))
|
||||
#~ m._proprio = new_cransldapobject(self, parent_dn, res[parent_dn],opt=machine_proprio[parent_dn])
|
||||
m._proprio = parent[parent_dn]
|
||||
machines.append(m)
|
||||
return machines
|
||||
|
||||
|
@ -415,9 +420,9 @@ class proprio(CransLdapObject):
|
|||
ofields = []
|
||||
xfields = []
|
||||
|
||||
def __init__(self, conn, dn, mode='ro', ldif = None):
|
||||
def __init__(self, conn, dn, mode='ro', ldif = None, machines=[]):
|
||||
super(proprio, self).__init__(conn, dn, mode, ldif)
|
||||
self._machines = []
|
||||
self._machines = machines
|
||||
|
||||
def machines(self):
|
||||
if not self._machines:
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue