fuel-library/deployment/puppet/l23network/files/debian_ovsdpdk

79 lines
2.5 KiB
Bash

#!/bin/sh
if [ -z "${IF_OVS_TYPE}" ]; then
exit 0
fi
ovs_vsctl() {
ovs-vsctl --timeout=5 "$@"
}
if (ovs_vsctl --version) > /dev/null 2>&1; then :; else
exit 0
fi
SERVICE_UNIT=/usr/lib/systemd/system/openvswitch-nonetwork.service
if [ -f $SERVICE_UNIT ] && [ -x /usr/bin/systemctl ]; then
if ! systemctl --quiet is-active openvswitch-nonetwork.service; then
systemctl start openvswitch-nonetwork.service
fi
else
if service openvswitch-switch status > /dev/null 2>&1; then
service openvswitch-switch start
fi
fi
DPDK_EXTRA=""
if [ "${MODE}" = "start" ]; then
eval OVS_EXTRA=\"${IF_OVS_EXTRA}\"
case "${IF_OVS_TYPE}" in
DPDKOVSPort)
DPDK_EXTRA="-- set Interface ${IF_DPDK_PORT} type=dpdk"
if [ -n "$IF_MULTIQ_THREADS" ]; then
DPDK_EXTRA="${DPDK_EXTRA} -- set Interface ${IF_DPDK_PORT} options:n_rxq=${IF_MULTIQ_THREADS}"
fi
if [ -n "$IF_MTU_REQUEST" ]; then
DPDK_EXTRA="${DPDK_EXTRA} -- set Interface ${IF_DPDK_PORT} mtu_request=${IF_MTU_REQUEST}"
fi
ovs_vsctl -- --may-exist add-port "${IF_OVS_BRIDGE}"\
"${IF_DPDK_PORT}" ${IF_OVS_OPTIONS} \
${DPDK_EXTRA} \
${OVS_EXTRA+-- $OVS_EXTRA}
;;
DPDKOVSBond)
for slave in ${IF_OVS_BONDS}; do
DPDK_EXTRA="${DPDK_EXTRA} -- set Interface ${slave} type=dpdk"
if [ -n "$IF_MULTIQ_THREADS" ]; then
DPDK_EXTRA="${DPDK_EXTRA} -- set Interface ${slave} options:n_rxq=${IF_MULTIQ_THREADS}"
fi
if [ -n "$IF_MTU_REQUEST" ]; then
DPDK_EXTRA="${DPDK_EXTRA} -- set Interface ${slave} mtu_request=${IF_MTU_REQUEST}"
fi
done
ovs_vsctl -- --fake-iface add-bond "${IF_OVS_BRIDGE}"\
"${IFACE}" ${IF_OVS_BONDS} ${IF_OVS_OPTIONS} \
${DPDK_EXTRA} \
${OVS_EXTRA+-- $OVS_EXTRA}
;;
*)
exit 0
;;
esac
elif [ "${MODE}" = "stop" ]; then
case "${IF_OVS_TYPE}" in
DPDKOVSPort)
ovs_vsctl -- --if-exists del-port "${IF_OVS_BRIDGE}" "${IF_DPDK_PORT}"
;;
DPDKOVSBond)
ovs_vsctl -- --if-exists del-port "${IF_OVS_BRIDGE}" "${IFACE}"
;;
*)
exit 0
;;
esac
fi
exit 0