[ 
https://issues.apache.org/jira/browse/JCLOUDS-242?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Richard Downer (Cloudsoft) updated JCLOUDS-242:
-----------------------------------------------

    Attachment: jclouds-security-group-ingress-error.log
    
> EC2 create security group error
> -------------------------------
>
>                 Key: JCLOUDS-242
>                 URL: https://issues.apache.org/jira/browse/JCLOUDS-242
>             Project: jclouds
>          Issue Type: Bug
>          Components: jclouds-compute
>    Affects Versions: 1.6.2
>            Reporter: Richard Downer (Cloudsoft)
>         Attachments: jclouds-security-group-ingress-error.log
>
>
> While preparing an application to support jclouds-1.6.2, testing against RC1, 
> I discovered that when using AWS EC2 and invoking createNodesInGroup(...) 
> with a group name not used before, jclouds will cause AWS to emit an error 
> "InvalidGroupId.Malformed" when invoking API call 
> AuthorizeSecurityGroupIngress. This problem does *not* occur in 
> 1.6.1-incubating.
> Example:
>         TemplateOptions options = computeService.templateOptions()
>                 .blockOnPort(22, 600)
>                 .inboundPorts(22, 80);
>         Template template = computeService.templateBuilder()
>                 .options(options)
>                 .build();
>         Set<? extends NodeMetadata> nodes = 
> computeService.createNodesInGroup("a-never-seen-before-group-name", 1, 
> template);
> Outcome:
> Here is an extract from the jclouds log: (a bigger log extract is attached)
>  62496|DEBUG|main         
> |org.jclouds.rest.internal.InvokeSyncToAsyncHttpMethod      |>> invoking 
> AuthorizeSecurityGroupIngress
>  62499|DEBUG|main         
> |org.jclouds.http.internal.JavaUrlHttpCommandExecutorService|Sending request 
> -1187121582: POST https://ec2.us-east-1.amazonaws.com/ HTTP/1.1
>  62499|DEBUG|main         |jclouds.wire                                       
>         |>> 
> "Action=AuthorizeSecurityGroupIngress&GroupId=jclouds%23richard-new-group3&IpPermissions.0.FromPort=80&IpPermissions.0.IpProtocol=tcp&IpPermissions.0.IpRanges.0.CidrIp=0.0.0.0/0&IpPermissions.0.ToPort=80&IpPermissions.1.FromPort=22&IpPermissions.1.IpProtocol=tcp&IpPermissions.1.IpRanges.0.CidrIp=0.0.0.0/0&IpPermissions.1.ToPort=22&IpPermissions.2.FromPort=0&IpPermissions.2.Groups.0.GroupName=jclouds%23richard-new-group3&IpPermissions.2.Groups.0.UserId=761990928256&IpPermissions.2.IpProtocol=tcp&IpPermissions.2.ToPort=65535&IpPermissions.3.FromPort=0&IpPermissions.3.Groups.0.GroupName=jclouds%23richard-new-group3&IpPermissions.3.Groups.0.UserId=761990928256&IpPermissions.3.IpProtocol=udp&IpPermissions.3.ToPort=65535&Signature=8TclhF%2Bm78/A8sbqAArV5FiAjw/s61tDyRHWbaVmNlY%3D&SignatureMethod=HmacSHA256&SignatureVersion=2&Timestamp=2013-08-14T15%3A09%3A12.069Z&Version=2012-06-01&AWSAccessKeyId=AKIAJN65AYF37RPSZB5A"
>  62499|DEBUG|main         |jclouds.headers                                    
>         |>> POST https://ec2.us-east-1.amazonaws.com/ HTTP/1.1
>  62499|DEBUG|main         |jclouds.headers                                    
>         |>> Host: ec2.us-east-1.amazonaws.com
>  62499|DEBUG|main         |jclouds.headers                                    
>         |>> Content-Type: application/x-www-form-urlencoded
>  62499|DEBUG|main         |jclouds.headers                                    
>         |>> Content-Length: 922
>  62653|DEBUG|main         
> |org.jclouds.http.internal.JavaUrlHttpCommandExecutorService|Receiving 
> response -1187121582: HTTP/1.1 400 Bad Request
>  62653|DEBUG|main         |jclouds.headers                                    
>         |<< HTTP/1.1 400 Bad Request
>  62653|DEBUG|main         |jclouds.headers                                    
>         |<< Transfer-Encoding: chunked
>  62653|DEBUG|main         |jclouds.headers                                    
>         |<< Date: Wed, 14 Aug 2013 15:09:11 GMT
>  62653|DEBUG|main         |jclouds.headers                                    
>         |<< Cneonction: close
>  62653|DEBUG|main         |jclouds.headers                                    
>         |<< Server: AmazonEC2
>  62653|DEBUG|main         |jclouds.headers                                    
>         |<< Content-Type: application/unknown
>  62654|DEBUG|main         |jclouds.wire                                       
>         |<< "<?xml version="1.0" encoding="UTF-8"?>[\n]"
>  62654|DEBUG|main         |jclouds.wire                                       
>         |<< 
> "<Response><Errors><Error><Code>InvalidGroupId.Malformed</Code><Message>Invalid
>  id: "jclouds#richard-new-group3" (expecting 
> "sg-...")</Message></Error></Errors><RequestID>91ad5fb8-3e93-4566-8d6e-952518c766d8</RequestID></Response>"
> com.google.common.util.concurrent.UncheckedExecutionException: 
> java.lang.IllegalArgumentException: Invalid id: "jclouds#richard-new-group3" 
> (expecting "sg-...")
> After the test, seems that the security group is created but ingress rules 
> are not configured. Running the test for a second time, jclouds sees that the 
> security group exists so does not attempt to create or configure it. 
> Therefore, on the second run, the test fails because it is unable to get 
> access to port 22.
> ---
> This may be caused by the changes in commit 7ac0d37 for JCLOUDS-99. This is 
> invoking this API call:
>     securityClient.authorizeSecurityGroupIngressInRegion(region, name, perms);
> However, inspecting the definition of this API call, it takes a security 
> group *id* - not a name. This code is sending the name instead of the ID, and 
> AWS rejects it as being an unknown ID.
> It seems that confusion has been caused by the definitions of 
> authorizeSecurityGroupIngressInRegion. In the class SecurityGroupAsyncClient, 
> both methods by this name take the group *name* as a parameter. It is 
> subclassed by AWSSecurityGroupAsyncClient which adds two more 
> authorizeSecurityGroupIngressInRegion methods, that take the group *id* as a 
> parameter. This is obviously a very confusing inconsistency!

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to