diff options
Diffstat (limited to 'nova/network')
-rw-r--r-- | nova/network/linux_net.py | 42 | ||||
-rw-r--r-- | nova/network/model.py | 2 |
2 files changed, 31 insertions, 13 deletions
diff --git a/nova/network/linux_net.py b/nova/network/linux_net.py index e2f40ff3cb..40064a05de 100644 --- a/nova/network/linux_net.py +++ b/nova/network/linux_net.py @@ -37,6 +37,7 @@ import six from nova import exception from nova.i18n import _, _LE, _LW +from nova.network import model as network_model from nova import objects from nova import paths from nova.pci import utils as pci_utils @@ -1365,15 +1366,34 @@ def _ovs_vsctl(args): raise exception.OvsConfigurationFailure(inner_exception=e) -def create_ovs_vif_port(bridge, dev, iface_id, mac, instance_id, mtu=None): - _ovs_vsctl(['--', '--if-exists', 'del-port', dev, '--', - 'add-port', bridge, dev, - '--', 'set', 'Interface', dev, - 'external-ids:iface-id=%s' % iface_id, - 'external-ids:iface-status=active', - 'external-ids:attached-mac=%s' % mac, - 'external-ids:vm-uuid=%s' % instance_id]) - _set_device_mtu(dev, mtu) +def _create_ovs_vif_cmd(bridge, dev, iface_id, mac, + instance_id, interface_type=None): + cmd = ['--', '--if-exists', 'del-port', dev, '--', + 'add-port', bridge, dev, + '--', 'set', 'Interface', dev, + 'external-ids:iface-id=%s' % iface_id, + 'external-ids:iface-status=active', + 'external-ids:attached-mac=%s' % mac, + 'external-ids:vm-uuid=%s' % instance_id] + if interface_type: + cmd += ['type=%s' % interface_type] + return cmd + + +def create_ovs_vif_port(bridge, dev, iface_id, mac, instance_id, + mtu=None, interface_type=None): + _ovs_vsctl(_create_ovs_vif_cmd(bridge, dev, iface_id, + mac, instance_id, + interface_type)) + # Note at present there is no support for setting the + # mtu for vhost-user type ports. + if interface_type != network_model.OVS_VHOSTUSER_INTERFACE_TYPE: + _set_device_mtu(dev, mtu) + else: + LOG.debug("MTU not set on %(interface_name)s interface " + "of type %(interface_type)s.", + {'interface_name': dev, + 'interface_type': interface_type}) def delete_ovs_vif_port(bridge, dev, delete_dev=True): @@ -1382,10 +1402,6 @@ def delete_ovs_vif_port(bridge, dev, delete_dev=True): delete_net_dev(dev) -def ovs_set_vhostuser_port_type(dev): - _ovs_vsctl(['--', 'set', 'Interface', dev, 'type=dpdkvhostuser']) - - def create_ivs_vif_port(dev, iface_id, mac, instance_id): utils.execute('ivs-ctl', 'add-port', dev, run_as_root=True) diff --git a/nova/network/model.py b/nova/network/model.py index b28bc37aa9..8088ee8805 100644 --- a/nova/network/model.py +++ b/nova/network/model.py @@ -80,6 +80,8 @@ VIF_DETAILS_VHOSTUSER_OVS_PLUG = 'vhostuser_ovs_plug' # Specifies whether vhost-user socket should be used to # create a fp netdevice interface. VIF_DETAILS_VHOSTUSER_FP_PLUG = 'vhostuser_fp_plug' +# ovs vhost user interface type name +OVS_VHOSTUSER_INTERFACE_TYPE = 'dpdkvhostuser' # Constants for dictionary keys in the 'vif_details' field that are # valid for VIF_TYPE_TAP. |