<div dir="ltr">I
hadn't realised until today that the BP window for new Nova specs in
Juno had closed, and I'm hoping I might get an exception for a minor,
but I think helpful, change in the way VIF plugging works.<br><div><div><div><div><div><div>
<br></div>At the moment, Neutron's plugin returns a binding_type to Nova
when plugging takes place, describing what it's done to bind a network
to a host and how a VM or other guest instance might attach itself to a
network. This requires that Nova and Neutron are configured in a way
such that the Neutron binding_type used is one that the Nova hypervisor
can use.<br>
<br>I would like to change this slightly, so that Nova lists acceptable
binding types, in its preference order, in the header of the binding
request that it passes to Neutron. At the moment this would take the
form of a suggestion - without a similar change in Neutron to take
advantage of it, the binding_type Neutron returns would still be down to
the plugin configuration - but it has advantages for future changes.<br>
<br>It means that Neutron can use a number of binding types, depending
on, for instance, efficiency. Where Nova supports multiple binding
types, Neutron currently chooses one without regard to whether it's a
wise choice or even whether Nova can actually use it (a misconfiguration
that currently results in an internal error). By providing a list, we
give more flexibiity to plugins in Neutron, so that more intelligent
plugins can use the binding type that actually makes the most sense.<br>
<br></div>It also saves a bit of configuration on the Neutron side of
things. Where you're running with multiple binding types, at the moment
Neutron would have to work out what kind of hypervisor is being used on
a machine, presumably by its configuration on that machine for whatever
agent is in use, to determine a suitable binding type. If we told
Neutron what binding type was wanted, the agent could be more general
and support a variety of types on demand. It would no longer be
necessary to configure Neutron at all, because the binding type would be
selected by Nova and only by Nova and Neutron would acquiesce to its
will.<br>
<br></div>The change in Nova is minor, and in any case backward
compatible - right now, Neutron doesn't know any better and would still
rely on configuration, and would use whatever it had been configured to
use, so the presence or absence of the header is meaningless to present
setups. Any hypervisor that actually implemented the change - and I was
thinking of doing it for the generic VIF driver in libvirt, initially -
would provide future Neutron plugins with more choices.<br>
<br></div>It's not remotely essential to get it in for Juno, but since
the change is a staged one requiring changes on both sides of the
Nova/Neutron boundary I was hoping to get step one done sooner rather
than later, particularly since the initial code change would be small
and unlikely to break anything.<br>
<br></div>Thoughts?<br>-- <br></div>Ian.</div>