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