You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jclouds.apache.org by ad...@apache.org on 2014/11/17 17:21:16 UTC
[09/32] jclouds-labs git commit: JCLOUDS-780 Remove vcloud-director.
http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/775b89fd/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/VAppTemplateApiLiveTest.java
----------------------------------------------------------------------
diff --git a/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/VAppTemplateApiLiveTest.java b/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/VAppTemplateApiLiveTest.java
deleted file mode 100644
index 2ebc07e..0000000
--- a/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/VAppTemplateApiLiveTest.java
+++ /dev/null
@@ -1,332 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.jclouds.vcloud.director.v1_5.features;
-
-import static org.jclouds.vcloud.director.v1_5.domain.Checks.checkCustomizationSection;
-import static org.jclouds.vcloud.director.v1_5.domain.Checks.checkLeaseSettingsSection;
-import static org.jclouds.vcloud.director.v1_5.domain.Checks.checkMetadata;
-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.checkNetworkConfigSection;
-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;
-import static org.jclouds.vcloud.director.v1_5.domain.Checks.checkProductSectionList;
-import static org.jclouds.vcloud.director.v1_5.domain.Checks.checkVAppTemplate;
-import static org.jclouds.vcloud.director.v1_5.domain.Checks.metadataToMap;
-import static org.testng.Assert.assertEquals;
-import static org.testng.Assert.assertNotNull;
-import static org.testng.Assert.assertNull;
-import static org.testng.Assert.assertTrue;
-import static org.testng.Assert.fail;
-
-import java.net.URI;
-import java.util.EnumSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import org.jclouds.dmtf.ovf.NetworkSection;
-import org.jclouds.vcloud.director.v1_5.AbstractVAppApiLiveTest;
-import org.jclouds.vcloud.director.v1_5.domain.Link;
-import org.jclouds.vcloud.director.v1_5.domain.Link.Rel;
-import org.jclouds.vcloud.director.v1_5.domain.Metadata;
-import org.jclouds.vcloud.director.v1_5.domain.MetadataEntry;
-import org.jclouds.vcloud.director.v1_5.domain.Owner;
-import org.jclouds.vcloud.director.v1_5.domain.ProductSectionList;
-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.dmtf.Envelope;
-import org.jclouds.vcloud.director.v1_5.domain.params.CloneVAppTemplateParams;
-import org.jclouds.vcloud.director.v1_5.domain.section.CustomizationSection;
-import org.jclouds.vcloud.director.v1_5.domain.section.LeaseSettingsSection;
-import org.jclouds.vcloud.director.v1_5.domain.section.NetworkConfigSection;
-import org.testng.annotations.AfterClass;
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.Test;
-
-import com.google.common.base.Function;
-import com.google.common.base.Predicates;
-import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.Iterables;
-
-/**
- * NOTE The environment MUST have at least one template configured
- */
-@Test(groups = { "live", "user" }, singleThreaded = true, testName = "VAppTemplateApiLiveTest")
-public class VAppTemplateApiLiveTest extends AbstractVAppApiLiveTest {
-
- private URI vAppTemplateHref;
- private String key;
- private String val;
-
- @BeforeClass
- void setUp() {
- vAppTemplateHref = context.resolveIdToHref(vAppTemplateId);
- }
-
- @AfterClass(alwaysRun = true, dependsOnMethods = { "cleanUpEnvironment" })
- protected void tidyUp() {
- if (key != null) {
- try {
- Task remove = context.getApi().getMetadataApi(vAppTemplateHref).remove(key);
- taskDoneEventually(remove);
- } catch (Exception e) {
- logger.warn(e, "Error when deleting metadata entry '%s'", key);
- }
- }
- }
-
- private VAppTemplate cloneVAppTemplate(boolean waitForTask) throws Exception {
- CloneVAppTemplateParams cloneVAppTemplateParams = CloneVAppTemplateParams.builder()
- .source(Reference.builder().href(lazyGetVAppTemplate().getHref()).build()).isSourceDelete(false)
- .name("clone").build();
- VAppTemplate clonedVappTemplate = vdcApi
- .cloneVAppTemplate(context.resolveIdToHref(vdcId), cloneVAppTemplateParams);
-
- if (waitForTask) {
- Task cloneTask = Iterables.getFirst(clonedVappTemplate.getTasks(), null);
- assertNotNull(cloneTask, "vdcApi.cloneVAppTemplate returned VAppTemplate that did not contain any tasks");
- assertTaskSucceeds(cloneTask);
- }
- return clonedVappTemplate;
- }
-
- @Test(description = "GET /vAppTemplate/{id}")
- public void testGetVAppTemplate() {
- vAppTemplate = vAppTemplateApi.get(vAppTemplateHref);
-
- checkVAppTemplate(vAppTemplate);
- assertEquals(vAppTemplate.getId(), vAppTemplateId);
- }
-
- @Test(description = "GET /vAppTemplate/{id}/owner")
- public void testGetVAppTemplateOwner() {
- Owner owner = vAppTemplateApi.getOwner(vAppTemplateHref);
-
- checkOwner(owner);
- assertEquals(owner.getUser(), vAppTemplateApi.get(vAppTemplateHref).getOwner().getUser());
- }
-
- @Test(description = "GET /vAppTemplate/{id}/customizationSection")
- public void testGetCustomizationSection() {
- CustomizationSection customizationSection = vAppTemplateApi.getCustomizationSection(vAppTemplateHref);
-
- checkCustomizationSection(customizationSection);
- }
-
- @Test(description = "GET /vAppTemplate/{id}/productSections")
- public void testGetProductSections() {
- ProductSectionList productSectionList = vAppTemplateApi.getProductSections(vAppTemplateHref);
-
- checkProductSectionList(productSectionList);
- }
-
- @Test(description = "GET /vAppTemplate/{id}/leaseSettingsSection")
- public void testGetLeaseSettingsSection() {
- LeaseSettingsSection leaseSettingsSection = vAppTemplateApi.getLeaseSettingsSection(vAppTemplateHref);
-
- checkLeaseSettingsSection(leaseSettingsSection);
- }
-
- @Test(description = "GET /vAppTemplate/{id}/metadata", dependsOnMethods = { "testEditMetadataValue" })
- public void testGetVAppTemplateMetadata() {
- Metadata metadata = context.getApi().getMetadataApi(vAppTemplateHref).get();
-
- checkMetadata(metadata);
- }
-
- // implicitly tested by testEditVAppTemplateMetadataValue, which first adds the metadata entry;
- // otherwise no entry may exist
- @Test(description = "GET /vAppTemplate/{id}/metadata/{key}", dependsOnMethods = { "testGetVAppTemplateMetadata" })
- public void testGetMetadataValue() {
- Metadata metadata = context.getApi().getMetadataApi(vAppTemplateHref).get();
- MetadataEntry entry = Iterables.get(metadata.getMetadataEntries(), 0);
-
- String val = context.getApi().getMetadataApi(vAppTemplateHref).get(entry.getKey());
-
- assertEquals(val, entry.getValue());
- }
-
- @Test(description = "GET /vAppTemplate/{id}/networkConfigSection")
- public void testGetVAppTemplateNetworkConfigSection() {
- NetworkConfigSection networkConfigSection = vAppTemplateApi.getNetworkConfigSection(vAppTemplateHref);
-
- checkNetworkConfigSection(networkConfigSection);
- }
-
- @Test(description = "GET /vAppTemplate/{id}/networkSection")
- public void testGetVAppTemplateNetworkSection() {
- NetworkSection networkSection = vAppTemplateApi.getNetworkSection(vAppTemplateHref);
-
- checkOvfNetworkSection(networkSection);
- }
-
- @Test(description = "GET /vAppTemplate/{id}/ovf")
- public void testGetVAppTemplateOvf() {
- Envelope envelope = vAppTemplateApi.getOvf(vAppTemplateHref);
-
- checkOvfEnvelope(envelope);
- }
-
- @Test(description = "PUT /vAppTemplate/{id}")
- public void testEditVAppTemplate() {
- String name = name("myname-");
- String description = name("Description ");
- VAppTemplate template = VAppTemplate.builder().name(name).description(description).build();
-
- final Task task = vAppTemplateApi.edit(vAppTemplateHref, template);
- assertTaskSucceeds(task);
-
- VAppTemplate newTemplate = vAppTemplateApi.get(vAppTemplateHref);
- assertEquals(newTemplate.getName(), name);
- assertEquals(newTemplate.getDescription(), description);
- }
-
- @Test(description = "POST /vAppTemplate/{id}/metadata", dependsOnMethods = { "testGetVAppTemplate" })
- public void testEditMetadata() {
- Metadata oldMetadata = context.getApi().getMetadataApi(vAppTemplateHref).get();
- Map<String, String> oldMetadataMap = metadataToMap(oldMetadata);
-
- key = name("key-");
- val = name("value-");
-
- final Task task = context.getApi().getMetadataApi(vAppTemplateHref).putAll(ImmutableMap.of(key, val));
- assertTaskSucceeds(task);
-
- Metadata newMetadata = context.getApi().getMetadataApi(vAppTemplateHref).get();
- Map<String, String> expectedMetadataMap = ImmutableMap.<String, String> builder().putAll(oldMetadataMap)
- .put(key, val).build();
- checkMetadataFor("vAppTemplate", newMetadata, expectedMetadataMap);
- }
-
- @Test(description = "PUT /vAppTemplate/{id}/metadata/{key}", dependsOnMethods = { "testEditMetadata" })
- public void testEditMetadataValue() {
- val = "new" + val;
-
- final Task task = context.getApi().getMetadataApi(vAppTemplateHref).put(key, val);
- retryTaskSuccess.apply(task);
-
- String newMetadataValue = context.getApi().getMetadataApi(vAppTemplateHref).get(key);
- assertEquals(newMetadataValue, val);
- }
-
- @Test(description = "DELETE /vAppTemplate/{id}/metadata/{key}", dependsOnMethods = { "testGetMetadataValue" })
- public void testRemoveVAppTemplateMetadataValue() {
- final Task deletionTask = context.getApi().getMetadataApi(vAppTemplateHref).remove(key);
- assertTaskSucceeds(deletionTask);
-
- Metadata newMetadata = context.getApi().getMetadataApi(vAppTemplateHref).get();
- checkMetadataKeyAbsentFor("vAppTemplate", newMetadata, key);
- key = null;
- }
-
- // NOTE vAppTemplate supports only storageLease (deployment lease applies to vApp too)
- @Test(description = "PUT /vAppTemplate/{id}/leaseSettingsSection")
- public void testEditLeaseSettingsSection() throws Exception {
- // 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).build();
-
- final Task task = vAppTemplateApi.editLeaseSettingsSection(vAppTemplateHref, leaseSettingSection);
- assertTaskSucceeds(task);
-
- LeaseSettingsSection newLeaseSettingsSection = vAppTemplateApi.getLeaseSettingsSection(vAppTemplateHref);
- assertEquals(newLeaseSettingsSection.getStorageLeaseInSeconds(), (Integer) storageLeaseInSeconds);
- }
-
- @Test(description = "DELETE /vAppTemplate/{id}", dependsOnMethods = { "testGetVAppTemplate" })
- public void testRemoveVAppTemplate() throws Exception {
- VAppTemplate clonedVappTemplate = cloneVAppTemplate(true);
-
- // Confirm that "get" works pre-remove
- VAppTemplate vAppTemplatePreDelete = vAppTemplateApi.get(clonedVappTemplate.getHref());
- checkVAppTemplate(vAppTemplatePreDelete);
-
- // Delete the template
- final Task task = vAppTemplateApi.remove(clonedVappTemplate.getHref());
- assertTaskSucceeds(task);
-
- // Confirm that can't access post-remove, i.e. template has been removed
- VAppTemplate removed = vAppTemplateApi.get(clonedVappTemplate.getHref());
- assertNull(removed);
- }
-
- @Test(description = "POST /vAppTemplate/{id}/action/disableDownload")
- public void testDisableVAppTemplateDownload() throws Exception {
- vAppTemplateApi.disableDownload(vAppTemplateHref);
-
- // TODO Check that it really is disabled. The only thing I can see for determining this
- // is the undocumented "download" link in the VAppTemplate. But that is brittle and we
- // don't know what timing guarantees there are for adding/removing the link.
- VAppTemplate vAppTemplate = vAppTemplateApi.get(vAppTemplateHref);
- Set<Link> links = vAppTemplate.getLinks();
- assertTrue(Iterables.all(Iterables.transform(links, rel),
- Predicates.not(Predicates.in(EnumSet.of(Link.Rel.DOWNLOAD_DEFAULT, Link.Rel.DOWNLOAD_ALTERNATE)))),
- "Should not offer download link after disabling download: " + vAppTemplate);
- }
-
- @Test(description = "POST /vAppTemplate/{id}/action/enableDownload")
- public void testEnableVAppTemplateDownload() throws Exception {
- // First disable so that enable really has some work to do...
- vAppTemplateApi.disableDownload(vAppTemplateHref);
- final Task task = vAppTemplateApi.enableDownload(vAppTemplateHref);
- assertTaskSucceedsLong(task);
-
- // TODO Check that it really is enabled. The only thing I can see for determining this
- // is the undocumented "download" link in the VAppTemplate. But that is brittle and we
- // don't know what timing guarantees there are for adding/removing the link.
- VAppTemplate vAppTemplate = vAppTemplateApi.get(vAppTemplateHref);
- Set<Link> links = vAppTemplate.getLinks();
- assertTrue(
- Iterables.any(Iterables.transform(links, rel),
- Predicates.in(EnumSet.of(Link.Rel.DOWNLOAD_DEFAULT, Link.Rel.DOWNLOAD_ALTERNATE))),
- "Should offer download link after enabling download: " + vAppTemplate);
- }
-
- private Function<Link, Link.Rel> rel = new Function<Link, Link.Rel>() {
- @Override
- public Rel apply(Link input) {
- return input.getRel();
- }
- };
-
- // This failed previously, but is passing now.
- // However, it's not part of the official API so not necessary to assert it.
- @Test(description = "test completed task not included in vAppTemplate")
- public void testCompletedTaskNotIncludedInVAppTemplate() throws Exception {
- // Kick off a task, and wait for it to complete
- vAppTemplateApi.disableDownload(vAppTemplateHref);
- final Task task = vAppTemplateApi.enableDownload(vAppTemplateHref);
- assertTaskDoneEventually(task);
-
- // Ask the VAppTemplate for its tasks, and the status of the matching task if it exists
- VAppTemplate vAppTemplate = vAppTemplateApi.get(vAppTemplateHref);
- List<Task> tasks = vAppTemplate.getTasks();
- for (Task contender : tasks) {
- if (task.getId().equals(contender.getId())) {
- Task.Status status = contender.getStatus();
- if (EnumSet.of(Task.Status.QUEUED, Task.Status.PRE_RUNNING, Task.Status.RUNNING).contains(status)) {
- fail("Task " + contender + " reported complete, but is included in VAppTemplate in status " + status);
- }
- }
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/775b89fd/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/VdcApiExpectTest.java
----------------------------------------------------------------------
diff --git a/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/VdcApiExpectTest.java b/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/VdcApiExpectTest.java
deleted file mode 100644
index ddcd6b7..0000000
--- a/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/VdcApiExpectTest.java
+++ /dev/null
@@ -1,575 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.jclouds.vcloud.director.v1_5.features;
-
-import static org.testng.Assert.assertEquals;
-import static org.testng.Assert.assertNull;
-import static org.testng.Assert.fail;
-
-import java.net.URI;
-import java.text.ParseException;
-
-import org.jclouds.vcloud.director.v1_5.VCloudDirectorException;
-import org.jclouds.vcloud.director.v1_5.VCloudDirectorMediaType;
-import org.jclouds.vcloud.director.v1_5.domain.Capabilities;
-import org.jclouds.vcloud.director.v1_5.domain.CapacityWithUsage;
-import org.jclouds.vcloud.director.v1_5.domain.ComputeCapacity;
-import org.jclouds.vcloud.director.v1_5.domain.Error;
-import org.jclouds.vcloud.director.v1_5.domain.Link;
-import org.jclouds.vcloud.director.v1_5.domain.Media;
-import org.jclouds.vcloud.director.v1_5.domain.Media.ImageType;
-import org.jclouds.vcloud.director.v1_5.domain.Metadata;
-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.User;
-import org.jclouds.vcloud.director.v1_5.domain.VApp;
-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.params.CaptureVAppParams;
-import org.jclouds.vcloud.director.v1_5.domain.params.CloneMediaParams;
-import org.jclouds.vcloud.director.v1_5.domain.params.CloneVAppParams;
-import org.jclouds.vcloud.director.v1_5.domain.params.CloneVAppTemplateParams;
-import org.jclouds.vcloud.director.v1_5.domain.params.ComposeVAppParams;
-import org.jclouds.vcloud.director.v1_5.domain.params.InstantiateVAppTemplateParams;
-import org.jclouds.vcloud.director.v1_5.domain.params.UploadVAppTemplateParams;
-import org.jclouds.vcloud.director.v1_5.internal.VCloudDirectorAdminApiExpectTest;
-import org.jclouds.vcloud.director.v1_5.user.VCloudDirectorApi;
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.Test;
-
-@Test(groups = { "unit", "user" }, singleThreaded = true, testName = "VdcApiExpectTest")
-public class VdcApiExpectTest extends VCloudDirectorAdminApiExpectTest {
-
- private URI vdcURI;
-
- @BeforeClass
- public void before() {
- String vdcId = "e9cd3387-ac57-4d27-a481-9bee75e0690f";
- vdcURI = URI.create(endpoint + "/vdc/" + vdcId);
- }
-
- @Test
- public void testGetVdc() {
- VCloudDirectorApi api = requestsSendResponses(loginRequest, sessionResponse,
- new VcloudHttpRequestPrimer()
- .apiCommand("GET", "/vdc/e9cd3387-ac57-4d27-a481-9bee75e0690f")
- .acceptAnyMedia()
- .httpRequestBuilder().build(),
- new VcloudHttpResponsePrimer()
- .xmlFilePayload("/vdc/vdc.xml", VCloudDirectorMediaType.VDC)
- .httpResponseBuilder().build());
-
- Vdc expected = getVdc();
-
- assertEquals(api.getVdcApi().get(vdcURI), expected);
- }
-
- @Test
- public void testResponse400ForInvalidVdcId() {
-
- VCloudDirectorApi api = requestsSendResponses(loginRequest, sessionResponse,
- new VcloudHttpRequestPrimer()
- .apiCommand("GET", "/vdc/NOTAUUID")
- .acceptAnyMedia()
- .httpRequestBuilder().build(),
- new VcloudHttpResponsePrimer()
- .xmlFilePayload("/vdc/error400.xml", VCloudDirectorMediaType.ERROR)
- .httpResponseBuilder().statusCode(400).build());
-
- Error expected = Error.builder()
- .message("validation error : EntityRef has incorrect type, expected type is com.vmware.vcloud.entity.vdc.")
- .majorErrorCode(400)
- .minorErrorCode("BAD_REQUEST")
- .build();
-
- try {
- api.getVdcApi().get(URI.create(endpoint + "/vdc/NOTAUUID"));
- fail("Should give HTTP 400 error");
- } catch (VCloudDirectorException vde) {
- assertEquals(vde.getError(), expected);
- }
- }
-
- @Test
- public void testResponse403ForFakeVdcId() {
-
- VCloudDirectorApi api = requestsSendResponses(loginRequest, sessionResponse,
- new VcloudHttpRequestPrimer()
- .apiCommand("GET", "/vdc/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee")
- .acceptAnyMedia()
- .httpRequestBuilder().build(),
- new VcloudHttpResponsePrimer()
- .xmlFilePayload("/vdc/error403-fake.xml", VCloudDirectorMediaType.ERROR)
- .httpResponseBuilder().statusCode(403).build());
-
- assertNull(api.getVdcApi().get(URI.create(endpoint + "/vdc/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee")));
- }
-
- @Test(enabled = false)
- public void testCaptureVApp() {
- VCloudDirectorApi api = requestsSendResponses(loginRequest, sessionResponse,
- new VcloudHttpRequestPrimer()
- .apiCommand("POST", "/vdc/e9cd3387-ac57-4d27-a481-9bee75e0690f/action/captureVApp")
- .xmlFilePayload("/vdc/params/captureVApp.xml", VCloudDirectorMediaType.CAPTURE_VAPP_PARAMS)
- .acceptAnyMedia()
- .httpRequestBuilder().build(),
- new VcloudHttpResponsePrimer()
- .xmlFilePayload("/vdc/vdc.xml", VCloudDirectorMediaType.VDC)
- .httpResponseBuilder().build());
-
- VAppTemplate expected = captureVApp();
-
- // TODO: configure params
- CaptureVAppParams params = CaptureVAppParams.builder()
-
- .build();
-
- assertEquals(api.getVdcApi().captureVApp(vdcURI, params), expected);
- }
-
- @Test(enabled = false)
- public void testResponse4xxForCaptureVAppNoParams() {
- VCloudDirectorApi api = requestsSendResponses(loginRequest, sessionResponse,
- new VcloudHttpRequestPrimer()
- .apiCommand("POST", "/vdc/e9cd3387-ac57-4d27-a481-9bee75e0690f/action/captureVApp")
- .xmlFilePayload("/vdc/params/captureVApp.xml", VCloudDirectorMediaType.CAPTURE_VAPP_PARAMS)
- .acceptAnyMedia()
- .httpRequestBuilder().build(),
- new VcloudHttpResponsePrimer()
- .xmlFilePayload("/vdc/param/error400.xml", VCloudDirectorMediaType.ERROR)
- .httpResponseBuilder().statusCode(400).build());
-
- Error expected = Error.builder()
- .message("?")
- .majorErrorCode(400)
- .minorErrorCode("BAD_REQUEST")
- .build();
-
- try {
- api.getVdcApi().captureVApp(vdcURI, null);
- fail("Should give HTTP 400 error");
- } catch (VCloudDirectorException vde) {
- assertEquals(vde.getError(), expected);
- }
- }
-
- @Test(enabled = false)
- public void testCloneVApp() {
- VCloudDirectorApi api = requestsSendResponses(loginRequest, sessionResponse,
- new VcloudHttpRequestPrimer()
- .apiCommand("POST", "/vdc/e9cd3387-ac57-4d27-a481-9bee75e0690f/action/cloneVAppTemplate")
- .xmlFilePayload("/vdc/params/cloneVApp.xml", VCloudDirectorMediaType.CLONE_VAPP_PARAMS)
- .acceptAnyMedia()
- .httpRequestBuilder().build(),
- new VcloudHttpResponsePrimer()
- .xmlFilePayload("/vdc/cloneVApp.xml", VCloudDirectorMediaType.VAPP)
- .httpResponseBuilder().build());
-
- VApp expected = cloneVApp();
-
- // TODO: configure params
- CloneVAppParams params = CloneVAppParams.builder()
-
- .build();
-
- assertEquals(api.getVdcApi().cloneVApp(vdcURI, params), expected);
- }
-
- @Test(enabled = false)
- public void testCloneVAppTemplate() {
- VCloudDirectorApi api = requestsSendResponses(loginRequest, sessionResponse,
- new VcloudHttpRequestPrimer()
- .apiCommand("POST", "/vdc/e9cd3387-ac57-4d27-a481-9bee75e0690f/action/cloneVAppTemplate")
- .xmlFilePayload("/vdc/params/cloneVAppTemplate.xml", VCloudDirectorMediaType.CLONE_VAPP_TEMPLATE_PARAMS)
- .acceptAnyMedia()
- .httpRequestBuilder().build(),
- new VcloudHttpResponsePrimer()
- .xmlFilePayload("/vdc/cloneVAppTemplate.xml", VCloudDirectorMediaType.VAPP_TEMPLATE)
- .httpResponseBuilder().build());
-
- VAppTemplate expected = cloneVAppTemplate();
-
- // TODO: configure params
- CloneVAppTemplateParams params = CloneVAppTemplateParams.builder()
-
- .build();
-
- assertEquals(api.getVdcApi().cloneVAppTemplate(vdcURI, params), expected);
- }
-
- @Test(enabled = false)
- public void testComposeVApp() throws ParseException {
- VCloudDirectorApi api = requestsSendResponses(loginRequest, sessionResponse,
- new VcloudHttpRequestPrimer()
- .apiCommand("POST", "/vdc/e9cd3387-ac57-4d27-a481-9bee75e0690f/action/composeVApp")
- .xmlFilePayload("/vdc/composeVAppParams.xml", VCloudDirectorMediaType.COMPOSE_VAPP_PARAMS)
- .acceptAnyMedia()
- .httpRequestBuilder().build(),
- new VcloudHttpResponsePrimer()
- .xmlFilePayload("/vdc/composeVApp.xml", VCloudDirectorMediaType.VAPP)
- .httpResponseBuilder().build());
-
- VApp expected = composeVApp();
-
- // TODO: configure params
- ComposeVAppParams params = ComposeVAppParams.builder()
-
- .build();
-
- assertEquals(api.getVdcApi().composeVApp(vdcURI, params), expected);
- }
-
- @Test(enabled = false)
- public void testInstantiateVAppTemplate() {
- VCloudDirectorApi api = requestsSendResponses(loginRequest, sessionResponse,
- new VcloudHttpRequestPrimer()
- .apiCommand("POST", "/vdc/e9cd3387-ac57-4d27-a481-9bee75e0690f/action/instantiateVAppTemplate")
- .xmlFilePayload("/vdc/params/instantiateVAppTemplate.xml", VCloudDirectorMediaType.CAPTURE_VAPP_PARAMS)
- .acceptAnyMedia()
- .httpRequestBuilder().build(),
- new VcloudHttpResponsePrimer()
- .xmlFilePayload("/vdc/instantiateVAppTemplate.xml", VCloudDirectorMediaType.VAPP)
- .httpResponseBuilder().build());
-
- VApp expected = instantiateVAppTemplate();
-
- // TODO: configure params
- InstantiateVAppTemplateParams params = InstantiateVAppTemplateParams.builder()
-
- .build();
-
- assertEquals(api.getVdcApi().instantiateVApp(vdcURI, params), expected);
- }
-
- @Test(enabled = false)
- public void testUploadVAppTemplate() {
- VCloudDirectorApi api = requestsSendResponses(loginRequest, sessionResponse,
- new VcloudHttpRequestPrimer()
- .apiCommand("POST", "/vdc/e9cd3387-ac57-4d27-a481-9bee75e0690f/action/uploadVAppTemplate")
- .xmlFilePayload("/vdc/params/uploadVAppTemplate.xml", VCloudDirectorMediaType.UPLOAD_VAPP_TEMPLATE_PARAMS)
- .acceptAnyMedia()
- .httpRequestBuilder().build(),
- new VcloudHttpResponsePrimer()
- .xmlFilePayload("/vdc/uploadVAppTemplate.xml", VCloudDirectorMediaType.VAPP_TEMPLATE)
- .httpResponseBuilder().build());
-
- VAppTemplate expected = uploadVAppTemplate();
-
- // TODO: configure params
- UploadVAppTemplateParams params = UploadVAppTemplateParams.builder()
-
- .build();
-
- assertEquals(api.getVdcApi().uploadVAppTemplate(vdcURI, params), expected);
- }
-
- @Test
- public void testAddMedia() {
- URI vdcUri = URI.create(endpoint + "/vdc/e9cd3387-ac57-4d27-a481-9bee75e0690f");
-
- VCloudDirectorApi api = requestsSendResponses(loginRequest, sessionResponse,
- new VcloudHttpRequestPrimer()
- .apiCommand("POST", "/vdc/e9cd3387-ac57-4d27-a481-9bee75e0690f/media")
- .acceptMedia(VCloudDirectorMediaType.MEDIA)
- .xmlFilePayload("/media/addMediaSource.xml", VCloudDirectorMediaType.MEDIA)
- .httpRequestBuilder().build(),
- new VcloudHttpResponsePrimer()
- .xmlFilePayload("/media/addMedia.xml", VCloudDirectorMediaType.MEDIA)
- .httpResponseBuilder().statusCode(201).build());
-
- Media source = Media.builder()
- .size(0)
- .imageType(ImageType.ISO)
- .name("Test media 1")
- .type("application/vnd.vmware.vcloud.media+xml")
- .description("Test media generated by testCreateMedia()")
- .build();
- Media expected = MediaApiExpectTest.addMedia();
-
- assertEquals(api.getVdcApi().addMedia(vdcUri, source), expected);
- }
-
- @Test
- public void testCloneMedia() {
- URI vdcUri = URI.create(endpoint + "/vdc/e9cd3387-ac57-4d27-a481-9bee75e0690f");
-
- VCloudDirectorApi api = requestsSendResponses(loginRequest, sessionResponse,
- new VcloudHttpRequestPrimer()
- .apiCommand("POST", "/vdc/e9cd3387-ac57-4d27-a481-9bee75e0690f/action/cloneMedia")
- .acceptMedia(VCloudDirectorMediaType.MEDIA)
- .xmlFilePayload("/media/cloneMediaParams.xml", VCloudDirectorMediaType.CLONE_MEDIA_PARAMS)
- .httpRequestBuilder().build(),
- new VcloudHttpResponsePrimer()
- .xmlFilePayload("/media/cloneMedia.xml", VCloudDirectorMediaType.MEDIA)
- .httpResponseBuilder().statusCode(201).build());
-
- CloneMediaParams params = CloneMediaParams.builder()
- .name("moved test media")
- .description("moved by testCloneMedia()")
- .source(Reference.builder()
- .type("application/vnd.vmware.vcloud.media+xml")
- .name("copied test media")
- .href(URI.create("https://mycloud.greenhousedata.com/api/media/da8361af-cccd-4103-a71c-493513c49094"))
- .build())
- .isSourceDelete(false)
- .build();
- Media expected = MediaApiExpectTest.cloneMedia();
-
- assertEquals(api.getVdcApi().cloneMedia(vdcUri, params), expected);
- }
-
- @Test(enabled = false)
- public void testGetMetadata() {
- URI vdcUri = URI.create(endpoint + "/vdc/e9cd3387-ac57-4d27-a481-9bee75e0690f");
-
- VCloudDirectorApi api = requestsSendResponses(loginRequest, sessionResponse,
- new VcloudHttpRequestPrimer()
- .apiCommand("GET", "/vdc/e9cd3387-ac57-4d27-a481-9bee75e0690f/metadata")
- .acceptAnyMedia()
- .httpRequestBuilder().build(),
- new VcloudHttpResponsePrimer()
- .xmlFilePayload("/vdc/metadata.xml", VCloudDirectorMediaType.METADATA)
- .httpResponseBuilder().build());
-
- Metadata expected = metadata();
-
- assertEquals(api.getMetadataApi(vdcUri).get(), expected);
- }
-
- @Test(enabled = false)
- public void testGetMetadataValue() {
- URI vdcUri = URI.create("https://vcloudbeta.bluelock.com/api/vdc/e9cd3387-ac57-4d27-a481-9bee75e0690f");
-
- VCloudDirectorApi api = requestsSendResponses(loginRequest, sessionResponse,
- new VcloudHttpRequestPrimer()
- .apiCommand("GET", "/vdc/e9cd3387-ac57-4d27-a481-9bee75e0690f/metadata/key")
- .acceptAnyMedia()
- .httpRequestBuilder().build(),
- new VcloudHttpResponsePrimer()
- .xmlFilePayload("/vdc/metadataValue.xml", VCloudDirectorMediaType.METADATA_VALUE)
- .httpResponseBuilder().build());
-
- assertEquals(api.getMetadataApi(vdcUri).get("key"), "");
- }
-
- public static Vdc getVdc() {
- return Vdc.builder()
- .status(1)
- .name("orgVDC-cloudsoft-Tier1-PAYG")
- .id("urn:vcloud:vdc:e9cd3387-ac57-4d27-a481-9bee75e0690f")
- .type("application/vnd.vmware.vcloud.vdc+xml")
- .href(URI.create("https://mycloud.greenhousedata.com/api/vdc/e9cd3387-ac57-4d27-a481-9bee75e0690f"))
- .link(Link.builder()
- .rel("up")
- .type("application/vnd.vmware.vcloud.org+xml")
- .href(URI.create("https://mycloud.greenhousedata.com/api/org/c076f90a-397a-49fa-89b8-b294c1599cd0"))
- .build())
- .link(Link.builder()
- .rel("down")
- .type("application/vnd.vmware.vcloud.metadata+xml")
- .href(URI.create("https://mycloud.greenhousedata.com/api/vdc/e9cd3387-ac57-4d27-a481-9bee75e0690f/metadata"))
- .build())
- .link(Link.builder()
- .rel("add")
- .type("application/vnd.vmware.vcloud.uploadVAppTemplateParams+xml")
- .href(URI.create("https://mycloud.greenhousedata.com/api/vdc/e9cd3387-ac57-4d27-a481-9bee75e0690f/action/uploadVAppTemplate"))
- .build())
- .link(Link.builder()
- .rel("add")
- .type("application/vnd.vmware.vcloud.media+xml")
- .href(URI.create("https://mycloud.greenhousedata.com/api/vdc/e9cd3387-ac57-4d27-a481-9bee75e0690f/media"))
- .build())
- .link(Link.builder()
- .rel("add")
- .type("application/vnd.vmware.vcloud.instantiateVAppTemplateParams+xml")
- .href(URI.create("https://mycloud.greenhousedata.com/api/vdc/e9cd3387-ac57-4d27-a481-9bee75e0690f/action/instantiateVAppTemplate"))
- .build())
- .link(Link.builder()
- .rel("add")
- .type("application/vnd.vmware.vcloud.cloneVAppParams+xml")
- .href(URI.create("https://mycloud.greenhousedata.com/api/vdc/e9cd3387-ac57-4d27-a481-9bee75e0690f/action/cloneVApp"))
- .build())
- .link(Link.builder()
- .rel("add")
- .type("application/vnd.vmware.vcloud.cloneVAppTemplateParams+xml")
- .href(URI.create("https://mycloud.greenhousedata.com/api/vdc/e9cd3387-ac57-4d27-a481-9bee75e0690f/action/cloneVAppTemplate"))
- .build())
- .link(Link.builder()
- .rel("add")
- .type("application/vnd.vmware.vcloud.cloneMediaParams+xml")
- .href(URI.create("https://mycloud.greenhousedata.com/api/vdc/e9cd3387-ac57-4d27-a481-9bee75e0690f/action/cloneMedia"))
- .build())
- .link(Link.builder()
- .rel("add")
- .type("application/vnd.vmware.vcloud.captureVAppParams+xml")
- .href(URI.create("https://mycloud.greenhousedata.com/api/vdc/e9cd3387-ac57-4d27-a481-9bee75e0690f/action/captureVApp"))
- .build())
- .link(Link.builder()
- .rel("add")
- .type("application/vnd.vmware.vcloud.composeVAppParams+xml")
- .href(URI.create("https://mycloud.greenhousedata.com/api/vdc/e9cd3387-ac57-4d27-a481-9bee75e0690f/action/composeVApp"))
- .build())
- .description("Pay As You go resources for organization cloudsoft ")
- .allocationModel("AllocationVApp")
- .storageCapacity(new CapacityWithUsage.Builder()
- .units("MB")
- .allocated(0l)
- .limit(0l)
- .used(4519l)
- .overhead(0l)
- .build())
- .computeCapacity(ComputeCapacity.builder()
- .cpu(new CapacityWithUsage.Builder()
- .units("MHz")
- .allocated(0l)
- .limit(0l)
- .used(0l)
- .overhead(0l)
- .build())
- .memory(new CapacityWithUsage.Builder()
- .units("MB")
- .allocated(0l)
- .limit(0l)
- .used(0l)
- .overhead(0l)
- .build())
- .build())
- .resourceEntity(Reference.builder()
- .type("application/vnd.vmware.vcloud.vApp+xml")
- .name("vcdcap-db9")
- .href(URI.create("https://mycloud.greenhousedata.com/api/vApp/vapp-e2a4ab74-ea62-4afa-8bb7-0c11259044fb"))
- .build())
- .resourceEntity(Reference.builder()
- .type("application/vnd.vmware.vcloud.vAppTemplate+xml")
- .name("adriancolecap")
- .href(URI.create("https://mycloud.greenhousedata.com/api/vAppTemplate/vappTemplate-5571eb21-f532-4506-9737-01a4635a04cb"))
- .build())
- .resourceEntity(Reference.builder()
- .type("application/vnd.vmware.vcloud.media+xml")
- .name("DansTestMedia")
- .href(URI.create("https://mycloud.greenhousedata.com/api/media/794eb334-754e-4917-b5a0-5df85cbd61d1"))
- .build())
- .network(Reference.builder()
- .type("application/vnd.vmware.vcloud.network+xml")
- .name("orgNet-cloudsoft-Isolated")
- .href(URI.create("https://mycloud.greenhousedata.com/api/network/a604f3c2-0343-453e-ae1f-cddac5b7bd94"))
- .build())
- .network(Reference.builder()
- .type("application/vnd.vmware.vcloud.network+xml")
- .name("orgNet-cloudsoft-External")
- .href(URI.create("https://mycloud.greenhousedata.com/api/network/b466c0c5-8a5c-4335-b703-a2e2e6b5f3e1"))
- .build())
- .network(Reference.builder()
- .type("application/vnd.vmware.vcloud.network+xml")
- .name("orgNet-cloudsoft-Internal-Routed")
- .href(URI.create("https://mycloud.greenhousedata.com/api/network/6d7392e2-c816-43fb-99be-f9ebcd70abf6"))
- .build())
- .capabilities(Capabilities.builder()
- .supportedHardwareVersion("vmx-04")
- .supportedHardwareVersion("vmx-07")
- .supportedHardwareVersion("vmx-08")
- .build())
- .nicQuota(0)
- .networkQuota(10)
- .vmQuota(10)
- .isEnabled(true)
- .build();
- }
-
- private VAppTemplate captureVApp() {
- // TODO Auto-generated method stub
- return null;
- }
-
- private VApp cloneVApp() {
- // TODO Auto-generated method stub
- return null;
- }
-
- private VAppTemplate cloneVAppTemplate() {
- // TODO Auto-generated method stub
- return null;
- }
-
- private VApp composeVApp() throws ParseException {
-
- return VApp
- .builder()
- .status(0)
- .name("test-vapp")
- .id("urn:vcloud:vapp:d0e2b6b9-4381-4ddc-9572-cdfae54059be")
- .type("application/vnd.vmware.vcloud.vApp+xml")
- .description("Test VApp")
- .href(URI.create("https://mycloud.greenhousedata.com/api/vApp/vapp-d0e2b6b9-4381-4ddc-9572-cdfae54059be"))
- .link(Link
- .builder()
- .name("orgNet-cloudsoft-External")
- .rel("down")
- .type("application/vnd.vmware.vcloud.vAppNetwork+xml")
- .href(URI.create("https://mycloud.greenhousedata.com/api/network/2a2e2da4-446a-4ebc-a086-06df7c9570f0"))
- .build())
- .link(Link
- .builder()
- .rel("down")
- .type("application/vnd.vmware.vcloud.controlAccess+xml")
- .href(URI.create("https://mycloud.greenhousedata.com/api/vApp/vapp-d0e2b6b9-4381-4ddc-9572-cdfae54059be/controlAccess/"))
- .build())
- .link(Link
- .builder()
- .rel("up")
- .type("application/vnd.vmware.vcloud.vdc+xml")
- .href(URI.create("https://mycloud.greenhousedata.com/api/vdc/e9cd3387-ac57-4d27-a481-9bee75e0690f"))
- .build())
- .link(Link
- .builder()
- .rel("down")
- .type("application/vnd.vmware.vcloud.owner+xml")
- .href(URI.create("https://mycloud.greenhousedata.com/api/vApp/vapp-d0e2b6b9-4381-4ddc-9572-cdfae54059be/owner"))
- .build())
- .link(Link
- .builder()
- .rel("down")
- .type("application/vnd.vmware.vcloud.metadata+xml")
- .href(URI.create("https://mycloud.greenhousedata.com/api/vApp/vapp-d0e2b6b9-4381-4ddc-9572-cdfae54059be/metadata"))
- .build())
- .owner(Owner
- .builder()
- .type("application/vnd.vmware.vcloud.owner+xml")
- .user(User
- .builder()
- .type("application/vnd.vmware.admin.user+xml")
- .name("acole")
- .href(URI.create("https://mycloud.greenhousedata.com/api/admin/user/c090335b-708c-4c1c-9e3d-89560d002120"))
- .build().getRole()).build()).build();
- }
-
- private VApp instantiateVAppTemplate() {
- // TODO Auto-generated method stub
- return null;
- }
-
- private VAppTemplate uploadVAppTemplate() {
- // TODO Auto-generated method stub
- return null;
- }
-
- private Metadata metadata() {
- // TODO Auto-generated method stub
- return null;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/775b89fd/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/VdcApiLiveTest.java
----------------------------------------------------------------------
diff --git a/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/VdcApiLiveTest.java b/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/VdcApiLiveTest.java
deleted file mode 100644
index 3e976f0..0000000
--- a/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/VdcApiLiveTest.java
+++ /dev/null
@@ -1,329 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.jclouds.vcloud.director.v1_5.features;
-
-import static org.jclouds.vcloud.director.v1_5.VCloudDirectorLiveTestConstants.OBJ_FIELD_EQ;
-import static org.jclouds.vcloud.director.v1_5.VCloudDirectorLiveTestConstants.OBJ_FIELD_REQ_LIVE;
-import static org.jclouds.vcloud.director.v1_5.VCloudDirectorLiveTestConstants.OBJ_REQ_LIVE;
-import static org.jclouds.vcloud.director.v1_5.VCloudDirectorLiveTestConstants.URN_REQ_LIVE;
-import static org.testng.Assert.assertEquals;
-import static org.testng.Assert.assertNotEquals;
-import static org.testng.Assert.assertNotNull;
-import static org.testng.Assert.assertTrue;
-import static org.testng.Assert.fail;
-
-import java.net.URI;
-import java.util.Map;
-import java.util.Set;
-
-import org.jclouds.vcloud.director.v1_5.domain.Checks;
-import org.jclouds.vcloud.director.v1_5.domain.Metadata;
-import org.jclouds.vcloud.director.v1_5.domain.Reference;
-import org.jclouds.vcloud.director.v1_5.domain.ResourceEntity;
-import org.jclouds.vcloud.director.v1_5.domain.Task;
-import org.jclouds.vcloud.director.v1_5.domain.VApp;
-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.network.Network;
-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.VAppNetworkConfiguration;
-import org.jclouds.vcloud.director.v1_5.domain.params.CaptureVAppParams;
-import org.jclouds.vcloud.director.v1_5.domain.params.CloneVAppParams;
-import org.jclouds.vcloud.director.v1_5.domain.params.CloneVAppTemplateParams;
-import org.jclouds.vcloud.director.v1_5.domain.params.ComposeVAppParams;
-import org.jclouds.vcloud.director.v1_5.domain.params.InstantiateVAppTemplateParams;
-import org.jclouds.vcloud.director.v1_5.domain.params.InstantiationParams;
-import org.jclouds.vcloud.director.v1_5.domain.params.UploadVAppTemplateParams;
-import org.jclouds.vcloud.director.v1_5.domain.section.NetworkConfigSection;
-import org.jclouds.vcloud.director.v1_5.internal.BaseVCloudDirectorApiLiveTest;
-import org.testng.annotations.AfterClass;
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.Test;
-
-import com.google.common.base.Optional;
-import com.google.common.base.Predicate;
-import com.google.common.collect.ImmutableSet;
-import com.google.common.collect.Iterables;
-
-@Test(groups = { "live", "user" }, singleThreaded = true, testName = "VdcApiLiveTest")
-public class VdcApiLiveTest extends BaseVCloudDirectorApiLiveTest {
-
- public static final String VDC = "vdc";
-
- /*
- * Convenience reference to API api.
- */
- protected VdcApi vdcApi;
- protected VAppTemplateApi vappTemplateApi;
- protected VAppApi vappApi;
- private URI vdcHref;
-
- private VApp instantiatedVApp;
- private VApp clonedVApp;
- private VApp composedVApp;
- private VAppTemplate clonedVAppTemplate;
- private VAppTemplate capturedVAppTemplate;
- private VAppTemplate uploadedVAppTemplate;
- private boolean metadataSet = false;
- private Network network;
-
- @Override
- @BeforeClass(alwaysRun = true)
- public void setupRequiredApis() {
- vdcApi = context.getApi().getVdcApi();
- vappTemplateApi = context.getApi().getVAppTemplateApi();
- vappApi = context.getApi().getVAppApi();
-
- assertNotNull(vdcId, String.format(URN_REQ_LIVE, VDC));
- network = lazyGetNetwork();
- vdcHref = context.resolveIdToHref(vdcId);
- }
-
- @AfterClass(alwaysRun = true)
- public void cleanUp() throws Exception {
- if (clonedVAppTemplate != null) {
- cleanUpVAppTemplate(clonedVAppTemplate);
- }
- if (capturedVAppTemplate != null) {
- cleanUpVAppTemplate(capturedVAppTemplate);
- }
- if (uploadedVAppTemplate != null) {
- cleanUpVAppTemplate(uploadedVAppTemplate);
- }
- if (instantiatedVApp != null) {
- cleanUpVApp(instantiatedVApp);
- }
- if (clonedVApp != null) {
- cleanUpVApp(clonedVApp);
- }
- if (composedVApp != null) {
- cleanUpVApp(composedVApp);
- }
-
- if (metadataSet) {
- try {
- Task remove = adminContext.getApi().getMetadataApi(vdcHref).remove("key");
- taskDoneEventually(remove);
- } catch (Exception e) {
- logger.warn(e, "Error deleting metadata entry");
- }
- }
- }
-
- @Test(description = "GET /vdc/{id}")
- public void testGetVdc() {
- Vdc vdc = lazyGetVdc();
- assertNotNull(vdc, String.format(OBJ_REQ_LIVE, VDC));
- assertNotEquals("DO NOT USE", vdc.getDescription(), "vDC isn't to be used for testing");
- Checks.checkVdc(vdc);
- }
-
- @Test(description = "POST /vdc/{id}/action/captureVApp", dependsOnMethods = { "testInstantiateVAppTemplate" })
- public void testCaptureVApp() {
- String name = name("captured-");
-
- CaptureVAppParams captureVappParams = CaptureVAppParams.builder()
- .name(name)
- .source(instantiatedVApp.getHref())
- // TODO: test optional params
- // .description("")
- // .sections(sections) // TODO: ovf sections
- .build();
-
- capturedVAppTemplate = vdcApi.captureVApp(vdcHref, captureVappParams);
-
- Task task = Iterables.getFirst(capturedVAppTemplate.getTasks(), null);
- assertTaskSucceedsLong(task);
-
- Checks.checkVAppTemplate(capturedVAppTemplate);
-
- assertEquals(capturedVAppTemplate.getName(), name,
- String.format(OBJ_FIELD_EQ, "VAppTemplate", "name", name, capturedVAppTemplate.getName()));
- }
-
- @Test(description = "POST /vdc/{id}/action/cloneVApp", dependsOnMethods = { "testInstantiateVAppTemplate" })
- public void testCloneVApp() {
- CloneVAppParams cloneVappParams = CloneVAppParams.builder().source(instantiatedVApp.getHref())
- .name(name("vappClone-"))
- .deploy(true)
- // TODO: test optional params
- // .description("")
- // .isSourceDelete(true)
- // .powerOn(true)
- // .instantiationParams(InstantiationParams.builder()
- // .sections(sections)
- // TODO: ovf sections? various tests?
- // .build())
-
- // Reserved. Unimplemented params; may test eventually when implemented
- // .vAppParent(vAppParentRef)
- // .linkedClone(true)
- .build();
-
- clonedVApp = vdcApi.cloneVApp(vdcHref, cloneVappParams);
-
- Task task = Iterables.getFirst(clonedVApp.getTasks(), null);
- assertNotNull(task, "vdcApi.cloneVApp returned VApp that did not contain any tasks");
- assertTaskSucceedsLong(task);
-
- Checks.checkVApp(clonedVApp);
- }
-
- @Test(description = "POST /vdc/{id}/action/cloneVAppTemplate")
- public void testCloneVAppTemplate() {
- clonedVAppTemplate = vdcApi.cloneVAppTemplate(vdcHref,
- CloneVAppTemplateParams.builder()
- .name(name("vappTemplateClone-"))
- .source(lazyGetVAppTemplate().getHref())
- .build());
-
- Task task = Iterables.getFirst(clonedVAppTemplate.getTasks(), null);
- assertNotNull(task, "vdcApi.cloneVAppTemplate returned VAppTemplate that did not contain any tasks");
- assertTaskSucceedsLong(task);
-
- Checks.checkVAppTemplate(clonedVAppTemplate);
- }
-
- @Test(description = "POST /vdc/{id}/action/composeVApp")
- public void testComposeVApp() {
- String name = name("composed-");
-
- composedVApp = vdcApi.composeVApp(vdcHref, ComposeVAppParams.builder().name(name)
- // TODO: test optional params
- // .sourcedItem(SourcedCompositionItemParam.builder()
- // .sourcedItem(vAppTemplateURI)
- // .build())
- // .description("")
- // .deploy(true)
- // .isSourceDelete(false)
- // .powerOn(true)
- // .instantiationParams(InstantiationParams.builder()
- // .sections(sections) // TODO: ovf sections? various tests?
- // .build())
-
- // Reserved. Unimplemented params; may test eventually when implemented
- // .linkedClone()
- .build());
-
- Task task = Iterables.getFirst(composedVApp.getTasks(), null);
- assertNotNull(task, "vdcApi.composeVApp returned VApp that did not contain any tasks");
- assertTaskSucceedsLong(task);
-
- Checks.checkVApp(composedVApp);
- assertEquals(composedVApp.getName(), name,
- String.format(OBJ_FIELD_EQ, "VApp", "name", name, composedVApp.getName()));
- }
-
- // TODO Duplicates code in VAppApiLiveTest
- @Test(description = "POST /vdc/{id}/action/instantiateVAppTemplate")
- public void testInstantiateVAppTemplate() {
- Vdc vdc = vdcApi.get(vdcHref);
-
- Set<Reference> networks = vdc.getAvailableNetworks();
- Optional<Reference> parentNetwork = Iterables.tryFind(networks, new Predicate<Reference>() {
- @Override
- public boolean apply(Reference reference) {
- return reference.getHref().equals(network.getHref());
- }
- });
-
- if (!parentNetwork.isPresent()) {
- fail(String.format("Could not find network %s in vdc", network.getHref().toASCIIString()));
- }
-
- NetworkConfiguration networkConfiguration = NetworkConfiguration.builder().parentNetwork(parentNetwork.get())
- .fenceMode(FenceMode.BRIDGED).build();
-
- NetworkConfigSection networkConfigSection = NetworkConfigSection
- .builder()
- .info("Configuration parameters for logical networks")
- .networkConfigs(
- ImmutableSet.of(VAppNetworkConfiguration.builder().networkName("vAppNetwork")
- .configuration(networkConfiguration).build())).build();
-
- InstantiationParams instantiationParams = InstantiationParams.builder()
- .sections(ImmutableSet.of(networkConfigSection)).build();
-
- InstantiateVAppTemplateParams instantiate = InstantiateVAppTemplateParams.builder().name(name("test-vapp-"))
- .notDeploy().notPowerOn().description("Test VApp").instantiationParams(instantiationParams)
- .source(lazyGetVAppTemplate().getHref()).build();
-
- instantiatedVApp = vdcApi.instantiateVApp(vdcHref, instantiate);
- Task instantiationTask = Iterables.getFirst(instantiatedVApp.getTasks(), null);
- assertTaskSucceedsLong(instantiationTask);
-
- Checks.checkVApp(instantiatedVApp);
- }
-
- @Test(description = "POST /vdc/{id}/action/uploadVAppTemplate")
- public void testUploadVAppTemplate() {
- // TODO Should test all 4 stages of upload; currently doing only stage 1 here.
- // 1. creating empty vApp template entity
- // 2. uploading an OVF of vApp template
- // 3. uploading disks described from the OVF
- // 4. finishing task for uploading
-
- String name = name("uploaded-");
-
- UploadVAppTemplateParams uploadVAppTemplateParams = UploadVAppTemplateParams.builder().name(name)
- // TODO: test optional params
- // .description("")
- // .transferFormat("")
- // .manifestRequired(true)
- .build();
-
- uploadedVAppTemplate = vdcApi.uploadVAppTemplate(vdcHref, uploadVAppTemplateParams);
-
- Checks.checkVAppTemplateWhenNotReady(uploadedVAppTemplate);
-
- assertEquals(uploadedVAppTemplate.getName(), name,
- String.format(OBJ_FIELD_EQ, "VAppTemplate", "name", name, uploadedVAppTemplate.getName()));
-
- ResourceEntity.Status expectedStatus = ResourceEntity.Status.UNRESOLVED;
- ResourceEntity.Status actualStatus = uploadedVAppTemplate.getStatus();
- assertEquals(actualStatus, expectedStatus,
- String.format(OBJ_FIELD_EQ, "VAppTemplate", "status", expectedStatus, actualStatus));
-
- }
-
- @Test(description = "GET /vdc/{id}/metadata", dependsOnMethods = { "testGetVdc" })
- public void testGetMetadata() {
- Metadata metadata = context.getApi().getMetadataApi(vdcHref).get();
-
- // required for testing
- assertTrue(Iterables.isEmpty(metadata.getMetadataEntries()),
- String.format(OBJ_FIELD_REQ_LIVE, VDC, "metadata.entries"));
-
- Checks.checkMetadataFor(VDC, metadata);
- }
-
- @Test(description = "GET /vdc/{id}/metadata/{key}", dependsOnMethods = { "testGetMetadata" })
- public void testGetMetadataValue() {
- // setupMetadata();
- // First find a key
- Metadata metadata = context.getApi().getMetadataApi(vdcHref).get();
- Map<String, String> metadataMap = Checks.metadataToMap(metadata);
- String key = Iterables.getFirst(metadataMap.keySet(), "MadeUpKey!");
- String value = metadataMap.get(key);
-
- String metadataValue = context.getApi().getMetadataApi(vdcHref).get(key);
-
- assertEquals(metadataValue, value);
- }
-
-}