e263c82e |
#!/bin/bash
# |
0dd34df4 |
# common functions for ovs based plugin
# -------------------------------------
# Save trace setting |
e3a9160c |
OVSB_XTRACE=$(set +o | grep xtrace) |
0dd34df4 |
set +o xtrace
|
614202fc |
OVS_BRIDGE=${OVS_BRIDGE:-br-int} |
c1605550 |
# OVS recognize default 'system' datapath or 'netdev' for userspace datapath
OVS_DATAPATH_TYPE=${OVS_DATAPATH_TYPE:-system} |
d48d672a |
OVS_TUNNEL_BRIDGE=${OVS_TUNNEL_BRIDGE:-br-tun} |
614202fc |
|
aee18c74 |
function is_neutron_ovs_base_plugin { |
0dd34df4 |
# Yes, we use OVS.
return 0
}
|
d4c89289 |
function _neutron_ovs_base_add_bridge {
local bridge=$1
local addbr_cmd="sudo ovs-vsctl --no-wait -- --may-exist add-br $bridge"
|
c1605550 |
if [ "$OVS_DATAPATH_TYPE" != "system" ] ; then |
d4c89289 |
addbr_cmd="$addbr_cmd -- set Bridge $bridge datapath_type=${OVS_DATAPATH_TYPE}"
fi
$addbr_cmd
}
|
aee18c74 |
function _neutron_ovs_base_setup_bridge { |
0dd34df4 |
local bridge=$1 |
b05c8769 |
neutron-ovs-cleanup |
d4c89289 |
_neutron_ovs_base_add_bridge $bridge |
0dd34df4 |
sudo ovs-vsctl --no-wait br-set-external-id $bridge bridge-id $bridge
}
|
aee18c74 |
function neutron_ovs_base_cleanup { |
b05c8769 |
# remove all OVS ports that look like Neutron created ports |
9a704486 |
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 |
614202fc |
sudo ovs-vsctl del-port ${port}
done
|
b05c8769 |
# remove all OVS bridges created by Neutron |
7ab3e39b |
for bridge in $(sudo ovs-vsctl list-br | grep -o -e ${OVS_BRIDGE} -e ${PUBLIC_BRIDGE} -e ${OVS_TUNNEL_BRIDGE}); do |
614202fc |
sudo ovs-vsctl del-br ${bridge}
done
}
|
86af4a0e |
function _neutron_ovs_base_install_ubuntu_dkms {
# install Dynamic Kernel Module Support packages if needed |
ada886dd |
local kernel_version
kernel_version=$(uname -r)
local kernel_major_minor
kernel_major_minor=`echo $kernel_version | cut -d. -f1-2` |
86af4a0e |
# 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
}
|
aee18c74 |
function _neutron_ovs_base_install_agent_packages { |
0dd34df4 |
# Install deps |
86af4a0e |
install_package $(get_packages "openvswitch") |
0dd34df4 |
if is_ubuntu; then |
86af4a0e |
_neutron_ovs_base_install_ubuntu_dkms |
d738a9ec |
restart_service openvswitch-switch |
5452b18d |
elif is_fedora; then
restart_service openvswitch
elif is_suse; then |
cf6d809d |
restart_service openvswitch-switch |
0dd34df4 |
fi
}
|
aee18c74 |
function _neutron_ovs_base_configure_debug_command { |
98a0ad44 |
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 |
0dd34df4 |
}
|
aee18c74 |
function _neutron_ovs_base_configure_firewall_driver { |
3452f8eb |
if [[ "$Q_USE_SECGROUP" == "True" ]]; then |
b05c8769 |
iniset /$Q_PLUGIN_CONF_FILE securitygroup firewall_driver neutron.agent.linux.iptables_firewall.OVSHybridIptablesFirewallDriver |
3452f8eb |
else |
b05c8769 |
iniset /$Q_PLUGIN_CONF_FILE securitygroup firewall_driver neutron.agent.firewall.NoopFirewallDriver |
3452f8eb |
fi
}
|
aee18c74 |
function _neutron_ovs_base_configure_l3_agent { |
6a633fd0 |
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 |
0dd34df4 |
|
b05c8769 |
neutron-ovs-cleanup |
0f18c23d |
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 |
d4c89289 |
_neutron_ovs_base_add_bridge $PUBLIC_BRIDGE |
0f18c23d |
sudo ovs-vsctl br-set-external-id $PUBLIC_BRIDGE bridge-id $PUBLIC_BRIDGE
fi |
0dd34df4 |
}
|
aee18c74 |
function _neutron_ovs_base_configure_nova_vif_driver { |
4540d00e |
: |
3452f8eb |
}
|
0dd34df4 |
# Restore xtrace |
e3a9160c |
$OVSB_XTRACE |