Hello,

This patch addresses ticket https://fedorahosted.org/freeipa/ticket/3867.

-- 
Regards,

Ana Krivokapic
Associate Software Engineer
FreeIPA team
Red Hat Inc.

From 29732542431dfa3d2a41607f6537690655a7a027 Mon Sep 17 00:00:00 2001
From: Ana Krivokapic <[email protected]>
Date: Thu, 29 Aug 2013 17:44:02 +0200
Subject: [PATCH] Add warning when uninstalling active replica

Add a warning when trying to uninstall a replica that has active replication
agreements.

https://fedorahosted.org/freeipa/ticket/3867
---
 install/tools/ipa-server-install | 32 +++++++++++++++++++++++++++-----
 1 file changed, 27 insertions(+), 5 deletions(-)

diff --git a/install/tools/ipa-server-install b/install/tools/ipa-server-install
index 86ca3447bfaab1763324ce57c67c073a8fa93963..7444a6f8720f2c6ca89fcd0bcbf0a2077dabf83f 100755
--- a/install/tools/ipa-server-install
+++ b/install/tools/ipa-server-install
@@ -28,18 +28,16 @@
 
 import sys
 import os
-import errno
 import grp
-import subprocess
 import signal
 import shutil
-import glob
 import pickle
 import random
 import tempfile
 import nss.error
 import base64
-from optparse import OptionGroup, OptionValueError, SUPPRESS_HELP
+import pwd
+from optparse import OptionGroup, OptionValueError
 
 from ipaserver.install import dsinstance
 from ipaserver.install import krbinstance
@@ -51,10 +49,11 @@ from ipaserver.install import cainstance
 from ipaserver.install import memcacheinstance
 from ipaserver.install import otpdinstance
 from ipaserver.install import sysupgrade
-
+from ipaserver.install import replication
 from ipaserver.install import service, installutils
 from ipapython import version
 from ipapython import certmonger
+from ipapython import ipaldap
 from ipaserver.install.installutils import *
 from ipaserver.plugins.ldap2 import ldap2
 
@@ -624,6 +623,29 @@ def main():
                 print "Aborting uninstall operation."
                 sys.exit(1)
 
+        conn = ipaldap.IPAdmin(api.env.host, ldapi=True, realm=api.env.realm)
+        conn.do_external_bind(pwd.getpwuid(os.geteuid()).pw_name)
+        rm = replication.ReplicationManager(api.env.realm, api.env.host, None,
+                                            conn=conn)
+        agreements = rm.find_ipa_replication_agreements()
+
+        if agreements:
+            other_masters = [a.get('cn')[0][4:] for a in agreements]
+            print "\nReplication agreements with the following IPA masters "
+            print "found: %s." % ", ".join(other_masters)
+            print "Removing any replication agreements before uninstalling "
+            print "the server is strongly recommended."
+            print "You can remove replication agreements by running the "
+            print "following command on any other IPA master:"
+            print "$ ipa-replica-manage del %s" % api.env.host
+            if not (options.unattended or user_input("Are you sure you want "
+                                                     "to continue with the "
+                                                     "uninstall procedure?",
+                                                     False)):
+                print ""
+                print "Aborting uninstall operation."
+                sys.exit(1)
+
         return uninstall()
 
     if options.external_ca:
-- 
1.8.3.1

_______________________________________________
Freeipa-devel mailing list
[email protected]
https://www.redhat.com/mailman/listinfo/freeipa-devel

Reply via email to