summaryrefslogtreecommitdiffstats
path: root/ipaserver/install/replication.py
diff options
context:
space:
mode:
authorPetr Viktorin <pviktori@redhat.com>2013-01-21 07:23:20 -0500
committerMartin Kosek <mkosek@redhat.com>2013-03-01 16:59:45 +0100
commit5271eb217c4227a83ac99f9c8daa7e853871523a (patch)
treedf833ba7f8a740b2675433a76cf59720c963fb9e /ipaserver/install/replication.py
parentb69f6983e4bb01e2af63c4b02a0ab79b24e59569 (diff)
downloadfreeipa.git-5271eb217c4227a83ac99f9c8daa7e853871523a.tar.gz
freeipa.git-5271eb217c4227a83ac99f9c8daa7e853871523a.tar.xz
freeipa.git-5271eb217c4227a83ac99f9c8daa7e853871523a.zip
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
Diffstat (limited to 'ipaserver/install/replication.py')
-rw-r--r--ipaserver/install/replication.py25
1 files changed, 23 insertions, 2 deletions
diff --git a/ipaserver/install/replication.py b/ipaserver/install/replication.py
index d604cf7b..eaf4c495 100644
--- a/ipaserver/install/replication.py
+++ b/ipaserver/install/replication.py
@@ -110,6 +110,27 @@ def enable_replication_version_checking(hostname, realm, dirman_passwd):
else:
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):
"""Manage replication agreements between DS servers, and sync
agreements with Windows servers"""
@@ -1206,7 +1227,7 @@ class ReplicationManager(object):
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):
"""
@@ -1233,4 +1254,4 @@ class ReplicationManager(object):
print "This may be safely interrupted with Ctrl+C"
- self.conn.checkTask(dn, dowait=True)
+ wait_for_task(self.conn, dn)