56946cfc5f
The bridge-utils package has been deprecated for some time now [1] and 'brctl' does not exist on some more recent distros like Fedora 28. Replace references to brctl with the proper ip commands. Calls to "brctl show" are not being replaced with calls to "bridge link" because the output format is very different and in testing some bridges were not listed. So the simpler method of consulting /sys/class/net is used. In worlddump.py we try running both because failures are handled gracefully by _dump_cmd(), as well as "ip link show type bridge" for additional info. [1] https://lwn.net/Articles/703776/ for example Change-Id: Ie4c8ad6ce4a09c38023c9e4ec7834c249403145f Partial-Bug: #1801919
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 brctl addbr $PUBLIC_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
|