summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTomas Babej <tbabej@redhat.com>2013-03-13 12:53:24 +0100
committerMartin Kosek <mkosek@redhat.com>2013-03-13 16:53:19 +0100
commitade4aaef9aba7e05276dc2f436a43e0bb7d42da3 (patch)
tree41867d3383e6c4db51fabb984505c61980bd1c24
parent9005b9bc8aac7c1381aadb7d17107ebbebae005d (diff)
downloadfreeipa-ade4aaef9aba7e05276dc2f436a43e0bb7d42da3.tar.gz
freeipa-ade4aaef9aba7e05276dc2f436a43e0bb7d42da3.tar.xz
freeipa-ade4aaef9aba7e05276dc2f436a43e0bb7d42da3.zip
Make sure uninstall script prompts for reboot as last
Parts of client uninstall logic could be skipped in attended uninstallation if user agreed to reboot the machine. Particulary, the uninstall script would not try to remove /etc/ipa/default.conf and therefore subsequent installation would fail, client being detected as already configured. https://fedorahosted.org/freeipa/ticket/3462 https://fedorahosted.org/freeipa/ticket/3463
-rwxr-xr-xipa-client/ipa-install/ipa-client-install54
1 files changed, 35 insertions, 19 deletions
diff --git a/ipa-client/ipa-install/ipa-client-install b/ipa-client/ipa-install/ipa-client-install
index 4433fc717..97332d1a0 100755
--- a/ipa-client/ipa-install/ipa-client-install
+++ b/ipa-client/ipa-install/ipa-client-install
@@ -611,41 +611,57 @@ def uninstall(options, env):
if was_sshd_configured and ipaservices.knownservices.sshd.is_running():
ipaservices.knownservices.sshd.restart()
- if not options.unattended:
- root_logger.info(
- "The original nsswitch.conf configuration has been restored.")
- root_logger.info(
- "You may need to restart services or reboot the machine.")
- if not options.on_master:
- if user_input("Do you want to reboot the machine?", False):
- try:
- run(["/sbin/reboot"])
- except Exception, e:
- root_logger.error(
- "Reboot command failed to exceute: %s", str(e))
- return CLIENT_UNINSTALL_ERROR
-
rv = 0
if fstore.has_files():
- root_logger.error('Some files have not been restored, see /var/lib/ipa-client/sysrestore/sysrestore.index')
+ root_logger.error('Some files have not been restored, see '
+ '/var/lib/ipa-client/sysrestore/sysrestore.index')
has_state = False
for module in statestore.modules.keys():
- root_logger.error('Some installation state for %s has not been restored, see /var/lib/ipa/sysrestore/sysrestore.state' % module)
+ root_logger.error('Some installation state for %s has not been '
+ 'restored, see /var/lib/ipa/sysrestore/sysrestore.state',
+ module)
has_state = True
rv = 1
if has_state:
- root_logger.warning('Some installation state has not been restored.\nThis may cause re-installation to fail.\nIt should be safe to remove /var/lib/ipa-client/sysrestore.state but it may\nmean your system hasn\'t be restored to its pre-installation state.')
+ root_logger.warning(
+ 'Some installation state has not been restored.\n'
+ 'This may cause re-installation to fail.\n'
+ 'It should be safe to remove /var/lib/ipa-client/sysrestore.state '
+ 'but it may\n mean your system hasn\'t been restored '
+ 'to its pre-installation state.')
# Remove the IPA configuration file
try:
os.remove("/etc/ipa/default.conf")
- except Exception:
- pass
+ except OSError, e:
+ root_logger.warning('/etc/ipa/default.conf could not be removed: %s',
+ str(e))
+ root_logger.warning('Please remove /etc/ipa/default.conf manually, '
+ 'as it can cause subsequent installation to fail.')
root_logger.info("Client uninstall complete.")
+ # The next block of code prompts for reboot, therefore all uninstall
+ # logic has to be done before
+
+ if not options.unattended:
+ root_logger.info(
+ "The original nsswitch.conf configuration has been restored.")
+ root_logger.info(
+ "You may need to restart services or reboot the machine.")
+ if not options.on_master:
+ if user_input("Do you want to reboot the machine?", False):
+ try:
+ run(["/sbin/reboot"])
+ except Exception, e:
+ root_logger.error(
+ "Reboot command failed to exceute: %s", str(e))
+ return CLIENT_UNINSTALL_ERROR
+
+ # IMPORTANT: Do not put any client uninstall logic after the block above
+
return rv
def configure_ipa_conf(fstore, cli_basedn, cli_realm, cli_domain, cli_server):