@Override public Iterable<Template> listImages() { // TODO: we may need to filter these further // we may also want to see if we can work with ssh keys return filter(client.getTemplateClient().listTemplates(), isReady()); }
@Test public void testListTemplates() throws Exception { Set<Template> response = client.getTemplateClient().listTemplates(); assert null != response; long templateCount = response.size(); assertTrue(templateCount >= 0); for (Template template : response) { Template newDetails = Iterables.getOnlyElement(client.getTemplateClient().listTemplates( zoneId(template.getZoneId()).id(template.getId()))); Logger.CONSOLE.info("Checking template: " + template); assertEquals(template, client.getTemplateClient().getTemplateInZone(template.getId(), template.getZoneId())); assert template.getId() != null : template; assert template.getName() != null : template;
@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); }
@Override public boolean apply(Template template) { if (template == null) return false; Template t2 = client.getTemplateClient().getTemplateInZone(template.getId(), zoneId); Logger.CONSOLE.info("%s", t2.getStatus()); return t2.getStatus() == Template.Status.DOWNLOADED; } };
@Test(enabled = true, dependsOnMethods = "testRegisterTemplate") public void testExtractTemplate() throws Exception { // Initiate the extraction and wait for it to complete AsyncCreateResponse response = client.getTemplateClient().extractTemplate(registeredTemplate.getId(), ExtractMode.HTTP_DOWNLOAD, registeredTemplate.getZoneId()); assertTrue(jobComplete.apply(response.getJobId()), registeredTemplate.toString()); // Get the result AsyncJob<TemplateExtraction> asyncJob = client.getAsyncJobClient().getAsyncJob(response.getJobId()); TemplateExtraction extract = asyncJob.getResult(); assertNotNull(extract); // Check that the URL can be retrieved String extractUrl = extract.getUrl(); assertNotNull(extractUrl); URI uri = new URI(URLDecoder.decode(extractUrl, "utf-8")); assertTrue(cloudStackContext.utils().http().exists(uri), "does not exist: " + uri); }
@AfterGroups(groups = "live") @Override protected void tearDownContext() { if (vmForCreation != null) { assertTrue(jobComplete.apply(client.getVirtualMachineClient().stopVirtualMachine(vmForCreation.getId())), vmForCreation.toString()); assertTrue(jobComplete.apply(client.getVirtualMachineClient().destroyVirtualMachine(vmForCreation.getId())), vmForCreation.toString()); assertTrue(virtualMachineDestroyed.apply(vmForCreation)); } if (vmForRegistration != null) { assertTrue(jobComplete.apply(client.getVirtualMachineClient().stopVirtualMachine(vmForRegistration.getId())), vmForRegistration.toString()); assertTrue(jobComplete.apply(client.getVirtualMachineClient().destroyVirtualMachine(vmForRegistration.getId())), vmForRegistration.toString()); assert virtualMachineDestroyed.apply(vmForRegistration); } if (createdTemplate != null) { AsyncCreateResponse deleteJob = client.getTemplateClient().deleteTemplate(createdTemplate.getId()); assertTrue(jobComplete.apply(deleteJob.getJobId())); } if (registeredTemplate != null) { AsyncCreateResponse deleteJob = client.getTemplateClient().deleteTemplate(registeredTemplate.getId()); assertTrue(jobComplete.apply(deleteJob.getJobId())); } super.tearDownContext(); }
Set<Template> templates = client.getTemplateClient().registerTemplate(templateMetadata, "VHD", "XenServer", IMPORT_VHD_URL, zone.getId(), options); registeredTemplate = Iterables.getOnlyElement(templates, null); assertNotNull(registeredTemplate);
@Test public void testCreateNodeWithGroupEncodedIntoName() { String group = prefix + "-foo"; String name = group + "-node-" + new Random().nextInt(); Template template = view.getComputeService().templateBuilder().build(); if (!client .getTemplateClient() .getTemplateInZone(template.getImage().getId(), template.getLocation().getId()).isPasswordEnabled()) { // TODO: look at SecurityGroupClientLiveTest for how to do this template.getOptions().as(CloudStackTemplateOptions.class).keyPair(keyPairName); } vm = adapter.createNodeWithGroupEncodedIntoName(group, name, template); assertEquals(vm.getNode().getDisplayName(), name); // check to see if we setup a NAT rule (conceding we could check this from // cache) IPForwardingRule rule = getFirst( client.getNATClient().getIPForwardingRulesForVirtualMachine(vm.getNode().getId()), null); String address = rule != null ? rule.getIPAddress() : vm.getNode().getIPAddress(); loginCredentials = prioritizeCredentialsFromTemplate.apply(template, vm.getCredentials()); assert InetAddresses.isInetAddress(address) : vm; HostAndPort socket = HostAndPort.fromParts(address, 22); checkSSH(socket); }
@Override public Template getImage(String id) { return get(client.getTemplateClient().listTemplates(id(id)), 0, null); }
@Override public Iterable<Template> listImages() { // TODO: we may need to filter these further // we may also want to see if we can work with ssh keys return filter(client.getTemplateClient().listTemplates(), isReady()); }
@Override public Template getImage(String id) { return get(client.getTemplateClient().listTemplates(id(id)), 0, null); }
@Override public Object doExecuteWithContext(CloudStackClient client, PrintStream out) throws Exception { out.printf("CloudStack templates for provider %s\n", getProvider().getId()); for (Template template : client.getTemplateClient().listTemplates()) { out.printf("---\n%s\n", template.toString()); } out.println(); return null; } }
public static String getTemplateForZone(CloudStackClient client, String zoneId) { // TODO enum, as this is way too easy to mess up. Set<String> acceptableCategories = ImmutableSet.of("Ubuntu", "CentOS"); final Predicate<Template> hypervisorPredicate = new CorrectHypervisorForZone(client).apply(zoneId); final Predicate<Template> osTypePredicate = new OSCategoryIn(client).apply(acceptableCategories); @SuppressWarnings("unchecked") Predicate<Template> templatePredicate = Predicates.<Template> and(TemplatePredicates.isReady(), hypervisorPredicate, osTypePredicate); Iterable<Template> templates = filter( client.getTemplateClient().listTemplates(ListTemplatesOptions.Builder.zoneId(zoneId)), templatePredicate); if (Iterables.any(templates, TemplatePredicates.isPasswordEnabled())) { templates = filter(templates, TemplatePredicates.isPasswordEnabled()); } if (Iterables.size(templates) == 0) { throw new NoSuchElementException(templatePredicate.toString()); } String templateId = get(templates, 0).getId(); return templateId; }
client.getTemplateClient().listTemplates(ListTemplatesOptions.Builder.id(defaultTemplate))); logger.info("Using template: " + template);