summaryrefslogtreecommitdiffstats
path: root/ipalib
diff options
context:
space:
mode:
authorFelipe Volpone <fbarreto@redhat.com>2017-08-04 18:25:12 -0300
committerTomas Krizek <tkrizek@redhat.com>2017-08-11 13:55:39 +0200
commitcac3475a0454b730d6e5b2093c2e63d395acd387 (patch)
tree67aeaccb4b9b8204fc1677186b6e33366bf92b59 /ipalib
parenta3c99367bfe1071073cd93237660d783459b25e2 (diff)
downloadfreeipa-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.py8
-rw-r--r--ipalib/util.py14
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