summaryrefslogtreecommitdiffstats
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
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
-rw-r--r--ipa.spec.in1
-rw-r--r--ipalib/cli.py4
-rw-r--r--ipalib/config.py2
-rw-r--r--ipalib/errors.py10
4 files changed, 16 insertions, 1 deletions
diff --git a/ipa.spec.in b/ipa.spec.in
index 46e5c35c..4fb2ff7e 100644
--- a/ipa.spec.in
+++ b/ipa.spec.in
@@ -153,6 +153,7 @@ this package should be installed on every client machine.
Summary: IPA administrative tools
Group: System Environment/Base
Requires: %{name}-python = %{version}-%{release}
+Requires: %{name}-client = %{version}-%{release}
Requires: python-krbV
Requires: python-ldap
diff --git a/ipalib/cli.py b/ipalib/cli.py
index 44f9c813..dff709af 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 1dbd5b7c..91a18964 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 42d43ce6..b960ffc7 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