@Override public Builder toBuilder() { return new Builder().fromApiMetadata(this); }
@Override public NovaEC2ApiMetadata build() { return new NovaEC2ApiMetadata(this); }
public NovaEC2ApiMetadata() { super(new Builder()); }
public Builder() { id("openstack-nova-ec2") .name("OpenStack Nova's EC2-clone API") .version("2009-04-04") .identityName("Access Key ID") .credentialName("Secret Access Key") .defaultEndpoint("http://localhost:8773/services/Cloud") .documentation(URI.create("http://docs.amazonwebservices.com/AWSEC2/latest/APIReference")) .defaultProperties(NovaEC2ApiMetadata.defaultProperties()) .view(EC2ComputeServiceContext.class) .defaultModules(ImmutableSet.<Class<? extends Module>>builder() .add(NovaEC2HttpApiModule.class) .add(EC2ResolveImagesModule.class) .add(NovaEC2ComputeServiceContextModule.class) .add(HyphenToNullIso8601Module.class).build()); }
@Test(expectedExceptions = IllegalStateException.class) public void testImportKeyPairFailsAlreadyExists() { NovaEC2KeyPairApi client = requestsSendResponses( describeAvailabilityZonesRequest, describeAvailabilityZonesResponse, HttpRequest.builder().method("POST") .endpoint("http://localhost:8773/services/Cloud/") .addHeader("Host", "localhost:8773") .payload(payloadFromStringWithContentType("Action=ImportKeyPair&KeyName=mykey&PublicKeyMaterial=c3NoLXJzYSBBQQ%3D%3D&Signature=wOOKOlDfJezRkx7NKcyOyaBQuY7PoVE3HFa9495RL7s%3D&SignatureMethod=HmacSHA256&SignatureVersion=2&Timestamp=2012-04-16T15%3A54%3A08.897Z&Version=2009-04-04&AWSAccessKeyId=identity", "application/x-www-form-urlencoded")).build(), HttpResponse.builder().statusCode(409).build() ).getKeyPairApi().get(); client.importKeyPairInRegion(null, "mykey", "ssh-rsa AA"); } }
public void testDescribeImagesWithNonMachineTypes() { AMIApi client = requestsSendResponses( describeAvailabilityZonesRequest, describeAvailabilityZonesResponse, HttpRequest.builder().method("POST") .endpoint("http://localhost:8773/services/Cloud/") .addHeader("Host", "localhost:8773") .payload(payloadFromStringWithContentType("Action=DescribeImages&Signature=Z3q3jSutwlfgvbcINT0Ed3AjrjxM4WMvQloXu/1kd40%3D&SignatureMethod=HmacSHA256&SignatureVersion=2&Timestamp=2012-04-16T15%3A54%3A08.897Z&Version=2009-04-04&AWSAccessKeyId=identity", "application/x-www-form-urlencoded")).build(), HttpResponse.builder().statusCode(200).payload(payloadFromResource("/nova_ec2_images_with_ramdisk.xml")).build() ).getAMIApi().get(); Set<? extends Image> images = client.describeImagesInRegion("nova"); assertEquals(images.size(), 1); }
public void testDescribeInstancesWithDashesInPlaceOfNullDates() { InstanceApi client = requestsSendResponses( describeAvailabilityZonesRequest, describeAvailabilityZonesResponse, HttpRequest.builder().method("POST") .endpoint("http://localhost:8773/services/Cloud/") .addHeader("Host", "localhost:8773") .payload(payloadFromStringWithContentType("Action=DescribeInstances&Signature=kkCE1HzyntmkICEidOizw50B9yjLdNZvAWUXVse1c8o%3D&SignatureMethod=HmacSHA256&SignatureVersion=2&Timestamp=2012-04-16T15%3A54%3A08.897Z&Version=2009-04-04&AWSAccessKeyId=identity", "application/x-www-form-urlencoded")).build(), HttpResponse.builder().statusCode(200).payload(payloadFromResource("/nova_ec2_describe_instances.xml")).build() ).getInstanceApi().get(); Set<? extends Reservation<? extends RunningInstance>> response = client.describeInstancesInRegion("nova"); assertEquals(response.size(), 3); Reservation<? extends RunningInstance> target = Iterables.get(response, 2); RunningInstance runningInstance = Iterables.getOnlyElement(target); BlockDevice bd = Iterables.getOnlyElement(runningInstance.getEbsBlockDevices().values()); // this is a '-' in the nova_ec2_describe_instances.xml assertNull(bd.getAttachTime()); // double-check the other fields assertFalse(bd.isDeleteOnTermination()); assertEquals(bd.getVolumeId(), "1"); }
public void testDescribeVolumesWithNovaEC2Status() { ElasticBlockStoreApi client = requestsSendResponses( describeAvailabilityZonesRequest, describeAvailabilityZonesResponse, HttpRequest.builder().method("POST") .endpoint("http://localhost:8773/services/Cloud/") .addHeader("Host", "localhost:8773") .payload(payloadFromStringWithContentType("Action=DescribeVolumes&Signature=AvRznSzGExM%2Buaj2JJj66wq4v4f%2BakicyLooRDtC0t0%3D&SignatureMethod=HmacSHA256&SignatureVersion=2&Timestamp=2012-04-16T15%3A54%3A08.897Z&Version=2009-04-04&AWSAccessKeyId=identity", "application/x-www-form-urlencoded")).build(), HttpResponse.builder().statusCode(200).payload(payloadFromResource("/nova_ec2_describe_volumes.xml")).build() ).getElasticBlockStoreApi().get(); Set<Volume> expected = ImmutableSet.of(Volume .builder() .status(Volume.Status.AVAILABLE) .availabilityZone("nova") .region("nova") .id("vol-00000007") .size(1) .attachments(Attachment.builder().region("nova").build()) .createTime(dateService.iso8601SecondsDateParse("2012-04-10T10:39:52Z")) .build()); assertEquals(client.describeVolumesInRegion("nova"), expected); }
@Override @BeforeClass(groups = { "integration", "live" }) public void setupContext() { super.setupContext(); client = view.unwrapApi(NovaEC2Api.class).getKeyPairApi().get(); regions = view.unwrapApi(NovaEC2Api.class).getAvailabilityZoneAndRegionApi().get().describeRegions().keySet(); }
public Builder() { id("openstack-nova-ec2") .name("OpenStack Nova's EC2-clone API") .version("2009-04-04") .identityName("Access Key ID") .credentialName("Secret Access Key") .defaultEndpoint("http://localhost:8773/services/Cloud") .documentation(URI.create("http://docs.amazonwebservices.com/AWSEC2/latest/APIReference")) .defaultProperties(NovaEC2ApiMetadata.defaultProperties()) .view(EC2ComputeServiceContext.class) .defaultModules(ImmutableSet.<Class<? extends Module>>builder() .add(NovaEC2HttpApiModule.class) .add(EC2ResolveImagesModule.class) .add(NovaEC2ComputeServiceContextModule.class) .add(HyphenToNullIso8601Module.class).build()); }
@Override public Builder toBuilder() { return new Builder().fromApiMetadata(this); }
@Override public NovaEC2ApiMetadata build() { return new NovaEC2ApiMetadata(this); }
public void testImportKeyPair() { NovaEC2KeyPairApi client = requestsSendResponses( describeAvailabilityZonesRequest, describeAvailabilityZonesResponse, HttpRequest.builder().method("POST") .endpoint("http://localhost:8773/services/Cloud/") .addHeader("Host", "localhost:8773") .payload(payloadFromStringWithContentType("Action=ImportKeyPair&KeyName=mykey&PublicKeyMaterial=c3NoLXJzYSBBQQ%3D%3D&Signature=wOOKOlDfJezRkx7NKcyOyaBQuY7PoVE3HFa9495RL7s%3D&SignatureMethod=HmacSHA256&SignatureVersion=2&Timestamp=2012-04-16T15%3A54%3A08.897Z&Version=2009-04-04&AWSAccessKeyId=identity", "application/x-www-form-urlencoded")).build(), HttpResponse.builder().statusCode(200).payload(payloadFromResource("/nova_ec2_import_keypair_response.xml")).build() ).getKeyPairApi().get(); KeyPair result = client.importKeyPairInRegion(null, "mykey", "ssh-rsa AA"); assertEquals(result.getKeyName(), "aplowe-nova-ec22"); assertEquals(result.getSha1OfPrivateKey(), "e3:fd:de:f6:4c:36:7d:9b:8f:2f:4c:20:f8:ae:b0:ea"); }
public NovaEC2ApiMetadata() { super(new Builder()); }
public Builder() { id("openstack-nova-ec2") .name("OpenStack Nova's EC2-clone API") .version("2009-04-04") .identityName("Access Key ID") .credentialName("Secret Access Key") .defaultEndpoint("http://localhost:8773/services/Cloud") .documentation(URI.create("http://docs.amazonwebservices.com/AWSEC2/latest/APIReference")) .defaultProperties(NovaEC2ApiMetadata.defaultProperties()) .view(EC2ComputeServiceContext.class) .defaultModules(ImmutableSet.<Class<? extends Module>>builder() .add(NovaEC2HttpApiModule.class) .add(EC2ResolveImagesModule.class) .add(NovaEC2ComputeServiceContextModule.class) .add(HyphenToNullIso8601Module.class).build()); }
@Override public Builder toBuilder() { return new Builder().fromApiMetadata(this); }
@Override public NovaEC2ApiMetadata build() { return new NovaEC2ApiMetadata(this); }
public NovaEC2ApiMetadata() { super(new Builder()); }
public NovaEC2ApiMetadataTest() { super(new NovaEC2ApiMetadata()); } }
public void testAssignability() { View view = ContextBuilder.newBuilder(new NovaEC2ApiMetadata()).credentials("foo", "bar") .buildView(typeToken(ComputeServiceContext.class)); view.unwrapApi(EC2Api.class); view.unwrapApi(NovaEC2Api.class); } }