@Test(enabled = true) public void testRegisterTemplate() 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(@Nullable Network network) { return network != null && network.getState().equals("Implemented"); } }); assertEquals(Iterables.size(networks), 1); Network network = Iterables.getOnlyElement(networks, null); assertNotNull(network); Set<OSType> osTypes = client.getGuestOSClient().listOSTypes(); OSType osType = Iterables.getFirst(osTypes, null); // Register a template RegisterTemplateOptions options = RegisterTemplateOptions.Builder.bits(32).isExtractable(true); TemplateMetadata templateMetadata = TemplateMetadata.builder() .name(prefix + "-registerTemplate") .osTypeId(osType.getId()) .displayText("jclouds live testRegisterTemplate") .build(); Set<Template> templates = client .getTemplateClient() .registerTemplate( templateMetadata, "VHD", "XenServer", IMPORT_VHD_URL, zone.getId(), options); registeredTemplate = Iterables.getOnlyElement(templates, null); assertNotNull(registeredTemplate); // Ensure it is available final long zoneId = zone.getId(); Predicate<Template> templateReadyPredicate = new Predicate<Template>() { @Override public boolean apply(@Nullable Template template) { if (template == null) return false; Template t2 = client.getTemplateClient().getTemplateInZone(template.getId(), zoneId); Logger.CONSOLE.info("%s", t2.getStatus()); return "Download Complete".equals(t2.getStatus()); } }; assertTrue( new RetryablePredicate<Template>(templateReadyPredicate, 60000).apply(registeredTemplate)); // Create a VM that uses this template vmForRegistration = VirtualMachineClientLiveTest.createVirtualMachineInNetwork( network, registeredTemplate.getId(), client, jobComplete, virtualMachineRunning); assertNotNull(vmForRegistration); }
@Override public String apply(OSType arg0) { return arg0.getId(); }