X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=openstack%2Fnet-virt%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fovsdb%2Fopenstack%2Fnetvirt%2Fimpl%2FBridgeConfigurationManagerImpl.java;h=d59f53601734280d497669f225369496a3d40f84;hb=87444dec9cd4b5c629a0b48e4230397d3f8825d1;hp=e58021f93b29a8e2f59c1b23b602a0a44cac67af;hpb=bd4db1ee32a35687cebaaa19d40b3cb8f77f7ab0;p=netvirt.git 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 e58021f93b..d59f536017 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 @@ -19,6 +19,9 @@ import org.opendaylight.ovsdb.openstack.netvirt.api.OvsdbTables; import org.opendaylight.ovsdb.openstack.netvirt.api.Southbound; import org.opendaylight.ovsdb.utils.config.ConfigProperties; import org.opendaylight.ovsdb.utils.servicehelper.ServiceHelper; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.DatapathTypeBase; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.DatapathTypeNetdev; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.DatapathTypeSystem; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.OvsdbNodeAugmentation; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.ovsdb.node.attributes.ConnectionInfo; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.ovsdb.node.attributes.ManagerEntry; @@ -200,6 +203,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 +409,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 +427,7 @@ public class BridgeConfigurationManagerImpl implements BridgeConfigurationManage } } - LOG.debug("createBridges: node: {}, status: success", bridgeNode); + LOG.info("createBridges: node: {}, status: success", bridgeNode); return true; } @@ -448,7 +486,11 @@ public class BridgeConfigurationManagerImpl implements BridgeConfigurationManage boolean rv = true; if ((!southbound.isBridgeOnOvsdbNode(ovsdbNode, bridgeName)) || (southbound.getBridgeFromConfig(ovsdbNode, bridgeName) == null)) { - rv = southbound.addBridge(ovsdbNode, bridgeName, getControllersFromOvsdbNode(ovsdbNode)); + Class dpType = null; + if (configurationService.isUserSpaceEnabled()) { + dpType = DatapathTypeNetdev.class; + } + rv = southbound.addBridge(ovsdbNode, bridgeName, getControllersFromOvsdbNode(ovsdbNode), dpType); } return rv; } @@ -519,7 +561,7 @@ public class BridgeConfigurationManagerImpl implements BridgeConfigurationManage } else if (tokens[0].equalsIgnoreCase("ptcp")) { ConnectionInfo connectionInfo = ovsdbNodeAugmentation.getConnectionInfo(); if (connectionInfo != null && connectionInfo.getLocalIp() != null) { - controllerIpStr = new String(connectionInfo.getLocalIp().getValue()); + controllerIpStr = String.valueOf(connectionInfo.getLocalIp().getValue()); controllersStr.add(Constants.OPENFLOW_CONNECTION_PROTOCOL + ":" + controllerIpStr + ":" + Constants.OPENFLOW_PORT); } else {