mirror of
https://salsa.debian.org/freeipa-team/freeipa.git
synced 2025-02-25 18:55:28 -06:00
Inline waitForEntry in its only caller
Part of the work for: https://fedorahosted.org/freeipa/ticket/2660
This commit is contained in:
committed by
Martin Kosek
parent
fc571da1af
commit
fdd4169124
@@ -132,6 +132,45 @@ def wait_for_task(conn, dn):
|
||||
return exit_code
|
||||
|
||||
|
||||
def wait_for_entry(connection, entry, timeout=7200, attr='', quiet=True):
|
||||
"""Wait for entry and/or attr to show up"""
|
||||
|
||||
filter = "(objectclass=*)"
|
||||
attrlist = []
|
||||
if attr:
|
||||
filter = "(%s=*)" % attr
|
||||
attrlist.append(attr)
|
||||
timeout += int(time.time())
|
||||
|
||||
dn = entry.dn
|
||||
|
||||
if not quiet:
|
||||
sys.stdout.write("Waiting for %s %s:%s " % (connection, dn, attr))
|
||||
sys.stdout.flush()
|
||||
entry = None
|
||||
while not entry and int(time.time()) < timeout:
|
||||
try:
|
||||
[entry] = connection.get_entries(
|
||||
dn, ldap.SCOPE_BASE, filter, attrlist)
|
||||
except errors.NotFound:
|
||||
pass # no entry yet
|
||||
except Exception, e: # badness
|
||||
print "\nError reading entry", dn, e
|
||||
break
|
||||
if not entry:
|
||||
if not quiet:
|
||||
sys.stdout.write(".")
|
||||
sys.stdout.flush()
|
||||
time.sleep(1)
|
||||
|
||||
if not entry and int(time.time()) > timeout:
|
||||
print "\nwait_for_entry timeout for %s for %s" % (connection, dn)
|
||||
elif entry and not quiet:
|
||||
print "\nThe waited for entry is:", entry
|
||||
elif not entry:
|
||||
print "\nError: could not read entry %s from %s" % (dn, connection)
|
||||
|
||||
|
||||
class ReplicationManager(object):
|
||||
"""Manage replication agreements between DS servers, and sync
|
||||
agreements with Windows servers"""
|
||||
@@ -606,7 +645,7 @@ class ReplicationManager(object):
|
||||
|
||||
entry['nsds5ReplicaStripAttrs'] = [" ".join(STRIP_ATTRS)]
|
||||
|
||||
entry = a_conn.waitForEntry(entry)
|
||||
wait_for_entry(a_conn, entry)
|
||||
|
||||
def needs_memberof_fixup(self):
|
||||
return self.need_memberof_fixup
|
||||
|
||||
@@ -19,7 +19,6 @@
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
|
||||
import sys
|
||||
import string
|
||||
import time
|
||||
import shutil
|
||||
@@ -1697,47 +1696,6 @@ class IPAdmin(LDAPClient):
|
||||
|
||||
return modlist
|
||||
|
||||
def waitForEntry(self, dn, timeout=7200, attr='', quiet=True):
|
||||
filter = "(objectclass=*)"
|
||||
attrlist = []
|
||||
if attr:
|
||||
filter = "(%s=*)" % attr
|
||||
attrlist.append(attr)
|
||||
timeout += int(time.time())
|
||||
|
||||
if isinstance(dn, LDAPEntry):
|
||||
dn = dn.dn
|
||||
assert isinstance(dn, DN)
|
||||
|
||||
# wait for entry and/or attr to show up
|
||||
if not quiet:
|
||||
sys.stdout.write("Waiting for %s %s:%s " % (self,dn,attr))
|
||||
sys.stdout.flush()
|
||||
entry = None
|
||||
while not entry and int(time.time()) < timeout:
|
||||
try:
|
||||
[entry] = self.get_entries(
|
||||
dn, ldap.SCOPE_BASE, filter, attrlist)
|
||||
except errors.NotFound:
|
||||
pass # no entry yet
|
||||
except Exception, e: # badness
|
||||
print "\nError reading entry", dn, e
|
||||
break
|
||||
if not entry:
|
||||
if not quiet:
|
||||
sys.stdout.write(".")
|
||||
sys.stdout.flush()
|
||||
time.sleep(1)
|
||||
|
||||
if not entry and int(time.time()) > timeout:
|
||||
print "\nwaitForEntry timeout for %s for %s" % (self,dn)
|
||||
elif entry and not quiet:
|
||||
print "\nThe waited for entry is:", entry
|
||||
elif not entry:
|
||||
print "\nError: could not read entry %s from %s" % (dn,self)
|
||||
|
||||
return entry
|
||||
|
||||
def __getattr__(self, attrname):
|
||||
# This makes IPAdmin classes look like IPASimpleLDAPObjects
|
||||
# FIXME: for backwards compatibility only
|
||||
|
||||
Reference in New Issue
Block a user