Repository: jclouds
Updated Branches:
  refs/heads/1.7.x c85d728a5 -> c0d7b3d24


JCLOUDS-470. Include region in group name for AWSEC2SecurityGroupExtension.


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

Branch: refs/heads/1.7.x
Commit: c0d7b3d248d666228b2cc23df6d003a263f23b34
Parents: c85d728
Author: Andrew Bayer <[email protected]>
Authored: Fri Feb 14 12:09:41 2014 -0800
Committer: Andrew Phillips <[email protected]>
Committed: Thu Jul 3 12:08:42 2014 -0400

----------------------------------------------------------------------
 .../AWSEC2SecurityGroupExtension.java           | 18 +++--
 .../AWSEC2SecurityGroupExtensionExpectTest.java | 76 +++++++++++++++++---
 2 files changed, 73 insertions(+), 21 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jclouds/blob/c0d7b3d2/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/compute/extensions/AWSEC2SecurityGroupExtension.java
----------------------------------------------------------------------
diff --git 
a/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/compute/extensions/AWSEC2SecurityGroupExtension.java
 
b/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/compute/extensions/AWSEC2SecurityGroupExtension.java
index 3b04335..d159957 100644
--- 
a/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/compute/extensions/AWSEC2SecurityGroupExtension.java
+++ 
b/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/compute/extensions/AWSEC2SecurityGroupExtension.java
@@ -22,11 +22,16 @@ import static com.google.common.collect.Iterables.filter;
 import static com.google.common.collect.Iterables.getOnlyElement;
 import static com.google.common.collect.Iterables.transform;
 
-import java.util.Set;
-
 import javax.inject.Inject;
 import javax.inject.Named;
+import java.util.Set;
 
+import com.google.common.base.Function;
+import com.google.common.base.Supplier;
+import com.google.common.cache.LoadingCache;
+import com.google.common.collect.Iterables;
+import com.google.common.collect.Multimap;
+import com.google.common.util.concurrent.ListeningExecutorService;
 import org.jclouds.Constants;
 import org.jclouds.aws.ec2.AWSEC2Api;
 import org.jclouds.aws.util.AWSUtils;
@@ -41,13 +46,6 @@ import org.jclouds.location.Region;
 import org.jclouds.net.domain.IpPermission;
 import org.jclouds.net.domain.IpProtocol;
 
-import com.google.common.base.Function;
-import com.google.common.base.Supplier;
-import com.google.common.cache.LoadingCache;
-import com.google.common.collect.Iterables;
-import com.google.common.collect.Multimap;
-import com.google.common.util.concurrent.ListeningExecutorService;
-
 /**
  * An extension to compute service to allow for the manipulation of {@link 
SecurityGroup}s. Implementation
  * is optional by providers.
@@ -79,7 +77,7 @@ public class AWSEC2SecurityGroupExtension extends 
EC2SecurityGroupExtension {
               false);
 
       groupCreator.getUnchecked(regionAndName);
-      String groupId = groupNameToId.apply(markerGroup);
+      String groupId = groupNameToId.apply(regionAndName.slashEncode());
       return getSecurityGroupById(regionAndName.getRegion() + "/" + groupId);
    }
 

http://git-wip-us.apache.org/repos/asf/jclouds/blob/c0d7b3d2/providers/aws-ec2/src/test/java/org/jclouds/aws/ec2/compute/extensions/AWSEC2SecurityGroupExtensionExpectTest.java
----------------------------------------------------------------------
diff --git 
a/providers/aws-ec2/src/test/java/org/jclouds/aws/ec2/compute/extensions/AWSEC2SecurityGroupExtensionExpectTest.java
 
b/providers/aws-ec2/src/test/java/org/jclouds/aws/ec2/compute/extensions/AWSEC2SecurityGroupExtensionExpectTest.java
index f13737a..04a98a5 100644
--- 
a/providers/aws-ec2/src/test/java/org/jclouds/aws/ec2/compute/extensions/AWSEC2SecurityGroupExtensionExpectTest.java
+++ 
b/providers/aws-ec2/src/test/java/org/jclouds/aws/ec2/compute/extensions/AWSEC2SecurityGroupExtensionExpectTest.java
@@ -20,10 +20,17 @@ import static org.testng.Assert.assertEquals;
 import static org.testng.Assert.assertNotNull;
 import static org.testng.Assert.assertTrue;
 
-import java.util.Set;
-
 import javax.ws.rs.core.MediaType;
+import java.util.Set;
 
+import com.google.common.collect.ImmutableMap;
+import com.google.common.collect.ImmutableMap.Builder;
+import com.google.common.collect.ImmutableMultimap;
+import com.google.common.collect.ImmutableSet;
+import com.google.common.collect.Iterables;
+import com.google.common.collect.LinkedHashMultimap;
+import com.google.common.collect.Multimap;
+import com.google.common.collect.Sets;
 import org.jclouds.aws.ec2.compute.internal.BaseAWSEC2ComputeServiceExpectTest;
 import org.jclouds.compute.domain.SecurityGroup;
 import org.jclouds.compute.domain.SecurityGroupBuilder;
@@ -36,15 +43,6 @@ import org.jclouds.net.domain.IpPermission;
 import org.jclouds.net.domain.IpProtocol;
 import org.testng.annotations.Test;
 
-import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.ImmutableMap.Builder;
-import com.google.common.collect.ImmutableMultimap;
-import com.google.common.collect.ImmutableSet;
-import com.google.common.collect.Iterables;
-import com.google.common.collect.LinkedHashMultimap;
-import com.google.common.collect.Multimap;
-import com.google.common.collect.Sets;
-
 /**
  * 
  * @author Andrew Bayer
@@ -354,6 +352,62 @@ public class AWSEC2SecurityGroupExtensionExpectTest 
extends BaseAWSEC2ComputeSer
       
assertTrue(newPerm.getTenantIdGroupNamePairs().values().contains(origGroup.getProviderId()));
    }
 
+   public void testCreateSecurityGroup() {
+      HttpRequest createSecurityGroupExtRequest =
+              formSigner.filter(HttpRequest.builder()
+                      .method("POST")
+                      .endpoint("https://ec2."; + region + ".amazonaws.com/")
+                      .addHeader("Host", "ec2." + region + ".amazonaws.com")
+                      .addFormParam("Action", "CreateSecurityGroup")
+                      .addFormParam("GroupDescription", "jclouds#some-group")
+                      .addFormParam("GroupName", 
"jclouds#some-group").build());
+
+      HttpRequest describeSecurityGroupsSingleRequest =
+              formSigner.filter(HttpRequest.builder()
+                      .method("POST")
+                      .endpoint("https://ec2."; + region + ".amazonaws.com/")
+                      .addHeader("Host", "ec2." + region + ".amazonaws.com")
+                      .addFormParam("Action", "DescribeSecurityGroups")
+                      .addFormParam("GroupName.1", 
"jclouds#some-group").build());
+
+      HttpRequest describeSecurityGroupsByIdRequest =
+              formSigner.filter(HttpRequest.builder()
+                      .method("POST")
+                      .endpoint("https://ec2."; + region + ".amazonaws.com/")
+                      .addHeader("Host", "ec2." + region + ".amazonaws.com")
+                      .addFormParam("Action", "DescribeSecurityGroups")
+                      .addFormParam("GroupId.1", "sg-3c6ef654").build());
+
+      HttpResponse describeSecurityGroupsSingleResponse =
+              HttpResponse.builder().statusCode(200)
+                      .payload(payloadFromResourceWithContentType(
+                              "/describe_securitygroups_extension_single.xml", 
MediaType.APPLICATION_XML)).build();
+
+
+      Builder<HttpRequest, HttpResponse> requestResponseMap = 
ImmutableMap.<HttpRequest, HttpResponse> builder();
+      requestResponseMap.put(describeRegionsRequest, describeRegionsResponse);
+      requestResponseMap.put(describeAvailabilityZonesRequest, 
describeAvailabilityZonesResponse);
+      requestResponseMap.put(describeSecurityGroupsSingleRequest, 
describeSecurityGroupsSingleResponse);
+      requestResponseMap.put(describeSecurityGroupsByIdRequest, 
describeSecurityGroupsSingleResponse);
+      requestResponseMap.put(createKeyPairRequest, createKeyPairResponse);
+      requestResponseMap.put(createSecurityGroupExtRequest, 
createSecurityGroupResponse);
+
+      requestResponseMap.put(authorizeSecurityGroupIngressRequest22, 
authorizeSecurityGroupIngressResponse);
+      requestResponseMap.put(authorizeSecurityGroupIngressRequestGroup, 
authorizeSecurityGroupIngressResponse);
+
+
+      SecurityGroupExtension extension = 
requestsSendResponses(requestResponseMap.build()).getSecurityGroupExtension().get();
+
+      SecurityGroup group = extension.createSecurityGroup("some-group", new 
LocationBuilder()
+              .scope(LocationScope.REGION)
+              .id(region)
+              .description("region")
+              .build());
+
+      assertEquals("sg-3c6ef654", group.getProviderId());
+      assertEquals(region + "/sg-3c6ef654", group.getId());
+   }
+
    private Multimap<String, String> emptyMultimap() {
       return LinkedHashMultimap.create();
    }

Reply via email to