[ONOS-5171] FlowRuleStore: add purgeFlowEntries
The FlowRuleStore exposes purgeFlowEntry(DeviceId),
which purges from the store by a specific device.
Add purgeFlowEntries, to purge entries from all devices.
Change-Id: I0ec50d2bbb8b39097189f9e332dc3efd281bc811
diff --git a/core/api/src/main/java/org/onosproject/net/flow/FlowRuleStore.java b/core/api/src/main/java/org/onosproject/net/flow/FlowRuleStore.java
index bb8104d..f1cb90c 100644
--- a/core/api/src/main/java/org/onosproject/net/flow/FlowRuleStore.java
+++ b/core/api/src/main/java/org/onosproject/net/flow/FlowRuleStore.java
@@ -111,7 +111,12 @@
*
* @param deviceId device id
*/
- void purgeFlowRule(DeviceId deviceId);
+ default void purgeFlowRule(DeviceId deviceId) {}
+
+ /**
+ * Removes all flow entries from store.
+ */
+ void purgeFlowRules();
/**
* Updates the flow table statistics of the specified device using
diff --git a/core/common/src/test/java/org/onosproject/store/trivial/SimpleFlowRuleStore.java b/core/common/src/test/java/org/onosproject/store/trivial/SimpleFlowRuleStore.java
index 3706b4b..81c3105 100644
--- a/core/common/src/test/java/org/onosproject/store/trivial/SimpleFlowRuleStore.java
+++ b/core/common/src/test/java/org/onosproject/store/trivial/SimpleFlowRuleStore.java
@@ -316,6 +316,11 @@
}
@Override
+ public void purgeFlowRules() {
+ flowEntries.clear();
+ }
+
+ @Override
public void storeBatch(
FlowRuleBatchOperation operation) {
List<FlowRuleBatchEntry> toAdd = new ArrayList<>();
diff --git a/core/store/dist/src/main/java/org/onosproject/store/flow/impl/DistributedFlowRuleStore.java b/core/store/dist/src/main/java/org/onosproject/store/flow/impl/DistributedFlowRuleStore.java
index ef8bfe5..9e2c53d 100644
--- a/core/store/dist/src/main/java/org/onosproject/store/flow/impl/DistributedFlowRuleStore.java
+++ b/core/store/dist/src/main/java/org/onosproject/store/flow/impl/DistributedFlowRuleStore.java
@@ -624,6 +624,11 @@
}
@Override
+ public void purgeFlowRules() {
+ flowTable.purgeFlowRules();
+ }
+
+ @Override
public void batchOperationComplete(FlowRuleBatchEvent event) {
//FIXME: need a per device pending response
NodeId nodeId = pendingResponses.remove(event.subject().batchId());
@@ -872,6 +877,10 @@
flowEntries.remove(deviceId);
}
+ public void purgeFlowRules() {
+ flowEntries.clear();
+ }
+
private List<NodeId> getBackupNodes(DeviceId deviceId) {
// The returned backup node list is in the order of preference i.e. next likely master first.
List<NodeId> allPossibleBackupNodes = replicaInfoManager.getReplicaInfoFor(deviceId).backups();