X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fstatistics-manager%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fmd%2Fstatistics%2Fmanager%2FStatisticsUpdateHandler.java;h=acf182ad2b016a6323589f4ba24b2c46517ffbe6;hb=474d4daf958336effcf4f419843d9d659a27bce5;hp=f04c29fdd214daabcc4c1b8e8399f5661e147565;hpb=cf870b9474f14659a68d3fba504962ba859a94fa;p=controller.git diff --git a/opendaylight/md-sal/statistics-manager/src/main/java/org/opendaylight/controller/md/statistics/manager/StatisticsUpdateHandler.java b/opendaylight/md-sal/statistics-manager/src/main/java/org/opendaylight/controller/md/statistics/manager/StatisticsUpdateHandler.java index f04c29fdd2..acf182ad2b 100644 --- a/opendaylight/md-sal/statistics-manager/src/main/java/org/opendaylight/controller/md/statistics/manager/StatisticsUpdateHandler.java +++ b/opendaylight/md-sal/statistics-manager/src/main/java/org/opendaylight/controller/md/statistics/manager/StatisticsUpdateHandler.java @@ -14,6 +14,7 @@ import java.util.concurrent.ExecutionException; import org.opendaylight.controller.md.sal.common.api.data.DataChangeEvent; import org.opendaylight.controller.sal.binding.api.data.DataChangeListener; import org.opendaylight.controller.sal.binding.api.data.DataModificationTransaction; +import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowCapableNode; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.meters.Meter; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.table.Flow; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.statistics.rev130819.FlowStatisticsData; @@ -35,34 +36,40 @@ import org.slf4j.LoggerFactory; /** * Following are two main responsibilities of the class - * 1) Listen for the create changes in config data store for tree nodes (Flow,Group,Meter,Queue) + * 1) Listen for the create changes in config data store for tree nodes (Flow,Group,Meter,Queue) * and send statistics request to the switch to fetch the statistics - * + * * 2)Listen for the remove changes in config data store for tree nodes (Flow,Group,Meter,Queue) * and remove the relative statistics data from operational data store. - * + * * @author avishnoi@in.ibm.com * */ public class StatisticsUpdateHandler implements DataChangeListener { - public final static Logger suhLogger = LoggerFactory.getLogger(StatisticsUpdateHandler.class); - + private static final Logger suhLogger = LoggerFactory.getLogger(StatisticsUpdateHandler.class); private final StatisticsProvider statisticsManager; - - public StatisticsUpdateHandler(final StatisticsProvider manager){ + public StatisticsUpdateHandler(final StatisticsProvider manager){ this.statisticsManager = manager; } - - public StatisticsProvider getStatisticsManager(){ - return statisticsManager; - } @SuppressWarnings("unchecked") @Override public void onDataChanged(DataChangeEvent, DataObject> change) { - + + Map, DataObject> nodeAdditions = change.getCreatedOperationalData(); + for (InstanceIdentifier dataObjectInstance : nodeAdditions.keySet()) { + DataObject dataObject = nodeAdditions.get(dataObjectInstance); + if(dataObject instanceof Node){ + + Node node = (Node) dataObject; + if(node.getAugmentation(FlowCapableNode.class) != null){ + this.statisticsManager.sendStatisticsRequestsToNode(node); + } + } + } + Map, DataObject> additions = change.getCreatedConfigurationData(); for (InstanceIdentifier dataObjectInstance : additions.keySet()) { DataObject dataObject = additions.get(dataObjectInstance); @@ -101,56 +108,50 @@ public class StatisticsUpdateHandler implements DataChangeListener { } } } - + + DataModificationTransaction it = this.statisticsManager.startChange(); Set> removals = change.getRemovedConfigurationData(); for (InstanceIdentifier dataObjectInstance : removals) { DataObject dataObject = change.getOriginalConfigurationData().get(dataObjectInstance); - + if(dataObject instanceof Flow){ InstanceIdentifier flowII = (InstanceIdentifier)dataObjectInstance; - InstanceIdentifier flowAugmentation = + InstanceIdentifier flowAugmentation = InstanceIdentifier.builder(flowII).augmentation(FlowStatisticsData.class).toInstance(); - removeAugmentedOperationalData(flowAugmentation); + it.removeOperationalData(flowAugmentation); } if(dataObject instanceof Meter){ InstanceIdentifier meterII = (InstanceIdentifier)dataObjectInstance; - - InstanceIdentifier nodeMeterConfigStatsAugmentation = + + InstanceIdentifier nodeMeterConfigStatsAugmentation = InstanceIdentifier.builder(meterII).augmentation(NodeMeterConfigStats.class).toInstance(); - removeAugmentedOperationalData(nodeMeterConfigStatsAugmentation); + it.removeOperationalData(nodeMeterConfigStatsAugmentation); - InstanceIdentifier nodeMeterStatisticsAugmentation = + InstanceIdentifier nodeMeterStatisticsAugmentation = InstanceIdentifier.builder(meterII).augmentation(NodeMeterStatistics.class).toInstance(); - removeAugmentedOperationalData(nodeMeterStatisticsAugmentation); + it.removeOperationalData(nodeMeterStatisticsAugmentation); } - + if(dataObject instanceof Group){ InstanceIdentifier groupII = (InstanceIdentifier)dataObjectInstance; - - InstanceIdentifier nodeGroupDescStatsAugmentation = + + InstanceIdentifier nodeGroupDescStatsAugmentation = InstanceIdentifier.builder(groupII).augmentation(NodeGroupDescStats.class).toInstance(); - removeAugmentedOperationalData(nodeGroupDescStatsAugmentation); + it.removeOperationalData(nodeGroupDescStatsAugmentation); - InstanceIdentifier nodeGroupStatisticsAugmentation = + InstanceIdentifier nodeGroupStatisticsAugmentation = InstanceIdentifier.builder(groupII).augmentation(NodeGroupStatistics.class).toInstance(); - removeAugmentedOperationalData(nodeGroupStatisticsAugmentation); + it.removeOperationalData(nodeGroupStatisticsAugmentation); } - + if(dataObject instanceof Queue){ InstanceIdentifier queueII = (InstanceIdentifier)dataObjectInstance; - - InstanceIdentifier nodeConnectorQueueStatisticsDataAugmentation = + + InstanceIdentifier nodeConnectorQueueStatisticsDataAugmentation = InstanceIdentifier.builder(queueII).augmentation(FlowCapableNodeConnectorQueueStatisticsData.class).toInstance(); - removeAugmentedOperationalData(nodeConnectorQueueStatisticsDataAugmentation); + it.removeOperationalData(nodeConnectorQueueStatisticsDataAugmentation); } } - } - - private void removeAugmentedOperationalData(InstanceIdentifier dataObjectInstance ){ - if(dataObjectInstance != null){ - DataModificationTransaction it = this.statisticsManager.startChange(); - it.removeOperationalData(dataObjectInstance); - it.commit(); - } + it.commit(); } }