From 4e8c02c120d8b381781896f7ed39976932bfe8d3 Mon Sep 17 00:00:00 2001 From: Jeya ganesh babu J Date: Wed, 4 Jan 2017 13:38:00 -0800 Subject: [PATCH 1/3] Support for dpdk vhostuser os-vif plugin Added backend support for dpdk vhostuser os-vif plugin to nova. The dpdk vhostuser uses 'vrouter' os-vif plugin. --- nova/network/os_vif_util.py | 16 +++++++++++++++- nova/virt/libvirt/vif.py | 3 +++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/nova/network/os_vif_util.py b/nova/network/os_vif_util.py index 54107a06609..594cb49fd42 100644 --- a/nova/network/os_vif_util.py +++ b/nova/network/os_vif_util.py @@ -323,7 +323,21 @@ def _nova_to_osvif_vif_midonet(vif): # VIF_TYPE_VHOSTUSER = 'vhostuser' def _nova_to_osvif_vif_vhostuser(vif): - raise NotImplementedError() + if vif['details'].get(model.VIF_DETAILS_VHOSTUSER_VROUTER_PLUG, False): + vif_details = vif['details'] + mode = vif_details.get(model.VIF_DETAILS_VHOSTUSER_MODE, + 'server') + sock_path = vif_details.get(model.VIF_DETAILS_VHOSTUSER_SOCKET) + if sock_path is None: + raise exception.VifDetailsMissingVhostuserSockPath( + vif_id=vif['id']) + obj = _get_vif_instance(vif, objects.vif.VIFVHostUser, + mode=mode, + path=sock_path, + plugin="vrouter", vif_name=_get_vif_name(vif)) + return obj + else: + raise NotImplementedError() # VIF_TYPE_VROUTER = 'vrouter' diff --git a/nova/virt/libvirt/vif.py b/nova/virt/libvirt/vif.py index 1c99fcbe78f..79c494481c9 100644 --- a/nova/virt/libvirt/vif.py +++ b/nova/virt/libvirt/vif.py @@ -445,6 +445,9 @@ def get_config_vrouter(self, instance, vif, image_meta, designer.set_vif_bandwidth_config(conf, inst_type) return conf + def _set_config_VIFVHostUser(self, instance, vif, conf): + designer.set_vif_host_backend_vhostuser_config(conf, vif.mode, vif.path) + def _set_config_VIFBridge(self, instance, vif, conf): conf.net_type = "bridge" conf.source_dev = vif.bridge_name From 6fc4c0e1f497d65ca0e602906dd9c08ffbc28581 Mon Sep 17 00:00:00 2001 From: Jeya ganesh babu J Date: Thu, 5 Jan 2017 12:19:07 -0800 Subject: [PATCH 2/3] Add model for the vrouter vhostuser Add network model for the vrouter vhostuser VIF_DETAILS_VHOSTUSER_VROUTER_PLUG --- nova/network/model.py | 1 + 1 file changed, 1 insertion(+) diff --git a/nova/network/model.py b/nova/network/model.py index 3b35d53c06a..9954c9ecf14 100644 --- a/nova/network/model.py +++ b/nova/network/model.py @@ -51,6 +51,7 @@ def ensure_string_keys(d): # class VIF_DETAILS_PORT_FILTER = 'port_filter' VIF_DETAILS_OVS_HYBRID_PLUG = 'ovs_hybrid_plug' +VIF_DETAILS_VHOSTUSER_VROUTER_PLUG = 'vhostuser_vrouter_plug' VIF_DETAILS_PHYSICAL_NETWORK = 'physical_network' VIF_DETAILS_BRIDGE_NAME = 'bridge_name' From 1c72ddfa92b0ed3a946e086c68cb9866ba870f01 Mon Sep 17 00:00:00 2001 From: Jeya ganesh babu J Date: Thu, 5 Jan 2017 18:54:37 -0800 Subject: [PATCH 3/3] Missing cfg variable definition Added cfg variable definition missed during merge --- nova/virt/libvirt/vif.py | 1 + 1 file changed, 1 insertion(+) diff --git a/nova/virt/libvirt/vif.py b/nova/virt/libvirt/vif.py index 79c494481c9..e958337c456 100644 --- a/nova/virt/libvirt/vif.py +++ b/nova/virt/libvirt/vif.py @@ -26,6 +26,7 @@ from os_vif import exception as osv_exception from oslo_concurrency import processutils from oslo_log import log as logging +from oslo_config import cfg import nova.conf from nova import exception