From: Jenkins Date: Mon, 2 Nov 2015 07:22:59 +0000 (+0000) Subject: Merge "Optimize get_bridge_for_tap_device" X-Git-Url: https://review.fuel-infra.org/gitweb?a=commitdiff_plain;h=35a4c85e781d10da4521565c3a367e4ecb50739d;p=openstack-build%2Fneutron-build.git Merge "Optimize get_bridge_for_tap_device" --- 35a4c85e781d10da4521565c3a367e4ecb50739d diff --cc neutron/plugins/ml2/drivers/linuxbridge/agent/linuxbridge_neutron_agent.py index 87dca8b3d,b2b67285f..430a9572b --- a/neutron/plugins/ml2/drivers/linuxbridge/agent/linuxbridge_neutron_agent.py +++ b/neutron/plugins/ml2/drivers/linuxbridge/agent/linuxbridge_neutron_agent.py @@@ -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):