[openstack-dev] [nova] versioning scheme for consumable libraries
Thierry Carrez
thierry at openstack.org
Wed Nov 21 16:37:48 UTC 2012
Doug Hellmann wrote:
>> In particular, where would that library code live ? In Nova tree ? Or in
>> a separate tree under nova's responsibility, like python-novaclient ?
>
> It would definitely be the nova team's responsibility, although I am
> sure Eoghan and others from the ceilometer team will have input as well.
>
> If we don't move the library out of the main nova code base, then we
> will have to be very vigilant to avoid introducing dependencies on
> global state (cfg.CONF), API changes, etc. For that reason, I think the
> simplest long-term solution would be to create a new git repo managed by
> the nova team with the code for this library and then treat it in the
> same way we plan to treat the oslo libraries. It should install into its
> own namespace (i.e., not the nova package, maybe oslo-virt?) and have a
> separate version number (the triplet Eoghan proposed would work for
> this). The OpenStack projects that use it would need to declare which
> version they want and within an OpenStack release we would have to
> coordinate so that nova and ceilometer don't require different versions,
> just as with other libraries.
OK, that makes sense to me. If we can piggy-back on oslo for this, it's
even better (no need to create a corner case project).
>> If we are talking about a separate library, the versioning can
>> theoretically use anything (like we do with oslo libraries or Python
>> client libraries). But then it's better if a given library version can
>> handle /any/ Nova install, in the same way the Python client libraries
>> do. That option seems to be adding a new corner case category of
>> OpenStack project within the "library" project type, with its own
>> release model... Not exactly a lightweight solution. I'm not sure option
>> 2 is that much of an headache compared to that.
>
> Why do you propose that the library needs to support any version of
> nova? I don't see why it would be treated any differently than any other
> dependency of nova or ceilometer.
There is the question of stable releases, and PyPI insufficient support
for that (same concerns as in the oslo versioning thread). I'm also a
bit worried that we'd have to maintain a weird compatibility matrix,
like "you need 1.6 to talk with Nova 2013.1", but since it's not really
user-oriented, maybe it doesn't matter that much.
> It isn't an API in the sense that the
> library would be used to communicate with nova. It would be something
> nova uses, like anyjson, gevent, or libvirt.
My understanding of option 5 is that the library would be use by
ceilometer to access Nova, not the other way around ?
--
Thierry Carrez (ttx)
Release Manager, OpenStack
More information about the OpenStack-dev
mailing list