[openstack-dev] [nova][glance] Austin summit nova/glance cross-project session recap

Matt Riedemann mriedem at linux.vnet.ibm.com
Mon May 9 20:49:16 UTC 2016


On Thursday afternoon of the design summit the nova and glance teams had 
a cross-project session. The full etherpad is here [1].

This was all about glance v2 integration in nova, the spec for which is 
here [2].

We agreed to add an immediately deprecated use_glancev2 config option 
per Sean Dague's spec addendum [3]. This would default to False so we 
continue using the glance v1 code path and give deployers some time to 
move to glance v2, if they haven't already. We could also use this in a 
CI job to enforce only using glance v2 within nova to test out that this 
is all working.

We know there are going to be some API compat issues when moving to 
glance v2:

* Case sensitive image properties - this is just going to be lossy in 
the nova proxy image API.

* Nested image properties - glance v2 doesn't nest custom properties.

* Size 0 volume-backed snapshots, glance v1 lets you specify size=0 when 
creating the image, glance v2 does not. Mike Fedosin has a workaround 
for this.

* RBD fast snapshots rely on the image location/direct_url. As far as I 
can tell this should still work with glance v2, the operator still has 
to enable it on their glance server though. The devstack ceph plugin 
repo will need to be updated to configure glance v2 for this so we can 
tell it's still working when we switch to v2 [4].

We also agreed that the v2 code should be a copy of the v1 tree and then 
adjusted for talking to the glance v2 API. Everything should be written 
in such a way that we touch the v1 code as little as possible so it can 
be easily dropped in a subsequent release. This means no refactoring of 
common code to make it pretty and re-usable by both v1 and v2 paths in Nova.

Testing
-------

Both glance v1 and v2 are enabled in our standard gate job today. Nova 
is hard-coded to use just v1 though.

The patches will be written in such a way that they'll use glance v2 
code paths if v2 is available, else they'll use v1.

We'll add a job that disables glance v1 and configures nova to use 
glance v2 only. This will tell us if we're missing anything.

Other random things mentioned
-----------------------------

* Jay Pipes wants to make CONF.glance.api_servers not a list in Nova. 
There was agreement in the room on doing this but it's not a requirement 
or dependency for the glance v2 integration in Nova. We should just 
consider it separate cleanup, or it might end up being replaced by the 
service catalog at some point.

* Nova doesn't care about glance 3 or glare at this point. We assume 
glance v2 won't be deprecated any time soon, so as long as Nova doesn't 
need to use glare, we won't worry about adopting it.

Next steps
----------

* Mike Fedosin needs to address the comments in the spec [2] and merge 
it with Sean's addendum [3].

* Nikhil Komawar is going to create the CI job that disables glance v1 
and configures Nova's use_glancev2=True option.

* The existing patches depend on version discovery and it makes them 
more complicated. Mike is going to assess what would be less painful, 
starting from scratch on the code series or cleanup what's already there 
but keeping in mind that we want to dump the v1 path as soon as 
possible. The Nova team really wants to avoid the version discovery and 
conditional logic while building up this series. The v2 parts can be 
unit tested and then the top of the series will be tested against the 
new job that disables glance v1 and sets use_glancev2=True, so we'll 
know when that whole stack is working from the top (sort of like how we 
build new API changes from the bottom (virt driver) to the REST API and 
then test the whole stack from the top API change).

* Before we can change the default value of use_glancev2 to True, we'll 
need to validate it works with ceph/xen/hyper-v/libvirt testing. We have 
gate jobs for ceph and libvirt, so we'll need to confirm with the xen 
and hyper-v driver sub-teams on the v2 validation when the time comes.

[1] https://etherpad.openstack.org/p/newton-nova-glance
[2] https://review.openstack.org/#/c/301741/
[3] https://review.openstack.org/#/c/306447/
[4] 
https://github.com/openstack/devstack-plugin-ceph/blob/fe06350c48de1389f336ba598ea428bf78871b1b/devstack/lib/ceph#L471

-- 

Thanks,

Matt Riedemann




More information about the OpenStack-dev mailing list