From b917055930e104d106f7ce37097ebbfca9bc18a4 Mon Sep 17 00:00:00 2001 From: Adrian Cole Date: Sun, 11 Mar 2012 10:51:01 -0700 Subject: [PATCH 01/20] added new predicates helpful with links --- .../v1_5/predicates/LinkPredicates.java | 71 +++++++++++++++++++ .../v1_5/predicates/LinkPredicatesTest.java | 59 +++++++++++++++ 2 files changed, 130 insertions(+) create mode 100644 labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/predicates/LinkPredicates.java create mode 100644 labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/predicates/LinkPredicatesTest.java diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/predicates/LinkPredicates.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/predicates/LinkPredicates.java new file mode 100644 index 0000000000..96ac2dd1ae --- /dev/null +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/predicates/LinkPredicates.java @@ -0,0 +1,71 @@ +/* + * Licensed to jclouds, Inc. (jclouds) under one or more + * contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. jclouds 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.predicates; + +import static com.google.common.base.Preconditions.checkNotNull; + +import org.jclouds.vcloud.director.v1_5.domain.Link; + +import com.google.common.base.Predicate; + +/** + * Predicates handy when working with Links + * + * @author Adrian Cole + */ + +public class LinkPredicates { + + /** + * matches links of the given relation + * + * @param rel + * ex. {@code context.getApi().getCurrentSession().getOrg().getLinks()} + * @return predicate that will match links of the given rel + */ + public static Predicate relEquals(final String rel) { + checkNotNull(rel, "rel must be defined"); + + return new Predicate() { + @Override + public boolean apply(Link link) { + return rel.equals(link.getRel()); + } + + @Override + public String toString() { + return "relEquals(" + rel + ")"; + } + }; + } + + /** + * @see ReferenceTypePredicates#nameEquals + */ + public static Predicate nameEquals(String name) { + return ReferenceTypePredicates.nameEquals(name); + } + + /** + * @see ReferenceTypePredicates#typeEquals + */ + public static Predicate typeEquals(String type) { + return ReferenceTypePredicates.typeEquals(type); + } +} diff --git a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/predicates/LinkPredicatesTest.java b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/predicates/LinkPredicatesTest.java new file mode 100644 index 0000000000..0b9dec1b77 --- /dev/null +++ b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/predicates/LinkPredicatesTest.java @@ -0,0 +1,59 @@ +/** + * Licensed to jclouds, Inc. (jclouds) under one or more + * contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. jclouds 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.predicates; + +import static org.jclouds.vcloud.director.v1_5.predicates.LinkPredicates.relEquals; +import static org.jclouds.vcloud.director.v1_5.predicates.LinkPredicates.typeEquals; + +import java.net.URI; + +import org.jclouds.vcloud.director.v1_5.VCloudDirectorMediaType; +import org.jclouds.vcloud.director.v1_5.domain.Link; +import org.testng.annotations.Test; + +/** + * + * @author Adrian Cole + */ +@Test(groups = "unit", testName = "LinkPredicatesTest") +public class LinkPredicatesTest { + Link ref = Link.builder().type("application/vnd.vmware.vcloud.media+xml").rel("add").href( + URI.create("https://mycloud.greenhousedata.com/api/vdc/e9cd3387-ac57-4d27-a481-9bee75e0690f/media")) + .build(); + + @Test + public void testRelEqualsWhenEqual() { + assert relEquals("add").apply(ref); + } + + @Test + public void testRelEqualsWhenNotEqual() { + assert !relEquals("foo").apply(ref); + } + + @Test + public void testTypeEqualsWhenEqual() { + assert typeEquals(VCloudDirectorMediaType.MEDIA).apply(ref); + } + + @Test + public void testTypeEqualsWhenNotEqual() { + assert !typeEquals("foo").apply(ref); + } +} From a4b6c0c46ebae8ae9dd4de31d38e367c8e63061d Mon Sep 17 00:00:00 2001 From: Adrian Cole Date: Sun, 11 Mar 2012 10:51:32 -0700 Subject: [PATCH 02/20] create/update media is a media operation, not a vdc one; copied methods over to media client --- .../v1_5/features/MediaAsyncClient.java | 25 ++++++ .../director/v1_5/features/MediaClient.java | 17 ++++ .../v1_5/features/MediaClientExpectTest.java | 12 +-- .../v1_5/features/MediaClientLiveTest.java | 23 +++-- .../v1_5/features/VdcClientExpectTest.java | 85 +++++++++++++++---- 5 files changed, 131 insertions(+), 31 deletions(-) diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/MediaAsyncClient.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/MediaAsyncClient.java index 9f19cc5375..3d6b9ef570 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/MediaAsyncClient.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/MediaAsyncClient.java @@ -23,6 +23,7 @@ import java.net.URI; import javax.ws.rs.Consumes; import javax.ws.rs.DELETE; import javax.ws.rs.GET; +import javax.ws.rs.POST; import javax.ws.rs.PUT; import javax.ws.rs.Path; import javax.ws.rs.Produces; @@ -35,6 +36,7 @@ import org.jclouds.rest.annotations.JAXBResponseParser; import org.jclouds.rest.annotations.RequestFilters; import org.jclouds.rest.binders.BindToXMLPayload; import org.jclouds.vcloud.director.v1_5.VCloudDirectorMediaType; +import org.jclouds.vcloud.director.v1_5.domain.CloneMediaParams; import org.jclouds.vcloud.director.v1_5.domain.Media; import org.jclouds.vcloud.director.v1_5.domain.Metadata; import org.jclouds.vcloud.director.v1_5.domain.Owner; @@ -60,6 +62,29 @@ public interface MediaAsyncClient { @ExceptionParser(ThrowVCloudErrorOn4xx.class) ListenableFuture getMedia(@EndpointParam URI uri); + /** + * @see MediaClient#createMedia(URI, Media) + */ + @POST + @Consumes(VCloudDirectorMediaType.MEDIA) + @Produces(VCloudDirectorMediaType.MEDIA) + @JAXBResponseParser + @ExceptionParser(ThrowVCloudErrorOn4xx.class) + ListenableFuture createMedia(@EndpointParam URI link, + @BinderParam(BindToXMLPayload.class) Media media); + + + /** + * @see MediaClient#cloneMedia(URI, CloneMediaParams) + */ + @POST + @Consumes(VCloudDirectorMediaType.MEDIA) + @Produces(VCloudDirectorMediaType.CLONE_MEDIA_PARAMS) + @JAXBResponseParser + @ExceptionParser(ThrowVCloudErrorOn4xx.class) + ListenableFuture cloneMedia(@EndpointParam URI cloneLink, + @BinderParam(BindToXMLPayload.class) CloneMediaParams params); + /** * @see MediaClient#updateMedia(URI, Media)) */ diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/MediaClient.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/MediaClient.java index c779ac046f..b5445757f3 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/MediaClient.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/MediaClient.java @@ -23,6 +23,7 @@ import java.util.concurrent.TimeUnit; import org.jclouds.concurrent.Timeout; import org.jclouds.rest.annotations.Delegate; +import org.jclouds.vcloud.director.v1_5.domain.CloneMediaParams; import org.jclouds.vcloud.director.v1_5.domain.Media; import org.jclouds.vcloud.director.v1_5.domain.Metadata; import org.jclouds.vcloud.director.v1_5.domain.Owner; @@ -46,6 +47,22 @@ public interface MediaClient { */ Media getMedia(URI mediaUri); + /** + * Creates a media (and present upload link for the floppy/iso file). + * + * @return The response will return a link to transfer site to be able to continue with uploading the media. + */ + Media createMedia(URI uploadLink, Media media); + + /** + * Clones a media into new one. + * The status of the returned media is UNRESOLVED(0) until the task for cloning finish. + * + * @return a Media resource which will contain a task. + * The user should monitor the contained task status in order to check when it is completed. + */ + Media cloneMedia(URI cloneLink, CloneMediaParams params); + /** * Updates the name/description of a media. * diff --git a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/MediaClientExpectTest.java b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/MediaClientExpectTest.java index 00d2f18ee4..6340a5733f 100644 --- a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/MediaClientExpectTest.java +++ b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/MediaClientExpectTest.java @@ -41,7 +41,7 @@ public class MediaClientExpectTest extends BaseVCloudDirectorRestClientExpectTes @Test public void testCreateMedia() { - URI vdcUri = URI.create(endpoint + "/vdc/e9cd3387-ac57-4d27-a481-9bee75e0690f"); + URI uploadLink = URI.create(endpoint + "/vdc/e9cd3387-ac57-4d27-a481-9bee75e0690f/media"); VCloudDirectorClient client = requestsSendResponses(loginRequest, sessionResponse, new VcloudHttpRequestPrimer() @@ -62,12 +62,12 @@ public class MediaClientExpectTest extends BaseVCloudDirectorRestClientExpectTes .build(); Media expected = createMedia(); - assertEquals(client.getVdcClient().createMedia(vdcUri, source), expected); + assertEquals(client.getMediaClient().createMedia(uploadLink, source), expected); } @Test public void testCloneMedia() { - URI vdcUri = URI.create(endpoint + "/vdc/e9cd3387-ac57-4d27-a481-9bee75e0690f"); + URI cloneUri = URI.create(endpoint + "/vdc/e9cd3387-ac57-4d27-a481-9bee75e0690f/action/cloneMedia"); VCloudDirectorClient client = requestsSendResponses(loginRequest, sessionResponse, new VcloudHttpRequestPrimer() @@ -92,7 +92,7 @@ public class MediaClientExpectTest extends BaseVCloudDirectorRestClientExpectTes .build(); Media expected = cloneMedia(); - assertEquals(client.getVdcClient().cloneMedia(vdcUri, params), expected); + assertEquals(client.getMediaClient().cloneMedia(cloneUri, params), expected); } @Test @@ -351,7 +351,7 @@ public class MediaClientExpectTest extends BaseVCloudDirectorRestClientExpectTes assertEquals(client.getMediaClient().getOwner(mediaUri), expected); } - private static Media createMedia() { + static Media createMedia() { return Media.builder() .size(0) .imageType("iso") @@ -385,7 +385,7 @@ public class MediaClientExpectTest extends BaseVCloudDirectorRestClientExpectTes .build(); } - private static Media cloneMedia() { + static Media cloneMedia() { return Media.builder() .size(175163392) .imageType("iso") diff --git a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/MediaClientLiveTest.java b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/MediaClientLiveTest.java index 732917d92f..5e87f56aaf 100644 --- a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/MediaClientLiveTest.java +++ b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/MediaClientLiveTest.java @@ -19,6 +19,10 @@ package org.jclouds.vcloud.director.v1_5.features; import static com.google.common.base.Objects.equal; +import static com.google.common.base.Predicates.and; +import static com.google.common.collect.Iterables.find; +import static com.google.common.collect.Iterables.getFirst; +import static com.google.common.collect.Iterables.isEmpty; import static org.jclouds.vcloud.director.v1_5.VCloudDirectorLiveTestConstants.GETTER_RETURNS_SAME_OBJ; import static org.jclouds.vcloud.director.v1_5.VCloudDirectorLiveTestConstants.OBJ_DEL; import static org.jclouds.vcloud.director.v1_5.VCloudDirectorLiveTestConstants.OBJ_FIELD_ATTRB_DEL; @@ -31,6 +35,8 @@ import static org.jclouds.vcloud.director.v1_5.VCloudDirectorLiveTestConstants.O import static org.jclouds.vcloud.director.v1_5.VCloudDirectorLiveTestConstants.OBJ_REQ_LIVE; import static org.jclouds.vcloud.director.v1_5.VCloudDirectorLiveTestConstants.REF_REQ_LIVE; import static org.jclouds.vcloud.director.v1_5.VCloudDirectorLiveTestConstants.TASK_COMPLETE_TIMELY; +import static org.jclouds.vcloud.director.v1_5.predicates.LinkPredicates.relEquals; +import static org.jclouds.vcloud.director.v1_5.predicates.LinkPredicates.typeEquals; import static org.testng.Assert.assertEquals; import static org.testng.Assert.assertFalse; import static org.testng.Assert.assertNotNull; @@ -55,6 +61,7 @@ import org.jclouds.vcloud.director.v1_5.domain.MetadataValue; 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.Vdc; import org.jclouds.vcloud.director.v1_5.internal.BaseVCloudDirectorClientLiveTest; import org.testng.annotations.BeforeClass; import org.testng.annotations.Test; @@ -98,7 +105,9 @@ public class MediaClientLiveTest extends BaseVCloudDirectorClientLiveTest { @Test(testName = "POST /vdc/{id}/media", enabled = false) public void testCreateMedia() throws URISyntaxException { assertNotNull(vdcURI, String.format(REF_REQ_LIVE, VDC)); - assertNotNull(vdcClient.getVdc(vdcURI), String.format(OBJ_REQ_LIVE, VDC)); + Vdc vdc = vdcClient.getVdc(vdcURI); + assertNotNull(vdc, String.format(OBJ_REQ_LIVE, VDC)); + Link addMedia = find(vdc.getLinks(), and(relEquals("add"), typeEquals(VCloudDirectorMediaType.MEDIA))); java.io.File sourceFile = new java.io.File(getClass().getResource("/media/test.iso").toURI()); @@ -109,14 +118,14 @@ public class MediaClientLiveTest extends BaseVCloudDirectorClientLiveTest { .imageType(Media.ImageType.ISO) .description("Test media generated by testCreateMedia()") .build(); - media = vdcClient.createMedia(vdcURI, sourceMedia); + media = mediaClient.createMedia(addMedia.getHref(), sourceMedia); Checks.checkMediaFor(MEDIA, media); assertNotNull(media.getFiles(), String.format(OBJ_FIELD_REQ, MEDIA, "files")); assertTrue(media.getFiles().getFiles().size() == 1, String.format(OBJ_FIELD_EQ, MEDIA, "files.size()", "1", media.getFiles().getFiles().size())); - File uploadFile = Iterables.getFirst(media.getFiles().getFiles(), null); + File uploadFile = getFirst(media.getFiles().getFiles(), null); assertNotNull(uploadFile, String.format(OBJ_FIELD_REQ, MEDIA, "files.first")); assertTrue(equal(uploadFile.getSize(), sourceMedia.getSize()), String.format(OBJ_FIELD_EQ, MEDIA, "uploadFile.size()", sourceMedia.getSize(), uploadFile.getSize())); @@ -125,7 +134,7 @@ public class MediaClientLiveTest extends BaseVCloudDirectorClientLiveTest { assertNotNull(links, String.format(OBJ_FIELD_REQ, MEDIA, "uploadFile.links")); assertTrue(links.size() == 1, String.format(OBJ_FIELD_EQ, MEDIA, "uploadfile.links.size()", "1", links.size())); - Link uploadLink = Iterables.getFirst(links, null); + Link uploadLink = getFirst(links, null); assertTrue(equal(uploadLink.getRel(), Link.Rel.UPLOAD_DEFAULT), String.format(OBJ_FIELD_REQ, MEDIA, "uploadFile.links.first")); fail(); //TODO upload file and assert it succeeds @@ -172,7 +181,7 @@ public class MediaClientLiveTest extends BaseVCloudDirectorClientLiveTest { Checks.checkMediaFor(VDC, media); if (media.getTasksInProgress() != null) { - Task copyTask = Iterables.getFirst(media.getTasksInProgress().getTasks(), null); + Task copyTask = getFirst(media.getTasksInProgress().getTasks(), null); if (copyTask != null) { Checks.checkTask(copyTask); assertTrue(retryTaskSuccess.apply(copyTask), String.format(TASK_COMPLETE_TIMELY, "copyTask")); @@ -196,7 +205,7 @@ public class MediaClientLiveTest extends BaseVCloudDirectorClientLiveTest { Checks.checkMediaFor(VDC, media); if (media.getTasksInProgress() != null) { - Task copyTask = Iterables.getFirst(media.getTasksInProgress().getTasks(), null); + Task copyTask = getFirst(media.getTasksInProgress().getTasks(), null); if (copyTask != null) { Checks.checkTask(copyTask); assertTrue(retryTaskSuccess.apply(copyTask), String.format(TASK_COMPLETE_TIMELY, "copyTask")); @@ -244,7 +253,7 @@ public class MediaClientLiveTest extends BaseVCloudDirectorClientLiveTest { public void testGetMetadata() { metadata = mediaClient.getMetadataClient().getMetadata(media.getHref()); // required for testing - assertFalse(Iterables.isEmpty(metadata.getMetadataEntries()), + assertFalse(isEmpty(metadata.getMetadataEntries()), String.format(OBJ_FIELD_REQ_LIVE, MEDIA, "metadata.entries")); Checks.checkMetadataFor(MEDIA, metadata); diff --git a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/VdcClientExpectTest.java b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/VdcClientExpectTest.java index 5dee93c46e..7421e8f9cd 100644 --- a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/VdcClientExpectTest.java +++ b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/VdcClientExpectTest.java @@ -26,8 +26,28 @@ import java.net.URI; import org.jclouds.vcloud.director.v1_5.VCloudDirectorClient; import org.jclouds.vcloud.director.v1_5.VCloudDirectorException; import org.jclouds.vcloud.director.v1_5.VCloudDirectorMediaType; -import org.jclouds.vcloud.director.v1_5.domain.*; +import org.jclouds.vcloud.director.v1_5.domain.AvailableNetworks; +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.CaptureVAppParams; +import org.jclouds.vcloud.director.v1_5.domain.CloneMediaParams; +import org.jclouds.vcloud.director.v1_5.domain.CloneVAppParams; +import org.jclouds.vcloud.director.v1_5.domain.CloneVAppTemplateParams; +import org.jclouds.vcloud.director.v1_5.domain.ComposeVAppParams; +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.InstantiateVAppTemplateParams; +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.Metadata; +import org.jclouds.vcloud.director.v1_5.domain.MetadataValue; +import org.jclouds.vcloud.director.v1_5.domain.Reference; +import org.jclouds.vcloud.director.v1_5.domain.ResourceEntities; +import org.jclouds.vcloud.director.v1_5.domain.SupportedHardwareVersions; +import org.jclouds.vcloud.director.v1_5.domain.UploadVAppTemplateParams; +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.internal.BaseVCloudDirectorRestClientExpectTest; import org.testng.annotations.BeforeClass; import org.testng.annotations.Test; @@ -274,28 +294,62 @@ public class VdcClientExpectTest extends BaseVCloudDirectorRestClientExpectTest assertEquals(client.getVdcClient().uploadVAppTemplate(vdcURI, params), expected); } - @Test(enabled = false) + @Test public void testCreateMedia() { + URI vdcUri = URI.create(endpoint + "/vdc/e9cd3387-ac57-4d27-a481-9bee75e0690f"); + VCloudDirectorClient client = requestsSendResponses(loginRequest, sessionResponse, new VcloudHttpRequestPrimer() - .apiCommand("POST", "/vdc/e9cd3387-ac57-4d27-a481-9bee75e0690f/action/media") - .xmlFilePayload("/vdc/params/createMedia.xml", VCloudDirectorMediaType.MEDIA) - .acceptAnyMedia() + .apiCommand("POST", "/vdc/e9cd3387-ac57-4d27-a481-9bee75e0690f/media") + .acceptMedia(VCloudDirectorMediaType.MEDIA) + .xmlFilePayload("/media/createMediaSource.xml", VCloudDirectorMediaType.MEDIA) .httpRequestBuilder().build(), new VcloudHttpResponsePrimer() - .xmlFilePayload("/vdc/createMedia.xml", VCloudDirectorMediaType.MEDIA) - .httpResponseBuilder().build()); + .xmlFilePayload("/media/createMedia.xml", VCloudDirectorMediaType.MEDIA) + .httpResponseBuilder().statusCode(201).build()); - Media expected = createMedia(); - - // TODO: configure params - Media createMedia = Media.builder() - + Media source = Media.builder() + .size(0) + .imageType("iso") + .name("Test media 1") + .type("application/vnd.vmware.vcloud.media+xml") + .description("Test media generated by testCreateMedia()") .build(); + Media expected = MediaClientExpectTest.createMedia(); - assertEquals(client.getVdcClient().createMedia(vdcURI, createMedia), expected); + assertEquals(client.getVdcClient().createMedia(vdcUri, source), expected); } + + @Test + public void testCloneMedia() { + URI vdcUri = URI.create(endpoint + "/vdc/e9cd3387-ac57-4d27-a481-9bee75e0690f"); + VCloudDirectorClient client = 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") + .id("urn:vcloud:media:da8361af-cccd-4103-a71c-493513c49094") + .href(URI.create("https://mycloud.greenhousedata.com/api/media/da8361af-cccd-4103-a71c-493513c49094")) + .build()) + .isSourceDelete(false) + .build(); + Media expected = MediaClientExpectTest.cloneMedia(); + + assertEquals(client.getVdcClient().cloneMedia(vdcUri, params), expected); + } + @Test(enabled = false) public void testGetMetadata() { URI vdcUri = URI.create(endpoint + "/vdc/e9cd3387-ac57-4d27-a481-9bee75e0690f"); @@ -492,11 +546,6 @@ public class VdcClientExpectTest extends BaseVCloudDirectorRestClientExpectTest return null; } - private Media createMedia() { - // TODO Auto-generated method stub - return null; - } - private Metadata metadata() { // TODO Auto-generated method stub return null; From d536af3a95465b8e25109f7a4d0a4fdab36c776d Mon Sep 17 00:00:00 2001 From: Adrian Cole Date: Sun, 11 Mar 2012 10:56:48 -0700 Subject: [PATCH 03/20] removed awkward and unnecessary URISupplier type --- .../director/v1_5/domain/ReferenceType.java | 10 +--- .../director/v1_5/domain/ResourceType.java | 12 +---- .../director/v1_5/domain/URISupplier.java | 47 ------------------- .../v1_5/features/MetadataAsyncClient.java | 1 - .../v1_5/features/TaskAsyncClient.java | 1 - .../OrgReferenceToTaskListEndpoint.java | 1 - .../director/v1_5/predicates/TaskSuccess.java | 5 +- .../AdminCatalogClientExpectTest.java | 12 ++--- .../features/AdminCatalogClientLiveTest.java | 24 +++++----- .../v1_5/features/GroupClientExpectTest.java | 6 +-- .../v1_5/features/GroupClientLiveTest.java | 10 ++-- .../v1_5/features/OrgClientLiveTest.java | 2 +- .../v1_5/features/TaskClientLiveTest.java | 2 +- 13 files changed, 31 insertions(+), 102 deletions(-) delete mode 100644 labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/URISupplier.java diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/ReferenceType.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/ReferenceType.java index 314890c5fe..f568c8785f 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/ReferenceType.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/ReferenceType.java @@ -43,7 +43,7 @@ import com.google.common.base.Objects.ToStringHelper; CatalogReference.class, Reference.class }) -public class ReferenceType> implements URISupplier { +public class ReferenceType> { public static > Builder builder() { return new Builder(); @@ -176,14 +176,6 @@ public class ReferenceType> implements URISupplier { return type; } - /** - * @see URISupplier#getURI() - */ - @Override - public URI getURI() { - return getHref(); - } - @Override public boolean equals(Object o) { if (this == o) diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/ResourceType.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/ResourceType.java index 69100b0e2a..42f14c1189 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/ResourceType.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/ResourceType.java @@ -28,8 +28,6 @@ import java.util.Set; import javax.xml.bind.annotation.XmlAttribute; import javax.xml.bind.annotation.XmlElement; -import org.jclouds.vcloud.director.v1_5.domain.EntityType.NewBuilder; - import com.google.common.base.Objects; import com.google.common.base.Objects.ToStringHelper; import com.google.common.collect.ImmutableSet; @@ -46,7 +44,7 @@ import com.google.common.collect.Sets; * * @author Adrian Cole */ -public abstract class ResourceType> implements URISupplier { +public abstract class ResourceType> { public NewBuilder toNewBuilder() { throw new UnsupportedOperationException("New builder not yet implemented for this class"); @@ -179,14 +177,6 @@ public abstract class ResourceType> implements URISupp return href; } - /** - * @see URISupplier#getURI() - */ - @Override - public URI getURI() { - return getHref(); - } - /** * Contains the type of the the entity. *

diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/URISupplier.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/URISupplier.java deleted file mode 100644 index 3f5066b81d..0000000000 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/URISupplier.java +++ /dev/null @@ -1,47 +0,0 @@ -/** - * Licensed to jclouds, Inc. (jclouds) under one or more - * contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. jclouds 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.domain; - -import java.net.URI; - -/** - * @author grkvlt@apache.org - */ -public interface URISupplier { - - /** - * This returns the {@link URI} for a particular {@link ReferenceType} or {@link ResourceType} object. - * - * @see ResourceType#getHref() - * @see ReferenceType#getHref() - */ - public URI getURI(); - - public static class SingleURI { - public static URISupplier fromURI(final URI uri) { - return new URISupplier(){ - @Override - public URI getURI() { - return uri; - } - }; - } - } - -} diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/MetadataAsyncClient.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/MetadataAsyncClient.java index fe2dfb46c3..b6f9bc3284 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/MetadataAsyncClient.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/MetadataAsyncClient.java @@ -39,7 +39,6 @@ import org.jclouds.vcloud.director.v1_5.VCloudDirectorMediaType; import org.jclouds.vcloud.director.v1_5.domain.Metadata; import org.jclouds.vcloud.director.v1_5.domain.MetadataValue; import org.jclouds.vcloud.director.v1_5.domain.Task; -import org.jclouds.vcloud.director.v1_5.domain.URISupplier; import org.jclouds.vcloud.director.v1_5.filters.AddVCloudAuthorizationToRequest; import org.jclouds.vcloud.director.v1_5.functions.ThrowVCloudErrorOn4xx; diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/TaskAsyncClient.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/TaskAsyncClient.java index 99a92fb54f..1c5dc927ce 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/TaskAsyncClient.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/TaskAsyncClient.java @@ -31,7 +31,6 @@ import org.jclouds.rest.annotations.JAXBResponseParser; import org.jclouds.rest.annotations.RequestFilters; import org.jclouds.vcloud.director.v1_5.domain.Task; import org.jclouds.vcloud.director.v1_5.domain.TasksList; -import org.jclouds.vcloud.director.v1_5.domain.URISupplier; import org.jclouds.vcloud.director.v1_5.filters.AddVCloudAuthorizationToRequest; import org.jclouds.vcloud.director.v1_5.functions.OrgReferenceToTaskListEndpoint; import org.jclouds.vcloud.director.v1_5.functions.ThrowVCloudErrorOn4xx; diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/functions/OrgReferenceToTaskListEndpoint.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/functions/OrgReferenceToTaskListEndpoint.java index a46f945082..5a40b35ae9 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/functions/OrgReferenceToTaskListEndpoint.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/functions/OrgReferenceToTaskListEndpoint.java @@ -26,7 +26,6 @@ import javax.inject.Singleton; import org.jclouds.vcloud.director.v1_5.VCloudDirectorMediaType; import org.jclouds.vcloud.director.v1_5.domain.Link; import org.jclouds.vcloud.director.v1_5.domain.Org; -import org.jclouds.vcloud.director.v1_5.domain.URISupplier; import org.jclouds.vcloud.director.v1_5.features.OrgClient; import com.google.common.base.Function; diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/predicates/TaskSuccess.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/predicates/TaskSuccess.java index 1cd2a9d804..ee0aa98810 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/predicates/TaskSuccess.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/predicates/TaskSuccess.java @@ -18,8 +18,6 @@ */ package org.jclouds.vcloud.director.v1_5.predicates; -import java.net.URI; - import javax.annotation.Resource; import javax.inject.Inject; import javax.inject.Singleton; @@ -27,7 +25,6 @@ import javax.inject.Singleton; import org.jclouds.logging.Logger; import org.jclouds.vcloud.director.v1_5.VCloudDirectorException; import org.jclouds.vcloud.director.v1_5.domain.Task; -import org.jclouds.vcloud.director.v1_5.domain.URISupplier; import org.jclouds.vcloud.director.v1_5.features.TaskClient; import com.google.common.base.Predicate; @@ -56,7 +53,7 @@ public class TaskSuccess implements Predicate { logger.trace("looking for status on task %s", task); // TODO shouldn't we see if it's already done before getting it from API server? - task = taskClient.getTask(task.getURI()); + task = taskClient.getTask(task.getHref()); // perhaps task isn't available, yet if (task == null) return false; diff --git a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/AdminCatalogClientExpectTest.java b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/AdminCatalogClientExpectTest.java index 44e33207a1..67daebfcdf 100644 --- a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/AdminCatalogClientExpectTest.java +++ b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/AdminCatalogClientExpectTest.java @@ -60,7 +60,7 @@ public class AdminCatalogClientExpectTest extends BaseVCloudDirectorRestClientEx AdminCatalog expected = catalog(); - assertEquals(client.getAdminCatalogClient().getCatalog(catalogRef.getURI()), expected); + assertEquals(client.getAdminCatalogClient().getCatalog(catalogRef.getHref()), expected); } @Test @@ -77,7 +77,7 @@ public class AdminCatalogClientExpectTest extends BaseVCloudDirectorRestClientEx AdminCatalog expected = modifyCatalog(); - assertEquals(client.getAdminCatalogClient().updateCatalog(catalogRef.getURI(), expected), expected); + assertEquals(client.getAdminCatalogClient().updateCatalog(catalogRef.getHref(), expected), expected); } @Test @@ -93,7 +93,7 @@ public class AdminCatalogClientExpectTest extends BaseVCloudDirectorRestClientEx Owner expected = owner(); - assertEquals(client.getAdminCatalogClient().getOwner(catalogRef.getURI()), expected); + assertEquals(client.getAdminCatalogClient().getOwner(catalogRef.getHref()), expected); } @Test @@ -116,7 +116,7 @@ public class AdminCatalogClientExpectTest extends BaseVCloudDirectorRestClientEx .build()) .build(); - client.getAdminCatalogClient().setOwner(catalogRef.getURI(), newOwner); + client.getAdminCatalogClient().setOwner(catalogRef.getHref(), newOwner); } @Test @@ -134,7 +134,7 @@ public class AdminCatalogClientExpectTest extends BaseVCloudDirectorRestClientEx .isPublished(true) .build(); - client.getAdminCatalogClient().publishCatalog(catalogRef.getURI(), params); + client.getAdminCatalogClient().publishCatalog(catalogRef.getHref(), params); } @Test @@ -147,7 +147,7 @@ public class AdminCatalogClientExpectTest extends BaseVCloudDirectorRestClientEx new VcloudHttpResponsePrimer() .httpResponseBuilder().statusCode(204).build()); - client.getAdminCatalogClient().deleteCatalog(catalogRef.getURI()); + client.getAdminCatalogClient().deleteCatalog(catalogRef.getHref()); } public static final AdminCatalog catalog() { diff --git a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/AdminCatalogClientLiveTest.java b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/AdminCatalogClientLiveTest.java index 0f82fc5819..490895e53a 100644 --- a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/AdminCatalogClientLiveTest.java +++ b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/AdminCatalogClientLiveTest.java @@ -74,7 +74,7 @@ public class AdminCatalogClientLiveTest extends BaseVCloudDirectorClientLiveTest @Test(testName = "GET /admin/catalog/{id}") public void testGetCatalog() { assertNotNull(catalogRef, String.format(REF_REQ_LIVE, "Catalog")); - catalog = catalogClient.getCatalog(catalogRef.getURI()); + catalog = catalogClient.getCatalog(catalogRef.getHref()); Checks.checkAdminCatalog(catalog); } @@ -82,7 +82,7 @@ public class AdminCatalogClientLiveTest extends BaseVCloudDirectorClientLiveTest @Test(testName = "GET /admin/catalog/{id}/owner", dependsOnMethods = { "testGetCatalog" }) public void testGetCatalogOwner() { - owner = catalogClient.getOwner(catalog.getURI()); + owner = catalogClient.getOwner(catalog.getHref()); Checks.checkOwner(owner); } @@ -100,13 +100,13 @@ public class AdminCatalogClientLiveTest extends BaseVCloudDirectorClientLiveTest .build(); try { - catalogClient.setOwner(catalog.getURI(), newOwner); - owner = catalogClient.getOwner(catalog.getURI()); + catalogClient.setOwner(catalog.getHref(), newOwner); + owner = catalogClient.getOwner(catalog.getHref()); Checks.checkOwner(owner); assertTrue(equal(owner, newOwner), String.format(OBJ_FIELD_UPDATABLE, CATALOG, "owner")); } finally { - catalogClient.setOwner(catalog.getURI(), oldOwner); - owner = catalogClient.getOwner(catalog.getURI()); + catalogClient.setOwner(catalog.getHref(), oldOwner); + owner = catalogClient.getOwner(catalog.getHref()); } } @@ -127,7 +127,7 @@ public class AdminCatalogClientLiveTest extends BaseVCloudDirectorClientLiveTest // .catalogItems(newCatalogItems) .build(); - catalog = catalogClient.updateCatalog(catalog.getURI(), catalog); + catalog = catalogClient.updateCatalog(catalog.getHref(), catalog); assertTrue(equal(catalog.getName(), newName), String.format(OBJ_FIELD_UPDATABLE, CATALOG, "name")); assertTrue(equal(catalog.getDescription(), newDescription), @@ -144,7 +144,7 @@ public class AdminCatalogClientLiveTest extends BaseVCloudDirectorClientLiveTest // .catalogItems(oldCatalogItems) .build(); - catalog = catalogClient.updateCatalog(catalog.getURI(), catalog); + catalog = catalogClient.updateCatalog(catalog.getHref(), catalog); } } @@ -158,8 +158,8 @@ public class AdminCatalogClientLiveTest extends BaseVCloudDirectorClientLiveTest .isPublished(true) .build(); - catalogClient.publishCatalog(catalogRef.getURI(), params); - catalog = catalogClient.getCatalog(catalogRef.getURI()); + catalogClient.publishCatalog(catalogRef.getHref(), params); + catalog = catalogClient.getCatalog(catalogRef.getHref()); assertTrue(catalog.isPublished(), String.format(OBJ_FIELD_EQ, CATALOG, "isPublished", true, catalog.isPublished())); @@ -169,7 +169,7 @@ public class AdminCatalogClientLiveTest extends BaseVCloudDirectorClientLiveTest @Test(testName = "DELETE /admin/catalog/{id}", dependsOnMethods = { "testPublishCatalog" }, enabled = false ) public void testDeleteCatalog() { - catalogClient.deleteCatalog(catalogRef.getURI()); + catalogClient.deleteCatalog(catalogRef.getHref()); Error expected = Error.builder() .message("???") @@ -178,7 +178,7 @@ public class AdminCatalogClientLiveTest extends BaseVCloudDirectorClientLiveTest .build(); try { - catalog = catalogClient.getCatalog(catalogRef.getURI()); + catalog = catalogClient.getCatalog(catalogRef.getHref()); fail("Should give HTTP 403 error"); } catch (VCloudDirectorException vde) { assertEquals(vde.getError(), expected); diff --git a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/GroupClientExpectTest.java b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/GroupClientExpectTest.java index c5e5e95464..b61708eace 100644 --- a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/GroupClientExpectTest.java +++ b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/GroupClientExpectTest.java @@ -56,7 +56,7 @@ public class GroupClientExpectTest extends BaseVCloudDirectorRestClientExpectTes Group expected = group(); - assertEquals(client.getGroupClient().getGroup(groupRef.getURI()), expected); + assertEquals(client.getGroupClient().getGroup(groupRef.getHref()), expected); } public static final Group group() { @@ -79,7 +79,7 @@ public class GroupClientExpectTest extends BaseVCloudDirectorRestClientExpectTes Group expected = updateGroup(); - assertEquals(client.getGroupClient().updateGroup(groupRef.getURI(), expected), expected); + assertEquals(client.getGroupClient().updateGroup(groupRef.getHref(), expected), expected); } public static Group updateGroup() { @@ -96,6 +96,6 @@ public class GroupClientExpectTest extends BaseVCloudDirectorRestClientExpectTes new VcloudHttpResponsePrimer() .httpResponseBuilder().statusCode(204).build()); - client.getAdminCatalogClient().deleteCatalog(groupRef.getURI()); + client.getAdminCatalogClient().deleteCatalog(groupRef.getHref()); } } diff --git a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/GroupClientLiveTest.java b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/GroupClientLiveTest.java index 6a618fc4d9..8b116b163e 100644 --- a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/GroupClientLiveTest.java +++ b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/GroupClientLiveTest.java @@ -76,7 +76,7 @@ public class GroupClientLiveTest extends BaseVCloudDirectorClientLiveTest { @Test(testName = "GET /admin/group/{id}", enabled = false) public void testGetGroup() { assertNotNull(groupRef, String.format(REF_REQ_LIVE, "Group")); - group = groupClient.getGroup(groupRef.getURI()); + group = groupClient.getGroup(groupRef.getHref()); Checks.checkGroup(group); } @@ -95,7 +95,7 @@ public class GroupClientLiveTest extends BaseVCloudDirectorClientLiveTest { .description(newDescription) .build(); - group = groupClient.updateGroup(group.getURI(), group); + group = groupClient.updateGroup(group.getHref(), group); assertTrue(equal(group.getName(), newName), String.format(OBJ_FIELD_UPDATABLE, GROUP, "name")); assertTrue(equal(group.getDescription(), newDescription), @@ -110,13 +110,13 @@ public class GroupClientLiveTest extends BaseVCloudDirectorClientLiveTest { .description(oldDescription) .build(); - group = groupClient.updateGroup(group.getURI(), group); + group = groupClient.updateGroup(group.getHref(), group); } } @Test(testName = "DELETE /admin/group/{id}", enabled = false ) public void testDeleteCatalog() { - groupClient.deleteGroup(groupRef.getURI()); + groupClient.deleteGroup(groupRef.getHref()); Error expected = Error.builder() .message("???") @@ -125,7 +125,7 @@ public class GroupClientLiveTest extends BaseVCloudDirectorClientLiveTest { .build(); try { - group = groupClient.getGroup(groupRef.getURI()); + group = groupClient.getGroup(groupRef.getHref()); fail("Should give HTTP 403 error"); } catch (VCloudDirectorException vde) { assertEquals(vde.getError(), expected); diff --git a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/OrgClientLiveTest.java b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/OrgClientLiveTest.java index 9b87ad8ed6..a1d910437d 100644 --- a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/OrgClientLiveTest.java +++ b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/OrgClientLiveTest.java @@ -92,7 +92,7 @@ public class OrgClientLiveTest extends BaseVCloudDirectorClientLiveTest { Reference orgRef = Iterables.getFirst(orgList.getOrgs(), null); assertNotNull(orgRef); - orgURI = orgRef.getURI(); + orgURI = orgRef.getHref(); // Call the method being tested org = orgClient.getOrg(orgURI); diff --git a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/TaskClientLiveTest.java b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/TaskClientLiveTest.java index f57b01c187..bbe136481f 100644 --- a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/TaskClientLiveTest.java +++ b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/TaskClientLiveTest.java @@ -92,7 +92,7 @@ public class TaskClientLiveTest extends BaseVCloudDirectorClientLiveTest { //TODO: upload media or something so you can get a fresh cancellable task? Task taskRef = Iterables.getFirst(taskList.getTasks(), null); - taskURI = taskRef.getURI(); + taskURI = taskRef.getHref(); // Call the method being tested task = taskClient.getTask(taskURI); From 2188ca983961456175efe07b50487617cab04ce4 Mon Sep 17 00:00:00 2001 From: Adrian Cole Date: Sun, 11 Mar 2012 11:07:31 -0700 Subject: [PATCH 04/20] imports --- .../v1_5/VCloudDirectorAsyncClient.java | 1 + .../director/v1_5/VCloudDirectorClient.java | 1 + .../VCloudDirectorRestClientModule.java | 21 ++++++++++- .../v1_5/domain/AvailableNetworks.java | 1 + .../director/v1_5/domain/CatalogItem.java | 1 + .../v1_5/domain/CatalogReference.java | 1 + .../director/v1_5/domain/CatalogsList.java | 2 +- .../director/v1_5/domain/CloneVAppParams.java | 2 - .../v1_5/domain/ComposeVAppParams.java | 1 + .../v1_5/domain/CustomizationSection.java | 1 + .../vcloud/director/v1_5/domain/File.java | 1 + .../director/v1_5/domain/FirewallRule.java | 2 - .../v1_5/domain/FirewallRuleProtocols.java | 1 - .../domain/GuestCustomizationSection.java | 1 + .../director/v1_5/domain/IpAddresses.java | 1 + .../v1_5/domain/IpsecVpnLocalPeer.java | 1 - .../vcloud/director/v1_5/domain/Link.java | 1 + .../vcloud/director/v1_5/domain/Media.java | 1 + .../vcloud/director/v1_5/domain/Metadata.java | 1 + .../director/v1_5/domain/MetadataEntry.java | 1 + .../director/v1_5/domain/MetadataValue.java | 1 + .../director/v1_5/domain/NatService.java | 2 - .../v1_5/domain/NetworkConfigSection.java | 1 + .../v1_5/domain/NetworkConnectionSection.java | 1 + .../director/v1_5/domain/NetworkType.java | 1 + .../vcloud/director/v1_5/domain/OrgList.java | 1 + .../director/v1_5/domain/OrgNetwork.java | 1 + .../vcloud/director/v1_5/domain/Owner.java | 13 ++++--- .../v1_5/domain/ProductSectionList.java | 1 + .../director/v1_5/domain/ReferenceType.java | 1 + .../v1_5/domain/ResourceEntities.java | 1 + .../v1_5/domain/ResourceEntityType.java | 1 + .../vcloud/director/v1_5/domain/Session.java | 1 + .../domain/SourcedCompositionItemParam.java | 1 + .../domain/SupportedHardwareVersions.java | 1 + .../vcloud/director/v1_5/domain/Task.java | 1 + .../director/v1_5/domain/TasksInProgress.java | 1 + .../director/v1_5/domain/TasksList.java | 1 + .../vcloud/director/v1_5/domain/User.java | 1 + .../v1_5/domain/VAppNetworkConfiguration.java | 1 + .../director/v1_5/domain/VAppTemplate.java | 1 + .../v1_5/domain/VAppTemplateChildren.java | 1 + .../vcloud/director/v1_5/domain/Vdc.java | 1 + .../vcloud/director/v1_5/domain/Vdcs.java | 1 + .../cim/ResourceAllocationSettingData.java | 5 ++- .../v1_5/domain/cim/package-info.java | 2 +- .../domain/ovf/DeploymentOptionSection.java | 1 + .../vcloud/director/v1_5/domain/ovf/Disk.java | 2 +- .../v1_5/domain/ovf/NetworkSection.java | 1 + .../v1_5/domain/ovf/ProductSection.java | 1 + .../domain/ovf/VirtualHardwareSection.java | 1 + .../domain/ovf/internal/package-info.java | 2 +- .../v1_5/domain/ovf/package-info.java | 2 +- .../v1_5/domain/query/CatalogReferences.java | 1 + .../v1_5/domain/query/ContainerType.java | 1 + .../query/QueryResultCatalogRecord.java | 1 + .../query/QueryResultNetworkRecord.java | 1 + .../domain/query/QueryResultRecordType.java | 1 + .../v1_5/domain/query/QueryResultRecords.java | 1 + .../domain/query/QueryResultReferences.java | 3 +- .../v1_5/domain/query/package-info.java | 3 +- .../v1_5/domain/vapp/package-info.java | 2 +- .../v1_5/features/GroupAsyncClient.java | 5 --- .../features/VAppTemplateAsyncClient.java | 28 +++++++++++++- .../v1_5/features/VAppTemplateClient.java | 13 ++++++- .../v1_5/features/VdcAsyncClient.java | 13 ++++++- .../director/v1_5/features/VdcClient.java | 13 ++++++- .../predicates/ReferenceTypePredicates.java | 1 + .../features/AdminCatalogClientLiveTest.java | 5 ++- .../v1_5/features/AdminOrgClientLiveTest.java | 17 --------- .../v1_5/features/GroupClientLiveTest.java | 17 ++++----- .../v1_5/features/MediaClientExpectTest.java | 13 ++++++- .../features/NetworkClientExpectTest.java | 11 +++++- .../VAppTemplateClientExpectTest.java | 37 ++++++++++++++++++- ...aseVCloudDirectorRestClientExpectTest.java | 1 - .../ReferenceTypePredicatesTest.java | 1 - 76 files changed, 216 insertions(+), 70 deletions(-) diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/VCloudDirectorAsyncClient.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/VCloudDirectorAsyncClient.java index 9e5fc4bf91..10b75631fa 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/VCloudDirectorAsyncClient.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/VCloudDirectorAsyncClient.java @@ -19,6 +19,7 @@ package org.jclouds.vcloud.director.v1_5; import org.jclouds.rest.annotations.Delegate; +import org.jclouds.vcloud.director.v1_5.domain.AdminOrg; import org.jclouds.vcloud.director.v1_5.domain.Catalog; import org.jclouds.vcloud.director.v1_5.domain.Group; import org.jclouds.vcloud.director.v1_5.domain.Media; diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/VCloudDirectorClient.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/VCloudDirectorClient.java index fc4858cec4..87fee2652a 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/VCloudDirectorClient.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/VCloudDirectorClient.java @@ -22,6 +22,7 @@ import java.util.concurrent.TimeUnit; import org.jclouds.concurrent.Timeout; import org.jclouds.rest.annotations.Delegate; +import org.jclouds.vcloud.director.v1_5.domain.AdminOrg; import org.jclouds.vcloud.director.v1_5.domain.Catalog; import org.jclouds.vcloud.director.v1_5.domain.Group; import org.jclouds.vcloud.director.v1_5.domain.Media; diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/config/VCloudDirectorRestClientModule.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/config/VCloudDirectorRestClientModule.java index 7bf58b8bb1..1b1e0d7627 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/config/VCloudDirectorRestClientModule.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/config/VCloudDirectorRestClientModule.java @@ -42,11 +42,30 @@ import org.jclouds.vcloud.director.v1_5.VCloudDirectorClient; import org.jclouds.vcloud.director.v1_5.annotations.Login; import org.jclouds.vcloud.director.v1_5.domain.Session; import org.jclouds.vcloud.director.v1_5.domain.SessionWithToken; -import org.jclouds.vcloud.director.v1_5.features.*; +import org.jclouds.vcloud.director.v1_5.features.AdminCatalogAsyncClient; +import org.jclouds.vcloud.director.v1_5.features.AdminCatalogClient; +import org.jclouds.vcloud.director.v1_5.features.CatalogAsyncClient; +import org.jclouds.vcloud.director.v1_5.features.CatalogClient; +import org.jclouds.vcloud.director.v1_5.features.GroupAsyncClient; +import org.jclouds.vcloud.director.v1_5.features.GroupClient; +import org.jclouds.vcloud.director.v1_5.features.MediaAsyncClient; +import org.jclouds.vcloud.director.v1_5.features.MediaClient; import org.jclouds.vcloud.director.v1_5.features.MetadataAsyncClient; import org.jclouds.vcloud.director.v1_5.features.MetadataClient; +import org.jclouds.vcloud.director.v1_5.features.NetworkAsyncClient; +import org.jclouds.vcloud.director.v1_5.features.NetworkClient; +import org.jclouds.vcloud.director.v1_5.features.OrgAsyncClient; +import org.jclouds.vcloud.director.v1_5.features.OrgClient; +import org.jclouds.vcloud.director.v1_5.features.QueryAsyncClient; +import org.jclouds.vcloud.director.v1_5.features.QueryClient; +import org.jclouds.vcloud.director.v1_5.features.TaskAsyncClient; +import org.jclouds.vcloud.director.v1_5.features.TaskClient; import org.jclouds.vcloud.director.v1_5.features.UploadAsyncClient; import org.jclouds.vcloud.director.v1_5.features.UploadClient; +import org.jclouds.vcloud.director.v1_5.features.VAppTemplateAsyncClient; +import org.jclouds.vcloud.director.v1_5.features.VAppTemplateClient; +import org.jclouds.vcloud.director.v1_5.features.VdcAsyncClient; +import org.jclouds.vcloud.director.v1_5.features.VdcClient; import org.jclouds.vcloud.director.v1_5.functions.LoginUserInOrgWithPassword; import org.jclouds.vcloud.director.v1_5.handlers.InvalidateSessionAndRetryOn401AndLogoutOnClose; import org.jclouds.vcloud.director.v1_5.handlers.VCloudDirectorErrorHandler; diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/AvailableNetworks.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/AvailableNetworks.java index 8e794289f4..bce11717ae 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/AvailableNetworks.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/AvailableNetworks.java @@ -25,6 +25,7 @@ import static com.google.common.base.Preconditions.checkNotNull; import java.util.Collection; import java.util.Collections; import java.util.Set; + import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlType; diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/CatalogItem.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/CatalogItem.java index 7ec0a2ef28..12b3cdb740 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/CatalogItem.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/CatalogItem.java @@ -23,6 +23,7 @@ import static com.google.common.base.Preconditions.checkNotNull; import java.net.URI; import java.util.Collections; import java.util.Set; + import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlRootElement; diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/CatalogReference.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/CatalogReference.java index 91179152d6..f847700fba 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/CatalogReference.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/CatalogReference.java @@ -1,6 +1,7 @@ package org.jclouds.vcloud.director.v1_5.domain; import java.net.URI; + import javax.xml.bind.annotation.XmlRootElement; @XmlRootElement(name = "CatalogReference") diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/CatalogsList.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/CatalogsList.java index f15573de67..36ff6d9d65 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/CatalogsList.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/CatalogsList.java @@ -21,9 +21,9 @@ package org.jclouds.vcloud.director.v1_5.domain; import static com.google.common.base.Objects.equal; import static com.google.common.base.Preconditions.checkNotNull; -import java.util.Collection; import java.util.Collections; import java.util.Set; + import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlRootElement; diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/CloneVAppParams.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/CloneVAppParams.java index 7ec768d529..065f7dcf4f 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/CloneVAppParams.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/CloneVAppParams.java @@ -21,8 +21,6 @@ package org.jclouds.vcloud.director.v1_5.domain; import javax.xml.bind.annotation.XmlType; -import com.google.common.base.Objects; - /** * Represents parameters for copying a vApp and optionally deleting the source. diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/ComposeVAppParams.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/ComposeVAppParams.java index 2d6b3ad154..b7a0e5d1da 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/ComposeVAppParams.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/ComposeVAppParams.java @@ -24,6 +24,7 @@ import static com.google.common.base.Preconditions.checkNotNull; import java.util.Collections; import java.util.Set; + import javax.xml.bind.annotation.XmlAttribute; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlSeeAlso; diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/CustomizationSection.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/CustomizationSection.java index 9081103582..72580d253f 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/CustomizationSection.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/CustomizationSection.java @@ -25,6 +25,7 @@ import static com.google.common.base.Preconditions.checkNotNull; import java.net.URI; import java.util.Collections; import java.util.Set; + import javax.xml.bind.annotation.XmlAttribute; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlRootElement; diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/File.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/File.java index 26daaeeae4..9c1128f5c1 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/File.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/File.java @@ -24,6 +24,7 @@ import static com.google.common.base.Preconditions.checkNotNull; import java.net.URI; import java.util.Set; + import javax.xml.bind.annotation.XmlAttribute; import javax.xml.bind.annotation.XmlSchemaType; import javax.xml.bind.annotation.XmlType; diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/FirewallRule.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/FirewallRule.java index 2956bc6117..9ce90b4f82 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/FirewallRule.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/FirewallRule.java @@ -21,8 +21,6 @@ package org.jclouds.vcloud.director.v1_5.domain; import static com.google.common.base.Objects.equal; -import javax.xml.bind.annotation.XmlAccessType; -import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlType; diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/FirewallRuleProtocols.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/FirewallRuleProtocols.java index be2486a61d..dfbb179335 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/FirewallRuleProtocols.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/FirewallRuleProtocols.java @@ -22,7 +22,6 @@ package org.jclouds.vcloud.director.v1_5.domain; import static com.google.common.base.Objects.equal; import javax.xml.bind.annotation.XmlElement; -import javax.xml.bind.annotation.XmlSeeAlso; import javax.xml.bind.annotation.XmlType; import com.google.common.base.Objects; diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/GuestCustomizationSection.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/GuestCustomizationSection.java index d1977f932b..879110f744 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/GuestCustomizationSection.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/GuestCustomizationSection.java @@ -25,6 +25,7 @@ import static com.google.common.base.Preconditions.checkNotNull; import java.net.URI; import java.util.Collections; import java.util.Set; + import javax.xml.bind.annotation.XmlAttribute; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlRootElement; diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/IpAddresses.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/IpAddresses.java index 61343c8494..6d7a39923f 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/IpAddresses.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/IpAddresses.java @@ -23,6 +23,7 @@ import static com.google.common.base.Preconditions.checkNotNull; import java.util.Collections; import java.util.Set; + import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlRootElement; diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/IpsecVpnLocalPeer.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/IpsecVpnLocalPeer.java index 27ca6519d2..e102ecbb18 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/IpsecVpnLocalPeer.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/IpsecVpnLocalPeer.java @@ -20,7 +20,6 @@ package org.jclouds.vcloud.director.v1_5.domain; import javax.xml.bind.annotation.XmlRootElement; -import javax.xml.bind.annotation.XmlType; /** diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/Link.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/Link.java index e7d95c666d..83948fdd48 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/Link.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/Link.java @@ -25,6 +25,7 @@ import java.net.URI; import java.util.Arrays; import java.util.List; import java.util.Map; + import javax.xml.bind.annotation.XmlAttribute; import javax.xml.bind.annotation.XmlRootElement; diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/Media.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/Media.java index 1c42578cb0..234091b18d 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/Media.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/Media.java @@ -24,6 +24,7 @@ import java.net.URI; import java.util.Arrays; import java.util.List; import java.util.Set; + import javax.xml.bind.annotation.XmlAttribute; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlRootElement; diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/Metadata.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/Metadata.java index 781f4b684b..1e8b8fc180 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/Metadata.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/Metadata.java @@ -24,6 +24,7 @@ import static com.google.common.base.Preconditions.checkNotNull; import java.net.URI; import java.util.Collections; import java.util.Set; + import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlRootElement; diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/MetadataEntry.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/MetadataEntry.java index c9d08b7fe8..f0c73ca532 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/MetadataEntry.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/MetadataEntry.java @@ -23,6 +23,7 @@ import static com.google.common.base.Preconditions.checkNotNull; import java.net.URI; import java.util.Set; + import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlRootElement; diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/MetadataValue.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/MetadataValue.java index 7f9cd87b79..c5131ae1f5 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/MetadataValue.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/MetadataValue.java @@ -23,6 +23,7 @@ import static com.google.common.base.Preconditions.checkNotNull; import java.net.URI; import java.util.Set; + import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlRootElement; diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/NatService.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/NatService.java index 5b0c756a80..ee1d401b0d 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/NatService.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/NatService.java @@ -22,9 +22,7 @@ package org.jclouds.vcloud.director.v1_5.domain; import static com.google.common.base.Objects.equal; import static com.google.common.base.Preconditions.checkNotNull; -import java.util.Collection; import java.util.Collections; -import java.util.List; import java.util.Set; import javax.xml.bind.annotation.XmlElement; diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/NetworkConfigSection.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/NetworkConfigSection.java index 6b90af824d..2a680852bc 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/NetworkConfigSection.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/NetworkConfigSection.java @@ -25,6 +25,7 @@ import static com.google.common.base.Preconditions.checkNotNull; import java.net.URI; import java.util.Collections; import java.util.Set; + import javax.xml.bind.annotation.XmlAttribute; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlRootElement; diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/NetworkConnectionSection.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/NetworkConnectionSection.java index a852ceed2f..73e8c5ebc7 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/NetworkConnectionSection.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/NetworkConnectionSection.java @@ -25,6 +25,7 @@ import static com.google.common.base.Preconditions.checkNotNull; import java.net.URI; import java.util.Collections; import java.util.Set; + import javax.xml.bind.annotation.XmlAttribute; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlRootElement; diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/NetworkType.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/NetworkType.java index bd9a213c9c..9b8d4e9f75 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/NetworkType.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/NetworkType.java @@ -23,6 +23,7 @@ import static com.google.common.base.Preconditions.checkNotNull; import java.net.URI; import java.util.Set; + import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlRootElement; diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/OrgList.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/OrgList.java index 80f4cd1fa0..0788641c73 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/OrgList.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/OrgList.java @@ -23,6 +23,7 @@ import static com.google.common.base.Preconditions.checkNotNull; import java.util.Collections; import java.util.Set; + import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlRootElement; diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/OrgNetwork.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/OrgNetwork.java index c2d841ffbe..65212fd30e 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/OrgNetwork.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/OrgNetwork.java @@ -23,6 +23,7 @@ import static com.google.common.base.Preconditions.checkNotNull; import java.net.URI; import java.util.Set; + import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlRootElement; diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/Owner.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/Owner.java index 2b8741af9c..119c6afa8d 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/Owner.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/Owner.java @@ -19,17 +19,18 @@ package org.jclouds.vcloud.director.v1_5.domain; -import com.google.common.base.Objects; -import com.google.common.collect.Sets; +import static com.google.common.base.Objects.equal; +import static com.google.common.base.Preconditions.checkNotNull; + +import java.net.URI; +import java.util.Set; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlRootElement; import javax.xml.bind.annotation.XmlType; -import java.net.URI; -import java.util.Set; -import static com.google.common.base.Objects.equal; -import static com.google.common.base.Preconditions.checkNotNull; +import com.google.common.base.Objects; +import com.google.common.collect.Sets; /** diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/ProductSectionList.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/ProductSectionList.java index f0d731c4e7..dcef78d19f 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/ProductSectionList.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/ProductSectionList.java @@ -25,6 +25,7 @@ import static com.google.common.base.Preconditions.checkNotNull; import java.net.URI; import java.util.Collections; import java.util.Set; + import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlType; diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/ReferenceType.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/ReferenceType.java index f568c8785f..8ae9ce74e6 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/ReferenceType.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/ReferenceType.java @@ -22,6 +22,7 @@ import static com.google.common.base.Objects.equal; import java.net.URI; import java.util.Map; + import javax.xml.bind.annotation.XmlAttribute; import javax.xml.bind.annotation.XmlSeeAlso; diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/ResourceEntities.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/ResourceEntities.java index 1ad03ccf2a..400b536844 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/ResourceEntities.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/ResourceEntities.java @@ -24,6 +24,7 @@ import static com.google.common.base.Preconditions.checkNotNull; import java.util.Collections; import java.util.Set; + import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlType; diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/ResourceEntityType.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/ResourceEntityType.java index 484272498f..8527fe20b9 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/ResourceEntityType.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/ResourceEntityType.java @@ -24,6 +24,7 @@ import static com.google.common.base.Preconditions.checkNotNull; import java.net.URI; import java.util.Set; + import javax.xml.bind.annotation.XmlAttribute; import javax.xml.bind.annotation.XmlElement; diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/Session.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/Session.java index db9ef9cbfc..568c834f5b 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/Session.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/Session.java @@ -24,6 +24,7 @@ import static com.google.common.base.Preconditions.checkNotNull; import java.net.URI; import java.util.Collections; import java.util.Set; + import javax.xml.bind.annotation.XmlAttribute; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlRootElement; diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/SourcedCompositionItemParam.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/SourcedCompositionItemParam.java index c8755a4668..684016fe95 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/SourcedCompositionItemParam.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/SourcedCompositionItemParam.java @@ -24,6 +24,7 @@ import static com.google.common.base.Preconditions.checkNotNull; import java.util.Collections; import java.util.Set; + import javax.xml.bind.annotation.XmlAttribute; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlType; diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/SupportedHardwareVersions.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/SupportedHardwareVersions.java index 2fa11635c0..3deef03a54 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/SupportedHardwareVersions.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/SupportedHardwareVersions.java @@ -24,6 +24,7 @@ import static com.google.common.base.Preconditions.checkNotNull; import java.util.Collections; import java.util.Set; + import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlType; diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/Task.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/Task.java index e571e84c46..5a02c8e348 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/Task.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/Task.java @@ -26,6 +26,7 @@ import java.util.Arrays; import java.util.Date; import java.util.List; import java.util.Set; + import javax.xml.bind.annotation.XmlAttribute; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlRootElement; diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/TasksInProgress.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/TasksInProgress.java index cefefc0ec9..76500a4b6a 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/TasksInProgress.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/TasksInProgress.java @@ -24,6 +24,7 @@ import static com.google.common.base.Preconditions.checkNotNull; import java.util.Collection; import java.util.Collections; import java.util.Set; + import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlRootElement; diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/TasksList.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/TasksList.java index 3fc6620a06..495de77fd0 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/TasksList.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/TasksList.java @@ -24,6 +24,7 @@ import static com.google.common.base.Preconditions.checkNotNull; import java.net.URI; import java.util.Collections; import java.util.Set; + import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlRootElement; diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/User.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/User.java index ecfd64f0d1..b55ae0aba7 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/User.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/User.java @@ -23,6 +23,7 @@ import static com.google.common.base.Preconditions.checkNotNull; import java.net.URI; import java.util.Set; + import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlRootElement; import javax.xml.bind.annotation.XmlType; diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/VAppNetworkConfiguration.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/VAppNetworkConfiguration.java index 14842b705b..b8c6517025 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/VAppNetworkConfiguration.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/VAppNetworkConfiguration.java @@ -24,6 +24,7 @@ import static com.google.common.base.Preconditions.checkNotNull; import java.net.URI; import java.util.Set; + import javax.xml.bind.annotation.XmlAttribute; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlType; diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/VAppTemplate.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/VAppTemplate.java index bb7c60e489..2efd0969d9 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/VAppTemplate.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/VAppTemplate.java @@ -25,6 +25,7 @@ import static com.google.common.base.Preconditions.checkNotNull; import java.net.URI; import java.util.Collections; import java.util.Set; + import javax.xml.bind.annotation.XmlAttribute; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlElementRef; diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/VAppTemplateChildren.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/VAppTemplateChildren.java index 2d87f7b934..c81c8b51c1 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/VAppTemplateChildren.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/VAppTemplateChildren.java @@ -24,6 +24,7 @@ import static com.google.common.base.Preconditions.checkNotNull; import java.util.Collections; import java.util.Set; + import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlRootElement; import javax.xml.bind.annotation.XmlType; diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/Vdc.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/Vdc.java index e10b8702ae..179658a50a 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/Vdc.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/Vdc.java @@ -24,6 +24,7 @@ import static com.google.common.base.Preconditions.checkNotNull; import java.net.URI; import java.util.Set; + import javax.xml.bind.annotation.XmlAttribute; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlRootElement; diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/Vdcs.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/Vdcs.java index 84aed81a7e..7d2467abf2 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/Vdcs.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/Vdcs.java @@ -24,6 +24,7 @@ import static com.google.common.base.Preconditions.checkNotNull; import java.util.ArrayList; import java.util.List; + import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlElement; diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/cim/ResourceAllocationSettingData.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/cim/ResourceAllocationSettingData.java index 3406562e5f..35471969b6 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/cim/ResourceAllocationSettingData.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/cim/ResourceAllocationSettingData.java @@ -25,7 +25,10 @@ import java.util.List; import java.util.Map; import com.google.common.base.Function; -import com.google.common.collect.*; +import com.google.common.collect.ImmutableList; +import com.google.common.collect.ImmutableSet; +import com.google.common.collect.Lists; +import com.google.common.collect.Maps; /** * diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/cim/package-info.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/cim/package-info.java index 6b10c899d6..7d4f5fca83 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/cim/package-info.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/cim/package-info.java @@ -22,4 +22,4 @@ package org.jclouds.vcloud.director.v1_5.domain.cim; import static org.jclouds.vcloud.director.v1_5.VCloudDirectorConstants.VCLOUD_CIM_NS; import javax.xml.bind.annotation.XmlNsForm; -import javax.xml.bind.annotation.XmlSchema; \ No newline at end of file +import javax.xml.bind.annotation.XmlSchema; diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/ovf/DeploymentOptionSection.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/ovf/DeploymentOptionSection.java index 38c52a2738..134a868aa1 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/ovf/DeploymentOptionSection.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/ovf/DeploymentOptionSection.java @@ -22,6 +22,7 @@ import static com.google.common.base.Preconditions.checkNotNull; import java.util.Collections; import java.util.Set; + import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlRootElement; diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/ovf/Disk.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/ovf/Disk.java index 674efe6607..e869d5e9f8 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/ovf/Disk.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/ovf/Disk.java @@ -19,8 +19,8 @@ package org.jclouds.vcloud.director.v1_5.domain.ovf; import java.net.URI; + import javax.xml.bind.annotation.XmlRootElement; -import javax.xml.bind.annotation.XmlType; /** * @author Adrian Cole diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/ovf/NetworkSection.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/ovf/NetworkSection.java index 9394a34615..0b6751cd1d 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/ovf/NetworkSection.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/ovf/NetworkSection.java @@ -21,6 +21,7 @@ package org.jclouds.vcloud.director.v1_5.domain.ovf; import static com.google.common.base.Preconditions.checkNotNull; import java.util.Set; + import javax.xml.bind.annotation.XmlRootElement; import org.jclouds.javax.annotation.Nullable; diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/ovf/ProductSection.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/ovf/ProductSection.java index 76e9ceb6df..bce96e6e7b 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/ovf/ProductSection.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/ovf/ProductSection.java @@ -22,6 +22,7 @@ import static com.google.common.base.Preconditions.checkNotNull; import static org.jclouds.vcloud.director.v1_5.VCloudDirectorConstants.VCLOUD_OVF_NS; import java.util.Set; + import javax.xml.bind.annotation.XmlRootElement; import org.jclouds.javax.annotation.Nullable; diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/ovf/VirtualHardwareSection.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/ovf/VirtualHardwareSection.java index ca20e9b228..e958becfef 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/ovf/VirtualHardwareSection.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/ovf/VirtualHardwareSection.java @@ -22,6 +22,7 @@ import static com.google.common.base.Preconditions.checkNotNull; import static org.jclouds.vcloud.director.v1_5.VCloudDirectorConstants.VCLOUD_OVF_NS; import java.util.Set; + import javax.xml.bind.annotation.XmlRootElement; import org.jclouds.javax.annotation.Nullable; diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/ovf/internal/package-info.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/ovf/internal/package-info.java index 738d0d66ec..89e7c81e8d 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/ovf/internal/package-info.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/ovf/internal/package-info.java @@ -29,4 +29,4 @@ import static org.jclouds.vcloud.director.v1_5.VCloudDirectorConstants.VCLOUD_OV import javax.xml.bind.annotation.XmlNs; import javax.xml.bind.annotation.XmlNsForm; -import javax.xml.bind.annotation.XmlSchema; \ No newline at end of file +import javax.xml.bind.annotation.XmlSchema; diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/ovf/package-info.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/ovf/package-info.java index c7c9064055..4f6e14dc43 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/ovf/package-info.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/ovf/package-info.java @@ -29,4 +29,4 @@ import static org.jclouds.vcloud.director.v1_5.VCloudDirectorConstants.VCLOUD_OV import javax.xml.bind.annotation.XmlNs; import javax.xml.bind.annotation.XmlNsForm; -import javax.xml.bind.annotation.XmlSchema; \ No newline at end of file +import javax.xml.bind.annotation.XmlSchema; diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/query/CatalogReferences.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/query/CatalogReferences.java index c5b0d54467..a16659448c 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/query/CatalogReferences.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/query/CatalogReferences.java @@ -23,6 +23,7 @@ import static com.google.common.base.Preconditions.checkNotNull; import java.net.URI; import java.util.Set; + import javax.xml.bind.annotation.XmlRootElement; import org.jclouds.vcloud.director.v1_5.domain.CatalogReference; diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/query/ContainerType.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/query/ContainerType.java index 55d555be0c..eea703e85b 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/query/ContainerType.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/query/ContainerType.java @@ -24,6 +24,7 @@ import static com.google.common.base.Preconditions.checkNotNull; import java.net.URI; import java.util.Set; + import javax.xml.bind.annotation.XmlAttribute; import org.jclouds.vcloud.director.v1_5.domain.Link; diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/query/QueryResultCatalogRecord.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/query/QueryResultCatalogRecord.java index a83c2d68c8..f2d81e92d8 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/query/QueryResultCatalogRecord.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/query/QueryResultCatalogRecord.java @@ -25,6 +25,7 @@ import static com.google.common.base.Preconditions.checkNotNull; import java.net.URI; import java.util.Date; import java.util.Set; + import javax.xml.bind.annotation.XmlAttribute; import javax.xml.bind.annotation.XmlRootElement; import javax.xml.bind.annotation.XmlSchemaType; diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/query/QueryResultNetworkRecord.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/query/QueryResultNetworkRecord.java index 42cf8218ab..7389f4c62e 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/query/QueryResultNetworkRecord.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/query/QueryResultNetworkRecord.java @@ -24,6 +24,7 @@ import static com.google.common.base.Preconditions.checkNotNull; import java.net.URI; import java.util.Set; + import javax.xml.bind.annotation.XmlAttribute; import org.jclouds.vcloud.director.v1_5.domain.Link; diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/query/QueryResultRecordType.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/query/QueryResultRecordType.java index d14c092416..7e9f275486 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/query/QueryResultRecordType.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/query/QueryResultRecordType.java @@ -23,6 +23,7 @@ import static com.google.common.base.Preconditions.checkNotNull; import java.net.URI; import java.util.Set; + import javax.xml.bind.annotation.XmlAttribute; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlSchemaType; diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/query/QueryResultRecords.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/query/QueryResultRecords.java index 978d5c193b..139cdcf423 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/query/QueryResultRecords.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/query/QueryResultRecords.java @@ -24,6 +24,7 @@ import static com.google.common.base.Preconditions.checkNotNull; import java.net.URI; import java.util.Set; + import javax.xml.bind.annotation.XmlElementRef; import javax.xml.bind.annotation.XmlRootElement; diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/query/QueryResultReferences.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/query/QueryResultReferences.java index 0b46128f2c..f0c6612bbc 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/query/QueryResultReferences.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/query/QueryResultReferences.java @@ -24,11 +24,10 @@ import static com.google.common.base.Preconditions.checkNotNull; import java.net.URI; import java.util.Set; + import javax.xml.bind.annotation.XmlElementRef; -import javax.xml.bind.annotation.XmlElementRefs; import org.jclouds.vcloud.director.v1_5.VCloudDirectorMediaType; -import org.jclouds.vcloud.director.v1_5.domain.CatalogReference; import org.jclouds.vcloud.director.v1_5.domain.Link; import org.jclouds.vcloud.director.v1_5.domain.ReferenceType; diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/query/package-info.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/query/package-info.java index 9c789c8414..c5be051558 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/query/package-info.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/query/package-info.java @@ -25,8 +25,7 @@ package org.jclouds.vcloud.director.v1_5.domain.query; import static org.jclouds.vcloud.director.v1_5.VCloudDirectorConstants.VCLOUD_1_5_NS; import static org.jclouds.vcloud.director.v1_5.VCloudDirectorConstants.VCLOUD_CIM_NS; -import static org.jclouds.vcloud.director.v1_5.VCloudDirectorConstants.VCLOUD_OVF_NS; import javax.xml.bind.annotation.XmlNs; import javax.xml.bind.annotation.XmlNsForm; -import javax.xml.bind.annotation.XmlSchema; \ No newline at end of file +import javax.xml.bind.annotation.XmlSchema; diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/vapp/package-info.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/vapp/package-info.java index bebe0ba04b..7b9e88a9c0 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/vapp/package-info.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/vapp/package-info.java @@ -30,4 +30,4 @@ import static org.jclouds.vcloud.director.v1_5.VCloudDirectorConstants.VCLOUD_OV import javax.xml.bind.annotation.XmlNs; import javax.xml.bind.annotation.XmlNsForm; -import javax.xml.bind.annotation.XmlSchema; \ No newline at end of file +import javax.xml.bind.annotation.XmlSchema; diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/GroupAsyncClient.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/GroupAsyncClient.java index 76e13dda4b..14e2a03829 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/GroupAsyncClient.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/GroupAsyncClient.java @@ -23,10 +23,6 @@ import java.net.URI; import javax.ws.rs.Consumes; import javax.ws.rs.DELETE; import javax.ws.rs.GET; - -import org.jclouds.rest.annotations.EndpointParam; -import org.jclouds.rest.annotations.ExceptionParser; -import org.jclouds.rest.annotations.JAXBResponseParser; import javax.ws.rs.PUT; import javax.ws.rs.Produces; @@ -35,7 +31,6 @@ import org.jclouds.rest.annotations.EndpointParam; import org.jclouds.rest.annotations.ExceptionParser; import org.jclouds.rest.annotations.JAXBResponseParser; import org.jclouds.rest.annotations.RequestFilters; -import org.jclouds.vcloud.director.v1_5.domain.Group; import org.jclouds.rest.binders.BindToXMLPayload; import org.jclouds.vcloud.director.v1_5.VCloudDirectorMediaType; import org.jclouds.vcloud.director.v1_5.domain.Group; diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/VAppTemplateAsyncClient.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/VAppTemplateAsyncClient.java index 7f3db4edf8..ea65252a74 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/VAppTemplateAsyncClient.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/VAppTemplateAsyncClient.java @@ -18,7 +18,20 @@ */ 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.ENVELOPE; +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; @@ -39,7 +52,18 @@ import org.jclouds.rest.annotations.ExceptionParser; import org.jclouds.rest.annotations.JAXBResponseParser; import org.jclouds.rest.annotations.RequestFilters; import org.jclouds.rest.binders.BindToXMLPayload; -import org.jclouds.vcloud.director.v1_5.domain.*; +import org.jclouds.vcloud.director.v1_5.domain.CustomizationSection; +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; +import org.jclouds.vcloud.director.v1_5.domain.MetadataValue; +import org.jclouds.vcloud.director.v1_5.domain.NetworkConfigSection; +import org.jclouds.vcloud.director.v1_5.domain.NetworkConnectionSection; +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.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.filters.AddVCloudAuthorizationToRequest; import org.jclouds.vcloud.director.v1_5.functions.ThrowVCloudErrorOn4xx; diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/VAppTemplateClient.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/VAppTemplateClient.java index 1419dac4c4..181e8363d4 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/VAppTemplateClient.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/VAppTemplateClient.java @@ -24,7 +24,18 @@ 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.*; +import org.jclouds.vcloud.director.v1_5.domain.CustomizationSection; +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; +import org.jclouds.vcloud.director.v1_5.domain.MetadataValue; +import org.jclouds.vcloud.director.v1_5.domain.NetworkConfigSection; +import org.jclouds.vcloud.director.v1_5.domain.NetworkConnectionSection; +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.RelocateParams; +import org.jclouds.vcloud.director.v1_5.domain.Task; +import org.jclouds.vcloud.director.v1_5.domain.VAppTemplate; /** * Provides synchronous access to {@link org.jclouds.vcloud.director.v1_5.domain.VAppTemplate} objects. diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/VdcAsyncClient.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/VdcAsyncClient.java index 345baae334..0f6e26b118 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/VdcAsyncClient.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/VdcAsyncClient.java @@ -34,7 +34,18 @@ import org.jclouds.rest.annotations.JAXBResponseParser; import org.jclouds.rest.annotations.RequestFilters; import org.jclouds.rest.binders.BindToXMLPayload; import org.jclouds.vcloud.director.v1_5.VCloudDirectorMediaType; -import org.jclouds.vcloud.director.v1_5.domain.*; +import org.jclouds.vcloud.director.v1_5.domain.CaptureVAppParams; +import org.jclouds.vcloud.director.v1_5.domain.CloneMediaParams; +import org.jclouds.vcloud.director.v1_5.domain.CloneVAppParams; +import org.jclouds.vcloud.director.v1_5.domain.CloneVAppTemplateParams; +import org.jclouds.vcloud.director.v1_5.domain.ComposeVAppParams; +import org.jclouds.vcloud.director.v1_5.domain.InstantiateVAppParamsType; +import org.jclouds.vcloud.director.v1_5.domain.Media; +import org.jclouds.vcloud.director.v1_5.domain.Metadata; +import org.jclouds.vcloud.director.v1_5.domain.UploadVAppTemplateParams; +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.filters.AddVCloudAuthorizationToRequest; import org.jclouds.vcloud.director.v1_5.functions.ThrowVCloudErrorOn4xx; diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/VdcClient.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/VdcClient.java index c0bab55cd6..19fed49178 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/VdcClient.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/VdcClient.java @@ -23,7 +23,18 @@ import java.util.concurrent.TimeUnit; import org.jclouds.concurrent.Timeout; import org.jclouds.rest.annotations.Delegate; -import org.jclouds.vcloud.director.v1_5.domain.*; +import org.jclouds.vcloud.director.v1_5.domain.CaptureVAppParams; +import org.jclouds.vcloud.director.v1_5.domain.CloneMediaParams; +import org.jclouds.vcloud.director.v1_5.domain.CloneVAppParams; +import org.jclouds.vcloud.director.v1_5.domain.CloneVAppTemplateParams; +import org.jclouds.vcloud.director.v1_5.domain.ComposeVAppParams; +import org.jclouds.vcloud.director.v1_5.domain.InstantiateVAppParamsType; +import org.jclouds.vcloud.director.v1_5.domain.Media; +import org.jclouds.vcloud.director.v1_5.domain.Metadata; +import org.jclouds.vcloud.director.v1_5.domain.UploadVAppTemplateParams; +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; /** * Provides synchronous access to a vDC. diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/predicates/ReferenceTypePredicates.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/predicates/ReferenceTypePredicates.java index f616df5f93..83ea92d133 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/predicates/ReferenceTypePredicates.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/predicates/ReferenceTypePredicates.java @@ -20,6 +20,7 @@ package org.jclouds.vcloud.director.v1_5.predicates; import static com.google.common.base.Preconditions.checkNotNull; +import org.jclouds.vcloud.director.v1_5.VCloudDirectorMediaType; import org.jclouds.vcloud.director.v1_5.domain.ReferenceType; import com.google.common.base.Predicate; diff --git a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/AdminCatalogClientLiveTest.java b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/AdminCatalogClientLiveTest.java index 490895e53a..703e6efe1b 100644 --- a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/AdminCatalogClientLiveTest.java +++ b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/AdminCatalogClientLiveTest.java @@ -19,7 +19,10 @@ package org.jclouds.vcloud.director.v1_5.features; import static com.google.common.base.Objects.equal; -import static org.jclouds.vcloud.director.v1_5.VCloudDirectorLiveTestConstants.*; +import static org.jclouds.vcloud.director.v1_5.VCloudDirectorLiveTestConstants.OBJ_DEL; +import static org.jclouds.vcloud.director.v1_5.VCloudDirectorLiveTestConstants.OBJ_FIELD_EQ; +import static org.jclouds.vcloud.director.v1_5.VCloudDirectorLiveTestConstants.OBJ_FIELD_UPDATABLE; +import static org.jclouds.vcloud.director.v1_5.VCloudDirectorLiveTestConstants.REF_REQ_LIVE; import static org.testng.Assert.assertEquals; import static org.testng.Assert.assertNotNull; import static org.testng.Assert.assertNull; diff --git a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/AdminOrgClientLiveTest.java b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/AdminOrgClientLiveTest.java index dbd5c6a28c..64205fb1d7 100644 --- a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/AdminOrgClientLiveTest.java +++ b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/AdminOrgClientLiveTest.java @@ -18,26 +18,9 @@ */ package org.jclouds.vcloud.director.v1_5.features; -import static org.jclouds.vcloud.director.v1_5.VCloudDirectorLiveTestConstants.REF_REQ_LIVE; -import static org.testng.Assert.assertNotNull; - -import static org.jclouds.vcloud.director.v1_5.VCloudDirectorLiveTestConstants.OBJ_DEL; -import static org.testng.Assert.assertEquals; -import static org.testng.Assert.assertNull; -import static org.testng.Assert.fail; -import static com.google.common.base.Objects.equal; -import static org.jclouds.vcloud.director.v1_5.VCloudDirectorLiveTestConstants.OBJ_FIELD_UPDATABLE; -import static org.testng.Assert.assertTrue; - - import java.net.URI; -import org.jclouds.vcloud.director.v1_5.domain.Checks; -import org.jclouds.vcloud.director.v1_5.VCloudDirectorException; import org.jclouds.vcloud.director.v1_5.domain.AdminOrg; -import org.jclouds.vcloud.director.v1_5.domain.Error; -import org.jclouds.vcloud.director.v1_5.domain.Group; -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.ReferenceType; import org.jclouds.vcloud.director.v1_5.internal.BaseVCloudDirectorClientLiveTest; diff --git a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/GroupClientLiveTest.java b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/GroupClientLiveTest.java index 8b116b163e..a1faaf83c5 100644 --- a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/GroupClientLiveTest.java +++ b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/GroupClientLiveTest.java @@ -18,25 +18,22 @@ */ package org.jclouds.vcloud.director.v1_5.features; -import static org.jclouds.vcloud.director.v1_5.VCloudDirectorLiveTestConstants.REF_REQ_LIVE; -import static org.testng.Assert.assertNotNull; - -import static org.jclouds.vcloud.director.v1_5.VCloudDirectorLiveTestConstants.OBJ_DEL; -import static org.testng.Assert.assertEquals; -import static org.testng.Assert.assertNull; -import static org.testng.Assert.fail; import static com.google.common.base.Objects.equal; +import static org.jclouds.vcloud.director.v1_5.VCloudDirectorLiveTestConstants.OBJ_DEL; import static org.jclouds.vcloud.director.v1_5.VCloudDirectorLiveTestConstants.OBJ_FIELD_UPDATABLE; +import static org.jclouds.vcloud.director.v1_5.VCloudDirectorLiveTestConstants.REF_REQ_LIVE; +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 org.jclouds.vcloud.director.v1_5.domain.Checks; import org.jclouds.vcloud.director.v1_5.VCloudDirectorException; +import org.jclouds.vcloud.director.v1_5.domain.Checks; import org.jclouds.vcloud.director.v1_5.domain.Error; import org.jclouds.vcloud.director.v1_5.domain.Group; -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.ReferenceType; import org.jclouds.vcloud.director.v1_5.internal.BaseVCloudDirectorClientLiveTest; diff --git a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/MediaClientExpectTest.java b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/MediaClientExpectTest.java index 6340a5733f..687b3dd822 100644 --- a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/MediaClientExpectTest.java +++ b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/MediaClientExpectTest.java @@ -26,8 +26,19 @@ import java.net.URI; import org.jclouds.vcloud.director.v1_5.VCloudDirectorClient; import org.jclouds.vcloud.director.v1_5.VCloudDirectorException; import org.jclouds.vcloud.director.v1_5.VCloudDirectorMediaType; -import org.jclouds.vcloud.director.v1_5.domain.*; +import org.jclouds.vcloud.director.v1_5.domain.CloneMediaParams; import org.jclouds.vcloud.director.v1_5.domain.Error; +import org.jclouds.vcloud.director.v1_5.domain.File; +import org.jclouds.vcloud.director.v1_5.domain.FilesList; +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.Metadata; +import org.jclouds.vcloud.director.v1_5.domain.MetadataEntry; +import org.jclouds.vcloud.director.v1_5.domain.MetadataValue; +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.TasksInProgress; import org.jclouds.vcloud.director.v1_5.internal.BaseVCloudDirectorRestClientExpectTest; import org.testng.annotations.Test; diff --git a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/NetworkClientExpectTest.java b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/NetworkClientExpectTest.java index a402151636..eb6c86fa72 100644 --- a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/NetworkClientExpectTest.java +++ b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/NetworkClientExpectTest.java @@ -27,7 +27,16 @@ import org.jclouds.vcloud.director.v1_5.VCloudDirectorClient; import org.jclouds.vcloud.director.v1_5.VCloudDirectorException; import org.jclouds.vcloud.director.v1_5.VCloudDirectorMediaType; import org.jclouds.vcloud.director.v1_5.domain.Error; -import org.jclouds.vcloud.director.v1_5.domain.*; +import org.jclouds.vcloud.director.v1_5.domain.IpAddresses; +import org.jclouds.vcloud.director.v1_5.domain.IpRange; +import org.jclouds.vcloud.director.v1_5.domain.IpRanges; +import org.jclouds.vcloud.director.v1_5.domain.IpScope; +import org.jclouds.vcloud.director.v1_5.domain.Link; +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.NetworkConfiguration; +import org.jclouds.vcloud.director.v1_5.domain.OrgNetwork; +import org.jclouds.vcloud.director.v1_5.domain.SyslogServerSettings; import org.jclouds.vcloud.director.v1_5.internal.BaseVCloudDirectorRestClientExpectTest; import org.testng.annotations.Test; diff --git a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/VAppTemplateClientExpectTest.java b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/VAppTemplateClientExpectTest.java index 8c34a00ed2..0de912bf4d 100644 --- a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/VAppTemplateClientExpectTest.java +++ b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/VAppTemplateClientExpectTest.java @@ -18,7 +18,16 @@ */ 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.ERROR; +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.RELOCATE_TEMPLATE; +import static org.jclouds.vcloud.director.v1_5.VCloudDirectorMediaType.TASK; +import static org.jclouds.vcloud.director.v1_5.VCloudDirectorMediaType.VAPP_TEMPLATE; import static org.testng.Assert.assertEquals; import static org.testng.Assert.assertNotNull; @@ -29,7 +38,31 @@ import java.util.Locale; import java.util.TimeZone; import org.jclouds.vcloud.director.v1_5.VCloudDirectorException; -import org.jclouds.vcloud.director.v1_5.domain.*; +import org.jclouds.vcloud.director.v1_5.domain.CustomizationSection; +import org.jclouds.vcloud.director.v1_5.domain.FirewallRule; +import org.jclouds.vcloud.director.v1_5.domain.FirewallRuleProtocols; +import org.jclouds.vcloud.director.v1_5.domain.FirewallService; +import org.jclouds.vcloud.director.v1_5.domain.GuestCustomizationSection; +import org.jclouds.vcloud.director.v1_5.domain.IpRange; +import org.jclouds.vcloud.director.v1_5.domain.IpRanges; +import org.jclouds.vcloud.director.v1_5.domain.IpScope; +import org.jclouds.vcloud.director.v1_5.domain.LeaseSettingsSection; +import org.jclouds.vcloud.director.v1_5.domain.Link; +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.MetadataValue; +import org.jclouds.vcloud.director.v1_5.domain.NatOneToOneVmRule; +import org.jclouds.vcloud.director.v1_5.domain.NatRule; +import org.jclouds.vcloud.director.v1_5.domain.NatService; +import org.jclouds.vcloud.director.v1_5.domain.NetworkConfigSection; +import org.jclouds.vcloud.director.v1_5.domain.NetworkConfiguration; +import org.jclouds.vcloud.director.v1_5.domain.NetworkFeatures; +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.RelocateParams; +import org.jclouds.vcloud.director.v1_5.domain.Task; +import org.jclouds.vcloud.director.v1_5.domain.VAppNetworkConfiguration; +import org.jclouds.vcloud.director.v1_5.domain.VAppTemplate; import org.jclouds.vcloud.director.v1_5.internal.BaseVCloudDirectorRestClientExpectTest; import org.testng.annotations.Test; diff --git a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/internal/BaseVCloudDirectorRestClientExpectTest.java b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/internal/BaseVCloudDirectorRestClientExpectTest.java index b0c8ec88ca..d6ff469840 100644 --- a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/internal/BaseVCloudDirectorRestClientExpectTest.java +++ b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/internal/BaseVCloudDirectorRestClientExpectTest.java @@ -28,7 +28,6 @@ import org.jclouds.Constants; import org.jclouds.date.DateService; import org.jclouds.http.HttpRequest; import org.jclouds.http.HttpResponse; -import org.jclouds.io.payloads.StringPayload; import org.jclouds.rest.BaseRestClientExpectTest; import org.jclouds.vcloud.director.v1_5.VCloudDirectorClient; import org.jclouds.vcloud.director.v1_5.VCloudDirectorMediaType; diff --git a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/predicates/ReferenceTypePredicatesTest.java b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/predicates/ReferenceTypePredicatesTest.java index ac611153d6..44dc169daf 100644 --- a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/predicates/ReferenceTypePredicatesTest.java +++ b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/predicates/ReferenceTypePredicatesTest.java @@ -22,7 +22,6 @@ import java.net.URI; import org.jclouds.vcloud.director.v1_5.VCloudDirectorMediaType; import org.jclouds.vcloud.director.v1_5.domain.Reference; -import org.jclouds.vcloud.director.v1_5.predicates.ReferenceTypePredicates; import org.testng.annotations.Test; /** From 902a334dd115b40ca4e3ae86b4e252995628f765 Mon Sep 17 00:00:00 2001 From: Adrian Cole Date: Sun, 11 Mar 2012 11:33:41 -0700 Subject: [PATCH 05/20] latent bugs found when running live test --- .../director/v1_5/config/VCloudDirectorRestClientModule.java | 3 +++ .../vcloud/director/v1_5/features/GroupAsyncClient.java | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/config/VCloudDirectorRestClientModule.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/config/VCloudDirectorRestClientModule.java index 1b1e0d7627..b77551ea0a 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/config/VCloudDirectorRestClientModule.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/config/VCloudDirectorRestClientModule.java @@ -44,6 +44,8 @@ import org.jclouds.vcloud.director.v1_5.domain.Session; import org.jclouds.vcloud.director.v1_5.domain.SessionWithToken; import org.jclouds.vcloud.director.v1_5.features.AdminCatalogAsyncClient; import org.jclouds.vcloud.director.v1_5.features.AdminCatalogClient; +import org.jclouds.vcloud.director.v1_5.features.AdminOrgAsyncClient; +import org.jclouds.vcloud.director.v1_5.features.AdminOrgClient; import org.jclouds.vcloud.director.v1_5.features.CatalogAsyncClient; import org.jclouds.vcloud.director.v1_5.features.CatalogClient; import org.jclouds.vcloud.director.v1_5.features.GroupAsyncClient; @@ -105,6 +107,7 @@ public class VCloudDirectorRestClientModule extends RestClientModule updateCatalog(@EndpointParam URI groupRef, + ListenableFuture updateGroup(@EndpointParam URI groupRef, @BinderParam(BindToXMLPayload.class) Group group); /** From 9da333629066bdbb40b939dc537bc540a0fefc7c Mon Sep 17 00:00:00 2001 From: Adrian Cole Date: Sun, 11 Mar 2012 11:37:07 -0700 Subject: [PATCH 06/20] corrected session test configuration --- .../vcloud/director/v1_5/login/SessionClientLiveTest.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/login/SessionClientLiveTest.java b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/login/SessionClientLiveTest.java index a4005d79cf..dd71d1b8d0 100644 --- a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/login/SessionClientLiveTest.java +++ b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/login/SessionClientLiveTest.java @@ -31,9 +31,11 @@ import org.jclouds.compute.BaseVersionedServiceLiveTest; import org.jclouds.logging.log4j.config.Log4JLoggingModule; import org.jclouds.rest.RestContext; import org.jclouds.rest.RestContextSpec; +import org.jclouds.vcloud.director.testng.FormatApiResultsListener; import org.jclouds.vcloud.director.v1_5.domain.SessionWithToken; import org.testng.annotations.AfterGroups; import org.testng.annotations.BeforeGroups; +import org.testng.annotations.Listeners; import org.testng.annotations.Test; import com.google.common.collect.ImmutableSet; @@ -45,7 +47,8 @@ import com.google.inject.Module; * * @author Adrian Cole */ -@Test(groups = { "live", "apitests" }, testName = "SessionClientLiveTest") +@Listeners(FormatApiResultsListener.class) +@Test(groups = { "live", "user" }, testName = "SessionClientLiveTest") public class SessionClientLiveTest extends BaseVersionedServiceLiveTest { public SessionClientLiveTest() { provider = "vcloud-director"; From d820e4fab86cefea1a30b72728a115872d3295d8 Mon Sep 17 00:00:00 2001 From: Adrian Cole Date: Sun, 11 Mar 2012 11:37:20 -0700 Subject: [PATCH 07/20] normalized overrides on test setup --- .../director/v1_5/VCloudDirectorClientExperimentLiveTest.java | 2 ++ .../director/v1_5/features/AdminCatalogClientLiveTest.java | 1 + .../vcloud/director/v1_5/features/AdminOrgClientLiveTest.java | 1 + .../vcloud/director/v1_5/features/CatalogClientLiveTest.java | 1 + .../vcloud/director/v1_5/features/GroupClientLiveTest.java | 1 + .../vcloud/director/v1_5/features/MediaClientLiveTest.java | 2 +- .../vcloud/director/v1_5/features/NetworkClientLiveTest.java | 2 +- .../vcloud/director/v1_5/features/OrgClientLiveTest.java | 2 +- .../vcloud/director/v1_5/features/QueryClientLiveTest.java | 2 +- .../vcloud/director/v1_5/features/TaskClientLiveTest.java | 2 +- .../vcloud/director/v1_5/features/UploadClientLiveTest.java | 2 +- .../vcloud/director/v1_5/features/VdcClientLiveTest.java | 2 +- 12 files changed, 13 insertions(+), 7 deletions(-) diff --git a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/VCloudDirectorClientExperimentLiveTest.java b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/VCloudDirectorClientExperimentLiveTest.java index d1806ececc..07bba81c1d 100644 --- a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/VCloudDirectorClientExperimentLiveTest.java +++ b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/VCloudDirectorClientExperimentLiveTest.java @@ -22,6 +22,7 @@ import static org.testng.Assert.assertEquals; import org.jclouds.vcloud.director.v1_5.domain.Session; import org.jclouds.vcloud.director.v1_5.internal.BaseVCloudDirectorClientLiveTest; +import org.testng.annotations.BeforeClass; import org.testng.annotations.Test; /** @@ -42,6 +43,7 @@ public class VCloudDirectorClientExperimentLiveTest extends BaseVCloudDirectorCl * @see BaseVCloudDirectorClientLiveTest#setupRequiredClients() */ @Override + @BeforeClass(inheritGroups = true) public void setupRequiredClients() { } } diff --git a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/AdminCatalogClientLiveTest.java b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/AdminCatalogClientLiveTest.java index 703e6efe1b..414bc7bbca 100644 --- a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/AdminCatalogClientLiveTest.java +++ b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/AdminCatalogClientLiveTest.java @@ -66,6 +66,7 @@ public class AdminCatalogClientLiveTest extends BaseVCloudDirectorClientLiveTest private AdminCatalog catalog; private Owner owner; + @Override @BeforeClass(inheritGroups = true) public void setupRequiredClients() { catalogClient = context.getApi().getAdminCatalogClient(); diff --git a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/AdminOrgClientLiveTest.java b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/AdminOrgClientLiveTest.java index 64205fb1d7..3c6d1f77cb 100644 --- a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/AdminOrgClientLiveTest.java +++ b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/AdminOrgClientLiveTest.java @@ -49,6 +49,7 @@ public class AdminOrgClientLiveTest extends BaseVCloudDirectorClientLiveTest { private ReferenceType orgRef; private AdminOrg org; + @Override @BeforeClass(inheritGroups = true) public void setupRequiredClients() { orgClient = context.getApi().getAdminOrgClient(); diff --git a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/CatalogClientLiveTest.java b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/CatalogClientLiveTest.java index 6f618003f9..e0ffd434de 100644 --- a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/CatalogClientLiveTest.java +++ b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/CatalogClientLiveTest.java @@ -79,6 +79,7 @@ public class CatalogClientLiveTest extends BaseVCloudDirectorClientLiveTest { private CatalogItem newCatalogItem; private Metadata catalogMetadata; + @Override @BeforeClass(inheritGroups = true) public void setupRequiredClients() { catalogClient = context.getApi().getCatalogClient(); diff --git a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/GroupClientLiveTest.java b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/GroupClientLiveTest.java index a1faaf83c5..24b16db9a2 100644 --- a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/GroupClientLiveTest.java +++ b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/GroupClientLiveTest.java @@ -62,6 +62,7 @@ public class GroupClientLiveTest extends BaseVCloudDirectorClientLiveTest { private ReferenceType groupRef; private Group group; + @Override @BeforeClass(inheritGroups = true) public void setupRequiredClients() { groupClient = context.getApi().getGroupClient(); diff --git a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/MediaClientLiveTest.java b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/MediaClientLiveTest.java index 5e87f56aaf..795882d43c 100644 --- a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/MediaClientLiveTest.java +++ b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/MediaClientLiveTest.java @@ -86,8 +86,8 @@ public class MediaClientLiveTest extends BaseVCloudDirectorClientLiveTest { protected VdcClient vdcClient; protected MediaClient mediaClient; - @BeforeClass(inheritGroups = true) @Override + @BeforeClass(inheritGroups = true) public void setupRequiredClients() { vdcClient = context.getApi().getVdcClient(); mediaClient = context.getApi().getMediaClient(); diff --git a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/NetworkClientLiveTest.java b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/NetworkClientLiveTest.java index 460e9c43a6..6b36eefc91 100644 --- a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/NetworkClientLiveTest.java +++ b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/NetworkClientLiveTest.java @@ -57,8 +57,8 @@ public class NetworkClientLiveTest extends BaseVCloudDirectorClientLiveTest { */ protected NetworkClient networkClient; - @BeforeClass(inheritGroups = true) @Override + @BeforeClass(inheritGroups = true) public void setupRequiredClients() { networkClient = context.getApi().getNetworkClient(); } diff --git a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/OrgClientLiveTest.java b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/OrgClientLiveTest.java index a1d910437d..49c0ca68cc 100644 --- a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/OrgClientLiveTest.java +++ b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/OrgClientLiveTest.java @@ -57,8 +57,8 @@ public class OrgClientLiveTest extends BaseVCloudDirectorClientLiveTest { private OrgClient orgClient; - @BeforeClass(inheritGroups = true) @Override + @BeforeClass(inheritGroups = true) public void setupRequiredClients() { orgClient = context.getApi().getOrgClient(); } diff --git a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/QueryClientLiveTest.java b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/QueryClientLiveTest.java index a1ded707e8..acfa0fc5bc 100644 --- a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/QueryClientLiveTest.java +++ b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/QueryClientLiveTest.java @@ -42,8 +42,8 @@ public class QueryClientLiveTest extends BaseVCloudDirectorClientLiveTest { private CatalogClient catalogClient; private QueryClient queryClient; - @BeforeClass(inheritGroups = true) @Override + @BeforeClass(inheritGroups = true) public void setupRequiredClients() { catalogClient = context.getApi().getCatalogClient(); queryClient = context.getApi().getQueryClient(); diff --git a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/TaskClientLiveTest.java b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/TaskClientLiveTest.java index bbe136481f..cef98e1f66 100644 --- a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/TaskClientLiveTest.java +++ b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/TaskClientLiveTest.java @@ -50,8 +50,8 @@ public class TaskClientLiveTest extends BaseVCloudDirectorClientLiveTest { private OrgClient orgClient; private TaskClient taskClient; - @BeforeClass(inheritGroups = true) @Override + @BeforeClass(inheritGroups = true) public void setupRequiredClients() { orgClient = context.getApi().getOrgClient(); taskClient = context.getApi().getTaskClient(); diff --git a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/UploadClientLiveTest.java b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/UploadClientLiveTest.java index 6b4d25cd64..5ac87998b4 100644 --- a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/UploadClientLiveTest.java +++ b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/UploadClientLiveTest.java @@ -37,8 +37,8 @@ public class UploadClientLiveTest extends BaseVCloudDirectorClientLiveTest { */ protected UploadClient uploadClient; - @BeforeClass(inheritGroups = true) @Override + @BeforeClass(inheritGroups = true) public void setupRequiredClients() { uploadClient = context.getApi().getUploadClient(); } diff --git a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/VdcClientLiveTest.java b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/VdcClientLiveTest.java index 7f512a674b..7ceaf2bffe 100644 --- a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/VdcClientLiveTest.java +++ b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/VdcClientLiveTest.java @@ -61,8 +61,8 @@ public class VdcClientLiveTest extends BaseVCloudDirectorClientLiveTest { */ protected VdcClient vdcClient; - @BeforeClass(inheritGroups = true) @Override + @BeforeClass(inheritGroups = true) public void setupRequiredClients() { vdcClient = context.getApi().getVdcClient(); } From b309dd60df74dc6d6ea2d5eefa397953be72afd0 Mon Sep 17 00:00:00 2001 From: Adrian Cole Date: Sun, 11 Mar 2012 12:56:25 -0700 Subject: [PATCH 08/20] upload client now works --- .../vcloud/director/v1_5/domain/Task.java | 1 + .../v1_5/features/UploadAsyncClient.java | 23 +++------- .../director/v1_5/features/UploadClient.java | 12 ++---- .../v1_5/features/MediaClientLiveTest.java | 42 ++++++++++++------- 4 files changed, 37 insertions(+), 41 deletions(-) diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/Task.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/Task.java index 5a02c8e348..1ddfda0972 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/Task.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/Task.java @@ -384,6 +384,7 @@ public class Task extends EntityType { *

  • aborted - The task was aborted by an administrative action. * */ + // TODO: enum!!! public String getStatus() { return status; } diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/UploadAsyncClient.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/UploadAsyncClient.java index 3921252314..fecd69710e 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/UploadAsyncClient.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/UploadAsyncClient.java @@ -18,38 +18,27 @@ */ package org.jclouds.vcloud.director.v1_5.features; -import java.io.File; import java.net.URI; import javax.ws.rs.PUT; -import org.jclouds.rest.annotations.ExceptionParser; +import org.jclouds.io.Payload; +import org.jclouds.rest.annotations.EndpointParam; import org.jclouds.rest.annotations.RequestFilters; import org.jclouds.vcloud.director.v1_5.filters.AddVCloudAuthorizationToRequest; -import org.jclouds.vcloud.director.v1_5.functions.ThrowVCloudErrorOn4xx; import com.google.common.util.concurrent.ListenableFuture; /** - + * * @see UploadClient * @author danikov */ @RequestFilters(AddVCloudAuthorizationToRequest.class) -public interface UploadAsyncClient { // TODO: implement these operations correctly - +public interface UploadAsyncClient { /** - * @see UploadClient#uploadFile(URI, File) + * @see UploadClient#put */ @PUT - @ExceptionParser(ThrowVCloudErrorOn4xx.class) - ListenableFuture uploadFile(URI uri, File file); - - /** - * @see UploadClient#uploadBigFile(URI, File) - */ - @PUT - @ExceptionParser(ThrowVCloudErrorOn4xx.class) - ListenableFuture uploadBigFile(URI target, File file); - + ListenableFuture upload(@EndpointParam URI location, Payload payload); } diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/UploadClient.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/UploadClient.java index 147c7a415f..4311cda021 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/UploadClient.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/UploadClient.java @@ -18,31 +18,25 @@ */ package org.jclouds.vcloud.director.v1_5.features; -import java.io.File; import java.net.URI; import java.util.concurrent.TimeUnit; import org.jclouds.concurrent.Timeout; +import org.jclouds.io.Payload; /** * Provides synchronous access to Upload. *

    * * @see UploadAsyncClient - * @see * @author danikov */ @Timeout(duration = 180, timeUnit = TimeUnit.SECONDS) public interface UploadClient { /** - * Uploads a file. + * @return eTag */ - void uploadFile(URI uri, File file); - - /** - * Uploads a file using ranged PUTs. - */ - void uploadBigFile(URI uri, File file); + void upload(URI location, Payload payload); } diff --git a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/MediaClientLiveTest.java b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/MediaClientLiveTest.java index 795882d43c..95291310cd 100644 --- a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/MediaClientLiveTest.java +++ b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/MediaClientLiveTest.java @@ -47,6 +47,7 @@ import static org.testng.Assert.fail; import java.net.URISyntaxException; import java.util.Set; +import org.jclouds.io.Payloads; import org.jclouds.vcloud.director.v1_5.VCloudDirectorException; import org.jclouds.vcloud.director.v1_5.VCloudDirectorMediaType; import org.jclouds.vcloud.director.v1_5.domain.Checks; @@ -102,19 +103,20 @@ public class MediaClientLiveTest extends BaseVCloudDirectorClientLiveTest { private MetadataValue metadataValue; private String metadataEntryValue = "value"; - @Test(testName = "POST /vdc/{id}/media", enabled = false) + @Test(testName = "POST /vdc/{id}/media") public void testCreateMedia() throws URISyntaxException { assertNotNull(vdcURI, String.format(REF_REQ_LIVE, VDC)); Vdc vdc = vdcClient.getVdc(vdcURI); assertNotNull(vdc, String.format(OBJ_REQ_LIVE, VDC)); Link addMedia = find(vdc.getLinks(), and(relEquals("add"), typeEquals(VCloudDirectorMediaType.MEDIA))); - java.io.File sourceFile = new java.io.File(getClass().getResource("/media/test.iso").toURI()); + // TODO: generate an iso + byte[] iso = new byte[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 }; Media sourceMedia = Media.builder() .type(VCloudDirectorMediaType.MEDIA) .name("Test media 1") - .size(sourceFile.length()) + .size(iso.length) .imageType(Media.ImageType.ISO) .description("Test media generated by testCreateMedia()") .build(); @@ -136,12 +138,22 @@ public class MediaClientLiveTest extends BaseVCloudDirectorClientLiveTest { links.size())); Link uploadLink = getFirst(links, null); assertTrue(equal(uploadLink.getRel(), Link.Rel.UPLOAD_DEFAULT), String.format(OBJ_FIELD_REQ, MEDIA, "uploadFile.links.first")); + + context.getApi().getUploadClient().upload(uploadLink.getHref(), Payloads.newByteArrayPayload(iso)); - fail(); //TODO upload file and assert it succeeds - context.getApi().getUploadClient().uploadFile(uploadLink.getHref(), sourceFile); + media = mediaClient.getMedia(media.getHref()); + + Task task = Iterables.getOnlyElement(media.getTasksInProgress().getTasks()); + + assertEquals(task.getStatus(), "running"); + + File file = Iterables.getOnlyElement(media.getFiles().getFiles()); + assertEquals(file.getSize(), new Long(iso.length)); + assertEquals(file.getBytesTransferred(), new Long(iso.length)); + } - @Test(testName = "GET /media/{id}", dependsOnMethods = { "testCreateMedia" }, enabled = false) + @Test(testName = "GET /media/{id}", dependsOnMethods = { "testCreateMedia" }) public void testGetMedia() { media = mediaClient.getMedia(media.getHref()); assertNotNull(media, String.format(OBJ_REQ_LIVE, MEDIA)); @@ -154,7 +166,7 @@ public class MediaClientLiveTest extends BaseVCloudDirectorClientLiveTest { } @Test(testName = "GET /media/{id}/owner", - dependsOnMethods = { "testGetMedia" }, enabled = false) + dependsOnMethods = { "testGetMedia" }) public void testGetMediaOwner() { Owner directOwner = mediaClient.getOwner(media.getHref()); assertEquals(owner, directOwner, String.format(GETTER_RETURNS_SAME_OBJ, @@ -169,7 +181,7 @@ public class MediaClientLiveTest extends BaseVCloudDirectorClientLiveTest { } @Test(testName = "POST /vdc/{id}/action/cloneMedia", - dependsOnMethods = { "testGetMediaOwner" }, enabled = false) + dependsOnMethods = { "testGetMediaOwner" }) public void testCloneMedia() { oldMedia = media; media = vdcClient.cloneMedia(vdcURI, CloneMediaParams.builder() @@ -219,7 +231,7 @@ public class MediaClientLiveTest extends BaseVCloudDirectorClientLiveTest { } @Test(testName = "PUT /media/{id}", - dependsOnMethods = { "testCloneMedia" }, enabled = false) + dependsOnMethods = { "testCloneMedia" }) public void testSetMedia() { String oldName = media.getName(); String newName = "new "+oldName; @@ -249,7 +261,7 @@ public class MediaClientLiveTest extends BaseVCloudDirectorClientLiveTest { } @Test(testName = "GET /media/{id}/metadata", - dependsOnMethods = { "testGetMedia" }, enabled = false) + dependsOnMethods = { "testGetMedia" }) public void testGetMetadata() { metadata = mediaClient.getMetadataClient().getMetadata(media.getHref()); // required for testing @@ -260,7 +272,7 @@ public class MediaClientLiveTest extends BaseVCloudDirectorClientLiveTest { } @Test(testName = "POST /media/{id}/metadata", - dependsOnMethods = { "testGetMetadata" }, enabled = false) + dependsOnMethods = { "testGetMetadata" }) public void testMergeMetadata() { // test new Set inputEntries = ImmutableSet.of(MetadataEntry.builder().entry("testKey", "testValue").build()); @@ -313,14 +325,14 @@ public class MediaClientLiveTest extends BaseVCloudDirectorClientLiveTest { } @Test(testName = "GET /media/{id}/metadata/{key}", - dependsOnMethods = { "testMergeMetadata" }, enabled = false) + dependsOnMethods = { "testMergeMetadata" }) public void testGetMetadataValue() { metadataValue = mediaClient.getMetadataClient().getMetadataValue(media.getHref(), "key"); Checks.checkMetadataValueFor(MEDIA, metadataValue); } @Test(testName = "PUT /media/{id}/metadata/{key}", - dependsOnMethods = { "testGetMetadataValue" }, enabled = false) + dependsOnMethods = { "testGetMetadataValue" }) public void testSetMetadataValue() { metadataEntryValue = "newValue"; MetadataValue newValue = MetadataValue.builder().value(metadataEntryValue).build(); @@ -334,7 +346,7 @@ public class MediaClientLiveTest extends BaseVCloudDirectorClientLiveTest { } @Test(testName = "DELETE /media/{id}/metadata/{key}", - dependsOnMethods = { "testSetMetadataValue" }, enabled = false ) + dependsOnMethods = { "testSetMetadataValue" } ) public void testDeleteMetadata() { Task deleteMetadataEntry = mediaClient.getMetadataClient().deleteMetadataEntry(media.getHref(), "testKey"); Checks.checkTask(deleteMetadataEntry); @@ -371,7 +383,7 @@ public class MediaClientLiveTest extends BaseVCloudDirectorClientLiveTest { } @Test(testName = "DELETE /media/{id}", - dependsOnMethods = { "testDeleteMetadata" }, enabled = false ) + dependsOnMethods = { "testDeleteMetadata" } ) public void testDeleteMedia() { Task deleteMedia = mediaClient.deleteMedia(media.getHref()); Checks.checkTask(deleteMedia); From 1f3971fae8a55df3a68469e15ad3f616ff362a36 Mon Sep 17 00:00:00 2001 From: Adrian Cole Date: Sun, 11 Mar 2012 17:43:02 -0700 Subject: [PATCH 09/20] removed unnecessary wrapping of Task collections --- .../director/v1_5/domain/AdminCatalog.java | 31 ++- .../vcloud/director/v1_5/domain/Catalog.java | 12 +- .../director/v1_5/domain/CatalogItem.java | 25 +- .../director/v1_5/domain/CatalogType.java | 12 +- .../vcloud/director/v1_5/domain/Entity.java | 12 +- .../director/v1_5/domain/EntityType.java | 64 ++++-- .../vcloud/director/v1_5/domain/File.java | 18 +- .../vcloud/director/v1_5/domain/Group.java | 12 +- .../vcloud/director/v1_5/domain/Media.java | 12 +- .../director/v1_5/domain/NetworkType.java | 20 +- .../vcloud/director/v1_5/domain/Org.java | 14 +- .../director/v1_5/domain/OrgNetwork.java | 20 +- .../v1_5/domain/ResourceEntityType.java | 24 +- .../director/v1_5/domain/ResourceType.java | 19 +- .../vcloud/director/v1_5/domain/Task.java | 29 ++- .../director/v1_5/domain/TasksInProgress.java | 113 --------- .../director/v1_5/domain/TasksList.java | 216 +++++++++++------- .../vcloud/director/v1_5/domain/User.java | 14 +- .../director/v1_5/domain/VAppTemplate.java | 12 +- .../vcloud/director/v1_5/domain/Vdc.java | 23 +- .../v1_5/domain/cim/package-info.java | 1 + .../domain/ovf/internal/package-info.java | 1 + .../v1_5/domain/ovf/package-info.java | 1 + .../v1_5/domain/query/package-info.java | 1 + .../v1_5/domain/vapp/package-info.java | 1 + .../vcloud/director/v1_5/domain/Checks.java | 6 +- .../v1_5/features/MediaClientExpectTest.java | 7 +- .../v1_5/features/MediaClientLiveTest.java | 10 +- .../v1_5/features/TaskClientExpectTest.java | 5 +- .../v1_5/features/TaskClientLiveTest.java | 6 +- 30 files changed, 347 insertions(+), 394 deletions(-) delete mode 100644 labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/TasksInProgress.java diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/AdminCatalog.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/AdminCatalog.java index 6f466e7597..5f73b7ef86 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/AdminCatalog.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/AdminCatalog.java @@ -19,8 +19,6 @@ package org.jclouds.vcloud.director.v1_5.domain; -import static com.google.common.base.Preconditions.checkNotNull; - import java.net.URI; import java.util.Set; @@ -28,8 +26,6 @@ import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlRootElement; -import com.google.common.collect.Sets; - /** * @@ -69,7 +65,7 @@ public class AdminCatalog extends CatalogType { public static class Builder extends CatalogType.Builder { public AdminCatalog build() { - return new AdminCatalog(href, type, links, description, tasksInProgress, id, name, owner, catalogItems, isPublished); + return new AdminCatalog(href, type, links, description, tasks, id, name, owner, catalogItems, isPublished); } /** @@ -132,14 +128,14 @@ public class AdminCatalog extends CatalogType { } /** - * @see EntityType#getTasksInProgress() + * @see EntityType#getTasks() */ @Override - public Builder tasksInProgress(TasksInProgress tasksInProgress) { - this.tasksInProgress = tasksInProgress; + public Builder tasks(Set tasks) { + super.tasks(tasks); return this; } - + /** * @see ReferenceType#getHref() */ @@ -157,25 +153,24 @@ public class AdminCatalog extends CatalogType { this.type = type; return this; } - + /** - * @see EntityType#getLinks() + * @see ResourceType#getLinks() */ @Override public Builder links(Set links) { - this.links = Sets.newLinkedHashSet(checkNotNull(links, "links")); - return this; + return Builder.class.cast(super.links(links)); } /** - * @see EntityType#getLinks() + * @see ResourceType#getLinks() */ @Override public Builder link(Link link) { - this.links.add(checkNotNull(link, "link")); - return this; + return Builder.class.cast(super.link(link)); } + @Override public Builder fromCatalogType(CatalogType in) { return Builder.class.cast(super.fromCatalogType(in)); @@ -190,8 +185,8 @@ public class AdminCatalog extends CatalogType { // For JAXB } - public AdminCatalog(URI href, String type, Set links, String description, TasksInProgress tasksInProgress, String id, + public AdminCatalog(URI href, String type, Set links, String description, Set tasks, String id, String name, Owner owner, CatalogItems catalogItems, Boolean published) { - super(href, type, links, description, tasksInProgress, id, name, owner, catalogItems, published); + super(href, type, links, description, tasks, id, name, owner, catalogItems, published); } } diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/Catalog.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/Catalog.java index 7454d952d1..535dfe490f 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/Catalog.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/Catalog.java @@ -57,7 +57,7 @@ public class Catalog extends CatalogType { @Override public Catalog build() { - return new Catalog(href, type, links, description, tasksInProgress, id, name, owner, catalogItems, isPublished); + return new Catalog(href, type, links, description, tasks, id, name, owner, catalogItems, isPublished); } /** @@ -120,11 +120,11 @@ public class Catalog extends CatalogType { } /** - * @see EntityType#getTasksInProgress() + * @see EntityType#getTasks() */ @Override - public Builder tasksInProgress(TasksInProgress tasksInProgress) { - this.tasksInProgress = tasksInProgress; + public Builder tasks(Set tasks) { + super.tasks(tasks); return this; } @@ -174,9 +174,9 @@ public class Catalog extends CatalogType { } } - public Catalog(URI href, String type, Set links, String description, TasksInProgress tasksInProgress, String id, + public Catalog(URI href, String type, Set links, String description, Set tasks, String id, String name, Owner owner, CatalogItems catalogItems, Boolean published) { - super(href, type, links, description, tasksInProgress, id, name, owner, catalogItems, published); + super(href, type, links, description, tasks, id, name, owner, catalogItems, published); } @SuppressWarnings("unused") diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/CatalogItem.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/CatalogItem.java index 12b3cdb740..4abcfe131b 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/CatalogItem.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/CatalogItem.java @@ -46,7 +46,6 @@ public class CatalogItem extends EntityType { public static final String MEDIA_TYPE = VCloudDirectorMediaType.CATALOG_ITEM; - @SuppressWarnings("unchecked") public static Builder builder() { return new Builder(); } @@ -87,7 +86,7 @@ public class CatalogItem extends EntityType { @Override public CatalogItem build() { - return new CatalogItem(href, type, links, description, tasksInProgress, id, name, entity, properties); + return new CatalogItem(href, type, links, description, tasks, id, name, entity, properties); } /** @@ -116,13 +115,13 @@ public class CatalogItem extends EntityType { this.id = id; return this; } - + /** - * @see EntityType#getTasksInProgress() + * @see EntityType#getTasks() */ @Override - public Builder tasksInProgress(TasksInProgress tasksInProgress) { - this.tasksInProgress = tasksInProgress; + public Builder tasks(Set tasks) { + super.tasks(tasks); return this; } @@ -145,21 +144,19 @@ public class CatalogItem extends EntityType { } /** - * @see EntityType#getLinks() + * @see ResourceType#getLinks() */ @Override public Builder links(Set links) { - this.links = Sets.newLinkedHashSet(checkNotNull(links, "links")); - return this; + return Builder.class.cast(super.links(links)); } /** - * @see EntityType#getLinks() + * @see ResourceType#getLinks() */ @Override public Builder link(Link link) { - this.links.add(checkNotNull(link, "link")); - return this; + return Builder.class.cast(super.link(link)); } @Override @@ -172,8 +169,8 @@ public class CatalogItem extends EntityType { } } - private CatalogItem(URI href, String type, Set links, String description, TasksInProgress tasksInProgress, String id, String name, Reference entity, Set properties) { - super(href, type, links, description, tasksInProgress, id, name); + private CatalogItem(URI href, String type, Set links, String description, Set tasks, String id, String name, Reference entity, Set properties) { + super(href, type, links, description, tasks, id, name); this.entity = entity; this.properties = ImmutableSet.copyOf(properties); } diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/CatalogType.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/CatalogType.java index f56095d5f6..b5ccbb6c89 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/CatalogType.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/CatalogType.java @@ -90,7 +90,7 @@ public class CatalogType> extends EntityType { @Override public CatalogType build() { - return new CatalogType(href, type, links, description, tasksInProgress, id, name, owner, catalogItems, isPublished); + return new CatalogType(href, type, links, description, tasks, id, name, owner, catalogItems, isPublished); } /** @@ -121,11 +121,11 @@ public class CatalogType> extends EntityType { } /** - * @see EntityType#getTasksInProgress() + * @see EntityType#getTasks() */ @Override - public Builder tasksInProgress(TasksInProgress tasksInProgress) { - super.tasksInProgress(tasksInProgress); + public Builder tasks(Set tasks) { + super.tasks(tasks); return this; } @@ -176,9 +176,9 @@ public class CatalogType> extends EntityType { } } - public CatalogType(URI href, String type, Set links, String description, TasksInProgress tasksInProgress, String id, + public CatalogType(URI href, String type, Set links, String description, Set tasks, String id, String name, Owner owner, CatalogItems catalogItems, Boolean published) { - super(href, type, links, description, tasksInProgress, id, name); + super(href, type, links, description, tasks, id, name); this.owner = owner; this.catalogItems = catalogItems; this.isPublished = published; diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/Entity.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/Entity.java index 801375b9c0..b0486a53a2 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/Entity.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/Entity.java @@ -46,7 +46,7 @@ public class Entity extends EntityType { @Override public Entity build() { - return new Entity(href, type, links, description, tasksInProgress, id, name); + return new Entity(href, type, links, description, tasks, id, name); } /** @@ -77,11 +77,11 @@ public class Entity extends EntityType { } /** - * @see EntityType#getTasksInProgress() + * @see EntityType#getTasks() */ @Override - public Builder tasksInProgress(TasksInProgress tasksInProgress) { - this.tasksInProgress = tasksInProgress; + public Builder tasks(Set tasks) { + super.tasks(tasks); return this; } @@ -131,8 +131,8 @@ public class Entity extends EntityType { } } - private Entity(URI href, String type, Set links, String description, TasksInProgress tasksInProgress, String id, String name) { - super(href, type, links, description, tasksInProgress, id, name); + private Entity(URI href, String type, Set links, String description, Set tasks, String id, String name) { + super(href, type, links, description, tasks, id, name); } private Entity() { diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/EntityType.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/EntityType.java index b9a0bc1fc9..5c23f0beda 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/EntityType.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/EntityType.java @@ -22,13 +22,18 @@ import static com.google.common.base.Objects.equal; import static com.google.common.base.Preconditions.checkNotNull; import java.net.URI; +import java.util.Collections; import java.util.Set; import javax.xml.bind.annotation.XmlAttribute; import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlElementWrapper; + +import org.jclouds.javax.annotation.Nullable; import com.google.common.base.Objects; import com.google.common.base.Objects.ToStringHelper; +import com.google.common.collect.ImmutableSet; import com.google.common.collect.Sets; /** @@ -48,7 +53,7 @@ public abstract class EntityType> extends ResourceType> extends ResourceType.NewBuilder { protected String description; - protected TasksInProgress tasksInProgress; + protected Set tasks; protected String name; protected String id; @@ -77,16 +82,16 @@ public abstract class EntityType> extends ResourceType tasks) { + this.tasks = tasks; return self(); } public T fromEntityType(EntityType in) { return fromResourceType(in) - .description(in.getDescription()).tasksInProgress(in.getTasksInProgress()) + .description(in.getDescription()).tasks(in.getTasks()) .id(in.getId()).name(in.getName()); } } @@ -94,7 +99,7 @@ public abstract class EntityType> extends ResourceType> extends ResourceType.Builder { protected String description; - protected TasksInProgress tasksInProgress; + protected Set tasks; protected String name; protected String id; @@ -121,12 +126,23 @@ public abstract class EntityType> extends ResourceType tasks(Set tasks) { + if (checkNotNull(tasks, "tasks").size() > 0) + this.tasks = Sets.newLinkedHashSet(tasks); + return this; + } /** - * @see EntityType#getTasksInProgress() + * @see EntityType#getTasks() */ - public Builder tasksInProgress(TasksInProgress tasksInProgress) { - this.tasksInProgress = tasksInProgress; + public Builder task(Task task) { + if (tasks == null) + tasks = Sets.newLinkedHashSet(); + this.tasks.add(checkNotNull(task, "task")); return this; } @@ -151,19 +167,19 @@ public abstract class EntityType> extends ResourceType links(Set links) { - this.links = Sets.newLinkedHashSet(checkNotNull(links, "links")); - return this; + return Builder.class.cast(super.links(links)); } /** * @see ResourceType#getLinks() */ + @SuppressWarnings("unchecked") @Override public Builder link(Link link) { - this.links.add(checkNotNull(link, "link")); - return this; + return Builder.class.cast(super.link(link)); } /** @@ -177,24 +193,26 @@ public abstract class EntityType> extends ResourceType fromEntityType(EntityType in) { return fromResourceType(in) - .description(in.getDescription()).tasksInProgress(in.getTasksInProgress()) + .description(in.getDescription()).tasks(in.getTasks()) .id(in.getId()).name(in.getName()); } } @XmlElement(name = "Description") private String description; - @XmlElement(name = "Tasks") - private TasksInProgress tasksInProgress; + @XmlElementWrapper(name = "Tasks") + @XmlElement(name = "Task") + private Set tasks; @XmlAttribute private String id; @XmlAttribute(required = true) private String name; - public EntityType(URI href, String type, Set links, String description, TasksInProgress tasksInProgress, String id, String name) { + public EntityType(URI href, String type, @Nullable Set links, String description, @Nullable Set tasks, String id, String name) { super(href, type, links); this.description = description; - this.tasksInProgress = tasksInProgress; + // nullable so that jaxb wont persist empty collections + this.tasks = tasks != null && tasks.size() == 0 ? null : tasks; this.id = id; this.name = name; } @@ -213,8 +231,8 @@ public abstract class EntityType> extends ResourceType getTasks() { + return tasks == null ? ImmutableSet.of() : Collections.unmodifiableSet(tasks); } /** @@ -243,7 +261,7 @@ public abstract class EntityType> extends ResourceType that = EntityType.class.cast(o); return super.equals(that) && equal(this.id, that.id) && equal(this.description, that.description) && - equal(this.tasksInProgress, that.tasksInProgress) && equal(this.name, that.name); + equal(this.tasks, that.tasks) && equal(this.name, that.name); } @Override @@ -258,11 +276,11 @@ public abstract class EntityType> extends ResourceType { } public File build() { - return new File(href, type, links, description, tasksInProgress, id, name, size, bytesTransferred, checksum); + return new File(href, type, links, description, tasks, id, name, size, bytesTransferred, checksum); } @@ -128,11 +126,11 @@ public class File extends EntityType { } /** - * @see EntityType#getTasksInProgress() + * @see EntityType#getTasks() */ @Override - public Builder tasksInProgress(TasksInProgress tasksInProgress) { - super.tasksInProgress (tasksInProgress); + public Builder tasks(Set tasks) { + super.tasks (tasks); return this; } @@ -159,7 +157,7 @@ public class File extends EntityType { */ @Override public Builder links(Set links) { - this.links = Sets.newLinkedHashSet(checkNotNull(links, "links")); + super.links(links); return this; } @@ -168,7 +166,7 @@ public class File extends EntityType { */ @Override public Builder link(Link link) { - this.links.add(checkNotNull(link, "link")); + super.link(link); return this; } @@ -186,9 +184,9 @@ public class File extends EntityType { } } - public File(URI href, String type, Set links, String description, TasksInProgress tasksInProgress, String id, + public File(URI href, String type, Set links, String description, Set tasks, String id, String name, Long size, Long bytesTransferred, String checksum) { - super(href, type, links, description, tasksInProgress, id, name); + super(href, type, links, description, tasks, id, name); this.size = size; this.bytesTransferred = bytesTransferred; this.checksum = checksum; diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/Group.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/Group.java index 5c7887e04d..f23153310d 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/Group.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/Group.java @@ -106,7 +106,7 @@ public class Group extends EntityType { } public Group build() { - return new Group(href, type, links, description, tasksInProgress, id, name, + return new Group(href, type, links, description, tasks, id, name, nameInSource, usersList, role); } @@ -138,11 +138,11 @@ public class Group extends EntityType { } /** - * @see EntityType#getTasksInProgress() + * @see EntityType#getTasks() */ @Override - public Builder tasksInProgress(TasksInProgress tasksInProgress) { - super.tasksInProgress(tasksInProgress); + public Builder tasks(Set tasks) { + super.tasks(tasks); return this; } @@ -200,9 +200,9 @@ public class Group extends EntityType { } public Group(URI href, String type, Set links, String description, - TasksInProgress tasksInProgress, String id, String name, String nameInSource, + Set tasks, String id, String name, String nameInSource, UsersList usersList, Reference role) { - super(href, type, links, description, tasksInProgress, id, name); + super(href, type, links, description, tasks, id, name); this.nameInSource = nameInSource; this.usersList = usersList; this.role = role; diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/Media.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/Media.java index 234091b18d..209361b246 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/Media.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/Media.java @@ -90,7 +90,7 @@ public class Media extends ResourceEntityType { @Override public Media build() { - return new Media(href, type, links, description, tasksInProgress, id, name, files, status, owner, imageType, size); + return new Media(href, type, links, description, tasks, id, name, files, status, owner, imageType, size); } /** @@ -139,11 +139,11 @@ public class Media extends ResourceEntityType { } /** - * @see EntityType#getTasksInProgress() + * @see EntityType#getTasks() */ @Override - public Builder tasksInProgress(TasksInProgress tasksInProgress) { - super.tasksInProgress(tasksInProgress); + public Builder tasks(Set tasks) { + super.tasks(tasks); return this; } @@ -194,9 +194,9 @@ public class Media extends ResourceEntityType { } - public Media(URI href, String type, Set links, String description, TasksInProgress tasksInProgress, String id, + public Media(URI href, String type, Set links, String description, Set tasks, String id, String name, FilesList files, Integer status, Owner owner, String imageType, long size) { - super(href, type, links, description, tasksInProgress, id, name, files, status); + super(href, type, links, description, tasks, id, name, files, status); this.owner = owner; this.imageType = imageType; this.size = size; diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/NetworkType.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/NetworkType.java index 9b8d4e9f75..8cb5cbcbf3 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/NetworkType.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/NetworkType.java @@ -19,7 +19,6 @@ package org.jclouds.vcloud.director.v1_5.domain; import static com.google.common.base.Objects.equal; -import static com.google.common.base.Preconditions.checkNotNull; import java.net.URI; import java.util.Set; @@ -29,7 +28,6 @@ import javax.xml.bind.annotation.XmlRootElement; import com.google.common.base.Objects; import com.google.common.base.Objects.ToStringHelper; -import com.google.common.collect.Sets; @XmlRootElement(name = "NetworkType") public class NetworkType> extends EntityType { @@ -57,7 +55,7 @@ public class NetworkType> extends EntityType { @Override public NetworkType build() { - return new NetworkType(href, type, links, description, tasksInProgress, id, name, networkConfiguration); + return new NetworkType(href, type, links, description, tasks, id, name, networkConfiguration); } /** @@ -86,13 +84,13 @@ public class NetworkType> extends EntityType { this.id = id; return this; } - + /** - * @see EntityType#getTasksInProgress() + * @see EntityType#getTasks() */ @Override - public Builder tasksInProgress(TasksInProgress tasksInProgress) { - this.tasksInProgress = tasksInProgress; + public Builder tasks(Set tasks) { + super.tasks(tasks); return this; } @@ -119,7 +117,7 @@ public class NetworkType> extends EntityType { */ @Override public Builder links(Set links) { - this.links = Sets.newLinkedHashSet(checkNotNull(links, "links")); + super.links(links); return this; } @@ -128,7 +126,7 @@ public class NetworkType> extends EntityType { */ @Override public Builder link(Link link) { - this.links.add(checkNotNull(link, "link")); + super.link(link); return this; } @@ -146,9 +144,9 @@ public class NetworkType> extends EntityType { } } - public NetworkType(URI href, String type, Set links, String description, TasksInProgress tasksInProgress, + public NetworkType(URI href, String type, Set links, String description, Set tasks, String id, String name, NetworkConfiguration networkConfiguration) { - super(href, type, links, description, tasksInProgress, id, name); + super(href, type, links, description, tasks, id, name); this.networkConfiguration = networkConfiguration; } diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/Org.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/Org.java index 69b9c48852..464208023c 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/Org.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/Org.java @@ -80,7 +80,7 @@ public class Org extends EntityType { @Override public Org build() { - return new Org(href, type, links, description, tasksInProgress, id, name, fullName, isEnabled); + return new Org(href, type, links, description, tasks, id, name, fullName, isEnabled); } public T fromOrg(Org in) { @@ -143,7 +143,7 @@ public class Org extends EntityType { @Override public Org build() { - return new Org(href, type, links, description, tasksInProgress, id, name, fullName, isEnabled); + return new Org(href, type, links, description, tasks, id, name, fullName, isEnabled); } /** @@ -174,11 +174,11 @@ public class Org extends EntityType { } /** - * @see EntityType#getTasksInProgress() + * @see EntityType#getTasks() */ @Override - public Builder tasksInProgress(TasksInProgress tasksInProgress) { - this.tasksInProgress = tasksInProgress; + public Builder tasks(Set tasks) { + super.tasks(tasks); return this; } @@ -232,8 +232,8 @@ public class Org extends EntityType { // for JAXB } - public Org(URI href, String type, Set links, String description, TasksInProgress tasksInProgress, String id, String name, String fullName, Boolean enabled) { - super(href, type, links, description, tasksInProgress, id, name); + public Org(URI href, String type, Set links, String description, Set tasks, String id, String name, String fullName, Boolean enabled) { + super(href, type, links, description, tasks, id, name); this.fullName = fullName; isEnabled = enabled; } diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/OrgNetwork.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/OrgNetwork.java index 65212fd30e..b65c593b6c 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/OrgNetwork.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/OrgNetwork.java @@ -19,7 +19,6 @@ package org.jclouds.vcloud.director.v1_5.domain; import static com.google.common.base.Objects.equal; -import static com.google.common.base.Preconditions.checkNotNull; import java.net.URI; import java.util.Set; @@ -29,7 +28,6 @@ import javax.xml.bind.annotation.XmlRootElement; import com.google.common.base.Objects; import com.google.common.base.Objects.ToStringHelper; -import com.google.common.collect.Sets; @XmlRootElement(name = "OrgNetwork") public class OrgNetwork extends NetworkType { @@ -67,7 +65,7 @@ public class OrgNetwork extends NetworkType { @Override public OrgNetwork build() { - return new OrgNetwork(href, type, links, description, tasksInProgress, id, name, networkConfiguration, + return new OrgNetwork(href, type, links, description, tasks, id, name, networkConfiguration, networkPool, allowedExternalIpAddresses); } @@ -105,13 +103,13 @@ public class OrgNetwork extends NetworkType { this.id = id; return this; } - + /** - * @see EntityType#getTasksInProgress() + * @see EntityType#getTasks() */ @Override - public Builder tasksInProgress(TasksInProgress tasksInProgress) { - this.tasksInProgress = tasksInProgress; + public Builder tasks(Set tasks) { + super.tasks(tasks); return this; } @@ -138,7 +136,7 @@ public class OrgNetwork extends NetworkType { */ @Override public Builder links(Set links) { - this.links = Sets.newLinkedHashSet(checkNotNull(links, "links")); + super.links(links); return this; } @@ -147,7 +145,7 @@ public class OrgNetwork extends NetworkType { */ @Override public Builder link(Link link) { - this.links.add(checkNotNull(link, "link")); + super.link(link); return this; } @@ -167,9 +165,9 @@ public class OrgNetwork extends NetworkType { // For JAXB } - private OrgNetwork(URI href, String type, Set links, String description, TasksInProgress tasksInProgress, + private OrgNetwork(URI href, String type, Set links, String description, Set tasks, String id, String name, NetworkConfiguration networkConfiguration, ReferenceType networkPool, IpAddresses allowedExternalIpAddresses) { - super(href, type, links, description, tasksInProgress, id, name, networkConfiguration); + super(href, type, links, description, tasks, id, name, networkConfiguration); this.networkPool = networkPool; this.allowedExternalIpAddresses = allowedExternalIpAddresses; } diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/ResourceEntityType.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/ResourceEntityType.java index 8527fe20b9..8cbb354b72 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/ResourceEntityType.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/ResourceEntityType.java @@ -20,7 +20,6 @@ package org.jclouds.vcloud.director.v1_5.domain; import static com.google.common.base.Objects.equal; -import static com.google.common.base.Preconditions.checkNotNull; import java.net.URI; import java.util.Set; @@ -30,7 +29,6 @@ import javax.xml.bind.annotation.XmlElement; import com.google.common.base.Objects; import com.google.common.base.Objects.ToStringHelper; -import com.google.common.collect.Sets; /** * Base type that represents a resource entity such as a vApp template or virtual media. @@ -72,13 +70,13 @@ public abstract class ResourceEntityType> extend this.id = id; return this; } - + /** - * @see EntityType#getTasksInProgress() + * @see EntityType#getTasks() */ @Override - public Builder tasksInProgress(TasksInProgress tasksInProgress) { - this.tasksInProgress = tasksInProgress; + public Builder tasks(Set tasks) { + super.tasks(tasks); return this; } @@ -101,20 +99,18 @@ public abstract class ResourceEntityType> extend } /** - * @see EntityType#getLinks() + * @see ResourceEntityType#getLinks() */ - @Override public Builder links(Set links) { - this.links = Sets.newLinkedHashSet(checkNotNull(links, "links")); + super.links(links); return this; } /** - * @see EntityType#getLinks() + * @see ResourceEntityType#getLinks() */ - @Override public Builder link(Link link) { - this.links.add(checkNotNull(link, "link")); + super.link(link); return this; } @@ -134,8 +130,8 @@ public abstract class ResourceEntityType> extend @XmlAttribute protected Integer status; - public ResourceEntityType(URI href, String type, Set links, String description, TasksInProgress tasksInProgress, String id, String name, FilesList files, Integer status) { - super(href, type, links, description, tasksInProgress, id, name); + public ResourceEntityType(URI href, String type, Set links, String description, Set tasks, String id, String name, FilesList files, Integer status) { + super(href, type, links, description, tasks, id, name); this.files = files; this.status = status; } diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/ResourceType.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/ResourceType.java index 42f14c1189..24843d43be 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/ResourceType.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/ResourceType.java @@ -28,6 +28,8 @@ import java.util.Set; import javax.xml.bind.annotation.XmlAttribute; import javax.xml.bind.annotation.XmlElement; +import org.jclouds.javax.annotation.Nullable; + import com.google.common.base.Objects; import com.google.common.base.Objects.ToStringHelper; import com.google.common.collect.ImmutableSet; @@ -55,7 +57,7 @@ public abstract class ResourceType> { protected URI href; protected String type; - protected Set links = Sets.newLinkedHashSet(); + protected Set links; /** * @see ResourceType#getHref() @@ -85,6 +87,8 @@ public abstract class ResourceType> { * @see ResourceType#getLinks() */ public T link(Link link) { + if (links == null) + links = Sets.newLinkedHashSet(); this.links.add(checkNotNull(link, "link")); return self(); } @@ -102,7 +106,7 @@ public abstract class ResourceType> { protected URI href; protected String type; - protected Set links = Sets.newLinkedHashSet(); + protected Set links; /** * @see ResourceType#getHref() @@ -132,6 +136,8 @@ public abstract class ResourceType> { * @see ResourceType#getLinks() */ public Builder link(Link link) { + if (links == null) + links = Sets.newLinkedHashSet(); this.links.add(checkNotNull(link, "link")); return this; } @@ -148,12 +154,13 @@ public abstract class ResourceType> { @XmlAttribute private String type; @XmlElement(name = "Link") - private Set links = Sets.newLinkedHashSet(); + private Set links; - protected ResourceType(URI href, String type, Set links) { + protected ResourceType(URI href, String type, @Nullable Set links) { this.href = href; this.type = type; - this.links = ImmutableSet.copyOf(links); + // nullable so that jaxb wont persist empty collections + this.links = links != null && links.size() == 0 ? null : links; } protected ResourceType() { @@ -193,7 +200,7 @@ public abstract class ResourceType> { * Set of optional links to an entity or operation associated with this object. */ public Set getLinks() { - return Collections.unmodifiableSet(links); + return links == null ? ImmutableSet.of() : Collections.unmodifiableSet(links); } @Override diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/Task.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/Task.java index 1ddfda0972..b6f1ca88b4 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/Task.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/Task.java @@ -19,7 +19,6 @@ package org.jclouds.vcloud.director.v1_5.domain; import static com.google.common.base.Objects.equal; -import static com.google.common.base.Preconditions.checkNotNull; import java.net.URI; import java.util.Arrays; @@ -35,7 +34,6 @@ import org.jclouds.vcloud.director.v1_5.VCloudDirectorMediaType; import com.google.common.base.Objects; import com.google.common.base.Objects.ToStringHelper; -import com.google.common.collect.Sets; /** * Represents an asynchronous or long-running task in the vCloud environment. @@ -44,6 +42,8 @@ import com.google.common.collect.Sets; * <xs:complexType name="TaskType"> * * + * TODO: this object and the hierarchy is wrong. it is literally a Task with a Task container. please review class diagram + * * @author grkvlt@apache.org */ @XmlRootElement(name = "Task") @@ -188,7 +188,7 @@ public class Task extends EntityType { @Override public Task build() { - return new Task(href, type, links, description, tasksInProgress, id, name, + return new Task(href, type, links, description, tasks, id, name, error, org, progress, owner, user, params, status, operation, operationName, startTime, endTime, expiryTime); } @@ -218,13 +218,13 @@ public class Task extends EntityType { this.id = id; return this; } - + /** - * @see EntityType#getTasksInProgress() + * @see EntityType#getTasks() */ @Override - public Builder tasksInProgress(TasksInProgress tasksInProgress) { - this.tasksInProgress = tasksInProgress; + public Builder tasks(Set tasks) { + super.tasks(tasks); return this; } @@ -247,23 +247,22 @@ public class Task extends EntityType { } /** - * @see EntityType#getLinks() + * @see ResourceType#getLinks() */ @Override public Builder links(Set links) { - this.links = Sets.newLinkedHashSet(checkNotNull(links, "links")); - return this; + return Builder.class.cast(super.links(links)); } /** - * @see EntityType#getLinks() + * @see ResourceType#getLinks() */ @Override public Builder link(Link link) { - this.links.add(checkNotNull(link, "link")); - return this; + return Builder.class.cast(super.link(link)); } + @Override public Builder fromEntityType(EntityType in) { return Builder.class.cast(super.fromEntityType(in)); @@ -276,11 +275,11 @@ public class Task extends EntityType { } } - public Task(URI href, String type, Set links, String description, TasksInProgress tasksInProgress, + public Task(URI href, String type, Set links, String description, Set tasks, String id, String name, Error error, Reference org, Integer progress, Reference owner, Reference user, Object params, String status, String operation, String operationName, Date startTime, Date endTime, Date expiryTime) { - super(href, type, links, description, tasksInProgress, id, name); + super(href, type, links, description, tasks, id, name); this.error = error; this.org = org; this.progress = progress; diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/TasksInProgress.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/TasksInProgress.java deleted file mode 100644 index 76500a4b6a..0000000000 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/TasksInProgress.java +++ /dev/null @@ -1,113 +0,0 @@ -/** - * Licensed to jclouds, Inc. (jclouds) under one or more - * contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. jclouds 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 CONDITIOXMLNS 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.domain; - -import static com.google.common.base.Objects.equal; -import static com.google.common.base.Preconditions.checkNotNull; - -import java.util.Collection; -import java.util.Collections; -import java.util.Set; - -import javax.xml.bind.annotation.XmlElement; -import javax.xml.bind.annotation.XmlRootElement; - -import com.google.common.base.Objects; -import com.google.common.collect.ImmutableSet; -import com.google.common.collect.Sets; - -/** - * @author grkvlt@apache.org - */ -@XmlRootElement(name = "TasksInProgress") -public class TasksInProgress { - - public static Builder builder() { - return new Builder(); - } - - public Builder toBuilder() { - return new Builder(); - } - - public static class Builder { - - protected Set tasks = Sets.newLinkedHashSet(); - - /** - * @see TasksInProgress#getTasks() - */ - public Builder tasks(Set tasks) { - this.tasks = ImmutableSet.copyOf(checkNotNull(tasks, "tasks")); - return this; - } - - /** - * @see TasksInProgress#getTasks() - */ - public Builder task(Task task) { - this.tasks.add(checkNotNull(task, "task")); - return this; - } - - public TasksInProgress build() { - return new TasksInProgress(tasks); - } - - public Builder fromTasksInProgress(TasksInProgress in) { - return tasks(in.getTasks()); - } - } - - private TasksInProgress() { - // for JAXB - } - - private TasksInProgress(Collection tasks) { - this.tasks = ImmutableSet.copyOf(tasks); - } - - @XmlElement(name = "Task") - private Set tasks = Sets.newLinkedHashSet(); - - public Set getTasks() { - return Collections.unmodifiableSet(tasks); - } - - @Override - public boolean equals(Object o) { - if (this == o) - return true; - if (o == null || getClass() != o.getClass()) - return false; - TasksInProgress that = TasksInProgress.class.cast(o); - return equal(this.tasks, that.tasks); - } - - @Override - public int hashCode() { - return Objects.hashCode(tasks); - } - - @Override - public String toString() { - return Objects.toStringHelper("").add("tasks", tasks).toString(); - } -} - diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/TasksList.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/TasksList.java index 495de77fd0..510edb27d4 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/TasksList.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/TasksList.java @@ -22,13 +22,16 @@ import static com.google.common.base.Objects.equal; import static com.google.common.base.Preconditions.checkNotNull; import java.net.URI; +import java.util.Collection; import java.util.Collections; +import java.util.Iterator; import java.util.Set; +import javax.xml.bind.annotation.XmlAttribute; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlRootElement; -import org.jclouds.vcloud.director.v1_5.VCloudDirectorMediaType; +import org.jclouds.javax.annotation.Nullable; import com.google.common.base.Objects; import com.google.common.base.Objects.ToStringHelper; @@ -36,33 +39,36 @@ import com.google.common.collect.ImmutableSet; import com.google.common.collect.Sets; /** - * A list of tasks. - * + * Task List + * + * * @author Adrian Cole */ @XmlRootElement(name = "TasksList") -public class TasksList extends EntityType { - - public static final String MEDIA_TYPE = VCloudDirectorMediaType.TASKS_LIST; - +public class TasksList extends ResourceType implements Set { public static Builder builder() { return new Builder(); } - @Override - public Builder toBuilder() { - return new Builder(); - } + public static class Builder extends ResourceType.Builder { + protected String name; - public static class Builder extends EntityType.Builder { + private Set tasks; - protected Set tasks = Sets.newLinkedHashSet(); + /** + * @see TasksList#getName() + */ + public Builder name(String name) { + this.name = name; + return this; + } /** * @see TasksList#getTasks() */ public Builder tasks(Set tasks) { - this.tasks = Sets.newLinkedHashSet(checkNotNull(tasks, "tasks")); + if (checkNotNull(tasks, "tasks").size() > 0) + this.tasks = Sets.newLinkedHashSet(tasks); return this; } @@ -70,111 +76,86 @@ public class TasksList extends EntityType { * @see TasksList#getTasks() */ public Builder task(Task task) { + if (tasks == null) + tasks = Sets.newLinkedHashSet(); this.tasks.add(checkNotNull(task, "task")); return this; } - + @Override public TasksList build() { - return new TasksList(href, type, links, description, tasksInProgress, id, name, tasks); + return new TasksList(href, type, links, name, tasks); } /** - * @see EntityType#getName() - */ - @Override - public Builder name(String name) { - this.name = name; - return this; - } - - /** - * @see EntityType#getDescription() - */ - @Override - public Builder description(String description) { - this.description = description; - return this; - } - - /** - * @see EntityType#getId() - */ - @Override - public Builder id(String id) { - this.id = id; - return this; - } - - /** - * @see EntityType#getTasksInProgress() - */ - @Override - public Builder tasksInProgress(TasksInProgress tasksInProgress) { - this.tasksInProgress = tasksInProgress; - return this; - } - - /** - * @see ReferenceType#getHref() + * @see ResourceType#getHref() */ @Override public Builder href(URI href) { - this.href = href; + super.href(href); return this; } /** - * @see ReferenceType#getType() + * @see ResourceType#getType() */ @Override public Builder type(String type) { - this.type = type; + super.type(type); return this; } /** - * @see EntityType#getLinks() + * @see ResourceType#getLinks() */ @Override public Builder links(Set links) { - this.links = Sets.newLinkedHashSet(checkNotNull(links, "links")); - return this; + return Builder.class.cast(super.links(links)); } /** - * @see EntityType#getLinks() + * @see ResourceType#getLinks() */ @Override public Builder link(Link link) { - this.links.add(checkNotNull(link, "link")); + super.link(link); return this; } - @Override - public Builder fromEntityType(EntityType in) { - return Builder.class.cast(super.fromEntityType(in)); + public Builder fromTasksList(TasksList in) { + return fromResourceType(in).tasks(in); } - public Builder fromTasksList(TasksList in) { - return fromEntityType(in).tasks(in.getTasks()); + /** + * {@inheritDoc} + */ + @Override + public Builder fromResourceType(ResourceType in) { + return Builder.class.cast(super.fromResourceType(in)); } } + @XmlAttribute(required = true) + private String name; + @XmlElement(name = "Task") + private Set tasks; + + public TasksList(URI href, String type, @Nullable Set links, String name, @Nullable Set tasks) { + super(href, type, links); + this.tasks = tasks; + this.name = name; + } + protected TasksList() { - // for JAXB + // For JAXB } - public TasksList(URI href, String type, Set links, String description, TasksInProgress tasksInProgress, String id, String name, Set tasks) { - super(href, type, links, description, tasksInProgress, id, name); - this.tasks = ImmutableSet.copyOf(tasks); - } - @XmlElement(name = "Task") - private Set tasks = Sets.newLinkedHashSet(); - - public Set getTasks() { - return Collections.unmodifiableSet(tasks); + /** + * Contains the name of the the entity. + */ + public String getName() { + return name; } @Override @@ -184,16 +165,91 @@ public class TasksList extends EntityType { if (o == null || getClass() != o.getClass()) return false; TasksList that = TasksList.class.cast(o); - return super.equals(that) && equal(this.tasks, that.tasks); + return super.equals(that) && equal(this.delegate(), that.delegate()) && equal(this.name, that.name); } @Override public int hashCode() { - return super.hashCode() + Objects.hashCode(tasks); + return super.hashCode() + Objects.hashCode(delegate(), name); + } + + private Set delegate() { + return tasks == null ? ImmutableSet.of() : Collections.unmodifiableSet(tasks); } @Override public ToStringHelper string() { - return super.string().add("tasks", tasks); + return super.string().add("name", name).add("tasks", delegate()); } -} + + @Override + public Builder toBuilder() { + return new Builder().fromTasksList(this); + } + + @Override + public Iterator iterator() { + return delegate().iterator(); + } + + @Override + public int size() { + return delegate().size(); + } + + @Override + public boolean removeAll(Collection collection) { + return delegate().removeAll(collection); + } + + @Override + public boolean isEmpty() { + return delegate().isEmpty(); + } + + @Override + public boolean contains(Object object) { + return delegate().contains(object); + } + + @Override + public boolean add(Task element) { + return delegate().add(element); + } + + @Override + public boolean remove(Object object) { + return delegate().remove(object); + } + + @Override + public boolean containsAll(Collection collection) { + return delegate().containsAll(collection); + } + + @Override + public boolean addAll(Collection collection) { + return delegate().addAll(collection); + } + + @Override + public boolean retainAll(Collection collection) { + return delegate().retainAll(collection); + } + + @Override + public void clear() { + delegate().clear(); + } + + @Override + public Object[] toArray() { + return delegate().toArray(); + } + + @Override + public T[] toArray(T[] array) { + return delegate().toArray(array); + } + +} \ No newline at end of file diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/User.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/User.java index b55ae0aba7..f16e165bd1 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/User.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/User.java @@ -270,7 +270,7 @@ public class User public User build() { - return new User(href, type, links, description, tasksInProgress, id, + return new User(href, type, links, description, tasks, id, name, fullName, emailAddress, telephone, isEnabled, isLocked, im, nameInSource, isAlertEnabled, alertEmailPrefix, alertEmail, isExternal, isDefaultCached, isGroupRole, storedVmQuota, deployedVmQuota, @@ -286,13 +286,13 @@ public class User this.id = id; return this; } - + /** - * @see EntityType#getTasksInProgress() + * @see EntityType#getTasks() */ @Override - public Builder tasksInProgress(TasksInProgress tasksInProgress) { - this.tasksInProgress = tasksInProgress; + public Builder tasks(Set tasks) { + super.tasks(tasks); return this; } @@ -398,12 +398,12 @@ public class User @XmlElement(name = "GroupReferences") protected Object /* GroupsList */ groupReferences; - public User(URI href, String type, Set links, String description, TasksInProgress tasksInProgress, String id, + public User(URI href, String type, Set links, String description, Set tasks, String id, String name, String fullName, String emailAddress, String telephone, Boolean enabled, Boolean locked, String im, String nameInSource, Boolean alertEnabled, String alertEmailPrefix, String alertEmail, Boolean external, Boolean defaultCached, Boolean groupRole, Integer storedVmQuota, Integer deployedVmQuota, Reference role, String password, Object groupReferences) { - super(href, type, links, description, tasksInProgress, id, name); + super(href, type, links, description, tasks, id, name); this.fullName = fullName; this.emailAddress = emailAddress; this.telephone = telephone; diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/VAppTemplate.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/VAppTemplate.java index 2efd0969d9..8519c9d9ad 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/VAppTemplate.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/VAppTemplate.java @@ -145,7 +145,7 @@ public class VAppTemplate extends ResourceEntityType { @Override public VAppTemplate build() { - return new VAppTemplate(href, type, links, description, tasksInProgress, id, name, files, status, owner, children, sections, vAppScopedLocalId, ovfDescriptorUploaded, goldMaster); + return new VAppTemplate(href, type, links, description, tasks, id, name, files, status, owner, children, sections, vAppScopedLocalId, ovfDescriptorUploaded, goldMaster); } @Override @@ -210,11 +210,11 @@ public class VAppTemplate extends ResourceEntityType { } /** - * @see EntityType#getTasksInProgress() + * @see EntityType#getTasks() */ @Override - public Builder tasksInProgress(TasksInProgress tasksInProgress) { - super.tasksInProgress(tasksInProgress); + public Builder tasks(Set tasks) { + super.tasks(tasks); return this; } @@ -268,10 +268,10 @@ public class VAppTemplate extends ResourceEntityType { @XmlAttribute protected Boolean goldMaster; - private VAppTemplate(URI href, String type, Set links, String description, TasksInProgress tasksInProgress, + private VAppTemplate(URI href, String type, Set links, String description, Set tasks, String id, String name, FilesList files, Integer status, Owner owner, Set children, Set> sections, String vAppScopedLocalId, Boolean ovfDescriptorUploaded, Boolean goldMaster) { - super(href, type, links, description, tasksInProgress, id, name, files, status); + super(href, type, links, description, tasks, id, name, files, status); this.owner = owner; this.children = VAppTemplateChildren.builder().vms(children).build(); this.sections = ImmutableSet.copyOf(sections); diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/Vdc.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/Vdc.java index 179658a50a..6c3e431980 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/Vdc.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/Vdc.java @@ -20,7 +20,6 @@ package org.jclouds.vcloud.director.v1_5.domain; import static com.google.common.base.Objects.equal; -import static com.google.common.base.Preconditions.checkNotNull; import java.net.URI; import java.util.Set; @@ -32,7 +31,6 @@ import javax.xml.bind.annotation.XmlSeeAlso; import javax.xml.bind.annotation.XmlType; import com.google.common.base.Objects; -import com.google.common.collect.Sets; /** @@ -199,7 +197,7 @@ public class Vdc public Vdc build() { return new Vdc( - href, type, links, description, tasksInProgress, id, name, allocationModel, storageCapacity, + href, type, links, description, tasks, id, name, allocationModel, storageCapacity, computeCapacity, resourceEntities, availableNetworks, capabilities, nicQuota, networkQuota, vmQuota, isEnabled, status); } @@ -228,13 +226,13 @@ public class Vdc this.id = id; return this; } - + /** - * @see EntityType#getTasksInProgress() + * @see EntityType#getTasks() */ @Override - public Builder tasksInProgress(TasksInProgress tasksInProgress) { - this.tasksInProgress = tasksInProgress; + public Builder tasks(Set tasks) { + super.tasks(tasks); return this; } @@ -255,13 +253,13 @@ public class Vdc this.type = type; return this; } - + /** * @see EntityType#getLinks() */ @Override public Builder links(Set links) { - this.links = Sets.newLinkedHashSet(checkNotNull(links, "links")); + super.links(links); return this; } @@ -270,11 +268,10 @@ public class Vdc */ @Override public Builder link(Link link) { - this.links.add(checkNotNull(link, "link")); + super.link(link); return this; } - @Override public Builder fromEntityType(EntityType in) { return Builder.class.cast(super.fromEntityType(in)); @@ -296,8 +293,8 @@ public class Vdc } } - public Vdc(URI href, String type, Set links, String description, TasksInProgress tasksInProgress, String id, String name, String allocationModel, CapacityWithUsage storageCapacity, ComputeCapacity computeCapacity, ResourceEntities resourceEntities, AvailableNetworks availableNetworks, Capabilities capabilities, int nicQuota, int networkQuota, Integer vmQuota, Boolean enabled, Integer status) { - super(href, type, links, description, tasksInProgress, id, name); + public Vdc(URI href, String type, Set links, String description, Set tasks, String id, String name, String allocationModel, CapacityWithUsage storageCapacity, ComputeCapacity computeCapacity, ResourceEntities resourceEntities, AvailableNetworks availableNetworks, Capabilities capabilities, int nicQuota, int networkQuota, Integer vmQuota, Boolean enabled, Integer status) { + super(href, type, links, description, tasks, id, name); this.allocationModel = allocationModel; this.storageCapacity = storageCapacity; this.computeCapacity = computeCapacity; diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/cim/package-info.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/cim/package-info.java index 7d4f5fca83..565b77fad1 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/cim/package-info.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/cim/package-info.java @@ -23,3 +23,4 @@ import static org.jclouds.vcloud.director.v1_5.VCloudDirectorConstants.VCLOUD_CI import javax.xml.bind.annotation.XmlNsForm; import javax.xml.bind.annotation.XmlSchema; + diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/ovf/internal/package-info.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/ovf/internal/package-info.java index 89e7c81e8d..376ebb7d43 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/ovf/internal/package-info.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/ovf/internal/package-info.java @@ -30,3 +30,4 @@ import static org.jclouds.vcloud.director.v1_5.VCloudDirectorConstants.VCLOUD_OV import javax.xml.bind.annotation.XmlNs; import javax.xml.bind.annotation.XmlNsForm; import javax.xml.bind.annotation.XmlSchema; + diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/ovf/package-info.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/ovf/package-info.java index 4f6e14dc43..2f51ebaf66 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/ovf/package-info.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/ovf/package-info.java @@ -30,3 +30,4 @@ import static org.jclouds.vcloud.director.v1_5.VCloudDirectorConstants.VCLOUD_OV import javax.xml.bind.annotation.XmlNs; import javax.xml.bind.annotation.XmlNsForm; import javax.xml.bind.annotation.XmlSchema; + diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/query/package-info.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/query/package-info.java index c5be051558..82e216e32c 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/query/package-info.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/query/package-info.java @@ -29,3 +29,4 @@ import static org.jclouds.vcloud.director.v1_5.VCloudDirectorConstants.VCLOUD_CI import javax.xml.bind.annotation.XmlNs; import javax.xml.bind.annotation.XmlNsForm; import javax.xml.bind.annotation.XmlSchema; + diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/vapp/package-info.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/vapp/package-info.java index 7b9e88a9c0..c8acc0be09 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/vapp/package-info.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/vapp/package-info.java @@ -31,3 +31,4 @@ import static org.jclouds.vcloud.director.v1_5.VCloudDirectorConstants.VCLOUD_OV import javax.xml.bind.annotation.XmlNs; import javax.xml.bind.annotation.XmlNsForm; import javax.xml.bind.annotation.XmlSchema; + diff --git a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/domain/Checks.java b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/domain/Checks.java index 89d0f76fcf..963ca76c3b 100644 --- a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/domain/Checks.java +++ b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/domain/Checks.java @@ -66,9 +66,9 @@ public class Checks { // Check optional fields // NOTE description cannot be checked - TasksInProgress tasksInProgress = entity.getTasksInProgress(); - if (tasksInProgress != null && tasksInProgress.getTasks() != null && !tasksInProgress.getTasks().isEmpty()) { - for (Task task : tasksInProgress.getTasks()) checkTask(task); + Set tasks = entity.getTasks(); + if (tasks != null && tasks != null && !tasks.isEmpty()) { + for (Task task : tasks) checkTask(task); } // Check parent type diff --git a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/MediaClientExpectTest.java b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/MediaClientExpectTest.java index 687b3dd822..301dbd7050 100644 --- a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/MediaClientExpectTest.java +++ b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/MediaClientExpectTest.java @@ -38,10 +38,11 @@ import org.jclouds.vcloud.director.v1_5.domain.MetadataValue; 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.TasksInProgress; import org.jclouds.vcloud.director.v1_5.internal.BaseVCloudDirectorRestClientExpectTest; import org.testng.annotations.Test; +import com.google.common.collect.ImmutableSet; + /** * Allows us to test a client via its side effects. * @@ -415,8 +416,8 @@ public class MediaClientExpectTest extends BaseVCloudDirectorRestClientExpectTes .href(URI.create("https://mycloud.greenhousedata.com/api/media/a6b023f2-7f90-4e89-a24d-56e0eba83a5a")) .build()) .description("copied by testCloneMedia()") - .tasksInProgress(TasksInProgress.builder() - .task(Task.builder() + .tasks(ImmutableSet.builder() + .add(Task.builder() .status("running") .startTime(dateService.iso8601DateParse("2012-03-02T04:58:48.754-07:00")) .operationName("vdcCopyMedia") diff --git a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/MediaClientLiveTest.java b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/MediaClientLiveTest.java index 95291310cd..44beae7b6f 100644 --- a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/MediaClientLiveTest.java +++ b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/MediaClientLiveTest.java @@ -143,7 +143,7 @@ public class MediaClientLiveTest extends BaseVCloudDirectorClientLiveTest { media = mediaClient.getMedia(media.getHref()); - Task task = Iterables.getOnlyElement(media.getTasksInProgress().getTasks()); + Task task = Iterables.getOnlyElement(media.getTasks()); assertEquals(task.getStatus(), "running"); @@ -192,8 +192,8 @@ public class MediaClientLiveTest extends BaseVCloudDirectorClientLiveTest { Checks.checkMediaFor(VDC, media); - if (media.getTasksInProgress() != null) { - Task copyTask = getFirst(media.getTasksInProgress().getTasks(), null); + if (media.getTasks() != null) { + Task copyTask = getFirst(media.getTasks(), null); if (copyTask != null) { Checks.checkTask(copyTask); assertTrue(retryTaskSuccess.apply(copyTask), String.format(TASK_COMPLETE_TIMELY, "copyTask")); @@ -216,8 +216,8 @@ public class MediaClientLiveTest extends BaseVCloudDirectorClientLiveTest { Checks.checkMediaFor(VDC, media); - if (media.getTasksInProgress() != null) { - Task copyTask = getFirst(media.getTasksInProgress().getTasks(), null); + if (media.getTasks() != null) { + Task copyTask = getFirst(media.getTasks(), null); if (copyTask != null) { Checks.checkTask(copyTask); assertTrue(retryTaskSuccess.apply(copyTask), String.format(TASK_COMPLETE_TIMELY, "copyTask")); diff --git a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/TaskClientExpectTest.java b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/TaskClientExpectTest.java index 77ac6d25e6..327d588f39 100644 --- a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/TaskClientExpectTest.java +++ b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/TaskClientExpectTest.java @@ -81,11 +81,11 @@ public class TaskClientExpectTest extends BaseVCloudDirectorRestClientExpectTest .name("Tasks Lists") .type("application/vnd.vmware.vcloud.tasksList+xml") .href(URI.create("https://vcloudbeta.bluelock.com/api/tasksList/6f312e42-cd2b-488d-a2bb-97519cd57ed0")) - .task(taskOne()) .task(taskTwo()) + .task(taskOne()) .build(); - assertEquals(client.getTaskClient().getTaskList(URI.create("https://vcloudbeta.bluelock.com/api/org/6f312e42-cd2b-488d-a2bb-97519cd57ed0")), expected); + assertEquals(client.getTaskClient().getTaskList(URI.create("https://vcloudbeta.bluelock.com/api/org/6f312e42-cd2b-488d-a2bb-97519cd57ed0")).toString(), expected.toString()); } @Test @@ -198,6 +198,7 @@ public class TaskClientExpectTest extends BaseVCloudDirectorRestClientExpectTest URI taskUri = URI.create(endpoint + "/task/5fcd2af3-d0ec-45ce-9451-8c585a2c766b"); + //TODO: incorrect relationship, as task should not have a nested task container!! Task expected = taskOne(); assertEquals(client.getTaskClient().getTask(taskUri), expected); diff --git a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/TaskClientLiveTest.java b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/TaskClientLiveTest.java index cef98e1f66..fc64909b8a 100644 --- a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/TaskClientLiveTest.java +++ b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/TaskClientLiveTest.java @@ -80,9 +80,9 @@ public class TaskClientLiveTest extends BaseVCloudDirectorClientLiveTest { // NOTE The environment MUST have ... // Check required elements and attributes - assertFalse(Iterables.isEmpty(taskList.getTasks()), String.format(NOT_EMPTY_OBJECT_FMT, "Task", "TaskList")); + assertFalse(Iterables.isEmpty(taskList), String.format(NOT_EMPTY_OBJECT_FMT, "Task", "TaskList")); - for (Task task : taskList.getTasks()) { + for (Task task : taskList) { checkTask(task); } } @@ -91,7 +91,7 @@ public class TaskClientLiveTest extends BaseVCloudDirectorClientLiveTest { public void testGetTask() { //TODO: upload media or something so you can get a fresh cancellable task? - Task taskRef = Iterables.getFirst(taskList.getTasks(), null); + Task taskRef = Iterables.getFirst(taskList, null); taskURI = taskRef.getHref(); // Call the method being tested From cbd9afc176166e062240ad2b6db88d81f714ca84 Mon Sep 17 00:00:00 2001 From: danikov Date: Sun, 11 Mar 2012 22:06:17 +0000 Subject: [PATCH 10/20] create catalog --- .../director/v1_5/domain/Reference.java | 7 ++ .../features/AdminCatalogAsyncClient.java | 12 ++ .../v1_5/features/AdminCatalogClient.java | 13 ++ .../v1_5/VCloudDirectorLiveTestConstants.java | 2 + .../AdminCatalogClientExpectTest.java | 113 ++++++++++++++++++ .../features/AdminCatalogClientLiveTest.java | 44 +++++-- .../resources/catalog/admin/createCatalog.xml | 21 ++++ .../catalog/admin/createCatalogSource.xml | 4 + 8 files changed, 203 insertions(+), 13 deletions(-) create mode 100644 labs/vcloud-director/src/test/resources/catalog/admin/createCatalog.xml create mode 100644 labs/vcloud-director/src/test/resources/catalog/admin/createCatalogSource.xml diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/Reference.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/Reference.java index c40d5911a6..9de9d33715 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/Reference.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/Reference.java @@ -111,4 +111,11 @@ public class Reference extends ReferenceType { Reference that = Reference.class.cast(o); return super.equals(that); } + + public ReferenceType toAdminReference(String endpoint) { + return toBuilder() + .type(null) + .href(URI.create(getHref().toASCIIString().replace(endpoint, endpoint+"/admin"))) + .build(); + } } \ No newline at end of file diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/AdminCatalogAsyncClient.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/AdminCatalogAsyncClient.java index f8d55b35dc..4c36297682 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/AdminCatalogAsyncClient.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/AdminCatalogAsyncClient.java @@ -49,6 +49,18 @@ import com.google.common.util.concurrent.ListenableFuture; */ @RequestFilters(AddVCloudAuthorizationToRequest.class) public interface AdminCatalogAsyncClient extends CatalogAsyncClient { + + /** + * @see AdminClient#createCatalog(URI, AdminCatalog) + */ + @POST + @Path("/catalogs") + @Consumes(VCloudDirectorMediaType.ADMIN_CATALOG) + @Produces(VCloudDirectorMediaType.ADMIN_CATALOG) + @JAXBResponseParser + @ExceptionParser(ThrowVCloudErrorOn4xx.class) + ListenableFuture createCatalog(@EndpointParam URI orgRef, + @BinderParam(BindToXMLPayload.class) AdminCatalog catalog); /** * @see AdminClient#getCatalog(URI) diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/AdminCatalogClient.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/AdminCatalogClient.java index b7ee427eb3..81ada0ced3 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/AdminCatalogClient.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/AdminCatalogClient.java @@ -34,6 +34,19 @@ import org.jclouds.vcloud.director.v1_5.domain.PublishCatalogParams; */ @Timeout(duration = 180, timeUnit = TimeUnit.SECONDS) public interface AdminCatalogClient extends CatalogClient { + + + /** + * Creates a catalog in an organization. The catalog will always be created in unpublished state. + * + *

    +    * POST /admin/org/{id}/catalogs
    +    * 
    + * + * @param orgRef the reference for the org + * @return contains a , which will point to the running asynchronous creation operation. + */ + AdminCatalog createCatalog(URI orgRef, AdminCatalog catalog); /** * Retrieves a catalog. diff --git a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/VCloudDirectorLiveTestConstants.java b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/VCloudDirectorLiveTestConstants.java index aa83961055..01b80a9013 100644 --- a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/VCloudDirectorLiveTestConstants.java +++ b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/VCloudDirectorLiveTestConstants.java @@ -72,5 +72,7 @@ public class VCloudDirectorLiveTestConstants { public static final String CORRECT_VALUE_OBJECT_FMT = "ERR-122: The %s field of the %s must be '%s': '%s'"; public static final String OBJ_FIELD_CLONE = "ERR-123: %s %s must be a clone of \"%s\" (%s)"; + + public static final String OBJ_FIELD_EMPTY_TO_DELETE = "ERR-124: %s must have no %s to be deleted (%s)"; } diff --git a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/AdminCatalogClientExpectTest.java b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/AdminCatalogClientExpectTest.java index 67daebfcdf..fc1e061094 100644 --- a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/AdminCatalogClientExpectTest.java +++ b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/AdminCatalogClientExpectTest.java @@ -30,6 +30,8 @@ import org.jclouds.vcloud.director.v1_5.domain.Link; import org.jclouds.vcloud.director.v1_5.domain.Owner; import org.jclouds.vcloud.director.v1_5.domain.PublishCatalogParams; 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.TasksInProgress; import org.jclouds.vcloud.director.v1_5.internal.BaseVCloudDirectorRestClientExpectTest; import org.testng.annotations.Test; @@ -41,11 +43,35 @@ import org.testng.annotations.Test; @Test(groups = { "unit", "user" }, singleThreaded = true, testName = "CatalogClientExpectTest") public class AdminCatalogClientExpectTest extends BaseVCloudDirectorRestClientExpectTest { + private Reference orgRef = Reference.builder() + .type("application/vnd.vmware.vcloud.catalog+xml") + .name("QunyingTestCatalog") + .href(URI.create(endpoint + "/admin/catalog/7212e451-76e1-4631-b2de-ba1dfd8080e4")) + .build(); + private Reference catalogRef = Reference.builder() .type("application/vnd.vmware.vcloud.catalog+xml") .name("QunyingTestCatalog") .href(URI.create(endpoint + "/admin/catalog/7212e451-76e1-4631-b2de-ba1dfd8080e4")) .build(); + + @Test + public void testCreateCatalog() { + VCloudDirectorClient client = requestsSendResponses(loginRequest, sessionResponse, + new VcloudHttpRequestPrimer() + .apiCommand("POST", "/admin/org/???/catalogs") + .xmlFilePayload("/catalog/admin/createCatalogSource.xml", VCloudDirectorMediaType.ADMIN_CATALOG) + .acceptMedia(VCloudDirectorMediaType.ADMIN_CATALOG) + .httpRequestBuilder().build(), + new VcloudHttpResponsePrimer() + .xmlFilePayload("/catalog/admin/createCatalog.xml", VCloudDirectorMediaType.ADMIN_CATALOG) + .httpResponseBuilder().build()); + + AdminCatalog source = createCatalogSource(); + AdminCatalog expected = createCatalog(); + + assertEquals(client.getAdminCatalogClient().createCatalog(catalogRef.getHref(), source), expected); + } @Test public void testGetCatalog() { @@ -150,6 +176,93 @@ public class AdminCatalogClientExpectTest extends BaseVCloudDirectorRestClientEx client.getAdminCatalogClient().deleteCatalog(catalogRef.getHref()); } + public static final AdminCatalog createCatalogSource() { + return AdminCatalog.builder() + .name("Test Catalog") + .description("created by testCreateCatalog()") + .build(); + } + + public static final AdminCatalog createCatalog() { + return AdminCatalog.builder() + .name("Test Catalog") + .id("urn:vcloud:catalog:c56d9159-7838-446f-bb35-9ee12dfbbef3") + .type("application/vnd.vmware.admin.catalog+xml") + .description("created by testCreateCatalog()") + .href(URI.create("https://vcloudbeta.bluelock.com/api/admin/catalog/c56d9159-7838-446f-bb35-9ee12dfbbef3")) + .link(Link.builder() + .rel("up") + .type("application/vnd.vmware.admin.organization+xml") + .href(URI.create("https://vcloudbeta.bluelock.com/api/admin/org/6f312e42-cd2b-488d-a2bb-97519cd57ed0")) + .build()) + .link(Link.builder() + .rel("alternate") + .type("application/vnd.vmware.vcloud.catalog+xml") + .href(URI.create("https://vcloudbeta.bluelock.com/api/catalog/c56d9159-7838-446f-bb35-9ee12dfbbef3")) + .build()) + .link(Link.builder() + .rel("down") + .type("application/vnd.vmware.vcloud.owner+xml") + .href(URI.create("https://vcloudbeta.bluelock.com/api/admin/catalog/c56d9159-7838-446f-bb35-9ee12dfbbef3/owner")) + .build()) + .link(Link.builder() + .rel("add") + .type("application/vnd.vmware.vcloud.catalogItem+xml") + .href(URI.create("https://vcloudbeta.bluelock.com/api/catalog/c56d9159-7838-446f-bb35-9ee12dfbbef3/catalogItems")) + .build()) + .link(Link.builder() + .rel("edit") + .type("application/vnd.vmware.admin.catalog+xml") + .href(URI.create("https://vcloudbeta.bluelock.com/api/admin/catalog/c56d9159-7838-446f-bb35-9ee12dfbbef3")) + .build()) + .link(Link.builder() + .rel("remove") + .href(URI.create("https://vcloudbeta.bluelock.com/api/admin/catalog/c56d9159-7838-446f-bb35-9ee12dfbbef3")) + .build()) + .link(Link.builder() + .rel("down") + .type("application/vnd.vmware.vcloud.metadata+xml") + .href(URI.create("https://vcloudbeta.bluelock.com/api/catalog/c56d9159-7838-446f-bb35-9ee12dfbbef3/metadata")) + .build()) + .description("created by testCreateCatalog()") + .tasksInProgress(TasksInProgress.builder() + .task(Task.builder() + .status("running") + .startTime(dateService.iso8601DateParse("2012-03-11T18:43:02.429-04:00")) + .operationName("catalogCreateCatalog") + .operation("Creating Catalog Test Catalog(c56d9159-7838-446f-bb35-9ee12dfbbef3)") + .expiryTime(dateService.iso8601DateParse("2012-06-09T18:43:02.429-04:00")) + .name("task") + .id("urn:vcloud:task:20f556f9-9125-4090-9092-0da9f72bedf4") + .type("application/vnd.vmware.vcloud.task+xml") + .href(URI.create("https://vcloudbeta.bluelock.com/api/task/20f556f9-9125-4090-9092-0da9f72bedf4")) + .link(Link.builder() + .rel("task:cancel") + .href(URI.create("https://vcloudbeta.bluelock.com/api/task/20f556f9-9125-4090-9092-0da9f72bedf4/action/cancel")) + .build()) + .owner(Reference.builder() + .type("application/vnd.vmware.vcloud.catalog+xml") + .name("Test Catalog") + .href(URI.create("https://vcloudbeta.bluelock.com/api/catalog/c56d9159-7838-446f-bb35-9ee12dfbbef3")) + .build()) + .user(Reference.builder() + .type("application/vnd.vmware.admin.user+xml") + .name("dan@cloudsoftcorp.com") + .href(URI.create("https://vcloudbeta.bluelock.com/api/admin/user/ae75edd2-12de-414c-8e85-e6ea10442c08")) + .build()) + .org(Reference.builder() + .type("application/vnd.vmware.vcloud.org+xml") + .name("JClouds") + .href(URI.create("https://vcloudbeta.bluelock.com/api/org/6f312e42-cd2b-488d-a2bb-97519cd57ed0")) + .build()) + .build()) + .build()) + .catalogItems(CatalogItems.builder() + .build()) + .isPublished(false) + .build(); + } + public static final AdminCatalog catalog() { return AdminCatalog.builder() .name("QunyingTestCatalog") diff --git a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/AdminCatalogClientLiveTest.java b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/AdminCatalogClientLiveTest.java index 414bc7bbca..7923087ac0 100644 --- a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/AdminCatalogClientLiveTest.java +++ b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/AdminCatalogClientLiveTest.java @@ -20,6 +20,7 @@ package org.jclouds.vcloud.director.v1_5.features; import static com.google.common.base.Objects.equal; import static org.jclouds.vcloud.director.v1_5.VCloudDirectorLiveTestConstants.OBJ_DEL; +import static org.jclouds.vcloud.director.v1_5.VCloudDirectorLiveTestConstants.OBJ_FIELD_EMPTY_TO_DELETE; import static org.jclouds.vcloud.director.v1_5.VCloudDirectorLiveTestConstants.OBJ_FIELD_EQ; import static org.jclouds.vcloud.director.v1_5.VCloudDirectorLiveTestConstants.OBJ_FIELD_UPDATABLE; import static org.jclouds.vcloud.director.v1_5.VCloudDirectorLiveTestConstants.REF_REQ_LIVE; @@ -43,6 +44,8 @@ import org.jclouds.vcloud.director.v1_5.internal.BaseVCloudDirectorClientLiveTes import org.testng.annotations.BeforeClass; import org.testng.annotations.Test; +import com.google.common.collect.Iterables; + /** * Tests live behavior of {@link AdminCatalogClient}. * @@ -62,7 +65,7 @@ public class AdminCatalogClientLiveTest extends BaseVCloudDirectorClientLiveTest /* * Shared state between dependant tests. */ - private ReferenceType catalogRef; + private ReferenceType orgRef; private AdminCatalog catalog; private Owner owner; @@ -70,15 +73,26 @@ public class AdminCatalogClientLiveTest extends BaseVCloudDirectorClientLiveTest @BeforeClass(inheritGroups = true) public void setupRequiredClients() { catalogClient = context.getApi().getAdminCatalogClient(); - catalogRef = Reference.builder() - .href(URI.create("https://vcloudbeta.bluelock.com/api/admin/catalog/7212e451-76e1-4631-b2de-ba1dfd8080e4")) + orgRef = Iterables.getFirst(context.getApi().getOrgClient().getOrgList().getOrgs(), null).toAdminReference(endpoint); + } + + @Test(testName = "POST /admin/org/{id}/catalogs") + public void testCreateCatalog() { + AdminCatalog newCatalog = AdminCatalog.builder() + .name("Test Catalog") + .description("created by testCreateCatalog()") .build(); + catalog = catalogClient.createCatalog(orgRef.getHref(), newCatalog); + + Checks.checkAdminCatalog(catalog); + + // FIXME: documentation suggests we should wait for a task here } - @Test(testName = "GET /admin/catalog/{id}") + @Test(testName = "GET /admin/catalog/{id}", + dependsOnMethods = { "testCreateCatalog" }) public void testGetCatalog() { - assertNotNull(catalogRef, String.format(REF_REQ_LIVE, "Catalog")); - catalog = catalogClient.getCatalog(catalogRef.getHref()); + catalog = catalogClient.getCatalog(catalog.getHref()); Checks.checkAdminCatalog(catalog); } @@ -153,7 +167,7 @@ public class AdminCatalogClientLiveTest extends BaseVCloudDirectorClientLiveTest } @Test(testName = "POST /admin/catalog/{id}/action/publish", - dependsOnMethods = { "testUpdateCatalog" }, enabled = false ) + dependsOnMethods = { "testUpdateCatalog" }, enabled = false ) // FIXME: fails with a 403 public void testPublishCatalog() { assertTrue(!catalog.isPublished(), String.format(OBJ_FIELD_EQ, CATALOG, "isPublished", false, catalog.isPublished())); @@ -162,8 +176,8 @@ public class AdminCatalogClientLiveTest extends BaseVCloudDirectorClientLiveTest .isPublished(true) .build(); - catalogClient.publishCatalog(catalogRef.getHref(), params); - catalog = catalogClient.getCatalog(catalogRef.getHref()); + catalogClient.publishCatalog(catalog.getHref(), params); + catalog = catalogClient.getCatalog(catalog.getHref()); assertTrue(catalog.isPublished(), String.format(OBJ_FIELD_EQ, CATALOG, "isPublished", true, catalog.isPublished())); @@ -171,18 +185,22 @@ public class AdminCatalogClientLiveTest extends BaseVCloudDirectorClientLiveTest } @Test(testName = "DELETE /admin/catalog/{id}", - dependsOnMethods = { "testPublishCatalog" }, enabled = false ) + dependsOnMethods = { "testUpdateCatalog" } ) public void testDeleteCatalog() { - catalogClient.deleteCatalog(catalogRef.getHref()); +// assertEquals(catalog.getCatalogItems().getCatalogItems().size(), 0, +// String.format(OBJ_FIELD_EMPTY_TO_DELETE, "Catalog", "CatalogItems", +// catalog.getCatalogItems().getCatalogItems().toString())); + catalogClient.deleteCatalog(catalog.getHref()); Error expected = Error.builder() - .message("???") + .message("No access to entity \"(com.vmware.vcloud.entity.catalog:"+ + catalog.getId().substring("urn:vcloud:catalog:".length())+")\".") .majorErrorCode(403) .minorErrorCode("ACCESS_TO_RESOURCE_IS_FORBIDDEN") .build(); try { - catalog = catalogClient.getCatalog(catalogRef.getHref()); + catalog = catalogClient.getCatalog(catalog.getHref()); fail("Should give HTTP 403 error"); } catch (VCloudDirectorException vde) { assertEquals(vde.getError(), expected); diff --git a/labs/vcloud-director/src/test/resources/catalog/admin/createCatalog.xml b/labs/vcloud-director/src/test/resources/catalog/admin/createCatalog.xml new file mode 100644 index 0000000000..8c3c6d80f0 --- /dev/null +++ b/labs/vcloud-director/src/test/resources/catalog/admin/createCatalog.xml @@ -0,0 +1,21 @@ + + + + + + + + + + created by testCreateCatalog() + + + + + + + + + + false + \ No newline at end of file diff --git a/labs/vcloud-director/src/test/resources/catalog/admin/createCatalogSource.xml b/labs/vcloud-director/src/test/resources/catalog/admin/createCatalogSource.xml new file mode 100644 index 0000000000..cf9639a55d --- /dev/null +++ b/labs/vcloud-director/src/test/resources/catalog/admin/createCatalogSource.xml @@ -0,0 +1,4 @@ + + + created by testCreateCatalog() + \ No newline at end of file From 1df9409a3a54af10c8dc55ca12bbb2769f899a6b Mon Sep 17 00:00:00 2001 From: danikov Date: Fri, 9 Mar 2012 16:42:59 +0000 Subject: [PATCH 11/20] adminOrg base continued- media types, restClient config, and checks --- .../v1_5/VCloudDirectorMediaType.java | 6 +- .../VCloudDirectorRestClientModule.java | 1 + .../v1_5/domain/CustomOrgLdapSettings.java | 33 ++++ .../director/v1_5/domain/OrgLdapSettings.java | 17 ++ .../domain/OrgPasswordPolicySettings.java | 4 +- .../director/v1_5/domain/Reference.java | 7 + .../vcloud/director/v1_5/domain/Checks.java | 185 ++++++++++++++++++ 7 files changed, 250 insertions(+), 3 deletions(-) diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/VCloudDirectorMediaType.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/VCloudDirectorMediaType.java index a81599610d..3ed614c2c0 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/VCloudDirectorMediaType.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/VCloudDirectorMediaType.java @@ -135,6 +135,8 @@ public class VCloudDirectorMediaType { public static final String GROUP = "application/vnd.vmware.admin.group+xml"; + public static final String ORG_VAPP_TEMPLATE_LEASE_SETTINGS = "application/vnd.vmware.admin.vAppTemplateLeaseSettings+xml"; + /** * * All acceptable media types. @@ -153,6 +155,8 @@ public class VCloudDirectorMediaType { CONTROL_ACCESS, VAPP_TEMPLATE, CUSTOMIZATION_SECTION, GUEST_CUSTOMIZATION_SECTION, NETWORK_SECTION, NETWORK_CONFIG_SECTION, NETWORK_CONNECTION_SECTION, CLONE_MEDIA_PARAMS, LEASE_SETTINGS_SECTION, RELOCATE_TEMPLATE, ENVELOPE, - PUBLISH_CATALOG_PARAMS, GROUP + PUBLISH_CATALOG_PARAMS, GROUP, ORG_VAPP_TEMPLATE_LEASE_SETTINGS ); + + } diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/config/VCloudDirectorRestClientModule.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/config/VCloudDirectorRestClientModule.java index b77551ea0a..a92216b0f3 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/config/VCloudDirectorRestClientModule.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/config/VCloudDirectorRestClientModule.java @@ -109,6 +109,7 @@ public class VCloudDirectorRestClientModule extends RestClientModule + * This list must be updated whenever a new authentication mechanism is added. + */ + public static final List ALL = Arrays.asList( + SIMPLE, KERBEROS, MD5DIGEST, NTLM + ); + } + + public static final class ConnectorType { + public static final String ACTIVE_DIRECTORY = "ACTIVE_DIRECTORY"; + public static final String OPEN_LDAP = "OPEN_LDAP"; + + /** + * All acceptable {@link OrgLdapSettings#getOrgLdapMode()} values. + *

    + * This list must be updated whenever a new mode is added. + */ + public static final List ALL = Arrays.asList( + ACTIVE_DIRECTORY, OPEN_LDAP + ); + } + public static Builder builder() { return new ConcreteBuilder(); } diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/OrgLdapSettings.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/OrgLdapSettings.java index 667ec88a20..fa5eca660c 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/OrgLdapSettings.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/OrgLdapSettings.java @@ -22,6 +22,8 @@ package org.jclouds.vcloud.director.v1_5.domain; import static com.google.common.base.Objects.equal; import java.net.URI; +import java.util.Arrays; +import java.util.List; import java.util.Set; import javax.xml.bind.annotation.XmlAccessType; @@ -66,6 +68,21 @@ import com.google.common.base.Objects.ToStringHelper; "customOrgLdapSettings" }) public class OrgLdapSettings extends ResourceType { + public static final class LdapMode { + public static final String NONE = "none"; + public static final String SYSTEM = "system"; + public static final String CUSTOM = "custom"; + + /** + * All acceptable {@link OrgLdapSettings#getOrgLdapMode()} values. + *

    + * This list must be updated whenever a new mode is added. + */ + public static final List ALL = Arrays.asList( + NONE, SYSTEM, CUSTOM + ); + } + public static Builder builder() { return new Builder(); } diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/OrgPasswordPolicySettings.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/OrgPasswordPolicySettings.java index d766f513ae..3974e1ca04 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/OrgPasswordPolicySettings.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/OrgPasswordPolicySettings.java @@ -193,7 +193,7 @@ public class OrgPasswordPolicySettings extends ResourceType { Reference that = Reference.class.cast(o); return super.equals(that); } + + public ReferenceType toAdminReference(String endpoint) { + return toBuilder() + .type(null) + .href(URI.create(getHref().toASCIIString().replace(endpoint, endpoint+"/admin"))) + .build(); + } } \ No newline at end of file diff --git a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/domain/Checks.java b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/domain/Checks.java index 963ca76c3b..4654241f5d 100644 --- a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/domain/Checks.java +++ b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/domain/Checks.java @@ -38,6 +38,9 @@ import java.util.Set; import java.util.UUID; import org.jclouds.vcloud.director.v1_5.VCloudDirectorMediaType; +import org.jclouds.vcloud.director.v1_5.domain.CustomOrgLdapSettings.AuthenticationMechanism; +import org.jclouds.vcloud.director.v1_5.domain.CustomOrgLdapSettings.ConnectorType; +import org.jclouds.vcloud.director.v1_5.domain.OrgLdapSettings.LdapMode; import com.google.common.base.Splitter; import com.google.common.collect.Iterables; @@ -524,4 +527,186 @@ public class Checks { } } } + + public static void checkOrgSetting(OrgSettings settings) { + // Check optional fields + if (settings.getOrgGeneralSettings() != null) { + checkOrgGeneralSettings(settings.getOrgGeneralSettings()); + } + if (settings.getVAppLeaseSettings() != null) { + checkVAppLeaseSettings(settings.getVAppLeaseSettings()); + } + if (settings.getVAppTemplateLeaseSettings() != null) { + checkVAppTemplateLeaseSettings(settings.getVAppTemplateLeaseSettings()); + } + if (settings.getOrgLdapSettings() != null) { + checkLdapSettings(settings.getOrgLdapSettings()); + } + if (settings.getOrgEmailSettings() != null) { + checkEmailSettings(settings.getOrgEmailSettings()); + } + if (settings.getOrgPasswordPolicySettings() != null) { + checkPasswordPolicySettings(settings.getOrgPasswordPolicySettings()); + } + + // parent type + checkResourceType(settings); + } + + public static void checkEmailSettings(OrgEmailSettings settings) { + // required + assertNotNull(settings.isDefaultSmtpServer(), String.format(OBJ_FIELD_REQ, "OrgEmailSettings", "isDefaultSmtpServer")); + assertNotNull(settings.isDefaultOrgEmail(), String.format(OBJ_FIELD_REQ, "OrgEmailSettings", "isDefaultOrgEmail")); + assertNotNull(settings.getFromEmailAddress(), String.format(OBJ_FIELD_REQ, "OrgEmailSettings", "fromEmailAddress")); + checkEmailAddress(settings.getFromEmailAddress()); + assertNotNull(settings.getDefaultSubjectPrefix(), String.format(OBJ_FIELD_REQ, "OrgEmailSettings", "defaultSubjectPrefix")); + assertNotNull(settings.isAlertEmailToAllAdmins(), String.format(OBJ_FIELD_REQ, "OrgEmailSettings", "isAlertEmailToAllAdmins")); + assertNotNull(settings.getAlertEmailsTo(), String.format(OBJ_FIELD_REQ, "OrgEmailSettings", "alertEmailsTo")); + + // optional + // NOTE alertEmailsTo cannot be checked + + // parent type + checkResourceType(settings); + } + + public static void checkEmailAddress(String email) { + // TODO: validate email addresses + } + + public static void checkOrgGeneralSettings(OrgGeneralSettings settings) { + // Check optional fields + // NOTE canPublishCatalogs cannot be checked + // NOTE useServerBootSequence cannot be checked + if (settings.getDeployedVMQuota() != null) { + assertTrue(settings.getDeployedVMQuota() >= 0, String.format( + OBJ_FIELD_GTE_0, "deployedVMQuota", "port", settings.getDeployedVMQuota())); + } + if (settings.getStoredVmQuota() != null) { + assertTrue(settings.getStoredVmQuota() >= 0, String.format( + OBJ_FIELD_GTE_0, "storedVmQuota", "port", settings.getStoredVmQuota())); + } + if (settings.getDelayAfterPowerOnSeconds() != null) { + assertTrue(settings.getDelayAfterPowerOnSeconds() >= 0, String.format( + OBJ_FIELD_GTE_0, "delayAfterPowerOnSeconds", "port", settings.getDelayAfterPowerOnSeconds())); + } + + // parent type + checkResourceType(settings); + } + + public static void checkLdapSettings(OrgLdapSettings settings) { + // Check optional fields + // NOTE customUsersOu cannot be checked + if (settings.getOrgLdapMode() != null) { + assertTrue(LdapMode.ALL.contains(settings.getOrgLdapMode()), String.format(REQUIRED_VALUE_OBJECT_FMT, + "LdapMode", "OrdLdapSettings", settings.getOrgLdapMode(), Iterables.toString(OrgLdapSettings.LdapMode.ALL))); + } + if (settings.getCustomOrgLdapSettings() != null) { + checkCustomOrgLdapSettings(settings.getCustomOrgLdapSettings()); + } + + // parent type + checkResourceType(settings); + } + + public static void checkCustomOrgLdapSettings(CustomOrgLdapSettings settings) { + // required + assertNotNull(settings.getHostName(), String.format(OBJ_FIELD_REQ, "CustomOrgLdapSettings", "hostName")); + assertNotNull(settings.getPort(), String.format(OBJ_FIELD_REQ, "CustomOrgLdapSettings", "port")); + assertTrue(settings.getPort() >= 0, String.format( + OBJ_FIELD_GTE_0, "CustomOrgLdapSettings", "port", settings.getPort())); + assertNotNull(settings.getAuthenticationMechanism(), String.format(OBJ_FIELD_REQ, "CustomOrgLdapSettings", "authenticationMechanism")); + assertTrue(AuthenticationMechanism.ALL.contains(settings.getAuthenticationMechanism()), String.format(REQUIRED_VALUE_OBJECT_FMT, + "AuthenticationMechanism", "CustomOrdLdapSettings", settings.getAuthenticationMechanism(), + Iterables.toString(CustomOrgLdapSettings.AuthenticationMechanism.ALL))); + assertNotNull(settings.isGroupSearchBaseEnabled(), String.format(OBJ_FIELD_REQ, "CustomOrgLdapSettings", "isGroupSearchBaseEnabled")); + assertNotNull(settings.getConnectorType(), String.format(OBJ_FIELD_REQ, "CustomOrgLdapSettings", "connectorType")); + assertTrue(ConnectorType.ALL.contains(settings.getConnectorType()), String.format(REQUIRED_VALUE_OBJECT_FMT, + "ConnectorType", "CustomOrdLdapSettings", settings.getConnectorType(), + Iterables.toString(CustomOrgLdapSettings.ConnectorType.ALL))); + assertNotNull(settings.getUserAttributes(), String.format(OBJ_FIELD_REQ, "CustomOrgLdapSettings", "userAttributes")); + checkUserAttributes("CustomOrdLdapSettings", settings.getUserAttributes()); + assertNotNull(settings.getGroupAttributes(), String.format(OBJ_FIELD_REQ, "CustomOrgLdapSettings", "groupAttributes")); + checkGroupAttributes("CustomOrdLdapSettings", settings.getGroupAttributes()); + + // optional + // NOTE isSsl cannot be checked + // NOTE isSSlAcceptAll cannot be checked + // NOTE realm cannot be checked + // NOTE searchBase cannot be checked + // NOTE userName cannot be checked + // NOTE password cannot be checked + // NOTE groupSearchBase cannot be checked + } + + public static void checkUserAttributes(String client, OrgLdapUserAttributes attributes) { + // required + assertNotNull(attributes.getObjectClass(), String.format(OBJ_FIELD_REQ, client, "objectClass")); + assertNotNull(attributes.getObjectIdentifier(), String.format(OBJ_FIELD_REQ, client, "objectIdentifier")); + assertNotNull(attributes.getUserName(), String.format(OBJ_FIELD_REQ, client, "userName")); + assertNotNull(attributes.getEmail(), String.format(OBJ_FIELD_REQ, client, "email")); + assertNotNull(attributes.getFullName(), String.format(OBJ_FIELD_REQ, client, "fullName")); + assertNotNull(attributes.getGivenName(), String.format(OBJ_FIELD_REQ, client, "givenName")); + assertNotNull(attributes.getSurname(), String.format(OBJ_FIELD_REQ, client, "surname")); + assertNotNull(attributes.getTelephone(), String.format(OBJ_FIELD_REQ, client, "telephone")); + assertNotNull(attributes.getGroupMembershipIdentifier(), String.format(OBJ_FIELD_REQ, client, "groupMembershipIdentifier")); + + // optional + // NOTE groupBackLinkIdentifier cannot be checked + } + + public static void checkGroupAttributes(String client, OrgLdapGroupAttributes attributes) { + // required + assertNotNull(attributes.getObjectClass(), String.format(OBJ_FIELD_REQ, client, "objectClass")); + assertNotNull(attributes.getObjectIdentifier(), String.format(OBJ_FIELD_REQ, client, "objectIdentifier")); + assertNotNull(attributes.getGroupName(), String.format(OBJ_FIELD_REQ, client, "groupName")); + assertNotNull(attributes.getMembership(), String.format(OBJ_FIELD_REQ, client, "membership")); + assertNotNull(attributes.getMembershipIdentifier(), String.format(OBJ_FIELD_REQ, client, "membershipIdentifier")); + + // optional + // NOTE backLinkIdentifier cannot be checked + } + + public static void checkPasswordPolicySettings(OrgPasswordPolicySettings settings) { + // required + assertNotNull(settings.isAccountLockoutEnabled(), String.format(OBJ_FIELD_REQ, "OrgPasswordPolicySettings", "isAccountLockoutEnabled")); + assertNotNull(settings.getInvalidLoginsBeforeLockout(), String.format(OBJ_FIELD_REQ, "OrgPasswordPolicySettings", "invalidLoginsBeforeLockout")); + assertTrue(settings.getInvalidLoginsBeforeLockout() >= 0, String.format( + OBJ_FIELD_GTE_0, "OrgPasswordPolicySettings", "storageLeaseSeconds", settings.getInvalidLoginsBeforeLockout())); + assertNotNull(settings.getAccountLockoutIntervalMinutes(), String.format(OBJ_FIELD_REQ, "OrgPasswordPolicySettings", "accountLockoutIntervalMinutes")); + assertTrue(settings.getAccountLockoutIntervalMinutes() >= 0, String.format( + OBJ_FIELD_GTE_0, "OrgPasswordPolicySettings", "accountLockoutIntervalMinutes", settings.getAccountLockoutIntervalMinutes())); + + // parent type + checkResourceType(settings); + } + + public static void checkVAppLeaseSettings(OrgLeaseSettings settings) { + // Check optional fields + // NOTE deleteOnStorageLeaseExpiration cannot be checked + if (settings.getStorageLeaseSeconds() != null) { + assertTrue(settings.getStorageLeaseSeconds() >= 0, String.format( + OBJ_FIELD_GTE_0, "OrgLeaseSettings", "storageLeaseSeconds", settings.getStorageLeaseSeconds())); + } + if (settings.getDeploymentLeaseSeconds() != null) { + assertTrue(settings.getDeploymentLeaseSeconds() >= 0, String.format( + OBJ_FIELD_GTE_0, "OrgLeaseSettings", "deploymentLeaseSeconds", settings.getDeploymentLeaseSeconds())); + } + + // parent type + checkResourceType(settings); + } + + public static void checkVAppTemplateLeaseSettings(OrgVAppTemplateLeaseSettings settings) { + // Check optional fields + // NOTE deleteOnStorageLeaseExpiration cannot be checked + if (settings.getStorageLeaseSeconds() != null) { + assertTrue(settings.getStorageLeaseSeconds() >= 0, String.format( + OBJ_FIELD_GTE_0, "OrgVAppTemplateLeaseSettings", "storageLeaseSeconds", settings.getStorageLeaseSeconds())); + } + + // parent type + checkResourceType(settings); + } } From a05d76fabf305da4769fa8c69a13752f30109e27 Mon Sep 17 00:00:00 2001 From: danikov Date: Fri, 9 Mar 2012 16:44:15 +0000 Subject: [PATCH 12/20] get/put vAppTemplateLeaseSettings --- .../v1_5/features/AdminOrgAsyncClient.java | 50 ++++++++++++--- .../v1_5/features/AdminOrgClient.java | 30 ++++++++- .../features/AdminOrgClientExpectTest.java | 55 +++++++++++++++- .../v1_5/features/AdminOrgClientLiveTest.java | 64 ++++++++++++++++--- .../org/admin/updateVAppLeaseSettings.xml | 0 .../admin/updateVAppLeaseSettingsSource.xml | 0 .../resources/org/admin/vAppLeaseSettings.xml | 0 7 files changed, 175 insertions(+), 24 deletions(-) create mode 100644 labs/vcloud-director/src/test/resources/org/admin/updateVAppLeaseSettings.xml create mode 100644 labs/vcloud-director/src/test/resources/org/admin/updateVAppLeaseSettingsSource.xml create mode 100644 labs/vcloud-director/src/test/resources/org/admin/vAppLeaseSettings.xml diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/AdminOrgAsyncClient.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/AdminOrgAsyncClient.java index c88edee6e4..c4fc90fec0 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/AdminOrgAsyncClient.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/AdminOrgAsyncClient.java @@ -18,15 +18,33 @@ */ package org.jclouds.vcloud.director.v1_5.features; +import java.net.URI; + +import javax.ws.rs.Consumes; +import javax.ws.rs.GET; +import javax.ws.rs.PUT; +import javax.ws.rs.Path; +import javax.ws.rs.Produces; + +import org.jclouds.rest.annotations.BinderParam; +import org.jclouds.rest.annotations.EndpointParam; +import org.jclouds.rest.annotations.ExceptionParser; +import org.jclouds.rest.annotations.JAXBResponseParser; import org.jclouds.rest.annotations.RequestFilters; +import org.jclouds.rest.binders.BindToXMLPayload; +import org.jclouds.vcloud.director.v1_5.VCloudDirectorMediaType; +import org.jclouds.vcloud.director.v1_5.domain.OrgVAppTemplateLeaseSettings; import org.jclouds.vcloud.director.v1_5.filters.AddVCloudAuthorizationToRequest; +import org.jclouds.vcloud.director.v1_5.functions.ThrowVCloudErrorOn4xx; + +import com.google.common.util.concurrent.ListenableFuture; /** * @see GroupClient * @author danikov */ @RequestFilters(AddVCloudAuthorizationToRequest.class) -public interface AdminOrgAsyncClient { +public interface AdminOrgAsyncClient extends OrgAsyncClient { // GET /admin/org/{id} @@ -52,12 +70,28 @@ public interface AdminOrgAsyncClient { // PUT /admin/org/{id}/settings/passwordPolicy -// GET /admin/org/{id}/settings/vAppLeaseSettings + /** + * @see AdminOrgClient#getVAppTemplateLeaseSettings(URI) + */ + @GET + @Path("/settings/vAppTemplateLeaseSettings") + @Consumes + @JAXBResponseParser + @ExceptionParser(ThrowVCloudErrorOn4xx.class) + ListenableFuture getVAppTemplateLeaseSettings( + @EndpointParam URI orgRef); + + /** + * @see AdminOrgClient#updateVAppTemplateLeaseSettings(URI, OrgVAppTemplateLeaseSettings) + */ + @PUT + @Path("/settings/vAppTemplateLeaseSettings") + @Consumes(VCloudDirectorMediaType.ORG_VAPP_TEMPLATE_LEASE_SETTINGS) + @Produces(VCloudDirectorMediaType.ORG_VAPP_TEMPLATE_LEASE_SETTINGS) + @JAXBResponseParser + @ExceptionParser(ThrowVCloudErrorOn4xx.class) + ListenableFuture updateVAppTemplateLeaseSettings( + @EndpointParam URI orgRef, + @BinderParam(BindToXMLPayload.class) OrgVAppTemplateLeaseSettings group); -// PUT /admin/org/{id}/settings/vAppLeaseSettings - -// GET /admin/org/{id}/settings/vAppTemplateLeaseSettings - -// PUT /admin/org/{id}/settings/vAppTemplateLeaseSettings - } diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/AdminOrgClient.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/AdminOrgClient.java index b584713fbf..a1bf2d399c 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/AdminOrgClient.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/AdminOrgClient.java @@ -18,9 +18,12 @@ */ package org.jclouds.vcloud.director.v1_5.features; +import java.net.URI; import java.util.concurrent.TimeUnit; import org.jclouds.concurrent.Timeout; +import org.jclouds.vcloud.director.v1_5.domain.Group; +import org.jclouds.vcloud.director.v1_5.domain.OrgVAppTemplateLeaseSettings; /** * Provides synchronous access to {@link Group} objects. @@ -29,7 +32,7 @@ import org.jclouds.concurrent.Timeout; * @author danikov */ @Timeout(duration = 180, timeUnit = TimeUnit.SECONDS) -public interface AdminOrgClient { +public interface AdminOrgClient extends OrgClient { // GET /admin/org/{id} @@ -59,8 +62,29 @@ public interface AdminOrgClient { // PUT /admin/org/{id}/settings/vAppLeaseSettings -// GET /admin/org/{id}/settings/vAppTemplateLeaseSettings + /** + * Retrieves expiration and storage policy for vApp templates in an organization. + * + *

    +    * GET /admin/org/{id}/settings/vAppTemplateLeaseSettings
    +    * 
    + * + * @param orgRef the reference for the admin org + * @return the lease settings + */ + OrgVAppTemplateLeaseSettings getVAppTemplateLeaseSettings(URI orgRef); -// PUT /admin/org/{id}/settings/vAppTemplateLeaseSettings + /** + * Updates vApp template policy settings for organization. + * + *
    +    * PUT /admin/org/{id}/settings/vAppTemplateLeaseSettings
    +    * 
    + * @param orgRef the reference for the admin org + * @param newSettings the requested updated settings + * @return the resultant settings + */ + OrgVAppTemplateLeaseSettings updateVAppTemplateLeaseSettings(URI orgRef, + OrgVAppTemplateLeaseSettings newSettings); } diff --git a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/AdminOrgClientExpectTest.java b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/AdminOrgClientExpectTest.java index e6f295ea15..0554271b2a 100644 --- a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/AdminOrgClientExpectTest.java +++ b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/AdminOrgClientExpectTest.java @@ -18,8 +18,13 @@ */ package org.jclouds.vcloud.director.v1_5.features; +import static org.testng.Assert.assertEquals; + import java.net.URI; +import org.jclouds.vcloud.director.v1_5.VCloudDirectorClient; +import org.jclouds.vcloud.director.v1_5.VCloudDirectorMediaType; +import org.jclouds.vcloud.director.v1_5.domain.OrgVAppTemplateLeaseSettings; import org.jclouds.vcloud.director.v1_5.domain.Reference; import org.jclouds.vcloud.director.v1_5.internal.BaseVCloudDirectorRestClientExpectTest; import org.testng.annotations.Test; @@ -66,7 +71,51 @@ public class AdminOrgClientExpectTest extends BaseVCloudDirectorRestClientExpect // PUT /admin/org/{id}/settings/vAppLeaseSettings -// GET /admin/org/{id}/settings/vAppTemplateLeaseSettings - -// PUT /admin/org/{id}/settings/vAppTemplateLeaseSettings + @Test(enabled = false) + public void testGetVAppTemplateLeaseSettings() { + VCloudDirectorClient client = requestsSendResponses(loginRequest, sessionResponse, + new VcloudHttpRequestPrimer() + .apiCommand("GET", "/admin/org/???/settings/vAppTemplateLeaseSettings") + .acceptAnyMedia() + .httpRequestBuilder().build(), + new VcloudHttpResponsePrimer() + .xmlFilePayload("/org/admin/vAppTemplateLeaseSettings.xml", + VCloudDirectorMediaType.ORG_VAPP_TEMPLATE_LEASE_SETTINGS) + .httpResponseBuilder().build()); + + OrgVAppTemplateLeaseSettings expected = orgVAppTemplateLeaseSettings(); + + assertEquals(client.getAdminOrgClient().getVAppTemplateLeaseSettings(orgRef.getURI()), expected); + } + + public static final OrgVAppTemplateLeaseSettings orgVAppTemplateLeaseSettings() { + return OrgVAppTemplateLeaseSettings.builder() + + .build(); + } + + @Test(enabled = false) + public void testUpdateOrgVAppTemplateLeaseSettings() { + VCloudDirectorClient client = requestsSendResponses(loginRequest, sessionResponse, + new VcloudHttpRequestPrimer() + .apiCommand("PUT", "/admin/org/???/settings/vAppTemplateLeaseSettings") + .xmlFilePayload("/org/admin/updateVAppLeaseSettingsSource.xml", + VCloudDirectorMediaType.ORG_VAPP_TEMPLATE_LEASE_SETTINGS) + .acceptMedia(VCloudDirectorMediaType.ORG_VAPP_TEMPLATE_LEASE_SETTINGS) + .httpRequestBuilder().build(), + new VcloudHttpResponsePrimer() + .xmlFilePayload("/org/admin/updateVAppLeaseSettings.xml", + VCloudDirectorMediaType.ORG_VAPP_TEMPLATE_LEASE_SETTINGS) + .httpResponseBuilder().build()); + + OrgVAppTemplateLeaseSettings expected = updateOrgVAppTemplateLeaseSettings(); + + assertEquals(client.getAdminOrgClient().updateVAppTemplateLeaseSettings(orgRef.getURI(), expected), expected); + } + + public static final OrgVAppTemplateLeaseSettings updateOrgVAppTemplateLeaseSettings() { + return orgVAppTemplateLeaseSettings().toBuilder() + + .build(); + } } diff --git a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/AdminOrgClientLiveTest.java b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/AdminOrgClientLiveTest.java index 3c6d1f77cb..b5105f4552 100644 --- a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/AdminOrgClientLiveTest.java +++ b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/AdminOrgClientLiveTest.java @@ -18,15 +18,20 @@ */ package org.jclouds.vcloud.director.v1_5.features; -import java.net.URI; - +import static org.jclouds.vcloud.director.v1_5.VCloudDirectorLiveTestConstants.REF_REQ_LIVE; +import static org.testng.Assert.assertNotNull; import org.jclouds.vcloud.director.v1_5.domain.AdminOrg; -import org.jclouds.vcloud.director.v1_5.domain.Reference; +import org.jclouds.vcloud.director.v1_5.domain.Error; +import org.jclouds.vcloud.director.v1_5.domain.Group; +import org.jclouds.vcloud.director.v1_5.domain.Checks; +import org.jclouds.vcloud.director.v1_5.domain.OrgVAppTemplateLeaseSettings; import org.jclouds.vcloud.director.v1_5.domain.ReferenceType; import org.jclouds.vcloud.director.v1_5.internal.BaseVCloudDirectorClientLiveTest; import org.testng.annotations.BeforeClass; import org.testng.annotations.Test; +import com.google.common.collect.Iterables; + /** * Tests live behavior of {@link AdminGroupClient}. * @@ -35,7 +40,7 @@ import org.testng.annotations.Test; @Test(groups = { "live", "admin", "org" }, singleThreaded = true, testName = "AdminOrgClientLiveTest") public class AdminOrgClientLiveTest extends BaseVCloudDirectorClientLiveTest { - public static final String GROUP = "admin org"; + public static final String ORG = "admin org"; /* * Convenience references to API clients. @@ -48,14 +53,14 @@ public class AdminOrgClientLiveTest extends BaseVCloudDirectorClientLiveTest { */ private ReferenceType orgRef; private AdminOrg org; + OrgVAppTemplateLeaseSettings vAppTemplateLeaseSettings; @Override @BeforeClass(inheritGroups = true) public void setupRequiredClients() { orgClient = context.getApi().getAdminOrgClient(); - orgRef = Reference.builder() - .href(URI.create("https://vcloudbeta.bluelock.com/api/admin/org/???")) - .build(); + orgRef = Iterables.getFirst(orgClient.getOrgList().getOrgs(), null).toAdminReference(endpoint); + assertNotNull(orgRef, String.format(REF_REQ_LIVE, "admin org")); } // GET /admin/org/{id} @@ -86,7 +91,46 @@ public class AdminOrgClientLiveTest extends BaseVCloudDirectorClientLiveTest { // PUT /admin/org/{id}/settings/vAppLeaseSettings -// GET /admin/org/{id}/settings/vAppTemplateLeaseSettings - -// PUT /admin/org/{id}/settings/vAppTemplateLeaseSettings + @Test(testName = "GET /admin/org/{id}/settings/vAppTemplateLeaseSettings") + public void testGetVAppTemplateLeaseSettings() { + vAppTemplateLeaseSettings = orgClient.getVAppTemplateLeaseSettings(orgRef.getURI()); + + Checks.checkVAppTemplateLeaseSettings(vAppTemplateLeaseSettings); + } + + @Test(testName = "PUT /admin/org/{id}/settings/vAppTemplateLeaseSettings", + dependsOnMethods = { "testGetVAppTemplateLeaseSettings" }, enabled = false) // FIXME: fails with 403 forbidden + public void testUpdateVAppTemplateLeaseSettings() { + boolean deleteOnStorageLeaseExpiration = vAppTemplateLeaseSettings.deleteOnStorageLeaseExpiration(); + Integer storageLeaseSeconds = vAppTemplateLeaseSettings.getStorageLeaseSeconds(); + + try { + vAppTemplateLeaseSettings = vAppTemplateLeaseSettings.toBuilder() + .deleteOnStorageLeaseExpiration(!deleteOnStorageLeaseExpiration) + .storageLeaseSeconds(storageLeaseSeconds+1) + .build(); + + vAppTemplateLeaseSettings = orgClient.updateVAppTemplateLeaseSettings( + orgRef.getURI(), vAppTemplateLeaseSettings); + + assertTrue(equal(vAppTemplateLeaseSettings.deleteOnStorageLeaseExpiration(), !deleteOnStorageLeaseExpiration), + String.format(OBJ_FIELD_UPDATABLE, + "vAppTemplateLeaseSettings", "deleteOnStorageLeaseExpiration")); + assertTrue(equal(vAppTemplateLeaseSettings.getStorageLeaseSeconds(), storageLeaseSeconds+1), + String.format(OBJ_FIELD_UPDATABLE, + "vAppTemplateLeaseSettings", "storageLeaseSeconds")); + + //TODO negative tests? + + Checks.checkVAppTemplateLeaseSettings(vAppTemplateLeaseSettings); + } finally { + vAppTemplateLeaseSettings = vAppTemplateLeaseSettings.toBuilder() + .deleteOnStorageLeaseExpiration(deleteOnStorageLeaseExpiration) + .storageLeaseSeconds(storageLeaseSeconds) + .build(); + + vAppTemplateLeaseSettings = orgClient.updateVAppTemplateLeaseSettings( + orgRef.getURI(), vAppTemplateLeaseSettings); + } + } } diff --git a/labs/vcloud-director/src/test/resources/org/admin/updateVAppLeaseSettings.xml b/labs/vcloud-director/src/test/resources/org/admin/updateVAppLeaseSettings.xml new file mode 100644 index 0000000000..e69de29bb2 diff --git a/labs/vcloud-director/src/test/resources/org/admin/updateVAppLeaseSettingsSource.xml b/labs/vcloud-director/src/test/resources/org/admin/updateVAppLeaseSettingsSource.xml new file mode 100644 index 0000000000..e69de29bb2 diff --git a/labs/vcloud-director/src/test/resources/org/admin/vAppLeaseSettings.xml b/labs/vcloud-director/src/test/resources/org/admin/vAppLeaseSettings.xml new file mode 100644 index 0000000000..e69de29bb2 From d4843a5c3187eaafe7989e329fd5297f869df257 Mon Sep 17 00:00:00 2001 From: danikov Date: Sun, 11 Mar 2012 13:00:17 +0000 Subject: [PATCH 13/20] get/put vAppLeaseSettings --- .../v1_5/VCloudDirectorMediaType.java | 7 ++- .../v1_5/domain/OrgLeaseSettings.java | 4 +- .../v1_5/features/AdminOrgAsyncClient.java | 25 +++++++++ .../v1_5/features/AdminOrgClient.java | 26 ++++++++- .../features/AdminOrgClientExpectTest.java | 51 ++++++++++++++++- .../v1_5/features/AdminOrgClientLiveTest.java | 55 +++++++++++++++++-- 6 files changed, 155 insertions(+), 13 deletions(-) diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/VCloudDirectorMediaType.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/VCloudDirectorMediaType.java index 3ed614c2c0..05ae7f2421 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/VCloudDirectorMediaType.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/VCloudDirectorMediaType.java @@ -137,6 +137,8 @@ public class VCloudDirectorMediaType { public static final String ORG_VAPP_TEMPLATE_LEASE_SETTINGS = "application/vnd.vmware.admin.vAppTemplateLeaseSettings+xml"; + public static final String ORG_LEASE_SETTINGS = "application/vnd.vmware.admin.vAppLeaseSettings+xml"; + /** * * All acceptable media types. @@ -155,8 +157,7 @@ public class VCloudDirectorMediaType { CONTROL_ACCESS, VAPP_TEMPLATE, CUSTOMIZATION_SECTION, GUEST_CUSTOMIZATION_SECTION, NETWORK_SECTION, NETWORK_CONFIG_SECTION, NETWORK_CONNECTION_SECTION, CLONE_MEDIA_PARAMS, LEASE_SETTINGS_SECTION, RELOCATE_TEMPLATE, ENVELOPE, - PUBLISH_CATALOG_PARAMS, GROUP, ORG_VAPP_TEMPLATE_LEASE_SETTINGS + PUBLISH_CATALOG_PARAMS, GROUP, ORG_VAPP_TEMPLATE_LEASE_SETTINGS, + ORG_LEASE_SETTINGS ); - - } diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/OrgLeaseSettings.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/OrgLeaseSettings.java index 26e9ace80e..b6722e8d5d 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/OrgLeaseSettings.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/OrgLeaseSettings.java @@ -27,6 +27,7 @@ import java.util.Set; import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlRootElement; import javax.xml.bind.annotation.XmlType; import com.google.common.base.Objects; @@ -60,7 +61,8 @@ import com.google.common.base.Objects.ToStringHelper; * */ @XmlAccessorType(XmlAccessType.FIELD) -@XmlType(name = "OrgLeaseSettings", propOrder = { +@XmlRootElement(name = "VAppLeaseSettings") +@XmlType(propOrder = { "deleteOnStorageLeaseExpiration", "deploymentLeaseSeconds", "storageLeaseSeconds" diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/AdminOrgAsyncClient.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/AdminOrgAsyncClient.java index c4fc90fec0..74c38465b2 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/AdminOrgAsyncClient.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/AdminOrgAsyncClient.java @@ -33,6 +33,7 @@ import org.jclouds.rest.annotations.JAXBResponseParser; import org.jclouds.rest.annotations.RequestFilters; import org.jclouds.rest.binders.BindToXMLPayload; import org.jclouds.vcloud.director.v1_5.VCloudDirectorMediaType; +import org.jclouds.vcloud.director.v1_5.domain.OrgLeaseSettings; import org.jclouds.vcloud.director.v1_5.domain.OrgVAppTemplateLeaseSettings; import org.jclouds.vcloud.director.v1_5.filters.AddVCloudAuthorizationToRequest; import org.jclouds.vcloud.director.v1_5.functions.ThrowVCloudErrorOn4xx; @@ -69,6 +70,30 @@ public interface AdminOrgAsyncClient extends OrgAsyncClient { // GET /admin/org/{id}/settings/passwordPolicy // PUT /admin/org/{id}/settings/passwordPolicy + + /** + * @see AdminOrgClient#getVAppLeaseSettings(URI) + */ + @GET + @Path("/settings/vAppLeaseSettings") + @Consumes + @JAXBResponseParser + @ExceptionParser(ThrowVCloudErrorOn4xx.class) + ListenableFuture getVAppLeaseSettings( + @EndpointParam URI orgRef); + + /** + * @see AdminOrgClient#updateVAppLeaseSettings(URI, OrgVAppLeaseSettings) + */ + @PUT + @Path("/settings/vAppLeaseSettings") + @Consumes(VCloudDirectorMediaType.ORG_LEASE_SETTINGS) + @Produces(VCloudDirectorMediaType.ORG_LEASE_SETTINGS) + @JAXBResponseParser + @ExceptionParser(ThrowVCloudErrorOn4xx.class) + ListenableFuture updateVAppLeaseSettings( + @EndpointParam URI orgRef, + @BinderParam(BindToXMLPayload.class) OrgLeaseSettings group); /** * @see AdminOrgClient#getVAppTemplateLeaseSettings(URI) diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/AdminOrgClient.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/AdminOrgClient.java index a1bf2d399c..fdb3f962da 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/AdminOrgClient.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/AdminOrgClient.java @@ -23,6 +23,7 @@ import java.util.concurrent.TimeUnit; import org.jclouds.concurrent.Timeout; import org.jclouds.vcloud.director.v1_5.domain.Group; +import org.jclouds.vcloud.director.v1_5.domain.OrgLeaseSettings; import org.jclouds.vcloud.director.v1_5.domain.OrgVAppTemplateLeaseSettings; /** @@ -58,9 +59,30 @@ public interface AdminOrgClient extends OrgClient { // PUT /admin/org/{id}/settings/passwordPolicy -// GET /admin/org/{id}/settings/vAppLeaseSettings + /** + * Gets organization resource cleanup settings on the level of vApp. + * + *
    +    * GET /admin/org/{id}/settings/vAppLeaseSettings
    +    * 
    + * + * @param orgRef the reference for the admin org + * @return the lease settings + */ + OrgLeaseSettings getVAppLeaseSettings(URI orgRef); -// PUT /admin/org/{id}/settings/vAppLeaseSettings + /** + * Updates organization resource cleanup settings on the level of vApp. + * + *
    +    * PUT /admin/org/{id}/settings/vAppLeaseSettings
    +    * 
    + * @param orgRef the reference for the admin org + * @param newSettings the requested updated settings + * @return the resultant settings + */ + OrgLeaseSettings updateVAppLeaseSettings(URI orgRef, + OrgLeaseSettings newSettings); /** * Retrieves expiration and storage policy for vApp templates in an organization. diff --git a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/AdminOrgClientExpectTest.java b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/AdminOrgClientExpectTest.java index 0554271b2a..44b37023d0 100644 --- a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/AdminOrgClientExpectTest.java +++ b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/AdminOrgClientExpectTest.java @@ -24,6 +24,7 @@ import java.net.URI; import org.jclouds.vcloud.director.v1_5.VCloudDirectorClient; import org.jclouds.vcloud.director.v1_5.VCloudDirectorMediaType; +import org.jclouds.vcloud.director.v1_5.domain.OrgLeaseSettings; import org.jclouds.vcloud.director.v1_5.domain.OrgVAppTemplateLeaseSettings; import org.jclouds.vcloud.director.v1_5.domain.Reference; import org.jclouds.vcloud.director.v1_5.internal.BaseVCloudDirectorRestClientExpectTest; @@ -67,9 +68,53 @@ public class AdminOrgClientExpectTest extends BaseVCloudDirectorRestClientExpect // PUT /admin/org/{id}/settings/passwordPolicy -// GET /admin/org/{id}/settings/vAppLeaseSettings - -// PUT /admin/org/{id}/settings/vAppLeaseSettings + @Test(enabled = false) + public void testGetVAppLeaseSettings() { + VCloudDirectorClient client = requestsSendResponses(loginRequest, sessionResponse, + new VcloudHttpRequestPrimer() + .apiCommand("GET", "/admin/org/???/settings/vAppLeaseSettings") + .acceptAnyMedia() + .httpRequestBuilder().build(), + new VcloudHttpResponsePrimer() + .xmlFilePayload("/org/admin/vAppLeaseSettings.xml", + VCloudDirectorMediaType.ORG_LEASE_SETTINGS) + .httpResponseBuilder().build()); + + OrgLeaseSettings expected = orgVAppLeaseSettings(); + + assertEquals(client.getAdminOrgClient().getVAppLeaseSettings(orgRef.getURI()), expected); + } + + public static final OrgLeaseSettings orgVAppLeaseSettings() { + return OrgLeaseSettings.builder() + + .build(); + } + + @Test(enabled = false) + public void testUpdateOrgVAppLeaseSettings() { + VCloudDirectorClient client = requestsSendResponses(loginRequest, sessionResponse, + new VcloudHttpRequestPrimer() + .apiCommand("PUT", "/admin/org/???/settings/vAppLeaseSettings") + .xmlFilePayload("/org/admin/updateVAppLeaseSettingsSource.xml", + VCloudDirectorMediaType.ORG_LEASE_SETTINGS) + .acceptMedia(VCloudDirectorMediaType.ORG_LEASE_SETTINGS) + .httpRequestBuilder().build(), + new VcloudHttpResponsePrimer() + .xmlFilePayload("/org/admin/updateVAppLeaseSettings.xml", + VCloudDirectorMediaType.ORG_LEASE_SETTINGS) + .httpResponseBuilder().build()); + + OrgLeaseSettings expected = updateOrgVAppLeaseSettings(); + + assertEquals(client.getAdminOrgClient().updateVAppLeaseSettings(orgRef.getURI(), expected), expected); + } + + public static final OrgLeaseSettings updateOrgVAppLeaseSettings() { + return orgVAppLeaseSettings().toBuilder() + + .build(); + } @Test(enabled = false) public void testGetVAppTemplateLeaseSettings() { diff --git a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/AdminOrgClientLiveTest.java b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/AdminOrgClientLiveTest.java index b5105f4552..7e81d09ec6 100644 --- a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/AdminOrgClientLiveTest.java +++ b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/AdminOrgClientLiveTest.java @@ -24,6 +24,7 @@ import org.jclouds.vcloud.director.v1_5.domain.AdminOrg; import org.jclouds.vcloud.director.v1_5.domain.Error; import org.jclouds.vcloud.director.v1_5.domain.Group; import org.jclouds.vcloud.director.v1_5.domain.Checks; +import org.jclouds.vcloud.director.v1_5.domain.OrgLeaseSettings; import org.jclouds.vcloud.director.v1_5.domain.OrgVAppTemplateLeaseSettings; import org.jclouds.vcloud.director.v1_5.domain.ReferenceType; import org.jclouds.vcloud.director.v1_5.internal.BaseVCloudDirectorClientLiveTest; @@ -54,6 +55,7 @@ public class AdminOrgClientLiveTest extends BaseVCloudDirectorClientLiveTest { private ReferenceType orgRef; private AdminOrg org; OrgVAppTemplateLeaseSettings vAppTemplateLeaseSettings; + OrgLeaseSettings vAppLeaseSettings; @Override @BeforeClass(inheritGroups = true) @@ -86,10 +88,55 @@ public class AdminOrgClientLiveTest extends BaseVCloudDirectorClientLiveTest { // GET /admin/org/{id}/settings/passwordPolicy // PUT /admin/org/{id}/settings/passwordPolicy - -// GET /admin/org/{id}/settings/vAppLeaseSettings - -// PUT /admin/org/{id}/settings/vAppLeaseSettings + + @Test(testName = "GET /admin/org/{id}/settings/vAppLeaseSettings") + public void testGetVAppLeaseSettings() { + vAppLeaseSettings = orgClient.getVAppLeaseSettings(orgRef.getURI()); + + Checks.checkVAppLeaseSettings(vAppLeaseSettings); + } + + @Test(testName = "PUT /admin/org/{id}/settings/vAppLeaseSettings", + dependsOnMethods = { "testGetVAppLeaseSettings" }, enabled = false) // FIXME: fails with 403 forbidden + public void testUpdateVAppLeaseSettings() { + boolean deleteOnStorageLeaseExpiration = vAppLeaseSettings.deleteOnStorageLeaseExpiration(); + Integer storageLeaseSeconds = vAppLeaseSettings.getStorageLeaseSeconds(); + Integer deploymentLeaseSeconds = vAppLeaseSettings.getDeploymentLeaseSeconds(); + + try { + vAppLeaseSettings = vAppLeaseSettings.toBuilder() + .deleteOnStorageLeaseExpiration(!deleteOnStorageLeaseExpiration) + .storageLeaseSeconds(storageLeaseSeconds+1) + .deploymentLeaseSeconds(deploymentLeaseSeconds+1) + .build(); + + vAppLeaseSettings = orgClient.updateVAppLeaseSettings( + orgRef.getURI(), vAppLeaseSettings); + + assertTrue(equal(vAppLeaseSettings.deleteOnStorageLeaseExpiration(), !deleteOnStorageLeaseExpiration), + String.format(OBJ_FIELD_UPDATABLE, + "vAppLeaseSettings", "deleteOnStorageLeaseExpiration")); + assertTrue(equal(vAppLeaseSettings.getStorageLeaseSeconds(), storageLeaseSeconds+1), + String.format(OBJ_FIELD_UPDATABLE, + "vAppLeaseSettings", "storageLeaseSeconds")); + assertTrue(equal(vAppLeaseSettings.getDeploymentLeaseSeconds(), deploymentLeaseSeconds+1), + String.format(OBJ_FIELD_UPDATABLE, + "vAppLeaseSettings", "deploymentLeaseSeconds")); + + //TODO negative tests? + + Checks.checkVAppLeaseSettings(vAppLeaseSettings); + } finally { + vAppLeaseSettings = vAppLeaseSettings.toBuilder() + .deleteOnStorageLeaseExpiration(deleteOnStorageLeaseExpiration) + .storageLeaseSeconds(storageLeaseSeconds) + .deploymentLeaseSeconds(deploymentLeaseSeconds) + .build(); + + vAppLeaseSettings = orgClient.updateVAppLeaseSettings( + orgRef.getURI(), vAppLeaseSettings); + } + } @Test(testName = "GET /admin/org/{id}/settings/vAppTemplateLeaseSettings") public void testGetVAppTemplateLeaseSettings() { From 969141a7ebfc3d0f43c4847da10832888e27a4f8 Mon Sep 17 00:00:00 2001 From: danikov Date: Sun, 11 Mar 2012 13:25:25 +0000 Subject: [PATCH 14/20] get/put passwordPolicy --- .../v1_5/VCloudDirectorMediaType.java | 4 +- .../v1_5/features/AdminOrgAsyncClient.java | 31 +++++++-- .../v1_5/features/AdminOrgClient.java | 26 ++++++- .../features/AdminOrgClientExpectTest.java | 67 +++++++++++++++++-- .../v1_5/features/AdminOrgClientLiveTest.java | 55 +++++++++++++-- .../resources/org/admin/passwordPolicy.xml | 7 ++ .../org/admin/updatePasswordPolicy.xml | 7 ++ .../org/admin/updatePasswordPolicySource.xml | 7 ++ 8 files changed, 187 insertions(+), 17 deletions(-) create mode 100644 labs/vcloud-director/src/test/resources/org/admin/passwordPolicy.xml create mode 100644 labs/vcloud-director/src/test/resources/org/admin/updatePasswordPolicy.xml create mode 100644 labs/vcloud-director/src/test/resources/org/admin/updatePasswordPolicySource.xml diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/VCloudDirectorMediaType.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/VCloudDirectorMediaType.java index 05ae7f2421..64b187d015 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/VCloudDirectorMediaType.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/VCloudDirectorMediaType.java @@ -139,6 +139,8 @@ public class VCloudDirectorMediaType { public static final String ORG_LEASE_SETTINGS = "application/vnd.vmware.admin.vAppLeaseSettings+xml"; + public static final String ORG_PASSWORD_POLICY_SETTINGS = "application/vnd.vmware.admin.organizationPasswordPolicySettings+xml"; + /** * * All acceptable media types. @@ -158,6 +160,6 @@ public class VCloudDirectorMediaType { NETWORK_SECTION, NETWORK_CONFIG_SECTION, NETWORK_CONNECTION_SECTION, CLONE_MEDIA_PARAMS, LEASE_SETTINGS_SECTION, RELOCATE_TEMPLATE, ENVELOPE, PUBLISH_CATALOG_PARAMS, GROUP, ORG_VAPP_TEMPLATE_LEASE_SETTINGS, - ORG_LEASE_SETTINGS + ORG_LEASE_SETTINGS, ORG_PASSWORD_POLICY_SETTINGS ); } diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/AdminOrgAsyncClient.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/AdminOrgAsyncClient.java index 74c38465b2..063c23f639 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/AdminOrgAsyncClient.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/AdminOrgAsyncClient.java @@ -34,6 +34,7 @@ import org.jclouds.rest.annotations.RequestFilters; import org.jclouds.rest.binders.BindToXMLPayload; import org.jclouds.vcloud.director.v1_5.VCloudDirectorMediaType; import org.jclouds.vcloud.director.v1_5.domain.OrgLeaseSettings; +import org.jclouds.vcloud.director.v1_5.domain.OrgPasswordPolicySettings; import org.jclouds.vcloud.director.v1_5.domain.OrgVAppTemplateLeaseSettings; import org.jclouds.vcloud.director.v1_5.filters.AddVCloudAuthorizationToRequest; import org.jclouds.vcloud.director.v1_5.functions.ThrowVCloudErrorOn4xx; @@ -67,9 +68,29 @@ public interface AdminOrgAsyncClient extends OrgAsyncClient { // GET /admin/org/{id}/settings/ldap -// GET /admin/org/{id}/settings/passwordPolicy - -// PUT /admin/org/{id}/settings/passwordPolicy + /** + * @see AdminOrgClient#getPasswordPolicy(URI) + */ + @GET + @Path("/settings/passwordPolicy") + @Consumes + @JAXBResponseParser + @ExceptionParser(ThrowVCloudErrorOn4xx.class) + ListenableFuture getPasswordPolicy( + @EndpointParam URI orgRef); + + /** + * @see AdminOrgClient#updatePasswordPolicy(URI, OrgPasswordPolicySettings) + */ + @PUT + @Path("/settings/passwordPolicy") + @Consumes(VCloudDirectorMediaType.ORG_PASSWORD_POLICY_SETTINGS) + @Produces(VCloudDirectorMediaType.ORG_PASSWORD_POLICY_SETTINGS) + @JAXBResponseParser + @ExceptionParser(ThrowVCloudErrorOn4xx.class) + ListenableFuture updatePasswordPolicy( + @EndpointParam URI orgRef, + @BinderParam(BindToXMLPayload.class) OrgPasswordPolicySettings settings); /** * @see AdminOrgClient#getVAppLeaseSettings(URI) @@ -93,7 +114,7 @@ public interface AdminOrgAsyncClient extends OrgAsyncClient { @ExceptionParser(ThrowVCloudErrorOn4xx.class) ListenableFuture updateVAppLeaseSettings( @EndpointParam URI orgRef, - @BinderParam(BindToXMLPayload.class) OrgLeaseSettings group); + @BinderParam(BindToXMLPayload.class) OrgLeaseSettings settings); /** * @see AdminOrgClient#getVAppTemplateLeaseSettings(URI) @@ -117,6 +138,6 @@ public interface AdminOrgAsyncClient extends OrgAsyncClient { @ExceptionParser(ThrowVCloudErrorOn4xx.class) ListenableFuture updateVAppTemplateLeaseSettings( @EndpointParam URI orgRef, - @BinderParam(BindToXMLPayload.class) OrgVAppTemplateLeaseSettings group); + @BinderParam(BindToXMLPayload.class) OrgVAppTemplateLeaseSettings settings); } diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/AdminOrgClient.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/AdminOrgClient.java index fdb3f962da..2b86054340 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/AdminOrgClient.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/AdminOrgClient.java @@ -24,6 +24,7 @@ import java.util.concurrent.TimeUnit; import org.jclouds.concurrent.Timeout; import org.jclouds.vcloud.director.v1_5.domain.Group; import org.jclouds.vcloud.director.v1_5.domain.OrgLeaseSettings; +import org.jclouds.vcloud.director.v1_5.domain.OrgPasswordPolicySettings; import org.jclouds.vcloud.director.v1_5.domain.OrgVAppTemplateLeaseSettings; /** @@ -55,9 +56,30 @@ public interface AdminOrgClient extends OrgClient { // GET /admin/org/{id}/settings/ldap -// GET /admin/org/{id}/settings/passwordPolicy + /** + * Retrieves password policy settings for an organization. + * + *
    +    * GET /admin/org/{id}/settings/passwordPolicy
    +    * 
    + * + * @param orgRef the reference for the admin org + * @return the lease settings + */ + OrgPasswordPolicySettings getPasswordPolicy(URI orgRef); -// PUT /admin/org/{id}/settings/passwordPolicy + /** + * Updates password policy settings for organization. + * + *
    +    * PUT /admin/org/{id}/settings/passwordPolicy
    +    * 
    + * @param orgRef the reference for the admin org + * @param newSettings the requested updated settings + * @return the resultant settings + */ + OrgPasswordPolicySettings updatePasswordPolicy(URI orgRef, + OrgPasswordPolicySettings newSettings); /** * Gets organization resource cleanup settings on the level of vApp. diff --git a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/AdminOrgClientExpectTest.java b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/AdminOrgClientExpectTest.java index 44b37023d0..b177892512 100644 --- a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/AdminOrgClientExpectTest.java +++ b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/AdminOrgClientExpectTest.java @@ -24,7 +24,9 @@ import java.net.URI; import org.jclouds.vcloud.director.v1_5.VCloudDirectorClient; import org.jclouds.vcloud.director.v1_5.VCloudDirectorMediaType; +import org.jclouds.vcloud.director.v1_5.domain.Link; import org.jclouds.vcloud.director.v1_5.domain.OrgLeaseSettings; +import org.jclouds.vcloud.director.v1_5.domain.OrgPasswordPolicySettings; import org.jclouds.vcloud.director.v1_5.domain.OrgVAppTemplateLeaseSettings; import org.jclouds.vcloud.director.v1_5.domain.Reference; import org.jclouds.vcloud.director.v1_5.internal.BaseVCloudDirectorRestClientExpectTest; @@ -39,9 +41,9 @@ import org.testng.annotations.Test; public class AdminOrgClientExpectTest extends BaseVCloudDirectorRestClientExpectTest { private Reference orgRef = Reference.builder() - .type("application/vnd.vmware.admin.???+xml") +// .type("application/vnd.vmware.admin.???+xml") .name("???") - .href(URI.create(endpoint + "/admin/org/???")) + .href(URI.create(endpoint + "/admin/org/6f312e42-cd2b-488d-a2bb-97519cd57ed0")) .build(); // GET /admin/org/{id} @@ -64,9 +66,64 @@ public class AdminOrgClientExpectTest extends BaseVCloudDirectorRestClientExpect // GET /admin/org/{id}/settings/ldap -// GET /admin/org/{id}/settings/passwordPolicy - -// PUT /admin/org/{id}/settings/passwordPolicy + @Test + public void testGetPasswordPolicy() { + VCloudDirectorClient client = requestsSendResponses(loginRequest, sessionResponse, + new VcloudHttpRequestPrimer() + .apiCommand("GET", "/admin/org/6f312e42-cd2b-488d-a2bb-97519cd57ed0/settings/passwordPolicy") + .acceptAnyMedia() + .httpRequestBuilder().build(), + new VcloudHttpResponsePrimer() + .xmlFilePayload("/org/admin/passwordPolicy.xml", + VCloudDirectorMediaType.ORG_PASSWORD_POLICY_SETTINGS) + .httpResponseBuilder().build()); + + OrgPasswordPolicySettings expected = orgPasswordPolicy(); + + assertEquals(client.getAdminOrgClient().getPasswordPolicy(orgRef.getURI()), expected); + } + + public static final OrgPasswordPolicySettings orgPasswordPolicy() { + return OrgPasswordPolicySettings.builder() + .type("application/vnd.vmware.admin.organizationPasswordPolicySettings+xml") + .link(Link.builder() + .rel("edit") + .type("application/vnd.vmware.admin.organizationPasswordPolicySettings+xml") + .href(URI.create("https://vcloudbeta.bluelock.com/api/admin/org/6f312e42-cd2b-488d-a2bb-97519cd57ed0/settings/passwordPolicy")) + .build()) + .href(URI.create("https://vcloudbeta.bluelock.com/api/admin/org/6f312e42-cd2b-488d-a2bb-97519cd57ed0/settings/passwordPolicy")) + .accountLockoutEnabled(false) + .invalidLoginsBeforeLockout(5) + .accountLockoutIntervalMinutes(10) + .build(); + } + + @Test + public void testUpdateOrgPasswordPolicy() { + VCloudDirectorClient client = requestsSendResponses(loginRequest, sessionResponse, + new VcloudHttpRequestPrimer() + .apiCommand("PUT", "/admin/org/???/settings/passwordPolicy") + .xmlFilePayload("/org/admin/updatePasswordPolicySource.xml", + VCloudDirectorMediaType.ORG_PASSWORD_POLICY_SETTINGS) + .acceptMedia(VCloudDirectorMediaType.ORG_PASSWORD_POLICY_SETTINGS) + .httpRequestBuilder().build(), + new VcloudHttpResponsePrimer() + .xmlFilePayload("/org/admin/updatePasswordPolicy.xml", + VCloudDirectorMediaType.ORG_PASSWORD_POLICY_SETTINGS) + .httpResponseBuilder().build()); + + OrgPasswordPolicySettings expected = updateOrgPasswordPolicy(); + + assertEquals(client.getAdminOrgClient().updatePasswordPolicy(orgRef.getURI(), expected), expected); + } + + public static final OrgPasswordPolicySettings updateOrgPasswordPolicy() { + return orgPasswordPolicy().toBuilder() + .accountLockoutEnabled(true) + .invalidLoginsBeforeLockout(6) + .accountLockoutIntervalMinutes(11) + .build(); + } @Test(enabled = false) public void testGetVAppLeaseSettings() { diff --git a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/AdminOrgClientLiveTest.java b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/AdminOrgClientLiveTest.java index 7e81d09ec6..bcb7913871 100644 --- a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/AdminOrgClientLiveTest.java +++ b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/AdminOrgClientLiveTest.java @@ -25,6 +25,7 @@ import org.jclouds.vcloud.director.v1_5.domain.Error; import org.jclouds.vcloud.director.v1_5.domain.Group; import org.jclouds.vcloud.director.v1_5.domain.Checks; import org.jclouds.vcloud.director.v1_5.domain.OrgLeaseSettings; +import org.jclouds.vcloud.director.v1_5.domain.OrgPasswordPolicySettings; import org.jclouds.vcloud.director.v1_5.domain.OrgVAppTemplateLeaseSettings; import org.jclouds.vcloud.director.v1_5.domain.ReferenceType; import org.jclouds.vcloud.director.v1_5.internal.BaseVCloudDirectorClientLiveTest; @@ -54,8 +55,9 @@ public class AdminOrgClientLiveTest extends BaseVCloudDirectorClientLiveTest { */ private ReferenceType orgRef; private AdminOrg org; - OrgVAppTemplateLeaseSettings vAppTemplateLeaseSettings; + OrgPasswordPolicySettings passwordPolicy; OrgLeaseSettings vAppLeaseSettings; + OrgVAppTemplateLeaseSettings vAppTemplateLeaseSettings; @Override @BeforeClass(inheritGroups = true) @@ -85,9 +87,54 @@ public class AdminOrgClientLiveTest extends BaseVCloudDirectorClientLiveTest { // GET /admin/org/{id}/settings/ldap -// GET /admin/org/{id}/settings/passwordPolicy - -// PUT /admin/org/{id}/settings/passwordPolicy + @Test(testName = "GET /admin/org/{id}/settings/passwordPolicy") + public void testGetPasswordPolicy() { + passwordPolicy = orgClient.getPasswordPolicy(orgRef.getURI()); + + Checks.checkPasswordPolicySettings(passwordPolicy); + } + + @Test(testName = "PUT /admin/org/{id}/settings/passwordPolicy", + dependsOnMethods = { "testGetPasswordPolicy" }) + public void testUpdatePasswordPolicy() { + boolean accountLockoutEnabled = passwordPolicy.isAccountLockoutEnabled(); + Integer invalidLoginsBeforeLockout = passwordPolicy.getInvalidLoginsBeforeLockout(); + Integer accountLockoutIntervalMinutes = passwordPolicy.getAccountLockoutIntervalMinutes(); + + try { + passwordPolicy = passwordPolicy.toBuilder() + .accountLockoutEnabled(!accountLockoutEnabled) + .invalidLoginsBeforeLockout(invalidLoginsBeforeLockout+1) + .accountLockoutIntervalMinutes(accountLockoutIntervalMinutes+1) + .build(); + + passwordPolicy = orgClient.updatePasswordPolicy( + orgRef.getURI(), passwordPolicy); + + assertTrue(equal(passwordPolicy.isAccountLockoutEnabled(), !accountLockoutEnabled), + String.format(OBJ_FIELD_UPDATABLE, + "PasswordPolicySettings", "deleteOnStorageLeaseExpiration")); + assertTrue(equal(passwordPolicy.getInvalidLoginsBeforeLockout(), invalidLoginsBeforeLockout+1), + String.format(OBJ_FIELD_UPDATABLE, + "PasswordPolicySettings", "storageLeaseSeconds")); + assertTrue(equal(passwordPolicy.getAccountLockoutIntervalMinutes(), accountLockoutIntervalMinutes+1), + String.format(OBJ_FIELD_UPDATABLE, + "PasswordPolicySettings", "deploymentLeaseSeconds")); + + //TODO negative tests? + + Checks.checkPasswordPolicySettings(passwordPolicy); + } finally { + passwordPolicy = passwordPolicy.toBuilder() + .accountLockoutEnabled(accountLockoutEnabled) + .invalidLoginsBeforeLockout(invalidLoginsBeforeLockout) + .accountLockoutIntervalMinutes(accountLockoutIntervalMinutes) + .build(); + + passwordPolicy = orgClient.updatePasswordPolicy( + orgRef.getURI(), passwordPolicy); + } + } @Test(testName = "GET /admin/org/{id}/settings/vAppLeaseSettings") public void testGetVAppLeaseSettings() { diff --git a/labs/vcloud-director/src/test/resources/org/admin/passwordPolicy.xml b/labs/vcloud-director/src/test/resources/org/admin/passwordPolicy.xml new file mode 100644 index 0000000000..e48f20fbfd --- /dev/null +++ b/labs/vcloud-director/src/test/resources/org/admin/passwordPolicy.xml @@ -0,0 +1,7 @@ + + + + false + 5 + 10 + \ No newline at end of file diff --git a/labs/vcloud-director/src/test/resources/org/admin/updatePasswordPolicy.xml b/labs/vcloud-director/src/test/resources/org/admin/updatePasswordPolicy.xml new file mode 100644 index 0000000000..da245c8361 --- /dev/null +++ b/labs/vcloud-director/src/test/resources/org/admin/updatePasswordPolicy.xml @@ -0,0 +1,7 @@ + + + + true + 6 + 11 + \ No newline at end of file diff --git a/labs/vcloud-director/src/test/resources/org/admin/updatePasswordPolicySource.xml b/labs/vcloud-director/src/test/resources/org/admin/updatePasswordPolicySource.xml new file mode 100644 index 0000000000..706ac57a85 --- /dev/null +++ b/labs/vcloud-director/src/test/resources/org/admin/updatePasswordPolicySource.xml @@ -0,0 +1,7 @@ + + + + true + 6 + 11 + \ No newline at end of file From 709c7bff63e80fc1176bf8b8fe86b239a0e6fe05 Mon Sep 17 00:00:00 2001 From: danikov Date: Sun, 11 Mar 2012 13:40:30 +0000 Subject: [PATCH 15/20] get ldapSettings --- .../v1_5/VCloudDirectorMediaType.java | 4 +- .../v1_5/domain/CustomOrgLdapSettings.java | 2 +- .../director/v1_5/domain/OrgLdapSettings.java | 42 ++++++++++--------- .../v1_5/features/AdminOrgAsyncClient.java | 13 +++++- .../v1_5/features/AdminOrgClient.java | 13 ++++++ .../vcloud/director/v1_5/domain/Checks.java | 6 +-- .../features/AdminOrgClientExpectTest.java | 26 +++++++++++- .../v1_5/features/AdminOrgClientLiveTest.java | 8 +++- .../test/resources/org/admin/ldapSettings.xml | 4 ++ 9 files changed, 89 insertions(+), 29 deletions(-) create mode 100644 labs/vcloud-director/src/test/resources/org/admin/ldapSettings.xml diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/VCloudDirectorMediaType.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/VCloudDirectorMediaType.java index 64b187d015..84ac301472 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/VCloudDirectorMediaType.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/VCloudDirectorMediaType.java @@ -141,6 +141,8 @@ public class VCloudDirectorMediaType { public static final String ORG_PASSWORD_POLICY_SETTINGS = "application/vnd.vmware.admin.organizationPasswordPolicySettings+xml"; + public static final String ORG_LDAP_SETTINGS = "application/vnd.vmware.admin.organizationLdapSettings+xml"; + /** * * All acceptable media types. @@ -160,6 +162,6 @@ public class VCloudDirectorMediaType { NETWORK_SECTION, NETWORK_CONFIG_SECTION, NETWORK_CONNECTION_SECTION, CLONE_MEDIA_PARAMS, LEASE_SETTINGS_SECTION, RELOCATE_TEMPLATE, ENVELOPE, PUBLISH_CATALOG_PARAMS, GROUP, ORG_VAPP_TEMPLATE_LEASE_SETTINGS, - ORG_LEASE_SETTINGS, ORG_PASSWORD_POLICY_SETTINGS + ORG_LEASE_SETTINGS, ORG_PASSWORD_POLICY_SETTINGS, ORG_LDAP_SETTINGS ); } diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/CustomOrgLdapSettings.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/CustomOrgLdapSettings.java index 47a8f13782..aa3b75d18e 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/CustomOrgLdapSettings.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/CustomOrgLdapSettings.java @@ -110,7 +110,7 @@ public class CustomOrgLdapSettings { public static final String OPEN_LDAP = "OPEN_LDAP"; /** - * All acceptable {@link OrgLdapSettings#getOrgLdapMode()} values. + * All acceptable {@link OrgLdapSettings#getLdapMode()} values. *

    * This list must be updated whenever a new mode is added. */ diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/OrgLdapSettings.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/OrgLdapSettings.java index fa5eca660c..e239eba6df 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/OrgLdapSettings.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/OrgLdapSettings.java @@ -29,6 +29,7 @@ import java.util.Set; import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlRootElement; import javax.xml.bind.annotation.XmlType; import com.google.common.base.Objects; @@ -62,19 +63,20 @@ import com.google.common.base.Objects.ToStringHelper; * */ @XmlAccessorType(XmlAccessType.FIELD) -@XmlType(name = "OrgLdapSettings", propOrder = { - "orgLdapMode", +@XmlRootElement(name = "OrgLdapSettings") +@XmlType(propOrder = { + "ldapMode", "customUsersOu", "customOrgLdapSettings" }) public class OrgLdapSettings extends ResourceType { public static final class LdapMode { - public static final String NONE = "none"; - public static final String SYSTEM = "system"; - public static final String CUSTOM = "custom"; + public static final String NONE = "NONE"; + public static final String SYSTEM = "SYSTEM"; + public static final String CUSTOM = "CUSTOM"; /** - * All acceptable {@link OrgLdapSettings#getOrgLdapMode()} values. + * All acceptable {@link OrgLdapSettings#getLdapMode()} values. *

    * This list must be updated whenever a new mode is added. */ @@ -93,15 +95,15 @@ public class OrgLdapSettings extends ResourceType { public static class Builder extends ResourceType.Builder { - private String orgLdapMode; + private String ldapMode; private String customUsersOu; private CustomOrgLdapSettings customOrgLdapSettings; /** - * @see OrgLdapSettings#getOrgLdapMode() + * @see OrgLdapSettings#getLdapMode() */ - public Builder orgLdapMode(String orgLdapMode) { - this.orgLdapMode = orgLdapMode; + public Builder ldapMode(String ldapMode) { + this.ldapMode = ldapMode; return this; } @@ -123,7 +125,7 @@ public class OrgLdapSettings extends ResourceType { public OrgLdapSettings build() { OrgLdapSettings orgLdapSettings = new OrgLdapSettings(href, type, links, - orgLdapMode, customUsersOu, customOrgLdapSettings); + ldapMode, customUsersOu, customOrgLdapSettings); return orgLdapSettings; } @@ -171,7 +173,7 @@ public class OrgLdapSettings extends ResourceType { } public Builder fromOrgLdapSettings(OrgLdapSettings in) { return fromResourceType(in) - .orgLdapMode(in.getOrgLdapMode()) + .ldapMode(in.getLdapMode()) .customUsersOu(in.getCustomUsersOu()) .customOrgLdapSettings(in.getCustomOrgLdapSettings()); } @@ -183,9 +185,9 @@ public class OrgLdapSettings extends ResourceType { } public OrgLdapSettings(URI href, String type, Set links, - String orgLdapMode, String customUsersOu, CustomOrgLdapSettings customOrgLdapSettings) { + String ldapMode, String customUsersOu, CustomOrgLdapSettings customOrgLdapSettings) { super(href, type, links); - this.orgLdapMode = orgLdapMode; + this.ldapMode = ldapMode; this.customUsersOu = customUsersOu; this.customOrgLdapSettings = customOrgLdapSettings; } @@ -193,7 +195,7 @@ public class OrgLdapSettings extends ResourceType { @XmlElement(name = "OrgLdapMode") - protected String orgLdapMode; + protected String ldapMode; @XmlElement(name = "CustomUsersOu") protected String customUsersOu; @XmlElement(name = "CustomOrgLdapSettings") @@ -207,8 +209,8 @@ public class OrgLdapSettings extends ResourceType { * {@link String } * */ - public String getOrgLdapMode() { - return orgLdapMode; + public String getLdapMode() { + return ldapMode; } /** @@ -243,7 +245,7 @@ public class OrgLdapSettings extends ResourceType { return false; OrgLdapSettings that = OrgLdapSettings.class.cast(o); return super.equals(that) && - equal(orgLdapMode, that.orgLdapMode) && + equal(ldapMode, that.ldapMode) && equal(customUsersOu, that.customUsersOu) && equal(customOrgLdapSettings, that.customOrgLdapSettings); } @@ -251,7 +253,7 @@ public class OrgLdapSettings extends ResourceType { @Override public int hashCode() { return Objects.hashCode(super.hashCode(), - orgLdapMode, + ldapMode, customUsersOu, customOrgLdapSettings); } @@ -259,7 +261,7 @@ public class OrgLdapSettings extends ResourceType { @Override public ToStringHelper string() { return super.string() - .add("orgLdapMode", orgLdapMode) + .add("orgLdapMode", ldapMode) .add("customUsersOu", customUsersOu) .add("customOrgLdapSettings", customOrgLdapSettings); } diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/AdminOrgAsyncClient.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/AdminOrgAsyncClient.java index 063c23f639..57987184ef 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/AdminOrgAsyncClient.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/AdminOrgAsyncClient.java @@ -33,6 +33,7 @@ import org.jclouds.rest.annotations.JAXBResponseParser; import org.jclouds.rest.annotations.RequestFilters; import org.jclouds.rest.binders.BindToXMLPayload; import org.jclouds.vcloud.director.v1_5.VCloudDirectorMediaType; +import org.jclouds.vcloud.director.v1_5.domain.OrgLdapSettings; import org.jclouds.vcloud.director.v1_5.domain.OrgLeaseSettings; import org.jclouds.vcloud.director.v1_5.domain.OrgPasswordPolicySettings; import org.jclouds.vcloud.director.v1_5.domain.OrgVAppTemplateLeaseSettings; @@ -65,8 +66,16 @@ public interface AdminOrgAsyncClient extends OrgAsyncClient { // GET /admin/org/{id}/settings/general // PUT /admin/org/{id}/settings/general - -// GET /admin/org/{id}/settings/ldap + + /** + * @see AdminOrgClient#getPasswordPolicy(URI) + */ + @GET + @Path("/settings/ldap") + @Consumes + @JAXBResponseParser + @ExceptionParser(ThrowVCloudErrorOn4xx.class) + ListenableFuture getLdapSettings(@EndpointParam URI orgRef); /** * @see AdminOrgClient#getPasswordPolicy(URI) diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/AdminOrgClient.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/AdminOrgClient.java index 2b86054340..a54eb7cc6e 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/AdminOrgClient.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/AdminOrgClient.java @@ -23,6 +23,7 @@ import java.util.concurrent.TimeUnit; import org.jclouds.concurrent.Timeout; import org.jclouds.vcloud.director.v1_5.domain.Group; +import org.jclouds.vcloud.director.v1_5.domain.OrgLdapSettings; import org.jclouds.vcloud.director.v1_5.domain.OrgLeaseSettings; import org.jclouds.vcloud.director.v1_5.domain.OrgPasswordPolicySettings; import org.jclouds.vcloud.director.v1_5.domain.OrgVAppTemplateLeaseSettings; @@ -56,6 +57,18 @@ public interface AdminOrgClient extends OrgClient { // GET /admin/org/{id}/settings/ldap + /** + * Retrieves LDAP settings for an organization. + * + *

    +    * GET /admin/org/{id}/settings/ldap
    +    * 
    + * + * @param orgRef the reference for the admin org + * @return the ldap settings + */ + OrgLdapSettings getLdapSettings(URI orgRef); + /** * Retrieves password policy settings for an organization. * diff --git a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/domain/Checks.java b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/domain/Checks.java index 4654241f5d..a167a88264 100644 --- a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/domain/Checks.java +++ b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/domain/Checks.java @@ -598,9 +598,9 @@ public class Checks { public static void checkLdapSettings(OrgLdapSettings settings) { // Check optional fields // NOTE customUsersOu cannot be checked - if (settings.getOrgLdapMode() != null) { - assertTrue(LdapMode.ALL.contains(settings.getOrgLdapMode()), String.format(REQUIRED_VALUE_OBJECT_FMT, - "LdapMode", "OrdLdapSettings", settings.getOrgLdapMode(), Iterables.toString(OrgLdapSettings.LdapMode.ALL))); + if (settings.getLdapMode() != null) { + assertTrue(LdapMode.ALL.contains(settings.getLdapMode()), String.format(REQUIRED_VALUE_OBJECT_FMT, + "LdapMode", "OrdLdapSettings", settings.getLdapMode(), Iterables.toString(OrgLdapSettings.LdapMode.ALL))); } if (settings.getCustomOrgLdapSettings() != null) { checkCustomOrgLdapSettings(settings.getCustomOrgLdapSettings()); diff --git a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/AdminOrgClientExpectTest.java b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/AdminOrgClientExpectTest.java index b177892512..3db97dfc8f 100644 --- a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/AdminOrgClientExpectTest.java +++ b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/AdminOrgClientExpectTest.java @@ -25,6 +25,7 @@ import java.net.URI; import org.jclouds.vcloud.director.v1_5.VCloudDirectorClient; import org.jclouds.vcloud.director.v1_5.VCloudDirectorMediaType; import org.jclouds.vcloud.director.v1_5.domain.Link; +import org.jclouds.vcloud.director.v1_5.domain.OrgLdapSettings; import org.jclouds.vcloud.director.v1_5.domain.OrgLeaseSettings; import org.jclouds.vcloud.director.v1_5.domain.OrgPasswordPolicySettings; import org.jclouds.vcloud.director.v1_5.domain.OrgVAppTemplateLeaseSettings; @@ -64,7 +65,30 @@ public class AdminOrgClientExpectTest extends BaseVCloudDirectorRestClientExpect // PUT /admin/org/{id}/settings/general -// GET /admin/org/{id}/settings/ldap + @Test + public void testGetLdapSettings() { + VCloudDirectorClient client = requestsSendResponses(loginRequest, sessionResponse, + new VcloudHttpRequestPrimer() + .apiCommand("GET", "/admin/org/6f312e42-cd2b-488d-a2bb-97519cd57ed0/settings/ldap") + .acceptAnyMedia() + .httpRequestBuilder().build(), + new VcloudHttpResponsePrimer() + .xmlFilePayload("/org/admin/ldapSettings.xml", + VCloudDirectorMediaType.ORG_LDAP_SETTINGS) + .httpResponseBuilder().build()); + + OrgLdapSettings expected = ldapSettings(); + + assertEquals(client.getAdminOrgClient().getLdapSettings(orgRef.getURI()), expected); + } + + public static final OrgLdapSettings ldapSettings() { + return OrgLdapSettings.builder() + .type("application/vnd.vmware.admin.organizationLdapSettings+xml") + .href(URI.create("https://vcloudbeta.bluelock.com/api/admin/org/6f312e42-cd2b-488d-a2bb-97519cd57ed0/settings/ldap")) + .ldapMode("NONE") + .build(); + } @Test public void testGetPasswordPolicy() { diff --git a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/AdminOrgClientLiveTest.java b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/AdminOrgClientLiveTest.java index bcb7913871..5a0bd45cb8 100644 --- a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/AdminOrgClientLiveTest.java +++ b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/AdminOrgClientLiveTest.java @@ -24,6 +24,7 @@ import org.jclouds.vcloud.director.v1_5.domain.AdminOrg; import org.jclouds.vcloud.director.v1_5.domain.Error; import org.jclouds.vcloud.director.v1_5.domain.Group; import org.jclouds.vcloud.director.v1_5.domain.Checks; +import org.jclouds.vcloud.director.v1_5.domain.OrgLdapSettings; import org.jclouds.vcloud.director.v1_5.domain.OrgLeaseSettings; import org.jclouds.vcloud.director.v1_5.domain.OrgPasswordPolicySettings; import org.jclouds.vcloud.director.v1_5.domain.OrgVAppTemplateLeaseSettings; @@ -85,7 +86,12 @@ public class AdminOrgClientLiveTest extends BaseVCloudDirectorClientLiveTest { // PUT /admin/org/{id}/settings/general -// GET /admin/org/{id}/settings/ldap + @Test(testName = "GET /admin/org/{id}/settings/ldap") + public void getLdapSettings() { + OrgLdapSettings ldapSettings = orgClient.getLdapSettings(orgRef.getURI()); + + Checks.checkLdapSettings(ldapSettings); + } @Test(testName = "GET /admin/org/{id}/settings/passwordPolicy") public void testGetPasswordPolicy() { diff --git a/labs/vcloud-director/src/test/resources/org/admin/ldapSettings.xml b/labs/vcloud-director/src/test/resources/org/admin/ldapSettings.xml new file mode 100644 index 0000000000..4e13f0d9ae --- /dev/null +++ b/labs/vcloud-director/src/test/resources/org/admin/ldapSettings.xml @@ -0,0 +1,4 @@ + + + NONE + \ No newline at end of file From 8e5ec325ae26fae08d25d12b2d0c386c5b076301 Mon Sep 17 00:00:00 2001 From: danikov Date: Sun, 11 Mar 2012 15:02:09 +0000 Subject: [PATCH 16/20] get/put generalSettings --- .../v1_5/VCloudDirectorMediaType.java | 5 +- .../v1_5/domain/OrgGeneralSettings.java | 2 +- .../v1_5/features/AdminOrgAsyncClient.java | 27 +++++++- .../v1_5/features/AdminOrgClient.java | 28 ++++++-- .../vcloud/director/v1_5/domain/Checks.java | 4 +- .../features/AdminOrgClientExpectTest.java | 51 ++++++++++++++- .../v1_5/features/AdminOrgClientLiveTest.java | 65 ++++++++++++++++++- 7 files changed, 165 insertions(+), 17 deletions(-) diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/VCloudDirectorMediaType.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/VCloudDirectorMediaType.java index 84ac301472..28059c86a7 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/VCloudDirectorMediaType.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/VCloudDirectorMediaType.java @@ -143,6 +143,8 @@ public class VCloudDirectorMediaType { public static final String ORG_LDAP_SETTINGS = "application/vnd.vmware.admin.organizationLdapSettings+xml"; + public static final String ORG_GENERAL_SETTINGS = "application/vnd.vmware.admin.organizationGeneralSettings+xml"; + /** * * All acceptable media types. @@ -162,6 +164,7 @@ public class VCloudDirectorMediaType { NETWORK_SECTION, NETWORK_CONFIG_SECTION, NETWORK_CONNECTION_SECTION, CLONE_MEDIA_PARAMS, LEASE_SETTINGS_SECTION, RELOCATE_TEMPLATE, ENVELOPE, PUBLISH_CATALOG_PARAMS, GROUP, ORG_VAPP_TEMPLATE_LEASE_SETTINGS, - ORG_LEASE_SETTINGS, ORG_PASSWORD_POLICY_SETTINGS, ORG_LDAP_SETTINGS + ORG_LEASE_SETTINGS, ORG_PASSWORD_POLICY_SETTINGS, ORG_LDAP_SETTINGS, + ORG_GENERAL_SETTINGS ); } diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/OrgGeneralSettings.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/OrgGeneralSettings.java index 67eec98430..9557a8bcd6 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/OrgGeneralSettings.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/OrgGeneralSettings.java @@ -63,7 +63,7 @@ import com.google.common.base.Objects.ToStringHelper; * */ @XmlAccessorType(XmlAccessType.FIELD) -@XmlRootElement(name = "OrgGeneralSettings") +@XmlRootElement(name = "GeneralOrgSettings") @XmlType(propOrder = { "canPublishCatalogs", "deployedVMQuota", diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/AdminOrgAsyncClient.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/AdminOrgAsyncClient.java index 57987184ef..c25497e3bc 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/AdminOrgAsyncClient.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/AdminOrgAsyncClient.java @@ -33,6 +33,7 @@ import org.jclouds.rest.annotations.JAXBResponseParser; import org.jclouds.rest.annotations.RequestFilters; import org.jclouds.rest.binders.BindToXMLPayload; import org.jclouds.vcloud.director.v1_5.VCloudDirectorMediaType; +import org.jclouds.vcloud.director.v1_5.domain.OrgGeneralSettings; import org.jclouds.vcloud.director.v1_5.domain.OrgLdapSettings; import org.jclouds.vcloud.director.v1_5.domain.OrgLeaseSettings; import org.jclouds.vcloud.director.v1_5.domain.OrgPasswordPolicySettings; @@ -63,9 +64,29 @@ public interface AdminOrgAsyncClient extends OrgAsyncClient { // PUT /admin/org/{id}/settings/email -// GET /admin/org/{id}/settings/general - -// PUT /admin/org/{id}/settings/general + /** + * @see AdminOrgClient#getGeneralSettings(URI) + */ + @GET + @Path("/settings/general") + @Consumes + @JAXBResponseParser + @ExceptionParser(ThrowVCloudErrorOn4xx.class) + ListenableFuture getGeneralSettings( + @EndpointParam URI orgRef); + + /** + * @see AdminOrgClient#updateGeneralSettings(URI, OrgGeneralSettings) + */ + @PUT + @Path("/settings/general") + @Consumes(VCloudDirectorMediaType.ORG_GENERAL_SETTINGS) + @Produces(VCloudDirectorMediaType.ORG_GENERAL_SETTINGS) + @JAXBResponseParser + @ExceptionParser(ThrowVCloudErrorOn4xx.class) + ListenableFuture updateGeneralSettings( + @EndpointParam URI orgRef, + @BinderParam(BindToXMLPayload.class) OrgGeneralSettings settings); /** * @see AdminOrgClient#getPasswordPolicy(URI) diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/AdminOrgClient.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/AdminOrgClient.java index a54eb7cc6e..2c5c9c86d0 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/AdminOrgClient.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/AdminOrgClient.java @@ -23,6 +23,7 @@ import java.util.concurrent.TimeUnit; import org.jclouds.concurrent.Timeout; import org.jclouds.vcloud.director.v1_5.domain.Group; +import org.jclouds.vcloud.director.v1_5.domain.OrgGeneralSettings; import org.jclouds.vcloud.director.v1_5.domain.OrgLdapSettings; import org.jclouds.vcloud.director.v1_5.domain.OrgLeaseSettings; import org.jclouds.vcloud.director.v1_5.domain.OrgPasswordPolicySettings; @@ -51,11 +52,30 @@ public interface AdminOrgClient extends OrgClient { // PUT /admin/org/{id}/settings/email -// GET /admin/org/{id}/settings/general + /** + * Gets general organization settings. + * + *
    +    * GET /admin/org/{id}/settings/general
    +    * 
    + * + * @param orgRef the reference for the admin org + * @return the lease settings + */ + OrgGeneralSettings getGeneralSettings(URI orgRef); -// PUT /admin/org/{id}/settings/general - -// GET /admin/org/{id}/settings/ldap + /** + * Updates general organization settings. + * + *
    +    * PUT /admin/org/{id}/settings/general
    +    * 
    + * @param orgRef the reference for the admin org + * @param newSettings the requested updated settings + * @return the resultant settings + */ + OrgGeneralSettings updateGeneralSettings(URI orgRef, + OrgGeneralSettings newSettings); /** * Retrieves LDAP settings for an organization. diff --git a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/domain/Checks.java b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/domain/Checks.java index a167a88264..c6f07b3735 100644 --- a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/domain/Checks.java +++ b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/domain/Checks.java @@ -531,7 +531,7 @@ public class Checks { public static void checkOrgSetting(OrgSettings settings) { // Check optional fields if (settings.getOrgGeneralSettings() != null) { - checkOrgGeneralSettings(settings.getOrgGeneralSettings()); + checkGeneralSettings(settings.getOrgGeneralSettings()); } if (settings.getVAppLeaseSettings() != null) { checkVAppLeaseSettings(settings.getVAppLeaseSettings()); @@ -574,7 +574,7 @@ public class Checks { // TODO: validate email addresses } - public static void checkOrgGeneralSettings(OrgGeneralSettings settings) { + public static void checkGeneralSettings(OrgGeneralSettings settings) { // Check optional fields // NOTE canPublishCatalogs cannot be checked // NOTE useServerBootSequence cannot be checked diff --git a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/AdminOrgClientExpectTest.java b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/AdminOrgClientExpectTest.java index 3db97dfc8f..17350e13a1 100644 --- a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/AdminOrgClientExpectTest.java +++ b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/AdminOrgClientExpectTest.java @@ -25,6 +25,7 @@ import java.net.URI; import org.jclouds.vcloud.director.v1_5.VCloudDirectorClient; import org.jclouds.vcloud.director.v1_5.VCloudDirectorMediaType; import org.jclouds.vcloud.director.v1_5.domain.Link; +import org.jclouds.vcloud.director.v1_5.domain.OrgGeneralSettings; import org.jclouds.vcloud.director.v1_5.domain.OrgLdapSettings; import org.jclouds.vcloud.director.v1_5.domain.OrgLeaseSettings; import org.jclouds.vcloud.director.v1_5.domain.OrgPasswordPolicySettings; @@ -61,9 +62,53 @@ public class AdminOrgClientExpectTest extends BaseVCloudDirectorRestClientExpect // PUT /admin/org/{id}/settings/email -// GET /admin/org/{id}/settings/general - -// PUT /admin/org/{id}/settings/general + @Test(enabled = false) + public void testGetGeneralSettings() { + VCloudDirectorClient client = requestsSendResponses(loginRequest, sessionResponse, + new VcloudHttpRequestPrimer() + .apiCommand("GET", "/admin/org/6f312e42-cd2b-488d-a2bb-97519cd57ed0/settings/general") + .acceptAnyMedia() + .httpRequestBuilder().build(), + new VcloudHttpResponsePrimer() + .xmlFilePayload("/org/admin/generalSettings.xml", + VCloudDirectorMediaType.ORG_GENERAL_SETTINGS) + .httpResponseBuilder().build()); + + OrgGeneralSettings expected = generalSettings(); + + assertEquals(client.getAdminOrgClient().getGeneralSettings(orgRef.getURI()), expected); + } + + public static final OrgGeneralSettings generalSettings() { + return OrgGeneralSettings.builder() + + .build(); + } + + @Test(enabled = false) + public void testUpdateGeneralSettings() { + VCloudDirectorClient client = requestsSendResponses(loginRequest, sessionResponse, + new VcloudHttpRequestPrimer() + .apiCommand("PUT", "/admin/org/6f312e42-cd2b-488d-a2bb-97519cd57ed0/settings/general") + .xmlFilePayload("/org/admin/updateGeneralSettingsSource.xml", + VCloudDirectorMediaType.ORG_GENERAL_SETTINGS) + .acceptMedia(VCloudDirectorMediaType.ORG_GENERAL_SETTINGS) + .httpRequestBuilder().build(), + new VcloudHttpResponsePrimer() + .xmlFilePayload("/org/admin/updateGeneralSettings.xml", + VCloudDirectorMediaType.ORG_GENERAL_SETTINGS) + .httpResponseBuilder().build()); + + OrgGeneralSettings expected = updateGeneralSettings(); + + assertEquals(client.getAdminOrgClient().updateGeneralSettings(orgRef.getURI(), expected), expected); + } + + public static final OrgGeneralSettings updateGeneralSettings() { + return generalSettings().toBuilder() + + .build(); + } @Test public void testGetLdapSettings() { diff --git a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/AdminOrgClientLiveTest.java b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/AdminOrgClientLiveTest.java index 5a0bd45cb8..31ef28692a 100644 --- a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/AdminOrgClientLiveTest.java +++ b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/AdminOrgClientLiveTest.java @@ -24,6 +24,7 @@ import org.jclouds.vcloud.director.v1_5.domain.AdminOrg; import org.jclouds.vcloud.director.v1_5.domain.Error; import org.jclouds.vcloud.director.v1_5.domain.Group; import org.jclouds.vcloud.director.v1_5.domain.Checks; +import org.jclouds.vcloud.director.v1_5.domain.OrgGeneralSettings; import org.jclouds.vcloud.director.v1_5.domain.OrgLdapSettings; import org.jclouds.vcloud.director.v1_5.domain.OrgLeaseSettings; import org.jclouds.vcloud.director.v1_5.domain.OrgPasswordPolicySettings; @@ -59,6 +60,7 @@ public class AdminOrgClientLiveTest extends BaseVCloudDirectorClientLiveTest { OrgPasswordPolicySettings passwordPolicy; OrgLeaseSettings vAppLeaseSettings; OrgVAppTemplateLeaseSettings vAppTemplateLeaseSettings; + OrgGeneralSettings generalSettings; @Override @BeforeClass(inheritGroups = true) @@ -82,9 +84,66 @@ public class AdminOrgClientLiveTest extends BaseVCloudDirectorClientLiveTest { // PUT /admin/org/{id}/settings/email -// GET /admin/org/{id}/settings/general - -// PUT /admin/org/{id}/settings/general + @Test(testName = "GET /admin/org/{id}/settings/generalSettings") + public void testGetGeneralSettings() { + generalSettings = orgClient.getGeneralSettings(orgRef.getURI()); + + Checks.checkGeneralSettings(generalSettings); + } + + @Test(testName = "PUT /admin/org/{id}/settings/generalSettings", + dependsOnMethods = { "testGetGeneralSettings" }, enabled = false ) + public void testUpdateGeneralSettings() { +// boolean canPublishCatalogs = generalSettings.canPublishCatalogs(); // FIXME: did not update + Integer deployedVMQuota = generalSettings.getDeployedVMQuota(); + Integer storedVmQuota = generalSettings.getStoredVmQuota(); + boolean useServerBootSequence = generalSettings.useServerBootSequence(); + Integer delayAfterPowerOnSeconds = generalSettings.getDelayAfterPowerOnSeconds(); + + try { + generalSettings = generalSettings.toBuilder() +// .canPublishCatalogs(!canPublishCatalogs) + .deployedVMQuota(deployedVMQuota+1) + .storedVmQuota(storedVmQuota+1) + .useServerBootSequence(!useServerBootSequence) + .delayAfterPowerOnSeconds(delayAfterPowerOnSeconds+1) + .build(); + + generalSettings = orgClient.updateGeneralSettings( + orgRef.getURI(), generalSettings); + +// assertTrue(equal(generalSettings.canPublishCatalogs(), !canPublishCatalogs), +// String.format(OBJ_FIELD_UPDATABLE, +// "generalSettings", "canPublishCatalogs")); + assertTrue(equal(generalSettings.getDeployedVMQuota(), deployedVMQuota+1), + String.format(OBJ_FIELD_UPDATABLE, + "generalSettings", "deployedVMQuota")); + assertTrue(equal(generalSettings.getStoredVmQuota(), storedVmQuota+1), + String.format(OBJ_FIELD_UPDATABLE, + "generalSettings", "storedVmQuota")); + assertTrue(equal(generalSettings.useServerBootSequence(), !useServerBootSequence), + String.format(OBJ_FIELD_UPDATABLE, + "generalSettings", "useServerBootSequence")); + assertTrue(equal(generalSettings.getDelayAfterPowerOnSeconds(), delayAfterPowerOnSeconds+1), + String.format(OBJ_FIELD_UPDATABLE, + "generalSettings", "delayAfterPowerOnSeconds")); + + //TODO negative tests? + + Checks.checkGeneralSettings(generalSettings); + } finally { + generalSettings = generalSettings.toBuilder() +// .canPublishCatalogs(canPublishCatalogs) + .deployedVMQuota(deployedVMQuota) + .storedVmQuota(storedVmQuota) + .useServerBootSequence(useServerBootSequence) + .delayAfterPowerOnSeconds(delayAfterPowerOnSeconds) + .build(); + + generalSettings = orgClient.updateGeneralSettings( + orgRef.getURI(), generalSettings); + } + } @Test(testName = "GET /admin/org/{id}/settings/ldap") public void getLdapSettings() { From 4077e2d9a4f8b86325411b437ea7577159845249 Mon Sep 17 00:00:00 2001 From: danikov Date: Sun, 11 Mar 2012 18:46:35 +0000 Subject: [PATCH 17/20] get/put emailSettings --- .../v1_5/VCloudDirectorMediaType.java | 4 +- .../v1_5/domain/OrgEmailSettings.java | 14 ++-- .../v1_5/domain/SmtpServerSettings.java | 8 +- .../v1_5/features/AdminOrgAsyncClient.java | 27 +++++- .../v1_5/features/AdminOrgClient.java | 26 +++++- .../features/AdminOrgClientExpectTest.java | 83 +++++++++++++++++-- .../v1_5/features/AdminOrgClientLiveTest.java | 82 +++++++++++++++++- .../resources/org/admin/emailSettings.xml | 14 ++++ .../org/admin/updateEmailSettings.xml | 14 ++++ .../org/admin/updateEmailSettingsSource.xml | 14 ++++ 10 files changed, 258 insertions(+), 28 deletions(-) create mode 100644 labs/vcloud-director/src/test/resources/org/admin/emailSettings.xml create mode 100644 labs/vcloud-director/src/test/resources/org/admin/updateEmailSettings.xml create mode 100644 labs/vcloud-director/src/test/resources/org/admin/updateEmailSettingsSource.xml diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/VCloudDirectorMediaType.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/VCloudDirectorMediaType.java index 28059c86a7..e3380afe4c 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/VCloudDirectorMediaType.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/VCloudDirectorMediaType.java @@ -145,6 +145,8 @@ public class VCloudDirectorMediaType { public static final String ORG_GENERAL_SETTINGS = "application/vnd.vmware.admin.organizationGeneralSettings+xml"; + public static final String ORG_EMAIL_SETTINGS = "application/vnd.vmware.admin.organizationEmailSettings+xml"; + /** * * All acceptable media types. @@ -165,6 +167,6 @@ public class VCloudDirectorMediaType { CLONE_MEDIA_PARAMS, LEASE_SETTINGS_SECTION, RELOCATE_TEMPLATE, ENVELOPE, PUBLISH_CATALOG_PARAMS, GROUP, ORG_VAPP_TEMPLATE_LEASE_SETTINGS, ORG_LEASE_SETTINGS, ORG_PASSWORD_POLICY_SETTINGS, ORG_LDAP_SETTINGS, - ORG_GENERAL_SETTINGS + ORG_GENERAL_SETTINGS, ORG_EMAIL_SETTINGS ); } diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/OrgEmailSettings.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/OrgEmailSettings.java index 64e528a3eb..39c20987ed 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/OrgEmailSettings.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/OrgEmailSettings.java @@ -76,7 +76,7 @@ import com.google.common.collect.ImmutableList; "fromEmailAddress", "defaultSubjectPrefix", "isAlertEmailToAllAdmins", - "alertEmailTo", + "alertEmailsTo", "smtpServerSettings" }) public class OrgEmailSettings extends ResourceType { @@ -142,7 +142,7 @@ public class OrgEmailSettings extends ResourceType { * @see OrgEmailSettings#getAlertEmailTo() */ public Builder alertEmailsTo(List alertEmailsTo) { - this.alertEmailTo = ImmutableList.copyOf(alertEmailsTo); + this.alertEmailTo = alertEmailsTo == null ? null : ImmutableList.copyOf(alertEmailsTo); return this; } @@ -163,7 +163,8 @@ public class OrgEmailSettings extends ResourceType { } public OrgEmailSettings build() { - return new OrgEmailSettings(isDefaultSmtpServer, isDefaultOrgEmail, fromEmailAddress, defaultSubjectPrefix, + return new OrgEmailSettings(href, type, links, isDefaultSmtpServer, + isDefaultOrgEmail, fromEmailAddress, defaultSubjectPrefix, isAlertEmailToAllAdmins, alertEmailTo, smtpServerSettings); } @@ -225,9 +226,11 @@ public class OrgEmailSettings extends ResourceType { // For JAXB } - private OrgEmailSettings(boolean isDefaultSmtpServer, boolean isDefaultOrgEmail, + private OrgEmailSettings(URI href, String type, Set links, + boolean isDefaultSmtpServer, boolean isDefaultOrgEmail, String fromEmailAddress, String defaultSubjectPrefix, boolean isAlertEmailToAllAdmins, List alertEmailTo, SmtpServerSettings smtpServerSettings) { + super(href, type, links); this.isDefaultSmtpServer = isDefaultSmtpServer; this.isDefaultOrgEmail = isDefaultOrgEmail; this.fromEmailAddress = fromEmailAddress; @@ -323,9 +326,6 @@ public class OrgEmailSettings extends ResourceType { * */ public List getAlertEmailsTo() { - if (alertEmailsTo == null) { - alertEmailsTo = new ArrayList(); - } return this.alertEmailsTo; } diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/SmtpServerSettings.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/SmtpServerSettings.java index 9c79022acf..4ab6dd17f1 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/SmtpServerSettings.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/SmtpServerSettings.java @@ -61,7 +61,7 @@ import com.google.common.base.Objects.ToStringHelper; */ @XmlAccessorType(XmlAccessType.FIELD) @XmlType(name = "SmtpServerSettings", propOrder = { - "isUseAuthentication", + "useAuthentication", "host", "username", "password" @@ -200,8 +200,7 @@ public class SmtpServerSettings { if (o == null || getClass() != o.getClass()) return false; SmtpServerSettings that = SmtpServerSettings.class.cast(o); - return super.equals(that) && - equal(useAuthentication, that.useAuthentication) && + return equal(useAuthentication, that.useAuthentication) && equal(host, that.host) && equal(username, that.username) && equal(password, that.password); @@ -209,8 +208,7 @@ public class SmtpServerSettings { @Override public int hashCode() { - return Objects.hashCode(super.hashCode(), - useAuthentication, + return Objects.hashCode(useAuthentication, host, username, password); diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/AdminOrgAsyncClient.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/AdminOrgAsyncClient.java index c25497e3bc..8dba6a872d 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/AdminOrgAsyncClient.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/AdminOrgAsyncClient.java @@ -33,6 +33,7 @@ import org.jclouds.rest.annotations.JAXBResponseParser; import org.jclouds.rest.annotations.RequestFilters; import org.jclouds.rest.binders.BindToXMLPayload; import org.jclouds.vcloud.director.v1_5.VCloudDirectorMediaType; +import org.jclouds.vcloud.director.v1_5.domain.OrgEmailSettings; import org.jclouds.vcloud.director.v1_5.domain.OrgGeneralSettings; import org.jclouds.vcloud.director.v1_5.domain.OrgLdapSettings; import org.jclouds.vcloud.director.v1_5.domain.OrgLeaseSettings; @@ -60,9 +61,29 @@ public interface AdminOrgAsyncClient extends OrgAsyncClient { // PUT /admin/org/{id}/settings -// GET /admin/org/{id}/settings/email - -// PUT /admin/org/{id}/settings/email + /** + * @see AdminOrgClient#getEmailSettings(URI) + */ + @GET + @Path("/settings/email") + @Consumes + @JAXBResponseParser + @ExceptionParser(ThrowVCloudErrorOn4xx.class) + ListenableFuture getEmailSettings( + @EndpointParam URI orgRef); + + /** + * @see AdminOrgClient#updateEmailSettings(URI, OrgEmailSettings) + */ + @PUT + @Path("/settings/email") + @Consumes(VCloudDirectorMediaType.ORG_EMAIL_SETTINGS) + @Produces(VCloudDirectorMediaType.ORG_EMAIL_SETTINGS) + @JAXBResponseParser + @ExceptionParser(ThrowVCloudErrorOn4xx.class) + ListenableFuture updateEmailSettings( + @EndpointParam URI orgRef, + @BinderParam(BindToXMLPayload.class) OrgEmailSettings settings); /** * @see AdminOrgClient#getGeneralSettings(URI) diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/AdminOrgClient.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/AdminOrgClient.java index 2c5c9c86d0..9943b6df64 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/AdminOrgClient.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/AdminOrgClient.java @@ -23,6 +23,7 @@ import java.util.concurrent.TimeUnit; import org.jclouds.concurrent.Timeout; import org.jclouds.vcloud.director.v1_5.domain.Group; +import org.jclouds.vcloud.director.v1_5.domain.OrgEmailSettings; import org.jclouds.vcloud.director.v1_5.domain.OrgGeneralSettings; import org.jclouds.vcloud.director.v1_5.domain.OrgLdapSettings; import org.jclouds.vcloud.director.v1_5.domain.OrgLeaseSettings; @@ -48,9 +49,30 @@ public interface AdminOrgClient extends OrgClient { // PUT /admin/org/{id}/settings -// GET /admin/org/{id}/settings/email + /** + * Retrieves email settings for an organization. + * + *
    +    * GET /admin/org/{id}/settings/email
    +    * 
    + * + * @param orgRef the reference for the admin org + * @return the email settings + */ + OrgEmailSettings getEmailSettings(URI orgRef); -// PUT /admin/org/{id}/settings/email + /** + * Updates email policy settings for organization. + * + *
    +    * PUT /admin/org/{id}/settings/email
    +    * 
    + * @param orgRef the reference for the admin org + * @param newSettings the requested updated settings + * @return the resultant settings + */ + OrgEmailSettings updateEmailSettings(URI orgRef, + OrgEmailSettings newSettings); /** * Gets general organization settings. diff --git a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/AdminOrgClientExpectTest.java b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/AdminOrgClientExpectTest.java index 17350e13a1..82b9855ebb 100644 --- a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/AdminOrgClientExpectTest.java +++ b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/AdminOrgClientExpectTest.java @@ -25,12 +25,14 @@ import java.net.URI; import org.jclouds.vcloud.director.v1_5.VCloudDirectorClient; import org.jclouds.vcloud.director.v1_5.VCloudDirectorMediaType; import org.jclouds.vcloud.director.v1_5.domain.Link; +import org.jclouds.vcloud.director.v1_5.domain.OrgEmailSettings; import org.jclouds.vcloud.director.v1_5.domain.OrgGeneralSettings; import org.jclouds.vcloud.director.v1_5.domain.OrgLdapSettings; import org.jclouds.vcloud.director.v1_5.domain.OrgLeaseSettings; import org.jclouds.vcloud.director.v1_5.domain.OrgPasswordPolicySettings; import org.jclouds.vcloud.director.v1_5.domain.OrgVAppTemplateLeaseSettings; import org.jclouds.vcloud.director.v1_5.domain.Reference; +import org.jclouds.vcloud.director.v1_5.domain.SmtpServerSettings; import org.jclouds.vcloud.director.v1_5.internal.BaseVCloudDirectorRestClientExpectTest; import org.testng.annotations.Test; @@ -43,8 +45,6 @@ import org.testng.annotations.Test; public class AdminOrgClientExpectTest extends BaseVCloudDirectorRestClientExpectTest { private Reference orgRef = Reference.builder() -// .type("application/vnd.vmware.admin.???+xml") - .name("???") .href(URI.create(endpoint + "/admin/org/6f312e42-cd2b-488d-a2bb-97519cd57ed0")) .build(); @@ -58,10 +58,81 @@ public class AdminOrgClientExpectTest extends BaseVCloudDirectorRestClientExpect // PUT /admin/org/{id}/settings -// GET /admin/org/{id}/settings/email - -// PUT /admin/org/{id}/settings/email - + @Test + public void testGetEmailSettings() { + VCloudDirectorClient client = requestsSendResponses(loginRequest, sessionResponse, + new VcloudHttpRequestPrimer() + .apiCommand("GET", "/admin/org/6f312e42-cd2b-488d-a2bb-97519cd57ed0/settings/email") + .acceptAnyMedia() + .httpRequestBuilder().build(), + new VcloudHttpResponsePrimer() + .xmlFilePayload("/org/admin/emailSettings.xml", + VCloudDirectorMediaType.ORG_GENERAL_SETTINGS) + .httpResponseBuilder().build()); + + OrgEmailSettings expected = emailSettings(); + + assertEquals(client.getAdminOrgClient().getEmailSettings(orgRef.getURI()), expected); + } + + public static final OrgEmailSettings emailSettings() { + return OrgEmailSettings.builder() + .type("application/vnd.vmware.admin.organizationEmailSettings+xml") + .href(URI.create("https://vcloudbeta.bluelock.com/api/admin/org/6f312e42-cd2b-488d-a2bb-97519cd57ed0/settings/email")) + .link(Link.builder() + .rel("edit") + .type("application/vnd.vmware.admin.organizationEmailSettings+xml") + .href(URI.create("https://vcloudbeta.bluelock.com/api/admin/org/6f312e42-cd2b-488d-a2bb-97519cd57ed0/settings/email")) + .build()) + .isDefaultSmtpServer(true) + .isDefaultOrgEmail(true) + .fromEmailAddress("") + .defaultSubjectPrefix("") + .isAlertEmailToAllAdmins(true) + .smtpServerSettings(SmtpServerSettings.builder() + .useAuthentication(false) + .host("") + .username("") + .password("") + .build()) + .build(); + } + + @Test + public void testUpdateEmailSettings() { + VCloudDirectorClient client = requestsSendResponses(loginRequest, sessionResponse, + new VcloudHttpRequestPrimer() + .apiCommand("PUT", "/admin/org/6f312e42-cd2b-488d-a2bb-97519cd57ed0/settings/email") + .xmlFilePayload("/org/admin/updateEmailSettingsSource.xml", + VCloudDirectorMediaType.ORG_EMAIL_SETTINGS) + .acceptMedia(VCloudDirectorMediaType.ORG_EMAIL_SETTINGS) + .httpRequestBuilder().build(), + new VcloudHttpResponsePrimer() + .xmlFilePayload("/org/admin/updateEmailSettings.xml", + VCloudDirectorMediaType.ORG_EMAIL_SETTINGS) + .httpResponseBuilder().build()); + + OrgEmailSettings expected = updateEmailSettings(); + + assertEquals(client.getAdminOrgClient().updateEmailSettings(orgRef.getURI(), expected), expected); + } + + @Test + public static final OrgEmailSettings updateEmailSettings() { + return emailSettings().toBuilder() + .isDefaultSmtpServer(false) + .isDefaultOrgEmail(false) + .fromEmailAddress("test@test.com") + .defaultSubjectPrefix("new") + .isAlertEmailToAllAdmins(false) + .smtpServerSettings(emailSettings().getSmtpServerSettings().toBuilder() + .useAuthentication(true) + .host("new") + .username("new") + .build()) + .build(); + } + @Test(enabled = false) public void testGetGeneralSettings() { VCloudDirectorClient client = requestsSendResponses(loginRequest, sessionResponse, diff --git a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/AdminOrgClientLiveTest.java b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/AdminOrgClientLiveTest.java index 31ef28692a..cf341ab49b 100644 --- a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/AdminOrgClientLiveTest.java +++ b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/AdminOrgClientLiveTest.java @@ -24,12 +24,14 @@ import org.jclouds.vcloud.director.v1_5.domain.AdminOrg; import org.jclouds.vcloud.director.v1_5.domain.Error; import org.jclouds.vcloud.director.v1_5.domain.Group; import org.jclouds.vcloud.director.v1_5.domain.Checks; +import org.jclouds.vcloud.director.v1_5.domain.OrgEmailSettings; import org.jclouds.vcloud.director.v1_5.domain.OrgGeneralSettings; import org.jclouds.vcloud.director.v1_5.domain.OrgLdapSettings; import org.jclouds.vcloud.director.v1_5.domain.OrgLeaseSettings; import org.jclouds.vcloud.director.v1_5.domain.OrgPasswordPolicySettings; import org.jclouds.vcloud.director.v1_5.domain.OrgVAppTemplateLeaseSettings; import org.jclouds.vcloud.director.v1_5.domain.ReferenceType; +import org.jclouds.vcloud.director.v1_5.domain.SmtpServerSettings; import org.jclouds.vcloud.director.v1_5.internal.BaseVCloudDirectorClientLiveTest; import org.testng.annotations.BeforeClass; import org.testng.annotations.Test; @@ -57,10 +59,11 @@ public class AdminOrgClientLiveTest extends BaseVCloudDirectorClientLiveTest { */ private ReferenceType orgRef; private AdminOrg org; + OrgEmailSettings emailSettings; + OrgGeneralSettings generalSettings; OrgPasswordPolicySettings passwordPolicy; OrgLeaseSettings vAppLeaseSettings; OrgVAppTemplateLeaseSettings vAppTemplateLeaseSettings; - OrgGeneralSettings generalSettings; @Override @BeforeClass(inheritGroups = true) @@ -80,9 +83,80 @@ public class AdminOrgClientLiveTest extends BaseVCloudDirectorClientLiveTest { // PUT /admin/org/{id}/settings -// GET /admin/org/{id}/settings/email - -// PUT /admin/org/{id}/settings/email + @Test(testName = "GET /admin/org/{id}/settings/emailSettings") + public void testGetEmailSettings() { + emailSettings = orgClient.getEmailSettings(orgRef.getURI()); + + Checks.checkEmailSettings(emailSettings); + } + + @Test(testName = "PUT /admin/org/{id}/settings/emailSettings", + dependsOnMethods = { "testGetEmailSettings" }) + public void testUpdateEmailSettings() { + boolean isDefaultSmtpServer = emailSettings.isDefaultSmtpServer(); + boolean isDefaultOrgEmail = emailSettings.isDefaultOrgEmail(); + String oldFromEmailAddress = emailSettings.getFromEmailAddress(); + String newFromEmailAddress = "test@test.com"; + String oldDefaultSubjectPrefix = emailSettings.getDefaultSubjectPrefix(); + String newDefaultSubjectPrefix = "new"+oldDefaultSubjectPrefix; + boolean isAlertEmailToAllAdmins = emailSettings.isAlertEmailToAllAdmins(); + SmtpServerSettings oldSmtpServerSettings = emailSettings.getSmtpServerSettings(); + SmtpServerSettings newSmtpServerSettings = oldSmtpServerSettings.toBuilder() + .useAuthentication(!oldSmtpServerSettings.useAuthentication()) + .host("new"+oldSmtpServerSettings.getHost()) + .username("new"+oldSmtpServerSettings.getUsername()) + .password("new"+oldSmtpServerSettings.getPassword()) + .build(); + + try { + emailSettings = emailSettings.toBuilder() + .isDefaultSmtpServer(!isDefaultSmtpServer) + .isDefaultOrgEmail(!isDefaultOrgEmail) + .fromEmailAddress(newFromEmailAddress) + .defaultSubjectPrefix(newDefaultSubjectPrefix) + .isAlertEmailToAllAdmins(!isAlertEmailToAllAdmins) + .smtpServerSettings(newSmtpServerSettings) + .build(); + + emailSettings = orgClient.updateEmailSettings( + orgRef.getURI(), emailSettings); + + assertTrue(equal(emailSettings.isDefaultSmtpServer(), !isDefaultSmtpServer), + String.format(OBJ_FIELD_UPDATABLE, + "emailSettings", "isDefaultSmtpServer")); + assertTrue(equal(emailSettings.isDefaultOrgEmail(), !isDefaultOrgEmail), + String.format(OBJ_FIELD_UPDATABLE, + "emailSettings", "isDefaultOrgEmail")); + assertTrue(equal(emailSettings.getFromEmailAddress(), newFromEmailAddress), + String.format(OBJ_FIELD_UPDATABLE, + "emailSettings", "fromEmailAddress")); + assertTrue(equal(emailSettings.getDefaultSubjectPrefix(), newDefaultSubjectPrefix), + String.format(OBJ_FIELD_UPDATABLE, + "emailSettings", "defaultSubjectPrefix")); + assertTrue(equal(emailSettings.isAlertEmailToAllAdmins(), !isAlertEmailToAllAdmins), + String.format(OBJ_FIELD_UPDATABLE, + "emailSettings", "isAlertEmailToAllAdmins")); + assertTrue(equal(emailSettings.getSmtpServerSettings(), newSmtpServerSettings), + String.format(OBJ_FIELD_UPDATABLE, + "emailSettings", "smtpServerSettings")); + + //TODO negative tests? + + Checks.checkEmailSettings(emailSettings); + } finally { + emailSettings = emailSettings.toBuilder() + .isDefaultSmtpServer(isDefaultSmtpServer) + .isDefaultOrgEmail(isDefaultOrgEmail) + .fromEmailAddress(oldFromEmailAddress) + .defaultSubjectPrefix(oldDefaultSubjectPrefix) + .isAlertEmailToAllAdmins(isAlertEmailToAllAdmins) + .smtpServerSettings(oldSmtpServerSettings) + .build(); + + emailSettings = orgClient.updateEmailSettings( + orgRef.getURI(), emailSettings); + } + } @Test(testName = "GET /admin/org/{id}/settings/generalSettings") public void testGetGeneralSettings() { diff --git a/labs/vcloud-director/src/test/resources/org/admin/emailSettings.xml b/labs/vcloud-director/src/test/resources/org/admin/emailSettings.xml new file mode 100644 index 0000000000..26c61f6eeb --- /dev/null +++ b/labs/vcloud-director/src/test/resources/org/admin/emailSettings.xml @@ -0,0 +1,14 @@ + + + + true + true + + + true + + false + + + + \ No newline at end of file diff --git a/labs/vcloud-director/src/test/resources/org/admin/updateEmailSettings.xml b/labs/vcloud-director/src/test/resources/org/admin/updateEmailSettings.xml new file mode 100644 index 0000000000..c48af09fef --- /dev/null +++ b/labs/vcloud-director/src/test/resources/org/admin/updateEmailSettings.xml @@ -0,0 +1,14 @@ + + + + false + false + test@test.com + new + false + + true + new + new + + \ No newline at end of file diff --git a/labs/vcloud-director/src/test/resources/org/admin/updateEmailSettingsSource.xml b/labs/vcloud-director/src/test/resources/org/admin/updateEmailSettingsSource.xml new file mode 100644 index 0000000000..70b36070e4 --- /dev/null +++ b/labs/vcloud-director/src/test/resources/org/admin/updateEmailSettingsSource.xml @@ -0,0 +1,14 @@ + + + + false + false + test@test.com + new + false + + true + new + new + + \ No newline at end of file From 5817f0446374a5f8f0cc725c70621913d51d7b2d Mon Sep 17 00:00:00 2001 From: danikov Date: Sun, 11 Mar 2012 19:40:04 +0000 Subject: [PATCH 18/20] get/put orgSettings --- .../v1_5/VCloudDirectorMediaType.java | 4 +- .../director/v1_5/domain/OrgSettings.java | 115 +++++++++--------- .../v1_5/features/AdminOrgAsyncClient.java | 27 +++- .../v1_5/features/AdminOrgClient.java | 25 +++- .../vcloud/director/v1_5/domain/Checks.java | 19 ++- .../features/AdminOrgClientExpectTest.java | 70 +++++++++-- .../v1_5/features/AdminOrgClientLiveTest.java | 112 ++++++++++++++--- 7 files changed, 270 insertions(+), 102 deletions(-) diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/VCloudDirectorMediaType.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/VCloudDirectorMediaType.java index e3380afe4c..354bf95e15 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/VCloudDirectorMediaType.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/VCloudDirectorMediaType.java @@ -147,6 +147,8 @@ public class VCloudDirectorMediaType { public static final String ORG_EMAIL_SETTINGS = "application/vnd.vmware.admin.organizationEmailSettings+xml"; + public static final String ORG_SETTINGS = "application/vnd.vmware.admin.orgSettings+xml"; + /** * * All acceptable media types. @@ -167,6 +169,6 @@ public class VCloudDirectorMediaType { CLONE_MEDIA_PARAMS, LEASE_SETTINGS_SECTION, RELOCATE_TEMPLATE, ENVELOPE, PUBLISH_CATALOG_PARAMS, GROUP, ORG_VAPP_TEMPLATE_LEASE_SETTINGS, ORG_LEASE_SETTINGS, ORG_PASSWORD_POLICY_SETTINGS, ORG_LDAP_SETTINGS, - ORG_GENERAL_SETTINGS, ORG_EMAIL_SETTINGS + ORG_GENERAL_SETTINGS, ORG_EMAIL_SETTINGS, ORG_SETTINGS ); } diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/OrgSettings.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/OrgSettings.java index 8a6e88fd4c..f4de180a68 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/OrgSettings.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/OrgSettings.java @@ -69,12 +69,12 @@ import com.google.common.base.Objects.ToStringHelper; @XmlAccessorType(XmlAccessType.FIELD) @XmlRootElement(name = "OrgSettings") @XmlType(propOrder = { - "orgGeneralSettings", + "generalSettings", "vAppLeaseSettings", "vAppTemplateLeaseSettings", - "orgLdapSettings", - "orgEmailSettings", - "orgPasswordPolicySettings" + "ldapSettings", + "emailSettings", + "passwordPolicy" }) public class OrgSettings extends ResourceType { public static Builder builder() { @@ -87,18 +87,18 @@ public class OrgSettings extends ResourceType { public static class Builder extends ResourceType.Builder { - private OrgGeneralSettings orgGeneralSettings; + private OrgGeneralSettings generalSettings; private OrgLeaseSettings vAppLeaseSettings; private OrgVAppTemplateLeaseSettings vAppTemplateLeaseSettings; - private OrgLdapSettings orgLdapSettings; - private OrgEmailSettings orgEmailSettings; - private OrgPasswordPolicySettings orgPasswordPolicySettings; + private OrgLdapSettings ldapSettings; + private OrgEmailSettings emailSettings; + private OrgPasswordPolicySettings passwordPolicy; /** - * @see OrgSettings#getOrgGeneralSettings() + * @see OrgSettings#getGeneralSettings() */ - public Builder orgGeneralSettings(OrgGeneralSettings orgGeneralSettings) { - this.orgGeneralSettings = orgGeneralSettings; + public Builder orgGeneralSettings(OrgGeneralSettings generalSettings) { + this.generalSettings = generalSettings; return this; } @@ -119,32 +119,32 @@ public class OrgSettings extends ResourceType { } /** - * @see OrgSettings#getOrgLdapSettings() + * @see OrgSettings#getLdapSettings() */ - public Builder orgLdapSettings(OrgLdapSettings orgLdapSettings) { - this.orgLdapSettings = orgLdapSettings; + public Builder orgLdapSettings(OrgLdapSettings ldapSettings) { + this.ldapSettings = ldapSettings; return this; } /** - * @see OrgSettings#getOrgEmailSettings() + * @see OrgSettings#getEmailSettings() */ - public Builder orgEmailSettings(OrgEmailSettings orgEmailSettings) { - this.orgEmailSettings = orgEmailSettings; + public Builder orgEmailSettings(OrgEmailSettings emailSettings) { + this.emailSettings = emailSettings; return this; } /** - * @see OrgSettings#getOrgPasswordPolicySettings() + * @see OrgSettings#getPasswordPolicy() */ - public Builder orgPasswordPolicySettings(OrgPasswordPolicySettings orgPasswordPolicySettings) { - this.orgPasswordPolicySettings = orgPasswordPolicySettings; + public Builder passwordPolicy(OrgPasswordPolicySettings passwordPolicy) { + this.passwordPolicy = passwordPolicy; return this; } public OrgSettings build() { - return new OrgSettings(href, type, links, orgGeneralSettings, vAppLeaseSettings, - vAppTemplateLeaseSettings, orgLdapSettings, orgEmailSettings, orgPasswordPolicySettings); + return new OrgSettings(href, type, links, generalSettings, vAppLeaseSettings, + vAppTemplateLeaseSettings, ldapSettings, emailSettings, passwordPolicy); } @@ -191,12 +191,12 @@ public class OrgSettings extends ResourceType { } public Builder fromOrgSettings(OrgSettings in) { return fromResourceType(in) - .orgGeneralSettings(in.getOrgGeneralSettings()) + .orgGeneralSettings(in.getGeneralSettings()) .vAppLeaseSettings(in.getVAppLeaseSettings()) .vAppTemplateLeaseSettings(in.getVAppTemplateLeaseSettings()) - .orgLdapSettings(in.getOrgLdapSettings()) - .orgEmailSettings(in.getOrgEmailSettings()) - .orgPasswordPolicySettings(in.getOrgPasswordPolicySettings()); + .orgLdapSettings(in.getLdapSettings()) + .orgEmailSettings(in.getEmailSettings()) + .passwordPolicy(in.getPasswordPolicy()); } } @@ -205,32 +205,33 @@ public class OrgSettings extends ResourceType { // For JAXB } - public OrgSettings(URI href, String type, Set links, - OrgGeneralSettings orgGeneralSettings, + public OrgSettings(URI href, String type, Set links, + OrgGeneralSettings generalSettings, OrgLeaseSettings vAppLeaseSettings, OrgVAppTemplateLeaseSettings vAppTemplateLeaseSettings, - OrgLdapSettings orgLdapSettings, OrgEmailSettings orgEmailSettings, - OrgPasswordPolicySettings orgPasswordPolicySettings) { + OrgLdapSettings ldapSettings, OrgEmailSettings emailSettings, + OrgPasswordPolicySettings passwordPolicy) { super(href, type, links); - this.orgGeneralSettings = orgGeneralSettings; + this.generalSettings = generalSettings; this.vAppLeaseSettings = vAppLeaseSettings; this.vAppTemplateLeaseSettings = vAppTemplateLeaseSettings; - this.orgLdapSettings = orgLdapSettings; - this.orgPasswordPolicySettings = orgPasswordPolicySettings; + this.ldapSettings = ldapSettings; + this.emailSettings = emailSettings; + this.passwordPolicy = passwordPolicy; } @XmlElement(name = "OrgGeneralSettings") - protected OrgGeneralSettings orgGeneralSettings; + protected OrgGeneralSettings generalSettings; @XmlElement(name = "VAppLeaseSettings") protected OrgLeaseSettings vAppLeaseSettings; @XmlElement(name = "VAppTemplateLeaseSettings") protected OrgVAppTemplateLeaseSettings vAppTemplateLeaseSettings; @XmlElement(name = "OrgLdapSettings") - protected OrgLdapSettings orgLdapSettings; + protected OrgLdapSettings ldapSettings; @XmlElement(name = "OrgEmailSettings") - protected OrgEmailSettings orgEmailSettings; + protected OrgEmailSettings emailSettings; @XmlElement(name = "OrgPasswordPolicySettings") - protected OrgPasswordPolicySettings orgPasswordPolicySettings; + protected OrgPasswordPolicySettings passwordPolicy; /** * Gets the value of the orgGeneralSettings property. @@ -240,8 +241,8 @@ public class OrgSettings extends ResourceType { * {@link OrgGeneralSettings } * */ - public OrgGeneralSettings getOrgGeneralSettings() { - return orgGeneralSettings; + public OrgGeneralSettings getGeneralSettings() { + return generalSettings; } /** @@ -276,8 +277,8 @@ public class OrgSettings extends ResourceType { * {@link OrgLdapSettings } * */ - public OrgLdapSettings getOrgLdapSettings() { - return orgLdapSettings; + public OrgLdapSettings getLdapSettings() { + return ldapSettings; } /** @@ -288,8 +289,8 @@ public class OrgSettings extends ResourceType { * {@link OrgEmailSettings } * */ - public OrgEmailSettings getOrgEmailSettings() { - return orgEmailSettings; + public OrgEmailSettings getEmailSettings() { + return emailSettings; } /** @@ -300,8 +301,8 @@ public class OrgSettings extends ResourceType { * {@link OrgPasswordPolicySettings } * */ - public OrgPasswordPolicySettings getOrgPasswordPolicySettings() { - return orgPasswordPolicySettings; + public OrgPasswordPolicySettings getPasswordPolicy() { + return passwordPolicy; } @Override @@ -312,34 +313,34 @@ public class OrgSettings extends ResourceType { return false; OrgSettings that = OrgSettings.class.cast(o); return super.equals(that) && - equal(orgGeneralSettings, that.orgGeneralSettings) && + equal(generalSettings, that.generalSettings) && equal(vAppLeaseSettings, that.vAppLeaseSettings) && equal(vAppTemplateLeaseSettings, that.vAppTemplateLeaseSettings) && - equal(orgLdapSettings, that.orgLdapSettings) && - equal(orgEmailSettings, that.orgEmailSettings) && - equal(orgPasswordPolicySettings, that.orgPasswordPolicySettings); + equal(ldapSettings, that.ldapSettings) && + equal(emailSettings, that.emailSettings) && + equal(passwordPolicy, that.passwordPolicy); } @Override public int hashCode() { return Objects.hashCode(super.hashCode(), - orgGeneralSettings, + generalSettings, vAppLeaseSettings, vAppTemplateLeaseSettings, - orgLdapSettings, - orgEmailSettings, - orgPasswordPolicySettings); + ldapSettings, + emailSettings, + passwordPolicy); } @Override public ToStringHelper string() { return super.string() - .add("orgGeneralSettings", orgGeneralSettings) + .add("generalSettings", generalSettings) .add("vAppLeaseSettings", vAppLeaseSettings) .add("vAppTemplateLeaseSettings", vAppTemplateLeaseSettings) - .add("orgLdapSettings", orgLdapSettings) - .add("orgEmailSettings", orgEmailSettings) - .add("orgPasswordPolicySettings", orgPasswordPolicySettings); + .add("ldapSettings", ldapSettings) + .add("emailSettings", emailSettings) + .add("passwordPolicy", passwordPolicy); } } diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/AdminOrgAsyncClient.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/AdminOrgAsyncClient.java index 8dba6a872d..eda625bd03 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/AdminOrgAsyncClient.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/AdminOrgAsyncClient.java @@ -38,6 +38,7 @@ import org.jclouds.vcloud.director.v1_5.domain.OrgGeneralSettings; import org.jclouds.vcloud.director.v1_5.domain.OrgLdapSettings; import org.jclouds.vcloud.director.v1_5.domain.OrgLeaseSettings; import org.jclouds.vcloud.director.v1_5.domain.OrgPasswordPolicySettings; +import org.jclouds.vcloud.director.v1_5.domain.OrgSettings; import org.jclouds.vcloud.director.v1_5.domain.OrgVAppTemplateLeaseSettings; import org.jclouds.vcloud.director.v1_5.filters.AddVCloudAuthorizationToRequest; import org.jclouds.vcloud.director.v1_5.functions.ThrowVCloudErrorOn4xx; @@ -57,9 +58,29 @@ public interface AdminOrgAsyncClient extends OrgAsyncClient { // POST /admin/org/{id}/groups -// GET /admin/org/{id}/settings - -// PUT /admin/org/{id}/settings + /** + * @see AdminOrgClient#getSettings(URI) + */ + @GET + @Path("/settings") + @Consumes + @JAXBResponseParser + @ExceptionParser(ThrowVCloudErrorOn4xx.class) + ListenableFuture getSettings( + @EndpointParam URI orgRef); + + /** + * @see AdminOrgClient#updateSettings(URI, OrgSettings) + */ + @PUT + @Path("/settings") + @Consumes(VCloudDirectorMediaType.ORG_SETTINGS) + @Produces(VCloudDirectorMediaType.ORG_SETTINGS) + @JAXBResponseParser + @ExceptionParser(ThrowVCloudErrorOn4xx.class) + ListenableFuture updateSettings( + @EndpointParam URI orgRef, + @BinderParam(BindToXMLPayload.class) OrgSettings settings); /** * @see AdminOrgClient#getEmailSettings(URI) diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/AdminOrgClient.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/AdminOrgClient.java index 9943b6df64..af752307ce 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/AdminOrgClient.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/AdminOrgClient.java @@ -28,6 +28,7 @@ import org.jclouds.vcloud.director.v1_5.domain.OrgGeneralSettings; import org.jclouds.vcloud.director.v1_5.domain.OrgLdapSettings; import org.jclouds.vcloud.director.v1_5.domain.OrgLeaseSettings; import org.jclouds.vcloud.director.v1_5.domain.OrgPasswordPolicySettings; +import org.jclouds.vcloud.director.v1_5.domain.OrgSettings; import org.jclouds.vcloud.director.v1_5.domain.OrgVAppTemplateLeaseSettings; /** @@ -45,9 +46,29 @@ public interface AdminOrgClient extends OrgClient { // POST /admin/org/{id}/groups -// GET /admin/org/{id}/settings + /** + * Gets organizational settings for this organization. + * + *
    +    * GET /admin/org/{id}/settings
    +    * 
    + * + * @param orgRef the reference for the admin org + * @return the settings + */ + OrgSettings getSettings(URI orgRef); -// PUT /admin/org/{id}/settings + /** + * Updates organizational settings for this organization. + * + *
    +    * PUT /admin/org/{id}/settings
    +    * 
    + * @param orgRef the reference for the admin org + * @param newSettings the requested updated settings + * @return the resultant settings + */ + OrgSettings updateSettings(URI orgRef, OrgSettings newSettings); /** * Retrieves email settings for an organization. diff --git a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/domain/Checks.java b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/domain/Checks.java index c6f07b3735..13c1ba76bc 100644 --- a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/domain/Checks.java +++ b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/domain/Checks.java @@ -528,10 +528,10 @@ public class Checks { } } - public static void checkOrgSetting(OrgSettings settings) { + public static void checkOrgSettings(OrgSettings settings) { // Check optional fields - if (settings.getOrgGeneralSettings() != null) { - checkGeneralSettings(settings.getOrgGeneralSettings()); + if (settings.getGeneralSettings() != null) { + checkGeneralSettings(settings.getGeneralSettings()); } if (settings.getVAppLeaseSettings() != null) { checkVAppLeaseSettings(settings.getVAppLeaseSettings()); @@ -539,14 +539,14 @@ public class Checks { if (settings.getVAppTemplateLeaseSettings() != null) { checkVAppTemplateLeaseSettings(settings.getVAppTemplateLeaseSettings()); } - if (settings.getOrgLdapSettings() != null) { - checkLdapSettings(settings.getOrgLdapSettings()); + if (settings.getLdapSettings() != null) { + checkLdapSettings(settings.getLdapSettings()); } - if (settings.getOrgEmailSettings() != null) { - checkEmailSettings(settings.getOrgEmailSettings()); + if (settings.getEmailSettings() != null) { + checkEmailSettings(settings.getEmailSettings()); } - if (settings.getOrgPasswordPolicySettings() != null) { - checkPasswordPolicySettings(settings.getOrgPasswordPolicySettings()); + if (settings.getPasswordPolicy() != null) { + checkPasswordPolicySettings(settings.getPasswordPolicy()); } // parent type @@ -561,7 +561,6 @@ public class Checks { checkEmailAddress(settings.getFromEmailAddress()); assertNotNull(settings.getDefaultSubjectPrefix(), String.format(OBJ_FIELD_REQ, "OrgEmailSettings", "defaultSubjectPrefix")); assertNotNull(settings.isAlertEmailToAllAdmins(), String.format(OBJ_FIELD_REQ, "OrgEmailSettings", "isAlertEmailToAllAdmins")); - assertNotNull(settings.getAlertEmailsTo(), String.format(OBJ_FIELD_REQ, "OrgEmailSettings", "alertEmailsTo")); // optional // NOTE alertEmailsTo cannot be checked diff --git a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/AdminOrgClientExpectTest.java b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/AdminOrgClientExpectTest.java index 82b9855ebb..ddd092a076 100644 --- a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/AdminOrgClientExpectTest.java +++ b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/AdminOrgClientExpectTest.java @@ -30,6 +30,7 @@ import org.jclouds.vcloud.director.v1_5.domain.OrgGeneralSettings; import org.jclouds.vcloud.director.v1_5.domain.OrgLdapSettings; import org.jclouds.vcloud.director.v1_5.domain.OrgLeaseSettings; import org.jclouds.vcloud.director.v1_5.domain.OrgPasswordPolicySettings; +import org.jclouds.vcloud.director.v1_5.domain.OrgSettings; import org.jclouds.vcloud.director.v1_5.domain.OrgVAppTemplateLeaseSettings; import org.jclouds.vcloud.director.v1_5.domain.Reference; import org.jclouds.vcloud.director.v1_5.domain.SmtpServerSettings; @@ -54,9 +55,60 @@ public class AdminOrgClientExpectTest extends BaseVCloudDirectorRestClientExpect // POST /admin/org/{id}/groups -// GET /admin/org/{id}/settings - -// PUT /admin/org/{id}/settings + @Test + public void testGetSettings() { + VCloudDirectorClient client = requestsSendResponses(loginRequest, sessionResponse, + new VcloudHttpRequestPrimer() + .apiCommand("GET", "/admin/org/6f312e42-cd2b-488d-a2bb-97519cd57ed0/settings/") + .acceptAnyMedia() + .httpRequestBuilder().build(), + new VcloudHttpResponsePrimer() + .xmlFilePayload("/org/admin/settings.xml", + VCloudDirectorMediaType.ORG_SETTINGS) + .httpResponseBuilder().build()); + + OrgSettings expected = settings(); + + assertEquals(client.getAdminOrgClient().getSettings(orgRef.getURI()), expected); + } + + public static final OrgSettings settings() { + return OrgSettings.builder() + .type("application/vnd.vmware.admin.organizationSettings+xml") + .href(URI.create("https://vcloudbeta.bluelock.com/api/admin/org/6f312e42-cd2b-488d-a2bb-97519cd57ed0/settings/")) + .link(Link.builder() + .rel("edit") + .type("application/vnd.vmware.admin.organizationSettings+xml") + .href(URI.create("https://vcloudbeta.bluelock.com/api/admin/org/6f312e42-cd2b-488d-a2bb-97519cd57ed0/settings/")) + .build()) + + .build(); + } + + @Test + public void testUpdateSettings() { + VCloudDirectorClient client = requestsSendResponses(loginRequest, sessionResponse, + new VcloudHttpRequestPrimer() + .apiCommand("PUT", "/admin/org/6f312e42-cd2b-488d-a2bb-97519cd57ed0/settings/") + .xmlFilePayload("/org/admin/updateSettingsSource.xml", + VCloudDirectorMediaType.ORG_SETTINGS) + .acceptMedia(VCloudDirectorMediaType.ORG_SETTINGS) + .httpRequestBuilder().build(), + new VcloudHttpResponsePrimer() + .xmlFilePayload("/org/admin/updateSettings.xml", + VCloudDirectorMediaType.ORG_SETTINGS) + .httpResponseBuilder().build()); + + OrgSettings expected = updateSettings(); + + assertEquals(client.getAdminOrgClient().updateSettings(orgRef.getURI(), expected), expected); + } + + @Test + public static final OrgSettings updateSettings() { + return settings().toBuilder() + .build(); + } @Test public void testGetEmailSettings() { @@ -239,10 +291,10 @@ public class AdminOrgClientExpectTest extends BaseVCloudDirectorRestClientExpect } @Test - public void testUpdateOrgPasswordPolicy() { + public void testUpdatePasswordPolicy() { VCloudDirectorClient client = requestsSendResponses(loginRequest, sessionResponse, new VcloudHttpRequestPrimer() - .apiCommand("PUT", "/admin/org/???/settings/passwordPolicy") + .apiCommand("PUT", "/admin/org/6f312e42-cd2b-488d-a2bb-97519cd57ed0/settings/passwordPolicy") .xmlFilePayload("/org/admin/updatePasswordPolicySource.xml", VCloudDirectorMediaType.ORG_PASSWORD_POLICY_SETTINGS) .acceptMedia(VCloudDirectorMediaType.ORG_PASSWORD_POLICY_SETTINGS) @@ -269,7 +321,7 @@ public class AdminOrgClientExpectTest extends BaseVCloudDirectorRestClientExpect public void testGetVAppLeaseSettings() { VCloudDirectorClient client = requestsSendResponses(loginRequest, sessionResponse, new VcloudHttpRequestPrimer() - .apiCommand("GET", "/admin/org/???/settings/vAppLeaseSettings") + .apiCommand("GET", "/admin/org/6f312e42-cd2b-488d-a2bb-97519cd57ed0/settings/vAppLeaseSettings") .acceptAnyMedia() .httpRequestBuilder().build(), new VcloudHttpResponsePrimer() @@ -292,7 +344,7 @@ public class AdminOrgClientExpectTest extends BaseVCloudDirectorRestClientExpect public void testUpdateOrgVAppLeaseSettings() { VCloudDirectorClient client = requestsSendResponses(loginRequest, sessionResponse, new VcloudHttpRequestPrimer() - .apiCommand("PUT", "/admin/org/???/settings/vAppLeaseSettings") + .apiCommand("PUT", "/admin/org/6f312e42-cd2b-488d-a2bb-97519cd57ed0/settings/vAppLeaseSettings") .xmlFilePayload("/org/admin/updateVAppLeaseSettingsSource.xml", VCloudDirectorMediaType.ORG_LEASE_SETTINGS) .acceptMedia(VCloudDirectorMediaType.ORG_LEASE_SETTINGS) @@ -317,7 +369,7 @@ public class AdminOrgClientExpectTest extends BaseVCloudDirectorRestClientExpect public void testGetVAppTemplateLeaseSettings() { VCloudDirectorClient client = requestsSendResponses(loginRequest, sessionResponse, new VcloudHttpRequestPrimer() - .apiCommand("GET", "/admin/org/???/settings/vAppTemplateLeaseSettings") + .apiCommand("GET", "/admin/org/6f312e42-cd2b-488d-a2bb-97519cd57ed0/settings/vAppTemplateLeaseSettings") .acceptAnyMedia() .httpRequestBuilder().build(), new VcloudHttpResponsePrimer() @@ -340,7 +392,7 @@ public class AdminOrgClientExpectTest extends BaseVCloudDirectorRestClientExpect public void testUpdateOrgVAppTemplateLeaseSettings() { VCloudDirectorClient client = requestsSendResponses(loginRequest, sessionResponse, new VcloudHttpRequestPrimer() - .apiCommand("PUT", "/admin/org/???/settings/vAppTemplateLeaseSettings") + .apiCommand("PUT", "/admin/org/6f312e42-cd2b-488d-a2bb-97519cd57ed0/settings/vAppTemplateLeaseSettings") .xmlFilePayload("/org/admin/updateVAppLeaseSettingsSource.xml", VCloudDirectorMediaType.ORG_VAPP_TEMPLATE_LEASE_SETTINGS) .acceptMedia(VCloudDirectorMediaType.ORG_VAPP_TEMPLATE_LEASE_SETTINGS) diff --git a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/AdminOrgClientLiveTest.java b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/AdminOrgClientLiveTest.java index cf341ab49b..17d2be7297 100644 --- a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/AdminOrgClientLiveTest.java +++ b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/AdminOrgClientLiveTest.java @@ -29,6 +29,7 @@ import org.jclouds.vcloud.director.v1_5.domain.OrgGeneralSettings; import org.jclouds.vcloud.director.v1_5.domain.OrgLdapSettings; import org.jclouds.vcloud.director.v1_5.domain.OrgLeaseSettings; import org.jclouds.vcloud.director.v1_5.domain.OrgPasswordPolicySettings; +import org.jclouds.vcloud.director.v1_5.domain.OrgSettings; import org.jclouds.vcloud.director.v1_5.domain.OrgVAppTemplateLeaseSettings; import org.jclouds.vcloud.director.v1_5.domain.ReferenceType; import org.jclouds.vcloud.director.v1_5.domain.SmtpServerSettings; @@ -59,11 +60,13 @@ public class AdminOrgClientLiveTest extends BaseVCloudDirectorClientLiveTest { */ private ReferenceType orgRef; private AdminOrg org; - OrgEmailSettings emailSettings; - OrgGeneralSettings generalSettings; - OrgPasswordPolicySettings passwordPolicy; - OrgLeaseSettings vAppLeaseSettings; - OrgVAppTemplateLeaseSettings vAppTemplateLeaseSettings; + private OrgSettings settings, newSettings; + private OrgEmailSettings emailSettings, newEmailSettings; + private OrgGeneralSettings generalSettings, newGeneralSettings; + private OrgLdapSettings ldapSettings, newLdapSettings; + private OrgPasswordPolicySettings passwordPolicy, newPasswordPolicy; + private OrgLeaseSettings vAppLeaseSettings, newVAppLeaseSettings; + private OrgVAppTemplateLeaseSettings vAppTemplateLeaseSettings, newVAppTemplateLeaseSettings; @Override @BeforeClass(inheritGroups = true) @@ -79,9 +82,7 @@ public class AdminOrgClientLiveTest extends BaseVCloudDirectorClientLiveTest { // POST /admin/org/{id}/groups -// GET /admin/org/{id}/settings - -// PUT /admin/org/{id}/settings + @Test(testName = "GET /admin/org/{id}/settings/emailSettings") public void testGetEmailSettings() { @@ -109,7 +110,7 @@ public class AdminOrgClientLiveTest extends BaseVCloudDirectorClientLiveTest { .build(); try { - emailSettings = emailSettings.toBuilder() + newEmailSettings = emailSettings.toBuilder() .isDefaultSmtpServer(!isDefaultSmtpServer) .isDefaultOrgEmail(!isDefaultOrgEmail) .fromEmailAddress(newFromEmailAddress) @@ -119,7 +120,7 @@ public class AdminOrgClientLiveTest extends BaseVCloudDirectorClientLiveTest { .build(); emailSettings = orgClient.updateEmailSettings( - orgRef.getURI(), emailSettings); + orgRef.getURI(), newEmailSettings); assertTrue(equal(emailSettings.isDefaultSmtpServer(), !isDefaultSmtpServer), String.format(OBJ_FIELD_UPDATABLE, @@ -175,7 +176,7 @@ public class AdminOrgClientLiveTest extends BaseVCloudDirectorClientLiveTest { Integer delayAfterPowerOnSeconds = generalSettings.getDelayAfterPowerOnSeconds(); try { - generalSettings = generalSettings.toBuilder() + newGeneralSettings = generalSettings.toBuilder() // .canPublishCatalogs(!canPublishCatalogs) .deployedVMQuota(deployedVMQuota+1) .storedVmQuota(storedVmQuota+1) @@ -184,7 +185,7 @@ public class AdminOrgClientLiveTest extends BaseVCloudDirectorClientLiveTest { .build(); generalSettings = orgClient.updateGeneralSettings( - orgRef.getURI(), generalSettings); + orgRef.getURI(), newGeneralSettings); // assertTrue(equal(generalSettings.canPublishCatalogs(), !canPublishCatalogs), // String.format(OBJ_FIELD_UPDATABLE, @@ -220,8 +221,8 @@ public class AdminOrgClientLiveTest extends BaseVCloudDirectorClientLiveTest { } @Test(testName = "GET /admin/org/{id}/settings/ldap") - public void getLdapSettings() { - OrgLdapSettings ldapSettings = orgClient.getLdapSettings(orgRef.getURI()); + public void testGetLdapSettings() { + ldapSettings = orgClient.getLdapSettings(orgRef.getURI()); Checks.checkLdapSettings(ldapSettings); } @@ -241,14 +242,14 @@ public class AdminOrgClientLiveTest extends BaseVCloudDirectorClientLiveTest { Integer accountLockoutIntervalMinutes = passwordPolicy.getAccountLockoutIntervalMinutes(); try { - passwordPolicy = passwordPolicy.toBuilder() + newPasswordPolicy = passwordPolicy.toBuilder() .accountLockoutEnabled(!accountLockoutEnabled) .invalidLoginsBeforeLockout(invalidLoginsBeforeLockout+1) .accountLockoutIntervalMinutes(accountLockoutIntervalMinutes+1) .build(); passwordPolicy = orgClient.updatePasswordPolicy( - orgRef.getURI(), passwordPolicy); + orgRef.getURI(), newPasswordPolicy); assertTrue(equal(passwordPolicy.isAccountLockoutEnabled(), !accountLockoutEnabled), String.format(OBJ_FIELD_UPDATABLE, @@ -290,14 +291,14 @@ public class AdminOrgClientLiveTest extends BaseVCloudDirectorClientLiveTest { Integer deploymentLeaseSeconds = vAppLeaseSettings.getDeploymentLeaseSeconds(); try { - vAppLeaseSettings = vAppLeaseSettings.toBuilder() + newVAppLeaseSettings = vAppLeaseSettings.toBuilder() .deleteOnStorageLeaseExpiration(!deleteOnStorageLeaseExpiration) .storageLeaseSeconds(storageLeaseSeconds+1) .deploymentLeaseSeconds(deploymentLeaseSeconds+1) .build(); vAppLeaseSettings = orgClient.updateVAppLeaseSettings( - orgRef.getURI(), vAppLeaseSettings); + orgRef.getURI(), newVAppLeaseSettings); assertTrue(equal(vAppLeaseSettings.deleteOnStorageLeaseExpiration(), !deleteOnStorageLeaseExpiration), String.format(OBJ_FIELD_UPDATABLE, @@ -338,13 +339,13 @@ public class AdminOrgClientLiveTest extends BaseVCloudDirectorClientLiveTest { Integer storageLeaseSeconds = vAppTemplateLeaseSettings.getStorageLeaseSeconds(); try { - vAppTemplateLeaseSettings = vAppTemplateLeaseSettings.toBuilder() + newVAppTemplateLeaseSettings = vAppTemplateLeaseSettings.toBuilder() .deleteOnStorageLeaseExpiration(!deleteOnStorageLeaseExpiration) .storageLeaseSeconds(storageLeaseSeconds+1) .build(); vAppTemplateLeaseSettings = orgClient.updateVAppTemplateLeaseSettings( - orgRef.getURI(), vAppTemplateLeaseSettings); + orgRef.getURI(), newVAppTemplateLeaseSettings); assertTrue(equal(vAppTemplateLeaseSettings.deleteOnStorageLeaseExpiration(), !deleteOnStorageLeaseExpiration), String.format(OBJ_FIELD_UPDATABLE, @@ -366,4 +367,75 @@ public class AdminOrgClientLiveTest extends BaseVCloudDirectorClientLiveTest { orgRef.getURI(), vAppTemplateLeaseSettings); } } + + @Test(testName = "GET /admin/org/{id}/settings/settings", + dependsOnMethods = { "testGetGeneralSettings", + "testGetVAppLeaseSettings", + "testGetVAppTemplateLeaseSettings", + "testGetLdapSettings", + "testGetEmailSettings", + "testGetPasswordPolicy"}) + public void testGetSettings() { + settings = orgClient.getSettings(orgRef.getURI()); + + Checks.checkOrgSettings(settings); + } + + @Test(testName = "PUT /admin/org/{id}/settings/settings", + dependsOnMethods = { "testUpdateGeneralSettings", + "testUpdateVAppLeaseSettings", + "testUpdateVAppTemplateLeaseSettings", + "testUpdateEmailSettings", + "testUpdatePasswordPolicy"}, + enabled = false ) + public void testUpdateSettings() { + try { + newSettings = settings.toBuilder() + .orgGeneralSettings(newGeneralSettings) + .vAppLeaseSettings(newVAppLeaseSettings) + .vAppTemplateLeaseSettings(newVAppTemplateLeaseSettings) + .orgLdapSettings(newLdapSettings) + .orgEmailSettings(newEmailSettings) + .passwordPolicy(newPasswordPolicy) + .build(); + + settings = orgClient.updateSettings( + orgRef.getURI(), newSettings); + + assertTrue(equal(settings.getGeneralSettings(), newGeneralSettings), + String.format(OBJ_FIELD_UPDATABLE, + "orgSettings", "generalSettings")); + assertTrue(equal(settings.getVAppLeaseSettings(), newVAppLeaseSettings), + String.format(OBJ_FIELD_UPDATABLE, + "orgSettings", "vAppLeaseSettings")); + assertTrue(equal(settings.getVAppTemplateLeaseSettings(), newVAppTemplateLeaseSettings), + String.format(OBJ_FIELD_UPDATABLE, + "orgSettings", "vAppTemplateLeaseSettings")); + assertTrue(equal(settings.getLdapSettings(), newLdapSettings), + String.format(OBJ_FIELD_UPDATABLE, + "orgSettings", "ldapSettings")); + assertTrue(equal(settings.getEmailSettings(), newEmailSettings), + String.format(OBJ_FIELD_UPDATABLE, + "orgSettings", "emailSettings")); + assertTrue(equal(settings.getPasswordPolicy(), newPasswordPolicy), + String.format(OBJ_FIELD_UPDATABLE, + "orgSettings", "passwordPolicy")); + + //TODO negative tests? + + Checks.checkOrgSettings(settings); + } finally { + settings = settings.toBuilder() + .orgGeneralSettings(generalSettings) + .vAppLeaseSettings(vAppLeaseSettings) + .vAppTemplateLeaseSettings(vAppTemplateLeaseSettings) + .orgLdapSettings(ldapSettings) + .orgEmailSettings(emailSettings) + .passwordPolicy(passwordPolicy) + .build(); + + settings = orgClient.updateSettings( + orgRef.getURI(), settings); + } + } } From 8e46d9e9ecabb6b4fa8241bcbab46c1c3d3c3f54 Mon Sep 17 00:00:00 2001 From: danikov Date: Sun, 11 Mar 2012 20:34:22 +0000 Subject: [PATCH 19/20] get adminOrg --- .../v1_5/VCloudDirectorMediaType.java | 12 +- .../vcloud/director/v1_5/domain/AdminOrg.java | 11 +- .../director/v1_5/domain/CatalogsList.java | 10 +- .../director/v1_5/domain/GroupsList.java | 2 +- .../vcloud/director/v1_5/domain/Networks.java | 6 +- .../vcloud/director/v1_5/domain/Org.java | 10 +- .../director/v1_5/domain/OrgSettings.java | 12 +- .../director/v1_5/domain/UsersList.java | 6 +- .../vcloud/director/v1_5/domain/Vdcs.java | 4 +- .../v1_5/features/AdminOrgAsyncClient.java | 15 +- .../v1_5/features/AdminOrgClient.java | 19 +- .../v1_5/features/OrgAsyncClient.java | 2 +- .../vcloud/director/v1_5/domain/Checks.java | 40 +++ .../features/AdminOrgClientExpectTest.java | 263 ++++++++++++++++-- .../v1_5/features/AdminOrgClientLiveTest.java | 26 +- .../src/test/resources/org/admin/org.xml | 86 ++++++ 16 files changed, 448 insertions(+), 76 deletions(-) create mode 100644 labs/vcloud-director/src/test/resources/org/admin/org.xml diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/VCloudDirectorMediaType.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/VCloudDirectorMediaType.java index 354bf95e15..be26e4b8c0 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/VCloudDirectorMediaType.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/VCloudDirectorMediaType.java @@ -129,7 +129,7 @@ public class VCloudDirectorMediaType { public static final String ADMIN_CATALOG = "application/vnd.vmware.admin.catalog+xml"; - public static final String ADMIN_ORGANIZATION = "application/vnd.vmware.admin.organization+xml"; + public static final String ADMIN_ORG = "application/vnd.vmware.admin.organization+xml"; public static final String PUBLISH_CATALOG_PARAMS = "application/vnd.vmware.admin.publishCatalogParams+xml"; @@ -149,8 +149,11 @@ public class VCloudDirectorMediaType { public static final String ORG_SETTINGS = "application/vnd.vmware.admin.orgSettings+xml"; + public static final String ADMIN_NETWORK = "application/vnd.vmware.admin.network+xml"; + + public static final String ADMIN_ORG_NETWORK = "application/vnd.vmware.admin.orgNetwork+xml"; + /** - * * All acceptable media types. * * This list must be updated whenever a new media type constant is added. @@ -162,13 +165,14 @@ public class VCloudDirectorMediaType { MEDIA, OWNER, VDC, ADMIN_USER, V_APP, V_APP_TEMPLATE, CAPTURE_VAPP_PARAMS, CLONE_V_APP_PARAMS, CLONE_V_APP_TEMPLATE_PARAMS, COMPOSE_VAPP_PARAMS, INSTANTIATE_VAPP_TEMPLATE_PARAMS, - UPLOAD_VAPP_TEMPLATE_PARAMS, ADMIN_CATALOG, ADMIN_ORGANIZATION, + UPLOAD_VAPP_TEMPLATE_PARAMS, ADMIN_CATALOG, ADMIN_ORG, QUERY_RESULT_RECORDS, QUERY_RESULT_REFERENCES, QUERY_RESULT_ID_RECORDS, CONTROL_ACCESS, VAPP_TEMPLATE, CUSTOMIZATION_SECTION, GUEST_CUSTOMIZATION_SECTION, NETWORK_SECTION, NETWORK_CONFIG_SECTION, NETWORK_CONNECTION_SECTION, CLONE_MEDIA_PARAMS, LEASE_SETTINGS_SECTION, RELOCATE_TEMPLATE, ENVELOPE, PUBLISH_CATALOG_PARAMS, GROUP, ORG_VAPP_TEMPLATE_LEASE_SETTINGS, ORG_LEASE_SETTINGS, ORG_PASSWORD_POLICY_SETTINGS, ORG_LDAP_SETTINGS, - ORG_GENERAL_SETTINGS, ORG_EMAIL_SETTINGS, ORG_SETTINGS + ORG_GENERAL_SETTINGS, ORG_EMAIL_SETTINGS, ORG_SETTINGS, ADMIN_NETWORK, + ADMIN_ORG_NETWORK ); } diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/AdminOrg.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/AdminOrg.java index a940c0cfca..3caf989887 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/AdminOrg.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/AdminOrg.java @@ -21,6 +21,9 @@ package org.jclouds.vcloud.director.v1_5.domain; import static com.google.common.base.Objects.equal; +import java.net.URI; +import java.util.Set; + import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlElement; @@ -145,7 +148,8 @@ public class AdminOrg extends Org { } public AdminOrg build() { - return new AdminOrg(settings, users, groups, catalogs, vdcs, networks); + return new AdminOrg(href, type, links, description, tasksInProgress, id, + name, fullName, isEnabled, settings, users, groups, catalogs, vdcs, networks); } public T fromAdminOrg(AdminOrg in) { @@ -175,8 +179,11 @@ public class AdminOrg extends Org { // For JAXB } - protected AdminOrg(OrgSettings settings, UsersList users, GroupsList groups, + protected AdminOrg(URI href, String type, Set links, String description, + TasksInProgress tasksInProgress, String id, String name, String fullName, + Boolean enabled, OrgSettings settings, UsersList users, GroupsList groups, CatalogsList catalogs, Vdcs vdcs, Networks networks) { + super(href, type, links, description, tasksInProgress, id, name, fullName, enabled); this.settings = settings; this.users = users; this.groups = groups; diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/CatalogsList.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/CatalogsList.java index 36ff6d9d65..ee0b2af588 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/CatalogsList.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/CatalogsList.java @@ -67,6 +67,14 @@ public class CatalogsList { this.catalogReferences = checkNotNull(catalogReferences, "catalogReferences"); return this; } + + /** + * @see CatalogsList#getCatalogItems() + */ + public Builder catalog(Reference catalog) { + this.catalogReferences.add(checkNotNull(catalog, "catalog")); + return this; + } public CatalogsList build() { return new CatalogsList(catalogReferences); @@ -81,7 +89,7 @@ public class CatalogsList { // for JAXB } - private CatalogsList(Set tasks) { + private CatalogsList(Set catalogReferences) { this.catalogReferences = ImmutableSet.copyOf(checkNotNull(catalogReferences, "catalogReferences")); } diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/GroupsList.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/GroupsList.java index f74d9c6d77..7d2bb4ee40 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/GroupsList.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/GroupsList.java @@ -62,7 +62,7 @@ import com.google.common.collect.ImmutableList; @XmlAccessorType(XmlAccessType.FIELD) @XmlRootElement(name = "GroupsList") @XmlType(propOrder = { - "groupReference" + "groups" }) public class GroupsList { public static Builder builder() { diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/Networks.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/Networks.java index 01323bf708..a5558238b2 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/Networks.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/Networks.java @@ -30,6 +30,8 @@ import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlType; +import org.testng.collections.Lists; + import com.google.common.base.Objects; import com.google.common.base.Objects.ToStringHelper; import com.google.common.collect.ImmutableList; @@ -62,7 +64,7 @@ import com.google.common.collect.ImmutableList; */ @XmlAccessorType(XmlAccessType.FIELD) @XmlType(name = "Networks", propOrder = { - "network" + "networks" }) public class Networks { public static Builder builder() { @@ -75,7 +77,7 @@ public class Networks { public static class Builder { - private List networks; + private List networks = Lists.newArrayList(); /** * @see Networks#getNetwork() diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/Org.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/Org.java index 464208023c..06e54d5852 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/Org.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/Org.java @@ -59,8 +59,8 @@ public class Org extends EntityType { public static abstract class NewBuilder> extends EntityType.NewBuilder { - private String fullName; - private Boolean isEnabled; + protected String fullName; + protected Boolean isEnabled; /** * @see Org#getFullName() @@ -232,8 +232,10 @@ public class Org extends EntityType { // for JAXB } - public Org(URI href, String type, Set links, String description, Set tasks, String id, String name, String fullName, Boolean enabled) { - super(href, type, links, description, tasks, id, name); + public Org(URI href, String type, Set links, String description, + TasksInProgress tasksInProgress, String id, String name, + String fullName, Boolean enabled) { + super(href, type, links, description, tasksInProgress, id, name); this.fullName = fullName; isEnabled = enabled; } diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/OrgSettings.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/OrgSettings.java index f4de180a68..7bcc9451fa 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/OrgSettings.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/OrgSettings.java @@ -97,7 +97,7 @@ public class OrgSettings extends ResourceType { /** * @see OrgSettings#getGeneralSettings() */ - public Builder orgGeneralSettings(OrgGeneralSettings generalSettings) { + public Builder generalSettings(OrgGeneralSettings generalSettings) { this.generalSettings = generalSettings; return this; } @@ -121,7 +121,7 @@ public class OrgSettings extends ResourceType { /** * @see OrgSettings#getLdapSettings() */ - public Builder orgLdapSettings(OrgLdapSettings ldapSettings) { + public Builder ldapSettings(OrgLdapSettings ldapSettings) { this.ldapSettings = ldapSettings; return this; } @@ -129,7 +129,7 @@ public class OrgSettings extends ResourceType { /** * @see OrgSettings#getEmailSettings() */ - public Builder orgEmailSettings(OrgEmailSettings emailSettings) { + public Builder emailSettings(OrgEmailSettings emailSettings) { this.emailSettings = emailSettings; return this; } @@ -191,11 +191,11 @@ public class OrgSettings extends ResourceType { } public Builder fromOrgSettings(OrgSettings in) { return fromResourceType(in) - .orgGeneralSettings(in.getGeneralSettings()) + .generalSettings(in.getGeneralSettings()) .vAppLeaseSettings(in.getVAppLeaseSettings()) .vAppTemplateLeaseSettings(in.getVAppTemplateLeaseSettings()) - .orgLdapSettings(in.getLdapSettings()) - .orgEmailSettings(in.getEmailSettings()) + .ldapSettings(in.getLdapSettings()) + .emailSettings(in.getEmailSettings()) .passwordPolicy(in.getPasswordPolicy()); } } diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/UsersList.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/UsersList.java index 1e949d30fe..3e57b99809 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/UsersList.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/UsersList.java @@ -31,6 +31,8 @@ import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlRootElement; import javax.xml.bind.annotation.XmlType; +import org.testng.collections.Lists; + import com.google.common.base.Objects; import com.google.common.collect.ImmutableList; @@ -62,7 +64,7 @@ import com.google.common.collect.ImmutableList; @XmlAccessorType(XmlAccessType.FIELD) @XmlRootElement(name = "UsersList") @XmlType(propOrder = { - "userReference" + "users" }) public class UsersList { public static Builder builder() { @@ -74,7 +76,7 @@ public class UsersList { } public static class Builder { - private List users; + private List users = Lists.newArrayList(); /** * @see UsersList#getUsers() diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/Vdcs.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/Vdcs.java index 7d2467abf2..a55af00488 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/Vdcs.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/Vdcs.java @@ -31,6 +31,8 @@ import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlRootElement; import javax.xml.bind.annotation.XmlType; +import org.testng.collections.Lists; + import com.google.common.base.Objects; import com.google.common.base.Objects.ToStringHelper; import com.google.common.collect.ImmutableList; @@ -76,7 +78,7 @@ public class Vdcs { public static class Builder { - private List vdcs; + private List vdcs = Lists.newArrayList(); /** * @see Vdcs#getVdc() diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/AdminOrgAsyncClient.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/AdminOrgAsyncClient.java index eda625bd03..fea0a6d155 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/AdminOrgAsyncClient.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/AdminOrgAsyncClient.java @@ -33,6 +33,7 @@ import org.jclouds.rest.annotations.JAXBResponseParser; import org.jclouds.rest.annotations.RequestFilters; import org.jclouds.rest.binders.BindToXMLPayload; import org.jclouds.vcloud.director.v1_5.VCloudDirectorMediaType; +import org.jclouds.vcloud.director.v1_5.domain.AdminOrg; import org.jclouds.vcloud.director.v1_5.domain.OrgEmailSettings; import org.jclouds.vcloud.director.v1_5.domain.OrgGeneralSettings; import org.jclouds.vcloud.director.v1_5.domain.OrgLdapSettings; @@ -52,11 +53,15 @@ import com.google.common.util.concurrent.ListenableFuture; @RequestFilters(AddVCloudAuthorizationToRequest.class) public interface AdminOrgAsyncClient extends OrgAsyncClient { -// GET /admin/org/{id} - -// POST /admin/org/{id}/catalogs - -// POST /admin/org/{id}/groups + /** + * @see AdminOrgClient#getOrg(URI) + */ + @GET + @Consumes + @JAXBResponseParser + @ExceptionParser(ThrowVCloudErrorOn4xx.class) + ListenableFuture getOrg( + @EndpointParam URI orgRef); /** * @see AdminOrgClient#getSettings(URI) diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/AdminOrgClient.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/AdminOrgClient.java index af752307ce..471572b512 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/AdminOrgClient.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/AdminOrgClient.java @@ -22,6 +22,7 @@ import java.net.URI; import java.util.concurrent.TimeUnit; import org.jclouds.concurrent.Timeout; +import org.jclouds.vcloud.director.v1_5.domain.AdminOrg; import org.jclouds.vcloud.director.v1_5.domain.Group; import org.jclouds.vcloud.director.v1_5.domain.OrgEmailSettings; import org.jclouds.vcloud.director.v1_5.domain.OrgGeneralSettings; @@ -40,11 +41,19 @@ import org.jclouds.vcloud.director.v1_5.domain.OrgVAppTemplateLeaseSettings; @Timeout(duration = 180, timeUnit = TimeUnit.SECONDS) public interface AdminOrgClient extends OrgClient { -// GET /admin/org/{id} - -// POST /admin/org/{id}/catalogs - -// POST /admin/org/{id}/groups + /** + * Retrieves an admin view of an organization. + * The organization might be enabled or disabled. + * If enabled, the organization allows login and all other operations. + * + *
    +    * GET /admin/org/{id}
    +    * 
    + * + * @param orgRef the reference for the admin org + * @return the admin org + */ + AdminOrg getOrg(URI orgRef); /** * Gets organizational settings for this organization. diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/OrgAsyncClient.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/OrgAsyncClient.java index fa1e7cda69..98dc3bb731 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/OrgAsyncClient.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/OrgAsyncClient.java @@ -60,7 +60,7 @@ public interface OrgAsyncClient { @Consumes @JAXBResponseParser @ExceptionParser(ThrowVCloudErrorOn4xx.class) - ListenableFuture getOrg(@EndpointParam URI orgUri); + ListenableFuture getOrg(@EndpointParam URI orgUri); /** * @return asynchronous access to {@link Metadata.Readable} features diff --git a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/domain/Checks.java b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/domain/Checks.java index 13c1ba76bc..d6f966d534 100644 --- a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/domain/Checks.java +++ b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/domain/Checks.java @@ -232,6 +232,46 @@ public class Checks { checkEntityType(org); } + public static void checkAdminOrg(AdminOrg org) { + // required + assertNotNull(org.getSettings(), String.format(NOT_NULL_OBJECT_FMT, "settings", "AdminOrg")); + + // optional + if (org.getGroups() != null) { + checkGroupsList(org.getGroups()); + } + if (org.getCatalogs() != null) { + checkCatalogsList(org.getCatalogs()); + } + if (org.getVdcs() != null) { + checkVdcs(org.getVdcs()); + } + if (org.getNetworks() != null) { + checkNetworks(org.getNetworks()); + } + + // Check parent type + checkOrg(org); + } + + public static void checkCatalogsList(CatalogsList catalogList) { + for (Reference catalogItem : catalogList.getCatalogItems()) { + checkReferenceType(catalogItem); + } + } + + public static void checkVdcs(Vdcs vdcs) { + for (Reference vdc : vdcs.getVdcs()) { + checkReferenceType(vdc); + } + } + + public static void checkNetworks(Networks networks) { + for (Reference network : networks.getNetwork()) { + checkReferenceType(network); + } + } + public static void checkAdminCatalog(AdminCatalog catalog) { // Check parent type checkCatalogType(catalog); diff --git a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/AdminOrgClientExpectTest.java b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/AdminOrgClientExpectTest.java index ddd092a076..0ec249dfce 100644 --- a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/AdminOrgClientExpectTest.java +++ b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/AdminOrgClientExpectTest.java @@ -24,7 +24,11 @@ import java.net.URI; import org.jclouds.vcloud.director.v1_5.VCloudDirectorClient; import org.jclouds.vcloud.director.v1_5.VCloudDirectorMediaType; +import org.jclouds.vcloud.director.v1_5.domain.AdminOrg; +import org.jclouds.vcloud.director.v1_5.domain.CatalogsList; +import org.jclouds.vcloud.director.v1_5.domain.GroupsList; import org.jclouds.vcloud.director.v1_5.domain.Link; +import org.jclouds.vcloud.director.v1_5.domain.Networks; import org.jclouds.vcloud.director.v1_5.domain.OrgEmailSettings; import org.jclouds.vcloud.director.v1_5.domain.OrgGeneralSettings; import org.jclouds.vcloud.director.v1_5.domain.OrgLdapSettings; @@ -34,6 +38,8 @@ import org.jclouds.vcloud.director.v1_5.domain.OrgSettings; import org.jclouds.vcloud.director.v1_5.domain.OrgVAppTemplateLeaseSettings; import org.jclouds.vcloud.director.v1_5.domain.Reference; import org.jclouds.vcloud.director.v1_5.domain.SmtpServerSettings; +import org.jclouds.vcloud.director.v1_5.domain.UsersList; +import org.jclouds.vcloud.director.v1_5.domain.Vdcs; import org.jclouds.vcloud.director.v1_5.internal.BaseVCloudDirectorRestClientExpectTest; import org.testng.annotations.Test; @@ -49,13 +55,151 @@ public class AdminOrgClientExpectTest extends BaseVCloudDirectorRestClientExpect .href(URI.create(endpoint + "/admin/org/6f312e42-cd2b-488d-a2bb-97519cd57ed0")) .build(); -// GET /admin/org/{id} - -// POST /admin/org/{id}/catalogs - -// POST /admin/org/{id}/groups - @Test + public void testGetOrg() { + VCloudDirectorClient client = requestsSendResponses(loginRequest, sessionResponse, + new VcloudHttpRequestPrimer() + .apiCommand("GET", "/admin/org/6f312e42-cd2b-488d-a2bb-97519cd57ed0") + .acceptAnyMedia() + .httpRequestBuilder().build(), + new VcloudHttpResponsePrimer() + .xmlFilePayload("/org/admin/org.xml", + VCloudDirectorMediaType.ADMIN_ORG) + .httpResponseBuilder().build()); + + AdminOrg expected = adminOrg(); + + assertEquals(client.getAdminOrgClient().getOrg(orgRef.getURI()), expected); + } + + public static final AdminOrg adminOrg() { + return AdminOrg.builder() + .name("JClouds") + .id("urn:vcloud:org:6f312e42-cd2b-488d-a2bb-97519cd57ed0") + .type("application/vnd.vmware.admin.organization+xml") + .href(URI.create("https://vcloudbeta.bluelock.com/api/admin/org/6f312e42-cd2b-488d-a2bb-97519cd57ed0")) + .link(Link.builder() + .rel("down") + .type("application/vnd.vmware.vcloud.tasksList+xml") + .href(URI.create("https://vcloudbeta.bluelock.com/api/tasksList/6f312e42-cd2b-488d-a2bb-97519cd57ed0")) + .build()) + .link(Link.builder() + .rel("down") + .type("application/vnd.vmware.vcloud.metadata+xml") + .href(URI.create("https://vcloudbeta.bluelock.com/api/admin/org/6f312e42-cd2b-488d-a2bb-97519cd57ed0/metadata")) + .build()) + .link(Link.builder() + .rel("add") + .type("application/vnd.vmware.admin.catalog+xml") + .href(URI.create("https://vcloudbeta.bluelock.com/api/admin/org/6f312e42-cd2b-488d-a2bb-97519cd57ed0/catalogs")) + .build()) + .link(Link.builder() + .rel("add") + .type("application/vnd.vmware.admin.user+xml") + .href(URI.create("https://vcloudbeta.bluelock.com/api/admin/org/6f312e42-cd2b-488d-a2bb-97519cd57ed0/users")) + .build()) + .link(Link.builder() + .rel("add") + .type("application/vnd.vmware.admin.group+xml") + .href(URI.create("https://vcloudbeta.bluelock.com/api/admin/org/6f312e42-cd2b-488d-a2bb-97519cd57ed0/groups")) + .build()) + .link(Link.builder() + .rel("add") + .type("application/vnd.vmware.admin.orgNetwork+xml") + .href(URI.create("https://vcloudbeta.bluelock.com/api/admin/org/6f312e42-cd2b-488d-a2bb-97519cd57ed0/networks")) + .build()) + .link(Link.builder() + .rel("edit") + .type("application/vnd.vmware.admin.organization+xml") + .href(URI.create("https://vcloudbeta.bluelock.com/api/admin/org/6f312e42-cd2b-488d-a2bb-97519cd57ed0")) + .build()) + .link(Link.builder() + .rel("remove") + .href(URI.create("https://vcloudbeta.bluelock.com/api/admin/org/6f312e42-cd2b-488d-a2bb-97519cd57ed0")) + .build()) + .link(Link.builder() + .rel("alternate") + .type("application/vnd.vmware.vcloud.org+xml") + .href(URI.create("https://vcloudbeta.bluelock.com/api/org/6f312e42-cd2b-488d-a2bb-97519cd57ed0")) + .build()) + .description("") + .fullName("JClouds") + .isEnabled(true) + .settings(settings()) + .users(UsersList.builder() + .user(Reference.builder() + .type("application/vnd.vmware.admin.user+xml") + .name("adam.lowe@cloudsoftcorp.com") + .href(URI.create("https://vcloudbeta.bluelock.com/api/admin/user/672ebb67-d8ff-4201-9c1b-c1be869e526c")) + .build()) + .user(Reference.builder() + .type("application/vnd.vmware.admin.user+xml") + .name("adrian@jclouds.org") + .href(URI.create("https://vcloudbeta.bluelock.com/api/admin/user/8c360b93-ed25-4c9a-8e24-d48cd9966d93")) + .build()) + .user(Reference.builder() + .type("application/vnd.vmware.admin.user+xml") + .name("qunying.huang@enstratus.com") + .href(URI.create("https://vcloudbeta.bluelock.com/api/admin/user/967d317c-4273-4a95-b8a4-bf63b78e9c69")) + .build()) + .user(Reference.builder() + .type("application/vnd.vmware.admin.user+xml") + .name("dan@cloudsoftcorp.com") + .href(URI.create("https://vcloudbeta.bluelock.com/api/admin/user/ae75edd2-12de-414c-8e85-e6ea10442c08")) + .build()) + .user(Reference.builder() + .type("application/vnd.vmware.admin.user+xml") + .name("adk@cloudsoftcorp.com") + .href(URI.create("https://vcloudbeta.bluelock.com/api/admin/user/e9eb1b29-0404-4c5e-8ef7-e584acc51da9")) + .build()) + .build()) + .groups(GroupsList.builder() + .build()) + .catalogs(CatalogsList.builder() + .catalog(Reference.builder() + .type("application/vnd.vmware.admin.catalog+xml") + .name("QunyingTestCatalog") + .href(URI.create("https://vcloudbeta.bluelock.com/api/admin/catalog/7212e451-76e1-4631-b2de-ba1dfd8080e4")) + .build()) + .catalog(Reference.builder() + .type("application/vnd.vmware.admin.catalog+xml") + .name("Public") + .href(URI.create("https://vcloudbeta.bluelock.com/api/admin/catalog/9e08c2f6-077a-42ce-bece-d5332e2ebb5c")) + .build()) + .catalog(Reference.builder() + .type("application/vnd.vmware.admin.catalog+xml") + .name("dantest") + .href(URI.create("https://vcloudbeta.bluelock.com/api/admin/catalog/b542aff4-9f97-4f51-a126-4330fbf62f02")) + .build()) + .catalog(Reference.builder() + .type("application/vnd.vmware.admin.catalog+xml") + .name("test") + .href(URI.create("https://vcloudbeta.bluelock.com/api/admin/catalog/b7289d54-4ca4-497f-9a93-2d4afc97e3da")) + .build()) + .build()) + .vdcs(Vdcs.builder() + .vdc(Reference.builder() + .type("application/vnd.vmware.vcloud.vdc+xml") + .name("Cluster01-JClouds") + .href(URI.create("https://vcloudbeta.bluelock.com/api/vdc/d16d333b-e3c0-4176-845d-a5ee6392df07")) + .build()) + .build()) + .networks(Networks.builder() + .network(Reference.builder() + .type("application/vnd.vmware.admin.network+xml") + .name("ilsolation01-Jclouds") + .href(URI.create("https://vcloudbeta.bluelock.com/api/admin/network/f3ba8256-6f48-4512-aad6-600e85b4dc38")) + .build()) + .network(Reference.builder() + .type("application/vnd.vmware.admin.network+xml") + .name("internet01-Jclouds") + .href(URI.create("https://vcloudbeta.bluelock.com/api/admin/network/55a677cf-ab3f-48ae-b880-fab90421980c")) + .build()) + .build()) + .build(); + } + + @Test(enabled = false) public void testGetSettings() { VCloudDirectorClient client = requestsSendResponses(loginRequest, sessionResponse, new VcloudHttpRequestPrimer() @@ -74,18 +218,53 @@ public class AdminOrgClientExpectTest extends BaseVCloudDirectorRestClientExpect public static final OrgSettings settings() { return OrgSettings.builder() - .type("application/vnd.vmware.admin.organizationSettings+xml") - .href(URI.create("https://vcloudbeta.bluelock.com/api/admin/org/6f312e42-cd2b-488d-a2bb-97519cd57ed0/settings/")) + .type("application/vnd.vmware.admin.orgSettings+xml") + .href(URI.create("https://vcloudbeta.bluelock.com/api/admin/org/6f312e42-cd2b-488d-a2bb-97519cd57ed0/settings")) + .link(Link.builder() + .rel("down") + .type("application/vnd.vmware.admin.vAppTemplateLeaseSettings+xml") + .href(URI.create("https://vcloudbeta.bluelock.com/api/admin/org/6f312e42-cd2b-488d-a2bb-97519cd57ed0/settings/vAppTemplateLeaseSettings")) + .build()) + .link(Link.builder() + .rel("down") + .type("application/vnd.vmware.admin.organizationEmailSettings+xml") + .href(URI.create("https://vcloudbeta.bluelock.com/api/admin/org/6f312e42-cd2b-488d-a2bb-97519cd57ed0/settings/email")) + .build()) + .link(Link.builder() + .rel("down") + .type("application/vnd.vmware.admin.vAppLeaseSettings+xml") + .href(URI.create("https://vcloudbeta.bluelock.com/api/admin/org/6f312e42-cd2b-488d-a2bb-97519cd57ed0/settings/vAppLeaseSettings")) + .build()) + .link(Link.builder() + .rel("down") + .type("application/vnd.vmware.admin.organizationPasswordPolicySettings+xml") + .href(URI.create("https://vcloudbeta.bluelock.com/api/admin/org/6f312e42-cd2b-488d-a2bb-97519cd57ed0/settings/passwordPolicy")) + .build()) + .link(Link.builder() + .rel("down") + .type("application/vnd.vmware.admin.organizationGeneralSettings+xml") + .href(URI.create("https://vcloudbeta.bluelock.com/api/admin/org/6f312e42-cd2b-488d-a2bb-97519cd57ed0/settings/general")) + .build()) + .link(Link.builder() + .rel("down") + .type("application/vnd.vmware.admin.organizationLdapSettings+xml") + .href(URI.create("https://vcloudbeta.bluelock.com/api/admin/org/6f312e42-cd2b-488d-a2bb-97519cd57ed0/settings/ldap")) + .build()) .link(Link.builder() .rel("edit") - .type("application/vnd.vmware.admin.organizationSettings+xml") - .href(URI.create("https://vcloudbeta.bluelock.com/api/admin/org/6f312e42-cd2b-488d-a2bb-97519cd57ed0/settings/")) + .type("application/vnd.vmware.admin.orgSettings+xml") + .href(URI.create("https://vcloudbeta.bluelock.com/api/admin/org/6f312e42-cd2b-488d-a2bb-97519cd57ed0/settings")) .build()) - + .generalSettings(generalSettings()) + .vAppLeaseSettings(vAppLeaseSettings()) + .vAppTemplateLeaseSettings(vAppTemplateLeaseSettings()) + .ldapSettings(ldapSettings()) + .emailSettings(emailSettings()) + .passwordPolicy(passwordPolicy()) .build(); } - @Test + @Test(enabled = false) public void testUpdateSettings() { VCloudDirectorClient client = requestsSendResponses(loginRequest, sessionResponse, new VcloudHttpRequestPrimer() @@ -204,7 +383,18 @@ public class AdminOrgClientExpectTest extends BaseVCloudDirectorRestClientExpect public static final OrgGeneralSettings generalSettings() { return OrgGeneralSettings.builder() - + .type("application/vnd.vmware.admin.organizationGeneralSettings+xml") + .href(URI.create("https://vcloudbeta.bluelock.com/api/admin/org/6f312e42-cd2b-488d-a2bb-97519cd57ed0/settings/general")) + .link(Link.builder() + .rel("edit") + .type("application/vnd.vmware.admin.organizationGeneralSettings+xml") + .href(URI.create("https://vcloudbeta.bluelock.com/api/admin/org/6f312e42-cd2b-488d-a2bb-97519cd57ed0/settings/general")) + .build()) + .canPublishCatalogs(false) + .deployedVMQuota(0) + .storedVmQuota(0) + .useServerBootSequence(false) + .delayAfterPowerOnSeconds(0) .build(); } @@ -270,12 +460,12 @@ public class AdminOrgClientExpectTest extends BaseVCloudDirectorRestClientExpect VCloudDirectorMediaType.ORG_PASSWORD_POLICY_SETTINGS) .httpResponseBuilder().build()); - OrgPasswordPolicySettings expected = orgPasswordPolicy(); + OrgPasswordPolicySettings expected = passwordPolicy(); assertEquals(client.getAdminOrgClient().getPasswordPolicy(orgRef.getURI()), expected); } - public static final OrgPasswordPolicySettings orgPasswordPolicy() { + public static final OrgPasswordPolicySettings passwordPolicy() { return OrgPasswordPolicySettings.builder() .type("application/vnd.vmware.admin.organizationPasswordPolicySettings+xml") .link(Link.builder() @@ -310,7 +500,7 @@ public class AdminOrgClientExpectTest extends BaseVCloudDirectorRestClientExpect } public static final OrgPasswordPolicySettings updateOrgPasswordPolicy() { - return orgPasswordPolicy().toBuilder() + return passwordPolicy().toBuilder() .accountLockoutEnabled(true) .invalidLoginsBeforeLockout(6) .accountLockoutIntervalMinutes(11) @@ -329,14 +519,23 @@ public class AdminOrgClientExpectTest extends BaseVCloudDirectorRestClientExpect VCloudDirectorMediaType.ORG_LEASE_SETTINGS) .httpResponseBuilder().build()); - OrgLeaseSettings expected = orgVAppLeaseSettings(); + OrgLeaseSettings expected = vAppLeaseSettings(); assertEquals(client.getAdminOrgClient().getVAppLeaseSettings(orgRef.getURI()), expected); } - public static final OrgLeaseSettings orgVAppLeaseSettings() { + public static final OrgLeaseSettings vAppLeaseSettings() { return OrgLeaseSettings.builder() - + .type("application/vnd.vmware.admin.vAppLeaseSettings+xml") + .href(URI.create("https://vcloudbeta.bluelock.com/api/admin/org/6f312e42-cd2b-488d-a2bb-97519cd57ed0/settings/vAppLeaseSettings")) + .link(Link.builder() + .rel("edit") + .type("application/vnd.vmware.admin.vAppLeaseSettings+xml") + .href(URI.create("https://vcloudbeta.bluelock.com/api/admin/org/6f312e42-cd2b-488d-a2bb-97519cd57ed0/settings/vAppLeaseSettings")) + .build()) + .deleteOnStorageLeaseExpiration(false) + .deploymentLeaseSeconds(0) + .storageLeaseSeconds(0) .build(); } @@ -354,13 +553,13 @@ public class AdminOrgClientExpectTest extends BaseVCloudDirectorRestClientExpect VCloudDirectorMediaType.ORG_LEASE_SETTINGS) .httpResponseBuilder().build()); - OrgLeaseSettings expected = updateOrgVAppLeaseSettings(); + OrgLeaseSettings expected = updateVAppLeaseSettings(); assertEquals(client.getAdminOrgClient().updateVAppLeaseSettings(orgRef.getURI(), expected), expected); } - public static final OrgLeaseSettings updateOrgVAppLeaseSettings() { - return orgVAppLeaseSettings().toBuilder() + public static final OrgLeaseSettings updateVAppLeaseSettings() { + return vAppLeaseSettings().toBuilder() .build(); } @@ -377,14 +576,22 @@ public class AdminOrgClientExpectTest extends BaseVCloudDirectorRestClientExpect VCloudDirectorMediaType.ORG_VAPP_TEMPLATE_LEASE_SETTINGS) .httpResponseBuilder().build()); - OrgVAppTemplateLeaseSettings expected = orgVAppTemplateLeaseSettings(); + OrgVAppTemplateLeaseSettings expected = vAppTemplateLeaseSettings(); assertEquals(client.getAdminOrgClient().getVAppTemplateLeaseSettings(orgRef.getURI()), expected); } - public static final OrgVAppTemplateLeaseSettings orgVAppTemplateLeaseSettings() { + public static final OrgVAppTemplateLeaseSettings vAppTemplateLeaseSettings() { return OrgVAppTemplateLeaseSettings.builder() - + .type("application/vnd.vmware.admin.vAppTemplateLeaseSettings+xml") + .href(URI.create("https://vcloudbeta.bluelock.com/api/admin/org/6f312e42-cd2b-488d-a2bb-97519cd57ed0/settings/vAppTemplateLeaseSettings")) + .link(Link.builder() + .rel("edit") + .type("application/vnd.vmware.admin.vAppTemplateLeaseSettings+xml") + .href(URI.create("https://vcloudbeta.bluelock.com/api/admin/org/6f312e42-cd2b-488d-a2bb-97519cd57ed0/settings/vAppTemplateLeaseSettings")) + .build()) + .deleteOnStorageLeaseExpiration(false) + .storageLeaseSeconds(0) .build(); } @@ -402,13 +609,13 @@ public class AdminOrgClientExpectTest extends BaseVCloudDirectorRestClientExpect VCloudDirectorMediaType.ORG_VAPP_TEMPLATE_LEASE_SETTINGS) .httpResponseBuilder().build()); - OrgVAppTemplateLeaseSettings expected = updateOrgVAppTemplateLeaseSettings(); + OrgVAppTemplateLeaseSettings expected = updateVAppTemplateLeaseSettings(); assertEquals(client.getAdminOrgClient().updateVAppTemplateLeaseSettings(orgRef.getURI(), expected), expected); } - public static final OrgVAppTemplateLeaseSettings updateOrgVAppTemplateLeaseSettings() { - return orgVAppTemplateLeaseSettings().toBuilder() + public static final OrgVAppTemplateLeaseSettings updateVAppTemplateLeaseSettings() { + return vAppTemplateLeaseSettings().toBuilder() .build(); } diff --git a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/AdminOrgClientLiveTest.java b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/AdminOrgClientLiveTest.java index 17d2be7297..d174978356 100644 --- a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/AdminOrgClientLiveTest.java +++ b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/AdminOrgClientLiveTest.java @@ -59,7 +59,6 @@ public class AdminOrgClientLiveTest extends BaseVCloudDirectorClientLiveTest { * Shared state between dependant tests. */ private ReferenceType orgRef; - private AdminOrg org; private OrgSettings settings, newSettings; private OrgEmailSettings emailSettings, newEmailSettings; private OrgGeneralSettings generalSettings, newGeneralSettings; @@ -76,14 +75,13 @@ public class AdminOrgClientLiveTest extends BaseVCloudDirectorClientLiveTest { assertNotNull(orgRef, String.format(REF_REQ_LIVE, "admin org")); } -// GET /admin/org/{id} + @Test(testName = "GET /admin/org/{id}") + public void testGetAdminOrg() { + AdminOrg adminOrg = orgClient.getOrg(orgRef.getURI()); + + Checks.checkAdminOrg(adminOrg); + } -// POST /admin/org/{id}/catalogs - -// POST /admin/org/{id}/groups - - - @Test(testName = "GET /admin/org/{id}/settings/emailSettings") public void testGetEmailSettings() { emailSettings = orgClient.getEmailSettings(orgRef.getURI()); @@ -391,11 +389,11 @@ public class AdminOrgClientLiveTest extends BaseVCloudDirectorClientLiveTest { public void testUpdateSettings() { try { newSettings = settings.toBuilder() - .orgGeneralSettings(newGeneralSettings) + .generalSettings(newGeneralSettings) .vAppLeaseSettings(newVAppLeaseSettings) .vAppTemplateLeaseSettings(newVAppTemplateLeaseSettings) - .orgLdapSettings(newLdapSettings) - .orgEmailSettings(newEmailSettings) + .ldapSettings(newLdapSettings) + .emailSettings(newEmailSettings) .passwordPolicy(newPasswordPolicy) .build(); @@ -426,11 +424,11 @@ public class AdminOrgClientLiveTest extends BaseVCloudDirectorClientLiveTest { Checks.checkOrgSettings(settings); } finally { settings = settings.toBuilder() - .orgGeneralSettings(generalSettings) + .generalSettings(generalSettings) .vAppLeaseSettings(vAppLeaseSettings) .vAppTemplateLeaseSettings(vAppTemplateLeaseSettings) - .orgLdapSettings(ldapSettings) - .orgEmailSettings(emailSettings) + .ldapSettings(ldapSettings) + .emailSettings(emailSettings) .passwordPolicy(passwordPolicy) .build(); diff --git a/labs/vcloud-director/src/test/resources/org/admin/org.xml b/labs/vcloud-director/src/test/resources/org/admin/org.xml new file mode 100644 index 0000000000..5e0ee14a4f --- /dev/null +++ b/labs/vcloud-director/src/test/resources/org/admin/org.xml @@ -0,0 +1,86 @@ + + + + + + + + + + + + + JClouds + true + + + + + + + + + + + false + 0 + 0 + false + 0 + + + + false + 0 + 0 + + + + false + 0 + + + NONE + + + + true + true + + + true + + false + + + + + + + false + 5 + 10 + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file From 24db1774eb441fddafc55e66133aa1ed0aea147a Mon Sep 17 00:00:00 2001 From: danikov Date: Mon, 12 Mar 2012 03:20:32 +0000 Subject: [PATCH 20/20] org fix --- .../vcloud/director/v1_5/domain/AdminOrg.java | 6 +-- .../vcloud/director/v1_5/domain/Org.java | 2 +- .../features/AdminOrgClientExpectTest.java | 28 +++++------ .../v1_5/features/AdminOrgClientLiveTest.java | 46 ++++++++++--------- 4 files changed, 42 insertions(+), 40 deletions(-) diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/AdminOrg.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/AdminOrg.java index 3caf989887..d515889d09 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/AdminOrg.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/AdminOrg.java @@ -148,7 +148,7 @@ public class AdminOrg extends Org { } public AdminOrg build() { - return new AdminOrg(href, type, links, description, tasksInProgress, id, + return new AdminOrg(href, type, links, description, tasks, id, name, fullName, isEnabled, settings, users, groups, catalogs, vdcs, networks); } @@ -180,10 +180,10 @@ public class AdminOrg extends Org { } protected AdminOrg(URI href, String type, Set links, String description, - TasksInProgress tasksInProgress, String id, String name, String fullName, + Set tasks, String id, String name, String fullName, Boolean enabled, OrgSettings settings, UsersList users, GroupsList groups, CatalogsList catalogs, Vdcs vdcs, Networks networks) { - super(href, type, links, description, tasksInProgress, id, name, fullName, enabled); + super(href, type, links, description, tasks, id, name, fullName, enabled); this.settings = settings; this.users = users; this.groups = groups; diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/Org.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/Org.java index 06e54d5852..368d8024f1 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/Org.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/Org.java @@ -233,7 +233,7 @@ public class Org extends EntityType { } public Org(URI href, String type, Set links, String description, - TasksInProgress tasksInProgress, String id, String name, + Set tasksInProgress, String id, String name, String fullName, Boolean enabled) { super(href, type, links, description, tasksInProgress, id, name); this.fullName = fullName; diff --git a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/AdminOrgClientExpectTest.java b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/AdminOrgClientExpectTest.java index 0ec249dfce..f2cd65ddf8 100644 --- a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/AdminOrgClientExpectTest.java +++ b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/AdminOrgClientExpectTest.java @@ -69,7 +69,7 @@ public class AdminOrgClientExpectTest extends BaseVCloudDirectorRestClientExpect AdminOrg expected = adminOrg(); - assertEquals(client.getAdminOrgClient().getOrg(orgRef.getURI()), expected); + assertEquals(client.getAdminOrgClient().getOrg(orgRef.getHref()), expected); } public static final AdminOrg adminOrg() { @@ -213,7 +213,7 @@ public class AdminOrgClientExpectTest extends BaseVCloudDirectorRestClientExpect OrgSettings expected = settings(); - assertEquals(client.getAdminOrgClient().getSettings(orgRef.getURI()), expected); + assertEquals(client.getAdminOrgClient().getSettings(orgRef.getHref()), expected); } public static final OrgSettings settings() { @@ -280,7 +280,7 @@ public class AdminOrgClientExpectTest extends BaseVCloudDirectorRestClientExpect OrgSettings expected = updateSettings(); - assertEquals(client.getAdminOrgClient().updateSettings(orgRef.getURI(), expected), expected); + assertEquals(client.getAdminOrgClient().updateSettings(orgRef.getHref(), expected), expected); } @Test @@ -303,7 +303,7 @@ public class AdminOrgClientExpectTest extends BaseVCloudDirectorRestClientExpect OrgEmailSettings expected = emailSettings(); - assertEquals(client.getAdminOrgClient().getEmailSettings(orgRef.getURI()), expected); + assertEquals(client.getAdminOrgClient().getEmailSettings(orgRef.getHref()), expected); } public static final OrgEmailSettings emailSettings() { @@ -345,7 +345,7 @@ public class AdminOrgClientExpectTest extends BaseVCloudDirectorRestClientExpect OrgEmailSettings expected = updateEmailSettings(); - assertEquals(client.getAdminOrgClient().updateEmailSettings(orgRef.getURI(), expected), expected); + assertEquals(client.getAdminOrgClient().updateEmailSettings(orgRef.getHref(), expected), expected); } @Test @@ -378,7 +378,7 @@ public class AdminOrgClientExpectTest extends BaseVCloudDirectorRestClientExpect OrgGeneralSettings expected = generalSettings(); - assertEquals(client.getAdminOrgClient().getGeneralSettings(orgRef.getURI()), expected); + assertEquals(client.getAdminOrgClient().getGeneralSettings(orgRef.getHref()), expected); } public static final OrgGeneralSettings generalSettings() { @@ -414,7 +414,7 @@ public class AdminOrgClientExpectTest extends BaseVCloudDirectorRestClientExpect OrgGeneralSettings expected = updateGeneralSettings(); - assertEquals(client.getAdminOrgClient().updateGeneralSettings(orgRef.getURI(), expected), expected); + assertEquals(client.getAdminOrgClient().updateGeneralSettings(orgRef.getHref(), expected), expected); } public static final OrgGeneralSettings updateGeneralSettings() { @@ -437,7 +437,7 @@ public class AdminOrgClientExpectTest extends BaseVCloudDirectorRestClientExpect OrgLdapSettings expected = ldapSettings(); - assertEquals(client.getAdminOrgClient().getLdapSettings(orgRef.getURI()), expected); + assertEquals(client.getAdminOrgClient().getLdapSettings(orgRef.getHref()), expected); } public static final OrgLdapSettings ldapSettings() { @@ -462,7 +462,7 @@ public class AdminOrgClientExpectTest extends BaseVCloudDirectorRestClientExpect OrgPasswordPolicySettings expected = passwordPolicy(); - assertEquals(client.getAdminOrgClient().getPasswordPolicy(orgRef.getURI()), expected); + assertEquals(client.getAdminOrgClient().getPasswordPolicy(orgRef.getHref()), expected); } public static final OrgPasswordPolicySettings passwordPolicy() { @@ -496,7 +496,7 @@ public class AdminOrgClientExpectTest extends BaseVCloudDirectorRestClientExpect OrgPasswordPolicySettings expected = updateOrgPasswordPolicy(); - assertEquals(client.getAdminOrgClient().updatePasswordPolicy(orgRef.getURI(), expected), expected); + assertEquals(client.getAdminOrgClient().updatePasswordPolicy(orgRef.getHref(), expected), expected); } public static final OrgPasswordPolicySettings updateOrgPasswordPolicy() { @@ -521,7 +521,7 @@ public class AdminOrgClientExpectTest extends BaseVCloudDirectorRestClientExpect OrgLeaseSettings expected = vAppLeaseSettings(); - assertEquals(client.getAdminOrgClient().getVAppLeaseSettings(orgRef.getURI()), expected); + assertEquals(client.getAdminOrgClient().getVAppLeaseSettings(orgRef.getHref()), expected); } public static final OrgLeaseSettings vAppLeaseSettings() { @@ -555,7 +555,7 @@ public class AdminOrgClientExpectTest extends BaseVCloudDirectorRestClientExpect OrgLeaseSettings expected = updateVAppLeaseSettings(); - assertEquals(client.getAdminOrgClient().updateVAppLeaseSettings(orgRef.getURI(), expected), expected); + assertEquals(client.getAdminOrgClient().updateVAppLeaseSettings(orgRef.getHref(), expected), expected); } public static final OrgLeaseSettings updateVAppLeaseSettings() { @@ -578,7 +578,7 @@ public class AdminOrgClientExpectTest extends BaseVCloudDirectorRestClientExpect OrgVAppTemplateLeaseSettings expected = vAppTemplateLeaseSettings(); - assertEquals(client.getAdminOrgClient().getVAppTemplateLeaseSettings(orgRef.getURI()), expected); + assertEquals(client.getAdminOrgClient().getVAppTemplateLeaseSettings(orgRef.getHref()), expected); } public static final OrgVAppTemplateLeaseSettings vAppTemplateLeaseSettings() { @@ -611,7 +611,7 @@ public class AdminOrgClientExpectTest extends BaseVCloudDirectorRestClientExpect OrgVAppTemplateLeaseSettings expected = updateVAppTemplateLeaseSettings(); - assertEquals(client.getAdminOrgClient().updateVAppTemplateLeaseSettings(orgRef.getURI(), expected), expected); + assertEquals(client.getAdminOrgClient().updateVAppTemplateLeaseSettings(orgRef.getHref(), expected), expected); } public static final OrgVAppTemplateLeaseSettings updateVAppTemplateLeaseSettings() { diff --git a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/AdminOrgClientLiveTest.java b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/AdminOrgClientLiveTest.java index d174978356..5ce9522ec4 100644 --- a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/AdminOrgClientLiveTest.java +++ b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/AdminOrgClientLiveTest.java @@ -18,11 +18,13 @@ */ package org.jclouds.vcloud.director.v1_5.features; +import static com.google.common.base.Objects.equal; +import static org.jclouds.vcloud.director.v1_5.VCloudDirectorLiveTestConstants.OBJ_FIELD_UPDATABLE; import static org.jclouds.vcloud.director.v1_5.VCloudDirectorLiveTestConstants.REF_REQ_LIVE; import static org.testng.Assert.assertNotNull; +import static org.testng.Assert.assertTrue; + import org.jclouds.vcloud.director.v1_5.domain.AdminOrg; -import org.jclouds.vcloud.director.v1_5.domain.Error; -import org.jclouds.vcloud.director.v1_5.domain.Group; import org.jclouds.vcloud.director.v1_5.domain.Checks; import org.jclouds.vcloud.director.v1_5.domain.OrgEmailSettings; import org.jclouds.vcloud.director.v1_5.domain.OrgGeneralSettings; @@ -77,14 +79,14 @@ public class AdminOrgClientLiveTest extends BaseVCloudDirectorClientLiveTest { @Test(testName = "GET /admin/org/{id}") public void testGetAdminOrg() { - AdminOrg adminOrg = orgClient.getOrg(orgRef.getURI()); + AdminOrg adminOrg = orgClient.getOrg(orgRef.getHref()); Checks.checkAdminOrg(adminOrg); } @Test(testName = "GET /admin/org/{id}/settings/emailSettings") public void testGetEmailSettings() { - emailSettings = orgClient.getEmailSettings(orgRef.getURI()); + emailSettings = orgClient.getEmailSettings(orgRef.getHref()); Checks.checkEmailSettings(emailSettings); } @@ -118,7 +120,7 @@ public class AdminOrgClientLiveTest extends BaseVCloudDirectorClientLiveTest { .build(); emailSettings = orgClient.updateEmailSettings( - orgRef.getURI(), newEmailSettings); + orgRef.getHref(), newEmailSettings); assertTrue(equal(emailSettings.isDefaultSmtpServer(), !isDefaultSmtpServer), String.format(OBJ_FIELD_UPDATABLE, @@ -153,13 +155,13 @@ public class AdminOrgClientLiveTest extends BaseVCloudDirectorClientLiveTest { .build(); emailSettings = orgClient.updateEmailSettings( - orgRef.getURI(), emailSettings); + orgRef.getHref(), emailSettings); } } @Test(testName = "GET /admin/org/{id}/settings/generalSettings") public void testGetGeneralSettings() { - generalSettings = orgClient.getGeneralSettings(orgRef.getURI()); + generalSettings = orgClient.getGeneralSettings(orgRef.getHref()); Checks.checkGeneralSettings(generalSettings); } @@ -183,7 +185,7 @@ public class AdminOrgClientLiveTest extends BaseVCloudDirectorClientLiveTest { .build(); generalSettings = orgClient.updateGeneralSettings( - orgRef.getURI(), newGeneralSettings); + orgRef.getHref(), newGeneralSettings); // assertTrue(equal(generalSettings.canPublishCatalogs(), !canPublishCatalogs), // String.format(OBJ_FIELD_UPDATABLE, @@ -214,20 +216,20 @@ public class AdminOrgClientLiveTest extends BaseVCloudDirectorClientLiveTest { .build(); generalSettings = orgClient.updateGeneralSettings( - orgRef.getURI(), generalSettings); + orgRef.getHref(), generalSettings); } } @Test(testName = "GET /admin/org/{id}/settings/ldap") public void testGetLdapSettings() { - ldapSettings = orgClient.getLdapSettings(orgRef.getURI()); + ldapSettings = orgClient.getLdapSettings(orgRef.getHref()); Checks.checkLdapSettings(ldapSettings); } @Test(testName = "GET /admin/org/{id}/settings/passwordPolicy") public void testGetPasswordPolicy() { - passwordPolicy = orgClient.getPasswordPolicy(orgRef.getURI()); + passwordPolicy = orgClient.getPasswordPolicy(orgRef.getHref()); Checks.checkPasswordPolicySettings(passwordPolicy); } @@ -247,7 +249,7 @@ public class AdminOrgClientLiveTest extends BaseVCloudDirectorClientLiveTest { .build(); passwordPolicy = orgClient.updatePasswordPolicy( - orgRef.getURI(), newPasswordPolicy); + orgRef.getHref(), newPasswordPolicy); assertTrue(equal(passwordPolicy.isAccountLockoutEnabled(), !accountLockoutEnabled), String.format(OBJ_FIELD_UPDATABLE, @@ -270,13 +272,13 @@ public class AdminOrgClientLiveTest extends BaseVCloudDirectorClientLiveTest { .build(); passwordPolicy = orgClient.updatePasswordPolicy( - orgRef.getURI(), passwordPolicy); + orgRef.getHref(), passwordPolicy); } } @Test(testName = "GET /admin/org/{id}/settings/vAppLeaseSettings") public void testGetVAppLeaseSettings() { - vAppLeaseSettings = orgClient.getVAppLeaseSettings(orgRef.getURI()); + vAppLeaseSettings = orgClient.getVAppLeaseSettings(orgRef.getHref()); Checks.checkVAppLeaseSettings(vAppLeaseSettings); } @@ -296,7 +298,7 @@ public class AdminOrgClientLiveTest extends BaseVCloudDirectorClientLiveTest { .build(); vAppLeaseSettings = orgClient.updateVAppLeaseSettings( - orgRef.getURI(), newVAppLeaseSettings); + orgRef.getHref(), newVAppLeaseSettings); assertTrue(equal(vAppLeaseSettings.deleteOnStorageLeaseExpiration(), !deleteOnStorageLeaseExpiration), String.format(OBJ_FIELD_UPDATABLE, @@ -319,13 +321,13 @@ public class AdminOrgClientLiveTest extends BaseVCloudDirectorClientLiveTest { .build(); vAppLeaseSettings = orgClient.updateVAppLeaseSettings( - orgRef.getURI(), vAppLeaseSettings); + orgRef.getHref(), vAppLeaseSettings); } } @Test(testName = "GET /admin/org/{id}/settings/vAppTemplateLeaseSettings") public void testGetVAppTemplateLeaseSettings() { - vAppTemplateLeaseSettings = orgClient.getVAppTemplateLeaseSettings(orgRef.getURI()); + vAppTemplateLeaseSettings = orgClient.getVAppTemplateLeaseSettings(orgRef.getHref()); Checks.checkVAppTemplateLeaseSettings(vAppTemplateLeaseSettings); } @@ -343,7 +345,7 @@ public class AdminOrgClientLiveTest extends BaseVCloudDirectorClientLiveTest { .build(); vAppTemplateLeaseSettings = orgClient.updateVAppTemplateLeaseSettings( - orgRef.getURI(), newVAppTemplateLeaseSettings); + orgRef.getHref(), newVAppTemplateLeaseSettings); assertTrue(equal(vAppTemplateLeaseSettings.deleteOnStorageLeaseExpiration(), !deleteOnStorageLeaseExpiration), String.format(OBJ_FIELD_UPDATABLE, @@ -362,7 +364,7 @@ public class AdminOrgClientLiveTest extends BaseVCloudDirectorClientLiveTest { .build(); vAppTemplateLeaseSettings = orgClient.updateVAppTemplateLeaseSettings( - orgRef.getURI(), vAppTemplateLeaseSettings); + orgRef.getHref(), vAppTemplateLeaseSettings); } } @@ -374,7 +376,7 @@ public class AdminOrgClientLiveTest extends BaseVCloudDirectorClientLiveTest { "testGetEmailSettings", "testGetPasswordPolicy"}) public void testGetSettings() { - settings = orgClient.getSettings(orgRef.getURI()); + settings = orgClient.getSettings(orgRef.getHref()); Checks.checkOrgSettings(settings); } @@ -398,7 +400,7 @@ public class AdminOrgClientLiveTest extends BaseVCloudDirectorClientLiveTest { .build(); settings = orgClient.updateSettings( - orgRef.getURI(), newSettings); + orgRef.getHref(), newSettings); assertTrue(equal(settings.getGeneralSettings(), newGeneralSettings), String.format(OBJ_FIELD_UPDATABLE, @@ -433,7 +435,7 @@ public class AdminOrgClientLiveTest extends BaseVCloudDirectorClientLiveTest { .build(); settings = orgClient.updateSettings( - orgRef.getURI(), settings); + orgRef.getHref(), settings); } } }