From: Tony Tkacik Date: Mon, 22 Sep 2014 18:29:28 +0000 (+0000) Subject: Merge "Bug 1309 - Cannot publish LinkDiscovered event" X-Git-Tag: release/helium~19 X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=commitdiff_plain;h=3191afc71f22a3d0d17d7bad1befdcd011775703;hp=eccb8a1b65c15fa25650f33f1723ef2e46b745d6 Merge "Bug 1309 - Cannot publish LinkDiscovered event" --- diff --git a/opendaylight/md-sal/compatibility/sal-compatibility/src/main/java/org/opendaylight/controller/sal/compatibility/topology/TopologyMapping.java b/opendaylight/md-sal/compatibility/sal-compatibility/src/main/java/org/opendaylight/controller/sal/compatibility/topology/TopologyMapping.java index 6bc669f60b..ae723a3165 100644 --- a/opendaylight/md-sal/compatibility/sal-compatibility/src/main/java/org/opendaylight/controller/sal/compatibility/topology/TopologyMapping.java +++ b/opendaylight/md-sal/compatibility/sal-compatibility/src/main/java/org/opendaylight/controller/sal/compatibility/topology/TopologyMapping.java @@ -7,12 +7,8 @@ */ package org.opendaylight.controller.sal.compatibility.topology; -import static com.google.common.base.Preconditions.checkNotNull; - -import java.util.List; -import java.util.Set; -import java.util.concurrent.CopyOnWriteArrayList; - +import com.google.common.base.Function; +import com.google.common.collect.FluentIterable; import org.opendaylight.controller.md.sal.binding.util.TypeSafeDataReader; import org.opendaylight.controller.sal.compatibility.NodeMapping; import org.opendaylight.controller.sal.core.ConstructionException; @@ -33,11 +29,16 @@ import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import com.google.common.base.Function; -import com.google.common.collect.FluentIterable; +import java.util.List; +import java.util.Set; +import java.util.concurrent.CopyOnWriteArrayList; +import java.util.regex.Pattern; + +import static com.google.common.base.Preconditions.checkNotNull; public final class TopologyMapping { private static final Logger LOG = LoggerFactory.getLogger(TopologyMapping.class); + private final static Pattern NUMBERS_ONLY = Pattern.compile("[0-9]+"); private TopologyMapping() { throw new UnsupportedOperationException("Utility class. Instantiation is not allowed."); @@ -100,7 +101,13 @@ public final class TopologyMapping { public static NodeConnector toADNodeConnector(final TpId source, final NodeId nodeId) throws ConstructionException { checkNotNull(source); - return new NodeConnector(NodeConnectorIDType.OPENFLOW, Short.valueOf(toADNodeConnectorId(source)), toADNode(nodeId)); + String nodeConnectorIdStripped = toADNodeConnectorId(source); + if (NUMBERS_ONLY.matcher(nodeConnectorIdStripped).matches()) { + return new NodeConnector(NodeConnectorIDType.OPENFLOW, Short.valueOf(nodeConnectorIdStripped), toADNode(nodeId)); + } + LOG.debug("NodeConnectorId does not match openflow id type, using " + NodeMapping.MD_SAL_TYPE + "instead"); + NodeConnectorIDType.registerIDType(NodeMapping.MD_SAL_TYPE, String.class, NodeMapping.MD_SAL_TYPE); + return new NodeConnector(NodeMapping.MD_SAL_TYPE, nodeConnectorIdStripped, toADNode(nodeId)); } public static String toADNodeConnectorId(final TpId nodeConnectorId) { @@ -109,6 +116,12 @@ public final class TopologyMapping { public static Node toADNode(final NodeId nodeId) throws ConstructionException { checkNotNull(nodeId); - return new Node(NodeIDType.OPENFLOW, Long.valueOf(toADNodeId(nodeId))); + String nodeIdStripped = toADNodeId(nodeId); + if (NUMBERS_ONLY.matcher(nodeIdStripped).matches()) { + return new Node(NodeIDType.OPENFLOW, Long.valueOf(nodeIdStripped)); + } + LOG.debug("NodeId does not match openflow id type, using " + NodeMapping.MD_SAL_TYPE + "instead"); + NodeIDType.registerIDType(NodeMapping.MD_SAL_TYPE, String.class); + return new Node(NodeMapping.MD_SAL_TYPE, nodeId.getValue()); } } diff --git a/opendaylight/md-sal/compatibility/sal-compatibility/src/test/java/org/opendaylight/controller/sal/compatibility/topology/test/TopologyMappingTest.java b/opendaylight/md-sal/compatibility/sal-compatibility/src/test/java/org/opendaylight/controller/sal/compatibility/topology/test/TopologyMappingTest.java index b76370a538..9369217d78 100644 --- a/opendaylight/md-sal/compatibility/sal-compatibility/src/test/java/org/opendaylight/controller/sal/compatibility/topology/test/TopologyMappingTest.java +++ b/opendaylight/md-sal/compatibility/sal-compatibility/src/test/java/org/opendaylight/controller/sal/compatibility/topology/test/TopologyMappingTest.java @@ -69,4 +69,17 @@ public class TopologyMappingTest { Assert.assertEquals("OF|00:00:00:00:00:00:00:01", observedNode.toString()); } + /** + * Test method for {@link org.opendaylight.controller.sal.compatibility.topology.TopologyMapping#toADNodeConnector(org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.TpId, org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NodeId)}. + * @throws ConstructionException + */ + @Test + public void bug1309ToADNodeConnector() throws ConstructionException { + NodeId nodeId = new NodeId("some_unknown_node"); + TpId source = new TpId("192.168.0.1"); + NodeConnector observedNodeConnector = TopologyMapping.toADNodeConnector(source, nodeId); + + Assert.assertEquals("MD_SAL_DEPRECATED|192.168.0.1@MD_SAL_DEPRECATED|some_unknown_node", observedNodeConnector.toString()); + } + }