ada886dd43
Ia0957b47187c3dcadd46154b17022c4213781112 proposes to have bashate find instances of setting a local value. The issue is that "local" always returns 0, thus hiding any failure in the commands running to set the variable. This is an automated replacement of such instances Depends-On: I676c805e8f0401f75cc5367eee83b3d880cdef81 Change-Id: I9c8912a8fd596535589b207d7fc553b9d951d3fe
118 lines
3.8 KiB
Bash
118 lines
3.8 KiB
Bash
#!/bin/bash
|
|
#
|
|
# common functions for ovs based plugin
|
|
# -------------------------------------
|
|
|
|
# Save trace setting
|
|
OVSB_XTRACE=$(set +o | grep xtrace)
|
|
set +o xtrace
|
|
|
|
OVS_BRIDGE=${OVS_BRIDGE:-br-int}
|
|
# OVS recognize default 'system' datapath or 'netdev' for userspace datapath
|
|
OVS_DATAPATH_TYPE=${OVS_DATAPATH_TYPE:-system}
|
|
OVS_TUNNEL_BRIDGE=${OVS_TUNNEL_BRIDGE:-br-tun}
|
|
|
|
function is_neutron_ovs_base_plugin {
|
|
# Yes, we use OVS.
|
|
return 0
|
|
}
|
|
|
|
function _neutron_ovs_base_add_bridge {
|
|
local bridge=$1
|
|
local addbr_cmd="sudo ovs-vsctl --no-wait -- --may-exist add-br $bridge"
|
|
|
|
if [ "$OVS_DATAPATH_TYPE" != "system" ] ; then
|
|
addbr_cmd="$addbr_cmd -- set Bridge $bridge datapath_type=${OVS_DATAPATH_TYPE}"
|
|
fi
|
|
|
|
$addbr_cmd
|
|
}
|
|
|
|
function _neutron_ovs_base_setup_bridge {
|
|
local bridge=$1
|
|
neutron-ovs-cleanup
|
|
_neutron_ovs_base_add_bridge $bridge
|
|
sudo ovs-vsctl --no-wait br-set-external-id $bridge bridge-id $bridge
|
|
}
|
|
|
|
function neutron_ovs_base_cleanup {
|
|
# remove all OVS ports that look like Neutron created ports
|
|
for port in $(sudo ovs-vsctl list port | grep -o -e [a-zA-Z\-]*tap[0-9a-f\-]* -e q[rg]-[0-9a-f\-]*); do
|
|
sudo ovs-vsctl del-port ${port}
|
|
done
|
|
|
|
# remove all OVS bridges created by Neutron
|
|
for bridge in $(sudo ovs-vsctl list-br | grep -o -e ${OVS_BRIDGE} -e ${PUBLIC_BRIDGE} -e ${OVS_TUNNEL_BRIDGE}); do
|
|
sudo ovs-vsctl del-br ${bridge}
|
|
done
|
|
}
|
|
|
|
function _neutron_ovs_base_install_ubuntu_dkms {
|
|
# install Dynamic Kernel Module Support packages if needed
|
|
local kernel_version
|
|
kernel_version=$(uname -r)
|
|
local kernel_major_minor
|
|
kernel_major_minor=`echo $kernel_version | cut -d. -f1-2`
|
|
# From kernel 3.13 on, openvswitch-datapath-dkms is not needed
|
|
if [ `vercmp_numbers "$kernel_major_minor" "3.13"` -lt "0" ]; then
|
|
install_package "dkms openvswitch-datapath-dkms linux-headers-$kernel_version"
|
|
fi
|
|
}
|
|
|
|
function _neutron_ovs_base_install_agent_packages {
|
|
# Install deps
|
|
install_package $(get_packages "openvswitch")
|
|
if is_ubuntu; then
|
|
_neutron_ovs_base_install_ubuntu_dkms
|
|
restart_service openvswitch-switch
|
|
elif is_fedora; then
|
|
restart_service openvswitch
|
|
elif is_suse; then
|
|
restart_service openvswitch-switch
|
|
fi
|
|
}
|
|
|
|
function _neutron_ovs_base_configure_debug_command {
|
|
if [ "$Q_USE_PROVIDERNET_FOR_PUBLIC" = "True" ]; then
|
|
iniset $NEUTRON_TEST_CONFIG_FILE DEFAULT external_network_bridge ""
|
|
else
|
|
iniset $NEUTRON_TEST_CONFIG_FILE DEFAULT external_network_bridge $PUBLIC_BRIDGE
|
|
fi
|
|
}
|
|
|
|
function _neutron_ovs_base_configure_firewall_driver {
|
|
if [[ "$Q_USE_SECGROUP" == "True" ]]; then
|
|
iniset /$Q_PLUGIN_CONF_FILE securitygroup firewall_driver neutron.agent.linux.iptables_firewall.OVSHybridIptablesFirewallDriver
|
|
else
|
|
iniset /$Q_PLUGIN_CONF_FILE securitygroup firewall_driver neutron.agent.firewall.NoopFirewallDriver
|
|
fi
|
|
}
|
|
|
|
function _neutron_ovs_base_configure_l3_agent {
|
|
if [ "$Q_USE_PROVIDERNET_FOR_PUBLIC" = "True" ]; then
|
|
iniset $Q_L3_CONF_FILE DEFAULT external_network_bridge ""
|
|
else
|
|
iniset $Q_L3_CONF_FILE DEFAULT external_network_bridge $PUBLIC_BRIDGE
|
|
fi
|
|
|
|
neutron-ovs-cleanup
|
|
if [[ "$Q_USE_PUBLIC_VETH" = "True" ]]; then
|
|
ip link show $Q_PUBLIC_VETH_INT > /dev/null 2>&1 ||
|
|
sudo ip link add $Q_PUBLIC_VETH_INT type veth \
|
|
peer name $Q_PUBLIC_VETH_EX
|
|
sudo ip link set $Q_PUBLIC_VETH_INT up
|
|
sudo ip link set $Q_PUBLIC_VETH_EX up
|
|
sudo ip addr flush dev $Q_PUBLIC_VETH_EX
|
|
else
|
|
_neutron_ovs_base_add_bridge $PUBLIC_BRIDGE
|
|
sudo ovs-vsctl br-set-external-id $PUBLIC_BRIDGE bridge-id $PUBLIC_BRIDGE
|
|
fi
|
|
}
|
|
|
|
function _neutron_ovs_base_configure_nova_vif_driver {
|
|
:
|
|
}
|
|
|
|
# Restore xtrace
|
|
$OVSB_XTRACE
|