commit | 9fe79a2df3549501b1d02c1e57573e8381038b80 | [log] [tgz] |
---|---|---|
author | Jordi Ortiz <jordi.ortiz@um.es> | Tue Apr 25 12:57:11 2017 +0200 |
committer | Luca Prete <luca@onlab.us> | Fri May 12 23:35:17 2017 +0000 |
tree | ced1830aae9f19d7fcd6e785aff19110360a9aa4 | |
parent | df28ecdae767f2fdc266226cd9f5a9852dd833a8 [diff] |
[ONOS-6188] OpenFlowMeterProvider: Force Meter stats retrieval on remove. The meter removal is computed by looking on the MeterStats result and looking if it is actually missing. MeterStats are retrieved periodically with the collector. With this patch we ask for the stats immediately. Change-Id: I432976d6571d0df4261afdec20a99846dae07f48
diff --git a/providers/openflow/meter/src/main/java/org/onosproject/provider/of/meter/impl/MeterStatsCollector.java b/providers/openflow/meter/src/main/java/org/onosproject/provider/of/meter/impl/MeterStatsCollector.java index 552e5ec..4c44dfc 100644 --- a/providers/openflow/meter/src/main/java/org/onosproject/provider/of/meter/impl/MeterStatsCollector.java +++ b/providers/openflow/meter/src/main/java/org/onosproject/provider/of/meter/impl/MeterStatsCollector.java
@@ -73,7 +73,7 @@ } } - private void sendMeterStatistic() { + public void sendMeterStatistic() { if (log.isTraceEnabled()) { log.trace("sendMeterStatistics {}:{}", sw.getStringId(), sw.getRole()); }
diff --git a/providers/openflow/meter/src/main/java/org/onosproject/provider/of/meter/impl/OpenFlowMeterProvider.java b/providers/openflow/meter/src/main/java/org/onosproject/provider/of/meter/impl/OpenFlowMeterProvider.java index b343c56..76e4b15 100644 --- a/providers/openflow/meter/src/main/java/org/onosproject/provider/of/meter/impl/OpenFlowMeterProvider.java +++ b/providers/openflow/meter/src/main/java/org/onosproject/provider/of/meter/impl/OpenFlowMeterProvider.java
@@ -183,6 +183,19 @@ performOperation(sw, meterOp); + if (meterOp.type().equals(MeterOperation.Type.REMOVE)) { + forceMeterStats(deviceId); + } + + } + + private void forceMeterStats(DeviceId deviceId) { + Dpid dpid = Dpid.dpid(deviceId.uri()); + OpenFlowSwitch sw = controller.getSwitch(dpid); + + MeterStatsCollector once = new MeterStatsCollector(sw, 1); + once.sendMeterStatistic(); + } private void performOperation(OpenFlowSwitch sw, MeterOperation op) {