mirror of
https://salsa.debian.org/freeipa-team/freeipa.git
synced 2025-02-25 18:55:28 -06:00
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
This commit is contained in:
committed by
Martin Kosek
parent
9005b9bc8a
commit
ade4aaef9a
@@ -611,6 +611,41 @@ def uninstall(options, env):
|
||||
if was_sshd_configured and ipaservices.knownservices.sshd.is_running():
|
||||
ipaservices.knownservices.sshd.restart()
|
||||
|
||||
rv = 0
|
||||
|
||||
if fstore.has_files():
|
||||
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)
|
||||
has_state = True
|
||||
rv = 1
|
||||
|
||||
if has_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 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.")
|
||||
@@ -625,26 +660,7 @@ def uninstall(options, env):
|
||||
"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')
|
||||
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)
|
||||
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.')
|
||||
|
||||
# Remove the IPA configuration file
|
||||
try:
|
||||
os.remove("/etc/ipa/default.conf")
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
root_logger.info("Client uninstall complete.")
|
||||
# IMPORTANT: Do not put any client uninstall logic after the block above
|
||||
|
||||
return rv
|
||||
|
||||
|
||||
Reference in New Issue
Block a user