Updated Branches: refs/heads/master 6c1b08434 -> 880c1c7d0
JCLOUDS-188: Include pagination parameters in Abiquo VirtualMachineTemplateOptions Modified the Abiquo VirtualMachineTemplateOptions builder to inherit from the BaseFilterOptionsBuilder so it can accept pagination parameters. Also superseded the OrderBy enum by a simple String, to avoid hardcoding the fields that are suitable to be sorted. The OrderBy enum has been removed and the FilterOptions class moved to a more convenient package. Project: http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/commit/880c1c7d Tree: http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/tree/880c1c7d Diff: http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/diff/880c1c7d Branch: refs/heads/master Commit: 880c1c7d0ef6bb32107b79e78ba89086cc0c0dc3 Parents: 6c1b084 Author: Ignasi Barrera <[email protected]> Authored: Sat Jul 13 00:01:03 2013 +0200 Committer: Ignasi Barrera <[email protected]> Committed: Fri Jul 19 09:45:05 2013 +0200 ---------------------------------------------------------------------- .../cloud/options/VirtualMachineOptions.java | 2 +- .../options/VirtualMachineTemplateOptions.java | 5 +- .../domain/cloud/options/VolumeOptions.java | 3 +- .../enterprise/options/EnterpriseOptions.java | 2 +- .../domain/event/options/EventOptions.java | 2 +- .../domain/network/options/IpOptions.java | 2 +- .../abiquo/domain/options/FilterOptions.java | 120 ++++++++++++++++++ .../domain/options/search/FilterOptions.java | 121 ------------------- .../options/search/reference/OrderBy.java | 38 ------ .../jclouds/abiquo/features/CloudApiTest.java | 3 +- .../abiquo/features/EnterpriseApiTest.java | 3 +- .../VirtualMachineTemplateApiExpectTest.java | 77 ++++++++++++ .../test/resources/payloads/templates-page.xml | 35 ++++++ 13 files changed, 242 insertions(+), 171 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/blob/880c1c7d/abiquo/src/main/java/org/jclouds/abiquo/domain/cloud/options/VirtualMachineOptions.java ---------------------------------------------------------------------- diff --git a/abiquo/src/main/java/org/jclouds/abiquo/domain/cloud/options/VirtualMachineOptions.java b/abiquo/src/main/java/org/jclouds/abiquo/domain/cloud/options/VirtualMachineOptions.java index df915e4..4439307 100644 --- a/abiquo/src/main/java/org/jclouds/abiquo/domain/cloud/options/VirtualMachineOptions.java +++ b/abiquo/src/main/java/org/jclouds/abiquo/domain/cloud/options/VirtualMachineOptions.java @@ -16,7 +16,7 @@ */ package org.jclouds.abiquo.domain.cloud.options; -import org.jclouds.abiquo.domain.options.search.FilterOptions.BaseFilterOptionsBuilder; +import org.jclouds.abiquo.domain.options.FilterOptions.BaseFilterOptionsBuilder; import org.jclouds.http.options.BaseHttpRequestOptions; /** http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/blob/880c1c7d/abiquo/src/main/java/org/jclouds/abiquo/domain/cloud/options/VirtualMachineTemplateOptions.java ---------------------------------------------------------------------- diff --git a/abiquo/src/main/java/org/jclouds/abiquo/domain/cloud/options/VirtualMachineTemplateOptions.java b/abiquo/src/main/java/org/jclouds/abiquo/domain/cloud/options/VirtualMachineTemplateOptions.java index 74eced1..3633eda 100644 --- a/abiquo/src/main/java/org/jclouds/abiquo/domain/cloud/options/VirtualMachineTemplateOptions.java +++ b/abiquo/src/main/java/org/jclouds/abiquo/domain/cloud/options/VirtualMachineTemplateOptions.java @@ -17,6 +17,7 @@ package org.jclouds.abiquo.domain.cloud.options; import org.jclouds.abiquo.domain.config.Category; +import org.jclouds.abiquo.domain.options.FilterOptions.BaseFilterOptionsBuilder; import org.jclouds.http.options.BaseHttpRequestOptions; import com.abiquo.model.enumerator.HypervisorType; @@ -39,7 +40,7 @@ public class VirtualMachineTemplateOptions extends BaseHttpRequestOptions { return options; } - public static class Builder { + public static class Builder extends BaseFilterOptionsBuilder<Builder> { private StatefulInclusion persistent; private HypervisorType hypervisorType; @@ -96,7 +97,7 @@ public class VirtualMachineTemplateOptions extends BaseHttpRequestOptions { options.queryParameters.put("idTemplate", String.valueOf(idTemplate)); } - return options; + return addFilterOptions(options); } } } http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/blob/880c1c7d/abiquo/src/main/java/org/jclouds/abiquo/domain/cloud/options/VolumeOptions.java ---------------------------------------------------------------------- diff --git a/abiquo/src/main/java/org/jclouds/abiquo/domain/cloud/options/VolumeOptions.java b/abiquo/src/main/java/org/jclouds/abiquo/domain/cloud/options/VolumeOptions.java index f24775f..c14bcca 100644 --- a/abiquo/src/main/java/org/jclouds/abiquo/domain/cloud/options/VolumeOptions.java +++ b/abiquo/src/main/java/org/jclouds/abiquo/domain/cloud/options/VolumeOptions.java @@ -16,8 +16,7 @@ */ package org.jclouds.abiquo.domain.cloud.options; -import org.jclouds.abiquo.domain.options.search.FilterOptions.BaseFilterOptionsBuilder; - +import org.jclouds.abiquo.domain.options.FilterOptions.BaseFilterOptionsBuilder; import org.jclouds.http.options.BaseHttpRequestOptions; /** http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/blob/880c1c7d/abiquo/src/main/java/org/jclouds/abiquo/domain/enterprise/options/EnterpriseOptions.java ---------------------------------------------------------------------- diff --git a/abiquo/src/main/java/org/jclouds/abiquo/domain/enterprise/options/EnterpriseOptions.java b/abiquo/src/main/java/org/jclouds/abiquo/domain/enterprise/options/EnterpriseOptions.java index 39b9baf..4145ba1 100644 --- a/abiquo/src/main/java/org/jclouds/abiquo/domain/enterprise/options/EnterpriseOptions.java +++ b/abiquo/src/main/java/org/jclouds/abiquo/domain/enterprise/options/EnterpriseOptions.java @@ -16,7 +16,7 @@ */ package org.jclouds.abiquo.domain.enterprise.options; -import org.jclouds.abiquo.domain.options.search.FilterOptions.BaseFilterOptionsBuilder; +import org.jclouds.abiquo.domain.options.FilterOptions.BaseFilterOptionsBuilder; import org.jclouds.http.options.BaseHttpRequestOptions; /** http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/blob/880c1c7d/abiquo/src/main/java/org/jclouds/abiquo/domain/event/options/EventOptions.java ---------------------------------------------------------------------- diff --git a/abiquo/src/main/java/org/jclouds/abiquo/domain/event/options/EventOptions.java b/abiquo/src/main/java/org/jclouds/abiquo/domain/event/options/EventOptions.java index c86e12b..4abc495 100644 --- a/abiquo/src/main/java/org/jclouds/abiquo/domain/event/options/EventOptions.java +++ b/abiquo/src/main/java/org/jclouds/abiquo/domain/event/options/EventOptions.java @@ -20,7 +20,7 @@ import java.util.Date; import java.util.Map; import java.util.Map.Entry; -import org.jclouds.abiquo.domain.options.search.FilterOptions.BaseFilterOptionsBuilder; +import org.jclouds.abiquo.domain.options.FilterOptions.BaseFilterOptionsBuilder; import org.jclouds.http.options.BaseHttpRequestOptions; import com.abiquo.model.enumerator.ComponentType; http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/blob/880c1c7d/abiquo/src/main/java/org/jclouds/abiquo/domain/network/options/IpOptions.java ---------------------------------------------------------------------- diff --git a/abiquo/src/main/java/org/jclouds/abiquo/domain/network/options/IpOptions.java b/abiquo/src/main/java/org/jclouds/abiquo/domain/network/options/IpOptions.java index d6c1b26..bf32a62 100644 --- a/abiquo/src/main/java/org/jclouds/abiquo/domain/network/options/IpOptions.java +++ b/abiquo/src/main/java/org/jclouds/abiquo/domain/network/options/IpOptions.java @@ -16,7 +16,7 @@ */ package org.jclouds.abiquo.domain.network.options; -import org.jclouds.abiquo.domain.options.search.FilterOptions.BaseFilterOptionsBuilder; +import org.jclouds.abiquo.domain.options.FilterOptions.BaseFilterOptionsBuilder; import org.jclouds.http.options.BaseHttpRequestOptions; /** http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/blob/880c1c7d/abiquo/src/main/java/org/jclouds/abiquo/domain/options/FilterOptions.java ---------------------------------------------------------------------- diff --git a/abiquo/src/main/java/org/jclouds/abiquo/domain/options/FilterOptions.java b/abiquo/src/main/java/org/jclouds/abiquo/domain/options/FilterOptions.java new file mode 100644 index 0000000..2bcf022 --- /dev/null +++ b/abiquo/src/main/java/org/jclouds/abiquo/domain/options/FilterOptions.java @@ -0,0 +1,120 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.jclouds.abiquo.domain.options; + +import org.jclouds.http.options.BaseHttpRequestOptions; + +import com.google.common.collect.Multimap; + +/** + * Available options to filter and pagination methods. + * + * @author Francesc Montserrat + */ +public class FilterOptions extends BaseHttpRequestOptions { + @Override + protected Object clone() throws CloneNotSupportedException { + FilterOptions options = new FilterOptions(); + options.queryParameters.putAll(queryParameters); + return options; + } + + public static FilterOptionsBuilder builder() { + return new FilterOptionsBuilder(); + } + + public static class FilterOptionsBuilder extends BaseFilterOptionsBuilder<FilterOptionsBuilder> { + public FilterOptions build() { + FilterOptions options = new FilterOptions(); + return super.addFilterOptions(options); + } + } + + @SuppressWarnings("unchecked") + public static class BaseFilterOptionsBuilder<T extends BaseFilterOptionsBuilder<T>> { + protected Integer startWith; + + protected Integer limit; + + protected String by; + + protected String has; + + protected Boolean asc; + + public T startWith(final int startWith) { + this.startWith = startWith; + return (T) this; + } + + public T has(final String has) { + this.has = has; + return (T) this; + } + + public T limit(final int limit) { + this.limit = limit; + return (T) this; + } + + public T orderBy(final String by) { + this.by = by; + return (T) this; + } + + public T ascendant(final boolean asc) { + this.asc = asc; + return (T) this; + } + + public T descendant(final boolean desc) { + this.asc = !desc; + return (T) this; + } + + public T disablePagination() { + this.limit = 0; + return (T) this; + } + + protected <O extends BaseHttpRequestOptions> O addFilterOptions(final O options) { + Multimap<String, String> queryParameters = options.buildQueryParameters(); + + if (startWith != null) { + queryParameters.put("startwith", startWith.toString()); + } + + if (limit != null) { + queryParameters.put("limit", limit.toString()); + } + + if (has != null) { + queryParameters.put("has", has); + } + + if (by != null) { + queryParameters.put("by", by); + } + + if (asc != null) { + queryParameters.put("asc", asc.toString()); + } + + return options; + } + } +} http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/blob/880c1c7d/abiquo/src/main/java/org/jclouds/abiquo/domain/options/search/FilterOptions.java ---------------------------------------------------------------------- diff --git a/abiquo/src/main/java/org/jclouds/abiquo/domain/options/search/FilterOptions.java b/abiquo/src/main/java/org/jclouds/abiquo/domain/options/search/FilterOptions.java deleted file mode 100644 index ca5da46..0000000 --- a/abiquo/src/main/java/org/jclouds/abiquo/domain/options/search/FilterOptions.java +++ /dev/null @@ -1,121 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.jclouds.abiquo.domain.options.search; - -import org.jclouds.abiquo.domain.options.search.reference.OrderBy; -import org.jclouds.http.options.BaseHttpRequestOptions; - -import com.google.common.collect.Multimap; - -/** - * Available options to filter and pagination methods. - * - * @author Francesc Montserrat - */ -public class FilterOptions extends BaseHttpRequestOptions { - @Override - protected Object clone() throws CloneNotSupportedException { - FilterOptions options = new FilterOptions(); - options.queryParameters.putAll(queryParameters); - return options; - } - - public static FilterOptionsBuilder builder() { - return new FilterOptionsBuilder(); - } - - public static class FilterOptionsBuilder extends BaseFilterOptionsBuilder<FilterOptionsBuilder> { - public FilterOptions build() { - FilterOptions options = new FilterOptions(); - return super.addFilterOptions(options); - } - } - - @SuppressWarnings("unchecked") - public static class BaseFilterOptionsBuilder<T extends BaseFilterOptionsBuilder<T>> { - protected Integer startWith; - - protected Integer limit; - - protected OrderBy by; - - protected String has; - - protected Boolean asc; - - public T startWith(final int startWith) { - this.startWith = startWith; - return (T) this; - } - - public T has(final String has) { - this.has = has; - return (T) this; - } - - public T limit(final int limit) { - this.limit = limit; - return (T) this; - } - - public T orderBy(final OrderBy by) { - this.by = by; - return (T) this; - } - - public T ascendant(final boolean asc) { - this.asc = asc; - return (T) this; - } - - public T descendant(final boolean desc) { - this.asc = !desc; - return (T) this; - } - - public T disablePagination() { - this.limit = 0; - return (T) this; - } - - protected <O extends BaseHttpRequestOptions> O addFilterOptions(final O options) { - Multimap<String, String> queryParameters = options.buildQueryParameters(); - - if (startWith != null) { - queryParameters.put("startwith", startWith.toString()); - } - - if (limit != null) { - queryParameters.put("limit", limit.toString()); - } - - if (has != null) { - queryParameters.put("has", has); - } - - if (by != null) { - queryParameters.put("by", by.getValue()); - } - - if (asc != null) { - queryParameters.put("asc", asc.toString()); - } - - return options; - } - } -} http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/blob/880c1c7d/abiquo/src/main/java/org/jclouds/abiquo/domain/options/search/reference/OrderBy.java ---------------------------------------------------------------------- diff --git a/abiquo/src/main/java/org/jclouds/abiquo/domain/options/search/reference/OrderBy.java b/abiquo/src/main/java/org/jclouds/abiquo/domain/options/search/reference/OrderBy.java deleted file mode 100644 index 1d8a90c..0000000 --- a/abiquo/src/main/java/org/jclouds/abiquo/domain/options/search/reference/OrderBy.java +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.jclouds.abiquo.domain.options.search.reference; - -/** - * Available fields to order search results. - * - * @author Francesc Montserrat - * @author Ignasi Barrera - */ -public enum OrderBy { - NAME("name"), ID("id"), VIRTUALDATACENTER("virtualdatacenter"), VIRTUALMACHINE("virtualmachine"), VIRTUALAPPLIANCE( - "virtualappliance"), TIER("tier"), TOTALSIZE("totalsize"), STATE("state"); - - public String value; - - public String getValue() { - return value; - } - - private OrderBy(final String value) { - this.value = value; - } -} http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/blob/880c1c7d/abiquo/src/test/java/org/jclouds/abiquo/features/CloudApiTest.java ---------------------------------------------------------------------- diff --git a/abiquo/src/test/java/org/jclouds/abiquo/features/CloudApiTest.java b/abiquo/src/test/java/org/jclouds/abiquo/features/CloudApiTest.java index c2c73fb..249b62f 100644 --- a/abiquo/src/test/java/org/jclouds/abiquo/features/CloudApiTest.java +++ b/abiquo/src/test/java/org/jclouds/abiquo/features/CloudApiTest.java @@ -33,7 +33,6 @@ import org.jclouds.abiquo.domain.cloud.options.VirtualMachineOptions; import org.jclouds.abiquo.domain.cloud.options.VirtualMachineTemplateOptions; import org.jclouds.abiquo.domain.cloud.options.VolumeOptions; import org.jclouds.abiquo.domain.network.options.IpOptions; -import org.jclouds.abiquo.domain.options.search.reference.OrderBy; import org.jclouds.abiquo.fallbacks.MovedVolume; import org.jclouds.abiquo.functions.ReturnTaskReferenceOrNull; import org.jclouds.http.functions.ParseXMLWithJAXB; @@ -1208,7 +1207,7 @@ public class CloudApiTest extends BaseAbiquoApiTest<CloudApi> { GeneratedHttpRequest request = processor.apply(Invocation.create( method, ImmutableList.<Object> of(CloudResources.virtualDatacenterPut(), VolumeOptions.builder().has("vol") - .orderBy(OrderBy.NAME).ascendant(true).build()))); + .orderBy("name").ascendant(true).build()))); assertRequestLineEquals(request, "GET http://localhost/api/cloud/virtualdatacenters/1/volumes?has=vol&by=name&asc=true HTTP/1.1"); http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/blob/880c1c7d/abiquo/src/test/java/org/jclouds/abiquo/features/EnterpriseApiTest.java ---------------------------------------------------------------------- diff --git a/abiquo/src/test/java/org/jclouds/abiquo/features/EnterpriseApiTest.java b/abiquo/src/test/java/org/jclouds/abiquo/features/EnterpriseApiTest.java index 7cd0acc..b6b9f19 100644 --- a/abiquo/src/test/java/org/jclouds/abiquo/features/EnterpriseApiTest.java +++ b/abiquo/src/test/java/org/jclouds/abiquo/features/EnterpriseApiTest.java @@ -25,7 +25,6 @@ import org.jclouds.Fallbacks.NullOnNotFoundOr404; import org.jclouds.abiquo.domain.EnterpriseResources; import org.jclouds.abiquo.domain.InfrastructureResources; import org.jclouds.abiquo.domain.enterprise.options.EnterpriseOptions; -import org.jclouds.abiquo.domain.options.search.reference.OrderBy; import org.jclouds.fallbacks.MapHttp4xxCodesToExceptions; import org.jclouds.http.functions.ParseXMLWithJAXB; import org.jclouds.http.functions.ReleasePayloadAndReturn; @@ -80,7 +79,7 @@ public class EnterpriseApiTest extends BaseAbiquoApiTest<EnterpriseApi> { } public void testListEnterprisesWithOptions() throws SecurityException, NoSuchMethodException, IOException { - EnterpriseOptions options = EnterpriseOptions.builder().has("abi").orderBy(OrderBy.NAME).ascendant(true).build(); + EnterpriseOptions options = EnterpriseOptions.builder().has("abi").orderBy("name").ascendant(true).build(); Invokable<?, ?> method = method(EnterpriseApi.class, "listEnterprises", EnterpriseOptions.class); GeneratedHttpRequest request = processor.apply(Invocation.create(method, ImmutableList.<Object> of(options))); http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/blob/880c1c7d/abiquo/src/test/java/org/jclouds/abiquo/features/VirtualMachineTemplateApiExpectTest.java ---------------------------------------------------------------------- diff --git a/abiquo/src/test/java/org/jclouds/abiquo/features/VirtualMachineTemplateApiExpectTest.java b/abiquo/src/test/java/org/jclouds/abiquo/features/VirtualMachineTemplateApiExpectTest.java new file mode 100644 index 0000000..b85ee37 --- /dev/null +++ b/abiquo/src/test/java/org/jclouds/abiquo/features/VirtualMachineTemplateApiExpectTest.java @@ -0,0 +1,77 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.jclouds.abiquo.features; + +import static org.testng.Assert.assertEquals; +import static org.testng.Assert.assertNotNull; + +import java.net.URI; + +import org.jclouds.abiquo.AbiquoApi; +import org.jclouds.abiquo.domain.cloud.options.VirtualMachineTemplateOptions; +import org.jclouds.http.HttpRequest; +import org.jclouds.http.HttpResponse; +import org.testng.annotations.Test; + +import com.abiquo.server.core.appslibrary.VirtualMachineTemplatesDto; + +/** + * Expect tests for the {@link VirtualMachineTemplateApi}. + * + * @author Ignasi Barrera + * + */ +@Test(groups = "unit", testName = "VirtualMachineTemplateApiExpectTest") +public class VirtualMachineTemplateApiExpectTest extends BaseAbiquoApiExpectTest<VirtualMachineTemplateApi> { + + public void testListVirtualMachineTemplatesWithPaginationOptions() { + VirtualMachineTemplateApi api = requestSendsResponse( + HttpRequest + .builder() + .method("GET") + .endpoint( + URI.create("http://localhost/api/admin/enterprises/1/datacenterrepositories/1/virtualmachinetemplates")) // + .addHeader("Authorization", basicAuth) // + .addHeader("Accept", normalize(VirtualMachineTemplatesDto.MEDIA_TYPE)) // + .addQueryParam("limit", "1") // + .addQueryParam("has", "text") // + .build(), + HttpResponse + .builder() + .statusCode(200) + .payload( + payloadFromResourceWithContentType("/payloads/templates-page.xml", + normalize(VirtualMachineTemplatesDto.MEDIA_TYPE))) // + .build()); + + VirtualMachineTemplateOptions options = VirtualMachineTemplateOptions.builder().limit(1).has("text").build(); + VirtualMachineTemplatesDto result = api.listVirtualMachineTemplates(1, 1, options); + + assertEquals(result.getCollection().size(), 1); + assertEquals(result.getTotalSize().intValue(), 2); + assertEquals(result.getCollection().get(0).getId().intValue(), 151); + assertNotNull(result.searchLink("first")); + assertNotNull(result.searchLink("last")); + assertNotNull(result.searchLink("next")); + } + + @Override + protected VirtualMachineTemplateApi clientFrom(AbiquoApi api) { + return api.getVirtualMachineTemplateApi(); + } + +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/blob/880c1c7d/abiquo/src/test/resources/payloads/templates-page.xml ---------------------------------------------------------------------- diff --git a/abiquo/src/test/resources/payloads/templates-page.xml b/abiquo/src/test/resources/payloads/templates-page.xml new file mode 100644 index 0000000..61c53f7 --- /dev/null +++ b/abiquo/src/test/resources/payloads/templates-page.xml @@ -0,0 +1,35 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes"?> +<virtualMachineTemplates> + <link rel="first" href="http://localhost:80/api/admin/enterprises/1/datacenterrepositories/1/virtualmachinetemplates"/> + <link rel="next" href="http://localhost:80/api/admin/enterprises/1/datacenterrepositories/1/virtualmachinetemplates?startwith=1"/> + <link rel="last" href="http://localhost:80/api/admin/enterprises/1/datacenterrepositories/1/virtualmachinetemplates?startwith=1"/> + <totalSize>2</totalSize> + <virtualMachineTemplate> + <link title="Web Servers" rel="category" type="application/vnd.abiquo.category+xml" href="http://localhost:80/api/config/categories/14"/> + <link rel="conversions" type="application/vnd.abiquo.conversions+xml" href="http://localhost:80/api/admin/enterprises/152/datacenterrepositories/2/virtualmachinetemplates/151/conversions"/> + <link rel="datacenter" type="application/vnd.abiquo.datacenter+xml" href="http://localhost:80/api/admin/datacenters/2"/> + <link rel="datacenterrepository" type="application/vnd.abiquo.datacenterrepository+xml" href="http://localhost:80/api/admin/enterprises/152/datacenterrepositories/2"/> + <link rel="diskfile" href="http://192.168.0.3:80/am/erepos/152/templates/apache%252Fubuntu-910-server-x86_64-vmdk5.ovf?format=diskFile"/> + <link title="Apache Server" rel="edit" type="application/vnd.abiquo.virtualmachinetemplate+xml" href="http://localhost:80/api/admin/enterprises/152/datacenterrepositories/2/virtualmachinetemplates/151"/> + <link rel="enterprise" type="application/vnd.abiquo.enterprise+xml" href="http://localhost:80/api/admin/enterprises/152"/> + <link rel="ovfdocument" href="http://192.168.0.3:80/am/erepos/152/templates/apache%252Fubuntu-910-server-x86_64-vmdk5.ovf?format=envelope"/> + <link rel="template" href="http://192.168.0.3:80/am/erepos/152/templates/apache%252Fubuntu-910-server-x86_64-vmdk5.ovf"/> + <link rel="templatedefinition" href="http://apache/ubuntu-910-server-x86_64-vmdk5.ovf"/> + <link rel="templatestatus" href="http://192.168.0.3:80/am/erepos/152/templates/apache%252Fubuntu-910-server-x86_64-vmdk5.ovf?format=status"/> + <id>151</id> + <name>Apache Server</name> + <description>Apache Server</description> + <path>1/apache/ubuntu-910-server-x86_64-vmdk5.vmdk</path> + <diskFormatType>VMDK_STREAM_OPTIMIZED</diskFormatType> + <diskFileSize>206947328</diskFileSize> + <cpuRequired>1</cpuRequired> + <ramRequired>512</ramRequired> + <hdRequired>734003200</hdRequired> + <shared>true</shared> + <costCode>0</costCode> + <creationDate>2012-04-18T17:42:42+02:00</creationDate> + <creationUser>SYSTEM</creationUser> + <chefEnabled>false</chefEnabled> + <iconUrl>http://icons.abiquo.com/apache.jpg</iconUrl> + </virtualMachineTemplate> +</virtualMachineTemplates> \ No newline at end of file
