Replace deprecated brctl with ip commands

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
This commit is contained in:
Nate Johnston 2018-11-12 11:17:07 -05:00
parent e3e9ea2996
commit 56946cfc5f
3 changed files with 11 additions and 18 deletions

View File

@ -369,17 +369,6 @@ To pull glance, OpenStack Image service, from an experimental fork:
Notes stuff you might need to know
==================================
Reset the Bridge
----------------
How to reset the bridge configuration:
::
sudo brctl delif br100 eth0.926
sudo ip link set dev br100 down
sudo brctl delbr br100
Set MySQL Password
------------------

View File

@ -8,21 +8,23 @@ _XTRACE_NEUTRON_LB=$(set +o | grep xtrace)
set +o xtrace
function neutron_lb_cleanup {
sudo ip link set $PUBLIC_BRIDGE down
sudo brctl delbr $PUBLIC_BRIDGE
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 $(sudo brctl show | grep -o -e [a-zA-Z\-]*tap[0-9a-f\-]* -e vxlan-[0-9a-f\-]*); do
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 $(sudo brctl show | grep -o -e [a-zA-Z\-]*tap[0-9a-f\-]* -e ${LB_PHYSICAL_INTERFACE}\.[0-9a-f\-]*); do
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 $(sudo brctl show |grep -o -e brq[0-9a-f\-]*); do
sudo ip link set $bridge down
sudo brctl delbr $bridge
for bridge in $(echo $bridge_list |grep -o -e brq[0-9a-f\-]*); do
sudo ip link delete $bridge
done
}

View File

@ -163,7 +163,9 @@ def _netns_list():
def network_dump():
_header("Network Dump")
_dump_cmd("bridge link")
_dump_cmd("brctl show")
_dump_cmd("ip link show type bridge")
ip_cmds = ["neigh", "addr", "link", "route"]
for cmd in ip_cmds + ['netns']:
_dump_cmd("ip %s" % cmd)