- * PUT /vAppTemplate/{id}/customizationSection
- *
- *
- * @param templateUri the URI of the template
- * @param section the new configuration to apply
- * @return the task performing the action. This operation is asynchronous and the user should monitor the returned
- * task status in order to check when it is completed.
- */
- Task modifyCustomizationSection(URI templateUri, CustomizationSection section);
-
/**
* Retrieves the Guest Customization Section of a VM
*
@@ -243,20 +229,6 @@ public interface VAppTemplateApi {
*/
NetworkConfigSection getNetworkConfigSection(URI templateUri);
- /**
- * Modifies the network config section of a vApp.
- *
- *
- * PUT /vAppTemplate/{id}/networkConfigSection
- *
- *
- * @param templateUri the URI of the template
- * @param section the new configuration to apply
- * @return the task performing the action. This operation is asynchronous and the user should monitor the returned
- * task status in order to check when it is completed.
- */
- Task modifyNetworkConfigSection(URI templateUri, NetworkConfigSection section);
-
/**
* Retrieves the network connection section of a VM
*
@@ -269,20 +241,6 @@ public interface VAppTemplateApi {
*/
NetworkConnectionSection getNetworkConnectionSection(URI templateUri);
- /**
- * Modifies the network connection section of a VM.
- *
- *
- * PUT /vAppTemplate/{id}/networkConnectionSection
- *
- *
- * @param templateUri the URI of the template
- * @param section the new configuration to apply
- * @return the task performing the action. This operation is asynchronous and the user should monitor the returned
- * task status in order to check when it is completed.
- */
- Task modifyNetworkConnectionSection(URI templateUri, NetworkConnectionSection section);
-
/**
* Retrieves the network section of a vApp or vApp template.
*
diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/VAppTemplateAsyncApi.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/VAppTemplateAsyncApi.java
index 0e0826a17c..ff643b08ea 100644
--- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/VAppTemplateAsyncApi.java
+++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/VAppTemplateAsyncApi.java
@@ -147,17 +147,6 @@ public interface VAppTemplateAsyncApi {
@ExceptionParser(ReturnNullOnNotFoundOr404.class)
ListenableFuture getCustomizationSection(@EndpointParam URI templateURI);
- /**
- * @see VAppTemplateApi#modifyCustomizationSection(URI, CustomizationSection)
- */
- @PUT
- @Produces(CUSTOMIZATION_SECTION)
- @Consumes(TASK)
- @Path("/customizationSection")
- @JAXBResponseParser
- ListenableFuture modifyCustomizationSection(@EndpointParam URI templateURI,
- @BinderParam(BindToXMLPayload.class) CustomizationSection sectionType);
-
/**
* @see VAppTemplateApi#getGuestCustomizationSection(URI)
*/
@@ -220,17 +209,6 @@ public interface VAppTemplateAsyncApi {
@ExceptionParser(ReturnNullOnNotFoundOr404.class)
ListenableFuture getNetworkConfigSection(@EndpointParam URI templateURI);
- /**
- * @see VAppTemplateApi#modifyNetworkConfigSection(URI, NetworkConfigSection)
- */
- @PUT
- @Produces(NETWORK_CONFIG_SECTION)
- @Consumes(TASK)
- @Path("/networkConfigSection")
- @JAXBResponseParser
- ListenableFuture modifyNetworkConfigSection(@EndpointParam URI templateURI,
- @BinderParam(BindToXMLPayload.class) NetworkConfigSection section);
-
/**
* @see VAppTemplateApi#getNetworkConnectionSection(URI)
*/
@@ -241,17 +219,6 @@ public interface VAppTemplateAsyncApi {
@ExceptionParser(ReturnNullOnNotFoundOr404.class)
ListenableFuture getVAppTemplateNetworkConnectionSection(@EndpointParam URI templateURI);
- /**
- * @see VAppTemplateApi#modifyNetworkConnectionSection(URI, NetworkConnectionSection)
- */
- @PUT
- @Produces(NETWORK_CONNECTION_SECTION)
- @Consumes(TASK)
- @Path("/networkConnectionSection")
- @JAXBResponseParser
- ListenableFuture modifyNetworkConnectionSection(@EndpointParam URI templateURI,
- @BinderParam(BindToXMLPayload.class) NetworkConnectionSection section);
-
/**
* @see VAppTemplateApi#getNetworkSection(URI)
*/
diff --git a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/AbstractVAppApiLiveTest.java b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/AbstractVAppApiLiveTest.java
index 81c68f6328..ced21c917f 100644
--- a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/AbstractVAppApiLiveTest.java
+++ b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/AbstractVAppApiLiveTest.java
@@ -47,6 +47,7 @@ import org.jclouds.vcloud.director.v1_5.domain.VAppTemplate;
import org.jclouds.vcloud.director.v1_5.domain.Vdc;
import org.jclouds.vcloud.director.v1_5.domain.Vm;
import org.jclouds.vcloud.director.v1_5.domain.dmtf.RasdItem;
+import org.jclouds.vcloud.director.v1_5.domain.params.UndeployVAppParams;
import org.jclouds.vcloud.director.v1_5.domain.section.GuestCustomizationSection;
import org.jclouds.vcloud.director.v1_5.domain.section.NetworkConnectionSection;
import org.jclouds.vcloud.director.v1_5.features.CatalogApi;
@@ -112,7 +113,6 @@ public abstract class AbstractVAppApiLiveTest extends BaseVCloudDirectorApiLiveT
* @see BaseVCloudDirectorApiLiveTest#setupRequiredApis()
*/
@Override
- @BeforeClass(alwaysRun = true, description = "Retrieves the required apis from the REST API context")
protected void setupRequiredApis() {
assertNotNull(context.getApi());
@@ -122,14 +122,13 @@ public abstract class AbstractVAppApiLiveTest extends BaseVCloudDirectorApiLiveT
vAppTemplateApi = context.getApi().getVAppTemplateApi();
vdcApi = context.getApi().getVdcApi();
vmApi = context.getApi().getVmApi();
-
- setupEnvironment();
}
-
+
/**
* Sets up the environment. Retrieves the test {@link Vdc} and {@link VAppTemplate} from their
* configured {@link URI}s. Instantiates a new test VApp.
*/
+ @BeforeClass(alwaysRun = true, description = "Retrieves the required apis from the REST API context")
protected void setupEnvironment() {
// Get the configured Vdc for the tests
vdc = vdcApi.getVdc(vdcURI);
@@ -295,9 +294,10 @@ public abstract class AbstractVAppApiLiveTest extends BaseVCloudDirectorApiLiveT
protected Vm powerOffVm(final URI testVmURI) {
Vm test = vmApi.getVm(testVmURI);
Status status = test.getStatus();
- if (status != Status.POWERED_OFF) {
- Task powerOff = vmApi.powerOff(vm.getHref());
- assertTaskSucceedsLong(powerOff);
+ if (status != Status.POWERED_OFF || test.isDeployed()) {
+ UndeployVAppParams undeployParams = UndeployVAppParams.builder().build();
+ Task shutdownVapp = vAppApi.undeploy(test.getHref(), undeployParams);
+ assertTaskSucceedsLong(shutdownVapp);
}
test = vmApi.getVm(testVmURI);
assertStatus(VM, test, Status.POWERED_OFF);
diff --git a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/VAppApiLiveTest.java b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/VAppApiLiveTest.java
index f30706eedf..edd22c5a49 100644
--- a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/VAppApiLiveTest.java
+++ b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/VAppApiLiveTest.java
@@ -103,7 +103,7 @@ public class VAppApiLiveTest extends AbstractVAppApiLiveTest {
private boolean mediaCreated = false;
private boolean testUserCreated = false;
- @BeforeClass(alwaysRun = true, dependsOnMethods = { "setupRequiredApis" })
+ @BeforeClass(alwaysRun = true)
protected void setupRequiredEntities() {
Set links = vdcApi.getVdc(vdcURI).getLinks();
diff --git a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/VAppTemplateApiExpectTest.java b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/VAppTemplateApiExpectTest.java
index 36a7a8b85d..2fc651d457 100644
--- a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/VAppTemplateApiExpectTest.java
+++ b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/VAppTemplateApiExpectTest.java
@@ -49,24 +49,10 @@ import org.jclouds.vcloud.director.v1_5.domain.Owner;
import org.jclouds.vcloud.director.v1_5.domain.Reference;
import org.jclouds.vcloud.director.v1_5.domain.Task;
import org.jclouds.vcloud.director.v1_5.domain.VAppTemplate;
-import org.jclouds.vcloud.director.v1_5.domain.network.FirewallRule;
-import org.jclouds.vcloud.director.v1_5.domain.network.FirewallRuleProtocols;
-import org.jclouds.vcloud.director.v1_5.domain.network.FirewallService;
-import org.jclouds.vcloud.director.v1_5.domain.network.IpRange;
-import org.jclouds.vcloud.director.v1_5.domain.network.IpRanges;
-import org.jclouds.vcloud.director.v1_5.domain.network.IpScope;
-import org.jclouds.vcloud.director.v1_5.domain.network.NatOneToOneVmRule;
-import org.jclouds.vcloud.director.v1_5.domain.network.NatRule;
-import org.jclouds.vcloud.director.v1_5.domain.network.NatService;
-import org.jclouds.vcloud.director.v1_5.domain.network.Network.FenceMode;
-import org.jclouds.vcloud.director.v1_5.domain.network.NetworkConfiguration;
-import org.jclouds.vcloud.director.v1_5.domain.network.NetworkFeatures;
-import org.jclouds.vcloud.director.v1_5.domain.network.VAppNetworkConfiguration;
import org.jclouds.vcloud.director.v1_5.domain.params.RelocateParams;
import org.jclouds.vcloud.director.v1_5.domain.section.CustomizationSection;
import org.jclouds.vcloud.director.v1_5.domain.section.GuestCustomizationSection;
import org.jclouds.vcloud.director.v1_5.domain.section.LeaseSettingsSection;
-import org.jclouds.vcloud.director.v1_5.domain.section.NetworkConfigSection;
import org.jclouds.vcloud.director.v1_5.internal.VCloudDirectorAdminApiExpectTest;
import org.testng.annotations.Test;
@@ -256,27 +242,6 @@ public class VAppTemplateApiExpectTest extends VCloudDirectorAdminApiExpectTest
api.relocateVm(uri, params);
}
- @Test
- public void testCustomizationSection() {
- final String templateId = "/vAppTemplate/vappTemplate-ef4415e6-d413-4cbb-9262-f9bbec5f2ea9";
- URI uri = URI.create(endpoint + templateId);
-
- VAppTemplateApi api = orderedRequestsSendResponses(loginRequest, sessionResponse,
- new VcloudHttpRequestPrimer().apiCommand("GET", templateId + "/customizationSection").acceptMedia(CUSTOMIZATION_SECTION).httpRequestBuilder().build(),
- new VcloudHttpResponsePrimer().xmlFilePayload("/vapptemplate/customizationSection.xml", CUSTOMIZATION_SECTION).httpResponseBuilder().build(),
- new VcloudHttpRequestPrimer().apiCommand("PUT", templateId + "/customizationSection").xmlFilePayload("/vapptemplate/customizationSection.xml", CUSTOMIZATION_SECTION).acceptMedia(TASK).httpRequestBuilder().build(),
- new VcloudHttpResponsePrimer().xmlFilePayload("/task/task.xml", TASK).httpResponseBuilder().build()
- ).getVAppTemplateApi();
-
- assertNotNull(api);
- CustomizationSection section = api.getCustomizationSection(uri);
-
- assertEquals(section, exampleCustomizationSection());
-
- Task task = api.modifyCustomizationSection(uri, exampleCustomizationSection());
- assertNotNull(task);
- }
-
public void testErrorGetCustomizationSection() {
final String templateId = "/vAppTemplate/vappTemplate-ef4415e6-d413-4cbb-9262-f9bbec5f2ea9";
URI uri = URI.create(endpoint + templateId);
@@ -288,18 +253,6 @@ public class VAppTemplateApiExpectTest extends VCloudDirectorAdminApiExpectTest
assertNull(api.getCustomizationSection(uri));
}
- @Test(expectedExceptions = ResourceNotFoundException.class)
- public void testErrorEditCustomizationSection() {
- final String templateId = "/vAppTemplate/vappTemplate-ef4415e6-d413-4cbb-9262-f9bbec5f2ea9";
- URI uri = URI.create(endpoint + templateId);
-
- VAppTemplateApi api = orderedRequestsSendResponses(loginRequest, sessionResponse,
- new VcloudHttpRequestPrimer().apiCommand("PUT", templateId + "/customizationSection").xmlFilePayload("/vapptemplate/customizationSection.xml", CUSTOMIZATION_SECTION).acceptMedia(TASK).httpRequestBuilder().build(),
- new VcloudHttpResponsePrimer().xmlFilePayload("/vapptemplate/error403.xml", ERROR).httpResponseBuilder().statusCode(403).build()).getVAppTemplateApi();
-
- api.modifyCustomizationSection(uri, exampleCustomizationSection());
- }
-
public void testGuestCustomizationSection() {
final String templateId = "/vAppTemplate/vappTemplate-ef4415e6-d413-4cbb-9262-f9bbec5f2ea9";
URI uri = URI.create(endpoint + templateId);
@@ -490,27 +443,6 @@ public class VAppTemplateApiExpectTest extends VCloudDirectorAdminApiExpectTest
api.getMetadataApi().deleteMetadataEntry(uri, "12345");
}
-
- public void testNetworkConfigSection() throws ParseException {
- final String templateId = "/vAppTemplate/vappTemplate-ef4415e6-d413-4cbb-9262-f9bbec5f2ea9";
- URI uri = URI.create(endpoint + templateId);
-
- VAppTemplateApi api = orderedRequestsSendResponses(loginRequest, sessionResponse,
- new VcloudHttpRequestPrimer().apiCommand("GET", templateId + "/networkConfigSection").acceptMedia(NETWORK_CONFIG_SECTION).httpRequestBuilder().build(),
- new VcloudHttpResponsePrimer().xmlFilePayload("/vapptemplate/networkConfigSection.xml", NETWORK_CONFIG_SECTION).httpResponseBuilder().build(),
- new VcloudHttpRequestPrimer().apiCommand("PUT", templateId + "/networkConfigSection").xmlFilePayload("/vapptemplate/networkConfigSection.xml", NETWORK_CONFIG_SECTION).acceptMedia(TASK).httpRequestBuilder().build(),
- new VcloudHttpResponsePrimer().xmlFilePayload("/task/task.xml", TASK).httpResponseBuilder().build()
- ).getVAppTemplateApi();
-
- assertNotNull(api);
-
- NetworkConfigSection section = api.getNetworkConfigSection(uri);
-
- assertEquals(section, exampleNetworkConfigSection());
-
- Task task = api.modifyNetworkConfigSection(uri, exampleNetworkConfigSection());
- assertNotNull(task);
- }
@Test(expectedExceptions = VCloudDirectorException.class)
public void testErrorGetNetworkConfigSection() {
@@ -524,18 +456,6 @@ public class VAppTemplateApiExpectTest extends VCloudDirectorAdminApiExpectTest
api.getNetworkConfigSection(uri);
}
- @Test(expectedExceptions = VCloudDirectorException.class)
- public void testErrorEditNetworkConfigSection() throws ParseException {
- final String templateId = "/vAppTemplate/vappTemplate-ef4415e6-d413-4cbb-9262-f9bbec5f2ea9";
- URI uri = URI.create(endpoint + templateId);
-
- VAppTemplateApi api = orderedRequestsSendResponses(loginRequest, sessionResponse,
- new VcloudHttpRequestPrimer().apiCommand("PUT", templateId + "/networkConfigSection").xmlFilePayload("/vapptemplate/networkConfigSection.xml", NETWORK_CONFIG_SECTION).acceptMedia(TASK).httpRequestBuilder().build(),
- new VcloudHttpResponsePrimer().xmlFilePayload("/vapptemplate/error400.xml", ERROR).httpResponseBuilder().statusCode(400).build()).getVAppTemplateApi();
-
- api.modifyNetworkConfigSection(uri, exampleNetworkConfigSection());
- }
-
private VAppTemplate exampleTemplate() {
Link aLink = Link.builder().href(URI.create("https://vcloudbeta.bluelock.com/api/vdc/d16d333b-e3c0-4176-845d-a5ee6392df07"))
.type("application/vnd.vmware.vcloud.vdc+xml").rel("up").build();
@@ -575,20 +495,6 @@ public class VAppTemplateApiExpectTest extends VCloudDirectorAdminApiExpectTest
.build();
}
- private CustomizationSection exampleCustomizationSection() {
- return CustomizationSection.builder()
- .links(ImmutableSet.of(
- Link.builder().href(URI.create("https://vcloudbeta.bluelock.com/api/vAppTemplate/vappTemplate-ef4415e6-d413-4cbb-9262-f9bbec5f2ea9/customizationSection/"))
- .type("application/vnd.vmware.vcloud.customizationSection+xml").rel("edit").build()
- ))
- .type("application/vnd.vmware.vcloud.customizationSection+xml")
- .info("VApp template customization section")
- .customizeOnInstantiate(true)
- .href(URI.create("https://vcloudbeta.bluelock.com/api/vAppTemplate/vappTemplate-ef4415e6-d413-4cbb-9262-f9bbec5f2ea9/customizationSection/"))
- .required(false)
- .build();
- }
-
private GuestCustomizationSection exampleGuestCustomizationSection() {
return GuestCustomizationSection.builder()
.links(ImmutableSet.of(
@@ -640,59 +546,4 @@ public class VAppTemplateApiExpectTest extends VCloudDirectorAdminApiExpectTest
return MetadataValue.builder().value("some value").build();
}
- private NetworkConfigSection exampleNetworkConfigSection() throws ParseException {
-
- FirewallService firewallService =
- FirewallService.builder()
- .enabled(true)
- .firewallRules(
- ImmutableSet.of(
- FirewallRule.builder()
- .isEnabled(true)
- .description("FTP Rule")
- .policy("allow")
- .protocols(FirewallRuleProtocols.builder().tcp(true).build())
- .port(21)
- .destinationIp("10.147.115.1")
- .build(),
- FirewallRule.builder()
- .isEnabled(true)
- .description("SSH Rule")
- .policy("allow")
- .protocols(FirewallRuleProtocols.builder().tcp(true).build())
- .port(22)
- .destinationIp("10.147.115.1")
- .build())).build();
-
- NatService natService = NatService.builder().enabled(true).natType("ipTranslation").policy("allowTraffic")
- .natRules(ImmutableSet.of(NatRule.builder().oneToOneVmRule(
- NatOneToOneVmRule.builder().mappingMode("manual").externalIpAddress("64.100.10.1").vAppScopedVmId("20ea086f-1a6a-4fb2-8e2e-23372facf7de").vmNicId(0).build()).build()
- )).build();
-
- NetworkConfiguration networkConfiguration = NetworkConfiguration.builder().ipScope(
- IpScope.builder()
- .isInherited(false)
- .gateway("10.147.56.253")
- .netmask("255.255.255.0")
- .dns1("10.147.115.1")
- .dns2("10.147.115.2")
- .dnsSuffix("example.com")
- .ipRanges(IpRanges.builder().ipRange(IpRange.builder().startAddress("10.147.56.1").endAddress("10.147.56.1").build()).build())
- .build())
- .parentNetwork(Reference.builder().href(URI.create("http://vcloud.example.com/api/v1.0/network/54")).type("application/vnd.vmware.vcloud.network+xml").name("Internet").build())
- .fenceMode(FenceMode.NAT_ROUTED)
- .features(NetworkFeatures.builder().services(ImmutableSet.of(firewallService, natService)).build())
- .build();
-
- return NetworkConfigSection.builder()
- .info("Configuration parameters for logical networks")
- .networkConfigs(
- ImmutableSet.of(
- VAppNetworkConfiguration.builder()
- .networkName("vAppNetwork")
- .configuration(
- networkConfiguration
- ).build()
- )).build();
- }
}
diff --git a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/VAppTemplateApiLiveTest.java b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/VAppTemplateApiLiveTest.java
index e0e2c04c14..40cf401429 100644
--- a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/VAppTemplateApiLiveTest.java
+++ b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/VAppTemplateApiLiveTest.java
@@ -26,7 +26,6 @@ import static org.jclouds.vcloud.director.v1_5.domain.Checks.checkMetadataFor;
import static org.jclouds.vcloud.director.v1_5.domain.Checks.checkMetadataKeyAbsentFor;
import static org.jclouds.vcloud.director.v1_5.domain.Checks.checkMetadataValue;
import static org.jclouds.vcloud.director.v1_5.domain.Checks.checkNetworkConfigSection;
-import static org.jclouds.vcloud.director.v1_5.domain.Checks.checkNetworkConnectionSection;
import static org.jclouds.vcloud.director.v1_5.domain.Checks.checkOvfEnvelope;
import static org.jclouds.vcloud.director.v1_5.domain.Checks.checkOvfNetworkSection;
import static org.jclouds.vcloud.director.v1_5.domain.Checks.checkOwner;
@@ -60,8 +59,6 @@ import org.jclouds.vcloud.director.v1_5.domain.References;
import org.jclouds.vcloud.director.v1_5.domain.Task;
import org.jclouds.vcloud.director.v1_5.domain.VAppTemplate;
import org.jclouds.vcloud.director.v1_5.domain.dmtf.Envelope;
-import org.jclouds.vcloud.director.v1_5.domain.network.NetworkConnection;
-import org.jclouds.vcloud.director.v1_5.domain.network.NetworkConnection.IpAddressAllocationMode;
import org.jclouds.vcloud.director.v1_5.domain.params.CloneVAppTemplateParams;
import org.jclouds.vcloud.director.v1_5.domain.params.RelocateParams;
import org.jclouds.vcloud.director.v1_5.domain.section.CustomizationSection;
@@ -89,7 +86,7 @@ public class VAppTemplateApiLiveTest extends AbstractVAppApiLiveTest {
private String key;
private String val;
-
+
@AfterClass(alwaysRun = true, dependsOnMethods = { "cleanUpEnvironment" })
protected void tidyUp() {
if (key != null) {
@@ -101,11 +98,12 @@ public class VAppTemplateApiLiveTest extends AbstractVAppApiLiveTest {
}
}
}
-
- // FIXME cloneVAppTemplate is giving back 500 error
+
private VAppTemplate cloneVAppTemplate(boolean waitForTask) throws Exception {
CloneVAppTemplateParams cloneVAppTemplateParams = CloneVAppTemplateParams.builder()
.source(Reference.builder().href(vAppTemplateURI).build())
+ .isSourceDelete(false)
+ .name("clone")
.build();
VAppTemplate clonedVappTemplate = vdcApi.cloneVAppTemplate(vdcURI, cloneVAppTemplateParams);
@@ -114,7 +112,6 @@ public class VAppTemplateApiLiveTest extends AbstractVAppApiLiveTest {
assertNotNull(cloneTask, "vdcApi.cloneVAppTemplate returned VAppTemplate that did not contain any tasks");
assertTaskSucceeds(cloneTask);
}
-
return clonedVappTemplate;
}
@@ -306,34 +303,15 @@ public class VAppTemplateApiLiveTest extends AbstractVAppApiLiveTest {
assertEquals(modified.getComputerName(), computerName);
}
- @Test(description = "PUT /vAppTemplate/{id}/customizationSection")
- public void testEditCustomizationSection() {
- boolean oldVal = vAppTemplateApi.getCustomizationSection(vAppTemplateURI).isCustomizeOnInstantiate();
- boolean newVal = !oldVal;
-
- CustomizationSection customizationSection = CustomizationSection.builder()
- .info("")
- .customizeOnInstantiate(newVal)
- .build();
-
- final Task task = vAppTemplateApi.modifyCustomizationSection(vAppTemplateURI, customizationSection);
- assertTaskSucceeds(task);
-
- CustomizationSection newCustomizationSection = vAppTemplateApi.getCustomizationSection(vAppTemplateURI);
- assertEquals(newCustomizationSection.isCustomizeOnInstantiate(), newVal);
- }
-
- // FIXME deploymentLeaseInSeconds returned is null
+ // NOTE vAppTemplate supports only storageLease (deployment lease applies to vApp too)
@Test(description = "PUT /vAppTemplate/{id}/leaseSettingsSection")
public void testEditLeaseSettingsSection() throws Exception {
- int deploymentLeaseInSeconds = random.nextInt(10000)+1;
// NOTE use smallish number for storageLeaseInSeconds; it seems to be capped at 5184000?
int storageLeaseInSeconds = random.nextInt(10000)+1;
LeaseSettingsSection leaseSettingSection = LeaseSettingsSection.builder()
.info("my info")
.storageLeaseInSeconds(storageLeaseInSeconds)
- .deploymentLeaseInSeconds(deploymentLeaseInSeconds)
.build();
final Task task = vAppTemplateApi.modifyLeaseSettingsSection(vAppTemplateURI, leaseSettingSection);
@@ -341,65 +319,8 @@ public class VAppTemplateApiLiveTest extends AbstractVAppApiLiveTest {
LeaseSettingsSection newLeaseSettingsSection = vAppTemplateApi.getLeaseSettingsSection(vAppTemplateURI);
assertEquals(newLeaseSettingsSection.getStorageLeaseInSeconds(), (Integer) storageLeaseInSeconds);
- assertEquals(newLeaseSettingsSection.getDeploymentLeaseInSeconds(), (Integer) deploymentLeaseInSeconds);
}
- @Test(description = "PUT /vAppTemplate/{id}/networkConfigSection")
- public void testEditNetworkConfigSection() {
- // TODO What to modify?
-
- NetworkConfigSection oldSection = vAppTemplateApi.getNetworkConfigSection(vApp.getHref());
- NetworkConfigSection newSection = oldSection.toBuilder().build();
-
-// String networkName = ""+random.nextInt();
-// NetworkConfiguration networkConfiguration = NetworkConfiguration.builder()
-// .fenceMode("isolated")
-// .build();
-// VAppNetworkConfiguration vappNetworkConfiguration = VAppNetworkConfiguration.builder()
-// .networkName(networkName)
-// .configuration(networkConfiguration)
-// .build();
-// Set vappNetworkConfigurations = ImmutableSet.of(vappNetworkConfiguration);
-// NetworkConfigSection networkConfigSection = NetworkConfigSection.builder()
-// .info("my info")
-// .networkConfigs(vappNetworkConfigurations)
-// .build();
-
- final Task task = vAppTemplateApi.modifyNetworkConfigSection(vApp.getHref(), newSection);
- assertTaskSucceeds(task);
-
- NetworkConfigSection modified = vAppTemplateApi.getNetworkConfigSection(vAppTemplateURI);
- checkNetworkConfigSection(modified);
-
-// assertEquals(modifiedĀ§.getNetworkConfigs().size(), 1);
-//
-// VAppNetworkConfiguration newVAppNetworkConfig = Iterables.get(modifiedĀ§.getNetworkConfigs(), 0);
-// assertEquals(newVAppNetworkConfig.getNetworkName(), networkName);
- }
-
- @Test(description = "PUT /vAppTemplate/{id}/networkConnectionSection")
- public void testEditNetworkConnectionSection() {
- // Look up a network in the Vdc
- Set networks = vdc.getAvailableNetworks();
- Reference network = Iterables.getLast(networks);
-
- // Copy existing section and update fields
- NetworkConnectionSection oldSection = vAppTemplateApi.getNetworkConnectionSection(vm.getHref());
- NetworkConnectionSection newSection = oldSection.toBuilder()
- .networkConnection(NetworkConnection.builder()
- .ipAddressAllocationMode(IpAddressAllocationMode.DHCP.toString())
- .network(network.getName())
- .build())
- .build();
-
- Task task = vAppTemplateApi.modifyNetworkConnectionSection(vm.getHref(), newSection);
- assertTaskSucceeds(task);
-
- NetworkConnectionSection modified = vAppTemplateApi.getNetworkConnectionSection(vm.getHref());
- checkNetworkConnectionSection(modified);
- }
-
- // FIXME cloneVAppTemplate is giving back 500 error
@Test(description = "DELETE /vAppTemplate/{id}", dependsOnMethods = { "testGetVAppTemplate" })
public void testDeleteVAppTemplate() throws Exception {
VAppTemplate clonedVappTemplate = cloneVAppTemplate(true);
diff --git a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/VmApiLiveTest.java b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/VmApiLiveTest.java
index 27b122303c..0e65613714 100644
--- a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/VmApiLiveTest.java
+++ b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/VmApiLiveTest.java
@@ -121,7 +121,7 @@ public class VmApiLiveTest extends AbstractVAppApiLiveTest {
private boolean mediaCreated = false;
private boolean testUserCreated = false;
- @BeforeClass(alwaysRun = true, dependsOnMethods = { "setupRequiredApis" })
+ @BeforeClass(alwaysRun = true)
protected void setupRequiredEntities() {
Set links = vdcApi.getVdc(vdcURI).getLinks();
@@ -280,23 +280,20 @@ public class VmApiLiveTest extends AbstractVAppApiLiveTest {
assertVmStatus(vmURI, Status.POWERED_OFF);
}
- @Test(description = "POST /vApp/{id}/power/action/shutdown", dependsOnMethods = { "testDeployVm" })
+ @Test(description = "POST /vApp/{id}/power/action/shutdown", dependsOnMethods = { "testInstallVMwareTools" })
public void testShutdown() {
// Power on Vm
vm = powerOnVm(vm.getHref());
// The method under test
- Task shutdown = vmApi.shutdown(vmURI);
+ Task shutdown = vmApi.shutdown(vm.getHref());
assertTaskSucceedsLong(shutdown);
// Get the updated Vm
- vm = vmApi.getVm(vmURI);
+ vm = vmApi.getVm(vm.getHref());
// Check status
- assertVmStatus(vmURI, Status.POWERED_OFF);
-
- // Power on the Vm again
- vm = powerOnVm(vm.getHref());
+ assertVmStatus(vm.getHref(), Status.POWERED_OFF);
}
@Test(description = "POST /vApp/{id}/power/action/suspend", dependsOnMethods = { "testDeployVm" })
@@ -359,6 +356,7 @@ public class VmApiLiveTest extends AbstractVAppApiLiveTest {
vm = powerOnVm(vm.getHref());
// The method under test
+ // NB this will put the vm in partially powered off state
Task powerOffVm = vmApi.powerOff(vm.getHref());
assertTrue(retryTaskSuccess.apply(powerOffVm), String.format(TASK_COMPLETE_TIMELY, "powerOffVm"));
@@ -391,8 +389,8 @@ public class VmApiLiveTest extends AbstractVAppApiLiveTest {
@Test(description = "POST /vApp/{id}/action/installVMwareTools", dependsOnMethods = { "testDeployVm" })
public void testInstallVMwareTools() {
- // First ensure the vApp is powered n
- vm = powerOnVm(vm.getHref());
+ // First ensure the vApp is powered on
+ vm = powerOnVm(vm.getHref());
// The method under test
Task installVMwareTools = vmApi.installVMwareTools(vm.getHref());
@@ -420,6 +418,9 @@ public class VmApiLiveTest extends AbstractVAppApiLiveTest {
// The method under test
Task upgradeHardwareVersion = vmApi.upgradeHardwareVersion(vm.getHref());
assertTrue(retryTaskSuccess.apply(upgradeHardwareVersion), String.format(TASK_COMPLETE_TIMELY, "upgradeHardwareVersion"));
+
+ // Power on the Vm again
+ vm = powerOnVm(vm.getHref());
}
@Test(description = "GET /vApp/{id}/guestCustomizationSection", dependsOnMethods = { "testGetVm" })
@@ -438,7 +439,7 @@ public class VmApiLiveTest extends AbstractVAppApiLiveTest {
GuestCustomizationSection oldSection = vmApi.getGuestCustomizationSection(vm.getHref());
GuestCustomizationSection newSection = oldSection.toBuilder()
.computerName(name("n"))
- .enabled(Boolean.FALSE)
+ .enabled(Boolean.TRUE)
.adminPassword(null) // Not allowed
.build();
@@ -454,7 +455,7 @@ public class VmApiLiveTest extends AbstractVAppApiLiveTest {
// Check the modified section fields are set correctly
assertEquals(modified.getComputerName(), newSection.getComputerName());
- assertFalse(modified.isEnabled());
+ assertTrue(modified.isEnabled());
// Reset the admin password in the retrieved GuestCustomizationSection for equality check
modified = modified.toBuilder().adminPassword(null).build();
@@ -499,8 +500,9 @@ public class VmApiLiveTest extends AbstractVAppApiLiveTest {
}
// FIXME "Task error: Unable to perform this action. Contact your cloud administrator."
- @Test(description = "PUT /vApp/{id}/networkConnectionSection", dependsOnMethods = { "testGetNetworkConnectionSection" })
+ @Test(description = "PUT /vApp/{id}/networkConnectionSection", dependsOnMethods = { "testModifyGuestCustomizationSection" })
public void testModifyNetworkConnectionSection() {
+ powerOffVm(vm.getHref());
// Look up a network in the Vdc
Set networks = vdc.getAvailableNetworks();
Reference network = Iterables.getLast(networks);
@@ -574,6 +576,7 @@ public class VmApiLiveTest extends AbstractVAppApiLiveTest {
@Test(description = "PUT /vApp/{id}/productSections", dependsOnMethods = { "testGetProductSections" })
public void testModifyProductSections() {
+ powerOffVm(vm.getHref());
// Copy existing section and update fields
ProductSectionList oldSections = vmApi.getProductSections(vm.getHref());
ProductSectionList newSections = oldSections.toBuilder()
@@ -600,7 +603,7 @@ public class VmApiLiveTest extends AbstractVAppApiLiveTest {
assertEquals(modified.getProductSections().size(), oldSections.getProductSections().size() + 1);
// Check the section was modified correctly
- assertEquals(modified, newSections, String.format(ENTITY_EQUAL, "ProductSectionList"));
+ assertEquals(modified, newSections);
}
// FIXME How do we force it to ask a question?
@@ -646,7 +649,7 @@ public class VmApiLiveTest extends AbstractVAppApiLiveTest {
}
// FIXME If still failing, consider escalating?
- @Test(description = "GET /vApp/{id}/screen", dependsOnMethods = { "testDeployVm" })
+ @Test(description = "GET /vApp/{id}/screen", dependsOnMethods = { "testInstallVMwareTools" })
public void testGetScreenImage() {
// Power on Vm
vm = powerOnVm(vm.getHref());
@@ -933,18 +936,23 @@ public class VmApiLiveTest extends AbstractVAppApiLiveTest {
checkMetadata(metadata);
// Check requirements for this test
- assertFalse(Iterables.isEmpty(metadata.getMetadataEntries()), String.format(NOT_EMPTY_OBJECT_FMT, "MetadataEntry", "vm"));
+ assertTrue(Iterables.isEmpty(metadata.getMetadataEntries()), String.format(NOT_EMPTY_OBJECT_FMT, "MetadataEntry", "vm"));
}
@Test(description = "GET /vApp/{id}/metadata/{key}", dependsOnMethods = { "testGetMetadata" })
public void testGetOrgMetadataValue() {
+ key = name("key-");
+ String value = name("value-");
+ metadataValue = MetadataValue.builder().value(value).build();
+ vmApi.getMetadataApi().setMetadata(vm.getHref(), key, metadataValue);
+
// Call the method being tested
- MetadataValue value = vmApi.getMetadataApi().getMetadataValue(vm.getHref(), key);
+ MetadataValue metadataValue = vmApi.getMetadataApi().getMetadataValue(vm.getHref(), key);
String expected = metadataValue.getValue();
- checkMetadataValue(value);
- assertEquals(value.getValue(), expected, String.format(CORRECT_VALUE_OBJECT_FMT, "Value", "MetadataValue", expected, value.getValue()));
+ checkMetadataValue(metadataValue);
+ assertEquals(metadataValue.getValue(), expected, String.format(CORRECT_VALUE_OBJECT_FMT, "Value", "MetadataValue", expected, metadataValue.getValue()));
}
@Test(description = "DELETE /vApp/{id}/metadata/{key}", dependsOnMethods = { "testSetMetadataValue" })
@@ -1002,11 +1010,17 @@ public class VmApiLiveTest extends AbstractVAppApiLiveTest {
// Get the updated VApp and the Vm
delete = vAppApi.getVApp(delete.getHref());
- Vm temp = Iterables.getOnlyElement(delete.getChildren().getVms());
-
- // Power off the Vm
- temp = powerOffVm(temp.getHref());
+ List vms = delete.getChildren().getVms();
+ Vm temp = Iterables.get(vms, 0);
+ // otherwise it's impossible to stop a running vApp with no vms
+ if(vms.size() == 1) {
+ UndeployVAppParams undeployParams = UndeployVAppParams.builder().build();
+ Task shutdownVapp = vAppApi.undeploy(delete.getHref(), undeployParams);
+ assertTaskSucceedsLong(shutdownVapp);
+ } else {
+ powerOffVm(temp.getHref());
+ }
// The method under test
Task deleteVm = vmApi.deleteVm(temp.getHref());
assertTrue(retryTaskSuccess.apply(deleteVm), String.format(TASK_COMPLETE_TIMELY, "deleteVm"));