X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fstatistics-manager%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fmd%2Fstatistics%2Fmanager%2FFlowStatsTracker.java;h=edf7388a769a662a0ea7848694501c08a864ac0a;hp=90ddc28acd0066e72e8e134a49c0a786b6f49b4b;hb=83140d53722ad77dd804f7b4d761a673110b83b3;hpb=2395ecb818aa01bbd90821767715b3df67b65de0 diff --git a/opendaylight/md-sal/statistics-manager/src/main/java/org/opendaylight/controller/md/statistics/manager/FlowStatsTracker.java b/opendaylight/md-sal/statistics-manager/src/main/java/org/opendaylight/controller/md/statistics/manager/FlowStatsTracker.java index 90ddc28acd..edf7388a76 100644 --- a/opendaylight/md-sal/statistics-manager/src/main/java/org/opendaylight/controller/md/statistics/manager/FlowStatsTracker.java +++ b/opendaylight/md-sal/statistics-manager/src/main/java/org/opendaylight/controller/md/statistics/manager/FlowStatsTracker.java @@ -7,6 +7,7 @@ */ package org.opendaylight.controller.md.statistics.manager; +import java.util.Collection; import java.util.Map.Entry; import org.opendaylight.controller.md.sal.common.api.data.DataChangeEvent; @@ -37,15 +38,20 @@ import org.slf4j.LoggerFactory; final class FlowStatsTracker extends AbstractListeningStatsTracker { private static final Logger logger = LoggerFactory.getLogger(FlowStatsTracker.class); private final OpendaylightFlowStatisticsService flowStatsService; + private FlowTableStatsTracker flowTableStats; private int unaccountedFlowsCounter = 1; - FlowStatsTracker(OpendaylightFlowStatisticsService flowStatsService, final FlowCapableContext context, long lifetimeNanos) { - super(context, lifetimeNanos); + FlowStatsTracker(final OpendaylightFlowStatisticsService flowStatsService, final FlowCapableContext context) { + super(context); this.flowStatsService = flowStatsService; } + FlowStatsTracker(final OpendaylightFlowStatisticsService flowStatsService, final FlowCapableContext context, final FlowTableStatsTracker flowTableStats) { + this(flowStatsService, context); + this.flowTableStats = flowTableStats; + } @Override - protected void cleanupSingleStat(DataModificationTransaction trans, FlowStatsEntry item) { + protected void cleanupSingleStat(final DataModificationTransaction trans, final FlowStatsEntry item) { InstanceIdentifier flowRef = getNodeIdentifierBuilder() .augmentation(FlowCapableNode.class) .child(Table.class, new TableKey(item.getTableId())) @@ -55,34 +61,18 @@ final class FlowStatsTracker extends AbstractListeningStatsTracker flowRef = getNodeIdentifierBuilder().augmentation(FlowCapableNode.class) .child(Table.class, new TableKey(tableId)) .child(Flow.class,newFlowKey).toInstance(); - flowBuilder.setKey(newFlowKey); - flowBuilder.addAugmentation(FlowStatisticsData.class, flowStatisticsData.build()); + flow.setKey(newFlowKey); + flow.addAugmentation(FlowStatisticsData.class, flowStatisticsData.build()); logger.debug("Flow {} is not present in config data store, augmenting statistics as an unaccounted flow", - flowBuilder.build()); + flow.build()); // Update entry with timestamp of latest response flow.setKey(newFlowKey); FlowStatsEntry flowStatsEntry = new FlowStatsEntry(tableId,flow.build()); - trans.putOperationalData(flowRef, flowBuilder.build()); + trans.putOperationalData(flowRef, flow.build()); return flowStatsEntry; } @@ -203,6 +175,20 @@ final class FlowStatsTracker extends AbstractListeningStatsTracker tables = flowTableStats.getTables(); + logger.debug("Node {} supports {} table(s)", this.getNodeRef(), tables.size()); + for (final TableKey key : tables) { + logger.debug("Send aggregate stats request for flow table {} to node {}", key.getId(), this.getNodeRef()); + this.requestAggregateFlows(key); + } + + this.requestAllFlowsAllTables(); + + } public void requestAllFlowsAllTables() { if (flowStatsService != null) { final GetAllFlowsStatisticsFromAllFlowTablesInputBuilder input = new GetAllFlowsStatisticsFromAllFlowTablesInputBuilder(); @@ -234,7 +220,7 @@ final class FlowStatsTracker extends AbstractListeningStatsTracker, DataObject> change) { + public void onDataChanged(final DataChangeEvent, DataObject> change) { for (Entry, DataObject> e : change.getCreatedConfigurationData().entrySet()) { if (Flow.class.equals(e.getKey().getTargetType())) { final Flow flow = (Flow) e.getValue(); @@ -250,11 +236,8 @@ final class FlowStatsTracker extends AbstractListeningStatsTracker flow = (InstanceIdentifier)key; - final InstanceIdentifier del = InstanceIdentifier.builder(flow) - .augmentation(FlowStatisticsData.class).build(); - logger.debug("Key {} triggered remove of augmentation {}", key, del); - - trans.removeOperationalData(del); + logger.debug("Key {} triggered remove of Flow from operational space.", key); + trans.removeOperationalData(flow); } } trans.commit();