]> review.fuel-infra Code Review - openstack-build/neutron-build.git/commitdiff
Merge "Optimize get_bridge_for_tap_device"
authorJenkins <jenkins@review.openstack.org>
Mon, 2 Nov 2015 07:22:59 +0000 (07:22 +0000)
committerGerrit Code Review <review@openstack.org>
Mon, 2 Nov 2015 07:22:59 +0000 (07:22 +0000)
1  2 
neutron/plugins/ml2/drivers/linuxbridge/agent/linuxbridge_neutron_agent.py
neutron/tests/unit/plugins/ml2/drivers/linuxbridge/agent/test_linuxbridge_neutron_agent.py

index 87dca8b3d790d2f5fa79d1df46e061ef256f784d,b2b67285f06a5c331ee680be7967a13f39dfc824..430a9572b92169d7304b1df6b8f54e65165ff8c2
@@@ -193,20 -194,23 +194,23 @@@ class LinuxBridgeManager(object)
              return []
  
      def get_tap_devices_count(self, bridge_name):
 -            try:
 -                if_list = os.listdir(BRIDGE_INTERFACES_FS % bridge_name)
 -                return len([interface for interface in if_list if
 -                            interface.startswith(constants.TAP_DEVICE_PREFIX)])
 -            except OSError:
 -                return 0
 +        try:
 +            if_list = os.listdir(BRIDGE_INTERFACES_FS % bridge_name)
 +            return len([interface for interface in if_list if
 +                        interface.startswith(constants.TAP_DEVICE_PREFIX)])
 +        except OSError:
 +            return 0
  
      def get_bridge_for_tap_device(self, tap_device_name):
-         bridges = self.get_all_neutron_bridges()
-         for bridge in bridges:
-             interfaces = self.get_interfaces_on_bridge(bridge)
-             if tap_device_name in interfaces:
+         try:
+             path = os.readlink(BRIDGE_PATH_FOR_DEVICE % tap_device_name)
+         except OSError:
+             pass
+         else:
+             bridge = path.rpartition('/')[-1]
+             if (bridge.startswith(BRIDGE_NAME_PREFIX)
+                     or bridge in self.bridge_mappings.values()):
                  return bridge
          return None
  
      def is_device_on_bridge(self, device_name):