plugable: support plugin versioning

Allow multiple incompatible versions of a plugin using the same name. The
current plugins are assumed to be version '1'.

The unique identifier of plugins was changed from plugin name to plugin
name and version. By default, the highest version available at build time
is used. If the plugin is an unknown remote plugin, version of '1' is used
by default.

https://fedorahosted.org/freeipa/ticket/4427

Reviewed-By: David Kupka <dkupka@redhat.com>
This commit is contained in:
Jan Cholasta
2016-06-21 12:07:21 +02:00
parent 79d1f58335
commit 4284d4fb4d
11 changed files with 1056 additions and 448 deletions

View File

@@ -82,6 +82,7 @@ class json_metadata(Command):
elif objname == "all":
objects = dict(
(o.name, json_serialize(o)) for o in self.api.Object()
if o is self.api.Object[o.name]
)
empty = False
except KeyError:
@@ -96,6 +97,7 @@ class json_metadata(Command):
elif methodname == "all":
methods = dict(
(m.name, json_serialize(m)) for m in self.api.Method()
if m is self.api.Method[m.name]
)
empty = False
except KeyError:
@@ -109,6 +111,7 @@ class json_metadata(Command):
elif cmdname == "all":
commands = dict(
(c.name, json_serialize(c)) for c in self.api.Command()
if c is self.api.Command[c.name]
)
empty = False
except KeyError:
@@ -117,12 +120,15 @@ class json_metadata(Command):
if empty:
objects = dict(
(o.name, json_serialize(o)) for o in self.api.Object()
if o is self.api.Object[o.name]
)
methods = dict(
(m.name, json_serialize(m)) for m in self.api.Method()
if m is self.api.Method[m.name]
)
commands = dict(
(c.name, json_serialize(c)) for c in self.api.Command()
if c is self.api.Command[c.name]
)
retval = dict([