+ def __init__(self):
+ super(OvsDpdkVhost, self).__init__()
+ self._logger = logging.getLogger(__name__)
+
+ vswitchd_args = []
+
+ # legacy DPDK configuration through --dpdk option of vswitchd
+ if self.old_dpdk_config():
+ # override socket-mem settings
+ tmp_dpdk_args = S.getValue('VSWITCHD_DPDK_ARGS')
+ for tmp_arg in tmp_dpdk_args:
+ if tmp_arg.startswith('--socket-mem'):
+ tmp_dpdk_args.remove(tmp_arg)
+ tmp_dpdk_args += ['--socket-mem ' + ','.join(S.getValue('DPDK_SOCKET_MEM'))]
+ vswitchd_args = ['--dpdk'] + tmp_dpdk_args
+ # add dpdk args to generic ovs-vswitchd settings
+ if self._vswitchd_args:
+ self._vswitchd_args = vswitchd_args + ['--'] + self._vswitchd_args
+ else:
+ self._vswitchd_args = vswitchd_args
+
+ def configure(self):
+ """ Configure vswitchd DPDK options through ovsdb if needed
+ """
+ dpdk_config = S.getValue('VSWITCHD_DPDK_CONFIG')
+ if dpdk_config and not self.old_dpdk_config():
+ # override socket-mem settings
+ dpdk_config['dpdk-socket-mem'] = ','.join(S.getValue('DPDK_SOCKET_MEM'))
+ # enforce calls to ovs-vsctl with --no-wait
+ tmp_br = OFBridge(timeout=-1)
+ for option in dpdk_config:
+ tmp_br.set_db_attribute('Open_vSwitch', '.',
+ 'other_config:' + option, dpdk_config[option])