2 * Copyright (c) 2014 Cisco Systems, Inc. and others. All rights reserved.
4 * This program and the accompanying materials are made available under the
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6 * and is available at http://www.eclipse.org/legal/epl-v10.html
8 package org.opendaylight.controller.md.compatibility.topology
10 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier
11 import org.opendaylight.yangtools.yang.binding.DataObject
12 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.TopologyKey
13 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.Topology
14 import org.opendaylight.controller.sal.core.Edge
16 import org.opendaylight.controller.sal.core.Property
17 import org.opendaylight.controller.sal.core.NodeConnector
19 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.node.TerminationPoint
20 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Link
21 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.node.TerminationPointKey
22 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.TpId
23 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.NodeKey
24 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NodeId
25 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.LinkKey
26 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.LinkId
27 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier.IdentifiableItem
28 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node
29 import org.opendaylight.controller.sal.compatibility.InventoryMapping
30 class TopologyMapping {
32 new(TopologyKey path, InstanceIdentifier<Topology> key) {
36 def Edge toAdTopologyEdge(InstanceIdentifier<Link> identifier) {
37 val linkKey = (identifier.path.last as IdentifiableItem<Link,LinkKey>).key;
38 val components = linkKey.linkId.value.split("::::");
39 val tail = InventoryMapping.nodeConnectorFromId(components.get(0));
40 val head = InventoryMapping.nodeConnectorFromId(components.get(1));
41 return new Edge(tail, head);
44 def NodeConnector toAdTopologyNodeConnector(InstanceIdentifier<TerminationPoint> identifier) {
45 val tpKey = (identifier.path.last as IdentifiableItem<TerminationPoint,TerminationPointKey>).key;
46 return InventoryMapping.nodeConnectorFromId(tpKey.tpId.value);
49 def org.opendaylight.controller.sal.core.Node toAdTopologyNode(
50 InstanceIdentifier<Node> identifier) {
51 val tpKey = (identifier.path.last as IdentifiableItem<Node,NodeKey>).key;
52 return InventoryMapping.nodeFromNodeId(tpKey.nodeId.value);
57 def NodeKey toTopologyNodeKey(org.opendaylight.controller.sal.core.Node node) {
58 val nodeId = new NodeId(InventoryMapping.toNodeId(node));
59 return new NodeKey(nodeId);
62 def TerminationPointKey toTopologyTerminationPointKey(NodeConnector nc) {
64 val nodeId = new TpId(InventoryMapping.toNodeConnectorId(nc))
65 return new TerminationPointKey(nodeId);
68 def LinkKey toTopologyLinkKey(Edge edge) {
69 val sourceTp = edge.tailNodeConnector.toTopologyTerminationPointKey;
70 val destTp = edge.headNodeConnector.toTopologyTerminationPointKey;
71 val linkId = new LinkId('''«sourceTp.tpId»::::«destTp.tpId»''')
72 return new LinkKey(linkId);