That's great! Thanks for investigating this.
There is a live test that is currently failing because of this, so we should see it go green once we apply a fix. Do you want to try fixing it and sending a PR? I'm AFK this weekend, but I'll be available on Monday to help you or to have a look and fix it myself. Thanks for the feedback! El 28/02/2015 03:27, "Ruben Rubio Rey" <[email protected]> escribió: > Hi, > > I received the reply from support. I think it makes sense. Hopefully can > help to solve the problem in JClouds. > > """ > The error is misleading. BlockDeviceMapping.1 is the root device /dev/sda1 > defined in the AMI. If you want another device, you should use a separate > BlockDeviceMapping.2 > > For example with the AWS CLI: aws ec2 run-instances --key-name $KEY > --image-id $AMI --instance-type $TYPE --query 'Instances[*].InstanceId' > --output text --block-device-mappings > '[{"DeviceName":"/dev/sda1","Ebs":{"VolumeSize":30,"VolumeType":"gp2"}},{"DeviceName":"xvdb","VirtualName":"ephemeral0"}]' > --debug 2>err > > BlockDeviceMapping: > http://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_BlockDeviceMapping.html > """ > > Regards, > Ruben > > On Wed, Feb 11, 2015 at 6:45 PM, Ruben Rubio Rey <[email protected]> > wrote: > >> >> I will try contacting support. >> >> I will post news here. >> >> >> >> On Wed, Feb 11, 2015 at 5:53 PM, Ignasi Barrera <[email protected]> wrote: >> >>> Hi Ruben, >>> >>> This is something we've already detected as there is a live test failing >>> just for this reason. Unfortunately, I think it is an issue on the AWS side. >>> >>> I've been investigating it, but the API call jclouds makes is correct >>> according to their docs. The only thing I've found is this thread [1] in >>> their developers forum, but it has no answers. Perhaps you can open a new >>> thread there or ask in a support channel? We'd also love to understand why >>> that is failing. >>> >>> I. >>> >>> [1] https://forums.aws.amazon.com/thread.jspa?threadID=158544 >>> El 11/02/2015 05:22, "Ruben Rubio Rey" <[email protected]> escribió: >>> >>> Hi eveyone, >>>> >>>> It is my first message to this mailing list. I have been using jclouds >>>> for a while but I feel that I need some help to do some basic tasks. >>>> >>>> I am creating an instance in E2C and I would like to add an extra io1 >>>> volume, but I am having problems: >>>> >>>> final String POLL_PERIOD_TWENTY_SECONDS = >>>> String.valueOf(SECONDS.toMillis(20)); >>>> >>>> Properties overrides = new Properties(); >>>> >>>> overrides.setProperty(ComputeServiceProperties.POLL_INITIAL_PERIOD, >>>> POLL_PERIOD_TWENTY_SECONDS); >>>> overrides.setProperty(ComputeServiceProperties.POLL_MAX_PERIOD, >>>> POLL_PERIOD_TWENTY_SECONDS); >>>> >>>> Iterable<Module> modules = ImmutableSet.<Module> of(new >>>> SshjSshClientModule(), new SLF4JLoggingModule()); >>>> //Iterable<Module> modules = ImmutableSet.<Module> of(new >>>> SshjSshClientModule()); >>>> >>>> ComputeServiceContext context = >>>> ContextBuilder.newBuilder("aws-ec2") >>>> .credentials("xxx", "xxx") >>>> .modules(modules) >>>> .overrides(overrides) >>>> .buildView(ComputeServiceContext.class); >>>> ComputeService computeService = context.getComputeService(); >>>> >>>> // UBUNTU >>>> Template template = computeService.templateBuilder() >>>> .locationId("us-east-1") >>>> .imageId("us-east-1/ami-7c807d14") >>>> .hardwareId("t1.micro") >>>> .build(); >>>> >>>> // Cant mount straight away (maybe needed to create partition and >>>> format ?) >>>> // >>>> template.getOptions().as(EC2TemplateOptions.class).mapNewVolumeToDeviceName("/dev/sdm", >>>> 100, true ); >>>> >>>> template.getOptions().as(EC2TemplateOptions.class).mapNewVolumeToDeviceName("/dev/sdm", >>>> 100, true, "io1", null, false ); >>>> >>>> >>>> 15:14:47.284 [main] DEBUG jclouds.wire - >> >>>> "Action=RunInstances&ImageId=ami-7c807d14&MinCount=1&MaxCount=1&InstanceType=t1.micro&SecurityGroup.1=jclouds%23m456&KeyName=jclouds%23m456%23f05&UserData=I2Nsb3VkLWNvbmZpZwpyZXBvX3VwZ3JhZGU6IG5vbmUK&BlockDeviceMapping.1.DeviceName=/dev/sdm&BlockDeviceMapping.1.Ebs.VolumeSize=100&BlockDeviceMapping.1.Ebs.DeleteOnTermination=true&BlockDeviceMapping.1.Ebs.VolumeType=io1&Version=2012-06-01" >>>> 15:14:47.285 [main] DEBUG jclouds.headers - >> POST >>>> https://ec2.us-east-1.amazonaws.com/ HTTP/1.1 >>>> 15:14:47.285 [main] DEBUG jclouds.headers - >> Host: >>>> ec2.us-east-1.amazonaws.com >>>> 15:14:47.286 [main] DEBUG jclouds.headers - >> X-Amz-Date: >>>> 20150211T041447Z >>>> 15:14:47.286 [main] DEBUG jclouds.headers - >> Authorization: >>>> AWS4-HMAC-SHA256 Credential=xx/20150211/us-east-1/ec2/aws4_request, >>>> SignedHeaders=content-type;host;x-amz-date, >>>> Signature=83fd5d0d5723e87b03ff274d503e5a3952851ce0091dbf9fa42113b1a778ca8d >>>> 15:14:47.286 [main] DEBUG jclouds.headers - >> Content-Type: >>>> application/x-www-form-urlencoded >>>> 15:14:47.287 [main] DEBUG jclouds.headers - >> Content-Length: 388 >>>> 15:14:47.771 [main] DEBUG o.j.h.i.JavaUrlHttpCommandExecutorService - >>>> Receiving response 1653682173: HTTP/1.1 400 Bad Request >>>> 15:14:47.771 [main] DEBUG jclouds.headers - << HTTP/1.1 400 Bad Request >>>> 15:14:47.771 [main] DEBUG jclouds.headers - << Date: Wed, 11 Feb 2015 >>>> 04:14:46 GMT >>>> 15:14:47.772 [main] DEBUG jclouds.headers - << Transfer-Encoding: >>>> chunked >>>> 15:14:47.772 [main] DEBUG jclouds.headers - << Server: AmazonEC2 >>>> 15:14:47.772 [main] DEBUG jclouds.headers - << Cneonction: close >>>> 15:14:47.772 [main] DEBUG jclouds.headers - << Content-Type: >>>> application/unknown >>>> 15:14:47.772 [main] DEBUG jclouds.wire - << "<?xml version="1.0" >>>> encoding="UTF-8"?>[\n]" >>>> 15:14:47.773 [main] DEBUG jclouds.wire - << >>>> "<Response><Errors><Error><Code>UnknownParameter</Code><Message>The >>>> parameter VolumeType is not >>>> recognized</Message></Error></Errors><RequestID>e37d4d05-dbd4-45d7-bfd6-2c39e43a48c2</RequestID></Response>" >>>> >>>> org.jclouds.aws.AWSResponseException: request POST >>>> https://ec2.us-east-1.amazonaws.com/ HTTP/1.1 failed with code 400, >>>> error: AWSError{requestId='e37d4d05-dbd4-45d7-bfd6-2c39e43a48c2', >>>> requestToken='null', code='UnknownParameter', message='The parameter >>>> VolumeType is not recognized', context='{Response=, Errors=}'} >>>> >>>> But as far I understand io1 is an accepted value for the VolumeType as >>>> specified here: >>>> http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSVolumeTypes.html >>>> >>>> If I run the code with >>>> >>>> template.getOptions().as(EC2TemplateOptions.class).mapNewVolumeToDeviceName("/dev/sdm", >>>> 100, true ); >>>> >>>> it works, but if I try to specify the volume type it fails. >>>> >>>> How can I create an extra volume specifying the volume type ? >>>> >>>> Thanks in advance, >>>> >>>> Ruben >>>> >>>> >> >
