Hi Stackers,

Now that microversions have been introduced to the Nova API (meaning we can now have novaclient request, say, version 2.3 of the Nova API using the special X-OpenStack-Nova-API-Version HTTP header), is there any good reason to require API extensions at all for *new* functionality.

Sergey Nikitin is currently in the process of code review for the final patch that adds server instance tagging to the Nova API:


Unfortunately, for some reason I really don't understand, Sergey is being required to create an API extension called "os-server-tags" in order to add the server tag functionality to the API. The patch implements the 2.4 Nova API microversion, though, as you can see from this part of the patch:


What is the point of creating a new "plugin"/API extension for this new functionality? Why can't we just modify the nova/api/openstack/compute/server.py Controller.show() method and decorate it with a 2.4 microversion that adds a "tags" attribute to the returned server dictionary?


Because we're using an API extension for this new server tags functionality, we are instead having the extension "extend" the server dictionary with an "os-server-tags:tags" key containing the list of string tags.

This is ugly and pointless. We don't need to use API extensions any more for this stuff.

A client knows that server tags are supported by the 2.4 API microversion. If the client requests the 2.4+ API, then we should just include the "tags" attribute in the server dictionary.

Similarly, new microversion API functionality should live in a module, as a top-level (or subcollection) Controller in /nova/api/openstack/compute/, and should not be in the /nova/api/openstack/compute/plugins/ directory. Why? Because it's not a plugin.

Why are we continuing to use these awkward, messy, and cumbersome API extensions?

Please, I am begging the Nova core team. Let us stop this madness. No more API extensions.


OpenStack Development Mailing List (not for usage questions)
Unsubscribe: openstack-dev-requ...@lists.openstack.org?subject:unsubscribe

Reply via email to