[Openstack] RFC: Plugin framework draft
Andrew Bogott
abogott at wikimedia.org
Fri May 18 16:16:03 UTC 2012
On 5/17/12 4:38 PM, Doug Hellmann wrote:
>
> <snip>
>
> In the wikistatus plugin I notice that you modify the global FLAGS
> when wikistatus.py is imported. Is that the right time to do that, or
> should it happen during the on-load handler in the plugin class? Or
> maybe even in the plugin manager, which could ask the plugin for the
> new options and then modify FLAGS itself. It seems like lots of Nova
> code modifies FLAGS during import, but having an explicit trigger for
> that (rather than depending on import order) seems safer to me.
I don't feel strongly about this -- I'm just following the example set
by existing Nova code. Can you think of a corner case where loading it
at import time would cause problems? Alternatively, can you think of a
corner case where we would want a flag to be defined during the magic
moment /between/ import time and the load callback?
I can't think of a case for either, although I have the vague feeling
that the latter is slightly more possible (if still improbable.)
>
> If the entry point for each plugin is given a unique name (instead of
> being called "plugin", as the sharedfs plugin is) we would be able to
> log "loading plugin X" as well as provide options to control which
> plugins are activated. I don't know if that latter idea is a goal or not.
If leaving in that option is free, then I'm all for it. I'm still a bit
new to entry points... is the entry-point name a totally arbitrary string?
Also, is supporting unique names the same thing as /requiring/ unique
names? Would this ultimately result in us needing a governed,
hierarchical namespace?
>
> - Two different loading pathways -- is that useful or just confusing?
>
>
>
> "One and only one obvious way to do it."
OK, I'm convinced. Outside of the common client, are entrypoints
already a hard dependency elsewhere in OpenStack such that we don't lose
anything by requiring them?
> - Should the plugin base class interpose itself between the plugin
> and python-openstackclient in order to enforce interface
> versioning? Is that even possible?
>
>
> We could probably figure out a way to do that, but I don't know why
> you would want to. What did you have in mind? Which interface are you
> worried about versioning, the CLI itself?
I'm not sure I do want to, but here's my concern: Right now the common
client's API for extending the commandline is entirely internal to the
common client itself. When I write the sharedfs plugin to make use of
that same API, I'm treating that internal API as external... and I don't
like being the only person in the world doing that.
Of course, if the expectation is that that common client API will soon
become public/documented/frozen anyway, then there's no problem.
-Andrew
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openstack.org/pipermail/openstack/attachments/20120518/8e5bec63/attachment.html>
More information about the Openstack
mailing list