summaryrefslogtreecommitdiffstats
path: root/ipalib
diff options
context:
space:
mode:
authorRob Crittenden <rcritten@redhat.com>2010-10-15 15:03:51 -0400
committerRob Crittenden <rcritten@redhat.com>2010-10-15 15:03:51 -0400
commit0ceba59d87d0e3b2ecce623367b34a0dd339c1c4 (patch)
tree1b2183c82851ec7b8b2f0925976e807e3db61be3 /ipalib
parent264413bcb9d5adaeb6815565cd099ea06e43e532 (diff)
downloadfreeipa-0ceba59d87d0e3b2ecce623367b34a0dd339c1c4.tar.gz
freeipa-0ceba59d87d0e3b2ecce623367b34a0dd339c1c4.tar.xz
freeipa-0ceba59d87d0e3b2ecce623367b34a0dd339c1c4.zip
Add Requires on ipa-client to ipa-admintools, ensure ipa client is configured
It makes little sense to install ipa-admintools without ipa-client, require it. Also see if the client has been configured. This is a bit tricky since we have a full set of defaults. Add a new env option that gets set if at least one configuration file is loaded. ticket 213
Diffstat (limited to 'ipalib')
-rw-r--r--ipalib/cli.py4
-rw-r--r--ipalib/config.py2
-rw-r--r--ipalib/errors.py10
3 files changed, 15 insertions, 1 deletions
diff --git a/ipalib/cli.py b/ipalib/cli.py
index 44f9c813c..dff709af0 100644
--- a/ipalib/cli.py
+++ b/ipalib/cli.py
@@ -37,7 +37,7 @@ import frontend
import backend
import plugable
import util
-from errors import PublicError, CommandError, HelpError, InternalError, NoSuchNamespaceError, ValidationError, NotFound
+from errors import PublicError, CommandError, HelpError, InternalError, NoSuchNamespaceError, ValidationError, NotFound, NotConfiguredError
from constants import CLI_TAB
from parameters import Password, Bytes, File
from text import _
@@ -945,6 +945,8 @@ def run(api):
api.register(klass)
api.load_plugins()
api.finalize()
+ if not 'config_loaded' in api.env:
+ raise NotConfiguredError()
sys.exit(api.Backend.cli.run(argv))
except KeyboardInterrupt:
print ''
diff --git a/ipalib/config.py b/ipalib/config.py
index 1dbd5b7ce..91a189642 100644
--- a/ipalib/config.py
+++ b/ipalib/config.py
@@ -389,6 +389,8 @@ class Env(object):
if key not in self:
self[key] = value
i += 1
+ if 'config_loaded' not in self: # we loaded at least 1 file
+ self['config_loaded'] = True
return (i, len(items))
def _join(self, key, *parts):
diff --git a/ipalib/errors.py b/ipalib/errors.py
index 42d43ce64..b960ffc75 100644
--- a/ipalib/errors.py
+++ b/ipalib/errors.py
@@ -746,6 +746,7 @@ class PasswordMismatch(InvocationError):
errno = 3011
format = _('Passwords do not match')
+
class NotImplementedError(InvocationError):
"""
**3012** Raise when a function hasn't been implemented.
@@ -755,6 +756,15 @@ class NotImplementedError(InvocationError):
format = _('Command not implemented')
+class NotConfiguredError(InvocationError):
+ """
+ **3013** Raise when there is no configuration
+ """
+
+ errno = 3013
+ format = _('Client is not configured. Run ipa-client-install.')
+
+
##############################################################################
# 4000 - 4999: Execution errors