2 * Copyright (c) 2014 Cisco Systems, Inc. and others. All rights reserved.
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
8 package org.opendaylight.controller.md.compatibility.inventory
10 import org.opendaylight.controller.switchmanager.ISwitchManager
11 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier
12 import org.opendaylight.yangtools.yang.binding.DataObject
13 import org.opendaylight.controller.sal.binding.api.data.RuntimeDataProvider
14 import java.util.ArrayList
15 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.Nodes
16 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node
17 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.node.NodeConnector
18 import static extension org.opendaylight.controller.sal.compatibility.InventoryMapping.*;
19 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodesBuilder
20 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.NodeBuilder
21 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.node.NodeConnectorBuilder
23 class InventoryReader implements RuntimeDataProvider {
26 var ISwitchManager switchManager;
28 override readConfigurationData(InstanceIdentifier<? extends DataObject> path) {
30 // Topology and Inventory are operational only
34 override readOperationalData(InstanceIdentifier<? extends DataObject> path) {
35 val type = path.targetType;
36 var DataObject data = null;
39 data = readNodes(path as InstanceIdentifier<Nodes>)
41 data = readNode(path as InstanceIdentifier<Node>)
43 data = readNodeConnector(path as InstanceIdentifier<NodeConnector>)
48 def DataObject readNodeConnector(InstanceIdentifier<NodeConnector> identifier) {
49 val nodeConnector = identifier.toAdNodeConnector();
50 return constructNodeConnector(nodeConnector)
53 def DataObject readNode(InstanceIdentifier<Node> identifier) {
54 val node = identifier.toAdNode();
55 return constructNode(node);
59 def Node constructNode(org.opendaylight.controller.sal.core.Node node) {
60 val connectors = switchManager.getNodeConnectors(node)
62 val tpList = new ArrayList<NodeConnector>(connectors.size)
63 for (connector : connectors) {
64 tpList.add(constructNodeConnector(connector));
67 val it = new NodeBuilder()
68 key = node.toNodeKey();
69 nodeConnector = tpList
73 def NodeConnector constructNodeConnector(org.opendaylight.controller.sal.core.NodeConnector connector) {
74 val it = new NodeConnectorBuilder()
75 key = connector.toNodeConnectorKey()
79 def readNodes(InstanceIdentifier<Nodes> identifier) {
80 val nodes = switchManager.nodes
81 val nodeList = new ArrayList<Node>(nodes.size)
83 nodeList.add(constructNode(node))
85 val it = new NodesBuilder();