[Emu] openTAM: NewAdaptiveFlowStatsCollector Implementation
- NewAdaptiveFlowStatsCollector.java
.Bug fix to initialize callCountCalAndShortFlowsTask value
.Added flowMissingXid variable to identify individual StatsRequest or match all StatsRequest message or not
- DefaultTypedFlowEntry.java, TypedStoredFlowEntry.java
.Added javadoc for class
- OpenFlowRuleProvider.java
.Line 2: 2014 -> 2015
.Added adaptiveFlowSampling boolean property with default
.Added call providerService.pushFlowMetricsWithoutFlowMissing in case of individual StatsRequest
- FlowRuleProviderService.java
.Added pushFlowMetricsWithoutFlowMissing() function
- FlowRuleManager.java
.Added pushFlowMetricsWithoutFlowMissing() implementation
- OpenFlowControllerImpl.java
.Bug fix to unchange the StatsRequest Xid value in case of StatsReply Flow message type
Change-Id: Id4dc4a164da654af7b6dfb090af7336e748ef118
diff --git a/core/net/src/main/java/org/onosproject/net/flow/impl/FlowRuleManager.java b/core/net/src/main/java/org/onosproject/net/flow/impl/FlowRuleManager.java
index a1d046c..9bbd0aa 100644
--- a/core/net/src/main/java/org/onosproject/net/flow/impl/FlowRuleManager.java
+++ b/core/net/src/main/java/org/onosproject/net/flow/impl/FlowRuleManager.java
@@ -388,6 +388,16 @@
@Override
public void pushFlowMetrics(DeviceId deviceId, Iterable<FlowEntry> flowEntries) {
+ pushFlowMetricsInternal(deviceId, flowEntries, true);
+ }
+
+ @Override
+ public void pushFlowMetricsWithoutFlowMissing(DeviceId deviceId, Iterable<FlowEntry> flowEntries) {
+ pushFlowMetricsInternal(deviceId, flowEntries, false);
+ }
+
+ private void pushFlowMetricsInternal(DeviceId deviceId, Iterable<FlowEntry> flowEntries,
+ boolean useMissingFlow) {
Map<FlowEntry, FlowEntry> storedRules = Maps.newHashMap();
store.getFlowEntries(deviceId).forEach(f -> storedRules.put(f, f));
@@ -415,17 +425,20 @@
continue;
}
}
- for (FlowEntry rule : storedRules.keySet()) {
- try {
- // there are rules in the store that aren't on the switch
- log.debug("Adding rule in store, but not on switch {}", rule);
- flowMissing(rule);
- } catch (Exception e) {
- log.debug("Can't add missing flow rule {}", e.getMessage());
- continue;
+
+ // DO NOT reinstall
+ if (useMissingFlow) {
+ for (FlowEntry rule : storedRules.keySet()) {
+ try {
+ // there are rules in the store that aren't on the switch
+ log.debug("Adding rule in store, but not on switch {}", rule);
+ flowMissing(rule);
+ } catch (Exception e) {
+ log.debug("Can't add missing flow rule {}", e.getMessage());
+ continue;
+ }
}
}
-
}
@Override