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());
