/** * AWS EC2 specific optimisation to avoid running queries across * all regiosn when the image-id is know from the property file * * @param spec */ private void enableAWSEC2LazyImageFetching(ClusterSpec spec) { overrides.setProperty(PROPERTY_EC2_AMI_QUERY, ""); overrides.setProperty(PROPERTY_EC2_CC_AMI_QUERY, ""); String[] parts = StringUtils.split(spec.getTemplate().getImageId(), '/'); checkArgument(parts.length == 2, "Expected to find image-id = region/ami-id"); overrides.setProperty(PROPERTY_REGION, parts[0]); }
/** * AWS EC2 specific optimisation to avoid running queries across * all regiosn when the image-id is know from the property file * * @param spec */ private void enableAWSEC2LazyImageFetching(ClusterSpec spec) { overrides.setProperty(PROPERTY_EC2_AMI_QUERY, ""); overrides.setProperty(PROPERTY_EC2_CC_AMI_QUERY, ""); String[] parts = StringUtils.split(spec.getTemplate().getImageId(), '/'); checkArgument(parts.length == 2, "Expected to find image-id = region/ami-id"); overrides.setProperty(PROPERTY_REGION, parts[0]); }
@Test public void testCreateVirtualMachine() throws Exception { String defaultTemplate = template != null ? template.getImageId() : null; vm = createVirtualMachine(client, defaultTemplate, jobComplete, virtualMachineRunning); if (vm.getPassword() != null) { conditionallyCheckSSH(); } assert in(ImmutableSet.of("NetworkFilesystem", "IscsiLUN", "VMFS", "PreSetup")) .apply(vm.getRootDeviceType()) : vm; checkVm(vm); }
@Test public void testCreateVirtualMachine() throws Exception { String defaultTemplate = templateBuilderSpec != null ? templateBuilderSpec.getImageId() : null; vm = createVirtualMachine(client, defaultTemplate, jobComplete, virtualMachineRunning); if (vm.getPassword() != null) { conditionallyCheckSSH(); } assert in(ImmutableSet.of("ROOT", "NetworkFilesystem", "IscsiLUN", "VMFS", "PreSetup")) .apply(vm.getRootDeviceType()) : vm; checkVm(vm); }
if ("aws-ec2".equals(spec.getProvider()) && spec.getTemplate().getImageId() != null) { enableAWSEC2LazyImageFetching(spec);
if ("aws-ec2".equals(spec.getProvider()) && spec.getTemplate().getImageId() != null) { enableAWSEC2LazyImageFetching(spec);
@Test public void testCreateVMWithoutSecurityGroupAssignsDefault() throws Exception { skipIfSecurityGroupsNotSupported(); String defaultTemplate = template != null ? template.getImageId() : null; VirtualMachine newVm = VirtualMachineClientLiveTest.createVirtualMachineWithOptionsInZone(DeployVirtualMachineOptions.NONE, zone.getId(), defaultTemplateOrPreferredInZone(defaultTemplate, client, zone.getId()), client, jobComplete, virtualMachineRunning); try { VirtualMachine runningVm = client.getVirtualMachineClient().getVirtualMachine(newVm.getId()); assertEquals(1, runningVm.getSecurityGroups().size()); assertEquals(Iterables.getOnlyElement(runningVm.getSecurityGroups()).getName(), "default"); } finally { assertTrue(jobComplete.apply(client.getVirtualMachineClient().destroyVirtualMachine(newVm.getId()))); } }
@Test public void testCreateVMWithoutSecurityGroupAssignsDefault() throws Exception { skipIfSecurityGroupsNotSupported(); String defaultTemplate = templateBuilderSpec != null ? templateBuilderSpec.getImageId() : null; VirtualMachine newVm = VirtualMachineApiLiveTest.createVirtualMachineWithOptionsInZone(DeployVirtualMachineOptions.NONE, zone.getId(), defaultTemplateOrPreferredInZone(defaultTemplate, client, zone.getId()), client, jobComplete, virtualMachineRunning); try { VirtualMachine runningVm = client.getVirtualMachineApi().getVirtualMachine(newVm.getId()); assertEquals(1, runningVm.getSecurityGroups().size()); assertEquals(Iterables.getOnlyElement(runningVm.getSecurityGroups()).getName(), "default"); } finally { assertTrue(jobComplete.apply(client.getVirtualMachineApi().destroyVirtualMachine(newVm.getId()))); } }
@BeforeGroups(groups = { "integration", "live" }) @Override public void setupContext() { super.setupContext(); client = view.utils().injector().getInstance(CloudSigmaClient.class); driveNotClaimed = retry(Predicates.not(new DriveClaimed(client)), maxDriveImageTime, 1, SECONDS); SocketOpen socketOpten = context.utils().injector().getInstance(SocketOpen.class); socketTester = retry(socketOpten, maxDriveImageTime, 1, SECONDS); if (template == null || template.getImageId() == null) { imageId = view.getComputeService().templateBuilder().build().getImage().getId(); } }
public void testCreateVm() { if (networksDisabled) return; String defaultTemplate = templateBuilderSpec != null ? templateBuilderSpec.getImageId() : null; vm = VirtualMachineApiLiveTest.createVirtualMachineInNetwork(network, defaultTemplateOrPreferredInZone(defaultTemplate, client, network.getZoneId()), client, jobComplete, virtualMachineRunning); if (vm.getPassword() != null && !loginCredentials.getOptionalPassword().isPresent()) loginCredentials = loginCredentials.toBuilder().password(vm.getPassword()).build(); }
@Test(enabled = true) public void testCreateTemplate() throws Exception { Zone zone = Iterables.getFirst(client.getZoneClient().listZones(), null); assertNotNull(zone); Iterable<Network> networks = client.getNetworkClient().listNetworks(ListNetworksOptions.Builder.zoneId(zone.getId()).isDefault(true)); networks = Iterables.filter(networks, new Predicate<Network>() { @Override public boolean apply(Network network) { return network != null && network.getState().equals("Implemented"); } }); assertTrue(Iterables.size(networks) >= 1); Network network = Iterables.get(networks, 0); assertNotNull(network); // Create a VM and stop it 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 Set<Volume> volumes = client.getVolumeClient().listVolumes(ListVolumesOptions.Builder.virtualMachineId(vmForCreation.getId())); assertEquals(volumes.size(), 1); Volume volume = Iterables.getOnlyElement(volumes); // Create a template CreateTemplateOptions options = CreateTemplateOptions.Builder.volumeId(volume.getId()); AsyncCreateResponse response = client.getTemplateClient().createTemplate(TemplateMetadata.builder().name(prefix+"-createTemplate").osTypeId(vmForCreation.getGuestOSId()).displayText("jclouds live testCreateTemplate").build(), options); assertTrue(jobComplete.apply(response.getJobId()), vmForCreation.toString()); createdTemplate = client.getTemplateClient().getTemplateInZone(response.getId(), vmForCreation.getZoneId()); // Assertions assertNotNull(createdTemplate); }
@Test(enabled = true) public void testCreateTemplate() throws Exception { Zone zone = Iterables.getFirst(client.getZoneApi().listZones(), null); assertNotNull(zone); Iterable<Network> networks = client.getNetworkApi().listNetworks(ListNetworksOptions.Builder.zoneId(zone.getId()).isDefault(true)); networks = Iterables.filter(networks, new Predicate<Network>() { @Override public boolean apply(Network network) { return network != null && network.getState().equals("Implemented"); } }); assertTrue(Iterables.size(networks) >= 1); Network network = Iterables.get(networks, 0); assertNotNull(network); // Create a VM and stop it String defaultTemplate = templateBuilderSpec != null ? templateBuilderSpec.getImageId() : null; vmForCreation = VirtualMachineApiLiveTest.createVirtualMachineInNetwork(network, defaultTemplate, client, jobComplete, virtualMachineRunning); assertTrue(jobComplete.apply(client.getVirtualMachineApi().stopVirtualMachine(vmForCreation.getId())), vmForCreation.toString()); // Work out the VM's volume Set<Volume> volumes = client.getVolumeApi().listVolumes(ListVolumesOptions.Builder.virtualMachineId(vmForCreation.getId())); assertEquals(volumes.size(), 1); Volume volume = Iterables.getOnlyElement(volumes); // Create a template CreateTemplateOptions options = CreateTemplateOptions.Builder.volumeId(volume.getId()); AsyncCreateResponse response = client.getTemplateApi().createTemplate(TemplateMetadata.builder().name(prefix + "-createTemplate").osTypeId(vmForCreation.getGuestOSId()).displayText("jclouds live testCreateTemplate").build(), options); assertTrue(jobComplete.apply(response.getJobId()), vmForCreation.toString()); createdTemplate = client.getTemplateApi().getTemplateInZone(response.getId(), vmForCreation.getZoneId()); // Assertions assertNotNull(createdTemplate); }
@Test(dependsOnMethods = "testCreateIngress") public void testCreateVMInSecurityGroup() throws Exception { skipIfSecurityGroupsNotSupported(); String defaultTemplate = templateBuilderSpec != null ? templateBuilderSpec.getImageId() : null; vm = VirtualMachineApiLiveTest.createVirtualMachineWithSecurityGroupInZone(zone.getId(), defaultTemplateOrPreferredInZone(defaultTemplate, client, zone.getId()), group.getId(), client, jobComplete, virtualMachineRunning); if (vm.getPassword() != null && !loginCredentials.getOptionalPassword().isPresent()) loginCredentials = loginCredentials.toBuilder().password(vm.getPassword()).build(); // ingress port 22 checkSSH(HostAndPort.fromParts(vm.getIPAddress(), 22)); // ingress icmp disabled as this is platform dependent and may actually // just try tcp port 7 // assert InetAddress.getByName(vm.getIPAddress()).isReachable(1000) : vm; }
@Test(dependsOnMethods = "testCreateIngress") public void testCreateVMInSecurityGroup() throws Exception { skipIfSecurityGroupsNotSupported(); String defaultTemplate = template != null ? template.getImageId() : null; vm = VirtualMachineClientLiveTest.createVirtualMachineWithSecurityGroupInZone(zone.getId(), defaultTemplateOrPreferredInZone(defaultTemplate, client, zone.getId()), group.getId(), client, jobComplete, virtualMachineRunning); if (vm.getPassword() != null && loginCredentials.getOptionalPassword() == null) loginCredentials = loginCredentials.toBuilder().password(vm.getPassword()).build(); // ingress port 22 checkSSH(HostAndPort.fromParts(vm.getIPAddress(), 22)); // ingress icmp disabled as this is platform dependent and may actually // just try tcp port 7 // assert InetAddress.getByName(vm.getIPAddress()).isReachable(1000) : vm; }
public void testCreateVm() { if (networksDisabled) return; String defaultTemplate = template != null ? template.getImageId() : null; vm = VirtualMachineClientLiveTest.createVirtualMachineInNetwork(network, defaultTemplateOrPreferredInZone(defaultTemplate, client, network.getZoneId()), client, jobComplete, virtualMachineRunning); if (vm.getPassword() != null && loginCredentials.getOptionalPassword() == null) loginCredentials = loginCredentials.toBuilder().password(vm.getPassword()).build(); }
@BeforeGroups(groups = "live") public void setupContext() { super.setupContext(); prefix += "rule"; try { network = find(client.getNetworkApi().listNetworks(), Predicates.and(supportsPortForwarding(), new Predicate<Network>() { @Override public boolean apply(Network network) { return network.isDefault() && !network.isSecurityGroupEnabled() && network.getAccount().equals(user.getAccount()); } })); String defaultTemplate = templateBuilderSpec != null ? templateBuilderSpec.getImageId() : null; vm = VirtualMachineApiLiveTest.createVirtualMachineInNetwork(network, defaultTemplateOrPreferredInZone(defaultTemplate, client, network.getZoneId()), client, jobComplete, virtualMachineRunning); if (vm.getPassword() != null && !loginCredentials.getOptionalPassword().isPresent()) loginCredentials = loginCredentials.toBuilder().password(vm.getPassword()).build(); } catch (NoSuchElementException e) { networksDisabled = true; } }
@BeforeGroups(groups = "live") public void setupClient() { super.setupContext(); prefix += "nat"; try { network = find(client.getNetworkApi().listNetworks(), NetworkPredicates.supportsStaticNAT()); String defaultTemplate = templateBuilderSpec != null ? templateBuilderSpec.getImageId() : null; vm = VirtualMachineApiLiveTest.createVirtualMachineInNetwork(network, defaultTemplateOrPreferredInZone(defaultTemplate, client, network.getZoneId()), client, jobComplete, virtualMachineRunning); if (vm.getPassword() != null && !loginCredentials.getOptionalPassword().isPresent()) loginCredentials = loginCredentials.toBuilder().password(vm.getPassword()).build(); } catch (NoSuchElementException e) { networksDisabled = true; } }
@BeforeGroups(groups = "live") public void setupContext() { super.setupContext(); prefix += "rule"; try { network = find(client.getNetworkClient().listNetworks(), Predicates.and(supportsPortForwarding(), new Predicate<Network>() { @Override public boolean apply(Network network) { return network.isDefault() && !network.isSecurityGroupEnabled() && network.getAccount().equals(user.getAccount()); } })); String defaultTemplate = template != null ? template.getImageId() : null; vm = VirtualMachineClientLiveTest.createVirtualMachineInNetwork(network, defaultTemplateOrPreferredInZone(defaultTemplate, client, network.getZoneId()), client, jobComplete, virtualMachineRunning); if (vm.getPassword() != null && loginCredentials.getOptionalPassword() == null) loginCredentials = loginCredentials.toBuilder().password(vm.getPassword()).build(); } catch (NoSuchElementException e) { networksDisabled = true; } }
@Test public void testHardwareIdPerInstanceTemplate() throws Exception { PropertiesConfiguration conf = new PropertiesConfiguration("whirr-core-test.properties"); conf.setProperty("whirr.instance-templates", "2 noop, 1 role1+role2, 1 role1, 3 spots, 1 spec"); conf.setProperty("whirr.hardware-id", "c1.xlarge"); conf.setProperty("whirr.templates.noop.hardware-id", "m1.large"); conf.setProperty("whirr.templates.role1+role2.hardware-id", "t1.micro"); conf.setProperty("whirr.templates.role1+role2.image-id", "us-east-1/ami-123324"); conf.setProperty("whirr.templates.spots.aws-ec2-spot-price", 0.5f); conf.setProperty("whirr.templates.spec.template", "osFamily=UBUNTU,os64Bit=true,minRam=2048"); ClusterSpec spec = ClusterSpec.withTemporaryKeys(conf); List<InstanceTemplate> templates = spec.getInstanceTemplates(); InstanceTemplate noops = get(templates, 0); assert noops.getRoles().contains("noop"); assertEquals(noops.getTemplate().getHardwareId(), "m1.large"); assertEquals(noops.getTemplate().getImageId(), null); assertEquals(noops.getAwsEc2SpotPrice(), null); InstanceTemplate second = get(templates, 1); assertEquals(second.getTemplate().getHardwareId(), "t1.micro"); assertEquals(second.getTemplate().getImageId(), "us-east-1/ami-123324"); assertEquals(second.getAwsEc2SpotPrice(), null); InstanceTemplate third = get(templates, 2); assertEquals(third.getTemplate(), null); assertEquals(third.getAwsEc2SpotPrice(), null); InstanceTemplate spots = get(templates, 3); assertEquals(spots.getAwsEc2SpotPrice(), new Float(0.5f), 0.001); InstanceTemplate template = get(templates, 4); assertEquals(template.getTemplate(), TemplateBuilderSpec.parse("osFamily=UBUNTU,os64Bit=true,minRam=2048")); assertEquals(template.getAwsEc2SpotPrice(), null); }
@BeforeGroups(groups = "live") public void setupClient() { super.setupContext(); prefix += "nat"; try { network = find(client.getNetworkClient().listNetworks(), NetworkPredicates.supportsStaticNAT()); String defaultTemplate = template != null ? template.getImageId() : null; vm = VirtualMachineClientLiveTest.createVirtualMachineInNetwork(network, defaultTemplateOrPreferredInZone(defaultTemplate, client, network.getZoneId()), client, jobComplete, virtualMachineRunning); if (vm.getPassword() != null && loginCredentials.getOptionalPassword() == null) loginCredentials = loginCredentials.toBuilder().password(vm.getPassword()).build(); } catch (NoSuchElementException e) { networksDisabled = true; } }