LdapServer : Review logging and exception handling
Benjamin Renard

Benjamin Renard commited on 2014-06-25 17:16:18
Showing 1 changed files, with 15 additions and 9 deletions.

... ...
@@ -1,6 +1,5 @@
1 1
 #!/usr/bin/python
2 2
 
3
-import sys
4 3
 import ldap
5 4
 import ldap.modlist as modlist
6 5
 import logging
... ...
@@ -14,13 +13,20 @@ class LdapServer(object):
14 13
 
15 14
 	con = 0
16 15
 
17
-	def __init__(self,uri,dn=None,pwd=None,v2=None):
16
+	def __init__(self,uri,dn=None,pwd=None,v2=None,raiseOnError=False):
18 17
 		self.uri  = uri
19 18
 		self.dn   = dn
20 19
 		self.pwd  = pwd
20
+		self.raiseOnError  = raiseOnError
21 21
 		if v2:
22 22
 			self.v2=True
23 23
 
24
+	def _error(self,error,level=logging.WARNING):
25
+		if self.raiseOnError:
26
+			raise 'LdapServer - Error connecting and binding to LDAP server : %s' % e
27
+		else:
28
+			logging.log(level,error)
29
+
24 30
 	def connect(self):
25 31
 		if self.con == 0:
26 32
 			try:
... ...
@@ -34,9 +40,11 @@ class LdapServer(object):
34 40
 					con.simple_bind_s(self.dn,self.pwd)
35 41
 
36 42
 				self.con = con
43
+				return True
37 44
 			except ldap.LDAPError, e:
38
-				logging.critical('LdapServer - Error connecting and binding to LDAP server : %s' % e)
39
-				sys.exit(1)
45
+				self._error('LdapServer - Error connecting and binding to LDAP server : %s' % e,logging.CRITICAL)
46
+			return False
47
+		return True
40 48
 
41 49
 	def search(self,basedn,filter,attrs,sizelimit=0):
42 50
 		res_id = self.con.search(basedn,ldap.SCOPE_SUBTREE,filter,attrs)
... ...
@@ -59,21 +67,19 @@ class LdapServer(object):
59 67
 			self.con.add_s(dn,ldif)
60 68
 			return True
61 69
 		except ldap.LDAPError, e:
62
-			logging.warning("LdapServer - Error adding %s : %s" % (dn,e))
70
+			self._error("LdapServer - Error adding %s : %s" % (dn,e))
63 71
 
64 72
 		return False
65 73
 
66 74
 	def update_object(self,dn,old,new):
67 75
 		ldif = modlist.modifyModlist(old,new)
68 76
 		if ldif == []:
69
-			#logging.debug("LdapServer - No change for %s" % dn)
70 77
 			return True
71 78
 		try:
72
-			#logging.debug("LdapServer - Update %s" % dn)
73 79
 			self.con.modify_s(dn,ldif)
74 80
 			return True
75 81
 		except ldap.LDAPError, e:
76
-			logging.warning("LdapServer - Error updating %s : %s" % (dn,e))
82
+			self._error("LdapServer - Error updating %s : %s" % (dn,e))
77 83
 		return False
78 84
 
79 85
 	def drop_object(self,dn):
... ...
@@ -82,7 +88,7 @@ class LdapServer(object):
82 88
 			self.con.delete_s(dn)
83 89
 			return True
84 90
 		except ldap.LDAPError, e:
85
-			logging.warning("LdapServer - Error deleting %s : %s" % (dn,e))
91
+			self._error("LdapServer - Error deleting %s : %s" % (dn,e))
86 92
 
87 93
 		return False
88 94
 
89 95