Merge "Prevent ConfigPusher from killing its thread"
[controller.git] / opendaylight / md-sal / compatibility / inventory-topology-compatibility / src / main / java / org / opendaylight / controller / md / compatibility / topology / TopologyMapping.xtend
1 /*
2  * Copyright (c) 2014 Cisco Systems, Inc. and others.  All rights reserved.
3  *
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
7  */
8 package org.opendaylight.controller.md.compatibility.topology
9
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
15 import java.util.Set
16 import org.opendaylight.controller.sal.core.Property
17 import org.opendaylight.controller.sal.core.NodeConnector
18
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 {
31
32     new(TopologyKey path, InstanceIdentifier<Topology> key) {
33         // NOOP
34     }
35
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);
42     }
43
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);
47     }
48
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);
53     }
54     
55
56
57     def NodeKey toTopologyNodeKey(org.opendaylight.controller.sal.core.Node node) {
58         val nodeId = new NodeId(InventoryMapping.toNodeId(node));
59         return new NodeKey(nodeId);
60     }
61
62     def TerminationPointKey toTopologyTerminationPointKey(NodeConnector nc) {
63         val node = nc.node;
64         val nodeId = new TpId(InventoryMapping.toNodeConnectorId(nc))
65         return new TerminationPointKey(nodeId);
66     }
67
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);
73     }
74 }