Merge "[opendaylight] Handle dpdk mode on compute nodes"
diff --git a/README.rst b/README.rst
index c1bb7c2..3e01825 100644
--- a/README.rst
+++ b/README.rst
@@ -694,6 +694,7 @@
       compute:
         version: mitaka
         dpdk: True
+        vhost_mode: client # options: client|server (default)
         vhost_socket_dir: /var/run/openvswitch
         backend:
           engine: ml2
diff --git a/neutron/opendaylight/client.sls b/neutron/opendaylight/client.sls
index 3c4a6a4..fb5829f 100644
--- a/neutron/opendaylight/client.sls
+++ b/neutron/opendaylight/client.sls
@@ -17,7 +17,13 @@
   - name: 'ovs-vsctl set-manager {{ ovs_manager|join(' ') }}'
   - unless: 'ovs-vsctl get-manager | fgrep -qx {{ neutron.opendaylight.ovsdb_odl_iface }}'
 
+{%- if neutron.dpdk|default(False) %}
+{%- set ovs_hostconfig = ['--ovs_dpdk --vhostuser_mode=' ~ neutron.vhost_mode|default('server')] %}
+{%- do ovs_hostconfig.append('--vhostuser_socket_dir=' ~ neutron.vhost_socket_dir) if neutron.vhost_socket_dir is defined %}
+{%- else %}
 {%- set ovs_hostconfig = ['--noovs_dpdk'] %}
+{%- endif %}
+
 {%- do ovs_hostconfig.append('--local_ip=' ~ neutron.opendaylight.tunnel_ip) if neutron.opendaylight.tunnel_ip is defined %}
 {%- do ovs_hostconfig.append('--bridge_mapping=' ~ neutron.opendaylight.provider_mappings) if neutron.opendaylight.provider_mappings is defined %}