[openstack-dev] [all][oslo.messaging] Multi-versioning RPC Service API support
rbryant at redhat.com
Wed Nov 19 14:32:56 UTC 2014
On 11/19/2014 09:18 AM, Doug Hellmann wrote:
> On Nov 19, 2014, at 8:49 AM, Denis Makogon <dmakogon at mirantis.com
> <mailto:dmakogon at mirantis.com>> wrote:
>> Hello Stackers.
>> When i was browsing through bugs of oslo.messaging  i found
>> one  pretty interesting (it’s old as universe), but it doesn’t seem
>> like a bug, mostly like a blueprint.
>> Digging into code of oslo.messaging i’ve found that, at least, for
>> now, there’s no way launch single service that would be able to handle
>> multiple versions (actually it can if manager implementation can
>> handle request for different RPC API versions).
>> So, i’d like to understand if it’s still valid? And if it is
>> i’d like to collect use cases from all projects and see if
>> oslo.messaging can handle such case.
>> But, as first step to understanding multi-versioning/multi-managers
>> strategy for RPC services, i want to clarify few things. Current code
>> single version to a list of RPC service endpoints implementation, so
>> here comes question:
>> -Does a set of endpoints represent single RPC API version cap?
>> If that’s it, how should we represent multi-versioning? If
>> we’d follow existing pattern: each RPC API version cap represents its
>> own set of endpoints,
>> let me provide some implementation details here, for now ‘endpoints’
>> is a list of classes for a single version cap, but if we’d support
>> multiple version
>> caps ‘endpoints’ would become a dictionary that contains pairs of
>> ‘version_cap’-’endpoints’. This type of multi-versioning seems to be
>> the easiest.
> The dispatcher  supports endpoints with versions, and searches for a
> compatible endpoint for incoming requests. I’ll go ahead and close the
> ticket. There are lots of others open and valid, so you might want to
> start looking at some that aren’t quite so old if you’re looking for
> something to contribute. Drop by #openstack-oslo on freenode if you want
> to chat about any of them.
>  http://git.openstack.org/cgit/openstack/oslo.messaging/tree/oslo/messaging/rpc/dispatcher.py#n153
In particular, each endpoint can have an associated namespace, which
effectively allows separate APIs to be separately versioned since a
request comes in and identifies the namespace it is targeting.
Services can also separate versions by just using multiple topics.
More information about the OpenStack-dev