Comment 1 for bug 1632372

Revision history for this message
sean mooney (sean-k-mooney) wrote :

possible solutions.

1.) introduce a config variable to set the datapath type for the VIF_OVS type. this would mirror the ovs agent datapath type variable in neutron
https://github.com/openstack/neutron/blob/f0ca030595cb7484be338c5678738b2e536b2369/neutron/plugins/ml2/drivers/openvswitch/agent/common/config.py#L75-L80
this would require no changes to nova or neutron but would adress the regression in fuctionality but require operators to set the config value if they happened to use the netdev datapath without dpdk e.g. not use vhost-user interfaces.

2.) modify the neutron ml2 dirver here to pass the datapath type to nova via the vif_details.
https://github.com/openstack/neutron/blob/f0ca030595cb7484be338c5678738b2e536b2369/neutron/plugins/ml2/drivers/openvswitch/mech_driver/mech_openvswitch.py#L108-L128
then modify the os-vif network object
https://github.com/openstack/os-vif/blob/master/os_vif/objects/network.py to store the datapath and modify the os-vif ovs plugin to read it just as we do with the bridge name here
https://github.com/openstack/os-vif/blob/9fb7fe512902a37432e38d884b8be59ce91582db/vif_plug_ovs/ovs.py#L100-L101
also need to modify nova to retrieve the datapath type form the vif_details and populated the value in the os-vif network object.

3.) since neutron requires all bridges to be of the same datapath type
so that patch ports will work we can list the active datapath types using ovs-appctl.
if only one datapath type is active then that is the type that should be used for the bridge.
if both datapaths are active we could raise an exception and refuse to plug the interface or make a best effort guess.