Issue 112: terremark now supports clone

git-svn-id: http://jclouds.googlecode.com/svn/trunk@2622 3d8758e0-26b5-11de-8745-db77d3ebf521
This commit is contained in:
adrian.f.cole 2010-01-09 22:52:26 +00:00
parent b9de6558d5
commit 480fc9b31a
5 changed files with 33 additions and 26 deletions

View File

@ -96,7 +96,7 @@ public class TerremarkVAppHandler extends ParseSax.HandlerWithResult<TerremarkVA
size = Integer.parseInt(attributes.getValue(attributes.getIndex("size")));
} else if (qName.equals("OperatingSystemSection")) {
inOs = true;
} else if (qName.equals("q1:NetworkConnection")) {
} else if (qName.equals("NetworkConnection")) {
networkName = attributes.getValue(attributes.getIndex("Network"));
} else {
systemHandler.startElement(uri, localName, qName, attributes);
@ -111,7 +111,7 @@ public class TerremarkVAppHandler extends ParseSax.HandlerWithResult<TerremarkVA
inOs = false;
} else if (inOs && qName.equals("Description")) {
operatingSystemDescription = currentText.toString().trim();
} else if (qName.equals("q1:IpAddress")) {
} else if (qName.equals("IpAddress")) {
networkToAddresses.put(networkName, parseInetAddress(currentText.toString().trim()));
} else if (qName.equals("System")) {
systemHandler.endElement(uri, localName, qName);

View File

@ -191,7 +191,7 @@ public class TerremarkVCloudClientLiveTest extends VCloudClientLiveTest {
vApp = tmClient.instantiateVAppTemplateInVDC(vDCId, serverName, vAppTemplateId,
instantiateOptions);
assertEquals(vApp.getStatus(), VAppStatus.UNRESOLVED);
assertEquals(vApp.getStatus(), VAppStatus.RESOLVED);
// in terremark, this should be a no-op, as it should simply return the above task, which is
// already deploying
@ -203,7 +203,7 @@ public class TerremarkVCloudClientLiveTest extends VCloudClientLiveTest {
vApp = tmClient.getVApp(vApp.getId());
assertEquals(vApp.getStatus(), VAppStatus.UNRESOLVED);
assertEquals(vApp.getStatus(), VAppStatus.RESOLVED);
try {// per docs, this is not supported
tmClient.cancelTask(deployTask.getId());
@ -250,9 +250,11 @@ public class TerremarkVCloudClientLiveTest extends VCloudClientLiveTest {
assertEquals(is.getDescription(), "holy cow");
}
// 500 errors
@Test(dependsOnMethods = { "testInstantiateAndPowerOn" }, expectedExceptions = HttpResponseException.class)
@Test(dependsOnMethods = { "testInstantiateAndPowerOn" })
public void testCloneVApp() {
assert successTester.apply(tmClient.powerOffVApp(vApp.getId()).getId());
System.out.printf("%d: done powering off vApp%n", System.currentTimeMillis());
// lookup the id of the datacenter you are deploying into
String vDCId = tmClient.getDefaultVDC().getId();
@ -270,6 +272,9 @@ public class TerremarkVCloudClientLiveTest extends VCloudClientLiveTest {
assert successTester.apply(task.getId());
System.out.printf("%d: done cloning vApp%n", System.currentTimeMillis());
assert successTester.apply(tmClient.powerOnVApp(vApp.getId()).getId());
System.out.printf("%d: done powering on vApp%n", System.currentTimeMillis());
// refresh task to get the new vApp location
task = tmClient.getTask(task.getId());
@ -352,11 +357,12 @@ public class TerremarkVCloudClientLiveTest extends VCloudClientLiveTest {
assertEquals(vApp.getResourceAllocationByType().get(ResourceType.DISK_DRIVE).size(), 2);
// extract the disks on the vApp sorted by addressOnParent
List<ResourceAllocation> disks = Lists.newArrayList(vApp.getResourceAllocationByType()
.get(ResourceType.DISK_DRIVE));
List<ResourceAllocation> disks = Lists.newArrayList(vApp.getResourceAllocationByType().get(
ResourceType.DISK_DRIVE));
// delete the second disk
task = tmClient.configureVApp(vApp, deleteDiskWithAddressOnParent(disks.get(1).getAddressOnParent()));
task = tmClient.configureVApp(vApp, deleteDiskWithAddressOnParent(disks.get(1)
.getAddressOnParent()));
assert successTester.apply(task.getId());
@ -420,7 +426,6 @@ public class TerremarkVCloudClientLiveTest extends VCloudClientLiveTest {
}
tmClient.deleteVApp(vApp.getId());
}
if (clone != null) {
try {
successTester.apply(tmClient.powerOffVApp(clone.getId()).getId());

View File

@ -101,23 +101,23 @@ public class TerremarkVAppHandlerTest extends BaseHandlerTest {
TerremarkVApp result = (TerremarkVApp) factory.create(
injector.getInstance(TerremarkVAppHandler.class)).parse(is);
assertEquals(result.getId(), 16161 + "");
assertEquals(result.getId(), 16238 + "");
assertEquals(result.getName(), "centos-53");
assertEquals(result.getStatus(), VAppStatus.ON);
assertEquals(result.getStatus(), VAppStatus.OFF);
assertEquals(result.getSize().longValue(), 10485760);
assertEquals(result.getOperatingSystemDescription(), "Red Hat Enterprise Linux 5 (64-bit)");
assertEquals(result.getLocation(), URI
.create("https://services.vcloudexpress.terremark.com/api/v0.8/vapp/16161"));
.create("https://services.vcloudexpress.terremark.com/api/v0.8/vapp/16238"));
assertEquals(result.getVDC(), new NamedResourceImpl("32", null, VCloudMediaType.VDC_XML, URI
.create("https://services.vcloudexpress.terremark.com/api/v0.8/vdc/32")));
assertEquals(result.getSystem(), new TerremarkVirtualSystem(null, null, null, null, null,
null, null, null, null, null, null, "Virtual Hardware Family", 0, null, null, null,
null, null, "centos-53", "vmx-07"));
assertEquals(result.getNetworkToAddresses().get("Internal"), ImmutableList.<InetAddress>of());
assertEquals(result.getNetworkToAddresses().get("Internal"), ImmutableList.<InetAddress>of(InetAddress.getByName("10.114.34.132")));
ResourceAllocation cpu = new ResourceAllocation(1, "1 virtual CPU(s)",
"Number of Virtual CPUs", ResourceType.PROCESSOR, null, null, null, null, null,

View File

@ -1,19 +1,21 @@
<VApp href="https://services.vcloudexpress.terremark.com/api/v0.8/vapp/16161"
<VApp href="https://services.vcloudexpress.terremark.com/api/v0.8/vapp/16238"
type="application/vnd.vmware.vcloud.vApp+xml" name="centos-53"
status="4" size="10485760" xmlns="http://www.vmware.com/vcloud/v0.8"
status="2" size="10485760" xmlns="http://www.vmware.com/vcloud/v0.8"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Link rel="up"
href="https://services.vcloudexpress.terremark.com/api/v0.8/vdc/32"
type="application/vnd.vmware.vcloud.vdc+xml" />
<Link rel="down"
href="https://services.vcloudexpress.terremark.com/api/v0.8/vapp/16161/options/compute"
href="https://services.vcloudexpress.terremark.com/api/v0.8/vapp/16238/options/compute"
type="application/xml" name="Compute Options" />
<Link rel="down"
href="https://services.vcloudexpress.terremark.com/api/v0.8/vapp/16161/options/customization"
href="https://services.vcloudexpress.terremark.com/api/v0.8/vapp/16238/options/customization"
type="application/xml" name="Customization Options" />
<NetworkConnectionSection xmlns="http://schemas.dmtf.org/ovf/envelope/1">
<NetworkConnection Network="Internal"
xmlns="http://www.vmware.com/vcloud/v0.8" />
xmlns="http://www.vmware.com/vcloud/v0.8">
<IpAddress>10.114.34.132</IpAddress>
</NetworkConnection>
</NetworkConnectionSection>
<OperatingSystemSection d2p1:id="26"
xmlns="http://schemas.dmtf.org/ovf/envelope/1" xmlns:d2p1="http://schemas.dmtf.org/ovf/envelope/1">

View File

@ -11,11 +11,11 @@
<Link rel="down"
href="https://services.vcloudexpress.terremark.com/api/v0.8/vapp/15639/options/customization"
type="application/xml" name="Customization Options" />
<Section xsi:type="q1:NetworkConnectionSectionType" xmlns="http://schemas.dmtf.org/ovf/envelope/1"
<Section xsi:type="NetworkConnectionSectionType" xmlns="http://schemas.dmtf.org/ovf/envelope/1"
xmlns:q1="http://www.vmware.com/vcloud/v1">
<q1:NetworkConnection Network="Internal">
<q1:IpAddress>10.114.34.131</q1:IpAddress>
</q1:NetworkConnection>
<NetworkConnection Network="Internal">
<IpAddress>10.114.34.131</IpAddress>
</NetworkConnection>
</Section>
<OperatingSystemSection d2p1:id="45"
xmlns="http://schemas.dmtf.org/ovf/envelope/1" xmlns:d2p1="http://schemas.dmtf.org/ovf/envelope/1">