Search in /sys/class/net for network devices

When using /sys/devices/net/virtual to search for tap devices, not all
devices are listed there (i.e. when using Xen).
Also according to the Linux kernel documentation (see
ABI/testing/sysfs-devices), /sys/class should be used
instead of /sys/devices.

Change-Id: I9b4981332b66b6d3f9c36511c81432d3e7644bdd
Closes-Bug: #1419754
This commit is contained in:
Thomas Bechtold 2015-02-09 13:25:56 +01:00
parent 5ce64130ab
commit e228a3dc69
2 changed files with 4 additions and 2 deletions

View File

@ -52,7 +52,9 @@ from neutron.plugins.linuxbridge.common import constants as lconst
LOG = logging.getLogger(__name__)
BRIDGE_NAME_PREFIX = "brq"
BRIDGE_FS = "/sys/devices/virtual/net/"
# NOTE(toabctl): Don't use /sys/devices/virtual/net here because not all tap
# devices are listed here (i.e. when using Xen)
BRIDGE_FS = "/sys/class/net/"
BRIDGE_NAME_PLACEHOLDER = "bridge_name"
BRIDGE_INTERFACES_FS = BRIDGE_FS + BRIDGE_NAME_PLACEHOLDER + "/brif/"
DEVICE_NAME_PLACEHOLDER = "device_name"

View File

@ -447,7 +447,7 @@ class TestLinuxBridgeManager(base.BaseTestCase):
exists_fn.return_value = True
self.assertTrue(self.lbm.is_device_on_bridge("tap1"))
exists_fn.assert_called_with(
"/sys/devices/virtual/net/tap1/brport"
"/sys/class/net/tap1/brport"
)
def test_get_interface_details(self):