Fix: add the kubevirt port to the store only if it is not existed
Remove all flows before remove bridge and ports
Change-Id: I8027bc19b70dce10612f8bc32da6062937299d89
(cherry picked from commit e66ed69033b65ad8ec1c6e1405f87b9be304cfd7)
diff --git a/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/impl/KubevirtFlowRuleManager.java b/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/impl/KubevirtFlowRuleManager.java
index fd0669a..6fe457a 100644
--- a/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/impl/KubevirtFlowRuleManager.java
+++ b/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/impl/KubevirtFlowRuleManager.java
@@ -35,6 +35,7 @@
import org.onosproject.net.flow.DefaultFlowRule;
import org.onosproject.net.flow.DefaultTrafficSelector;
import org.onosproject.net.flow.DefaultTrafficTreatment;
+import org.onosproject.net.flow.FlowEntry;
import org.onosproject.net.flow.FlowRule;
import org.onosproject.net.flow.FlowRuleOperations;
import org.onosproject.net.flow.FlowRuleOperationsContext;
@@ -55,6 +56,7 @@
import java.util.Set;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
+import java.util.stream.StreamSupport;
import static org.onlab.util.Tools.groupedThreads;
import static org.onosproject.kubevirtnetworking.api.Constants.ACL_EGRESS_TABLE;
@@ -213,6 +215,13 @@
true);
}
+ @Override
+ public void purgeRules(DeviceId deviceId) {
+ Iterable<FlowEntry> fes = flowRuleService.getFlowEntries(deviceId);
+ flowRuleService.removeFlowRules(StreamSupport.stream(
+ fes.spliterator(), false).toArray(FlowEntry[]::new));
+ }
+
private void applyRule(FlowRule flowRule, boolean install) {
FlowRuleOperations.Builder flowOpsBuilder = FlowRuleOperations.builder();