Package zephir :: Package monitor :: Package agents :: Module ldaphorus
[frames] | no frames]

Source Code for Module zephir.monitor.agents.ldaphorus

 1  # -*- coding: UTF-8 -*- 
 2  ########################################################################### 
 3  # Eole NG - 2007 
 4  # Copyright Pole de Competence Eole  (Ministere Education - Academie Dijon) 
 5  # Licence CeCill  cf /root/LicenceEole.txt 
 6  # eole@ac-dijon.fr 
 7  ########################################################################### 
 8   
 9  """ 
10  Agent zephir listant le contenu de l'annaire LDAP 
11  """ 
12   
13  from zephir.monitor.agentmanager.agent import Agent 
14  from zephir.monitor.agentmanager.data import HTMLData, TableData 
15  from zephir.monitor.agentmanager import status  
16  from zephir.monitor.agentmanager.util import log 
17  import ldap,time 
18   
19 -class LdapHorus(Agent):
20
21 - def __init__(self, name, **params):
22 Agent.__init__(self, name, **params) 23 """ 24 Gestion du status : 25 par défaut : OK 26 Erreur si pas de connexion 27 Warning si erreur lors d'une ou plusieurs requêtes 28 """ 29 self.status = status.OK() 30 31 #title1 = HTMLData("<h3>Nombre d'utilisateurs<h3>") 32 self.table1 = TableData([ 33 ('name', '', {'align':'left'}, None), 34 ('nb', '' , {'align':'center'}, None) 35 ]) 36 37 self.data = [self.table1]
38
39 - def measure(self):
40 try : 41 conn=ldap.open('localhost') 42 except : 43 self.status = status.Error() 44 return {'statistics1' : []} 45 46 self.status = status.OK() 47 self.fail = 0 48 49 statistics1 = [] 50 statistics1.append ( 51 { 'name' : 'Nombre d\'utilisateurs', 52 'nb' : self._requete(conn, "(objectclass=inetOrgPerson)") 53 }) 54 statistics1.append ( 55 { 'name' : 'Nombre de groupes', 56 'nb' : self._requete(conn, "(objectClass=posixGroup)") 57 }) 58 statistics1.append ( 59 { 'name' : 'Nombre de partages', 60 'nb' : self._requete(conn,"(objectClass=sambaFileShare)") 61 }) 62 statistics1.append ( 63 { 'name' : 'Nombre de postes', 64 'nb' : self._requete(conn,"(&(objectclass=posixAccount)(description=Computer))") 65 }) 66 67 if self.fail >= 2 : 68 self.status = status.Warn() 69 70 return {'statistics1' : statistics1}
71 72
73 - def _requete(self, conn, filtre):
74 time.sleep(0.05) 75 try: 76 return len(conn.search_s("o=gouv,c=fr", ldap.SCOPE_SUBTREE, filtre, [''])) 77 except: 78 try: 79 # 2ème tentative 80 time.sleep(0.1) 81 return len(conn.search_s("o=gouv,c=fr", ldap.SCOPE_SUBTREE, filtre, [''])) 82 except Exception, e: 83 log.msg('erreur ldap : %s' % str(e)) 84 self.fail += 1 85 return '???'
86
87 - def _color(self, string):
88 return "<font color=\"red\">%s</font>" % string
89
90 - def write_data(self):
91 Agent.write_data(self) 92 if self.last_measure is not None: 93 self.table1.table_data = self.last_measure.value['statistics1']
94
95 - def check_status(self):
96 return self.status
97