From fe3ba33d263a985f12c6b7b1ec342cde2babd830 Mon Sep 17 00:00:00 2001 From: Tomas Babej Date: Mon, 8 Apr 2013 14:09:16 +0200 Subject: Update only selected attributes for winsync agreement Trying to insert nsDS5ReplicatedAttributeListTotal and nsds5ReplicaStripAttrs to winsync agreements caused upgrade errors. With this patch, these attributes are skipped for winsync agreements. Made find_ipa_replication_agreements() in replication.py more corresponding to find_replication_agreements. It returns list of entries instead of unicode strings now. https://fedorahosted.org/freeipa/ticket/3522 --- install/tools/ipa-csreplica-manage | 4 +++- install/tools/ipa-replica-manage | 15 ++++++++++++--- 2 files changed, 15 insertions(+), 4 deletions(-) (limited to 'install') diff --git a/install/tools/ipa-csreplica-manage b/install/tools/ipa-csreplica-manage index d70f24e2..4e11ffde 100755 --- a/install/tools/ipa-csreplica-manage +++ b/install/tools/ipa-csreplica-manage @@ -262,7 +262,9 @@ def del_master(realm, hostname, options): # server not up, just remove it from this server replica_names = [options.host] else: - replica_names = delrepl.find_ipa_replication_agreements() + replica_entries = delrepl.find_ipa_replication_agreements() + replica_names = [rep.single_value('nsds5replicahost', None) + for rep in replica_entries] # 5. Remove each agreement for r in replica_names: diff --git a/install/tools/ipa-replica-manage b/install/tools/ipa-replica-manage index 8ab4dc54..ecb26381 100755 --- a/install/tools/ipa-replica-manage +++ b/install/tools/ipa-replica-manage @@ -518,7 +518,10 @@ def check_last_link(delrepl, realm, dirman_passwd, force): returns: hostname of orphaned server or None """ - replica_names = delrepl.find_ipa_replication_agreements() + replica_entries = delrepl.find_ipa_replication_agreements() + + replica_names = [rep.single_value('nsds5replicahost', None) + for rep in replica_entries] orphaned = [] # Connect to each remote server and see what agreements it has @@ -531,7 +534,11 @@ def check_last_link(delrepl, realm, dirman_passwd, force): if not force and not ipautil.user_input("Continue to delete?", False): sys.exit("Aborted") continue - names = repl.find_ipa_replication_agreements() + + entries = repl.find_ipa_replication_agreements() + names = [rep.single_value('nsds5replicahost', None) + for rep in entries] + if len(names) == 1 and names[0] == delrepl.hostname: orphaned.append(replica) @@ -611,7 +618,9 @@ def del_master(realm, hostname, options): pass else: # Get list of agreements. - replica_names = delrepl.find_ipa_replication_agreements() + replica_entries = delrepl.find_ipa_replication_agreements() + replica_names = [rep.single_value('nsds5replicahost', None) + for rep in replica_entries] else: # WINSYNC replica, delete agreement from current host winsync = True -- cgit