Added sync and purge security group states
- Added list security groups CLI
- Removed unnecessary security group rule store
Change-Id: I62ac652e0af73c5f771f0caec87acd5dfe4abedd
diff --git a/apps/openstacknetworking/src/main/java/org/onosproject/openstacknetworking/impl/DistributedOpenstackNetworkStore.java b/apps/openstacknetworking/src/main/java/org/onosproject/openstacknetworking/impl/DistributedOpenstackNetworkStore.java
index 453dc01..860f5d0 100644
--- a/apps/openstacknetworking/src/main/java/org/onosproject/openstacknetworking/impl/DistributedOpenstackNetworkStore.java
+++ b/apps/openstacknetworking/src/main/java/org/onosproject/openstacknetworking/impl/DistributedOpenstackNetworkStore.java
@@ -15,8 +15,8 @@
*/
package org.onosproject.openstacknetworking.impl;
+import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableSet;
-import org.apache.commons.collections.CollectionUtils;
import org.apache.felix.scr.annotations.Activate;
import org.apache.felix.scr.annotations.Component;
import org.apache.felix.scr.annotations.Deactivate;
@@ -53,7 +53,7 @@
import org.openstack4j.openstack.networking.domain.NeutronSubnet;
import org.slf4j.Logger;
-import java.util.Collection;
+import java.util.List;
import java.util.Set;
import java.util.concurrent.ExecutorService;
import java.util.stream.Collectors;
@@ -358,27 +358,10 @@
eventExecutor.execute(() -> {
Port oldPort = event.oldValue().value();
Port newPort = event.newValue().value();
-
notifyDelegate(new OpenstackNetworkEvent(
OPENSTACK_PORT_UPDATED,
network(event.newValue().value().getNetworkId()), newPort));
-
- if (!newPort.getSecurityGroups().equals(oldPort.getSecurityGroups())) {
- Collection<String> sgToAdd = CollectionUtils.subtract(newPort.getSecurityGroups(),
- oldPort.getSecurityGroups());
- if (!sgToAdd.isEmpty()) {
- notifyDelegate(new OpenstackNetworkEvent(
- OpenstackNetworkEvent.Type.OPENSTACK_SECURITY_GROUP_ADDED_TO_PORT,
- sgToAdd, newPort));
- }
- Collection<String> sgToRemove = CollectionUtils.subtract(oldPort.getSecurityGroups(),
- newPort.getSecurityGroups());
- if (!sgToRemove.isEmpty()) {
- notifyDelegate(new OpenstackNetworkEvent(
- OpenstackNetworkEvent.Type.OPENSTACK_SECURITY_GROUP_REMOVED_FROM_PORT,
- sgToRemove, newPort));
- }
- }
+ processSecurityGroupUpdate(oldPort, newPort);
});
break;
case INSERT:
@@ -404,5 +387,24 @@
break;
}
}
+
+ private void processSecurityGroupUpdate(Port oldPort, Port newPort) {
+ List<String> oldSecurityGroups = oldPort.getSecurityGroups() == null ?
+ ImmutableList.of() : oldPort.getSecurityGroups();
+ List<String> newSecurityGroups = newPort.getSecurityGroups() == null ?
+ ImmutableList.of() : newPort.getSecurityGroups();
+
+ oldSecurityGroups.stream()
+ .filter(sgId -> !newPort.getSecurityGroups().contains(sgId))
+ .forEach(sgId -> notifyDelegate(new OpenstackNetworkEvent(
+ OPENSTACK_PORT_SECURITY_GROUP_REMOVED, newPort, sgId
+ )));
+
+ newSecurityGroups.stream()
+ .filter(sgId -> !oldPort.getSecurityGroups().contains(sgId))
+ .forEach(sgId -> notifyDelegate(new OpenstackNetworkEvent(
+ OPENSTACK_PORT_SECURITY_GROUP_ADDED, newPort, sgId
+ )));
+ }
}
}