summaryrefslogtreecommitdiffstats
path: root/ipalib
diff options
context:
space:
mode:
authorJan Cholasta <jcholast@redhat.com>2016-06-02 10:12:26 +0200
committerJan Cholasta <jcholast@redhat.com>2016-06-03 09:00:34 +0200
commitec841e5d7ab29d08de294b3fa863a631cd50e30a (patch)
tree4242a4ad1a668074abd64298f580339a0712035c /ipalib
parentf5fd2b87506366f29ffca88b4a03e27143c79eae (diff)
downloadfreeipa-ec841e5d7ab29d08de294b3fa863a631cd50e30a.tar.gz
freeipa-ec841e5d7ab29d08de294b3fa863a631cd50e30a.tar.xz
freeipa-ec841e5d7ab29d08de294b3fa863a631cd50e30a.zip
ipaclient: implement thin client
Dynamically create plugin package for the remote server with modules and commands based on the API schema when client API is finalizes. For in-tree API instances, use ipalib.plugins directly. https://fedorahosted.org/freeipa/ticket/4739 Reviewed-By: David Kupka <dkupka@redhat.com>
Diffstat (limited to 'ipalib')
-rw-r--r--ipalib/__init__.py15
-rw-r--r--ipalib/plugable.py2
2 files changed, 11 insertions, 6 deletions
diff --git a/ipalib/__init__.py b/ipalib/__init__.py
index dffe2315e..0070e62db 100644
--- a/ipalib/__init__.py
+++ b/ipalib/__init__.py
@@ -907,15 +907,20 @@ class API(plugable.API):
@property
def packages(self):
- import ipalib.plugins
- result = (ipalib.plugins,)
-
if self.env.in_server:
+ import ipalib.plugins
import ipaserver.plugins
- result += (ipaserver.plugins,)
+ result = (
+ ipalib.plugins,
+ ipaserver.plugins,
+ )
else:
+ import ipaclient.remote_plugins
import ipaclient.plugins
- result += (ipaclient.plugins,)
+ result = (
+ ipaclient.remote_plugins.get_package(self),
+ ipaclient.plugins,
+ )
if self.env.context in ('installer', 'updates'):
import ipaserver.install.plugins
diff --git a/ipalib/plugable.py b/ipalib/plugable.py
index b248a2c28..497b5450e 100644
--- a/ipalib/plugable.py
+++ b/ipalib/plugable.py
@@ -524,7 +524,7 @@ class API(ReadOnly):
)
self.log.debug("importing all plugin modules in %s...", package_name)
- modules = find_modules_in_dir(package_dir)
+ modules = getattr(package, 'modules', find_modules_in_dir(package_dir))
modules = ['.'.join((package_name, name)) for name in modules]
for name in modules: