X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;ds=sidebyside;f=opendaylight%2Fmd-sal%2Fcompatibility%2Fsal-compatibility%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fsal%2Fcompatibility%2FInventoryAndReadAdapter.java;h=1530e909ad769ae8b7dcdf808aa47ad5bfe39783;hb=175950301a22b48acd9630c40392f0272decba9a;hp=28301654258407536725408981e986c79e1082d1;hpb=b1ad47e987f7e73ebcd44f2076f57550715f75d6;p=controller.git
diff --git a/opendaylight/md-sal/compatibility/sal-compatibility/src/main/java/org/opendaylight/controller/sal/compatibility/InventoryAndReadAdapter.java b/opendaylight/md-sal/compatibility/sal-compatibility/src/main/java/org/opendaylight/controller/sal/compatibility/InventoryAndReadAdapter.java
index 2830165425..1530e909ad 100644
--- a/opendaylight/md-sal/compatibility/sal-compatibility/src/main/java/org/opendaylight/controller/sal/compatibility/InventoryAndReadAdapter.java
+++ b/opendaylight/md-sal/compatibility/sal-compatibility/src/main/java/org/opendaylight/controller/sal/compatibility/InventoryAndReadAdapter.java
@@ -7,9 +7,12 @@
*/
package org.opendaylight.controller.sal.compatibility;
+import com.google.common.collect.Iterables;
+
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
+import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
@@ -26,6 +29,7 @@ import org.opendaylight.controller.sal.core.Edge;
import org.opendaylight.controller.sal.core.Node;
import org.opendaylight.controller.sal.core.NodeConnector;
import org.opendaylight.controller.sal.core.NodeTable;
+import org.opendaylight.controller.sal.core.NodeTable.NodeTableIDType;
import org.opendaylight.controller.sal.core.Property;
import org.opendaylight.controller.sal.core.UpdateType;
import org.opendaylight.controller.sal.inventory.IPluginInInventoryService;
@@ -44,7 +48,6 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.ta
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.statistics.rev130819.AggregateFlowStatisticsUpdate;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.statistics.rev130819.FlowStatisticsData;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.statistics.rev130819.FlowsStatisticsUpdate;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.statistics.rev130819.GetAllFlowsStatisticsFromAllFlowTablesInputBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.statistics.rev130819.GetFlowStatisticsFromFlowTableInputBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.statistics.rev130819.OpendaylightFlowStatisticsListener;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.statistics.rev130819.OpendaylightFlowStatisticsService;
@@ -237,20 +240,20 @@ public class InventoryAndReadAdapter implements IPluginInReadService, IPluginInI
* @param id Table id
* @return Table contents, or null if not present
*/
- private Table readConfigTable(final Node node, final short id) {
+ private Table readOperationalTable(final Node node, final short id) {
final InstanceIdentifier
tableRef = InstanceIdentifier.builder(Nodes.class)
- .child(org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node.class, InventoryMapping.toNodeKey(node))
+ .child(org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node.class, NodeMapping.toNodeKey(node))
.augmentation(FlowCapableNode.class)
.child(Table.class, new TableKey(id))
.build();
- return (Table) startChange().readConfigurationData(tableRef);
+ return (Table) startChange().readOperationalData(tableRef);
}
@Override
public List readAllFlow(final Node node, final boolean cached) {
final ArrayList output = new ArrayList<>();
- final Table table = readConfigTable(node, OPENFLOWV10_TABLE_ID);
+ final Table table = readOperationalTable(node, OPENFLOWV10_TABLE_ID);
if (table != null) {
final List flows = table.getFlow();
LOG.trace("Number of flows installed in table 0 of node {} : {}", node, flows.size());
@@ -264,12 +267,6 @@ public class InventoryAndReadAdapter implements IPluginInReadService, IPluginInI
}
}
- // TODO (main): Shall we send request to the switch? It will make async request to the switch.
- // Once the plugin receives a response, it will let the adaptor know through onFlowStatisticsUpdate()
- // If we assume that md-sal statistics manager will always be running, then it is not required
- // But if not, then sending request will collect the latest data for adaptor at least.
- getFlowStatisticsService().getAllFlowsStatisticsFromAllFlowTables(
- new GetAllFlowsStatisticsFromAllFlowTablesInputBuilder().setNode(NodeMapping.toNodeRef(node)).build());
return output;
}
@@ -330,7 +327,7 @@ public class InventoryAndReadAdapter implements IPluginInReadService, IPluginInI
@Override
public FlowOnNode readFlow(final Node node, final org.opendaylight.controller.sal.flowprogrammer.Flow targetFlow, final boolean cached) {
FlowOnNode ret = null;
- final Table table = readConfigTable(node, OPENFLOWV10_TABLE_ID);
+ final Table table = readOperationalTable(node, OPENFLOWV10_TABLE_ID);
if (table != null) {
final List flows = table.getFlow();
InventoryAndReadAdapter.LOG.trace("Number of flows installed in table 0 of node {} : {}", node, flows.size());
@@ -382,7 +379,7 @@ public class InventoryAndReadAdapter implements IPluginInReadService, IPluginInI
@Override
public NodeTableStatistics readNodeTable(final NodeTable nodeTable, final boolean cached) {
NodeTableStatistics nodeStats = null;
- final Table table = readConfigTable(nodeTable.getNode(), (short) nodeTable.getID());
+ final Table table = readOperationalTable(nodeTable.getNode(), (short) nodeTable.getID());
if (table != null) {
final FlowTableStatisticsData tableStats = table.getAugmentation(FlowTableStatisticsData.class);
if (tableStats != null) {
@@ -489,7 +486,7 @@ public class InventoryAndReadAdapter implements IPluginInReadService, IPluginInI
}
try {
- final Node adNode = new Node(NodeMapping.MD_SAL_TYPE, NodeMapping.toADNodeId(node.getId()));
+ final Node adNode = NodeMapping.toADNode(node.getId());
props.put(adNode, perNodePropMap);
} catch (ConstructionException e) {
LOG.warn("Failed to construct node for {}, skipping it", node, e);
@@ -572,7 +569,7 @@ public class InventoryAndReadAdapter implements IPluginInReadService, IPluginInI
it.setLookupCount(tableStats.getPacketsLookedUp().getValue().longValue());
it.setMatchedCount(tableStats.getPacketsMatched().getValue().longValue());
it.setName(tableId.toString());
- it.setNodeTable(new NodeTable(NodeMapping.MD_SAL_TYPE, tableId, node));
+ it.setNodeTable(new NodeTable(NodeTableIDType.OPENFLOW, tableId.byteValue(), node));
return it;
}
@@ -732,26 +729,45 @@ public class InventoryAndReadAdapter implements IPluginInReadService, IPluginInI
}
private boolean isKnownNodeConnector(final InstanceIdentifier extends Object> nodeConnectorIdentifier) {
- final List path = nodeConnectorIdentifier.getPath();
- if (path.size() >= 3) {
- final PathArgument nodePath = path.get(1);
- final PathArgument nodeConnectorPath = path.get(2);
- final List nodeConnectors = nodeToNodeConnectorsMap.get(nodePath);
- if (nodeConnectors != null) {
- return nodeConnectors.contains(nodeConnectorPath);
- }
+ final Iterator it = nodeConnectorIdentifier.getPathArguments().iterator();
+
+ if (!it.hasNext()) {
+ return false;
}
- return false;
+ it.next();
+
+ if (!it.hasNext()) {
+ return false;
+ }
+ final PathArgument nodePath = it.next();
+
+ if (!it.hasNext()) {
+ return false;
+ }
+ final PathArgument nodeConnectorPath = it.next();
+
+ final List nodeConnectors = nodeToNodeConnectorsMap.get(nodePath);
+ return nodeConnectors == null ? false :
+ nodeConnectors.contains(nodeConnectorPath);
}
private boolean recordNodeConnector(final InstanceIdentifier extends Object> nodeConnectorIdentifier) {
- final List path = nodeConnectorIdentifier.getPath();
- if (path.size() < 3) {
+ final Iterator it = nodeConnectorIdentifier.getPathArguments().iterator();
+
+ if (!it.hasNext()) {
return false;
}
+ it.next();
- final PathArgument nodePath = path.get(1);
- final PathArgument nodeConnectorPath = path.get(2);
+ if (!it.hasNext()) {
+ return false;
+ }
+ final PathArgument nodePath = it.next();
+
+ if (!it.hasNext()) {
+ return false;
+ }
+ final PathArgument nodeConnectorPath = it.next();
synchronized (this) {
List nodeConnectors = this.nodeToNodeConnectorsMap.get(nodePath);
@@ -765,6 +781,6 @@ public class InventoryAndReadAdapter implements IPluginInReadService, IPluginInI
}
private List removeNodeConnectors(final InstanceIdentifier extends Object> nodeIdentifier) {
- return this.nodeToNodeConnectorsMap.remove(nodeIdentifier.getPath().get(1));
+ return this.nodeToNodeConnectorsMap.remove(Iterables.get(nodeIdentifier.getPathArguments(), 1));
}
}