<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>