Merge "Fixed NetconfDevice to store capability info."
[controller.git] / opendaylight / md-sal / compatibility / inventory-topology-compatibility / src / main / java / org / opendaylight / controller / md / compatibility / topologymanager / AdSalTopologyMapping.xtend
1 package org.opendaylight.controller.md.compatibility.topologymanager
2
3 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.TopologyKey
4 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier
5 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.node.TerminationPoint
6 import org.opendaylight.controller.sal.core.NodeConnector
7 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.Topology
8 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NetworkTopology
9 import java.util.Map
10 import org.opendaylight.controller.sal.core.Edge
11 import java.util.Set
12 import java.util.List
13 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node
14 import java.util.Collections
15 import com.google.common.collect.FluentIterable
16 import java.util.HashSet
17 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeConnectorRef
18 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeId
19 import org.opendaylight.controller.sal.compatibility.NodeMapping
20 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.NodeKey
21 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Link
22 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.link.attributes.Source
23 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.link.attributes.Destination
24 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.node.NodeConnectorKey
25 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeConnectorId
26 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.TpId
27 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.node.TerminationPointKey
28 import java.util.HashMap
29
30 class AdSalTopologyMapping {
31
32     val TopologyKey topologyMapping;
33     @Property
34     val InstanceIdentifier<Topology> topologyPath;
35
36     new(TopologyKey topology) {
37         topologyMapping = topology;
38         _topologyPath = InstanceIdentifier.builder.node(NetworkTopology).child(Topology, topology).toInstance;
39     }
40
41     def InstanceIdentifier<TerminationPoint> toTerminationPoint(NodeConnector connector) {
42         InstanceIdentifier.builder(topologyPath).node(Node).child(TerminationPoint, connector.toTerminationPointKey()).toInstance;
43     }
44
45     def Map<Edge, Set<org.opendaylight.controller.sal.core.Property>> toEdgePropertiesMap(Iterable<Link> links) {
46         val ret = new HashMap<Edge, Set<org.opendaylight.controller.sal.core.Property>>
47         for (link : links) {
48             ret.put(link.toEdge(), link.toProperties())
49         }
50         return ret;
51     }
52
53     def Set<Edge> toEdges(Iterable<Link> links) {
54         val ret = new HashSet<Edge>
55         for (link : links) {
56             ret.add(link.toEdge)
57         }
58         return ret;
59     }
60
61     def Edge toEdge(Link link) {
62         val tail = link.source.toNodeConnector();
63         val head = link.destination.toNodeConnector();
64         return new Edge(tail, head);
65     }
66
67     def org.opendaylight.controller.sal.core.Node toAdNode(Node node) {
68         return node.nodeId.toAdNode;
69     }
70
71     def org.opendaylight.controller.sal.core.Node toAdNode(
72         org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NodeId node) {
73         val key = new NodeKey(new NodeId(node))
74         return new org.opendaylight.controller.sal.core.Node(NodeMapping.MD_SAL_TYPE, key);
75     }
76
77     def NodeConnector toNodeConnector(Source ref) {
78         val adNode = ref.sourceNode.toAdNode();
79         val key = new NodeConnectorKey(new NodeConnectorId(ref.sourceTp))
80         return new NodeConnector(NodeMapping.MD_SAL_TYPE, key, adNode);
81     }
82
83     def NodeConnector toNodeConnector(Destination ref) {
84         val adNode = ref.destNode.toAdNode();
85         val key = new NodeConnectorKey(new NodeConnectorId(ref.destTp))
86         return new NodeConnector(NodeMapping.MD_SAL_TYPE, key, adNode);
87     }
88
89     def TerminationPointKey toTerminationPointKey(NodeConnector connector) {
90     }
91
92     def Set<org.opendaylight.controller.sal.core.Property> toProperties(Link link) {
93     }
94 }