[ldap_locks] Affichage du temps restant avant expiration d'un lock si une LockError est levée

This commit is contained in:
Valentin Samir 2014-02-24 14:47:27 +01:00
parent 954ba580b6
commit 63b9f89b6f

View file

@ -79,6 +79,7 @@ class LdapLockHolder:
self.host = socket.gethostname()
self.pid = os.getpid()
self.conn = conn
self.time = 600.0
def purge(self, Id=None):
"""
@ -118,18 +119,21 @@ class LdapLockHolder:
"""
try:
host, pid, begin = self.getlock(item, value)
if time.time() - begin >= 600.0:
if time.time() - begin >= self.time:
self.removelock(item, value, Id, True)
elif host == self.host and pid == self.pid:
raise LdapLockedByYou("La donnée %r=%r est lockée par vous-même." % (item, value))
time_left = self.time - (time.time() - begin)
raise LdapLockedByYou("La donnée %r=%r est lockée par vous-même pour encore %ds." % (item, value, time_left))
elif host == self.host:
status = crans_utils.process_status(pid)
if status:
raise LdapLockedByOther("La donnée %r=%r est lockée par un processus actif." % (item, value))
time_left = self.time - (time.time() - begin)
raise LdapLockedByOther("La donnée %r=%r est lockée par un processus actif pour encore %ds." % (item, value, time_left))
else:
self.removelock(item, value, Id, True)
else:
raise LdapLockedByOther("La donnée %r=%r est lockée depuis une autre machine." % (item, value))
time_left = self.time - (time.time() - begin)
raise LdapLockedByOther("La donnée %r=%r est lockée depuis une autre machine pour encore %ds." % (item, value, time_left))
except ldap.NO_SUCH_OBJECT:
pass
except LockFormatError: