da18895162
Some distros no longer ship brctl, iproute2 should be used in its place. The linuxbridge agent plugin script was still using it, as was worlddump, which generates this warning on a failure: Running devstack worlddump.py /bin/sh: 1: brctl: not found Conditionalizing worlddump based on whether brctl is installed to make this go away. Change-Id: Iafbf4038bab08c261d45d117b12d4629ba32d65e
105 lines
3.5 KiB
Bash
105 lines
3.5 KiB
Bash
#!/bin/bash
|
|
#
|
|
# Neutron Linux Bridge L2 agent
|
|
# -----------------------------
|
|
|
|
# Save trace setting
|
|
_XTRACE_NEUTRON_LB=$(set +o | grep xtrace)
|
|
set +o xtrace
|
|
|
|
function neutron_lb_cleanup {
|
|
sudo ip link delete $PUBLIC_BRIDGE
|
|
|
|
bridge_list=`ls /sys/class/net/*/bridge/bridge_id 2>/dev/null | cut -f5 -d/`
|
|
if [[ -z "$bridge_list" ]]; then
|
|
return
|
|
fi
|
|
if [[ "$Q_ML2_TENANT_NETWORK_TYPE" = "vxlan" ]]; then
|
|
for port in $(echo $bridge_list | grep -o -e [a-zA-Z\-]*tap[0-9a-f\-]* -e vxlan-[0-9a-f\-]*); do
|
|
sudo ip link delete $port
|
|
done
|
|
elif [[ "$Q_ML2_TENANT_NETWORK_TYPE" = "vlan" ]]; then
|
|
for port in $(echo $bridge_list | grep -o -e [a-zA-Z\-]*tap[0-9a-f\-]* -e ${LB_PHYSICAL_INTERFACE}\.[0-9a-f\-]*); do
|
|
sudo ip link delete $port
|
|
done
|
|
fi
|
|
for bridge in $(echo $bridge_list |grep -o -e brq[0-9a-f\-]*); do
|
|
sudo ip link delete $bridge
|
|
done
|
|
}
|
|
|
|
function is_neutron_ovs_base_plugin {
|
|
# linuxbridge doesn't use OVS
|
|
return 1
|
|
}
|
|
|
|
function neutron_plugin_create_nova_conf {
|
|
:
|
|
}
|
|
|
|
function neutron_plugin_install_agent_packages {
|
|
install_package bridge-utils
|
|
}
|
|
|
|
function neutron_plugin_configure_dhcp_agent {
|
|
local conf_file=$1
|
|
:
|
|
}
|
|
|
|
function neutron_plugin_configure_l3_agent {
|
|
local conf_file=$1
|
|
sudo ip link add $PUBLIC_BRIDGE type bridge
|
|
set_mtu $PUBLIC_BRIDGE $PUBLIC_BRIDGE_MTU
|
|
}
|
|
|
|
function neutron_plugin_configure_plugin_agent {
|
|
# Setup physical network interface mappings. Override
|
|
# ``LB_VLAN_RANGES`` and ``LB_INTERFACE_MAPPINGS`` in ``localrc`` for more
|
|
# complex physical network configurations.
|
|
if [[ "$LB_INTERFACE_MAPPINGS" == "" ]] && [[ "$PHYSICAL_NETWORK" != "" ]] && [[ "$LB_PHYSICAL_INTERFACE" != "" ]]; then
|
|
LB_INTERFACE_MAPPINGS=$PHYSICAL_NETWORK:$LB_PHYSICAL_INTERFACE
|
|
fi
|
|
if [[ "$PUBLIC_BRIDGE" != "" ]] && [[ "$PUBLIC_PHYSICAL_NETWORK" != "" ]]; then
|
|
if is_service_enabled q-l3 || is_service_enabled neutron-l3; then
|
|
iniset /$Q_PLUGIN_CONF_FILE linux_bridge bridge_mappings "$PUBLIC_PHYSICAL_NETWORK:$PUBLIC_BRIDGE"
|
|
fi
|
|
fi
|
|
if [[ "$LB_INTERFACE_MAPPINGS" != "" ]]; then
|
|
iniset /$Q_PLUGIN_CONF_FILE linux_bridge physical_interface_mappings $LB_INTERFACE_MAPPINGS
|
|
fi
|
|
if [[ "$Q_USE_SECGROUP" == "True" ]]; then
|
|
iniset /$Q_PLUGIN_CONF_FILE securitygroup firewall_driver neutron.agent.linux.iptables_firewall.IptablesFirewallDriver
|
|
if ! running_in_container; then
|
|
enable_kernel_bridge_firewall
|
|
fi
|
|
else
|
|
iniset /$Q_PLUGIN_CONF_FILE securitygroup firewall_driver neutron.agent.firewall.NoopFirewallDriver
|
|
fi
|
|
AGENT_BINARY="$NEUTRON_BIN_DIR/neutron-linuxbridge-agent"
|
|
iniset /$Q_PLUGIN_CONF_FILE agent tunnel_types $Q_TUNNEL_TYPES
|
|
|
|
# Configure vxlan tunneling
|
|
if [[ "$ENABLE_TENANT_TUNNELS" == "True" ]]; then
|
|
if [[ "$Q_ML2_TENANT_NETWORK_TYPE" == "vxlan" ]]; then
|
|
iniset /$Q_PLUGIN_CONF_FILE vxlan enable_vxlan "True"
|
|
iniset /$Q_PLUGIN_CONF_FILE vxlan local_ip $TUNNEL_ENDPOINT_IP
|
|
else
|
|
iniset /$Q_PLUGIN_CONF_FILE vxlan enable_vxlan "False"
|
|
fi
|
|
else
|
|
iniset /$Q_PLUGIN_CONF_FILE vxlan enable_vxlan "False"
|
|
fi
|
|
}
|
|
|
|
function neutron_plugin_setup_interface_driver {
|
|
local conf_file=$1
|
|
iniset $conf_file DEFAULT interface_driver linuxbridge
|
|
}
|
|
|
|
function neutron_plugin_check_adv_test_requirements {
|
|
is_service_enabled q-agt && is_service_enabled q-dhcp && return 0
|
|
}
|
|
|
|
# Restore xtrace
|
|
$_XTRACE_NEUTRON_LB
|