diff options
author | Felipe Volpone <fbarreto@redhat.com> | 2017-08-04 18:25:12 -0300 |
---|---|---|
committer | Tomas Krizek <tkrizek@redhat.com> | 2017-08-11 13:55:39 +0200 |
commit | cac3475a0454b730d6e5b2093c2e63d395acd387 (patch) | |
tree | 67aeaccb4b9b8204fc1677186b6e33366bf92b59 /ipalib | |
parent | a3c99367bfe1071073cd93237660d783459b25e2 (diff) | |
download | freeipa-cac3475a0454b730d6e5b2093c2e63d395acd387.tar.gz freeipa-cac3475a0454b730d6e5b2093c2e63d395acd387.tar.xz freeipa-cac3475a0454b730d6e5b2093c2e63d395acd387.zip |
Changing how commands handles error when it can't connect to IPA server
Creating a method to check if ipa client is configured. Also,
changing scripts to use it instead of duplicating the check.
https://pagure.io/freeipa/issue/6261
Reviewed-By: Florence Blanc-Renaud <frenaud@redhat.com>
Diffstat (limited to 'ipalib')
-rw-r--r-- | ipalib/cli.py | 8 | ||||
-rw-r--r-- | ipalib/util.py | 14 |
2 files changed, 22 insertions, 0 deletions
diff --git a/ipalib/cli.py b/ipalib/cli.py index b1605c5ad..3196687f0 100644 --- a/ipalib/cli.py +++ b/ipalib/cli.py @@ -55,7 +55,9 @@ from ipalib.constants import CLI_TAB, LDAP_GENERALIZED_TIME_FORMAT from ipalib.parameters import File, Str, Enum, Any, Flag from ipalib.text import _ from ipalib import api # pylint: disable=unused-import +from ipalib.util import check_client_configuration from ipapython.dnsutil import DNSName +from ipapython.admintool import ScriptError import datetime @@ -1346,6 +1348,12 @@ def run(api): error = None try: (_options, argv) = api.bootstrap_with_global_options(context='cli') + + try: + check_client_configuration() + except ScriptError as e: + sys.exit(e) + for klass in cli_plugins: api.add_plugin(klass) api.finalize() diff --git a/ipalib/util.py b/ipalib/util.py index 0d3b27113..91d6e469a 100644 --- a/ipalib/util.py +++ b/ipalib/util.py @@ -55,10 +55,15 @@ from ipalib.constants import ( TLS_VERSIONS, TLS_VERSION_MINIMAL, TLS_HIGH_CIPHERS ) from ipalib.text import _ +# pylint: disable=ipa-forbidden-import +from ipalib.install import sysrestore +from ipaplatform.paths import paths +# pylint: enable=ipa-forbidden-import from ipapython.ssh import SSHPublicKey from ipapython.dn import DN, RDN from ipapython.dnsutil import DNSName from ipapython.dnsutil import resolve_ip_addresses +from ipapython.admintool import ScriptError if six.PY3: unicode = str @@ -1069,6 +1074,15 @@ def ensure_krbcanonicalname_set(ldap, entry_attrs): entry_attrs.update(old_entry) +def check_client_configuration(): + """ + Check if IPA client is configured on the system. + """ + fstore = sysrestore.FileStore(paths.IPA_CLIENT_SYSRESTORE) + if not fstore.has_files() and not os.path.exists(paths.IPA_DEFAULT_CONF): + raise ScriptError('IPA client is not configured on this system') + + def check_principal_realm_in_trust_namespace(api_instance, *keys): """ Check that principal name's suffix does not overlap with UPNs and realm |