]> review.fuel-infra Code Review - openstack-build/neutron-build.git/commitdiff
Search in /sys/class/net for network devices
authorThomas Bechtold <tbechtold@suse.com>
Mon, 9 Feb 2015 12:25:56 +0000 (13:25 +0100)
committerThomas Bechtold <tbechtold@suse.com>
Mon, 9 Feb 2015 12:34:39 +0000 (13:34 +0100)
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

neutron/plugins/linuxbridge/agent/linuxbridge_neutron_agent.py
neutron/tests/unit/linuxbridge/test_lb_neutron_agent.py

index 2ae3a7abc1722d16b518f4176617710bf6ecc58d..1bbbe910a560c3844a98eea6e138d6f444a89f56 100755 (executable)
@@ -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"
index 2de6cee9e5278c9677f205e7f89d925a7f481096..9e4a44db90b20945d8c8313b0f3243364c8bfbab 100644 (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):