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


__________________________________________________________________________
OpenStack Development Mailing List (not for usage questions)
Unsubscribe: openstack-dev-requ...@lists.openstack.org?subject:unsubscribe
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev

Reply via email to