From: Sam Hague Date: Sun, 22 Nov 2015 15:58:28 +0000 (+0000) Subject: Merge "L3: Add eth to br-ex" X-Git-Tag: release/beryllium~179 X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=commitdiff_plain;h=df08ae0d239824f7bce568a5dbaa7de48ad9ae31;hp=5483b28f4afe78afb2cdb76e7ea392c4fa356ea3;p=ovsdb.git Merge "L3: Add eth to br-ex" --- diff --git a/openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/api/BridgeConfigurationManager.java b/openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/api/BridgeConfigurationManager.java index d58075cad..0d1b52cf7 100644 --- a/openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/api/BridgeConfigurationManager.java +++ b/openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/api/BridgeConfigurationManager.java @@ -117,4 +117,14 @@ public interface BridgeConfigurationManager { * @return a List in the format {eth1, eth2} given bridge_mappings=physnet1:eth1,physnet2:eth2 */ List getAllPhysicalInterfaceNames(Node node); + + /* + * Return br-ex interface configured in the bridge_mappings. + * Return null if br-ex is not configured in bridge_mappings. + * @param node the {@link Node} to query + * @param externalNetwork + * @return the interface as a string like eth3 given bridge_mappings=br-ex:eth3 + */ + String getExternalInterfaceName (Node node, String externalNetwork); + } diff --git a/openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/impl/BridgeConfigurationManagerImpl.java b/openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/impl/BridgeConfigurationManagerImpl.java index e58021f93..3ea460801 100644 --- a/openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/impl/BridgeConfigurationManagerImpl.java +++ b/openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/impl/BridgeConfigurationManagerImpl.java @@ -200,6 +200,34 @@ public class BridgeConfigurationManagerImpl implements BridgeConfigurationManage return isCreated; } + + + @Override + public String getExternalInterfaceName (Node node, String extNetwork) { + String phyIf = null; + String providerMaps = southbound.getOtherConfig(node, OvsdbTables.OPENVSWITCH, + configurationService.getProviderMappingsKey()); + if (providerMaps != null) { + for (String map : providerMaps.split(",")) { + String[] pair = map.split(":"); + if (pair[0].equals(extNetwork)) { + phyIf = pair[1]; + break; + } + } + } + if (phyIf == null) { + LOG.error("External interface not found for Node: {}, Network {}", + node, extNetwork); + } + else { + LOG.info("External interface found for Node: {}, Network {} is {}",node,extNetwork,phyIf); + } + return phyIf; + } + + + @Override public String getPhysicalInterfaceName (Node node, String physicalNetwork) { String phyIf = null; @@ -378,8 +406,15 @@ public class BridgeConfigurationManagerImpl implements BridgeConfigurationManage LOG.error("Add Port {} to Bridge {} failed", portNameExt, brExt); return false; } + String extNetName = getExternalInterfaceName(extBridgeNode, brExt); + if ( extNetName != null) { + if (!addPortToBridge(extBridgeNode, brExt, extNetName)) { + LOG.error("Add External Port {} to Bridge {} failed", extNetName, brExt); + return false; + } + LOG.info("Add External Port {} to Ext Bridge {} success", extNetName, brExt); + } } - /* For vlan network types add physical port to br-int. */ if (network.getProviderNetworkType().equalsIgnoreCase(NetworkHandler.NETWORK_TYPE_VLAN)) { String phyNetName = this.getPhysicalInterfaceName(bridgeNode, network.getProviderPhysicalNetwork()); @@ -389,7 +424,7 @@ public class BridgeConfigurationManagerImpl implements BridgeConfigurationManage } } - LOG.debug("createBridges: node: {}, status: success", bridgeNode); + LOG.info("createBridges: node: {}, status: success", bridgeNode); return true; }