Package zephir :: Package monitor :: Package agents :: Module ldaphorus
[hide private]
[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 twisted.python 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 63 if self.fail >= 2 : 64 self.status = status.Warn() 65 66 return {'statistics1' : statistics1}
67 68
69 - def _requete(self, conn, filtre):
70 time.sleep(0.05) 71 try: 72 return len(conn.search_s("o=gouv,c=fr", ldap.SCOPE_SUBTREE, filtre, [''])) 73 except: 74 try: 75 # 2ème tentative 76 time.sleep(0.1) 77 return len(conn.search_s("o=gouv,c=fr", ldap.SCOPE_SUBTREE, filtre, [''])) 78 except Exception, e: 79 log.msg('erreur ldap : %s' % str(e)) 80 self.fail += 1 81 return '???'
82
83 - def _color(self, string):
84 return "<font color=\"red\">%s</font>" % string
85
86 - def write_data(self):
87 Agent.write_data(self) 88 if self.last_measure is not None: 89 self.table1.table_data = self.last_measure.value['statistics1']
90
91 - def check_status(self):
92 return self.status
93