mirror of
https://github.com/apache/jclouds.git
synced 2025-02-16 15:08:28 +00:00
VAppTemplateLiveTest fixes
This commit is contained in:
parent
ddb70df2d9
commit
d027497d5d
@ -82,6 +82,8 @@ public class VCloudDirectorMediaType {
|
||||
|
||||
public static final String VAPP_TEMPLATE = "application/vnd.vmware.vcloud.vAppTemplate+xml";
|
||||
|
||||
public static final String VM = "application/vnd.vmware.vcloud.vm+xml";
|
||||
|
||||
public static final String CAPTURE_VAPP_PARAMS = "application/vnd.vmware.vcloud.captureVAppParams+xml";
|
||||
|
||||
public static final String CLONE_MEDIA_PARAMS = "application/vnd.vmware.vcloud.cloneMediaParams+xml";
|
||||
@ -184,8 +186,14 @@ public class VCloudDirectorMediaType {
|
||||
|
||||
public static final String ADMIN_VDC = "application/vnd.vmware.admin.vdc+xml";
|
||||
|
||||
public static final String OVF_TEXT_XML = "text/xml";
|
||||
|
||||
public static final List<String> ALL_OVF = ImmutableList.of(
|
||||
OVF_TEXT_XML
|
||||
);
|
||||
|
||||
/**
|
||||
* All acceptable media types.
|
||||
* All acceptable vcloud-specific media types.
|
||||
*
|
||||
* This list must be updated whenever a new media type constant is added.
|
||||
*/
|
||||
@ -193,7 +201,7 @@ public class VCloudDirectorMediaType {
|
||||
SESSION, ERROR, ORG_LIST, METADATA, METADATA_ENTRY, METADATA_VALUE,
|
||||
ORG, TASKS_LIST, TASK, NETWORK, ORG_NETWORK, CATALOG, CATALOG_ITEM,
|
||||
CATALOG_ITEMS, CATALOGS_LIST, PROPERTY, MEDIA, OWNER, VDC, ADMIN_USER,
|
||||
VAPP, VAPP_TEMPLATE, CAPTURE_VAPP_PARAMS, CLONE_MEDIA_PARAMS,
|
||||
VAPP, VAPP_TEMPLATE, VM, CAPTURE_VAPP_PARAMS, CLONE_MEDIA_PARAMS,
|
||||
CLONE_VAPP_PARAMS, CLONE_VAPP_TEMPLATE_PARAMS, COMPOSE_VAPP_PARAMS,
|
||||
INSTANTIATE_VAPP_TEMPLATE_PARAMS, UPLOAD_VAPP_TEMPLATE_PARAMS,
|
||||
QUERY_RESULT_RECORDS, QUERY_RESULT_REFERENCES, QUERY_RESULT_ID_RECORDS,
|
||||
|
@ -29,12 +29,15 @@ import javax.xml.bind.annotation.XmlElement;
|
||||
import javax.xml.bind.annotation.XmlElementRef;
|
||||
import javax.xml.bind.annotation.XmlType;
|
||||
|
||||
import org.jclouds.ovf.DeploymentOptionSection;
|
||||
import org.jclouds.ovf.DiskSection;
|
||||
import org.jclouds.ovf.OperatingSystemSection;
|
||||
import org.jclouds.ovf.ProductSection;
|
||||
import org.jclouds.ovf.Section;
|
||||
import org.jclouds.ovf.VirtualHardwareSection;
|
||||
import org.jclouds.vcloud.director.v1_5.domain.ovf.CustomizationSection;
|
||||
import org.jclouds.vcloud.director.v1_5.domain.ovf.DeploymentOptionSection;
|
||||
import org.jclouds.vcloud.director.v1_5.domain.ovf.DiskSection;
|
||||
import org.jclouds.vcloud.director.v1_5.domain.ovf.NetworkSection;
|
||||
import org.jclouds.vcloud.director.v1_5.domain.ovf.OperatingSystemSection;
|
||||
import org.jclouds.vcloud.director.v1_5.domain.ovf.ProductSection;
|
||||
import org.jclouds.vcloud.director.v1_5.domain.ovf.SectionType;
|
||||
import org.jclouds.vcloud.director.v1_5.domain.ovf.StartupSection;
|
||||
import org.jclouds.vcloud.director.v1_5.domain.ovf.VirtualHardwareSection;
|
||||
|
||||
import com.google.common.base.Objects;
|
||||
import com.google.common.collect.ImmutableSet;
|
||||
@ -83,7 +86,7 @@ public class CaptureVAppParams
|
||||
public static class Builder extends ParamsType.Builder<CaptureVAppParams> {
|
||||
|
||||
private Reference source;
|
||||
private Set<? extends Section<?>> sections = ImmutableSet.of();
|
||||
private Set<? extends SectionType<?>> sections = ImmutableSet.of();
|
||||
|
||||
/**
|
||||
* @see CaptureVAppParams#getSource()
|
||||
@ -96,7 +99,7 @@ public class CaptureVAppParams
|
||||
/**
|
||||
* @see CaptureVAppParams#getSections()
|
||||
*/
|
||||
public Builder sections(Set<? extends Section<?>> sections) {
|
||||
public Builder sections(Set<? extends SectionType<?>> sections) {
|
||||
this.sections = checkNotNull(sections, "sections");
|
||||
return this;
|
||||
}
|
||||
@ -117,7 +120,7 @@ public class CaptureVAppParams
|
||||
}
|
||||
}
|
||||
|
||||
private CaptureVAppParams(String description, String name, Reference source, Set<? extends Section<?>> sections) {
|
||||
private CaptureVAppParams(String description, String name, Reference source, Set<? extends SectionType<?>> sections) {
|
||||
super(description, name);
|
||||
this.source = source;
|
||||
this.sections = sections;
|
||||
@ -127,14 +130,14 @@ public class CaptureVAppParams
|
||||
// for JAXB
|
||||
}
|
||||
|
||||
private CaptureVAppParams(Set<? extends Section<?>> sections) {
|
||||
private CaptureVAppParams(Set<? extends SectionType<?>> sections) {
|
||||
this.sections = ImmutableSet.copyOf(sections);
|
||||
}
|
||||
|
||||
@XmlElement(name = "Source", required = true)
|
||||
protected Reference source;
|
||||
@XmlElementRef
|
||||
protected Set<? extends Section<?>> sections = Sets.newLinkedHashSet();
|
||||
protected Set<? extends SectionType<?>> sections = Sets.newLinkedHashSet();
|
||||
|
||||
/**
|
||||
* Gets the value of the source property.
|
||||
@ -152,7 +155,7 @@ public class CaptureVAppParams
|
||||
* Gets the value of the section property.
|
||||
*
|
||||
* Objects of the following type(s) are allowed in the list
|
||||
* {@link Section }
|
||||
* {@link SectionType }
|
||||
* {@link VirtualHardwareSection }
|
||||
* {@link LeaseSettingsSection }
|
||||
* {@link EulaSection }
|
||||
@ -171,7 +174,7 @@ public class CaptureVAppParams
|
||||
* {@link DiskSection }
|
||||
* {@link InstallSection }
|
||||
*/
|
||||
public Set<? extends Section<?>> getSections() {
|
||||
public Set<? extends SectionType<?>> getSections() {
|
||||
return Collections.unmodifiableSet(this.sections);
|
||||
}
|
||||
|
||||
|
@ -18,7 +18,19 @@
|
||||
*/
|
||||
package org.jclouds.vcloud.director.v1_5.features;
|
||||
|
||||
import static org.jclouds.vcloud.director.v1_5.VCloudDirectorMediaType.*;
|
||||
import static org.jclouds.vcloud.director.v1_5.VCloudDirectorMediaType.CUSTOMIZATION_SECTION;
|
||||
import static org.jclouds.vcloud.director.v1_5.VCloudDirectorMediaType.GUEST_CUSTOMIZATION_SECTION;
|
||||
import static org.jclouds.vcloud.director.v1_5.VCloudDirectorMediaType.LEASE_SETTINGS_SECTION;
|
||||
import static org.jclouds.vcloud.director.v1_5.VCloudDirectorMediaType.METADATA;
|
||||
import static org.jclouds.vcloud.director.v1_5.VCloudDirectorMediaType.METADATA_ENTRY;
|
||||
import static org.jclouds.vcloud.director.v1_5.VCloudDirectorMediaType.NETWORK_CONFIG_SECTION;
|
||||
import static org.jclouds.vcloud.director.v1_5.VCloudDirectorMediaType.NETWORK_CONNECTION_SECTION;
|
||||
import static org.jclouds.vcloud.director.v1_5.VCloudDirectorMediaType.NETWORK_SECTION;
|
||||
import static org.jclouds.vcloud.director.v1_5.VCloudDirectorMediaType.OWNER;
|
||||
import static org.jclouds.vcloud.director.v1_5.VCloudDirectorMediaType.PRODUCT_SECTION_LIST;
|
||||
import static org.jclouds.vcloud.director.v1_5.VCloudDirectorMediaType.RELOCATE_TEMPLATE;
|
||||
import static org.jclouds.vcloud.director.v1_5.VCloudDirectorMediaType.TASK;
|
||||
import static org.jclouds.vcloud.director.v1_5.VCloudDirectorMediaType.VAPP_TEMPLATE;
|
||||
|
||||
import java.net.URI;
|
||||
|
||||
@ -31,8 +43,6 @@ import javax.ws.rs.Path;
|
||||
import javax.ws.rs.PathParam;
|
||||
import javax.ws.rs.Produces;
|
||||
|
||||
import org.jclouds.ovf.Envelope;
|
||||
import org.jclouds.ovf.NetworkSection;
|
||||
import org.jclouds.rest.annotations.BinderParam;
|
||||
import org.jclouds.rest.annotations.EndpointParam;
|
||||
import org.jclouds.rest.annotations.ExceptionParser;
|
||||
@ -51,6 +61,8 @@ import org.jclouds.vcloud.director.v1_5.domain.RelocateParams;
|
||||
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.ovf.CustomizationSection;
|
||||
import org.jclouds.vcloud.director.v1_5.domain.ovf.Envelope;
|
||||
import org.jclouds.vcloud.director.v1_5.domain.ovf.NetworkSection;
|
||||
import org.jclouds.vcloud.director.v1_5.filters.AddVCloudAuthorizationToRequest;
|
||||
import org.jclouds.vcloud.director.v1_5.functions.ThrowVCloudErrorOn4xx;
|
||||
|
||||
@ -139,7 +151,7 @@ public interface VAppTemplateAsyncClient {
|
||||
* @see VAppTemplateClient#getVAppTemplateCustomizationSection(URI)
|
||||
*/
|
||||
@GET
|
||||
@Consumes(CUSTOMIZATION_SECTION)
|
||||
@Consumes
|
||||
@Path("/customizationSection")
|
||||
@JAXBResponseParser
|
||||
@ExceptionParser(ThrowVCloudErrorOn4xx.class)
|
||||
@ -325,7 +337,7 @@ public interface VAppTemplateAsyncClient {
|
||||
* @see VAppTemplateClient#getVAppTemplateOvf(URI)
|
||||
*/
|
||||
@GET
|
||||
@Consumes(ENVELOPE)
|
||||
@Consumes
|
||||
@Path("/ovf")
|
||||
@JAXBResponseParser
|
||||
@ExceptionParser(ThrowVCloudErrorOn4xx.class)
|
||||
|
@ -22,8 +22,6 @@ import java.net.URI;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
import org.jclouds.concurrent.Timeout;
|
||||
import org.jclouds.ovf.Envelope;
|
||||
import org.jclouds.ovf.NetworkSection;
|
||||
import org.jclouds.vcloud.director.v1_5.domain.GuestCustomizationSection;
|
||||
import org.jclouds.vcloud.director.v1_5.domain.LeaseSettingsSection;
|
||||
import org.jclouds.vcloud.director.v1_5.domain.Metadata;
|
||||
@ -36,6 +34,8 @@ import org.jclouds.vcloud.director.v1_5.domain.RelocateParams;
|
||||
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.ovf.CustomizationSection;
|
||||
import org.jclouds.vcloud.director.v1_5.domain.ovf.Envelope;
|
||||
import org.jclouds.vcloud.director.v1_5.domain.ovf.NetworkSection;
|
||||
|
||||
/**
|
||||
* Provides synchronous access to {@link org.jclouds.vcloud.director.v1_5.domain.VAppTemplate} objects.
|
||||
|
@ -18,10 +18,25 @@
|
||||
*/
|
||||
package org.jclouds.vcloud.director.v1_5.domain;
|
||||
|
||||
import static org.jclouds.vcloud.director.v1_5.VCloudDirectorLiveTestConstants.*;
|
||||
import static org.testng.Assert.*;
|
||||
import static org.jclouds.vcloud.director.v1_5.VCloudDirectorLiveTestConstants.CONDITION_FMT;
|
||||
import static org.jclouds.vcloud.director.v1_5.VCloudDirectorLiveTestConstants.MUST_BE_WELL_FORMED_FMT;
|
||||
import static org.jclouds.vcloud.director.v1_5.VCloudDirectorLiveTestConstants.MUST_CONTAIN_FMT;
|
||||
import static org.jclouds.vcloud.director.v1_5.VCloudDirectorLiveTestConstants.NOT_NULL_OBJECT_FMT;
|
||||
import static org.jclouds.vcloud.director.v1_5.VCloudDirectorLiveTestConstants.OBJ_FIELD_ATTRB_REQ;
|
||||
import static org.jclouds.vcloud.director.v1_5.VCloudDirectorLiveTestConstants.OBJ_FIELD_EQ;
|
||||
import static org.jclouds.vcloud.director.v1_5.VCloudDirectorLiveTestConstants.OBJ_FIELD_GTE_0;
|
||||
import static org.jclouds.vcloud.director.v1_5.VCloudDirectorLiveTestConstants.OBJ_FIELD_REQ;
|
||||
import static org.jclouds.vcloud.director.v1_5.VCloudDirectorLiveTestConstants.REQUIRED_VALUE_FMT;
|
||||
import static org.jclouds.vcloud.director.v1_5.VCloudDirectorLiveTestConstants.REQUIRED_VALUE_OBJECT_FMT;
|
||||
import static org.testng.Assert.assertEquals;
|
||||
import static org.testng.Assert.assertFalse;
|
||||
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.Collection;
|
||||
import java.util.Set;
|
||||
import java.util.UUID;
|
||||
|
||||
@ -81,7 +96,16 @@ public class Checks {
|
||||
checkResourceType(entity);
|
||||
}
|
||||
|
||||
/**
|
||||
* Assumes the validTypes to be vcloud-specific types.
|
||||
*
|
||||
* @see checkReferenceType(ReferenceType, Collection<String>)
|
||||
*/
|
||||
public static void checkReferenceType(ReferenceType<?> reference) {
|
||||
checkReferenceType(reference, VCloudDirectorMediaType.ALL);
|
||||
}
|
||||
|
||||
public static void checkReferenceType(ReferenceType<?> reference, Collection<String> validTypes) {
|
||||
// Check required fields
|
||||
assertNotNull(reference.getHref(), String.format(NOT_NULL_OBJECT_FMT, "Href", "ReferenceType"));
|
||||
|
||||
@ -89,7 +113,7 @@ public class Checks {
|
||||
String id = reference.getId();
|
||||
if (id != null) checkId(id);
|
||||
String type = reference.getType();
|
||||
if (type != null) checkType(type);
|
||||
if (type != null) checkType(type, validTypes);
|
||||
// NOTE name cannot be checked
|
||||
}
|
||||
|
||||
@ -118,7 +142,11 @@ public class Checks {
|
||||
}
|
||||
|
||||
public static void checkType(String type) {
|
||||
assertTrue(VCloudDirectorMediaType.ALL.contains(type), String.format(REQUIRED_VALUE_FMT, "Type", type, Iterables.toString(VCloudDirectorMediaType.ALL)));
|
||||
checkType(type, VCloudDirectorMediaType.ALL);
|
||||
}
|
||||
|
||||
public static void checkType(String type, Collection<String> validTypes) {
|
||||
assertTrue(validTypes.contains(type), String.format(REQUIRED_VALUE_FMT, "Type", type, Iterables.toString(validTypes)));
|
||||
}
|
||||
|
||||
// NOTE this does not currently check anything
|
||||
@ -138,7 +166,11 @@ public class Checks {
|
||||
assertTrue(Link.Rel.ALL.contains(link.getRel()), String.format(REQUIRED_VALUE_OBJECT_FMT, "Rel", "Link", link.getRel(), Iterables.toString(Link.Rel.ALL)));
|
||||
|
||||
// Check parent type
|
||||
checkReferenceType(link);
|
||||
if (link.getRel().equals(Link.Rel.OVF)) {
|
||||
checkReferenceType(link, VCloudDirectorMediaType.ALL_OVF);
|
||||
} else {
|
||||
checkReferenceType(link);
|
||||
}
|
||||
}
|
||||
|
||||
public static void checkTask(Task task) {
|
||||
|
@ -18,12 +18,9 @@
|
||||
*/
|
||||
package org.jclouds.vcloud.director.v1_5.features;
|
||||
|
||||
import static org.testng.Assert.*;
|
||||
import static org.testng.Assert.assertEquals;
|
||||
import static org.testng.Assert.assertTrue;
|
||||
|
||||
import java.net.URI;
|
||||
|
||||
import org.jclouds.ovf.Envelope;
|
||||
import org.jclouds.ovf.NetworkSection;
|
||||
import org.jclouds.vcloud.director.v1_5.domain.Checks;
|
||||
import org.jclouds.vcloud.director.v1_5.domain.GuestCustomizationSection;
|
||||
import org.jclouds.vcloud.director.v1_5.domain.LeaseSettingsSection;
|
||||
@ -37,6 +34,8 @@ import org.jclouds.vcloud.director.v1_5.domain.ProductSectionList;
|
||||
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.ovf.CustomizationSection;
|
||||
import org.jclouds.vcloud.director.v1_5.domain.ovf.Envelope;
|
||||
import org.jclouds.vcloud.director.v1_5.domain.ovf.NetworkSection;
|
||||
import org.jclouds.vcloud.director.v1_5.internal.BaseVCloudDirectorClientLiveTest;
|
||||
import org.testng.annotations.BeforeClass;
|
||||
import org.testng.annotations.Test;
|
||||
@ -54,11 +53,7 @@ import com.google.common.collect.Iterables;
|
||||
@Test(groups = {"live", "unit", "user"}, testName = "VAppTemplateClientLiveTest")
|
||||
public class VAppTemplateClientLiveTest extends BaseVCloudDirectorClientLiveTest {
|
||||
|
||||
private static final long TIMEOUT_MS = 60*1000;
|
||||
|
||||
private VAppTemplateClient vappTemplateClient;
|
||||
private TaskClient taskClient;
|
||||
private URI vAppTemplateURI; // FIXME Delete, and use super's
|
||||
|
||||
// FIXME IS timezone setting needed in live test?
|
||||
// public VAppTemplateClientLiveTest() {
|
||||
@ -70,7 +65,6 @@ public class VAppTemplateClientLiveTest extends BaseVCloudDirectorClientLiveTest
|
||||
public void setupRequiredClients() {
|
||||
try {
|
||||
vappTemplateClient = context.getApi().getVAppTemplateClient();
|
||||
taskClient = context.getApi().getTaskClient();
|
||||
} catch (Exception e) {
|
||||
// TODO Declare super as throws Exception?
|
||||
throw Throwables.propagate(e);
|
||||
@ -90,7 +84,7 @@ public class VAppTemplateClientLiveTest extends BaseVCloudDirectorClientLiveTest
|
||||
Owner owner = vappTemplateClient.getOwnerOfVAppTemplate(vAppTemplateURI);
|
||||
|
||||
Checks.checkOwner(owner);
|
||||
assertEquals(owner, vappTemplateClient.getVAppTemplate(vAppTemplateURI).getOwner());
|
||||
assertEquals(owner.getUser(), vappTemplateClient.getVAppTemplate(vAppTemplateURI).getOwner().getUser());
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -129,7 +123,7 @@ public class VAppTemplateClientLiveTest extends BaseVCloudDirectorClientLiveTest
|
||||
Checks.checkMetadata(metadata);
|
||||
}
|
||||
|
||||
@Test
|
||||
@Test(enabled=false) // implicitly tested by testEditVAppTemplateMetadataValue, which first creates the metadata entry; otherwise no entry may exist
|
||||
public void testGetVAppTemplateMetadataValue() {
|
||||
Metadata metadata = vappTemplateClient.getVAppTemplateMetadata(vAppTemplateURI);
|
||||
MetadataEntry entry = Iterables.get(metadata.getMetadataEntries(), 0);
|
||||
@ -158,14 +152,14 @@ public class VAppTemplateClientLiveTest extends BaseVCloudDirectorClientLiveTest
|
||||
public void testGetVAppTemplateNetworkSection() {
|
||||
NetworkSection networkSection = vappTemplateClient.getVAppTemplateNetworkSection(vAppTemplateURI);
|
||||
|
||||
// Checks.checkNetworkSection(networkSection);
|
||||
Checks.checkOvfNetworkSection(networkSection);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetVAppTemplateOvf() {
|
||||
Envelope envelope = vappTemplateClient.getVAppTemplateOvf(vAppTemplateURI);
|
||||
|
||||
// Checks.checkEnvelope(envelope);
|
||||
Checks.checkOvfEnvelope(envelope);
|
||||
}
|
||||
|
||||
@Test
|
||||
|
Loading…
x
Reference in New Issue
Block a user