1 package org.opendaylight.controller.md.statistics.manager;
3 import java.util.concurrent.ConcurrentMap;
5 import org.opendaylight.controller.sal.binding.api.data.DataModificationTransaction;
6 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.statistics.rev131111.GroupDescRef;
7 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.statistics.rev131111.GroupDescStatsUpdated;
8 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.statistics.rev131111.GroupFeaturesRef;
9 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.statistics.rev131111.GroupFeaturesUpdated;
10 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.statistics.rev131111.GroupStatisticsUpdated;
11 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.statistics.rev131111.GroupStatsRef;
12 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.statistics.rev131111.OpendaylightGroupStatisticsListener;
13 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.statistics.rev131111.group.all.statistics.GroupDescBuilder;
14 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.statistics.rev131111.group.all.statistics.GroupFeaturesBuilder;
15 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.statistics.rev131111.group.all.statistics.GroupStatsBuilder;
16 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeRef;
17 import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.statistics.rev131111.MeterConfigRef;
18 import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.statistics.rev131111.MeterConfigStatsUpdated;
19 import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.statistics.rev131111.MeterFeaturesRef;
20 import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.statistics.rev131111.MeterFeaturesUpdated;
21 import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.statistics.rev131111.MeterStatisticsUpdated;
22 import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.statistics.rev131111.MeterStatsRef;
23 import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.statistics.rev131111.OpendaylightMeterStatisticsListener;
24 import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.statistics.rev131111.meter.all.stats.MeterConfigBuilder;
25 import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.statistics.rev131111.meter.all.stats.MeterFeaturesBuilder;
26 import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.statistics.rev131111.meter.all.stats.MeterStatsBuilder;
27 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
29 public class StatisticsUpdateCommiter implements OpendaylightGroupStatisticsListener,
30 OpendaylightMeterStatisticsListener {
32 private final StatisticsProvider statisticsManager;
34 public StatisticsUpdateCommiter(final StatisticsProvider manager){
36 this.statisticsManager = manager;
38 public StatisticsProvider getStatisticsManager(){
39 return statisticsManager;
42 public void onMeterConfigStatsUpdated(MeterConfigStatsUpdated notification) {
43 //Add statistics to local cache
44 ConcurrentMap<NodeRef, NodeStatistics> cache = this.statisticsManager.getStatisticsCache();
45 if(!cache.containsKey(notification.getNode())){
46 cache.put(notification.getNode(), new NodeStatistics());
48 cache.get(notification.getNode()).setMeterConfigStats(notification.getMeterConfigStats());
50 //Publish data to configuration data store
51 DataModificationTransaction it = this.statisticsManager.startChange();
52 MeterConfigRef ref = notification.getMeterConfigId();
54 MeterConfigBuilder meterConfig = new MeterConfigBuilder();
55 meterConfig.setNode(notification.getNode());
56 meterConfig.setMeterConfigStats(notification.getMeterConfigStats());
58 InstanceIdentifier<? extends Object> refValue = ref.getValue();
59 it.putRuntimeData(refValue, meterConfig.build());
64 public void onMeterStatisticsUpdated(MeterStatisticsUpdated notification) {
65 //Add statistics to local cache
66 ConcurrentMap<NodeRef, NodeStatistics> cache = this.statisticsManager.getStatisticsCache();
67 if(!cache.containsKey(notification.getNode())){
68 cache.put(notification.getNode(), new NodeStatistics());
70 cache.get(notification.getNode()).setMeterStatistics(notification.getMeterStatistics());
72 //Publish data to configuration data store
73 DataModificationTransaction it = this.statisticsManager.startChange();
74 MeterStatsRef ref = notification.getMeterStatsId();
76 MeterStatsBuilder meterStats = new MeterStatsBuilder();
77 meterStats.setNode(notification.getNode());
78 meterStats.setMeterStatistics(notification.getMeterStatistics());
80 InstanceIdentifier<? extends Object> refValue = ref.getValue();
81 it.putRuntimeData(refValue, meterStats.build());
86 public void onGroupDescStatsUpdated(GroupDescStatsUpdated notification) {
87 //Add statistics to local cache
88 ConcurrentMap<NodeRef, NodeStatistics> cache = this.statisticsManager.getStatisticsCache();
89 if(!cache.containsKey(notification.getNode())){
90 cache.put(notification.getNode(), new NodeStatistics());
92 cache.get(notification.getNode()).setGroupDescStats(notification.getGroupDescStats());
94 //Publish data to configuration data store
95 DataModificationTransaction it = this.statisticsManager.startChange();
96 GroupDescRef ref = notification.getGroupDescId();
98 GroupDescBuilder descStats = new GroupDescBuilder();
99 descStats.setNode(notification.getNode());
100 descStats.setGroupDescStats(notification.getGroupDescStats());
102 InstanceIdentifier<? extends Object> refValue = ref.getValue();
103 it.putRuntimeData(refValue, descStats.build());
108 public void onGroupStatisticsUpdated(GroupStatisticsUpdated notification) {
110 //Add statistics to local cache
111 ConcurrentMap<NodeRef, NodeStatistics> cache = this.statisticsManager.getStatisticsCache();
112 if(!cache.containsKey(notification.getNode())){
113 cache.put(notification.getNode(), new NodeStatistics());
115 cache.get(notification.getNode()).setGroupStatistics(notification.getGroupStatistics());
117 //Publish data to configuration data store
118 DataModificationTransaction it = this.statisticsManager.startChange();
119 GroupStatsRef ref = notification.getGroupStatsId();
121 GroupStatsBuilder groupStats = new GroupStatsBuilder();
122 groupStats.setNode(notification.getNode());
123 groupStats.setGroupStatistics(notification.getGroupStatistics());
125 InstanceIdentifier<? extends Object> refValue = ref.getValue();
126 it.putRuntimeData(refValue, groupStats.build());
130 public void onMeterFeaturesUpdated(MeterFeaturesUpdated notification) {
132 //Add statistics to local cache
133 ConcurrentMap<NodeRef, NodeStatistics> cache = this.statisticsManager.getStatisticsCache();
134 if(!cache.containsKey(notification.getNode())){
135 cache.put(notification.getNode(), new NodeStatistics());
137 cache.get(notification.getNode()).setMeterFeatures(notification.getMeterFeatures());
139 //Publish data to configuration data store
140 DataModificationTransaction it = this.statisticsManager.startChange();
141 MeterFeaturesRef ref = notification.getMeterFeaturesId();
143 MeterFeaturesBuilder meterFeatures = new MeterFeaturesBuilder();
144 meterFeatures.setNode(notification.getNode());
145 meterFeatures.setMeterFeatures(notification.getMeterFeatures());
147 InstanceIdentifier<? extends Object> refValue = ref.getValue();
148 it.putRuntimeData(refValue, meterFeatures.build());
153 public void onGroupFeaturesUpdated(GroupFeaturesUpdated notification) {
155 //Add statistics to local cache
156 ConcurrentMap<NodeRef, NodeStatistics> cache = this.statisticsManager.getStatisticsCache();
157 if(!cache.containsKey(notification.getNode())){
158 cache.put(notification.getNode(), new NodeStatistics());
160 cache.get(notification.getNode()).setGroupFeatures(notification.getGroupFeatures());
162 //Publish data to configuration data store
163 DataModificationTransaction it = this.statisticsManager.startChange();
164 GroupFeaturesRef ref = notification.getGroupFeaturesId();
166 GroupFeaturesBuilder featuresStats = new GroupFeaturesBuilder();
167 featuresStats.setNode(notification.getNode());
168 featuresStats.setGroupFeatures(notification.getGroupFeatures());
170 InstanceIdentifier<? extends Object> refValue = ref.getValue();
171 it.putRuntimeData(refValue, featuresStats.build());