[openstack-dev] [Nova][Neutron] Portbinding for live migration spec

Andreas Scheuring scheuran at linux.vnet.ibm.com
Fri Oct 28 11:25:35 UTC 2016


I just pushed an update to the neutron spec [1], describing the general 
purpose portbinding API that we decided on in Tuesdays Nova-Neutron 
Cross project session.

Please review it and let me know, if I understood everything correctly!

When going down the path with the general purpose API, some new 
questions do arise. The main question is, if this new API should only 
cover compute bindings or also all other kind of bindngs (DVR)?
As soon as the scope is clear, I can start figuring out what that means 
for ML2 and the database (OVO) models.
All questions are all listed further below, but they are also in the 
spec under the corresponding API. Please reply on the spec if you have 
any opinion on that.

Thanks!

Andreas

[1] https://review.openstack.org/#/c/309416/

Questions on List Bindings:
* Should only compute bindings get listed? Or all kind of bindings,
   including DVR bindings?
* Should all the details be listed, or just a subset?
* That list might get pretty long for DVR ports. How  and when to limit the
   output?


Questions on Show Binding:
* If DVR is also externalized
   * probably some additional fields are of interest (router_id, something
    else?)
   * Today a dvr port is shown with vif_type = 'distributed', although 
it has
     a real vif_type like 'ovs'. How to deal with that in this API?
     Should there be an extra flag showing, whether a port is distributed or
     not?

Questions on Create Binding:
* Should there be a limit for creating bindings?
* Do we need a mechanism to ensure that only 1 binidng can be active for
   a compute port? I think so!
* Should the creation of a binding be restricted to ports with compute
   bindings? What about creating bindings for a router, dhcp port?
* Should we have a capability to create a binding based on an existing 
binding
   (for live migration)? Or should nova take care of creating the second
   binding with exactly the same data?
* Shall this API replace the existing API in the future (today a binding
   for a port gets created by setting the binding:host parameter).
* Should status be a attribute of create? Or would we always create inactive
   port and then force the user to activate it via the activate API? Or 
should
   the first binding become activated by default, while all others need
   explicit activation?
* Would we consider a failed binding as an client issue (4xx code) or a 
server
   issue (5xx code)? Ideas for concrete http codes?
* Can we make the MAC address part of a binding (sr-iov migration?)

Questions on update binding:
* Should the status field be modifiable?

Questions on activate binding:
* Is this required at all? We could also activate a binding when updating
   the status field of a binding.
* Should this automatically deactivate all active bindings? Or is deactivate
   an explicit step?




More information about the OpenStack-dev mailing list