diff options
author | Stanislav Laznicka <slaznick@redhat.com> | 2015-12-18 10:30:44 +0100 |
---|---|---|
committer | Martin Basti <mbasti@redhat.com> | 2016-02-02 12:22:37 +0100 |
commit | bb7887140df30d07b79eba10fd5b7c31cc1e6c79 (patch) | |
tree | 23bd64e352b31ec88d35d6074a7fa77461e65b01 | |
parent | aa30199e0b6002aeb8c01e2561a3d55fe3f1ceb5 (diff) | |
download | freeipa-bb7887140df30d07b79eba10fd5b7c31cc1e6c79.tar.gz freeipa-bb7887140df30d07b79eba10fd5b7c31cc1e6c79.tar.xz freeipa-bb7887140df30d07b79eba10fd5b7c31cc1e6c79.zip |
Listing and cleaning RUV extended for CA suffix
https://fedorahosted.org/freeipa/ticket/5411
Reviewed-By: Martin Basti <mbasti@redhat.com>
-rwxr-xr-x | install/tools/ipa-replica-manage | 44 | ||||
-rw-r--r-- | ipaserver/install/replication.py | 2 |
2 files changed, 30 insertions, 16 deletions
diff --git a/install/tools/ipa-replica-manage b/install/tools/ipa-replica-manage index e4af7b2fd..d0a959898 100755 --- a/install/tools/ipa-replica-manage +++ b/install/tools/ipa-replica-manage @@ -345,7 +345,7 @@ def del_link(realm, replica1, replica2, dirman_passwd, force=False): return True -def get_ruv(realm, host, dirman_passwd, nolookup=False): +def get_ruv(realm, host, dirman_passwd, nolookup=False, ca=False): """ Return the RUV entries as a list of tuples: (hostname, rid) """ @@ -354,7 +354,10 @@ def get_ruv(realm, host, dirman_passwd, nolookup=False): enforce_host_existence(host) try: - thisrepl = replication.ReplicationManager(realm, host, dirman_passwd) + if ca: + thisrepl = replication.get_cs_replication_manager(realm, host, dirman_passwd) + else: + thisrepl = replication.ReplicationManager(realm, host, dirman_passwd) except Exception as e: print("Failed to connect to server %s: %s" % (host, e)) sys.exit(1) @@ -362,7 +365,7 @@ def get_ruv(realm, host, dirman_passwd, nolookup=False): search_filter = '(&(nsuniqueid=ffffffff-ffffffff-ffffffff-ffffffff)(objectclass=nstombstone))' try: entries = thisrepl.conn.get_entries( - api.env.basedn, thisrepl.conn.SCOPE_SUBTREE, search_filter, + thisrepl.db_suffix, thisrepl.conn.SCOPE_SUBTREE, search_filter, ['nsds50ruv']) except errors.NotFound: print("No RUV records found.") @@ -402,7 +405,7 @@ def get_rid_by_host(realm, sourcehost, host, dirman_passwd, nolookup=False): if '%s:389' % host == netloc: return int(rid) -def clean_ruv(realm, ruv, options): +def clean_ruv(realm, ruv, options, ca=False): """ Given an RID create a CLEANALLRUV task to clean it up. """ @@ -412,7 +415,7 @@ def clean_ruv(realm, ruv, options): sys.exit("Replica ID must be an integer: %s" % ruv) servers = get_ruv(realm, options.host, options.dirman_passwd, - options.nolookup) + options.nolookup, ca=ca) found = False for (netloc, rid) in servers: if ruv == int(rid): @@ -423,16 +426,27 @@ def clean_ruv(realm, ruv, options): if not found: sys.exit("Replica ID %s not found" % ruv) - print("Clean the Replication Update Vector for %s" % hostname) - print() - print("Cleaning the wrong replica ID will cause that server to no") - print("longer replicate so it may miss updates while the process") - print("is running. It would need to be re-initialized to maintain") - print("consistency. Be very careful.") - if not options.force and not ipautil.user_input("Continue to clean?", False): - sys.exit("Aborted") - thisrepl = replication.ReplicationManager(realm, options.host, - options.dirman_passwd) + if ca: + print("Clean the Certificate Server Replication Update Vector for %s" + % hostname) + else: + print("Clean the Replication Update Vector for %s" % hostname) + + if not options.force: + print() + print("Cleaning the wrong replica ID will cause that server to no") + print("longer replicate so it may miss updates while the process") + print("is running. It would need to be re-initialized to maintain") + print("consistency. Be very careful.") + if not ipautil.user_input("Continue to clean?", False): + sys.exit("Aborted") + + if ca: + thisrepl = replication.get_cs_replication_manager(realm, options.host, + options.dirman_passwd) + else: + thisrepl = replication.ReplicationManager(realm, options.host, + options.dirman_passwd) thisrepl.cleanallruv(ruv) print("Cleanup task created") diff --git a/ipaserver/install/replication.py b/ipaserver/install/replication.py index 49853905f..dd9453ce4 100644 --- a/ipaserver/install/replication.py +++ b/ipaserver/install/replication.py @@ -1351,7 +1351,7 @@ class ReplicationManager(object): { 'objectclass': ['top', 'extensibleObject'], 'cn': ['clean %d' % replicaId], - 'replica-base-dn': [api.env.basedn], + 'replica-base-dn': [self.db_suffix], 'replica-id': [replicaId], } ) |