mirror of https://github.com/apache/jclouds.git
Implement a live test for Cloudstack registerTemplate API call
This commit is contained in:
parent
ed865f100a
commit
74e61aaada
|
@ -21,9 +21,9 @@ package org.jclouds.cloudstack.features;
|
||||||
import com.google.common.base.Predicate;
|
import com.google.common.base.Predicate;
|
||||||
import com.google.common.collect.Iterables;
|
import com.google.common.collect.Iterables;
|
||||||
import org.jclouds.cloudstack.domain.*;
|
import org.jclouds.cloudstack.domain.*;
|
||||||
import org.jclouds.cloudstack.options.CreateTemplateOptions;
|
import org.jclouds.cloudstack.options.*;
|
||||||
import org.jclouds.cloudstack.options.ListNetworksOptions;
|
import org.jclouds.logging.Logger;
|
||||||
import org.jclouds.cloudstack.options.ListVolumesOptions;
|
import org.jclouds.predicates.RetryablePredicate;
|
||||||
import org.testng.annotations.AfterGroups;
|
import org.testng.annotations.AfterGroups;
|
||||||
import org.testng.annotations.Test;
|
import org.testng.annotations.Test;
|
||||||
|
|
||||||
|
@ -44,6 +44,7 @@ import static org.testng.Assert.*;
|
||||||
@Test(groups = "live", singleThreaded = true, testName = "TemplateClientLiveTest")
|
@Test(groups = "live", singleThreaded = true, testName = "TemplateClientLiveTest")
|
||||||
public class TemplateClientLiveTest extends BaseCloudStackClientLiveTest {
|
public class TemplateClientLiveTest extends BaseCloudStackClientLiveTest {
|
||||||
|
|
||||||
|
private static final String IMPORT_VHD_URL = "http://www.frontiertown.co.uk/jclouds/openwrt.vhd";
|
||||||
private VirtualMachine vm;
|
private VirtualMachine vm;
|
||||||
private Template template;
|
private Template template;
|
||||||
|
|
||||||
|
@ -141,4 +142,47 @@ public class TemplateClientLiveTest extends BaseCloudStackClientLiveTest {
|
||||||
URI uri = new URI(URLDecoder.decode(extractUrl, "utf-8"));
|
URI uri = new URI(URLDecoder.decode(extractUrl, "utf-8"));
|
||||||
assertTrue(context.utils().http().exists(uri), "does not exist: " + uri);
|
assertTrue(context.utils().http().exists(uri), "does not exist: " + uri);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@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
|
||||||
|
String tmplName = "jclouds-" + Integer.toHexString(new Random().nextInt());
|
||||||
|
RegisterTemplateOptions options = RegisterTemplateOptions.Builder.bits(32);
|
||||||
|
TemplateMetadata templateMetadata = TemplateMetadata.builder().name(tmplName).osTypeId(osType.getId()).displayText("jclouds live testRegisterTemplate").build();
|
||||||
|
Set<Template> templates = client.getTemplateClient().registerTemplate(templateMetadata, "VHD", "xen", IMPORT_VHD_URL, zone.getId(), options);
|
||||||
|
template = Iterables.getOnlyElement(templates, null);
|
||||||
|
assertNotNull(template);
|
||||||
|
|
||||||
|
// 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(template));
|
||||||
|
|
||||||
|
// Create a VM that uses this template
|
||||||
|
vm = VirtualMachineClientLiveTest.createVirtualMachineInNetwork(network, template.getId(), client, jobComplete, virtualMachineRunning);
|
||||||
|
assertNotNull(vm);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue