X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fcompatibility%2Fsal-compatibility%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fsal%2Fcompatibility%2FNodeMapping.java;h=fa25122bba1565e6deb589b0523bb1f2cb9fffa6;hp=ba86ad99fb9bcde573c3cb4404d12d444ab697ba;hb=80aa861b74f7b0b3574f0962cdb45740ff71946c;hpb=1060b7d9ccea26ae56e25e499abf66732a53f472 diff --git a/opendaylight/md-sal/compatibility/sal-compatibility/src/main/java/org/opendaylight/controller/sal/compatibility/NodeMapping.java b/opendaylight/md-sal/compatibility/sal-compatibility/src/main/java/org/opendaylight/controller/sal/compatibility/NodeMapping.java index ba86ad99fb..fa25122bba 100644 --- a/opendaylight/md-sal/compatibility/sal-compatibility/src/main/java/org/opendaylight/controller/sal/compatibility/NodeMapping.java +++ b/opendaylight/md-sal/compatibility/sal-compatibility/src/main/java/org/opendaylight/controller/sal/compatibility/NodeMapping.java @@ -7,11 +7,8 @@ */ package org.opendaylight.controller.sal.compatibility; -import java.math.BigInteger; -import java.util.Date; -import java.util.HashSet; -import java.util.List; - +import com.google.common.base.Objects; +import com.google.common.base.Preconditions; import org.opendaylight.controller.sal.common.util.Arguments; import org.opendaylight.controller.sal.core.AdvertisedBandwidth; import org.opendaylight.controller.sal.core.Bandwidth; @@ -21,6 +18,7 @@ import org.opendaylight.controller.sal.core.Config; import org.opendaylight.controller.sal.core.ConstructionException; import org.opendaylight.controller.sal.core.MacAddress; import org.opendaylight.controller.sal.core.Name; +import org.opendaylight.controller.sal.core.Node.NodeIDType; import org.opendaylight.controller.sal.core.NodeConnector.NodeConnectorIDType; import org.opendaylight.controller.sal.core.PeerBandwidth; import org.opendaylight.controller.sal.core.Property; @@ -44,6 +42,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.fl import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortConfig; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortFeatures; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.flow.capable.port.State; +import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.OutputPortValues; import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeConnectorId; import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeConnectorRef; import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeConnectorUpdated; @@ -57,11 +56,17 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.N import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.NodeKey; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; -import com.google.common.base.Objects; -import com.google.common.base.Preconditions; +import java.math.BigInteger; +import java.util.Date; +import java.util.HashSet; +import java.util.List; public final class NodeMapping { - public final static String MD_SAL_TYPE = "MD_SAL"; + + /** openflow id prefix */ + public static final String OPENFLOW_ID_PREFIX = "openflow:"; + + public final static String MD_SAL_TYPE = "MD_SAL_DEPRECATED"; private final static Class NODE_CLASS = Node.class; @@ -77,8 +82,19 @@ public final class NodeMapping { } public static org.opendaylight.controller.sal.core.Node toADNode(final NodeId id) throws ConstructionException { - String aDNodeId = NodeMapping.toADNodeId(id); - return new org.opendaylight.controller.sal.core.Node(NodeMapping.MD_SAL_TYPE, aDNodeId); + Long aDNodeId = openflowFullNodeIdToLong(NodeMapping.toADNodeId(id)); + return new org.opendaylight.controller.sal.core.Node(NodeIDType.OPENFLOW, aDNodeId); + } + + /** + * @param adNodeId + * @return + */ + private static Long openflowFullNodeIdToLong(String adNodeId) { + if (adNodeId == null) { + return null; + } + return Long.valueOf(adNodeId.replaceFirst("^.*:", "")); } public static NodeId toNodeId(final InstanceIdentifier id) { @@ -88,6 +104,9 @@ public final class NodeMapping { } public static String toADNodeId(final NodeId nodeId) { + if (nodeId == null) { + return null; + } return nodeId.getValue(); } @@ -112,7 +131,7 @@ public final class NodeMapping { } else if (ncId.equals(toControllerNodeConnectorId(nodeId))) { return NodeConnectorIDType.CONTROLLER; } - return MD_SAL_TYPE; + return NodeConnectorIDType.OPENFLOW; } public static Object toADNodeConnectorId(final NodeConnectorId nodeConnectorId, final NodeId nodeId) { @@ -121,25 +140,34 @@ public final class NodeMapping { nodeConnectorId.equals(toControllerNodeConnectorId(nodeId))) { return org.opendaylight.controller.sal.core.NodeConnector.SPECIALNODECONNECTORID; } - return nodeConnectorId.getValue(); + + return (short) Long.valueOf(nodeConnectorId.getValue().replaceFirst("^.*:", "")).longValue(); + } + + public static NodeId toAdNodeId(final NodeConnectorId nodeConnectorId) { + NodeId nodeId = null; + if (nodeConnectorId != null) { + nodeId = new NodeId(nodeConnectorId.getValue().replaceFirst(":[0-9]+$", "")); + } + return nodeId; } public static NodeConnectorId toControllerNodeConnectorId(final NodeId node) { - return new NodeConnectorId(node.getValue() + ":" + 4294967293L); + return new NodeConnectorId(node.getValue() + ":" + OutputPortValues.CONTROLLER.toString()); } public static NodeConnectorId toLocalNodeConnectorId(final NodeId node) { - return new NodeConnectorId(node.getValue() + ":" + 4294967294L); + return new NodeConnectorId(node.getValue() + ":" + OutputPortValues.LOCAL.toString()); } public static NodeConnectorId toNormalNodeConnectorId(final NodeId node) { - return new NodeConnectorId(node.getValue() + ":" + 4294967290L); + return new NodeConnectorId(node.getValue() + ":" + OutputPortValues.NORMAL.toString()); } public static NodeRef toNodeRef(final org.opendaylight.controller.sal.core.Node node) { - Preconditions.checkArgument(MD_SAL_TYPE.equals(node.getType())); - final String nodeId = Arguments.checkInstanceOf(node.getID(), String.class); - final NodeKey nodeKey = new NodeKey(new NodeId(nodeId)); + Preconditions.checkArgument(NodeIDType.OPENFLOW.equals(node.getType())); + final Long nodeId = Arguments.checkInstanceOf(node.getID(), Long.class); + final NodeKey nodeKey = new NodeKey(new NodeId(OPENFLOW_ID_PREFIX+nodeId)); final InstanceIdentifier nodePath = InstanceIdentifier.builder(Nodes.class).child(NODE_CLASS, nodeKey).toInstance(); return new NodeRef(nodePath); } @@ -162,7 +190,8 @@ public final class NodeMapping { nodeConnectorId = toControllerNodeConnectorId(nodeId); } } else { - nodeConnectorId = new NodeConnectorId(Arguments.checkInstanceOf(nodeConnector.getID(), String.class)); + nodeConnectorId = new NodeConnectorId(OPENFLOW_ID_PREFIX + + Arguments.checkInstanceOf(nodeConnector.getID(), Short.class)); } final NodeConnectorKey connectorKey = new NodeConnectorKey(nodeConnectorId); final InstanceIdentifier path = nodePath.child(NODECONNECTOR_CLASS, connectorKey); @@ -334,7 +363,7 @@ public final class NodeMapping { } public static MacAddress toADMacAddress(final NodeId id) { - final String nodeId = id.getValue().replaceAll("openflow:", ""); + final String nodeId = id.getValue().replaceAll(OPENFLOW_ID_PREFIX, ""); BigInteger nodeIdRaw = new BigInteger(nodeId); long lNodeId = nodeIdRaw.longValue(); byte[] bytesFromDpid = ToSalConversionsUtils.bytesFromDpid(lNodeId);