1 package org.opendaylight.controller.md.compatibility.inventory
3 import org.opendaylight.controller.switchmanager.ISwitchManager
4 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier
5 import org.opendaylight.yangtools.yang.binding.DataObject
6 import org.opendaylight.controller.sal.binding.api.data.RuntimeDataProvider
7 import java.util.ArrayList
8 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.Nodes
9 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node
10 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.node.NodeConnector
11 import static extension org.opendaylight.controller.sal.compatibility.InventoryMapping.*;
12 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodesBuilder
13 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.NodeBuilder
14 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.node.NodeConnectorBuilder
16 class InventoryReader implements RuntimeDataProvider {
19 var ISwitchManager switchManager;
21 override readConfigurationData(InstanceIdentifier<? extends DataObject> path) {
23 // Topology and Inventory are operational only
27 override readOperationalData(InstanceIdentifier<? extends DataObject> path) {
28 val type = path.targetType;
29 var DataObject data = null;
32 data = readNodes(path as InstanceIdentifier<Nodes>)
34 data = readNode(path as InstanceIdentifier<Node>)
36 data = readNodeConnector(path as InstanceIdentifier<NodeConnector>)
41 def DataObject readNodeConnector(InstanceIdentifier<NodeConnector> identifier) {
42 val nodeConnector = identifier.toAdNodeConnector();
43 return constructNodeConnector(nodeConnector)
46 def DataObject readNode(InstanceIdentifier<Node> identifier) {
47 val node = identifier.toAdNode();
48 return constructNode(node);
52 def Node constructNode(org.opendaylight.controller.sal.core.Node node) {
53 val connectors = switchManager.getNodeConnectors(node)
55 val tpList = new ArrayList<NodeConnector>(connectors.size)
56 for (connector : connectors) {
57 tpList.add(constructNodeConnector(connector));
60 val it = new NodeBuilder()
61 key = node.toNodeKey();
62 nodeConnector = tpList
66 def NodeConnector constructNodeConnector(org.opendaylight.controller.sal.core.NodeConnector connector) {
67 val it = new NodeConnectorBuilder()
68 key = connector.toNodeConnectorKey()
72 def readNodes(InstanceIdentifier<Nodes> identifier) {
73 val nodes = switchManager.nodes
74 val nodeList = new ArrayList<Node>(nodes.size)
76 nodeList.add(constructNode(node))
78 val it = new NodesBuilder();