diff --git a/apis/cloudservers/pom.xml b/apis/cloudservers/pom.xml index 6587497784..41a3c0acfe 100644 --- a/apis/cloudservers/pom.xml +++ b/apis/cloudservers/pom.xml @@ -40,9 +40,7 @@ ${test.rackspace.identity} ${test.rackspace.credential} - - - + org.jclouds.cloudservers*;version="${project.version}" org.jclouds.compute.internal;version="${project.version}", @@ -120,10 +118,8 @@ ${test.cloudstack.build-version} ${test.cloudstack.identity} ${test.cloudstack.credential} - ${test.cloudstack.image-id} - ${test.cloudstack.image.login-user} - ${test.cloudstack.image.authenticate-sudo} - + ${test.cloudstack.template} + diff --git a/apis/cloudsigma/pom.xml b/apis/cloudsigma/pom.xml index 5b49b23147..d36ea17daa 100644 --- a/apis/cloudsigma/pom.xml +++ b/apis/cloudsigma/pom.xml @@ -39,10 +39,7 @@ FIXME FIXME - f3c7c665-cd54-4a78-8fd2-7ec2f028cf29 - - - + imageId=f3c7c665-cd54-4a78-8fd2-7ec2f028cf29 org.jclouds.cloudsigma*;version="${project.version}" org.jclouds.compute.internal;version="${project.version}", @@ -107,9 +104,7 @@ ${test.cloudsigma.build-version} ${test.cloudsigma.identity} ${test.cloudsigma.credential} - ${test.cloudsigma.image-id} - ${test.cloudsigma.image.login-user} - ${test.cloudsigma.image.authenticate-sudo} + ${test.cloudsigma.template} diff --git a/apis/cloudsigma/src/test/java/org/jclouds/cloudsigma/CloudSigmaClientLiveTest.java b/apis/cloudsigma/src/test/java/org/jclouds/cloudsigma/CloudSigmaClientLiveTest.java index 1a639fc980..36f788d817 100644 --- a/apis/cloudsigma/src/test/java/org/jclouds/cloudsigma/CloudSigmaClientLiveTest.java +++ b/apis/cloudsigma/src/test/java/org/jclouds/cloudsigma/CloudSigmaClientLiveTest.java @@ -57,7 +57,6 @@ import org.testng.annotations.Test; import com.google.common.base.Predicate; import com.google.common.base.Predicates; -import com.google.common.base.Strings; import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableSet; import com.google.common.net.HostAndPort; @@ -84,6 +83,7 @@ public class CloudSigmaClientLiveTest extends BaseComputeServiceContextLiveTest protected Predicate socketTester; protected Predicate driveNotClaimed; + protected String imageId; @BeforeGroups(groups = { "integration", "live" }) @Override @@ -97,7 +97,7 @@ public class CloudSigmaClientLiveTest extends BaseComputeServiceContextLiveTest socketTester = new RetryablePredicate(new InetSocketAddressConnect(), maxDriveImageTime, 1, TimeUnit.SECONDS); - if (Strings.emptyToNull(imageId) == null) { + if (template == null || template.getImageId() == null) { imageId = view.getComputeService().templateBuilder().build().getImage().getId(); } } diff --git a/apis/cloudstack/pom.xml b/apis/cloudstack/pom.xml index bef1c61535..c711e8d8fa 100644 --- a/apis/cloudstack/pom.xml +++ b/apis/cloudstack/pom.xml @@ -49,7 +49,7 @@ http://localhost:8080/client/api - 2.2.12 + 3.0.3 FIXME_apiKey FIXME_secretKey @@ -57,10 +57,7 @@ - - - - + org.jclouds.cloudstack*;version="${project.version}" org.jclouds.compute.internal;version="${project.version}", @@ -137,9 +134,7 @@ ${test.cloudstack.build-version} ${test.cloudstack.identity} ${test.cloudstack.credential} - ${test.cloudstack.image-id} - ${test.cloudstack.image.login-user} - ${test.cloudstack.image.authenticate-sudo} + ${test.cloudstack.template} ${test.cloudstack.domainAdminIdentity} ${test.cloudstack.domainAdminCredential} ${test.cloudstack.globalAdminIdentity} diff --git a/apis/cloudstack/src/test/java/org/jclouds/cloudstack/features/FirewallClientLiveTest.java b/apis/cloudstack/src/test/java/org/jclouds/cloudstack/features/FirewallClientLiveTest.java index d2a34b238d..73e4a61e47 100644 --- a/apis/cloudstack/src/test/java/org/jclouds/cloudstack/features/FirewallClientLiveTest.java +++ b/apis/cloudstack/src/test/java/org/jclouds/cloudstack/features/FirewallClientLiveTest.java @@ -75,7 +75,7 @@ public class FirewallClientLiveTest extends BaseCloudStackClientLiveTest { } })); - String defaultTemplate = (imageId != null && !"".equals(imageId)) ? imageId : null; + String defaultTemplate = template != null ? template.getImageId() : null; vm = VirtualMachineClientLiveTest.createVirtualMachineInNetwork(network, defaultTemplateOrPreferredInZone(defaultTemplate, client, network.getZoneId()), diff --git a/apis/cloudstack/src/test/java/org/jclouds/cloudstack/features/LoadBalancerClientLiveTest.java b/apis/cloudstack/src/test/java/org/jclouds/cloudstack/features/LoadBalancerClientLiveTest.java index 7f94a60529..3fa074e334 100644 --- a/apis/cloudstack/src/test/java/org/jclouds/cloudstack/features/LoadBalancerClientLiveTest.java +++ b/apis/cloudstack/src/test/java/org/jclouds/cloudstack/features/LoadBalancerClientLiveTest.java @@ -92,7 +92,7 @@ public class LoadBalancerClientLiveTest extends BaseCloudStackClientLiveTest { public void testCreateVm() { if (networksDisabled) return; - String defaultTemplate = (imageId != null && !"".equals(imageId)) ? imageId : null; + String defaultTemplate = template != null ? template.getImageId() : null; vm = VirtualMachineClientLiveTest.createVirtualMachineInNetwork(network, defaultTemplateOrPreferredInZone(defaultTemplate, client, network.getZoneId()), client, jobComplete, virtualMachineRunning); diff --git a/apis/cloudstack/src/test/java/org/jclouds/cloudstack/features/SecurityGroupClientLiveTest.java b/apis/cloudstack/src/test/java/org/jclouds/cloudstack/features/SecurityGroupClientLiveTest.java index 30a9b2ceea..432039062b 100644 --- a/apis/cloudstack/src/test/java/org/jclouds/cloudstack/features/SecurityGroupClientLiveTest.java +++ b/apis/cloudstack/src/test/java/org/jclouds/cloudstack/features/SecurityGroupClientLiveTest.java @@ -171,7 +171,7 @@ public class SecurityGroupClientLiveTest extends BaseCloudStackClientLiveTest { public void testCreateVMInSecurityGroup() throws Exception { if (!securityGroupsSupported) return; - String defaultTemplate = (imageId != null && !"".equals(imageId)) ? imageId : null; + String defaultTemplate = template != null ? template.getImageId() : null; vm = VirtualMachineClientLiveTest.createVirtualMachineWithSecurityGroupInZone(zone.getId(), defaultTemplateOrPreferredInZone(defaultTemplate, client, zone.getId()), group.getId(), client, jobComplete, virtualMachineRunning); @@ -200,7 +200,7 @@ public class SecurityGroupClientLiveTest extends BaseCloudStackClientLiveTest { public void testCreateVMWithoutSecurityGroupAssignsDefault() throws Exception { if (!securityGroupsSupported) return; - String defaultTemplate = (imageId != null && !"".equals(imageId)) ? imageId : null; + String defaultTemplate = template != null ? template.getImageId() : null; VirtualMachine newVm = VirtualMachineClientLiveTest.createVirtualMachineWithOptionsInZone(DeployVirtualMachineOptions.NONE, zone.getId(), defaultTemplateOrPreferredInZone(defaultTemplate, client, zone.getId()), client, jobComplete, virtualMachineRunning); diff --git a/apis/cloudstack/src/test/java/org/jclouds/cloudstack/features/TemplateClientLiveTest.java b/apis/cloudstack/src/test/java/org/jclouds/cloudstack/features/TemplateClientLiveTest.java index 2df4cc8544..f2a9fd52c4 100644 --- a/apis/cloudstack/src/test/java/org/jclouds/cloudstack/features/TemplateClientLiveTest.java +++ b/apis/cloudstack/src/test/java/org/jclouds/cloudstack/features/TemplateClientLiveTest.java @@ -115,8 +115,8 @@ public class TemplateClientLiveTest extends BaseCloudStackClientLiveTest { assertNotNull(network); // Create a VM and stop it - String templateId = (imageId != null && !"".equals(imageId)) ? imageId : null; - vmForCreation = VirtualMachineClientLiveTest.createVirtualMachineInNetwork(network, templateId, client, jobComplete, virtualMachineRunning); + String defaultTemplate = template != null ? template.getImageId() : null; + vmForCreation = VirtualMachineClientLiveTest.createVirtualMachineInNetwork(network, defaultTemplate, client, jobComplete, virtualMachineRunning); assertTrue(jobComplete.apply(client.getVirtualMachineClient().stopVirtualMachine(vmForCreation.getId())), vmForCreation.toString()); // Work out the VM's volume diff --git a/apis/cloudstack/src/test/java/org/jclouds/cloudstack/features/VirtualMachineClientLiveTest.java b/apis/cloudstack/src/test/java/org/jclouds/cloudstack/features/VirtualMachineClientLiveTest.java index fd2a37c6b0..dc0b4fa8bb 100644 --- a/apis/cloudstack/src/test/java/org/jclouds/cloudstack/features/VirtualMachineClientLiveTest.java +++ b/apis/cloudstack/src/test/java/org/jclouds/cloudstack/features/VirtualMachineClientLiveTest.java @@ -181,8 +181,8 @@ public class VirtualMachineClientLiveTest extends BaseCloudStackClientLiveTest { @Test public void testCreateVirtualMachine() throws Exception { - String templateId = (imageId != null && !"".equals(imageId)) ? imageId : null; - vm = createVirtualMachine(client, templateId, jobComplete, virtualMachineRunning); + String defaultTemplate = template != null ? template.getImageId() : null; + vm = createVirtualMachine(client, defaultTemplate, jobComplete, virtualMachineRunning); if (vm.getPassword() != null) { conditionallyCheckSSH(); } @@ -195,12 +195,12 @@ public class VirtualMachineClientLiveTest extends BaseCloudStackClientLiveTest { public void testCreateVirtualMachineWithSpecificIp() throws Exception { skipIfNotGlobalAdmin(); - String templateId = (imageId != null && !"".equals(imageId)) ? imageId : null; + String defaultTemplate = template != null ? template.getImageId() : null; Network network = null; try { Template template = getOnlyElement( - client.getTemplateClient().listTemplates(ListTemplatesOptions.Builder.id(templateId))); + client.getTemplateClient().listTemplates(ListTemplatesOptions.Builder.id(defaultTemplate))); logger.info("Using template: " + template); Set allSafeNetworksInZone = adminClient.getNetworkClient().listNetworks( @@ -252,7 +252,7 @@ public class VirtualMachineClientLiveTest extends BaseCloudStackClientLiveTest { ipsToNetworks.put(ipAddress, network.getId()); vm = createVirtualMachineInNetworkWithIp( - adminClient, templateId, ImmutableSet.of(requiredNetwork, network), + adminClient, defaultTemplate, ImmutableSet.of(requiredNetwork, network), ipsToNetworks, adminJobComplete, adminVirtualMachineRunning); logger.info("Created VM: " + vm); diff --git a/apis/cloudstack/src/test/java/org/jclouds/cloudstack/functions/StaticNATVirtualMachineInNetworkLiveTest.java b/apis/cloudstack/src/test/java/org/jclouds/cloudstack/functions/StaticNATVirtualMachineInNetworkLiveTest.java index 629885262d..0710ae3596 100644 --- a/apis/cloudstack/src/test/java/org/jclouds/cloudstack/functions/StaticNATVirtualMachineInNetworkLiveTest.java +++ b/apis/cloudstack/src/test/java/org/jclouds/cloudstack/functions/StaticNATVirtualMachineInNetworkLiveTest.java @@ -64,7 +64,7 @@ public class StaticNATVirtualMachineInNetworkLiveTest extends NATClientLiveTest prefix += "nat"; try { network = find(client.getNetworkClient().listNetworks(), NetworkPredicates.supportsStaticNAT()); - String defaultTemplate = (imageId != null && !"".equals(imageId)) ? imageId : null; + String defaultTemplate = template != null ? template.getImageId() : null; vm = VirtualMachineClientLiveTest.createVirtualMachineInNetwork(network, defaultTemplateOrPreferredInZone(defaultTemplate, client, network.getZoneId()), client, jobComplete, virtualMachineRunning); diff --git a/apis/deltacloud/pom.xml b/apis/deltacloud/pom.xml index ff88685938..bfef9b8b6b 100644 --- a/apis/deltacloud/pom.xml +++ b/apis/deltacloud/pom.xml @@ -53,10 +53,7 @@ mockuser mockpassword - - - - + org.jclouds.deltacloud*;version="${project.version}" org.jclouds.compute.internal;version="${project.version}", @@ -120,9 +117,7 @@ ${test.deltacloud.build-version} ${test.deltacloud.identity} ${test.deltacloud.credential} - ${test.deltacloud.image-id} - ${test.deltacloud.image.login-user} - ${test.deltacloud.image.authenticate-sudo} + ${test.deltacloud.template} diff --git a/apis/ec2/pom.xml b/apis/ec2/pom.xml index 914f86d542..d7d6073714 100644 --- a/apis/ec2/pom.xml +++ b/apis/ec2/pom.xml @@ -39,10 +39,8 @@ ${test.aws.identity} ${test.aws.credential} - - - - + + hardwareId=m1.small,imageId=us-west-2/ami-38c64a08 org.jclouds.ec2*;version="${project.version}" org.jclouds.compute.internal;version="${project.version}", @@ -128,9 +126,8 @@ ${test.ec2.build-version} ${test.ec2.identity} ${test.ec2.credential} - ${test.ec2.image-id} - ${test.ec2.image.login-user} - ${test.ec2.image.authenticate-sudo} + ${test.ec2.template} + ${test.ec2.ebs-template} diff --git a/apis/ec2/src/test/java/org/jclouds/ec2/compute/EC2ComputeServiceLiveTest.java b/apis/ec2/src/test/java/org/jclouds/ec2/compute/EC2ComputeServiceLiveTest.java index f5ebb787ac..b204a073ef 100644 --- a/apis/ec2/src/test/java/org/jclouds/ec2/compute/EC2ComputeServiceLiveTest.java +++ b/apis/ec2/src/test/java/org/jclouds/ec2/compute/EC2ComputeServiceLiveTest.java @@ -29,8 +29,8 @@ import java.util.Set; import org.jclouds.compute.ComputeServiceContext; import org.jclouds.compute.domain.NodeMetadata; -import org.jclouds.compute.domain.OsFamily; import org.jclouds.compute.domain.Template; +import org.jclouds.compute.domain.TemplateBuilderSpec; import org.jclouds.compute.internal.BaseComputeServiceLiveTest; import org.jclouds.compute.options.TemplateOptions; import org.jclouds.compute.predicates.NodePredicates; @@ -41,7 +41,6 @@ import org.jclouds.ec2.EC2ApiMetadata; import org.jclouds.ec2.EC2Client; import org.jclouds.ec2.compute.options.EC2TemplateOptions; import org.jclouds.ec2.domain.BlockDevice; -import org.jclouds.ec2.domain.InstanceType; import org.jclouds.ec2.domain.IpProtocol; import org.jclouds.ec2.domain.KeyPair; import org.jclouds.ec2.domain.PublicIpInstanceIdPair; @@ -57,6 +56,7 @@ import org.jclouds.ec2.services.SecurityGroupClient; import org.jclouds.scriptbuilder.domain.Statements; import org.jclouds.sshj.config.SshjSshClientModule; import org.jclouds.util.InetAddresses2; +import org.testng.SkipException; import org.testng.annotations.Test; import com.google.common.base.Predicate; @@ -74,6 +74,8 @@ import com.google.inject.Module; @Test(groups = "live", singleThreaded = true) public class EC2ComputeServiceLiveTest extends BaseComputeServiceLiveTest { + protected TemplateBuilderSpec ebsTemplate; + public EC2ComputeServiceLiveTest() { provider = "ec2"; } @@ -227,12 +229,24 @@ public class EC2ComputeServiceLiveTest extends BaseComputeServiceLiveTest { } } + @Override + protected Properties setupProperties() { + Properties overrides = super.setupProperties(); + String ebsSpec = setIfTestSystemPropertyPresent(overrides, provider + ".ebs-template"); + if (ebsSpec != null) + ebsTemplate = TemplateBuilderSpec.parse(ebsSpec); + return overrides; + } + /** * Note we cannot use the micro size as it has no ephemeral space. */ - @Test(enabled = true) + @Test public void testMapEBS() throws Exception { - + if (ebsTemplate == null) { + throw new SkipException("Test cannot run without the parameter test." + provider + + ".ebs-template; this property should be in the format defined in TemplateBuilderSpec"); + } InstanceClient instanceClient = EC2Client.class.cast(view.unwrap(EC2ApiMetadata.CONTEXT_TOKEN).getApi()) .getInstanceServices(); @@ -242,8 +256,7 @@ public class EC2ComputeServiceLiveTest extends BaseComputeServiceLiveTest { String group = this.group + "e"; int volumeSize = 8; - final Template template = view.getComputeService().templateBuilder().hardwareId(InstanceType.M1_SMALL) - .osFamily(OsFamily.UBUNTU).osVersionMatches("10.04").imageDescriptionMatches(".*ebs.*").build(); + final Template template = view.getComputeService().templateBuilder().from(ebsTemplate).build(); Location zone = Iterables.find(view.getComputeService().listAssignableLocations(), new Predicate() { diff --git a/apis/ec2/src/test/java/org/jclouds/ec2/services/AMIClientLiveTest.java b/apis/ec2/src/test/java/org/jclouds/ec2/services/AMIClientLiveTest.java new file mode 100644 index 0000000000..15e112a6b6 --- /dev/null +++ b/apis/ec2/src/test/java/org/jclouds/ec2/services/AMIClientLiveTest.java @@ -0,0 +1,186 @@ +package org.jclouds.ec2.services; + +import static org.jclouds.ec2.options.DescribeImagesOptions.Builder.imageIds; +import static org.jclouds.ec2.options.RegisterImageBackedByEbsOptions.Builder.addNewBlockDevice; +import static org.testng.Assert.assertEquals; +import static org.testng.Assert.assertNotNull; + +import java.util.Iterator; +import java.util.Properties; +import java.util.Set; + +import org.jclouds.compute.ComputeService; +import org.jclouds.compute.RunNodesException; +import org.jclouds.compute.domain.NodeMetadata; +import org.jclouds.compute.domain.Template; +import org.jclouds.compute.domain.TemplateBuilderSpec; +import org.jclouds.compute.internal.BaseComputeServiceContextLiveTest; +import org.jclouds.compute.predicates.ImagePredicates; +import org.jclouds.ec2.EC2ApiMetadata; +import org.jclouds.ec2.domain.BlockDevice; +import org.jclouds.ec2.domain.Image; +import org.jclouds.ec2.domain.Image.ImageType; +import org.jclouds.ec2.domain.Reservation; +import org.jclouds.ec2.domain.RootDeviceType; +import org.jclouds.ec2.domain.RunningInstance; +import org.jclouds.ec2.domain.Snapshot; +import org.jclouds.ec2.services.AMIClient; +import org.testng.annotations.AfterClass; +import org.testng.annotations.BeforeClass; +import org.testng.annotations.Test; + +import com.google.common.base.Predicates; +import com.google.common.collect.ImmutableMap; +import com.google.common.collect.Iterables; +import com.google.common.collect.Sets; + +/** + * Tests behavior of {@code AMIClient} + * + * @author Adrian Cole + */ +@Test(groups = "live", singleThreaded = true) +public class AMIClientLiveTest extends BaseComputeServiceContextLiveTest { + private TemplateBuilderSpec ebsTemplate; + + public AMIClientLiveTest() { + provider = "ec2"; + } + + @Override + protected Properties setupProperties() { + Properties overrides = super.setupProperties(); + String ebsSpec = setIfTestSystemPropertyPresent(overrides, provider + ".ebs-template"); + if (ebsSpec != null) + ebsTemplate = TemplateBuilderSpec.parse(ebsSpec); + return overrides; + } + + protected AMIClient client; + + protected Set imagesToDeregister = Sets.newHashSet(); + protected Set snapshotsToDelete = Sets.newHashSet(); + protected String regionId; + protected String ebsBackedImageId; + protected String ebsBackedImageName = "jcloudstest1"; + + @Override + @BeforeClass(groups = { "integration", "live" }) + public void setupContext() { + super.setupContext(); + client = view.unwrap(EC2ApiMetadata.CONTEXT_TOKEN).getApi().getAMIServices(); + if (ebsTemplate != null) { + Template template = view.getComputeService().templateBuilder().from(ebsTemplate).build(); + regionId = template.getLocation().getId(); + for (Image image : client.describeImagesInRegion(regionId)) { + if (ebsBackedImageName.equals(image.getName())) + client.deregisterImageInRegion(regionId, image.getId()); + } + } + } + + public void testDescribeImageNotExists() { + assertEquals(client.describeImagesInRegion(null, imageIds("ami-cdf819a3")).size(), 0); + } + + @Test(expectedExceptions = IllegalArgumentException.class) + public void testDescribeImageBadId() { + client.describeImagesInRegion(null, imageIds("asdaasdsa")); + } + + public void testDescribeImages() { + for (String region : view.unwrap(EC2ApiMetadata.CONTEXT_TOKEN).getApi().getAvailabilityZoneAndRegionServices() + .describeRegions().keySet()) { + Set allResults = client.describeImagesInRegion(region); + assertNotNull(allResults); + assert allResults.size() >= 2 : allResults.size(); + Iterator iterator = allResults.iterator(); + String id1 = iterator.next().getId(); + String id2 = iterator.next().getId(); + Set twoResults = client.describeImagesInRegion(region, imageIds(id1, id2)); + assertNotNull(twoResults); + assertEquals(twoResults.size(), 2); + iterator = twoResults.iterator(); + assertEquals(iterator.next().getId(), id1); + assertEquals(iterator.next().getId(), id2); + } + } + + @Test + public void testCreateAndListEBSBackedImage() throws Exception { + ComputeService computeService = view.getComputeService(); + Snapshot snapshot = createSnapshot(computeService); + + // List of images before... + int sizeBefore = computeService.listImages().size(); + + // Register a new image... + ebsBackedImageId = client.registerUnixImageBackedByEbsInRegion(regionId, ebsBackedImageName, snapshot.getId(), + addNewBlockDevice("/dev/sda2", "myvirtual", 1).withDescription("adrian")); + imagesToDeregister.add(ebsBackedImageId); + final Image ebsBackedImage = Iterables.getOnlyElement(client.describeImagesInRegion(regionId, + imageIds(ebsBackedImageId))); + assertEquals(ebsBackedImage.getName(), ebsBackedImageName); + assertEquals(ebsBackedImage.getImageType(), ImageType.MACHINE); + assertEquals(ebsBackedImage.getRootDeviceType(), RootDeviceType.EBS); + assertEquals(ebsBackedImage.getRootDeviceName(), "/dev/sda1"); + assertEquals(ebsBackedImage.getDescription(), "adrian"); + assertEquals( + ebsBackedImage.getEbsBlockDevices().entrySet(), + ImmutableMap.of("/dev/sda1", new Image.EbsBlockDevice(snapshot.getId(), snapshot.getVolumeSize(), true), + "/dev/sda2", new Image.EbsBlockDevice(null, 1, false)).entrySet()); + + // This is the suggested method to ensure the new image ID is inserted + // into the cache + // (suggested by adriancole_ on #jclouds) + computeService.templateBuilder().imageId(ebsBackedImage.getRegion() + "/" + ebsBackedImageId).build(); + + // List of images after - should be one larger than before + Set after = computeService.listImages(); + assertEquals(after.size(), sizeBefore + 1); + + // Detailed check: filter for the AMI ID + Iterable filtered = Iterables.filter(after, + ImagePredicates.idEquals(ebsBackedImage.getRegion() + "/" + ebsBackedImageId)); + assertEquals(Iterables.size(filtered), 1); + } + + // Fires up an instance, finds its root volume ID, takes a snapshot, then + // terminates the instance. + private Snapshot createSnapshot(ComputeService computeService) throws RunNodesException { + Template template = computeService.templateBuilder().from(ebsTemplate).build(); + regionId = template.getLocation().getId(); + Set nodes = computeService.createNodesInGroup("jcloudstest", 1, template); + try { + String instanceId = Iterables.getOnlyElement(nodes).getProviderId(); + Reservation reservation = Iterables.getOnlyElement(view + .unwrap(EC2ApiMetadata.CONTEXT_TOKEN).getApi().getInstanceServices() + .describeInstancesInRegion(regionId, instanceId)); + RunningInstance instance = Iterables.getOnlyElement(reservation); + BlockDevice device = instance.getEbsBlockDevices().get("/dev/sda1"); + Snapshot snapshot = view.unwrap(EC2ApiMetadata.CONTEXT_TOKEN).getApi().getElasticBlockStoreServices() + .createSnapshotInRegion(regionId, device.getVolumeId()); + snapshotsToDelete.add(snapshot.getId()); + return snapshot; + } finally { + computeService.destroyNodesMatching(Predicates.in(nodes)); + } + } + + @Test(dependsOnMethods = "testCreateAndListEBSBackedImage") + public void testGetLaunchPermissionForImage() { + System.out.println(client.getLaunchPermissionForImageInRegion(regionId, ebsBackedImageId)); + } + + @Override + @AfterClass(groups = { "integration", "live" }) + protected void tearDownContext() { + for (String imageId : imagesToDeregister) + client.deregisterImageInRegion(regionId, imageId); + for (String snapshotId : snapshotsToDelete) + view.unwrap(EC2ApiMetadata.CONTEXT_TOKEN).getApi().getElasticBlockStoreServices() + .deleteSnapshotInRegion(regionId, snapshotId); + super.tearDownContext(); + } + +} diff --git a/apis/elasticstack/pom.xml b/apis/elasticstack/pom.xml index f550178f42..c2e8d7e791 100644 --- a/apis/elasticstack/pom.xml +++ b/apis/elasticstack/pom.xml @@ -53,10 +53,7 @@ FIXME FIXME - 38df0986-4d85-4b76-b502-3878ffc80161 - - - + imageId=38df0986-4d85-4b76-b502-3878ffc80161 org.jclouds.elasticstack*;version="${project.version}" org.jclouds.compute.internal;version="${project.version}", @@ -120,9 +117,7 @@ ${test.elasticstack.build-version} ${test.elasticstack.identity} ${test.elasticstack.credential} - ${test.elasticstack.image-id} - ${test.elasticstack.image.login-user} - ${test.elasticstack.image.authenticate-sudo} + ${test.elasticstack.template} diff --git a/apis/elasticstack/src/test/java/org/jclouds/elasticstack/ElasticStackClientLiveTest.java b/apis/elasticstack/src/test/java/org/jclouds/elasticstack/ElasticStackClientLiveTest.java index 54c9fd1709..1eea1798ea 100644 --- a/apis/elasticstack/src/test/java/org/jclouds/elasticstack/ElasticStackClientLiveTest.java +++ b/apis/elasticstack/src/test/java/org/jclouds/elasticstack/ElasticStackClientLiveTest.java @@ -55,7 +55,6 @@ import org.testng.annotations.Test; import com.google.common.base.Predicate; import com.google.common.base.Predicates; -import com.google.common.base.Strings; import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableSet; import com.google.common.net.HostAndPort; @@ -83,6 +82,7 @@ public class ElasticStackClientLiveTest protected RestContext cloudStackContext; protected Predicate socketTester; protected Predicate driveNotClaimed; + protected String imageId; @BeforeGroups(groups = { "integration", "live" }) @Override @@ -96,7 +96,7 @@ public class ElasticStackClientLiveTest socketTester = new RetryablePredicate(new InetSocketAddressConnect(), maxDriveImageTime, 1, TimeUnit.SECONDS); - if (Strings.emptyToNull(imageId) == null) { + if (template == null || template.getImageId() == null) { imageId = view.getComputeService().templateBuilder().build().getImage().getId(); } } diff --git a/apis/eucalyptus/pom.xml b/apis/eucalyptus/pom.xml index f1c72e0e0e..67848f5203 100644 --- a/apis/eucalyptus/pom.xml +++ b/apis/eucalyptus/pom.xml @@ -39,10 +39,8 @@ FIXME_IDENTITY FIXME_CREDENTIAL - - - - + + org.jclouds.eucalyptus*;version="${project.version}" org.jclouds.compute.internal;version="${project.version}", @@ -115,9 +113,8 @@ ${test.eucalyptus.build-version} ${test.eucalyptus.identity} ${test.eucalyptus.credential} - ${test.eucalyptus.image-id} - ${test.eucalyptus.image.login-user} - ${test.eucalyptus.image.authenticate-sudo} + ${test.eucalyptus.template} + ${test.eucalyptus.ebs-template} diff --git a/apis/nova/pom.xml b/apis/nova/pom.xml index a097a1c10d..5d6ac6c25c 100644 --- a/apis/nova/pom.xml +++ b/apis/nova/pom.xml @@ -39,9 +39,7 @@ FIXME_IDENTITY FIXME_CREDENTIALS - - - + @@ -122,9 +120,7 @@ ${test.nova.build-version} ${test.nova.identity} ${test.nova.credential} - ${test.nova.image-id} - ${test.nova.image.login-user} - ${test.nova.image.authenticate-sudo} + ${test.nova.template} ${test.ssh.keyfile.public} ${test.ssh.keyfile.private} diff --git a/apis/nova/src/test/java/org/jclouds/openstack/nova/NovaClientLiveTest.java b/apis/nova/src/test/java/org/jclouds/openstack/nova/NovaClientLiveTest.java index 769a3afc45..397ee7e907 100644 --- a/apis/nova/src/test/java/org/jclouds/openstack/nova/NovaClientLiveTest.java +++ b/apis/nova/src/test/java/org/jclouds/openstack/nova/NovaClientLiveTest.java @@ -214,7 +214,7 @@ public class NovaClientLiveTest extends BaseComputeServiceContextLiveTest { while (server == null) { String serverName = serverPrefix + "createserver" + new SecureRandom().nextInt(); try { - server = client.createServer(serverName, imageId, flavorId, withFile("/etc/jclouds.txt", + server = client.createServer(serverName, template.getImageId(), flavorId, withFile("/etc/jclouds.txt", "nova".getBytes()).withMetadata(metadata)); } catch (UndeclaredThrowableException e) { HttpResponseException htpe = (HttpResponseException) e.getCause().getCause(); diff --git a/apis/openstack-nova-ec2/pom.xml b/apis/openstack-nova-ec2/pom.xml index 8af5b62e4c..94fba780c2 100644 --- a/apis/openstack-nova-ec2/pom.xml +++ b/apis/openstack-nova-ec2/pom.xml @@ -39,10 +39,8 @@ FIXME_IDENTITY FIXME_CREDENTIAL - - - - + + org.jclouds.openstack.nova.ec2*;version="${project.version}" org.jclouds.compute.internal;version="${project.version}", @@ -120,9 +118,8 @@ ${test.openstack-nova-ec2.build-version} ${test.openstack-nova-ec2.identity} ${test.openstack-nova-ec2.credential} - ${test.openstack-nova-ec2.image-id} - ${test.openstack-nova-ec2.image.login-user} - ${test.openstack-nova-ec2.image.authenticate-sudo} + ${test.openstack-nova-ec2.template} + ${test.openstack-nova-ec2.ebs-template} diff --git a/apis/openstack-nova/pom.xml b/apis/openstack-nova/pom.xml index 999fc05859..44935e33af 100644 --- a/apis/openstack-nova/pom.xml +++ b/apis/openstack-nova/pom.xml @@ -41,9 +41,7 @@ FIXME_IDENTITY FIXME_CREDENTIALS - - - + false passwordCredentials @@ -130,9 +128,7 @@ ${test.openstack-nova.build-version} ${test.openstack-nova.identity} ${test.openstack-nova.credential} - ${test.openstack-nova.image-id} - ${test.openstack-nova.image.login-user} - ${test.openstack-nova.image.authenticate-sudo} + ${test.openstack-nova.template} ${test.jclouds.openstack-nova.auto-allocate-floating-ips} ${test.jclouds.keystone.credential-type} diff --git a/apis/vcloud/pom.xml b/apis/vcloud/pom.xml index ddfce7d368..4f23e0f9a3 100644 --- a/apis/vcloud/pom.xml +++ b/apis/vcloud/pom.xml @@ -39,10 +39,7 @@ FIXME FIXME - - - - + org.jclouds.vcloud*;version="${project.version}" org.jclouds.compute.internal;version="${project.version}", @@ -118,9 +115,7 @@ ${test.vcloud.build-version} ${test.vcloud.identity} ${test.vcloud.credential} - ${test.vcloud.image-id} - ${test.vcloud.image.login-user} - ${test.vcloud.image.authenticate-sudo} + ${test.vcloud.template} diff --git a/common/aws/src/test/java/org/jclouds/aws/handlers/ParseAWSErrorFromXmlContentTest.java b/common/aws/src/test/java/org/jclouds/aws/handlers/ParseAWSErrorFromXmlContentTest.java index af31a61acc..85c6f90ab3 100644 --- a/common/aws/src/test/java/org/jclouds/aws/handlers/ParseAWSErrorFromXmlContentTest.java +++ b/common/aws/src/test/java/org/jclouds/aws/handlers/ParseAWSErrorFromXmlContentTest.java @@ -56,7 +56,13 @@ public class ParseAWSErrorFromXmlContentTest { assertCodeMakes("GET", URI.create("https://amazonaws.com/foo"), 400, "", "Monster.NotFound", ResourceNotFoundException.class); } - + + @Test + public void test400WithCloudBridgeNotFoundSetsResourceNotFoundException() { + assertCodeMakes("POST", URI.create("https://api.greenqloud.com/"), 400, "", + "Client.InvalidInstanceID.NotFound", ResourceNotFoundException.class); + } + @Test public void test400WithInvalidIdIllegalArgumentException() { assertCodeMakes("POST", URI.create("https://ec2.us-east-1.amazonaws.com"), 400, "HTTP/1.1 400", "", @@ -166,7 +172,7 @@ public class ParseAWSErrorFromXmlContentTest { @Test public void test400WithCloudBridgeAuthFailureSetsAuthorizationException() { - assertCodeMakes("GET", URI.create("https://amazonaws.com/foo"), 400, "", + assertCodeMakes("POST", URI.create("https://api.greenqloud.com/"), 400, "", "Client.AuthFailure", AuthorizationException.class); } diff --git a/compute/src/main/java/org/jclouds/compute/domain/TemplateBuilderSpec.java b/compute/src/main/java/org/jclouds/compute/domain/TemplateBuilderSpec.java index 1192374482..604aa646bf 100644 --- a/compute/src/main/java/org/jclouds/compute/domain/TemplateBuilderSpec.java +++ b/compute/src/main/java/org/jclouds/compute/domain/TemplateBuilderSpec.java @@ -152,7 +152,7 @@ public class TemplateBuilderSpec implements Serializable { .put("authenticateSudo", new AuthenticateSudoParser()) .put("locationId", new LocationIdParser()) .build(); - + @VisibleForTesting String hardwareId; @VisibleForTesting @@ -553,4 +553,63 @@ public class TemplateBuilderSpec implements Serializable { } } + public String getHardwareId() { + return hardwareId; + } + + public Double getMinCores() { + return minCores; + } + + public Integer getMinRam() { + return minRam; + } + + public String getHypervisorMatches() { + return hypervisorMatches; + } + + public String getImageId() { + return imageId; + } + + public String getImageNameMatches() { + return imageNameMatches; + } + + public OsFamily getOsFamily() { + return osFamily; + } + + public String getOsVersionMatches() { + return osVersionMatches; + } + + public Boolean getOs64Bit() { + return os64Bit; + } + + public String getOsArchMatches() { + return osArchMatches; + } + + public String getOsDescriptionMatches() { + return osDescriptionMatches; + } + + public String getLoginUser() { + return loginUser; + } + + public Boolean getAuthenticateSudo() { + return authenticateSudo; + } + + public String getLocationId() { + return locationId; + } + + public String getSpecification() { + return specification; + } } diff --git a/compute/src/test/java/org/jclouds/compute/internal/BaseGenericComputeServiceContextLiveTest.java b/compute/src/test/java/org/jclouds/compute/internal/BaseGenericComputeServiceContextLiveTest.java index c26b11f93d..bc7a2ebd72 100644 --- a/compute/src/test/java/org/jclouds/compute/internal/BaseGenericComputeServiceContextLiveTest.java +++ b/compute/src/test/java/org/jclouds/compute/internal/BaseGenericComputeServiceContextLiveTest.java @@ -24,6 +24,7 @@ import java.util.concurrent.ConcurrentHashMap; import org.jclouds.apis.BaseViewLiveTest; import org.jclouds.compute.ComputeServiceContext; +import org.jclouds.compute.domain.TemplateBuilderSpec; import org.jclouds.domain.LoginCredentials; import org.jclouds.domain.LoginCredentials.Builder; import org.jclouds.io.CopyInputStreamInputSupplierMap; @@ -41,9 +42,7 @@ import com.google.inject.util.Modules; */ public abstract class BaseGenericComputeServiceContextLiveTest extends BaseViewLiveTest { - protected String imageId; - protected String loginUser; - protected String authenticateSudo; + protected TemplateBuilderSpec template; protected LoginCredentials loginCredentials = LoginCredentials.builder().user("root").build(); // isolate tests from eachother, as default credentialStore is static @@ -53,19 +52,19 @@ public abstract class BaseGenericComputeServiceContextLiveTest userPass = Splitter.on(':').split(loginUser); - Builder loginCredentialsBuilder = LoginCredentials.builder(); - loginCredentialsBuilder.user(Iterables.get(userPass, 0)); - if (Iterables.size(userPass) == 2) - loginCredentialsBuilder.password(Iterables.get(userPass, 1)); - if (authenticateSudo != null) - loginCredentialsBuilder.authenticateSudo(Boolean.valueOf(authenticateSudo)); - loginCredentials = loginCredentialsBuilder.build(); + String spec = setIfTestSystemPropertyPresent(overrides, provider + ".template"); + if (spec != null) { + template = TemplateBuilderSpec.parse(spec); + if (template.getLoginUser() != null) { + Iterable userPass = Splitter.on(':').split(template.getLoginUser()); + Builder loginCredentialsBuilder = LoginCredentials.builder(); + loginCredentialsBuilder.user(Iterables.get(userPass, 0)); + if (Iterables.size(userPass) == 2) + loginCredentialsBuilder.password(Iterables.get(userPass, 1)); + if (template.getAuthenticateSudo() != null) + loginCredentialsBuilder.authenticateSudo(template.getAuthenticateSudo()); + loginCredentials = loginCredentialsBuilder.build(); + } } return overrides; } diff --git a/compute/src/test/java/org/jclouds/compute/internal/BaseTemplateBuilderLiveTest.java b/compute/src/test/java/org/jclouds/compute/internal/BaseTemplateBuilderLiveTest.java index d79e9e5ea0..cb9505e537 100644 --- a/compute/src/test/java/org/jclouds/compute/internal/BaseTemplateBuilderLiveTest.java +++ b/compute/src/test/java/org/jclouds/compute/internal/BaseTemplateBuilderLiveTest.java @@ -261,9 +261,9 @@ public abstract class BaseTemplateBuilderLiveTest extends BaseComputeServiceCont ComputeServiceContext context = null; try { Properties overrides = setupProperties(); - String login = loginUser != null ? loginUser : "foo:bar"; + String login = template != null && template.getLoginUser() != null ? template.getLoginUser() : "foo:bar"; overrides.setProperty(propertyKey + ".image.login-user", login); - boolean auth = authenticateSudo != null ? Boolean.valueOf(authenticateSudo) : true; + boolean auth = template != null && template.getAuthenticateSudo() != null ? template.getAuthenticateSudo() : true; overrides.setProperty(propertyKey + ".image.authenticate-sudo", auth + ""); context = createView(overrides, ImmutableSet.of(credentialStoreModule)); diff --git a/labs/aws-elb/pom.xml b/labs/aws-elb/pom.xml index d8ff4fffe4..faf1732a9b 100644 --- a/labs/aws-elb/pom.xml +++ b/labs/aws-elb/pom.xml @@ -45,7 +45,7 @@ ${test.aws.identity} ${test.aws.credential} - + org.jclouds.aws.elb*;version="${project.version}" org.jclouds*;version="${project.version}",* @@ -134,7 +134,7 @@ ${test.aws-elb.compute.api-version} ${test.aws-elb.compute.identity} ${test.aws-elb.compute.credential} - ${test.aws-elb.compute.image-id} + ${test.aws-elb.compute.template} diff --git a/labs/carrenza-vcloud-director/pom.xml b/labs/carrenza-vcloud-director/pom.xml index f0a329b573..490dd0f0cc 100644 --- a/labs/carrenza-vcloud-director/pom.xml +++ b/labs/carrenza-vcloud-director/pom.xml @@ -39,9 +39,7 @@ 464915 FIXME_IDENTITY FIXME_CREDENTIAL - - - + @@ -121,9 +119,7 @@ ${test.carrenza-vcloud-director.build-version} ${test.carrenza-vcloud-director.identity} ${test.carrenza-vcloud-director.credential} - ${test.carrenza-vcloud-director.image-id} - ${test.carrenza-vcloud-director.image.login-user} - ${test.carrenza-vcloud-director.image.authenticate-sudo} + ${test.carrenza-vcloud-director.template} ${test.carrenza-vcloud-director.catalog-id} ${test.carrenza-vcloud-director.media-id} ${test.carrenza-vcloud-director.vapptemplate-id} diff --git a/labs/elb/pom.xml b/labs/elb/pom.xml index b8b7420e09..48649e2102 100644 --- a/labs/elb/pom.xml +++ b/labs/elb/pom.xml @@ -46,7 +46,7 @@ ${test.aws.identity} ${test.aws.credential} - + org.jclouds.elb*;version="${project.version}" org.jclouds*;version="${project.version}",* @@ -134,7 +134,7 @@ ${test.elb.compute.build-version} ${test.elb.compute.identity} ${test.elb.compute.credential} - ${test.elb.compute.image-id} + ${test.elb.compute.template} diff --git a/labs/glesys/pom.xml b/labs/glesys/pom.xml index d95f776971..bc2b6772d7 100644 --- a/labs/glesys/pom.xml +++ b/labs/glesys/pom.xml @@ -39,10 +39,7 @@ FIXME FIXME - - - - + org.jclouds.glesys*;version="${project.version}" org.jclouds*;version="${project.version}",* @@ -102,9 +99,7 @@ ${test.glesys.build-version} ${test.glesys.identity} ${test.glesys.credential} - ${test.glesys.image-id} - ${test.glesys.image.login-user} - ${test.glesys.image.authenticate-sudo} + ${test.glesys.template} diff --git a/labs/greenqloud-compute/pom.xml b/labs/greenqloud-compute/pom.xml index 68750a9ad8..698f58ef82 100644 --- a/labs/greenqloud-compute/pom.xml +++ b/labs/greenqloud-compute/pom.xml @@ -39,7 +39,8 @@ ${test.greenqloud.identity} ${test.greenqloud.credential} - + + osFamily=UBUNTU,osVersionMatches=1[012].[01][04],os64Bit=true org.jclouds.greenqloud.compute*;version="${project.version}" @@ -114,7 +115,7 @@ ${test.greenqloud-compute.build-version} ${test.greenqloud-compute.identity} ${test.greenqloud-compute.credential} - ${test.greenqloud-compute.image-id} + ${test.greenqloud-compute.template} diff --git a/labs/opsource-servers/pom.xml b/labs/opsource-servers/pom.xml index 7d2a0da341..71011b0d7a 100644 --- a/labs/opsource-servers/pom.xml +++ b/labs/opsource-servers/pom.xml @@ -39,9 +39,7 @@ FIXME_USERNAME FIXME_PASSWORD - - - + org.jclouds.vcloud.director.v1_5*;version="${project.version}" org.jclouds.compute.internal;version="${project.version}", @@ -107,9 +105,7 @@ ${test.opsource-servers.build-version} ${test.opsource-servers.identity} ${test.opsource-servers.credential} - ${test.opsource-servers.image-id} - ${test.opsource-servers.image.login-user} - ${test.opsource-servers.image.authenticate-sudo} + ${test.opsource-servers.template} diff --git a/labs/rackspace-cloudservers-us/pom.xml b/labs/rackspace-cloudservers-us/pom.xml index f5cd0e5016..cea349d38f 100644 --- a/labs/rackspace-cloudservers-us/pom.xml +++ b/labs/rackspace-cloudservers-us/pom.xml @@ -39,10 +39,7 @@ ${test.rackspace-us.identity} ${test.rackspace-us.credential} - - - - + org.jclouds.rackspace.cloudservers.us*;version="${project.version}" org.jclouds.compute.internal;version="${project.version}", @@ -134,9 +131,7 @@ ${test.rackspace-cloudservers-us.build-version} ${test.rackspace-cloudservers-us.identity} ${test.rackspace-cloudservers-us.credential} - ${test.rackspace-cloudservers-us.image-id} - ${test.rackspace-cloudservers-us.image.login-user} - ${test.rackspace-cloudservers-us.image.authenticate-sudo} + ${test.rackspace-cloudservers-us.template} diff --git a/labs/savvis-symphonyvpdc/pom.xml b/labs/savvis-symphonyvpdc/pom.xml index 6b2b01b072..c69a761d1c 100644 --- a/labs/savvis-symphonyvpdc/pom.xml +++ b/labs/savvis-symphonyvpdc/pom.xml @@ -39,7 +39,7 @@ 2.3 FIXME FIXME - + FIXME FIXME FIXME @@ -112,7 +112,7 @@ ${test.savvis-symphonyvpdc.build-version} ${test.savvis-symphonyvpdc.identity} ${test.savvis-symphonyvpdc.credential} - ${test.savvis-symphonyvpdc.image-id} + ${test.savvis-symphonyvpdc.template} ${test.savvis-symphonyvpdc.vdc-email} ${test.savvis-symphonyvpdc.loginUser} ${test.savvis-symphonyvpdc.loginPassword} diff --git a/labs/vcloud-director/pom.xml b/labs/vcloud-director/pom.xml index 5d01a18b84..27a8807515 100644 --- a/labs/vcloud-director/pom.xml +++ b/labs/vcloud-director/pom.xml @@ -39,9 +39,7 @@ 1.5.0.464915 FIXME_USERNAME_WHICH_MIGHT_BE_EMAIL@JClouds FIXME_PASSWORD - - - + @@ -125,9 +123,7 @@ ${test.vcloud-director.build-version} ${test.vcloud-director.identity} ${test.vcloud-director.credential} - ${test.vcloud-director.image-id} - ${test.vcloud-director.image.login-user} - ${test.vcloud-director.image.authenticate-sudo} + ${test.vcloud-director.template} ${test.vcloud-director.catalog-id} ${test.vcloud-director.media-id} ${test.vcloud-director.vapptemplate-id} diff --git a/labs/virtualbox/pom.xml b/labs/virtualbox/pom.xml index 3e5a1af7b9..7ef15905c6 100644 --- a/labs/virtualbox/pom.xml +++ b/labs/virtualbox/pom.xml @@ -40,10 +40,7 @@ 4.1.8r75467 administrator 12345 - test-ubuntu-11.10-i386 - toor:password - true - + imageId=test-ubuntu-11.10-i386,loginUser=toor:password,authenticateSudo=true org.jclouds.virtualbox*;version="${project.version}" org.jclouds*;version="${project.version}",* @@ -145,9 +142,7 @@ ${test.virtualbox.build-version} ${test.virtualbox.identity} ${test.virtualbox.credential} - ${test.virtualbox.image-id} - ${test.virtualbox.image.login-user} - ${test.virtualbox.image.authenticate-sudo} + ${test.virtualbox.template} diff --git a/labs/virtualbox/src/test/java/org/jclouds/virtualbox/BaseVirtualBoxClientLiveTest.java b/labs/virtualbox/src/test/java/org/jclouds/virtualbox/BaseVirtualBoxClientLiveTest.java index 1f7915f84d..b2c2c45213 100644 --- a/labs/virtualbox/src/test/java/org/jclouds/virtualbox/BaseVirtualBoxClientLiveTest.java +++ b/labs/virtualbox/src/test/java/org/jclouds/virtualbox/BaseVirtualBoxClientLiveTest.java @@ -139,8 +139,7 @@ public class BaseVirtualBoxClientLiveTest extends BaseComputeServiceContextLiveT Template template = view.getComputeService().templateBuilder().build(); checkNotNull(mastersCache.apply(template.getImage())); - imageId = template.getImage().getId(); - masterVmName = VIRTUALBOX_IMAGE_PREFIX + imageId; + masterVmName = VIRTUALBOX_IMAGE_PREFIX + template.getImage().getId(); isosDir = workingDir + File.separator + "isos"; hostVersion = Iterables.get(Splitter.on('r').split(view.utils().injector().getInstance(Key.get(String.class, BuildVersion.class))), 0); @@ -174,7 +173,7 @@ public class BaseVirtualBoxClientLiveTest extends BaseComputeServiceContextLiveT } public MasterSpec getMasterSpecForTest() { - String masterName = "jclouds-image-0x0-" + imageId; + String masterName = "jclouds-image-0x0-" + template.getImageId(); StorageController ideController = StorageController .builder() diff --git a/providers/aws-ec2/pom.xml b/providers/aws-ec2/pom.xml index 3dc1cf6d08..3ea898198b 100644 --- a/providers/aws-ec2/pom.xml +++ b/providers/aws-ec2/pom.xml @@ -39,10 +39,8 @@ ${test.aws.identity} ${test.aws.credential} - - - - + + hardwareId=m1.small,imageId=us-west-2/ami-38c64a08 org.jclouds.aws.ec2*;version="${project.version}" org.jclouds.compute.internal;version="${project.version}", @@ -137,9 +135,8 @@ ${test.aws-ec2.build-version} ${test.aws-ec2.identity} ${test.aws-ec2.credential} - ${test.aws-ec2.image-id} - ${test.aws-ec2.image.login-user} - ${test.aws-ec2.image.authenticate-sudo} + ${test.aws-ec2.template} + ${test.aws-ec2.ebs-template} diff --git a/providers/aws-ec2/src/test/java/org/jclouds/aws/ec2/services/AMIClientLiveTest.java b/providers/aws-ec2/src/test/java/org/jclouds/aws/ec2/services/AMIClientLiveTest.java deleted file mode 100644 index 9cf363c4ee..0000000000 --- a/providers/aws-ec2/src/test/java/org/jclouds/aws/ec2/services/AMIClientLiveTest.java +++ /dev/null @@ -1,275 +0,0 @@ -/** - * Licensed to jclouds, Inc. (jclouds) under one or more - * contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. jclouds licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.jclouds.aws.ec2.services; - -import static org.jclouds.aws.ec2.options.AWSDescribeImagesOptions.Builder.filters; -import static org.jclouds.aws.ec2.options.AWSDescribeImagesOptions.Builder.imageIds; -import static org.jclouds.ec2.options.RegisterImageBackedByEbsOptions.Builder.addNewBlockDevice; -import static org.jclouds.ec2.options.RegisterImageOptions.Builder.withDescription; -import static org.testng.Assert.assertEquals; -import static org.testng.Assert.assertNotNull; - -import java.util.Iterator; -import java.util.Set; - -import org.jclouds.aws.domain.Region; -import org.jclouds.aws.ec2.AWSEC2ApiMetadata; -import org.jclouds.compute.ComputeService; -import org.jclouds.compute.RunNodesException; -import org.jclouds.compute.domain.NodeMetadata; -import org.jclouds.compute.domain.Template; -import org.jclouds.compute.internal.BaseComputeServiceContextLiveTest; -import org.jclouds.compute.predicates.ImagePredicates; -import org.jclouds.ec2.domain.BlockDevice; -import org.jclouds.ec2.domain.Image; -import org.jclouds.ec2.domain.Reservation; -import org.jclouds.ec2.domain.RootDeviceType; -import org.jclouds.ec2.domain.RunningInstance; -import org.jclouds.ec2.domain.Snapshot; -import org.jclouds.ec2.domain.Image.ImageType; -import org.jclouds.ec2.services.AMIClient; -import org.testng.annotations.AfterTest; -import org.testng.annotations.BeforeClass; -import org.testng.annotations.Test; - -import com.google.common.base.Predicates; -import com.google.common.collect.ImmutableMap; -import com.google.common.collect.ImmutableMultimap; -import com.google.common.collect.ImmutableSet; -import com.google.common.collect.Iterables; -import com.google.common.collect.Sets; - -/** - * Tests behavior of {@code AMIClient} - * - * @author Adrian Cole - */ -@Test(groups = "live", singleThreaded = true) -public class AMIClientLiveTest extends BaseComputeServiceContextLiveTest { - public AMIClientLiveTest() { - provider = "aws-ec2"; - // TODO: parameterize this. - imageId = "ami-cdf819a4"; - } - - private AMIClient client; - private static final String DEFAULT_MANIFEST = "adrianimages/image.manifest.xml"; - private static final String DEFAULT_SNAPSHOT = "TODO"; - - private Set imagesToDeregister = Sets.newHashSet(); - private Set snapshotsToDelete = Sets.newHashSet(); - - @Override - @BeforeClass(groups = { "integration", "live" }) - public void setupContext() { - super.setupContext(); - client = view.unwrap(AWSEC2ApiMetadata.CONTEXT_TOKEN).getApi().getAMIServices(); - } - - public void testDescribeImageNotExists() { - assertEquals(client.describeImagesInRegion(null, imageIds("ami-cdf819a3")).size(), 0); - } - - @Test(expectedExceptions = IllegalArgumentException.class) - public void testDescribeImageBadId() { - client.describeImagesInRegion(null, imageIds("asdaasdsa")); - } - - public void testDescribeImages() { - for (String region : view.unwrap(AWSEC2ApiMetadata.CONTEXT_TOKEN).getApi().getAvailabilityZoneAndRegionServices().describeRegions().keySet()) { - Set allResults = client.describeImagesInRegion(region); - assertNotNull(allResults); - assert allResults.size() >= 2 : allResults.size(); - Iterator iterator = allResults.iterator(); - String id1 = iterator.next().getId(); - String id2 = iterator.next().getId(); - Set twoResults = client.describeImagesInRegion(region, imageIds(id1, id2)); - assertNotNull(twoResults); - assertEquals(twoResults.size(), 2); - iterator = twoResults.iterator(); - assertEquals(iterator.next().getId(), id1); - assertEquals(iterator.next().getId(), id2); - } - } - - public void testDescribeImagesCC() { - Set ccResults = client.describeImagesInRegion(Region.US_EAST_1, filters( - ImmutableMultimap. builder()// - .put("virtualization-type", "hvm")// - .put("architecture", "x86_64")// - .putAll("owner-id", ImmutableSet. of("137112412989", "099720109477"))// - .put("hypervisor", "xen")// - .put("state", "available")// - .put("image-type", "machine")// - .put("root-device-type", "ebs")// - .build()).ownedBy("137112412989", "099720109477")); - assertNotNull(ccResults); - assert (ccResults.size() >= 34) : ccResults; - } - - @Test(enabled = false) - public void testRegisterImageFromManifest() { - String imageRegisteredId = client.registerImageFromManifestInRegion(null, "jcloudstest1", DEFAULT_MANIFEST); - imagesToDeregister.add(imageRegisteredId); - Image imageRegisteredFromManifest = Iterables.getOnlyElement(client.describeImagesInRegion(null, - imageIds(imageRegisteredId))); - assertEquals(imageRegisteredFromManifest.getName(), "jcloudstest1"); - assertEquals(imageRegisteredFromManifest.getImageLocation(), DEFAULT_MANIFEST); - assertEquals(imageRegisteredFromManifest.getImageType(), ImageType.MACHINE); - assertEquals(imageRegisteredFromManifest.getRootDeviceType(), RootDeviceType.INSTANCE_STORE); - assertEquals(imageRegisteredFromManifest.getRootDeviceName(), "/dev/sda1"); - } - - @Test(enabled = false) - public void testRegisterImageFromManifestOptions() { - String imageRegisteredWithOptionsId = client.registerImageFromManifestInRegion(null, "jcloudstest2", - DEFAULT_MANIFEST, withDescription("adrian")); - imagesToDeregister.add(imageRegisteredWithOptionsId); - Image imageRegisteredFromManifestWithOptions = Iterables.getOnlyElement(client.describeImagesInRegion(null, - imageIds(imageRegisteredWithOptionsId))); - assertEquals(imageRegisteredFromManifestWithOptions.getName(), "jcloudstest2"); - assertEquals(imageRegisteredFromManifestWithOptions.getImageLocation(), DEFAULT_MANIFEST); - assertEquals(imageRegisteredFromManifestWithOptions.getImageType(), ImageType.MACHINE); - assertEquals(imageRegisteredFromManifestWithOptions.getRootDeviceType(), RootDeviceType.INSTANCE_STORE); - assertEquals(imageRegisteredFromManifestWithOptions.getRootDeviceName(), "/dev/sda1"); - assertEquals(imageRegisteredFromManifestWithOptions.getDescription(), "adrian"); - } - - @Test - public void testNewlyRegisteredImageCanBeListed() throws Exception { - ComputeService computeService = view.getComputeService(); - Snapshot snapshot = createSnapshot(computeService); - - // List of images before... - int sizeBefore = computeService.listImages().size(); - - // Register a new image... - final String imageRegisteredId = client.registerUnixImageBackedByEbsInRegion(null, "jcloudstest1", snapshot.getId()); - imagesToDeregister.add(imageRegisteredId); - final Image imageRegistered = Iterables.getOnlyElement(client.describeImagesInRegion(null, imageIds(imageRegisteredId))); - - // This is the suggested method to ensure the new image ID is inserted into the cache - // (suggested by adriancole_ on #jclouds) - computeService.templateBuilder().imageId(imageRegistered.getRegion() + "/" + imageRegisteredId).build(); - - // List of images after - should be one larger than before - Set after = computeService.listImages(); - assertEquals(after.size(), sizeBefore + 1); - - // Detailed check: filter for the AMI ID - Iterable filtered = Iterables.filter(after, - ImagePredicates.idEquals(imageRegistered.getRegion() + "/" + imageRegisteredId)); - assertEquals(Iterables.size(filtered), 1); - } - - // Fires up an instance, finds its root volume ID, takes a snapshot, then terminates the instance. - private Snapshot createSnapshot(ComputeService computeService) throws RunNodesException { - Template options = computeService.templateBuilder().smallest().build(); - Set nodes = computeService.createNodesInGroup("jcloudstest", 1, options); - try { - String instanceId = Iterables.getOnlyElement(nodes).getProviderId(); - Reservation reservation = Iterables.getOnlyElement(view.unwrap(AWSEC2ApiMetadata.CONTEXT_TOKEN).getApi().getInstanceServices().describeInstancesInRegion(null, instanceId)); - RunningInstance instance = Iterables.getOnlyElement(reservation); - BlockDevice device = instance.getEbsBlockDevices().get("/dev/sda1"); - Snapshot snapshot = view.unwrap(AWSEC2ApiMetadata.CONTEXT_TOKEN).getApi().getElasticBlockStoreServices().createSnapshotInRegion(null, device.getVolumeId()); - snapshotsToDelete.add(snapshot.getId()); - return snapshot; - } finally { - computeService.destroyNodesMatching(Predicates.in(nodes)); - } - } - - @Test(enabled = false) - // awaiting EBS functionality to be added to jclouds - public void testRegisterImageBackedByEBS() { - String imageRegisteredId = client.registerUnixImageBackedByEbsInRegion(null, "jcloudstest1", DEFAULT_MANIFEST); - imagesToDeregister.add(imageRegisteredId); - Image imageRegistered = Iterables - .getOnlyElement(client.describeImagesInRegion(null, imageIds(imageRegisteredId))); - assertEquals(imageRegistered.getName(), "jcloudstest1"); - assertEquals(imageRegistered.getImageType(), ImageType.MACHINE); - assertEquals(imageRegistered.getRootDeviceType(), RootDeviceType.EBS); - assertEquals(imageRegistered.getRootDeviceName(), "/dev/sda1"); - } - - @Test(enabled = false) - // awaiting EBS functionality to be added to jclouds - public void testRegisterImageBackedByEBSOptions() { - String imageRegisteredWithOptionsId = client.registerUnixImageBackedByEbsInRegion(null, "jcloudstest2", - DEFAULT_SNAPSHOT, addNewBlockDevice("/dev/sda2", "myvirtual", 1).withDescription("adrian")); - imagesToDeregister.add(imageRegisteredWithOptionsId); - Image imageRegisteredWithOptions = Iterables.getOnlyElement(client.describeImagesInRegion(null, - imageIds(imageRegisteredWithOptionsId))); - assertEquals(imageRegisteredWithOptions.getName(), "jcloudstest2"); - assertEquals(imageRegisteredWithOptions.getImageType(), ImageType.MACHINE); - assertEquals(imageRegisteredWithOptions.getRootDeviceType(), RootDeviceType.EBS); - assertEquals(imageRegisteredWithOptions.getRootDeviceName(), "/dev/sda1"); - assertEquals(imageRegisteredWithOptions.getDescription(), "adrian"); - assertEquals(imageRegisteredWithOptions.getEbsBlockDevices().entrySet(), ImmutableMap.of("/dev/sda1", - new Image.EbsBlockDevice("/dev/sda1", 30, true), "/dev/sda2", - new Image.EbsBlockDevice("/dev/sda2", 1, true)).entrySet()); - } - - @Test(enabled = false) - public void testCreateImage() { - // TODO client.createImageInRegion(null, name, instanceId, options); - } - - @Test(enabled = false) - public void testAddProductCodesToImage() { - // TODO client.addProductCodesToImageInRegion(null, productCodes, imageId); - } - - @Test(enabled = false) - public void testAddLaunchPermissionsToImage() { - // TODO client.addLaunchPermissionsToImageInRegion(null, userIds, userGroups, - // imageId); - } - - @Test(enabled = false) - public void testRemoveLaunchPermissionsFromImage() { - // TODO client.removeLaunchPermissionsFromImageInRegion(null, userIds, userGroups, - // imageId); - } - - @Test(enabled = false) - public void testResetLaunchPermissionsOnImage() { - // TODO client.resetLaunchPermissionsOnImageInRegion(null, imageId); - } - - @Test(enabled = false) - public void testGetLaunchPermissionForImage() { - System.out.println(client.getLaunchPermissionForImageInRegion(null, imageId)); - } - - @Test(enabled = false) - // awaiting ebs support - public void testGetBlockDeviceMappingsForImage() { - System.out.println(client.getBlockDeviceMappingsForImageInRegion(null, imageId)); - } - - @AfterTest - public void cleanUp() { - for (String imageId : imagesToDeregister) - client.deregisterImageInRegion(null, imageId); - for (String snapshotId : snapshotsToDelete) - view.unwrap(AWSEC2ApiMetadata.CONTEXT_TOKEN).getApi().getElasticBlockStoreServices().deleteSnapshotInRegion(null, snapshotId); - } - -} diff --git a/providers/aws-ec2/src/test/java/org/jclouds/aws/ec2/services/AWSAMIClientLiveTest.java b/providers/aws-ec2/src/test/java/org/jclouds/aws/ec2/services/AWSAMIClientLiveTest.java index 739e843f4b..fdab925e18 100644 --- a/providers/aws-ec2/src/test/java/org/jclouds/aws/ec2/services/AWSAMIClientLiveTest.java +++ b/providers/aws-ec2/src/test/java/org/jclouds/aws/ec2/services/AWSAMIClientLiveTest.java @@ -18,186 +18,43 @@ */ package org.jclouds.aws.ec2.services; -import static org.jclouds.aws.ec2.options.AWSDescribeImagesOptions.Builder.imageIds; -import static org.jclouds.ec2.options.RegisterImageBackedByEbsOptions.Builder.addNewBlockDevice; -import static org.jclouds.ec2.options.RegisterImageOptions.Builder.withDescription; -import static org.testng.Assert.assertEquals; +import static org.jclouds.aws.ec2.options.AWSDescribeImagesOptions.Builder.filters; import static org.testng.Assert.assertNotNull; -import java.util.Iterator; import java.util.Set; -import org.jclouds.aws.ec2.AWSEC2ApiMetadata; -import org.jclouds.compute.internal.BaseComputeServiceContextLiveTest; +import org.jclouds.aws.domain.Region; import org.jclouds.ec2.domain.Image; -import org.jclouds.ec2.domain.RootDeviceType; -import org.jclouds.ec2.domain.Image.ImageType; -import org.testng.annotations.AfterTest; -import org.testng.annotations.BeforeClass; +import org.jclouds.ec2.services.AMIClientLiveTest; import org.testng.annotations.Test; -import com.google.common.collect.ImmutableMap; -import com.google.common.collect.Iterables; -import com.google.common.collect.Sets; +import com.google.common.collect.ImmutableMultimap; +import com.google.common.collect.ImmutableSet; /** - * Tests behavior of {@code AWSAMIClient} + * Tests behavior of {@code AMIClient} * * @author Adrian Cole */ -@Test(groups = "live", singleThreaded = true, testName = "AWSAMIClientLiveTest") -public class AWSAMIClientLiveTest extends BaseComputeServiceContextLiveTest { +@Test(groups = "live", singleThreaded = true) +public class AWSAMIClientLiveTest extends AMIClientLiveTest { + public AWSAMIClientLiveTest() { provider = "aws-ec2"; - // TODO: parameterize this. - imageId = "ami-7ea24a17"; - } - - private AWSAMIClient client; - private static final String DEFAULT_MANIFEST = "adrianimages/image.manifest.xml"; - private static final String DEFAULT_SNAPSHOT = "TODO"; - - private Set imagesToDeregister = Sets.newHashSet(); - - @Override - @BeforeClass(groups = { "integration", "live" }) - public void setupContext() { - super.setupContext(); - client = view.unwrap(AWSEC2ApiMetadata.CONTEXT_TOKEN).getApi().getAMIServices(); } - public void testDescribeImageNotExists() { - assertEquals(client.describeImagesInRegion(null, imageIds("ami-cdf819a3")).size(), 0); - } - - @Test(expectedExceptions = IllegalArgumentException.class) - public void testDescribeImageBadId() { - client.describeImagesInRegion(null, imageIds("asdaasdsa")); - } - - public void testDescribeImages() { - for (String region : view.unwrap(AWSEC2ApiMetadata.CONTEXT_TOKEN).getApi().getAvailabilityZoneAndRegionServices().describeRegions().keySet()) { - Set allResults = Sets.newLinkedHashSet(client.describeImagesInRegion(region)); - assertNotNull(allResults); - assert allResults.size() >= 2 : allResults.size(); - Iterator iterator = allResults.iterator(); - String id1 = iterator.next().getId(); - String id2 = iterator.next().getId(); - Set twoResults = Sets.newLinkedHashSet(client.describeImagesInRegion(region, imageIds(id1, id2))); - assertNotNull(twoResults); - assertEquals(twoResults.size(), 2); - iterator = twoResults.iterator(); - assertEquals(iterator.next().getId(), id1); - assertEquals(iterator.next().getId(), id2); - } - } - - @Test(enabled = false) - public void testRegisterImageFromManifest() { - String imageRegisteredId = client.registerImageFromManifestInRegion(null, "jcloudstest1", DEFAULT_MANIFEST); - imagesToDeregister.add(imageRegisteredId); - Image imageRegisteredFromManifest = Iterables.getOnlyElement(client.describeImagesInRegion(null, - imageIds(imageRegisteredId))); - assertEquals(imageRegisteredFromManifest.getName(), "jcloudstest1"); - assertEquals(imageRegisteredFromManifest.getImageLocation(), DEFAULT_MANIFEST); - assertEquals(imageRegisteredFromManifest.getImageType(), ImageType.MACHINE); - assertEquals(imageRegisteredFromManifest.getRootDeviceType(), RootDeviceType.INSTANCE_STORE); - assertEquals(imageRegisteredFromManifest.getRootDeviceName(), "/dev/sda1"); - } - - @Test(enabled = false) - public void testRegisterImageFromManifestOptions() { - String imageRegisteredWithOptionsId = client.registerImageFromManifestInRegion(null, "jcloudstest2", - DEFAULT_MANIFEST, withDescription("adrian")); - imagesToDeregister.add(imageRegisteredWithOptionsId); - Image imageRegisteredFromManifestWithOptions = Iterables.getOnlyElement(client.describeImagesInRegion(null, - imageIds(imageRegisteredWithOptionsId))); - assertEquals(imageRegisteredFromManifestWithOptions.getName(), "jcloudstest2"); - assertEquals(imageRegisteredFromManifestWithOptions.getImageLocation(), DEFAULT_MANIFEST); - assertEquals(imageRegisteredFromManifestWithOptions.getImageType(), ImageType.MACHINE); - assertEquals(imageRegisteredFromManifestWithOptions.getRootDeviceType(), RootDeviceType.INSTANCE_STORE); - assertEquals(imageRegisteredFromManifestWithOptions.getRootDeviceName(), "/dev/sda1"); - assertEquals(imageRegisteredFromManifestWithOptions.getDescription(), "adrian"); - } - - @Test(enabled = false) - // awaiting EBS functionality to be added to jclouds - public void testRegisterImageBackedByEBS() { - String imageRegisteredId = client.registerUnixImageBackedByEbsInRegion(null, "jcloudstest1", DEFAULT_MANIFEST); - imagesToDeregister.add(imageRegisteredId); - Image imageRegistered = Iterables - .getOnlyElement(client.describeImagesInRegion(null, imageIds(imageRegisteredId))); - assertEquals(imageRegistered.getName(), "jcloudstest1"); - assertEquals(imageRegistered.getImageType(), ImageType.MACHINE); - assertEquals(imageRegistered.getRootDeviceType(), RootDeviceType.EBS); - assertEquals(imageRegistered.getRootDeviceName(), "/dev/sda1"); - } - - @Test(enabled = false) - // awaiting EBS functionality to be added to jclouds - public void testRegisterImageBackedByEBSOptions() { - String imageRegisteredWithOptionsId = client.registerUnixImageBackedByEbsInRegion(null, "jcloudstest2", - DEFAULT_SNAPSHOT, addNewBlockDevice("/dev/sda2", "myvirtual", 1).withDescription("adrian")); - imagesToDeregister.add(imageRegisteredWithOptionsId); - Image imageRegisteredWithOptions = Iterables.getOnlyElement(client.describeImagesInRegion(null, - imageIds(imageRegisteredWithOptionsId))); - assertEquals(imageRegisteredWithOptions.getName(), "jcloudstest2"); - assertEquals(imageRegisteredWithOptions.getImageType(), ImageType.MACHINE); - assertEquals(imageRegisteredWithOptions.getRootDeviceType(), RootDeviceType.EBS); - assertEquals(imageRegisteredWithOptions.getRootDeviceName(), "/dev/sda1"); - assertEquals(imageRegisteredWithOptions.getDescription(), "adrian"); - assertEquals( - imageRegisteredWithOptions.getEbsBlockDevices().entrySet(), - ImmutableMap.of("/dev/sda1", new Image.EbsBlockDevice("/dev/sda1", 30, true), "/dev/sda2", - new Image.EbsBlockDevice("/dev/sda2", 1, true)).entrySet()); - } - - @Test(enabled = false) - public void testCreateImage() { - // TODO client.createImageInRegion(null, name, instanceId, options); - } - - @Test(enabled = false) - public void testAddProductCodesToImage() { - // TODO client.addProductCodesToImageInRegion(null, productCodes, imageId); - } - - @Test(enabled = false) - public void testAddLaunchPermissionsToImage() { - // TODO client.addLaunchPermissionsToImageInRegion(null, userIds, userGroups, - // imageId); - } - - @Test(enabled = false) - public void testRemoveLaunchPermissionsFromImage() { - // TODO client.removeLaunchPermissionsFromImageInRegion(null, userIds, userGroups, - // imageId); - } - - @Test(enabled = false) - public void testResetLaunchPermissionsOnImage() { - // TODO client.resetLaunchPermissionsOnImageInRegion(null, imageId); - } - - @Test(enabled = false) - public void testGetLaunchPermissionForImage() { - // TODO System.out.println(client.getLaunchPermissionForImageInRegion(null, imageId)); - } - - @Test(enabled = false) - public void testGetProductCodesForImage() { - // TODO System.out.println(client.getProductCodesForImageInRegion(null, imageId)); - } - - @Test(enabled = false) - // awaiting ebs support - public void testGetBlockDeviceMappingsForImage() { - System.out.println(client.getBlockDeviceMappingsForImageInRegion(null, imageId)); - } - - @AfterTest - public void deregisterImages() { - for (String imageId : imagesToDeregister) - client.deregisterImageInRegion(null, imageId); + public void testDescribeImagesCC() { + Set ccResults = client.describeImagesInRegion(Region.US_EAST_1, + filters(ImmutableMultimap. builder()// + .put("virtualization-type", "hvm")// + .put("architecture", "x86_64")// + .putAll("owner-id", ImmutableSet. of("137112412989", "099720109477"))// + .put("hypervisor", "xen")// + .put("state", "available")// + .put("image-type", "machine")// + .put("root-device-type", "ebs")// + .build()).ownedBy("137112412989", "099720109477")); + assertNotNull(ccResults); + assert (ccResults.size() >= 34) : ccResults; } } diff --git a/providers/aws-ec2/src/test/java/org/jclouds/aws/ec2/services/PlacementGroupClientLiveTest.java b/providers/aws-ec2/src/test/java/org/jclouds/aws/ec2/services/PlacementGroupClientLiveTest.java index 74b2be2578..63939d1231 100644 --- a/providers/aws-ec2/src/test/java/org/jclouds/aws/ec2/services/PlacementGroupClientLiveTest.java +++ b/providers/aws-ec2/src/test/java/org/jclouds/aws/ec2/services/PlacementGroupClientLiveTest.java @@ -47,7 +47,7 @@ import org.jclouds.scriptbuilder.domain.Statements; import org.jclouds.scriptbuilder.statements.java.InstallJDK; import org.jclouds.scriptbuilder.statements.login.AdminAccess; import org.jclouds.sshj.config.SshjSshClientModule; -import org.testng.annotations.AfterTest; +import org.testng.annotations.AfterClass; import org.testng.annotations.BeforeClass; import org.testng.annotations.Test; @@ -163,12 +163,14 @@ public class PlacementGroupClientLiveTest extends BaseComputeServiceContextLiveT public static final String PREFIX = System.getProperty("user.name") + "ec2"; - @AfterTest - public void shutdown() { + @Override + @AfterClass(groups = { "integration", "live" }) + protected void tearDownContext() { if (group != null) { client.getPlacementGroupServices().deletePlacementGroupInRegion(group.getRegion(), group.getName()); assert deletedTester.apply(group) : group; } + super.tearDownContext(); } @Override diff --git a/providers/bluelock-vcloud-zone01/pom.xml b/providers/bluelock-vcloud-zone01/pom.xml index c9d3bd6cdb..68786b0d1c 100644 --- a/providers/bluelock-vcloud-zone01/pom.xml +++ b/providers/bluelock-vcloud-zone01/pom.xml @@ -39,10 +39,7 @@ 1.5.0.464915 FIXME_IDENTITY FIXME_CREDENTIAL - - - - + org.jclouds.bluelock.vcloud.zone01*;version="${project.version}" org.jclouds.compute.internal;version="${project.version}", @@ -115,9 +112,7 @@ ${test.bluelock-vcloud-zone01.build-version} ${test.bluelock-vcloud-zone01.identity} ${test.bluelock-vcloud-zone01.credential} - ${test.bluelock-vcloud-zone01.image-id} - ${test.bluelock-vcloud-zone01.image.login-user} - ${test.bluelock-vcloud-zone01.image.authenticate-sudo} + ${test.bluelock-vcloud-zone01.template} diff --git a/providers/cloudservers-uk/pom.xml b/providers/cloudservers-uk/pom.xml index 6824736748..771662ca44 100644 --- a/providers/cloudservers-uk/pom.xml +++ b/providers/cloudservers-uk/pom.xml @@ -39,10 +39,7 @@ ${test.rackspace-uk.identity} ${test.rackspace-uk.credential} - - - - + org.jclouds.rackspace.cloudservers*;version="${project.version}" org.jclouds.compute.internal;version="${project.version}", @@ -120,9 +117,7 @@ ${test.cloudservers-uk.build-version} ${test.cloudservers-uk.identity} ${test.cloudservers-uk.credential} - ${test.cloudservers-uk.image-id} - ${test.cloudservers-uk.image.login-user} - ${test.cloudservers-uk.image.authenticate-sudo} + ${test.cloudservers-uk.template} diff --git a/providers/cloudservers-us/pom.xml b/providers/cloudservers-us/pom.xml index ffad8b0127..70a314009c 100644 --- a/providers/cloudservers-us/pom.xml +++ b/providers/cloudservers-us/pom.xml @@ -39,10 +39,7 @@ ${test.rackspace-us.identity} ${test.rackspace-us.credential} - - - - + org.jclouds.rackspace.cloudservers*;version="${project.version}" org.jclouds.compute.internal;version="${project.version}", @@ -121,9 +118,7 @@ ${test.cloudservers-us.build-version} ${test.cloudservers-us.identity} ${test.cloudservers-us.credential} - ${test.cloudservers-us.image-id} - ${test.cloudservers-us.image.login-user} - ${test.cloudservers-us.image.authenticate-sudo} + ${test.cloudservers-us.template} diff --git a/providers/cloudsigma-lvs/pom.xml b/providers/cloudsigma-lvs/pom.xml index 40588bc9c7..46b4ff1ff9 100644 --- a/providers/cloudsigma-lvs/pom.xml +++ b/providers/cloudsigma-lvs/pom.xml @@ -39,9 +39,7 @@ FIXME FIXME - - - + org.jclouds.cloudsigma*;version="${project.version}" org.jclouds.compute.internal;version="${project.version}", @@ -114,9 +112,7 @@ ${test.cloudsigma-lvs.build-version} ${test.cloudsigma-lvs.identity} ${test.cloudsigma-lvs.credential} - ${test.cloudsigma-lvs.image-id} - ${test.cloudsigma-lvs.image.login-user} - ${test.cloudsigma-lvs.image.authenticate-sudo} + ${test.cloudsigma-lvs.template} diff --git a/providers/cloudsigma-zrh/pom.xml b/providers/cloudsigma-zrh/pom.xml index 9ef52e455b..a8d9b8df0d 100644 --- a/providers/cloudsigma-zrh/pom.xml +++ b/providers/cloudsigma-zrh/pom.xml @@ -39,10 +39,7 @@ FIXME FIXME - - - - + org.jclouds.cloudsigma*;version="${project.version}" org.jclouds.compute.internal;version="${project.version}", @@ -115,9 +112,7 @@ ${test.cloudsigma-zrh.build-version} ${test.cloudsigma-zrh.identity} ${test.cloudsigma-zrh.credential} - ${test.cloudsigma-zrh.image-id} - ${test.cloudsigma-zrh.image.login-user} - ${test.cloudsigma-zrh.image.authenticate-sudo} + ${test.cloudsigma-zrh.template} diff --git a/providers/elastichosts-lax-p/pom.xml b/providers/elastichosts-lax-p/pom.xml index 6f5718cb8f..ca0e7f5002 100644 --- a/providers/elastichosts-lax-p/pom.xml +++ b/providers/elastichosts-lax-p/pom.xml @@ -39,7 +39,7 @@ FIXME_IDENTITY FIXME_CREDENTIAL - + org.jclouds.elastichosts*;version="${project.version}" @@ -113,7 +113,7 @@ ${test.elastichosts-lax-p.build-version} ${test.elastichosts-lax-p.identity} ${test.elastichosts-lax-p.credential} - ${test.elastichosts-lax-p.image-id} + ${test.elastichosts-lax-p.template} diff --git a/providers/elastichosts-lon-b/pom.xml b/providers/elastichosts-lon-b/pom.xml index b627498781..6acef2280d 100644 --- a/providers/elastichosts-lon-b/pom.xml +++ b/providers/elastichosts-lon-b/pom.xml @@ -39,7 +39,7 @@ FIXME_IDENTITY FIXME_CREDENTIAL - + org.jclouds.elastichosts*;version="${project.version}" @@ -113,7 +113,7 @@ ${test.elastichosts-lon-b.build-version} ${test.elastichosts-lon-b.identity} ${test.elastichosts-lon-b.credential} - ${test.elastichosts-lon-b.image-id} + ${test.elastichosts-lon-b.template} diff --git a/providers/elastichosts-lon-p/pom.xml b/providers/elastichosts-lon-p/pom.xml index 0eabd22f51..4bc74dda1b 100644 --- a/providers/elastichosts-lon-p/pom.xml +++ b/providers/elastichosts-lon-p/pom.xml @@ -39,7 +39,7 @@ FIXME_IDENTITY FIXME_CREDENTIAL - + org.jclouds.elastichosts*;version="${project.version}" @@ -113,7 +113,7 @@ ${test.elastichosts-lon-p.build-version} ${test.elastichosts-lon-p.identity} ${test.elastichosts-lon-p.credential} - ${test.elastichosts-lon-p.image-id} + ${test.elastichosts-lon-p.template} diff --git a/providers/elastichosts-sat-p/pom.xml b/providers/elastichosts-sat-p/pom.xml index f00132986c..6061d89d0a 100644 --- a/providers/elastichosts-sat-p/pom.xml +++ b/providers/elastichosts-sat-p/pom.xml @@ -39,7 +39,7 @@ FIXME_IDENTITY FIXME_CREDENTIAL - + org.jclouds.elastichosts*;version="${project.version}" @@ -113,7 +113,7 @@ ${test.elastichosts-sat-p.build-version} ${test.elastichosts-sat-p.identity} ${test.elastichosts-sat-p.credential} - ${test.elastichosts-sat-p.image-id} + ${test.elastichosts-sat-p.template} diff --git a/providers/elastichosts-tor-p/pom.xml b/providers/elastichosts-tor-p/pom.xml index 32d4b96999..29e566c8b3 100644 --- a/providers/elastichosts-tor-p/pom.xml +++ b/providers/elastichosts-tor-p/pom.xml @@ -39,7 +39,7 @@ FIXME_IDENTITY FIXME_CREDENTIAL - + org.jclouds.elastichosts*;version="${project.version}" @@ -113,7 +113,7 @@ ${test.elastichosts-tor-p.build-version} ${test.elastichosts-tor-p.identity} ${test.elastichosts-tor-p.credential} - ${test.elastichosts-tor-p.image-id} + ${test.elastichosts-tor-p.template} diff --git a/providers/eucalyptus-partnercloud-ec2/pom.xml b/providers/eucalyptus-partnercloud-ec2/pom.xml index ad10fef969..70167855e2 100644 --- a/providers/eucalyptus-partnercloud-ec2/pom.xml +++ b/providers/eucalyptus-partnercloud-ec2/pom.xml @@ -39,7 +39,8 @@ FIXME_IDENTITY FIXME_CREDENTIAL - + + kvm @@ -128,7 +129,8 @@ ${test.eucalyptus-partnercloud-ec2.build-version} ${test.eucalyptus-partnercloud-ec2.identity} ${test.eucalyptus-partnercloud-ec2.credential} - ${test.eucalyptus-partnercloud-ec2.image-id} + ${test.eucalyptus-partnercloud-ec2.template} + ${test.eucalyptus-partnercloud-ec2.ebs-template} ${test.eucalyptus-partnercloud-ec2.virtualization-type} diff --git a/providers/go2cloud-jhb1/pom.xml b/providers/go2cloud-jhb1/pom.xml index 3d03a911b4..81e9026401 100644 --- a/providers/go2cloud-jhb1/pom.xml +++ b/providers/go2cloud-jhb1/pom.xml @@ -39,7 +39,7 @@ FIXME_IDENTITY FIXME_CREDENTIAL - + org.jclouds.go2cloud*;version="${project.version}" @@ -113,7 +113,7 @@ ${test.go2cloud-jhb1.build-version} ${test.go2cloud-jhb1.identity} ${test.go2cloud-jhb1.credential} - ${test.go2cloud-jhb1.image-id} + ${test.go2cloud-jhb1.template} diff --git a/providers/gogrid/pom.xml b/providers/gogrid/pom.xml index 4c2ccd5fad..b42e13c1af 100644 --- a/providers/gogrid/pom.xml +++ b/providers/gogrid/pom.xml @@ -39,7 +39,7 @@ FIXME FIXME - + org.jclouds.gogrid*;version="${project.version}" @@ -106,7 +106,7 @@ ${test.gogrid.build-version} ${test.gogrid.identity} ${test.gogrid.credential} - ${test.gogrid.image-id} + ${test.gogrid.template} diff --git a/providers/greenhousedata-element-vcloud/pom.xml b/providers/greenhousedata-element-vcloud/pom.xml index 1212a5c95a..640bcf0924 100644 --- a/providers/greenhousedata-element-vcloud/pom.xml +++ b/providers/greenhousedata-element-vcloud/pom.xml @@ -39,10 +39,7 @@ 1.5.0.464915 FIXME_IDENTITY FIXME_CREDENTIAL - - - - + org.jclouds.greenhousedata.element.vcloud*;version="${project.version}" org.jclouds.compute.internal;version="${project.version}", @@ -115,9 +112,7 @@ ${test.greenhousedata-element-vcloud.build-version} ${test.greenhousedata-element-vcloud.identity} ${test.greenhousedata-element-vcloud.credential} - ${test.greenhousedata-element-vcloud.image-id} - ${test.greenhousedata-element-vcloud.image.login-user} - ${test.greenhousedata-element-vcloud.image.authenticate-sudo} + ${test.greenhousedata-element-vcloud.template} diff --git a/providers/hpcloud-compute/pom.xml b/providers/hpcloud-compute/pom.xml index 825bf7075c..aaa4bfd114 100644 --- a/providers/hpcloud-compute/pom.xml +++ b/providers/hpcloud-compute/pom.xml @@ -39,10 +39,7 @@ FIXME_IDENTITY FIXME_CREDENTIAL - - - - + org.jclouds.hpcloud.compute*;version="${project.version}" org.jclouds.compute.internal;version="${project.version}", @@ -122,9 +119,7 @@ ${test.hpcloud-compute.build-version} ${test.hpcloud-compute.identity} ${test.hpcloud-compute.credential} - ${test.hpcloud-compute.image-id} - ${test.hpcloud-compute.image.login-user} - ${test.hpcloud-compute.image.authenticate-sudo} + ${test.hpcloud-compute.template} diff --git a/providers/ninefold-compute/pom.xml b/providers/ninefold-compute/pom.xml index ccb42dd382..3668e06e0b 100644 --- a/providers/ninefold-compute/pom.xml +++ b/providers/ninefold-compute/pom.xml @@ -39,10 +39,7 @@ FIXME_IDENTITY FIXME_CREDENTIAL - 1215 - user:Password01 - true - + imageId=1215,loginUser=user:Password01,authenticateSudo=true org.jclouds.ninefold.compute*;version="${project.version}" org.jclouds.compute.internal;version="${project.version}", @@ -116,9 +113,7 @@ ${test.ninefold-compute.build-version} ${test.ninefold-compute.identity} ${test.ninefold-compute.credential} - ${test.ninefold-compute.image-id} - ${test.ninefold-compute.image.login-user} - ${test.ninefold-compute.image.authenticate-sudo} + ${test.ninefold-compute.template} diff --git a/providers/ninefold-compute/src/test/java/org/jclouds/ninefold/compute/compute/NinefoldComputeTemplateBuilderLiveTest.java b/providers/ninefold-compute/src/test/java/org/jclouds/ninefold/compute/compute/NinefoldComputeTemplateBuilderLiveTest.java index fcdb27538b..912727f32d 100644 --- a/providers/ninefold-compute/src/test/java/org/jclouds/ninefold/compute/compute/NinefoldComputeTemplateBuilderLiveTest.java +++ b/providers/ninefold-compute/src/test/java/org/jclouds/ninefold/compute/compute/NinefoldComputeTemplateBuilderLiveTest.java @@ -71,14 +71,14 @@ public class NinefoldComputeTemplateBuilderLiveTest extends BaseTemplateBuilderL @Test public void testDefaultTemplateBuilder() throws IOException { Template defaultTemplate = this.view.getComputeService().templateBuilder().build(); - if (imageId == null) { + if (template == null) { assertEquals(defaultTemplate.getImage().getOperatingSystem().is64Bit(), true); assertEquals(defaultTemplate.getImage().getOperatingSystem().getVersion(), "10.04"); assertEquals(defaultTemplate.getImage().getOperatingSystem().getFamily(), OsFamily.UBUNTU); assertEquals(defaultTemplate.getLocation().getId(), "1"); assertEquals(getCores(defaultTemplate.getHardware()), 1.0d); } else { - assertEquals(defaultTemplate.getImage(), this.view.getComputeService().templateBuilder().imageId(imageId) + assertEquals(defaultTemplate.getImage(), this.view.getComputeService().templateBuilder().from(template) .build().getImage()); } } diff --git a/providers/openhosting-east1/pom.xml b/providers/openhosting-east1/pom.xml index 2d87dbcc9d..7e87b05a9e 100644 --- a/providers/openhosting-east1/pom.xml +++ b/providers/openhosting-east1/pom.xml @@ -39,7 +39,7 @@ FIXME_IDENTITY FIXME_CREDENTIAL - + org.jclouds.openhosting*;version="${project.version}" @@ -113,7 +113,7 @@ ${test.openhosting-east1.build-version} ${test.openhosting-east1.identity} ${test.openhosting-east1.credential} - ${test.openhosting-east1.image-id} + ${test.openhosting-east1.template} diff --git a/providers/rimuhosting/pom.xml b/providers/rimuhosting/pom.xml index ba7d16a413..7ecbb094bb 100644 --- a/providers/rimuhosting/pom.xml +++ b/providers/rimuhosting/pom.xml @@ -38,7 +38,7 @@ 1.0 FIXME - + org.jclouds.rimuhosting.miro*;version="${project.version}" @@ -113,7 +113,7 @@ ${test.rimuhosting.api-version} ${test.rimuhosting.build-version} ${test.rimuhosting.identity} - ${test.rimuhosting.image-id} + ${test.rimuhosting.template} diff --git a/providers/serverlove-z1-man/pom.xml b/providers/serverlove-z1-man/pom.xml index 4aba15a885..4b0ef8a8c6 100644 --- a/providers/serverlove-z1-man/pom.xml +++ b/providers/serverlove-z1-man/pom.xml @@ -39,7 +39,7 @@ FIXME_IDENTITY FIXME_CREDENTIAL - + org.jclouds.serverlove*;version="${project.version}" org.jclouds.compute.internal;version="${project.version}", @@ -112,7 +112,7 @@ ${test.serverlove-z1-man.build-version} ${test.serverlove-z1-man.identity} ${test.serverlove-z1-man.credential} - ${test.serverlove-z1-man.image-id} + ${test.serverlove-z1-man.template} diff --git a/providers/skalicloud-sdg-my/pom.xml b/providers/skalicloud-sdg-my/pom.xml index a9f7e66132..e1b38fa4ce 100644 --- a/providers/skalicloud-sdg-my/pom.xml +++ b/providers/skalicloud-sdg-my/pom.xml @@ -39,7 +39,7 @@ FIXME_IDENTITY FIXME_CREDENTIAL - + org.jclouds.skalicloud*;version="${project.version}" @@ -113,7 +113,7 @@ ${test.skalicloud-sdg-my.build-version} ${test.skalicloud-sdg-my.identity} ${test.skalicloud-sdg-my.credential} - ${test.skalicloud-sdg-my.image-id} + ${test.skalicloud-sdg-my.template} diff --git a/providers/slicehost/pom.xml b/providers/slicehost/pom.xml index 9e0876d015..80f8a67767 100644 --- a/providers/slicehost/pom.xml +++ b/providers/slicehost/pom.xml @@ -38,7 +38,7 @@ 1.4.1.1 FIXME - + org.jclouds.slicehost*;version="${project.version}" @@ -105,7 +105,7 @@ ${test.slicehost.api-version} ${test.slicehost.build-version} ${test.slicehost.identity} - ${test.slicehost.image-id} + ${test.slicehost.template} diff --git a/providers/softlayer/pom.xml b/providers/softlayer/pom.xml index 6a5b8099dd..9ddb6e2b76 100644 --- a/providers/softlayer/pom.xml +++ b/providers/softlayer/pom.xml @@ -53,10 +53,7 @@ FIXME FIXME - - - - + org.jclouds.softlayer*;version="${project.version}" org.jclouds.compute.internal;version="${project.version}", @@ -120,9 +117,7 @@ ${test.softlayer.build-version} ${test.softlayer.identity} ${test.softlayer.credential} - ${test.softlayer.image-id} - ${test.softlayer.image.login-user} - ${test.softlayer.image.authenticate-sudo} + ${test.softlayer.template} diff --git a/providers/stratogen-vcloud-mycloud/pom.xml b/providers/stratogen-vcloud-mycloud/pom.xml index 99104b655a..5f80ed3aad 100644 --- a/providers/stratogen-vcloud-mycloud/pom.xml +++ b/providers/stratogen-vcloud-mycloud/pom.xml @@ -39,10 +39,7 @@ 1.5.0.464915 FIXME_IDENTITY FIXME_CREDENTIAL - - - - + org.jclouds.stratogen.vcloud.mycloud*;version="${project.version}" org.jclouds.compute.internal;version="${project.version}", @@ -115,9 +112,7 @@ ${test.stratogen-vcloud-mycloud.build-version} ${test.stratogen-vcloud-mycloud.identity} ${test.stratogen-vcloud-mycloud.credential} - ${test.stratogen-vcloud-mycloud.image-id} - ${test.stratogen-vcloud-mycloud.image.login-user} - ${test.stratogen-vcloud-mycloud.image.authenticate-sudo} + ${test.stratogen-vcloud-mycloud.template} diff --git a/providers/trmk-ecloud/pom.xml b/providers/trmk-ecloud/pom.xml index 9fb87647a9..f38b244936 100644 --- a/providers/trmk-ecloud/pom.xml +++ b/providers/trmk-ecloud/pom.xml @@ -40,7 +40,7 @@ FIXME FIXME - + org.jclouds.trmk.ecloud*;version="${project.version}" @@ -116,7 +116,7 @@ ${test.trmk-ecloud.identity} ${test.trmk-ecloud.credential} ${test.trmk-ecloud.datacenter} - ${test.trmk-ecloud.image-id} + ${test.trmk-ecloud.template} diff --git a/providers/trmk-vcloudexpress/pom.xml b/providers/trmk-vcloudexpress/pom.xml index a2609ae339..df454c230a 100644 --- a/providers/trmk-vcloudexpress/pom.xml +++ b/providers/trmk-vcloudexpress/pom.xml @@ -39,7 +39,7 @@ FIXME FIXME - + org.jclouds.trmk.ecloud*;version="${project.version}" @@ -114,7 +114,7 @@ ${test.trmk-vcloudexpress.build-version} ${test.trmk-vcloudexpress.identity} ${test.trmk-vcloudexpress.credential} - ${test.trmk-vcloudexpress.image-id} + ${test.trmk-vcloudexpress.template} diff --git a/providers/trystack-nova/pom.xml b/providers/trystack-nova/pom.xml index b37bdd8af7..ba50265a81 100644 --- a/providers/trystack-nova/pom.xml +++ b/providers/trystack-nova/pom.xml @@ -39,10 +39,7 @@ FIXME_IDENTITY FIXME_CREDENTIAL - - - - + org.jclouds.trystack.nova*;version="${project.version}" org.jclouds.compute.internal;version="${project.version}", @@ -122,9 +119,7 @@ ${test.trystack-nova.build-version} ${test.trystack-nova.identity} ${test.trystack-nova.credential} - ${test.trystack-nova.image-id} - ${test.trystack-nova.image.login-user} - ${test.trystack-nova.image.authenticate-sudo} + ${test.trystack-nova.template}