mirror of
https://salsa.debian.org/freeipa-team/freeipa.git
synced 2024-12-24 08:00:02 -06:00
Return unique error when automount is already or not configured
Use identical return codes as ipa-client-install when uninstalling ipa-client-automount and it is not configured, or when calling it again to return that is ias already configured. https://pagure.io/freeipa/issue/7396 Signed-off-by: Rob Crittenden <rcritten@redhat.com> Reviewed-By: Tibor Dudlak <tdudlak@redhat.com>
This commit is contained in:
parent
230760ffea
commit
a0e846f56c
@ -43,6 +43,8 @@ from six.moves.urllib.parse import urlsplit
|
|||||||
from optparse import OptionParser # pylint: disable=deprecated-module
|
from optparse import OptionParser # pylint: disable=deprecated-module
|
||||||
|
|
||||||
from ipaclient.install import ipachangeconf, ipadiscovery
|
from ipaclient.install import ipachangeconf, ipadiscovery
|
||||||
|
from ipaclient.install.client import (CLIENT_NOT_CONFIGURED,
|
||||||
|
CLIENT_ALREADY_CONFIGURED)
|
||||||
from ipalib import api, errors
|
from ipalib import api, errors
|
||||||
from ipalib.install import sysrestore
|
from ipalib.install import sysrestore
|
||||||
from ipalib.install.kinit import kinit_keytab
|
from ipalib.install.kinit import kinit_keytab
|
||||||
@ -189,7 +191,8 @@ def configure_autofs_sssd(fstore, statestore, autodiscover, options):
|
|||||||
domain.add_provider('ipa', 'autofs')
|
domain.add_provider('ipa', 'autofs')
|
||||||
try:
|
try:
|
||||||
domain.get_option('ipa_automount_location')
|
domain.get_option('ipa_automount_location')
|
||||||
sys.exit('An automount location is already configured')
|
print('An automount location is already configured')
|
||||||
|
sys.exit(CLIENT_ALREADY_CONFIGURED)
|
||||||
except SSSDConfig.NoOptionError:
|
except SSSDConfig.NoOptionError:
|
||||||
domain.set_option('ipa_automount_location', options.location)
|
domain.set_option('ipa_automount_location', options.location)
|
||||||
break
|
break
|
||||||
@ -252,17 +255,31 @@ def configure_autofs_common(fstore, statestore, options):
|
|||||||
autofs.service_name, str(e))
|
autofs.service_name, str(e))
|
||||||
|
|
||||||
def uninstall(fstore, statestore):
|
def uninstall(fstore, statestore):
|
||||||
|
RESTORE_FILES=[
|
||||||
|
paths.SYSCONFIG_AUTOFS,
|
||||||
|
paths.NSSWITCH_CONF,
|
||||||
|
paths.AUTOFS_LDAP_AUTH_CONF,
|
||||||
|
paths.SYSCONFIG_NFS,
|
||||||
|
paths.IDMAPD_CONF,
|
||||||
|
]
|
||||||
|
STATES=['autofs', 'rpcidmapd', 'rpcgssd']
|
||||||
|
|
||||||
|
# automount only touches /etc/nsswitch.conf if LDAP is
|
||||||
|
# used. Don't restore it otherwise.
|
||||||
|
if (statestore.get_state('authconfig', 'sssd') or
|
||||||
|
(statestore.get_state('authselect', 'profile') == 'sssd')):
|
||||||
|
RESTORE_FILES.remove(paths.NSSWITCH_CONF)
|
||||||
|
|
||||||
|
if (not any(fstore.has_file(f) for f in RESTORE_FILES) or
|
||||||
|
not any(statestore.has_state(s) for s in STATES)):
|
||||||
|
print("IPA automount is not configured on this system")
|
||||||
|
return CLIENT_NOT_CONFIGURED
|
||||||
|
|
||||||
print("Restoring configuration")
|
print("Restoring configuration")
|
||||||
if fstore.has_file(paths.SYSCONFIG_AUTOFS):
|
|
||||||
fstore.restore_file(paths.SYSCONFIG_AUTOFS)
|
for filepath in RESTORE_FILES:
|
||||||
if fstore.has_file(paths.NSSWITCH_CONF):
|
if fstore.has_file(filepath):
|
||||||
fstore.restore_file(paths.NSSWITCH_CONF)
|
fstore.restore_file(filepath)
|
||||||
if fstore.has_file(paths.AUTOFS_LDAP_AUTH_CONF):
|
|
||||||
fstore.restore_file(paths.AUTOFS_LDAP_AUTH_CONF)
|
|
||||||
if fstore.has_file(paths.SYSCONFIG_NFS):
|
|
||||||
fstore.restore_file(paths.SYSCONFIG_NFS)
|
|
||||||
if fstore.has_file(paths.IDMAPD_CONF):
|
|
||||||
fstore.restore_file(paths.IDMAPD_CONF)
|
|
||||||
if statestore.has_state('autofs'):
|
if statestore.has_state('autofs'):
|
||||||
enabled = statestore.restore_state('autofs', 'enabled')
|
enabled = statestore.restore_state('autofs', 'enabled')
|
||||||
running = statestore.restore_state('autofs', 'running')
|
running = statestore.restore_state('autofs', 'running')
|
||||||
@ -382,7 +399,8 @@ def main():
|
|||||||
try:
|
try:
|
||||||
check_client_configuration()
|
check_client_configuration()
|
||||||
except ScriptError as e:
|
except ScriptError as e:
|
||||||
sys.exit(e)
|
print(e.msg)
|
||||||
|
sys.exit(e.rval)
|
||||||
|
|
||||||
fstore = sysrestore.FileStore(paths.IPA_CLIENT_SYSRESTORE)
|
fstore = sysrestore.FileStore(paths.IPA_CLIENT_SYSRESTORE)
|
||||||
statestore = sysrestore.StateFile(paths.IPA_CLIENT_SYSRESTORE)
|
statestore = sysrestore.StateFile(paths.IPA_CLIENT_SYSRESTORE)
|
||||||
@ -412,7 +430,8 @@ def main():
|
|||||||
ca_cert_path = paths.IPA_CA_CRT
|
ca_cert_path = paths.IPA_CA_CRT
|
||||||
|
|
||||||
if statestore.has_state('autofs'):
|
if statestore.has_state('autofs'):
|
||||||
sys.exit('automount is already configured on this system.\n')
|
print('An automount location is already configured')
|
||||||
|
sys.exit(CLIENT_ALREADY_CONFIGURED)
|
||||||
|
|
||||||
autodiscover = False
|
autodiscover = False
|
||||||
ds = ipadiscovery.IPADiscovery()
|
ds = ipadiscovery.IPADiscovery()
|
||||||
|
@ -87,3 +87,7 @@ Files that will be configured when using the ldap automount client:
|
|||||||
0 if the installation was successful
|
0 if the installation was successful
|
||||||
|
|
||||||
1 if an error occurred
|
1 if an error occurred
|
||||||
|
|
||||||
|
2 if uninstalling and automount is not configured
|
||||||
|
|
||||||
|
3 if installing and automount already configured
|
||||||
|
Loading…
Reference in New Issue
Block a user