mirror of
https://salsa.debian.org/freeipa-team/freeipa.git
synced 2025-02-25 18:55:28 -06:00
Replace IPAdmin.checkTask by replication.wait_for_task
The method was only used for waiting, not actual checking. Part of the work for: https://fedorahosted.org/freeipa/ticket/2660
This commit is contained in:
committed by
Martin Kosek
parent
b69f6983e4
commit
5271eb217c
@@ -466,7 +466,7 @@ class DsInstance(service.Service):
|
|||||||
conn.simple_bind_s(DN(('cn', 'directory manager')), self.dm_password)
|
conn.simple_bind_s(DN(('cn', 'directory manager')), self.dm_password)
|
||||||
else:
|
else:
|
||||||
conn.do_sasl_gssapi_bind()
|
conn.do_sasl_gssapi_bind()
|
||||||
conn.checkTask(dn, dowait=True)
|
replication.wait_for_task(conn, dn)
|
||||||
conn.unbind()
|
conn.unbind()
|
||||||
|
|
||||||
def apply_updates(self):
|
def apply_updates(self):
|
||||||
|
|||||||
@@ -110,6 +110,27 @@ def enable_replication_version_checking(hostname, realm, dirman_passwd):
|
|||||||
else:
|
else:
|
||||||
conn.unbind()
|
conn.unbind()
|
||||||
|
|
||||||
|
|
||||||
|
def wait_for_task(conn, dn):
|
||||||
|
"""Check task status
|
||||||
|
|
||||||
|
Task is complete when the nsTaskExitCode attr is set.
|
||||||
|
|
||||||
|
:return: the task's return code
|
||||||
|
"""
|
||||||
|
assert isinstance(dn, DN)
|
||||||
|
attrlist = [
|
||||||
|
'nsTaskLog', 'nsTaskStatus', 'nsTaskExitCode', 'nsTaskCurrentItem',
|
||||||
|
'nsTaskTotalItems']
|
||||||
|
while True:
|
||||||
|
entry = conn.get_entry(dn, attrlist)
|
||||||
|
if entry.getValue('nsTaskExitCode'):
|
||||||
|
exit_code = int(entry.getValue('nsTaskExitCode'))
|
||||||
|
break
|
||||||
|
time.sleep(1)
|
||||||
|
return exit_code
|
||||||
|
|
||||||
|
|
||||||
class ReplicationManager(object):
|
class ReplicationManager(object):
|
||||||
"""Manage replication agreements between DS servers, and sync
|
"""Manage replication agreements between DS servers, and sync
|
||||||
agreements with Windows servers"""
|
agreements with Windows servers"""
|
||||||
@@ -1206,7 +1227,7 @@ class ReplicationManager(object):
|
|||||||
|
|
||||||
print "This may be safely interrupted with Ctrl+C"
|
print "This may be safely interrupted with Ctrl+C"
|
||||||
|
|
||||||
self.conn.checkTask(dn, dowait=True)
|
wait_for_task(self.conn, dn)
|
||||||
|
|
||||||
def abortcleanallruv(self, replicaId):
|
def abortcleanallruv(self, replicaId):
|
||||||
"""
|
"""
|
||||||
@@ -1233,4 +1254,4 @@ class ReplicationManager(object):
|
|||||||
|
|
||||||
print "This may be safely interrupted with Ctrl+C"
|
print "This may be safely interrupted with Ctrl+C"
|
||||||
|
|
||||||
self.conn.checkTask(dn, dowait=True)
|
wait_for_task(self.conn, dn)
|
||||||
|
|||||||
@@ -1770,30 +1770,6 @@ class IPAdmin(LDAPConnection):
|
|||||||
|
|
||||||
return entry
|
return entry
|
||||||
|
|
||||||
def checkTask(self, dn, dowait=False, verbose=False):
|
|
||||||
"""check task status - task is complete when the nsTaskExitCode attr
|
|
||||||
is set return a 2 tuple (true/false,code) first is false if task is
|
|
||||||
running, true if done - if true, second is the exit code - if dowait
|
|
||||||
is True, this function will block until the task is complete
|
|
||||||
"""
|
|
||||||
assert isinstance(dn, DN)
|
|
||||||
attrlist = ['nsTaskLog', 'nsTaskStatus', 'nsTaskExitCode', 'nsTaskCurrentItem', 'nsTaskTotalItems']
|
|
||||||
done = False
|
|
||||||
exitCode = 0
|
|
||||||
while not done:
|
|
||||||
try:
|
|
||||||
entry = self.getEntry(dn, ldap.SCOPE_BASE, "(objectclass=*)", attrlist)
|
|
||||||
except errors.NotFound:
|
|
||||||
break
|
|
||||||
if verbose:
|
|
||||||
print entry
|
|
||||||
if entry.getValue('nsTaskExitCode'):
|
|
||||||
exitCode = int(entry.getValue('nsTaskExitCode'))
|
|
||||||
done = True
|
|
||||||
if dowait: time.sleep(1)
|
|
||||||
else: break
|
|
||||||
return (done, exitCode)
|
|
||||||
|
|
||||||
def __getattr__(self, attrname):
|
def __getattr__(self, attrname):
|
||||||
# This makes IPAdmin classes look like IPASimpleLDAPObjects
|
# This makes IPAdmin classes look like IPASimpleLDAPObjects
|
||||||
# FIXME: for backwards compatibility only
|
# FIXME: for backwards compatibility only
|
||||||
|
|||||||
Reference in New Issue
Block a user