Clarifications.

darcs-hash:20060322130058-68412-c46767e4f83b7a7aa4bcceb4936a513f6d93acad.gz
This commit is contained in:
glondu 2006-03-22 14:00:58 +01:00
parent 6b20d9e6b3
commit 5213904bc5

View file

@ -442,23 +442,23 @@ class crans_ldap:
def services_to_restart(self, new=None, args=[], start=0):
"""
start indique la date (en secondes depuis epoch) à partir du
moment cette action sera effectué
moment cette action sera effectuée.
Si new = None retourne la liste des services à redémarrer
Si new = None retourne la liste des services à redémarrer.
Si new est fourni mais ne commence pas par '-', on ajoute
Si new est fourni, mais ne commence pas par '-', on ajoute
le service à la liste avec les arguments args (args doit être
une liste).
Si new commence par '-', on supprime le service si son start
est dans le futur
est dans le futur.
Si new commence par '--', on supprime le service de condition.
"""
if new: new = preattr(new)[1]
# Quels services sont déjà à redémarrer ?
serv = {} # { service: [ arguments ] }
serv = {} # { service: [ arguments ] }
serv_dates = {} # { service: [ dates de restart ] }
services = []
for s in self.conn.search_s(self.base_services, 1, 'objectClass=service'):
@ -474,10 +474,10 @@ class crans_ldap:
if new[0] == '-':
if new[1] == '-':
# Double -- on enlève quelque soit la date
remove_dn = 'cn=%s,%s' % ( new[2:], self.base_services )
remove_dn = 'cn=%s,%s' % (new[2:], self.base_services)
else:
# On enlève uniquement si la date est passée
remove_dn = 'cn=%s,%s' % ( new[1:], self.base_services )
remove_dn = 'cn=%s,%s' % (new[1:], self.base_services)
if not serv.has_key(new[1:]):
# Existe pas => rien à faire
return
@ -496,12 +496,12 @@ class crans_ldap:
# Si n'existe pas => Erreur mais le résultat est là.
return
serv_dn = 'cn=%s,%s' % ( new, self.base_services )
serv_dn = 'cn=%s,%s' % (new, self.base_services)
# Petite fonction à appliquer aux arguments
if type(args) == str: args = [ args ]
# Conversion avant stockage dans la base
if type(args) == str: args = [args]
args = map(lambda x:preattr(x)[1], args)
if type(start) == int: start = [ start ]
if type(start) == int: start = [start]
start = map(lambda x:preattr(x)[1], start)
if new in serv.keys():
@ -513,7 +513,8 @@ class crans_ldap:
if arg not in serv[new]:
new_args.append(arg)
if new_args:
modlist += ldap.modlist.modifyModlist({ 'args': serv[new]}, { 'args': serv[new] + new_args })
modlist += ldap.modlist.modifyModlist({'args': serv[new]},
{'args': serv[new] + new_args})
new_date = []
# Nouvelle date ?
@ -521,7 +522,8 @@ class crans_ldap:
if date not in serv_dates[new]:
new_date.append(date)
if new_date:
modlist += ldap.modlist.modifyModlist({'start': serv_dates[new]}, { 'start': serv_dates[new] + new_date })
modlist += ldap.modlist.modifyModlist({'start': serv_dates[new]},
{'start': serv_dates[new] + new_date})
if modlist:
try:
@ -533,9 +535,9 @@ class crans_ldap:
else:
# Entrée non présente -> ajout
modlist = ldap.modlist.addModlist({ 'objectClass': 'service',
'cn': new,
'args': args,
'start': start } )
'cn': new,
'args': args,
'start': start })
try:
self.conn.add_s(serv_dn, modlist)
except ldap.ALREADY_EXISTS: