1 package org.opendaylight.controller.md.compatibility.topology
3 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier
4 import org.opendaylight.yangtools.yang.binding.DataObject
5 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.TopologyKey
6 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.Topology
7 import org.opendaylight.controller.sal.core.Edge
9 import org.opendaylight.controller.sal.core.Property
10 import org.opendaylight.controller.sal.core.NodeConnector
12 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.node.TerminationPoint
13 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Link
14 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.node.TerminationPointKey
15 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.TpId
16 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.NodeKey
17 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NodeId
18 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.LinkKey
19 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.LinkId
20 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier.IdentifiableItem
21 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node
22 import org.opendaylight.controller.sal.compatibility.InventoryMapping
23 class TopologyMapping {
25 new(TopologyKey path, InstanceIdentifier<Topology> key) {
29 def Edge toAdTopologyEdge(InstanceIdentifier<Link> identifier) {
30 val linkKey = (identifier.path.last as IdentifiableItem<Link,LinkKey>).key;
31 val components = linkKey.linkId.value.split("::::");
32 val tail = InventoryMapping.nodeConnectorFromId(components.get(0));
33 val head = InventoryMapping.nodeConnectorFromId(components.get(1));
34 return new Edge(tail, head);
37 def NodeConnector toAdTopologyNodeConnector(InstanceIdentifier<TerminationPoint> identifier) {
38 val tpKey = (identifier.path.last as IdentifiableItem<TerminationPoint,TerminationPointKey>).key;
39 return InventoryMapping.nodeConnectorFromId(tpKey.tpId.value);
42 def org.opendaylight.controller.sal.core.Node toAdTopologyNode(
43 InstanceIdentifier<Node> identifier) {
44 val tpKey = (identifier.path.last as IdentifiableItem<Node,NodeKey>).key;
45 return InventoryMapping.nodeFromNodeId(tpKey.nodeId.value);
50 def NodeKey toTopologyNodeKey(org.opendaylight.controller.sal.core.Node node) {
51 val nodeId = new NodeId(InventoryMapping.toNodeId(node));
52 return new NodeKey(nodeId);
55 def TerminationPointKey toTopologyTerminationPointKey(NodeConnector nc) {
57 val nodeId = new TpId(InventoryMapping.toNodeConnectorId(nc))
58 return new TerminationPointKey(nodeId);
61 def LinkKey toTopologyLinkKey(Edge edge) {
62 val sourceTp = edge.tailNodeConnector.toTopologyTerminationPointKey;
63 val destTp = edge.headNodeConnector.toTopologyTerminationPointKey;
64 val linkId = new LinkId('''«sourceTp.tpId»::::«destTp.tpId»''')
65 return new LinkKey(linkId);