Repository: jclouds
Updated Branches:
  refs/heads/2.0.x 502d74968 -> a2863b2a3


JCLOUDS-1307: Invalidate SG on removal even if already externally deleted


Project: http://git-wip-us.apache.org/repos/asf/jclouds/repo
Commit: http://git-wip-us.apache.org/repos/asf/jclouds/commit/a2863b2a
Tree: http://git-wip-us.apache.org/repos/asf/jclouds/tree/a2863b2a
Diff: http://git-wip-us.apache.org/repos/asf/jclouds/diff/a2863b2a

Branch: refs/heads/2.0.x
Commit: a2863b2a3c3d57e9c9909c5b9f4bba8ac071b3dc
Parents: 502d749
Author: Svetoslav Neykov <[email protected]>
Authored: Fri Jun 9 12:41:16 2017 +0300
Committer: Svetoslav Neykov <[email protected]>
Committed: Tue Jun 27 13:33:30 2017 +0300

----------------------------------------------------------------------
 .../CloudStackSecurityGroupExtension.java       | 20 ++++++++++++--------
 .../extensions/EC2SecurityGroupExtension.java   | 10 ++++------
 2 files changed, 16 insertions(+), 14 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jclouds/blob/a2863b2a/apis/cloudstack/src/main/java/org/jclouds/cloudstack/compute/extensions/CloudStackSecurityGroupExtension.java
----------------------------------------------------------------------
diff --git 
a/apis/cloudstack/src/main/java/org/jclouds/cloudstack/compute/extensions/CloudStackSecurityGroupExtension.java
 
b/apis/cloudstack/src/main/java/org/jclouds/cloudstack/compute/extensions/CloudStackSecurityGroupExtension.java
index 627fa55..2d56b5c 100644
--- 
a/apis/cloudstack/src/main/java/org/jclouds/cloudstack/compute/extensions/CloudStackSecurityGroupExtension.java
+++ 
b/apis/cloudstack/src/main/java/org/jclouds/cloudstack/compute/extensions/CloudStackSecurityGroupExtension.java
@@ -23,6 +23,7 @@ import static com.google.common.collect.Iterables.transform;
 import static 
org.jclouds.cloudstack.predicates.SecurityGroupPredicates.ruleCidrMatches;
 import static 
org.jclouds.cloudstack.predicates.SecurityGroupPredicates.ruleGroupMatches;
 
+import java.util.Map;
 import java.util.Set;
 
 import javax.inject.Inject;
@@ -150,6 +151,7 @@ public class CloudStackSecurityGroupExtension implements 
SecurityGroupExtension
               api.getSecurityGroupApi().getSecurityGroup(id);
 
       if (group == null) {
+         invalidateCache(id);
          return false;
       }
 
@@ -159,17 +161,19 @@ public class CloudStackSecurityGroupExtension implements 
SecurityGroupExtension
 
       api.getSecurityGroupApi().deleteSecurityGroup(id);
 
-      // TODO find something better here maybe - hard to map zones to groups
-      for (Location location : locations.get()) {
-         groupCreator.invalidate(ZoneSecurityGroupNamePortsCidrs.builder()
-                 .zone(location.getId())
-                 .name(group.getName())
-                 .build());
-      }
-
+      invalidateCache(id);
       return true;
    }
 
+   private void invalidateCache(String id) {
+      for (Map.Entry<ZoneAndName, org.jclouds.cloudstack.domain.SecurityGroup> 
sg : groupCreator.asMap().entrySet()) {
+         if (id.equals(sg.getValue().getId())) {
+            groupCreator.invalidate(sg.getKey());
+            break;
+         }
+      }
+   }
+
    @Override
    public SecurityGroup addIpPermission(IpPermission ipPermission, 
SecurityGroup group) {
       checkNotNull(group, "group");

http://git-wip-us.apache.org/repos/asf/jclouds/blob/a2863b2a/apis/ec2/src/main/java/org/jclouds/ec2/compute/extensions/EC2SecurityGroupExtension.java
----------------------------------------------------------------------
diff --git 
a/apis/ec2/src/main/java/org/jclouds/ec2/compute/extensions/EC2SecurityGroupExtension.java
 
b/apis/ec2/src/main/java/org/jclouds/ec2/compute/extensions/EC2SecurityGroupExtension.java
index 081d3cc..faed403 100644
--- 
a/apis/ec2/src/main/java/org/jclouds/ec2/compute/extensions/EC2SecurityGroupExtension.java
+++ 
b/apis/ec2/src/main/java/org/jclouds/ec2/compute/extensions/EC2SecurityGroupExtension.java
@@ -172,17 +172,15 @@ public class EC2SecurityGroupExtension implements 
SecurityGroupExtension {
       String region = parts[0];
       String groupName = parts[1];
 
+      boolean deleted = false;
       if 
(!client.getSecurityGroupApi().get().describeSecurityGroupsInRegion(region, 
groupName).isEmpty()) {
          
client.getSecurityGroupApi().get().deleteSecurityGroupInRegion(region, 
groupName);
-         // TODO: test this clear happens
-         groupCreator.invalidate(new RegionNameAndIngressRules(region, 
groupName, null, false, null));
-         return true;
+         deleted = true;
       }
-
-      return false;
+      groupCreator.invalidate(new RegionNameAndIngressRules(region, groupName, 
null, false, null));
+      return deleted;
    }
 
-
    @Override
    public SecurityGroup addIpPermission(IpPermission ipPermission, 
SecurityGroup group) {
       String region = 
AWSUtils.getRegionFromLocationOrNull(group.getLocation());

Reply via email to