/** * Creates server on EC2 using the template provided. * * @param template * @return * @throws RunNodesException */ private NodeMetadata createNode(Template template, String name) throws RunNodesException { return Iterables.getOnlyElement(computeService.createNodesInGroup(namePrefix + "-" + name, 1, template)); }
@SuppressWarnings("unchecked") @Override public Set<NodeMetadata> call() throws Exception { LOG.info("Starting {} node(s) with roles {}", num, roles); Set<NodeMetadata> nodes = (Set<NodeMetadata>)computeService .createNodesInGroup(clusterName, num, template); LOG.info("Nodes started: {}", nodes); return nodes; } }
@SuppressWarnings("unchecked") @Override public Set<NodeMetadata> call() throws Exception { LOG.info("Starting {} node(s) with roles {}", num, roles); Set<NodeMetadata> nodes = (Set<NodeMetadata>)computeService .createNodesInGroup(clusterName, num, template); LOG.info("Nodes started: {}", nodes); return nodes; } }
@Override public Set<? extends NodeMetadata> createNodesInGroup(String group, int count, Template template) throws RunNodesException { return delegate.createNodesInGroup(group, count, template); }
@Override public Set<? extends NodeMetadata> createNodesInGroup(String group, int count, TemplateOptions templateOptions) throws RunNodesException { return delegate.createNodesInGroup(group, count, templateOptions); }
@Override public Set<? extends NodeMetadata> createNodesInGroup(String group, int count) throws RunNodesException { return delegate.createNodesInGroup(group, count); }
private NodeMetadata createNode(ComputeService computeService, Template template, String serverName) throws RunNodesException { return Iterables.getOnlyElement(computeService.createNodesInGroup(ec2Client.getNamePrefix() + "-" + serverName, 1, template)); }
public NodeMetadata call() throws Exception { NodeMetadata node = getOnlyElement(client.createNodesInGroup(group, 1, template)); getAnonymousLogger().info("Started node " + node.getId()); return node; } });
public NodeMetadata call() throws Exception { NodeMetadata node = getOnlyElement(client.createNodesInGroup(group, 1, inboundPorts(22, 8080) .blockOnPort(22, 300 + groupNum))); getAnonymousLogger().info("Started node " + node.getId()); return node; } });
private void create(ComputeService computeService) throws RunNodesException, IOException { String group = nodeElement.getGroup(); log(String.format("create group: %s, count: %d, hardware: %s, os: %s", group, nodeElement.getCount(), nodeElement .getHardware(), nodeElement.getOs())); Template template = createTemplateFromElement(nodeElement, computeService); for (NodeMetadata createdNode : computeService.createNodesInGroup(group, nodeElement.getCount(), template)) { logDetails(computeService, createdNode); addNodeDetailsAsProjectProperties(createdNode); } }
@Test(groups = { "integration", "live" }, singleThreaded = true, dependsOnMethods = "testCreateImage") public void testSpawnNodeFromImage() throws RunNodesException { ComputeService computeService = view.getComputeService(); Optional<? extends Image> optImage = getImage(); assertTrue(optImage.isPresent()); NodeMetadata node = Iterables.getOnlyElement(computeService.createNodesInGroup("test-create-image", 1, view .getComputeService() // fromImage does not use the arg image's id (but we do need to set location) .templateBuilder().imageId(optImage.get().getId()).fromImage(optImage.get()).build())); checkReachable(node); view.getComputeService().destroyNode(node.getId()); }
@Test(groups = { "integration", "live" }, singleThreaded = true, dependsOnMethods = "testCreateImage") public void testSpawnNodeFromImage() throws RunNodesException { ComputeService computeService = view.getComputeService(); Optional<? extends Image> optImage = getImage(); assertTrue(optImage.isPresent()); NodeMetadata node = Iterables.getOnlyElement(computeService.createNodesInGroup(imageGroup, 1, getNodeTemplate() // fromImage does not use the arg image's id (but we do need to set location) .imageId(optImage.get().getId()).fromImage(optImage.get()).build())); checkReachable(node); view.getComputeService().destroyNode(node.getId()); }
@Test(dataProvider = "onlyIfAutomaticHardwareSupported", groups = {"integration", "live"}) public void testCreateNodeWithCustomHardware() throws Exception { Template template = buildTemplate(templateBuilder() .hardwareId("automatic:cores=2;ram=4096")); try { NodeMetadata node = getOnlyElement(client.createNodesInGroup(group + "custom", 1, template)); assertThat(node.getHardware().getRam()).isEqualTo(4096); assertThat(node.getHardware().getProcessors().get(0).getCores()).isEqualTo(2); } finally { client.destroyNodesMatching(inGroup(group + "custom")); } }
@Test(dependsOnMethods = "testCanUpdateRunList") public void testRunNodesWithBootstrap() throws IOException { Statement bootstrap = view.getChefService().createBootstrapScriptForGroup(group); try { nodes = computeContext.getComputeService().createNodesInGroup(group, 1, runScript(bootstrap)); } catch (RunNodesException e) { nodes = concat(e.getSuccessfulNodes(), e.getNodeErrors().keySet()); } for (NodeMetadata node : nodes) { URI uri = URI.create("http://" + getLast(node.getPublicAddresses())); InputStream content = computeContext.utils().http().get(uri); String string = Strings2.toStringAndClose(content); assert string.indexOf("It works!") >= 0 : string; } }
@BeforeClass(groups = { "integration", "live" }, dependsOnMethods = "setupContext") public void createNodes() throws RunNodesException { try { TemplateBuilder builder = computeContext.getComputeService().templateBuilder(); if (template != null) builder.from(template); nodes = computeContext.getComputeService().createNodesInGroup(group, 2, builder.build()); } catch (RunNodesException e) { nodes = e.getSuccessfulNodes(); throw e; } }
@BeforeClass(groups = { "integration", "live" }, dependsOnMethods = "setupContext") public void createNodes() throws RunNodesException { try { TemplateBuilder builder = computeContext.getComputeService().templateBuilder(); if (template != null) builder.from(template); nodes = computeContext.getComputeService().createNodesInGroup(group, 2, builder.build()); } catch (RunNodesException e) { nodes = e.getSuccessfulNodes(); throw e; } }
@Override @Test(dataProvider = "onlyIfAutomaticHardwareSupported", groups = {"integration", "live"}) public void testCreateNodeWithCustomHardware() throws Exception { Template template = buildTemplate(templateBuilder() .hardwareId("automatic:cores=2;ram=4096")); try { NodeMetadata node = getOnlyElement(client.createNodesInGroup(group + "custom", 1, template)); assertThat(node.getHardware().getRam()).isEqualTo(4096); assertThat(node.getHardware().getProcessors().get(0).getCores()).isEqualTo(2); assertThat(node.getHardware().getId()).isEqualTo(node.getLocation().getDescription() + "/machineTypes/custom-2-4096"); } finally { client.destroyNodesMatching(inGroup(group + "custom")); } }
@Test public void testWindowsAdminWorks() throws Exception { String group = "winadm"; // Spin up a new node. Make sure to open the RDP port 3389 Template template = view.getComputeService().templateBuilder().from(windowsTemplate).options(inboundPorts(3389)) .build(); try { NodeMetadata node = Iterables.getOnlyElement(view.getComputeService().createNodesInGroup(group, 1, template)); assertEquals(node.getCredentials().getUser(), "Administrator"); assertFalse(Strings.isNullOrEmpty(node.getCredentials().getPassword())); } finally { view.getComputeService().destroyNodesMatching(NodePredicates.inGroup(group)); } }
public void testCanRecreateGroup() throws Exception { String tag = PREFIX + "recreate"; view.getComputeService().destroyNodesMatching(NodePredicates.inGroup(tag)); try { Template template = view.getComputeService().templateBuilder().build(); view.getComputeService().createNodesInGroup(tag, 1, template); view.getComputeService().destroyNodesMatching(NodePredicates.inGroup(tag)); view.getComputeService().createNodesInGroup(tag, 1, template); } catch (RunNodesException e) { System.err.println(e.getNodeErrors().keySet()); Throwables.propagate(e); } finally { view.getComputeService().destroyNodesMatching(NodePredicates.inGroup(tag)); } }
@Test public void testCreateImage() throws RunNodesException { NodeMetadata node = getOnlyElement(view.getComputeService().createNodesInGroup(group, 1, resourceGroup(group))); IdReference vmIdRef = IdReference.create(node.getProviderId()); view.getComputeService().suspendNode(node.getId()); api.getVirtualMachineApi(group).generalize(node.getName()); image = imageApi.createOrUpdate(imageName, location, ImageProperties.builder() .sourceVirtualMachine(vmIdRef).build()); assertNotNull(image); }