summaryrefslogtreecommitdiffstats
path: root/ipaserver
diff options
context:
space:
mode:
authorPetr Vobornik <[email protected]>2014-10-17 13:24:49 +0200
committerMartin Kosek <[email protected]>2014-10-17 14:08:37 +0200
commit895f350ebf5f002a8ba5aff3d521640b12aa3cde (patch)
tree14021a457a29fd04a38423be898ec451e3ca572e /ipaserver
parent5303e6324efb24c7529caaea68c3d985087e2053 (diff)
downloadfreeipa-895f350ebf5f002a8ba5aff3d521640b12aa3cde.tar.gz
freeipa-895f350ebf5f002a8ba5aff3d521640b12aa3cde.tar.xz
freeipa-895f350ebf5f002a8ba5aff3d521640b12aa3cde.zip
dns: fix privileges' memberof during dns install
Permissions with member attrs pointing to privileges are created before the privileges. Run memberof plugin task to fix other ends of the relationships. https://fedorahosted.org/freeipa/ticket/4637 Reviewed-By: Martin Kosek <[email protected]>
Diffstat (limited to 'ipaserver')
-rw-r--r--ipaserver/install/bindinstance.py30
1 files changed, 30 insertions, 0 deletions
diff --git a/ipaserver/install/bindinstance.py b/ipaserver/install/bindinstance.py
index 636e04f5e..d964daf22 100644
--- a/ipaserver/install/bindinstance.py
+++ b/ipaserver/install/bindinstance.py
@@ -23,6 +23,7 @@ import pwd
import netaddr
import re
import sys
+import time
import ldap
@@ -674,6 +675,35 @@ class BindInstance(service.Service):
def __setup_dns_container(self):
self._ldap_mod("dns.ldif", self.sub_dict)
+ self.__fix_dns_privilege_members()
+
+ def __fix_dns_privilege_members(self):
+ ldap = api.Backend.ldap2
+
+ cn = 'Update PBAC memberOf %s' % time.time()
+ task_dn = DN(('cn', cn), ('cn', 'memberof task'), ('cn', 'tasks'),
+ ('cn', 'config'))
+ basedn = DN(api.env.container_privilege, api.env.basedn)
+ entry = ldap.make_entry(
+ task_dn,
+ objectclass=['top', 'extensibleObject'],
+ cn=[cn],
+ basedn=[basedn],
+ filter=['(objectclass=*)'],
+ ttl=[10])
+ ldap.add_entry(entry)
+
+ start_time = time.time()
+ while True:
+ try:
+ task = ldap.get_entry(task_dn)
+ except errors.NotFound:
+ break
+ if 'nstaskexitcode' in task:
+ break
+ time.sleep(1)
+ if time.time() > (start_time + 60):
+ raise errors.TaskTimeout(task='memberof', task_dn=task_dn)
def __setup_zone(self):
# Always use force=True as named is not set up yet
OSZAR »