[openstack-dev] [nova][newton] Austin summit nova/newton cross-project session recap
mriedem at linux.vnet.ibm.com
Mon May 2 01:01:41 UTC 2016
On Wednesday morning the Nova and Neutron teams got together for a
design summit session. The full etherpad is here .
We talked through three major items.
1. Neutron routed networks.
Carl Baldwin gave a quick recap that we're on track with the Nova spec
 and had pushed a new revision which addressed Dan Smith's latest
comments. The spec is highly dependent on Jay Pipes'
generic-resource-pools spec which needs to be rebated, and then
hopefully we can approve that this week and the routed networks one
We spent some time with Dan Smith sketching out his idea for moving the
neutron network allocation code from the nova compute node to conductor.
This would help with a few things:
a) Doing the allocation earlier in the process so it's less expensive if
we fail on the compute and get into a retry loop.
b) It should clean up a bunch of the allocation code that's in the
network API today, so we can separate the allocation logic from the
check/update logic. This would mean that by the time we get to the
compute the ports are already allocated and we just have to check back
with Neutron that they are still correct and update their details. And
that would also mean by the time we get to the compute it looks the same
whether the user provided the port at boot time or Nova allocated it.
c) Nova can update it's allocation tables before scheduling to make a
more informed decision about where to place the instance based on what
Neutron has already told us is available.
John Garbutt is planning on working on doing this cleanup/refactor to
move parts of the network allocation code from the compute to conductor.
We'll most likely need a spec for this work.
2. Get Me a Network
We really just talked about two items here:
a) With the microversion, if the user requests 'auto' network allocation
and there are no available networks for the project and dry-run
validation for auto-allocated-topology fails on the Neutron side (the
default public network and subnet pool aren't setup), we'll fail the API
request with a 409. I had asked if we should fall back to the existing
behavior of just not allocating networking, but we decided that it will
be better to be explicit about a failure if you're requesting 'auto'. In
most cases projects already have a network available to them when their
cloud provider sets up their project, so they won't even get to the
auto-allocated network topology code being written for the spec. But if
not, it's a failure and not allocating networking is just...weird. Plus
you can opt into the 'none' behavior with the microversion if that's
what you really want.
b) There were some questions about making get-me-a-network more advanced
than the networking that is setup today (a tenant network behind a
router). The agreement was that get-me-a-network is for the case that
the user doesn't care, they just want networking for their instance in
Nova. Anything that's more advanced should be pre-allocated in Neutron
and the instance in Nova should be booted with the network/port that was
pre-allocated in Neutron. There might be future changes/customization to
the type of network created from the auto-allocated-topology API in
Neutron, but that should be dealt with only in Neutron and not a concern
3. Deprecating nova-network.
The rest of the session was spent discussing the (re)deprecation of
nova-network. Given the recent couple of user surveys, it's clear that
deployments have shifted to using Neutron.
We have some gaps in the Nova REST API but we can work each of those on
a case-by-case basis. For example, we won't implement the
os-virtual-interfaces API for Neutron. Today it returns a 400, that
could maybe use a more appropriate error code, but it won't be changed
to be a 200. And for the os-limits API which returns some compute and
network resource quota limits info, we can microversion it to simply not
return the network resources if you're using Neutron. Once we drop
nova-network we'll update the API again to not return those network
resources at all, you'll get them from Neutron (if you aren't already).
We also decided it's not worth deprecating nova-network in pieces since
it gets messy and something might force us to add feature parity if it's
not deprecated outright, like cells v2.
And we said it's not worth splitting it out into it's own repo since
that has cost of it's own to maintain. If people want to fork the repo
to keep using it, that's on them but it won't be supported by the Nova
team once it's removed.
So given the above, Sean proposed the deprecation patch  which by now
is already (eagerly) approved. Note that there isn't a timetable on the
actual removal, it could be as early as Ocata, but we need to address
the REST API gaps and virt driver CI testing that's using it today. So
we'll see where we're at during the midcycle and once we get to Ocata to
see if it's possible to remove it.
I have to say, given where we are now with the second attempt at
deprecating nova-network, it was much more obvious this time around.
This is a testament to the hard work that the Neutron team has been
doing for the last few releases to stabilize, test, document and
generally improve the project so that we are able to get here.
More information about the OpenStack-dev