Bug 1073: Added Transaction Chain support to InMemoryDataTreeModification.
[controller.git] / opendaylight / md-sal / compatibility / inventory-topology-compatibility / src / main / java / org / opendaylight / controller / md / compatibility / topologymanager / CompatibleTopologyManager.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.controller.topologymanager.ITopologyManager
11 import org.opendaylight.controller.sal.core.NodeConnector
12 import org.opendaylight.controller.sal.core.Host
13 import org.opendaylight.controller.sal.core.UpdateType
14 import java.util.Set
15 import org.opendaylight.controller.md.sal.binding.util.TypeSafeDataReader
16 import java.util.HashMap
17 import org.opendaylight.controller.sal.core.Edge
18 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.node.TerminationPoint
19 import com.google.common.collect.FluentIterable
20
21 class CompatibleTopologyManager extends ConfigurableLinkManager implements ITopologyManager {
22
23     @Property
24     var TypeSafeDataReader dataReader;
25
26     @Property
27     var extension AdSalTopologyMapping topologyMapping;
28
29     override getEdges() {
30         val topology = dataReader.readOperationalData(topologyPath);
31         return topology.link.toEdgePropertiesMap();
32     }
33
34     override getNodeEdges() {
35         val topology = dataReader.readOperationalData(topologyPath);
36         val ret = new HashMap<org.opendaylight.controller.sal.core.Node, Set<Edge>>;
37         for (node : topology.node) {
38             val adNode = node.toAdNode();
39             val adEdges = FluentIterable.from(topology.link).filter[
40                 source.sourceNode == node.nodeId || destination.destNode == node.nodeId].toEdges();
41             ret.put(adNode, adEdges)
42         }
43         return ret;
44     }
45
46     /**
47      *   Returns true if point is connected to link
48     */
49     def isInternal(TerminationPoint point) {
50         val topology = dataReader.readConfigurationData(topologyPath);
51         val tpId = point.key.tpId;
52         return FluentIterable.from(topology.link).anyMatch(
53             [
54                 source.sourceTp == tpId || destination.destTp == tpId
55             ])
56     }
57
58     override getNodeConnectorWithHost() {
59     }
60
61     override getHostAttachedToNodeConnector(NodeConnector p) {
62         val tpPath = p.toTerminationPoint();
63         throw new UnsupportedOperationException("TODO: auto-generated method stub")
64     }
65
66     override getHostsAttachedToNodeConnector(NodeConnector p) {
67         val topology = dataReader.readOperationalData(topologyPath);
68
69         throw new UnsupportedOperationException("Hosts not mapped yet")
70     }
71
72     override getNodesWithNodeConnectorHost() {
73         throw new UnsupportedOperationException("TODO: auto-generated method stub")
74
75     }
76
77     override isInternal(NodeConnector p) {
78         val tpPath = p.toTerminationPoint();
79         val connector = dataReader.readConfigurationData(tpPath);
80         return connector.isInternal();
81     }
82
83     override updateHostLink(NodeConnector p, Host h, UpdateType t,
84         Set<org.opendaylight.controller.sal.core.Property> props) {
85         // Update app defined topology
86     }
87
88     override saveConfig() {
89         // FIXME: commit configuration
90     }
91
92 }