You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jclouds.apache.org by na...@apache.org on 2013/08/23 10:37:44 UTC
[5/5] git commit: JCLOUDS-198: Implemented the PagedIterable in Abiquo
JCLOUDS-198: Implemented the PagedIterable in Abiquo
* Refactored all the domain objects to return Iterables
instead of Lists, to allow a more flexible approach when
using the PagedIterable.
* Added a generic PaginatedCollection that knows how to advance
any paginated collection.
* Changed all methods from the Abiquo APIs that allow pagination
to return the corresponding PagedIterables and PaginatedCollections.
* Added Expect tests for every paginated resource.
* Handle the special case of user pagination, to bypass Abiquo issue
http://jira.abiquo.com/browse/ABICLOUDPREMIUM-5927
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/14fbe2d3
Tree: http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/tree/14fbe2d3
Diff: http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/diff/14fbe2d3
Branch: refs/heads/master
Commit: 14fbe2d3861d454283112da848a5a95ab08aa041
Parents: 0cec066
Author: Ignasi Barrera <na...@apache.org>
Authored: Sun Aug 11 22:41:09 2013 +0200
Committer: Ignasi Barrera <na...@apache.org>
Committed: Fri Aug 23 10:33:14 2013 +0200
----------------------------------------------------------------------
.../functions/VirtualMachineToNodeMetadata.java | 4 +-
.../abiquo/config/AbiquoHttpApiModule.java | 9 +-
.../abiquo/domain/DomainWithTasksWrapper.java | 5 +-
.../jclouds/abiquo/domain/DomainWrapper.java | 18 +-
.../abiquo/domain/PaginatedCollection.java | 160 ++++++
.../abiquo/domain/cloud/VirtualAppliance.java | 15 +-
.../abiquo/domain/cloud/VirtualDatacenter.java | 73 +--
.../abiquo/domain/cloud/VirtualMachine.java | 6 +-
.../domain/cloud/VirtualMachineTemplate.java | 5 +-
.../abiquo/domain/enterprise/Enterprise.java | 54 +-
.../jclouds/abiquo/domain/enterprise/Role.java | 3 +-
.../enterprise/TemplateDefinitionList.java | 9 +-
.../jclouds/abiquo/domain/enterprise/User.java | 7 +-
.../enterprise/options/EnterpriseOptions.java | 56 +--
.../domain/enterprise/options/UserOptions.java | 12 -
.../domain/infrastructure/Datacenter.java | 41 +-
.../abiquo/domain/infrastructure/Machine.java | 15 +-
.../abiquo/domain/infrastructure/Rack.java | 4 +-
.../domain/infrastructure/StorageDevice.java | 10 +-
.../abiquo/domain/infrastructure/Tier.java | 4 +-
.../abiquo/domain/network/ExternalNetwork.java | 23 +-
.../jclouds/abiquo/domain/network/Network.java | 20 +-
.../abiquo/domain/network/PrivateNetwork.java | 32 +-
.../abiquo/domain/network/PublicNetwork.java | 23 +-
.../abiquo/domain/network/UnmanagedNetwork.java | 23 +-
.../abiquo/domain/options/FilterOptions.java | 12 +-
.../jclouds/abiquo/domain/task/AsyncTask.java | 4 +-
.../org/jclouds/abiquo/features/CloudApi.java | 111 +++-
.../jclouds/abiquo/features/EnterpriseApi.java | 34 +-
.../org/jclouds/abiquo/features/EventApi.java | 16 +-
.../abiquo/features/InfrastructureApi.java | 60 ++-
.../features/VirtualMachineTemplateApi.java | 14 +-
.../services/AdministrationService.java | 6 +
.../abiquo/features/services/CloudService.java | 6 +
.../pagination/BasePaginationParser.java | 56 +++
.../functions/pagination/ParseEnterprises.java | 49 ++
.../functions/pagination/ParseEvents.java | 49 ++
.../functions/pagination/ParseExternalIps.java | 49 ++
.../functions/pagination/ParsePrivateIps.java | 49 ++
.../functions/pagination/ParsePublicIps.java | 49 ++
.../functions/pagination/ParseUnmanagedIps.java | 49 ++
.../abiquo/functions/pagination/ParseUsers.java | 157 ++++++
.../ParseVirtualMachineTemplates.java | 51 ++
.../pagination/ParseVirtualMachines.java | 51 ++
.../functions/pagination/ParseVolumes.java | 50 ++
.../internal/BaseAdministrationService.java | 14 +-
.../abiquo/internal/BaseCloudService.java | 15 +-
.../abiquo/internal/BaseEventService.java | 11 +-
.../predicates/VirtualDatacenterPredicates.java | 7 +-
.../enterprise/ListVirtualMachineTemplates.java | 20 +-
.../abiquo/domain/cloud/AccountLiveTest.java | 5 +-
.../cloud/VirtualDatacenterLiveApiTest.java | 10 +-
.../domain/cloud/VirtualMachineLiveApiTest.java | 4 +-
.../domain/cloud/VirtualMachineLiveTest.java | 12 +-
.../VirtualMachineNetworkingLiveApiTest.java | 63 ++-
.../cloud/VirtualMachineStorageLiveApiTest.java | 33 +-
.../abiquo/domain/cloud/VolumeLiveApiTest.java | 16 +-
.../enterprise/EnterpriseLiveApiTest.java | 27 +-
.../TemplateDefinitionListLiveApiTest.java | 4 +-
.../domain/enterprise/UserLiveApiTest.java | 11 -
.../infrastructure/DatacenterLiveApiTest.java | 7 +-
.../infrastructure/MachineLiveApiTest.java | 4 +-
.../RemoteServiceLiveApiTest.java | 5 +-
.../domain/infrastructure/TierLiveApiTest.java | 5 +-
.../network/ExternalNetworkLiveApiTest.java | 26 +-
.../network/GenericNetworkLiveApiTest.java | 26 +-
.../network/PrivateNetworkLiveApiTest.java | 22 +-
.../network/PublicNetworkLiveApiTest.java | 26 +-
.../network/UnmanagedNetworkLiveApiTest.java | 26 +-
.../environment/CloudTestEnvironment.java | 29 +-
.../InfrastructureTestEnvironment.java | 8 +-
.../abiquo/features/CloudApiExpectTest.java | 502 ++++++++++++++++++-
.../jclouds/abiquo/features/CloudApiTest.java | 209 --------
.../features/EnterpriseApiExpectTest.java | 192 +++++--
.../abiquo/features/EnterpriseApiTest.java | 71 ---
.../abiquo/features/EventApiExpectTest.java | 108 ++++
.../jclouds/abiquo/features/EventApiTest.java | 54 --
.../features/InfrastructureApiExpectTest.java | 227 +++++++++
.../abiquo/features/InfrastructureApiTest.java | 109 ----
.../VirtualMachineTemplateApiExpectTest.java | 53 +-
.../features/VirtualMachineTemplateApiTest.java | 44 --
.../cloud/ListAttachedNicsLiveApiTest.java | 10 +-
abiquo/src/test/resources/logback-test.xml | 8 +-
.../resources/payloads/all-vms-lastpage.xml | 31 ++
abiquo/src/test/resources/payloads/all-vms.xml | 4 +
.../payloads/available-templates-lastpage.xml | 43 ++
.../payloads/available-templates-page.xml | 43 ++
.../resources/payloads/enterprises-lastpage.xml | 40 ++
.../resources/payloads/enterprises-page.xml | 40 ++
.../test/resources/payloads/events-lastpage.xml | 40 ++
.../src/test/resources/payloads/events-page.xml | 40 ++
.../resources/payloads/externalips-lastpage.xml | 27 +
.../resources/payloads/externalips-page.xml | 27 +
.../resources/payloads/privateips-lastpage.xml | 17 +
.../test/resources/payloads/privateips-page.xml | 17 +
.../payloads/publicips-available-lastpage.xml | 29 ++
.../payloads/publicips-available-page.xml | 29 ++
.../resources/payloads/publicips-lastpage.xml | 25 +
.../test/resources/payloads/publicips-page.xml | 25 +
.../payloads/publicips-purchased-lastpage.xml | 29 ++
.../payloads/publicips-purchased-page.xml | 29 ++
.../resources/payloads/templates-lastpage.xml | 35 ++
.../test/resources/payloads/templates-page.xml | 26 +-
.../payloads/unmanagedips-lastpage.xml | 29 ++
.../resources/payloads/unmanagedips-page.xml | 29 ++
.../test/resources/payloads/users-lastpage.xml | 24 +
.../src/test/resources/payloads/users-page.xml | 39 ++
.../test/resources/payloads/usr-list-page-2.xml | 23 -
abiquo/src/test/resources/payloads/usr-list.xml | 54 --
.../test/resources/payloads/vms-lastpage.xml | 31 ++
abiquo/src/test/resources/payloads/vms-page.xml | 31 ++
.../resources/payloads/volumes-lastpage.xml | 18 +
.../test/resources/payloads/volumes-page.xml | 18 +
113 files changed, 3267 insertions(+), 1201 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/blob/14fbe2d3/abiquo/src/main/java/org/jclouds/abiquo/compute/functions/VirtualMachineToNodeMetadata.java
----------------------------------------------------------------------
diff --git a/abiquo/src/main/java/org/jclouds/abiquo/compute/functions/VirtualMachineToNodeMetadata.java b/abiquo/src/main/java/org/jclouds/abiquo/compute/functions/VirtualMachineToNodeMetadata.java
index 16489c4..dbeaa5c 100644
--- a/abiquo/src/main/java/org/jclouds/abiquo/compute/functions/VirtualMachineToNodeMetadata.java
+++ b/abiquo/src/main/java/org/jclouds/abiquo/compute/functions/VirtualMachineToNodeMetadata.java
@@ -20,8 +20,6 @@ import static com.google.common.base.Preconditions.checkNotNull;
import static com.google.common.collect.Iterables.filter;
import static com.google.common.collect.Iterables.transform;
-import java.util.List;
-
import javax.annotation.Resource;
import javax.inject.Inject;
import javax.inject.Singleton;
@@ -114,7 +112,7 @@ public class VirtualMachineToNodeMetadata implements Function<VirtualMachine, No
builder.hardware(hardware);
// Networking configuration
- List<Ip<?, ?>> nics = vm.listAttachedNics();
+ Iterable<Ip<?, ?>> nics = vm.listAttachedNics();
builder.privateAddresses(ips(filter(nics, Predicates.instanceOf(PrivateIp.class))));
builder.publicAddresses(ips(filter(nics, Predicates.not(Predicates.instanceOf(PrivateIp.class)))));
http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/blob/14fbe2d3/abiquo/src/main/java/org/jclouds/abiquo/config/AbiquoHttpApiModule.java
----------------------------------------------------------------------
diff --git a/abiquo/src/main/java/org/jclouds/abiquo/config/AbiquoHttpApiModule.java b/abiquo/src/main/java/org/jclouds/abiquo/config/AbiquoHttpApiModule.java
index e5ec1b2..0e13406 100644
--- a/abiquo/src/main/java/org/jclouds/abiquo/config/AbiquoHttpApiModule.java
+++ b/abiquo/src/main/java/org/jclouds/abiquo/config/AbiquoHttpApiModule.java
@@ -19,7 +19,6 @@ package org.jclouds.abiquo.config;
import static org.jclouds.Constants.PROPERTY_SESSION_INTERVAL;
import static org.jclouds.abiquo.domain.DomainWrapper.wrap;
-import java.util.List;
import java.util.Map;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicReference;
@@ -98,9 +97,9 @@ public class AbiquoHttpApiModule extends HttpApiModule<AbiquoApi> {
final AtomicReference<AuthorizationException> authException,
@Named(PROPERTY_SESSION_INTERVAL) final long seconds, @Memoized final Supplier<Enterprise> currentEnterprise) {
Supplier<Map<Integer, Datacenter>> availableRegionsMapSupplier = Suppliers.compose(
- new Function<List<Datacenter>, Map<Integer, Datacenter>>() {
+ new Function<Iterable<Datacenter>, Map<Integer, Datacenter>>() {
@Override
- public Map<Integer, Datacenter> apply(final List<Datacenter> datacenters) {
+ public Map<Integer, Datacenter> apply(final Iterable<Datacenter> datacenters) {
// Index available regions by id
return Maps.uniqueIndex(datacenters, new Function<Datacenter, Integer>() {
@Override
@@ -109,9 +108,9 @@ public class AbiquoHttpApiModule extends HttpApiModule<AbiquoApi> {
}
});
}
- }, new Supplier<List<Datacenter>>() {
+ }, new Supplier<Iterable<Datacenter>>() {
@Override
- public List<Datacenter> get() {
+ public Iterable<Datacenter> get() {
// Get the list of regions available for the user's tenant
return currentEnterprise.get().listAllowedDatacenters();
}
http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/blob/14fbe2d3/abiquo/src/main/java/org/jclouds/abiquo/domain/DomainWithTasksWrapper.java
----------------------------------------------------------------------
diff --git a/abiquo/src/main/java/org/jclouds/abiquo/domain/DomainWithTasksWrapper.java b/abiquo/src/main/java/org/jclouds/abiquo/domain/DomainWithTasksWrapper.java
index 741a87d..2207c24 100644
--- a/abiquo/src/main/java/org/jclouds/abiquo/domain/DomainWithTasksWrapper.java
+++ b/abiquo/src/main/java/org/jclouds/abiquo/domain/DomainWithTasksWrapper.java
@@ -26,7 +26,6 @@ import org.jclouds.rest.ApiContext;
import com.abiquo.model.transport.SingleResourceTransportDto;
import com.abiquo.server.core.task.TaskDto;
import com.abiquo.server.core.task.TasksDto;
-import com.google.common.collect.ImmutableList;
import com.google.common.collect.Lists;
import com.google.common.collect.Ordering;
import com.google.common.primitives.Longs;
@@ -43,7 +42,7 @@ public abstract class DomainWithTasksWrapper<T extends SingleResourceTransportDt
super(context, target);
}
- public List<AsyncTask<?, ?>> listTasks() {
+ public Iterable<AsyncTask<?, ?>> listTasks() {
TasksDto result = context.getApi().getTaskApi().listTasks(target);
List<AsyncTask<?, ?>> tasks = Lists.newArrayList();
for (TaskDto dto : result.getCollection()) {
@@ -58,6 +57,6 @@ public abstract class DomainWithTasksWrapper<T extends SingleResourceTransportDt
}
}.reverse());
- return ImmutableList.copyOf(tasks);
+ return tasks;
}
}
http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/blob/14fbe2d3/abiquo/src/main/java/org/jclouds/abiquo/domain/DomainWrapper.java
----------------------------------------------------------------------
diff --git a/abiquo/src/main/java/org/jclouds/abiquo/domain/DomainWrapper.java b/abiquo/src/main/java/org/jclouds/abiquo/domain/DomainWrapper.java
index 4e3e728..dbff107 100644
--- a/abiquo/src/main/java/org/jclouds/abiquo/domain/DomainWrapper.java
+++ b/abiquo/src/main/java/org/jclouds/abiquo/domain/DomainWrapper.java
@@ -36,6 +36,7 @@ import org.jclouds.abiquo.domain.util.LinkUtils;
import org.jclouds.abiquo.reference.ValidationErrors;
import org.jclouds.http.HttpResponse;
import org.jclouds.http.functions.ParseXMLWithJAXB;
+import org.jclouds.javax.annotation.Nullable;
import org.jclouds.rest.ApiContext;
import com.abiquo.model.rest.RESTLink;
@@ -45,7 +46,6 @@ import com.abiquo.model.transport.WrapperDto;
import com.abiquo.server.core.task.TaskDto;
import com.abiquo.server.core.task.enums.TaskType;
import com.google.common.base.Function;
-import com.google.common.collect.ImmutableList;
import com.google.common.collect.Lists;
import com.google.common.reflect.Invokable;
import com.google.inject.TypeLiteral;
@@ -117,7 +117,7 @@ public abstract class DomainWrapper<T extends SingleResourceTransportDto> {
* Wraps an object in the given wrapper class.
*/
public static <T extends SingleResourceTransportDto, W extends DomainWrapper<T>> W wrap(
- final ApiContext<AbiquoApi> context, final Class<W> wrapperClass, final T target) {
+ final ApiContext<AbiquoApi> context, final Class<W> wrapperClass, @Nullable final T target) {
if (target == null) {
return null;
}
@@ -135,31 +135,31 @@ public abstract class DomainWrapper<T extends SingleResourceTransportDto> {
/**
* Wrap a collection of objects to the given wrapper class.
*/
- public static <T extends SingleResourceTransportDto, W extends DomainWrapper<T>> List<W> wrap(
- final ApiContext<AbiquoApi> context, final Class<W> wrapperClass, final Iterable<T> targets) {
+ public static <T extends SingleResourceTransportDto, W extends DomainWrapper<T>> Iterable<W> wrap(
+ final ApiContext<AbiquoApi> context, final Class<W> wrapperClass, @Nullable final Iterable<T> targets) {
if (targets == null) {
return null;
}
- return ImmutableList.copyOf(transform(targets, new Function<T, W>() {
+ return transform(targets, new Function<T, W>() {
@Override
public W apply(final T input) {
return wrap(context, wrapperClass, input);
}
- }));
+ });
}
/**
* Unwrap a collection of objects.
*/
- public static <T extends SingleResourceTransportDto, W extends DomainWrapper<T>> List<T> unwrap(
+ public static <T extends SingleResourceTransportDto, W extends DomainWrapper<T>> Iterable<T> unwrap(
final Iterable<W> targets) {
- return ImmutableList.copyOf(transform(targets, new Function<W, T>() {
+ return transform(targets, new Function<W, T>() {
@Override
public T apply(final W input) {
return input.unwrap();
}
- }));
+ });
}
/**
http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/blob/14fbe2d3/abiquo/src/main/java/org/jclouds/abiquo/domain/PaginatedCollection.java
----------------------------------------------------------------------
diff --git a/abiquo/src/main/java/org/jclouds/abiquo/domain/PaginatedCollection.java b/abiquo/src/main/java/org/jclouds/abiquo/domain/PaginatedCollection.java
new file mode 100644
index 0000000..694a17a
--- /dev/null
+++ b/abiquo/src/main/java/org/jclouds/abiquo/domain/PaginatedCollection.java
@@ -0,0 +1,160 @@
+/*
+ * 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;
+
+import static com.google.common.base.Preconditions.checkArgument;
+import static com.google.common.base.Preconditions.checkNotNull;
+import static org.jclouds.collect.PagedIterables.advance;
+import static org.jclouds.collect.PagedIterables.onlyPage;
+
+import java.util.Iterator;
+import java.util.List;
+
+import org.jclouds.abiquo.AbiquoApi;
+import org.jclouds.collect.IterableWithMarker;
+import org.jclouds.collect.PagedIterable;
+import org.jclouds.http.functions.ParseXMLWithJAXB;
+
+import com.abiquo.model.rest.RESTLink;
+import com.abiquo.model.transport.WrapperDto;
+import com.google.common.base.Function;
+import com.google.common.base.Optional;
+
+/**
+ * This class represents a collection that is paginated.
+ * <p>
+ * Contains a single page of the collection, and all the information needed to
+ * fetch the next page on demand.
+ *
+ * @author Ignasi Barrera
+ *
+ * @see PagedIterable
+ */
+public class PaginatedCollection<T, W extends WrapperDto<T>> extends IterableWithMarker<T> {
+ protected final AbiquoApi api;
+ protected final W delegate;
+ protected final ParseXMLWithJAXB<W> parser;
+
+ public PaginatedCollection(AbiquoApi api, W delegate, ParseXMLWithJAXB<W> parser) {
+ this.api = checkNotNull(api, "api must not be null");
+ this.delegate = checkNotNull(delegate, "delegate must not be null");
+ this.parser = checkNotNull(parser, "parser must not be null");
+ }
+
+ @Override
+ public Iterator<T> iterator() {
+ return delegate.getCollection().iterator();
+ }
+
+ @Override
+ public Optional<Object> nextMarker() {
+ return Optional.<Object> fromNullable(delegate.searchLink("next"));
+ }
+
+ /**
+ * Transforms this {@link PaginatedCollection} into a {@link PagedIterable}
+ * so next the pages can be easily fetched.
+ *
+ * @return A PagedIterable that is capable of fetching more pages.
+ */
+ public PagedIterable<T> toPagedIterable() {
+ return new ToPagedIterable<T, W>(api, parser).apply(this);
+ }
+
+ /**
+ * Returns a function that transforms the PaginatedCollection into a
+ * {@link PagedIterable}.
+ * <p>
+ * The PagedIterable will fetch the next pages based on the <code>next</code>
+ * link of the current object.
+ * <p>
+ * Subclasses may overwrite this one, to provide a concrete type for the
+ * parser parameter, so this function can be injected in the different api
+ * methods and be used as a transformer for the returned collection.
+ *
+ * @author Ignasi Barrera
+ */
+ public static class ToPagedIterable<T, W extends WrapperDto<T>> implements
+ Function<PaginatedCollection<T, W>, PagedIterable<T>> {
+ protected final AbiquoApi api;
+ protected final ParseXMLWithJAXB<W> parser;
+
+ public ToPagedIterable(AbiquoApi api, ParseXMLWithJAXB<W> parser) {
+ this.api = checkNotNull(api, "api must not be null");
+ this.parser = checkNotNull(parser, "parser must not be null");
+ }
+
+ @Override
+ public PagedIterable<T> apply(final PaginatedCollection<T, W> input) {
+ return input.nextMarker().isPresent() ? advance(input, nextPage(input)) : onlyPage(input);
+ }
+
+ protected Function<Object, IterableWithMarker<T>> nextPage(final PaginatedCollection<T, W> input) {
+ return new Function<Object, IterableWithMarker<T>>() {
+ @Override
+ public IterableWithMarker<T> apply(Object marker) {
+ checkArgument(marker instanceof RESTLink, "Marker must be a RESTLink");
+ RESTLink next = RESTLink.class.cast(marker);
+
+ // The Abiquo API does not provide the media types in the
+ // pagination links, but it will be the same type than the
+ // current page, so just set it.
+ next.setType(input.delegate.getMediaType());
+
+ W nextPage = parser.apply(api.get(next));
+ return new PaginatedCollection<T, W>(api, nextPage, parser);
+ }
+ };
+ }
+
+ }
+
+ // Delegate methods
+
+ public Integer getTotalSize() {
+ return delegate.getTotalSize();
+ }
+
+ public List<RESTLink> getLinks() {
+ return delegate.getLinks();
+ }
+
+ public RESTLink searchLink(String rel) {
+ return delegate.searchLink(rel);
+ }
+
+ public List<RESTLink> searchLinks(String rel) {
+ return delegate.searchLinks(rel);
+ }
+
+ public RESTLink searchLink(String rel, String title) {
+ return delegate.searchLink(rel, title);
+ }
+
+ public RESTLink searchLinkByHref(String href) {
+ return delegate.searchLinkByHref(href);
+ }
+
+ public Integer getIdFromLink(String rel) {
+ return delegate.getIdFromLink(rel);
+ }
+
+ public String getMediaType() {
+ return delegate.getMediaType();
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/blob/14fbe2d3/abiquo/src/main/java/org/jclouds/abiquo/domain/cloud/VirtualAppliance.java
----------------------------------------------------------------------
diff --git a/abiquo/src/main/java/org/jclouds/abiquo/domain/cloud/VirtualAppliance.java b/abiquo/src/main/java/org/jclouds/abiquo/domain/cloud/VirtualAppliance.java
index e37b456..01df495 100644
--- a/abiquo/src/main/java/org/jclouds/abiquo/domain/cloud/VirtualAppliance.java
+++ b/abiquo/src/main/java/org/jclouds/abiquo/domain/cloud/VirtualAppliance.java
@@ -19,16 +19,17 @@ package org.jclouds.abiquo.domain.cloud;
import static com.google.common.base.Preconditions.checkNotNull;
import java.util.Arrays;
-import java.util.List;
import org.jclouds.abiquo.AbiquoApi;
import org.jclouds.abiquo.domain.DomainWrapper;
+import org.jclouds.abiquo.domain.PaginatedCollection;
import org.jclouds.abiquo.domain.cloud.options.VirtualMachineOptions;
import org.jclouds.abiquo.domain.enterprise.Enterprise;
import org.jclouds.abiquo.domain.task.AsyncTask;
import org.jclouds.abiquo.domain.task.VirtualMachineTask;
import org.jclouds.abiquo.reference.ValidationErrors;
import org.jclouds.abiquo.reference.rest.ParentLinkName;
+import org.jclouds.collect.PagedIterable;
import org.jclouds.rest.ApiContext;
import com.abiquo.model.transport.AcceptedRequestDto;
@@ -144,8 +145,9 @@ public class VirtualAppliance extends DomainWrapper<VirtualApplianceDto> {
* > http://community.abiquo.com/display/ABI18/Virtual+Machine+Resource#
* VirtualMachineResource -RetrievethelistofVirtualMachines.</a>
*/
- public List<VirtualMachine> listVirtualMachines() {
- return listVirtualMachines(VirtualMachineOptions.builder().disablePagination().build());
+ public Iterable<VirtualMachine> listVirtualMachines() {
+ PagedIterable<VirtualMachineWithNodeExtendedDto> vms = context.getApi().getCloudApi().listVirtualMachines(target);
+ return wrap(context, VirtualMachine.class, vms.concat());
}
/**
@@ -157,9 +159,10 @@ public class VirtualAppliance extends DomainWrapper<VirtualApplianceDto> {
* > http://community.abiquo.com/display/ABI18/Virtual+Machine+Resource#
* VirtualMachineResource -RetrievethelistofVirtualMachines.</a>
*/
- public List<VirtualMachine> listVirtualMachines(final VirtualMachineOptions options) {
- VirtualMachinesWithNodeExtendedDto vms = context.getApi().getCloudApi().listVirtualMachines(target, options);
- return wrap(context, VirtualMachine.class, vms.getCollection());
+ public Iterable<VirtualMachine> listVirtualMachines(final VirtualMachineOptions options) {
+ PaginatedCollection<VirtualMachineWithNodeExtendedDto, VirtualMachinesWithNodeExtendedDto> vms = context.getApi()
+ .getCloudApi().listVirtualMachines(target, options);
+ return wrap(context, VirtualMachine.class, vms.toPagedIterable().concat());
}
/**
http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/blob/14fbe2d3/abiquo/src/main/java/org/jclouds/abiquo/domain/cloud/VirtualDatacenter.java
----------------------------------------------------------------------
diff --git a/abiquo/src/main/java/org/jclouds/abiquo/domain/cloud/VirtualDatacenter.java b/abiquo/src/main/java/org/jclouds/abiquo/domain/cloud/VirtualDatacenter.java
index c8e03f1..5bbe292 100644
--- a/abiquo/src/main/java/org/jclouds/abiquo/domain/cloud/VirtualDatacenter.java
+++ b/abiquo/src/main/java/org/jclouds/abiquo/domain/cloud/VirtualDatacenter.java
@@ -19,12 +19,12 @@ package org.jclouds.abiquo.domain.cloud;
import static com.google.common.base.Preconditions.checkNotNull;
import static com.google.common.collect.Iterables.find;
-import java.util.List;
-
import org.jclouds.abiquo.AbiquoApi;
import org.jclouds.abiquo.domain.DomainWithLimitsWrapper;
+import org.jclouds.abiquo.domain.PaginatedCollection;
import org.jclouds.abiquo.domain.builder.LimitsBuilder;
import org.jclouds.abiquo.domain.cloud.options.VirtualMachineTemplateOptions;
+import org.jclouds.abiquo.domain.cloud.options.VolumeOptions;
import org.jclouds.abiquo.domain.enterprise.Enterprise;
import org.jclouds.abiquo.domain.infrastructure.Datacenter;
import org.jclouds.abiquo.domain.infrastructure.Tier;
@@ -32,19 +32,20 @@ import org.jclouds.abiquo.domain.network.ExternalNetwork;
import org.jclouds.abiquo.domain.network.Network;
import org.jclouds.abiquo.domain.network.PrivateNetwork;
import org.jclouds.abiquo.domain.network.PublicIp;
-import org.jclouds.abiquo.domain.network.options.IpOptions;
import org.jclouds.abiquo.reference.ValidationErrors;
import org.jclouds.abiquo.reference.rest.ParentLinkName;
+import org.jclouds.collect.PagedIterable;
import org.jclouds.rest.ApiContext;
import com.abiquo.model.enumerator.HypervisorType;
import com.abiquo.model.enumerator.NetworkType;
import com.abiquo.model.enumerator.StatefulInclusion;
+import com.abiquo.server.core.appslibrary.VirtualMachineTemplateDto;
import com.abiquo.server.core.appslibrary.VirtualMachineTemplatesDto;
import com.abiquo.server.core.cloud.VirtualApplianceDto;
import com.abiquo.server.core.cloud.VirtualAppliancesDto;
import com.abiquo.server.core.cloud.VirtualDatacenterDto;
-import com.abiquo.server.core.infrastructure.network.PublicIpsDto;
+import com.abiquo.server.core.infrastructure.network.PublicIpDto;
import com.abiquo.server.core.infrastructure.network.VLANNetworkDto;
import com.abiquo.server.core.infrastructure.network.VLANNetworksDto;
import com.abiquo.server.core.infrastructure.storage.DiskManagementDto;
@@ -54,6 +55,7 @@ import com.abiquo.server.core.infrastructure.storage.TiersDto;
import com.abiquo.server.core.infrastructure.storage.VolumeManagementDto;
import com.abiquo.server.core.infrastructure.storage.VolumesManagementDto;
import com.google.common.base.Predicate;
+import com.google.common.collect.FluentIterable;
/**
* Represents a virtual datacenter.
@@ -172,7 +174,7 @@ public class VirtualDatacenter extends DomainWithLimitsWrapper<VirtualDatacenter
* >http://community.abiquo.com/display/ABI20/Virtual+Appliance+Resource
* # VirtualApplianceResource-RetrievethelistofVirtualAppliances</a>
*/
- public List<VirtualAppliance> listVirtualAppliances() {
+ public Iterable<VirtualAppliance> listVirtualAppliances() {
VirtualAppliancesDto vapps = context.getApi().getCloudApi().listVirtualAppliances(target);
return wrap(context, VirtualAppliance.class, vapps.getCollection());
}
@@ -200,7 +202,7 @@ public class VirtualDatacenter extends DomainWithLimitsWrapper<VirtualDatacenter
* > http://community.abiquo.com/display/ABI20/Virtual+Datacenter+
* Resource# VirtualDatacenterResource-Retrieveenabledtiers</a>
*/
- public List<Tier> listStorageTiers() {
+ public Iterable<Tier> listStorageTiers() {
TiersDto tiers = context.getApi().getCloudApi().listStorageTiers(target);
return wrap(context, Tier.class, tiers.getCollection());
}
@@ -227,9 +229,15 @@ public class VirtualDatacenter extends DomainWithLimitsWrapper<VirtualDatacenter
* > http://community.abiquo.com/display/ABI20/Volume+Resource#
* VolumeResource- Retrievethelistofvolumes</a>
*/
- public List<Volume> listVolumes() {
- VolumesManagementDto volumes = context.getApi().getCloudApi().listVolumes(target);
- return wrap(context, Volume.class, volumes.getCollection());
+ public Iterable<Volume> listVolumes() {
+ PagedIterable<VolumeManagementDto> volumes = context.getApi().getCloudApi().listVolumes(target);
+ return wrap(context, Volume.class, volumes.concat());
+ }
+
+ public Iterable<Volume> listVolumes(VolumeOptions options) {
+ PaginatedCollection<VolumeManagementDto, VolumesManagementDto> volumes = context.getApi().getCloudApi()
+ .listVolumes(target, options);
+ return wrap(context, Volume.class, volumes.toPagedIterable().concat());
}
public Volume getVolume(final Integer id) {
@@ -243,7 +251,7 @@ public class VirtualDatacenter extends DomainWithLimitsWrapper<VirtualDatacenter
* > http://community.abiquo.com/display/ABI20/Hard+Disks+Resource#
* HardDisksResource- GetthelistofHardDisksofaVirtualDatacenter</a>
*/
- public List<HardDisk> listHardDisks() {
+ public Iterable<HardDisk> listHardDisks() {
DisksManagementDto hardDisks = context.getApi().getCloudApi().listHardDisks(target);
return wrap(context, HardDisk.class, hardDisks.getCollection());
}
@@ -273,7 +281,7 @@ public class VirtualDatacenter extends DomainWithLimitsWrapper<VirtualDatacenter
* > http://community.abiquo.com/display/ABI20/Private+Network+Resource#
* PrivateNetworkResource -RetrievealistofPrivateNetworks</a>
*/
- public List<PrivateNetwork> listPrivateNetworks() {
+ public Iterable<PrivateNetwork> listPrivateNetworks() {
VLANNetworksDto networks = context.getApi().getCloudApi().listPrivateNetworks(target);
return wrap(context, PrivateNetwork.class, networks.getCollection());
}
@@ -283,35 +291,36 @@ public class VirtualDatacenter extends DomainWithLimitsWrapper<VirtualDatacenter
return wrap(context, PrivateNetwork.class, network);
}
- public List<VirtualMachineTemplate> listAvailableTemplates() {
- VirtualMachineTemplatesDto templates = context.getApi().getCloudApi().listAvailableTemplates(target);
-
- return wrap(context, VirtualMachineTemplate.class, templates.getCollection());
+ public Iterable<VirtualMachineTemplate> listAvailableTemplates() {
+ PagedIterable<VirtualMachineTemplateDto> templates = context.getApi().getCloudApi()
+ .listAvailableTemplates(target);
+ return wrap(context, VirtualMachineTemplate.class, templates.concat());
}
- public List<VirtualMachineTemplate> listAvailableTemplates(final VirtualMachineTemplateOptions options) {
- VirtualMachineTemplatesDto templates = context.getApi().getCloudApi().listAvailableTemplates(target, options);
-
- return wrap(context, VirtualMachineTemplate.class, templates.getCollection());
+ public Iterable<VirtualMachineTemplate> listAvailableTemplates(final VirtualMachineTemplateOptions options) {
+ PaginatedCollection<VirtualMachineTemplateDto, VirtualMachineTemplatesDto> templates = context.getApi()
+ .getCloudApi().listAvailableTemplates(target, options);
+ return wrap(context, VirtualMachineTemplate.class, templates.toPagedIterable().concat());
}
public VirtualMachineTemplate getAvailableTemplate(final Integer id) {
- VirtualMachineTemplatesDto templates = context.getApi().getCloudApi()
+ PaginatedCollection<VirtualMachineTemplateDto, VirtualMachineTemplatesDto> templates = context.getApi()
+ .getCloudApi()
.listAvailableTemplates(target, VirtualMachineTemplateOptions.builder().idTemplate(id).build());
- return templates.getCollection().isEmpty() ? null : //
- wrap(context, VirtualMachineTemplate.class, templates.getCollection().get(0));
+ FluentIterable<VirtualMachineTemplateDto> all = templates.toPagedIterable().concat();
+ return wrap(context, VirtualMachineTemplate.class, all.first().orNull());
}
public VirtualMachineTemplate getAvailablePersistentTemplate(final Integer id) {
- VirtualMachineTemplatesDto templates = context
+ PaginatedCollection<VirtualMachineTemplateDto, VirtualMachineTemplatesDto> templates = context
.getApi()
.getCloudApi()
.listAvailableTemplates(target,
VirtualMachineTemplateOptions.builder().idTemplate(id).persistent(StatefulInclusion.ALL).build());
- return templates.getCollection().isEmpty() ? null : //
- wrap(context, VirtualMachineTemplate.class, templates.getCollection().get(0));
+ FluentIterable<VirtualMachineTemplateDto> all = templates.toPagedIterable().concat();
+ return wrap(context, VirtualMachineTemplate.class, all.first().orNull());
}
/**
@@ -322,10 +331,9 @@ public class VirtualDatacenter extends DomainWithLimitsWrapper<VirtualDatacenter
* VirtualDatacenterResource-ListofPublicIPstopurchasebyVirtualDatacenter
* </a>
*/
- public List<PublicIp> listAvailablePublicIps() {
- IpOptions options = IpOptions.builder().build();
- PublicIpsDto ips = context.getApi().getCloudApi().listAvailablePublicIps(target, options);
- return wrap(context, PublicIp.class, ips.getCollection());
+ public Iterable<PublicIp> listAvailablePublicIps() {
+ PagedIterable<PublicIpDto> ips = context.getApi().getCloudApi().listAvailablePublicIps(target);
+ return wrap(context, PublicIp.class, ips.concat());
}
/**
@@ -336,10 +344,9 @@ public class VirtualDatacenter extends DomainWithLimitsWrapper<VirtualDatacenter
* VirtualDatacenterResource-ListofpurchasedPublicIPsbyVirtualDatacenter
* </a>
*/
- public List<PublicIp> listPurchasedPublicIps() {
- IpOptions options = IpOptions.builder().build();
- PublicIpsDto ips = context.getApi().getCloudApi().listPurchasedPublicIps(target, options);
- return wrap(context, PublicIp.class, ips.getCollection());
+ public Iterable<PublicIp> listPurchasedPublicIps() {
+ PagedIterable<PublicIpDto> ips = context.getApi().getCloudApi().listPurchasedPublicIps(target);
+ return wrap(context, PublicIp.class, ips.concat());
}
public void purchasePublicIp(final PublicIp ip) {
http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/blob/14fbe2d3/abiquo/src/main/java/org/jclouds/abiquo/domain/cloud/VirtualMachine.java
----------------------------------------------------------------------
diff --git a/abiquo/src/main/java/org/jclouds/abiquo/domain/cloud/VirtualMachine.java b/abiquo/src/main/java/org/jclouds/abiquo/domain/cloud/VirtualMachine.java
index a0df109..d7caaa4 100644
--- a/abiquo/src/main/java/org/jclouds/abiquo/domain/cloud/VirtualMachine.java
+++ b/abiquo/src/main/java/org/jclouds/abiquo/domain/cloud/VirtualMachine.java
@@ -300,19 +300,19 @@ public class VirtualMachine extends DomainWithTasksWrapper<VirtualMachineWithNod
// Children access
- public List<HardDisk> listAttachedHardDisks() {
+ public Iterable<HardDisk> listAttachedHardDisks() {
refresh();
DisksManagementDto hardDisks = context.getApi().getCloudApi().listAttachedHardDisks(target);
return wrap(context, HardDisk.class, hardDisks.getCollection());
}
- public List<Volume> listAttachedVolumes() {
+ public Iterable<Volume> listAttachedVolumes() {
refresh();
VolumesManagementDto volumes = context.getApi().getCloudApi().listAttachedVolumes(target);
return wrap(context, Volume.class, volumes.getCollection());
}
- public List<Ip<?, ?>> listAttachedNics() {
+ public Iterable<Ip<?, ?>> listAttachedNics() {
// The strategy will refresh the vm. There is no need to do it here
ListAttachedNics strategy = context.utils().injector().getInstance(ListAttachedNics.class);
return ImmutableList.copyOf(strategy.execute(this));
http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/blob/14fbe2d3/abiquo/src/main/java/org/jclouds/abiquo/domain/cloud/VirtualMachineTemplate.java
----------------------------------------------------------------------
diff --git a/abiquo/src/main/java/org/jclouds/abiquo/domain/cloud/VirtualMachineTemplate.java b/abiquo/src/main/java/org/jclouds/abiquo/domain/cloud/VirtualMachineTemplate.java
index b3822d4..6cefa16 100644
--- a/abiquo/src/main/java/org/jclouds/abiquo/domain/cloud/VirtualMachineTemplate.java
+++ b/abiquo/src/main/java/org/jclouds/abiquo/domain/cloud/VirtualMachineTemplate.java
@@ -19,7 +19,6 @@ package org.jclouds.abiquo.domain.cloud;
import static com.google.common.base.Preconditions.checkNotNull;
import java.util.Date;
-import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@@ -204,7 +203,7 @@ public class VirtualMachineTemplate extends DomainWrapper<VirtualMachineTemplate
* ConversionResource- ListConversions</a>
* @return all the conversions of the virtual machine template
*/
- public List<Conversion> listConversions() {
+ public Iterable<Conversion> listConversions() {
ConversionsDto convs = context.getApi().getVirtualMachineTemplateApi().listConversions(target);
return wrap(context, Conversion.class, convs.getCollection());
}
@@ -224,7 +223,7 @@ public class VirtualMachineTemplate extends DomainWrapper<VirtualMachineTemplate
* @return all the conversions of the virtual machine template applying the
* constrains
*/
- public List<Conversion> listConversions(final HypervisorType hypervisor, final ConversionState state) {
+ public Iterable<Conversion> listConversions(final HypervisorType hypervisor, final ConversionState state) {
ConversionsDto convs = context
.getApi()
.getVirtualMachineTemplateApi()
http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/blob/14fbe2d3/abiquo/src/main/java/org/jclouds/abiquo/domain/enterprise/Enterprise.java
----------------------------------------------------------------------
diff --git a/abiquo/src/main/java/org/jclouds/abiquo/domain/enterprise/Enterprise.java b/abiquo/src/main/java/org/jclouds/abiquo/domain/enterprise/Enterprise.java
index c3e1c12..b198858 100644
--- a/abiquo/src/main/java/org/jclouds/abiquo/domain/enterprise/Enterprise.java
+++ b/abiquo/src/main/java/org/jclouds/abiquo/domain/enterprise/Enterprise.java
@@ -16,10 +16,9 @@
*/
package org.jclouds.abiquo.domain.enterprise;
-import java.util.List;
-
import org.jclouds.abiquo.AbiquoApi;
import org.jclouds.abiquo.domain.DomainWithLimitsWrapper;
+import org.jclouds.abiquo.domain.PaginatedCollection;
import org.jclouds.abiquo.domain.builder.LimitsBuilder;
import org.jclouds.abiquo.domain.cloud.VirtualAppliance;
import org.jclouds.abiquo.domain.cloud.VirtualDatacenter;
@@ -32,6 +31,7 @@ import org.jclouds.abiquo.domain.infrastructure.Machine;
import org.jclouds.abiquo.domain.network.ExternalNetwork;
import org.jclouds.abiquo.domain.network.UnmanagedNetwork;
import org.jclouds.abiquo.strategy.enterprise.ListVirtualMachineTemplates;
+import org.jclouds.collect.PagedIterable;
import org.jclouds.http.HttpResponse;
import org.jclouds.http.functions.ParseXMLWithJAXB;
import org.jclouds.rest.ApiContext;
@@ -40,7 +40,6 @@ import com.abiquo.model.rest.RESTLink;
import com.abiquo.server.core.appslibrary.TemplateDefinitionListDto;
import com.abiquo.server.core.appslibrary.TemplateDefinitionListsDto;
import com.abiquo.server.core.appslibrary.VirtualMachineTemplateDto;
-import com.abiquo.server.core.appslibrary.VirtualMachineTemplatesDto;
import com.abiquo.server.core.cloud.VirtualAppliancesDto;
import com.abiquo.server.core.cloud.VirtualDatacentersDto;
import com.abiquo.server.core.cloud.VirtualMachinesWithNodeExtendedDto;
@@ -55,7 +54,6 @@ import com.abiquo.server.core.infrastructure.DatacentersDto;
import com.abiquo.server.core.infrastructure.MachinesDto;
import com.abiquo.server.core.infrastructure.network.VLANNetworksDto;
import com.google.common.base.Predicate;
-import com.google.common.collect.ImmutableList;
import com.google.common.collect.Iterables;
import com.google.inject.TypeLiteral;
@@ -132,7 +130,7 @@ public class Enterprise extends DomainWithLimitsWrapper<EnterpriseDto> {
* RetrievealistofvitualdatacentersbyanEnterprise</a>
* @return List of virtual datacenters in this enterprise.
*/
- public List<VirtualDatacenter> listVirtualDatacenters() {
+ public Iterable<VirtualDatacenter> listVirtualDatacenters() {
VirtualDatacentersDto dto = context.getApi().getEnterpriseApi().listVirtualDatacenters(target);
return wrap(context, VirtualDatacenter.class, dto.getCollection());
}
@@ -147,7 +145,7 @@ public class Enterprise extends DomainWithLimitsWrapper<EnterpriseDto> {
* TemplateDefinitionListResource-Retrievealltemplatedefinitionlists</a>
* @return List of template definition lists of the enterprise.
*/
- public List<TemplateDefinitionList> listTemplateDefinitionLists() {
+ public Iterable<TemplateDefinitionList> listTemplateDefinitionLists() {
TemplateDefinitionListsDto dto = context.getApi().getEnterpriseApi().listTemplateDefinitionLists(target);
return wrap(context, TemplateDefinitionList.class, dto.getCollection());
}
@@ -180,7 +178,7 @@ public class Enterprise extends DomainWithLimitsWrapper<EnterpriseDto> {
* DatacenterLimitsResource-Retrievelimitsbyenterprise</a>
* @return List of datacenter limits by enterprise.
*/
- public List<Limits> listLimits() {
+ public Iterable<Limits> listLimits() {
DatacentersLimitsDto dto = context.getApi().getEnterpriseApi().listLimits(this.unwrap());
return wrap(context, Limits.class, dto.getCollection());
}
@@ -210,10 +208,9 @@ public class Enterprise extends DomainWithLimitsWrapper<EnterpriseDto> {
* Retrievealistofusers</a>
* @return List of users of this enterprise.
*/
- public List<User> listUsers() {
- // Delegate the retrieval of users to the options-enabled version of the
- // method, with pagination disabled
- return listUsers(UserOptions.builder().disablePagination().build());
+ public Iterable<User> listUsers() {
+ PagedIterable<UserDto> dto = context.getApi().getEnterpriseApi().listUsers(target);
+ return wrap(context, User.class, dto.concat());
}
/**
@@ -226,13 +223,12 @@ public class Enterprise extends DomainWithLimitsWrapper<EnterpriseDto> {
* >
* http://community.abiquo.com/display/ABI20/UserResource#UserResource-
* Retrievealistofusers</a>
- * @return List of users of this enterprise, according to the specified
- * pagination options
+ * @return List of users of this enterprise, according to the specified
+ * pagination options
*/
- public List<User> listUsers(final UserOptions options) {
- UsersDto dto = context.getApi().getEnterpriseApi().listUsers(
- this.unwrap(), options);
- return wrap(context, User.class, dto.getCollection());
+ public Iterable<User> listUsers(final UserOptions options) {
+ PaginatedCollection<UserDto, UsersDto> dto = context.getApi().getEnterpriseApi().listUsers(target, options);
+ return wrap(context, User.class, dto.toPagedIterable().concat());
}
/**
@@ -257,15 +253,15 @@ public class Enterprise extends DomainWithLimitsWrapper<EnterpriseDto> {
*
* @return List of roles by this enterprise.
*/
- public List<Role> listRoles() {
+ public Iterable<Role> listRoles() {
RolesDto dto = context.getApi().getAdminApi().listRoles(target);
return wrap(context, Role.class, dto.getCollection());
}
- public List<VirtualMachineTemplate> listTemplatesInRepository(final Datacenter datacenter) {
- VirtualMachineTemplatesDto dto = context.getApi().getVirtualMachineTemplateApi()
+ public Iterable<VirtualMachineTemplate> listTemplatesInRepository(final Datacenter datacenter) {
+ PagedIterable<VirtualMachineTemplateDto> templates = context.getApi().getVirtualMachineTemplateApi()
.listVirtualMachineTemplates(target.getId(), datacenter.getId());
- return wrap(context, VirtualMachineTemplate.class, dto.getCollection());
+ return wrap(context, VirtualMachineTemplate.class, templates.concat());
}
public VirtualMachineTemplate getTemplateInRepository(final Datacenter datacenter, final Integer id) {
@@ -274,12 +270,12 @@ public class Enterprise extends DomainWithLimitsWrapper<EnterpriseDto> {
return wrap(context, VirtualMachineTemplate.class, template);
}
- public List<VirtualMachineTemplate> listTemplates() {
+ public Iterable<VirtualMachineTemplate> listTemplates() {
ListVirtualMachineTemplates strategy = context.utils().injector().getInstance(ListVirtualMachineTemplates.class);
- return ImmutableList.copyOf(strategy.execute(this));
+ return strategy.execute(this);
}
- public List<Datacenter> listAllowedDatacenters() {
+ public Iterable<Datacenter> listAllowedDatacenters() {
DatacentersDto datacenters = context.getApi().getEnterpriseApi().listAllowedDatacenters(target.getId());
return wrap(context, Datacenter.class, datacenters.getCollection());
}
@@ -290,7 +286,7 @@ public class Enterprise extends DomainWithLimitsWrapper<EnterpriseDto> {
* > http://community.abiquo.com/display/ABI20/Enterprise+Resource#
* EnterpriseResource- Getthelistofexternalnetworks</a>
*/
- public List<ExternalNetwork> listExternalNetworks(final Datacenter datacenter) {
+ public Iterable<ExternalNetwork> listExternalNetworks(final Datacenter datacenter) {
DatacenterLimitsDto limitForDatacenter = getLimits(datacenter);
HttpResponse response = context.getApi().get(limitForDatacenter.searchLink("externalnetworks"));
@@ -301,7 +297,7 @@ public class Enterprise extends DomainWithLimitsWrapper<EnterpriseDto> {
return wrap(context, ExternalNetwork.class, parser.apply(response).getCollection());
}
- public List<UnmanagedNetwork> listUnmanagedNetworks(final Datacenter datacenter) {
+ public Iterable<UnmanagedNetwork> listUnmanagedNetworks(final Datacenter datacenter) {
DatacenterLimitsDto limitForDatacenter = getLimits(datacenter);
// The "rel" for the unmanaged networks is the same than the one used for
@@ -324,7 +320,7 @@ public class Enterprise extends DomainWithLimitsWrapper<EnterpriseDto> {
* RetrievethelistofvirtualappliancesbyanEnterprise</a>
* @return List of virtual appliances by this enterprise.
*/
- public List<VirtualAppliance> listVirtualAppliances() {
+ public Iterable<VirtualAppliance> listVirtualAppliances() {
VirtualAppliancesDto virtualAppliances = context.getApi().getEnterpriseApi().listVirtualAppliances(target);
return wrap(context, VirtualAppliance.class, virtualAppliances.getCollection());
}
@@ -338,12 +334,12 @@ public class Enterprise extends DomainWithLimitsWrapper<EnterpriseDto> {
* EnterpriseResource- RetrievealistofvirtualmachinesbyanEnterprise</a>
* @return List of virtual machines by this enterprise.
*/
- public List<VirtualMachine> listVirtualMachines() {
+ public Iterable<VirtualMachine> listVirtualMachines() {
VirtualMachinesWithNodeExtendedDto machines = context.getApi().getEnterpriseApi().listVirtualMachines(target);
return wrap(context, VirtualMachine.class, machines.getCollection());
}
- public List<Machine> listReservedMachines() {
+ public Iterable<Machine> listReservedMachines() {
MachinesDto machines = context.getApi().getEnterpriseApi().listReservedMachines(target);
return wrap(context, Machine.class, machines.getCollection());
}
http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/blob/14fbe2d3/abiquo/src/main/java/org/jclouds/abiquo/domain/enterprise/Role.java
----------------------------------------------------------------------
diff --git a/abiquo/src/main/java/org/jclouds/abiquo/domain/enterprise/Role.java b/abiquo/src/main/java/org/jclouds/abiquo/domain/enterprise/Role.java
index ba9b279..b1271a4 100644
--- a/abiquo/src/main/java/org/jclouds/abiquo/domain/enterprise/Role.java
+++ b/abiquo/src/main/java/org/jclouds/abiquo/domain/enterprise/Role.java
@@ -126,9 +126,8 @@ public class Role extends DomainWrapper<RoleDto> {
* > http://community.abiquo.com/display/ABI20/Roles+Resource#
* RolesResource- RetrievealistofprivilegesfromaRole</a>
*/
- public List<Privilege> listPrivileges() {
+ public Iterable<Privilege> listPrivileges() {
PrivilegesDto dto = context.getApi().getAdminApi().listPrivileges(target);
-
return wrap(context, Privilege.class, dto.getCollection());
}
http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/blob/14fbe2d3/abiquo/src/main/java/org/jclouds/abiquo/domain/enterprise/TemplateDefinitionList.java
----------------------------------------------------------------------
diff --git a/abiquo/src/main/java/org/jclouds/abiquo/domain/enterprise/TemplateDefinitionList.java b/abiquo/src/main/java/org/jclouds/abiquo/domain/enterprise/TemplateDefinitionList.java
index 48b9089..1afaf8e 100644
--- a/abiquo/src/main/java/org/jclouds/abiquo/domain/enterprise/TemplateDefinitionList.java
+++ b/abiquo/src/main/java/org/jclouds/abiquo/domain/enterprise/TemplateDefinitionList.java
@@ -18,8 +18,6 @@ package org.jclouds.abiquo.domain.enterprise;
import static com.google.common.collect.Iterables.filter;
-import java.util.List;
-
import org.jclouds.abiquo.AbiquoApi;
import org.jclouds.abiquo.domain.DomainWrapper;
import org.jclouds.abiquo.domain.infrastructure.Datacenter;
@@ -28,7 +26,6 @@ import org.jclouds.rest.ApiContext;
import com.abiquo.am.model.TemplatesStateDto;
import com.abiquo.server.core.appslibrary.TemplateDefinitionListDto;
import com.google.common.base.Predicate;
-import com.google.common.collect.ImmutableList;
/**
* Adds high level functionality to {@link TemplateDefinitionListDto}. A
@@ -111,7 +108,7 @@ public class TemplateDefinitionList extends DomainWrapper<TemplateDefinitionList
* TemplateDefinitionListResource# TemplateDefinitionListResource-
* Retrievealistofthestatusofalltemplatestatuslist</a>
*/
- public List<TemplateState> listStatus(final Datacenter datacenter) {
+ public Iterable<TemplateState> listStatus(final Datacenter datacenter) {
TemplatesStateDto states = context.getApi().getEnterpriseApi()
.listTemplateListStatus(target, datacenter.unwrap());
return wrap(context, TemplateState.class, states.getCollection());
@@ -134,8 +131,8 @@ public class TemplateDefinitionList extends DomainWrapper<TemplateDefinitionList
* TemplateDefinitionListResource# TemplateDefinitionListResource-
* Retrievealistofthestatusofalltemplatestatuslist</a>
*/
- public List<TemplateState> listStatus(final Predicate<TemplateState> filter, final Datacenter datacenter) {
- return ImmutableList.copyOf(filter(listStatus(datacenter), filter));
+ public Iterable<TemplateState> listStatus(final Predicate<TemplateState> filter, final Datacenter datacenter) {
+ return filter(listStatus(datacenter), filter);
}
// Builder
http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/blob/14fbe2d3/abiquo/src/main/java/org/jclouds/abiquo/domain/enterprise/User.java
----------------------------------------------------------------------
diff --git a/abiquo/src/main/java/org/jclouds/abiquo/domain/enterprise/User.java b/abiquo/src/main/java/org/jclouds/abiquo/domain/enterprise/User.java
index 4519f5c..dc9d0f6 100644
--- a/abiquo/src/main/java/org/jclouds/abiquo/domain/enterprise/User.java
+++ b/abiquo/src/main/java/org/jclouds/abiquo/domain/enterprise/User.java
@@ -35,7 +35,6 @@ import com.abiquo.server.core.cloud.VirtualMachinesWithNodeExtendedDto;
import com.abiquo.server.core.enterprise.RoleDto;
import com.abiquo.server.core.enterprise.UserDto;
import com.google.common.base.Joiner;
-import com.google.common.collect.ImmutableList;
import com.google.common.collect.Lists;
/**
@@ -112,7 +111,7 @@ public class User extends DomainWrapper<UserDto> {
target = context.getApi().getEnterpriseApi().updateUser(target);
}
- public List<VirtualDatacenter> listPermittedVirtualDatacenters() {
+ public Iterable<VirtualDatacenter> listPermittedVirtualDatacenters() {
List<Integer> ids = extractAvailableDatacenters();
// null value means all virtual datacenters all allowed
@@ -122,7 +121,7 @@ public class User extends DomainWrapper<UserDto> {
ListVirtualDatacenters listVirtualDatacenters = context.utils().injector()
.getInstance(ListVirtualDatacenters.class);
- return ImmutableList.copyOf(listVirtualDatacenters.execute(ids));
+ return listVirtualDatacenters.execute(ids);
}
/**
@@ -175,7 +174,7 @@ public class User extends DomainWrapper<UserDto> {
* > http://community.abiquo.com/display/ABI20/User+resource#
* Userresource- Retrievethelistofvirtualmachinesbyuser</a>
*/
- public List<VirtualMachine> listMachines() {
+ public Iterable<VirtualMachine> listMachines() {
VirtualMachinesWithNodeExtendedDto machines = context.getApi().getEnterpriseApi().listVirtualMachines(target);
return wrap(context, VirtualMachine.class, machines.getCollection());
}
http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/blob/14fbe2d3/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 4145ba1..b1880ee 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
@@ -18,11 +18,13 @@ package org.jclouds.abiquo.domain.enterprise.options;
import org.jclouds.abiquo.domain.options.FilterOptions.BaseFilterOptionsBuilder;
import org.jclouds.http.options.BaseHttpRequestOptions;
+import org.jclouds.rest.annotations.SinceApiVersion;
/**
* Available options to query enterprises.
*
* @author Francesc Montserrat
+ * @author Ignasi Barrera
*/
public class EnterpriseOptions extends BaseHttpRequestOptions {
public static Builder builder() {
@@ -39,43 +41,23 @@ public class EnterpriseOptions extends BaseHttpRequestOptions {
public static class Builder extends BaseFilterOptionsBuilder<Builder> {
private String idPricingTemplate;
- private Boolean included;
-
- private String filter;
-
- private Integer page;
-
- private Integer results;
+ private String idScope;
- private Boolean network;
+ private Boolean included;
public Builder pricingTemplate(final String idPricingTemplate) {
this.idPricingTemplate = idPricingTemplate;
return this;
}
- public Builder included(final boolean included) {
- this.included = included;
- return this;
- }
-
- public Builder filter(final String filter) {
- this.filter = filter;
- return this;
- }
-
- public Builder network(final boolean network) {
- this.network = network;
- return this;
- }
-
- public Builder page(final int page) {
- this.page = page;
+ @SinceApiVersion("2.3")
+ public Builder scope(final String scope) {
+ this.idScope = scope;
return this;
}
- public Builder results(final int results) {
- this.results = results;
+ public Builder included(final boolean included) {
+ this.included = included;
return this;
}
@@ -86,24 +68,12 @@ public class EnterpriseOptions extends BaseHttpRequestOptions {
options.queryParameters.put("idPricingTemplate", String.valueOf(idPricingTemplate));
}
- if (included != null) {
- options.queryParameters.put("included", String.valueOf(included));
- }
-
- if (filter != null) {
- options.queryParameters.put("filter", String.valueOf(filter));
- }
-
- if (page != null) {
- options.queryParameters.put("page", String.valueOf(page));
+ if (idScope != null) {
+ options.queryParameters.put("idScope", String.valueOf(idScope));
}
- if (results != null) {
- options.queryParameters.put("numResults", String.valueOf(results));
- }
-
- if (network != null) {
- options.queryParameters.put("network", String.valueOf(network));
+ if (included != null) {
+ options.queryParameters.put("included", String.valueOf(included));
}
return addFilterOptions(options);
http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/blob/14fbe2d3/abiquo/src/main/java/org/jclouds/abiquo/domain/enterprise/options/UserOptions.java
----------------------------------------------------------------------
diff --git a/abiquo/src/main/java/org/jclouds/abiquo/domain/enterprise/options/UserOptions.java b/abiquo/src/main/java/org/jclouds/abiquo/domain/enterprise/options/UserOptions.java
index 3848bca..5512bef 100644
--- a/abiquo/src/main/java/org/jclouds/abiquo/domain/enterprise/options/UserOptions.java
+++ b/abiquo/src/main/java/org/jclouds/abiquo/domain/enterprise/options/UserOptions.java
@@ -54,17 +54,5 @@ public class UserOptions extends BaseHttpRequestOptions implements Cloneable {
public UserOptions build() {
return addFilterOptions(this.options);
}
-
- // FIXME: This method is overriden to change its behavior until the
- // issue ABICLOUDPREMIUM-5927 in Abiquo isissue is solved (
- // (http://jira.abiquo.com/browse/ABICLOUDPREMIUM-5927)
- // Once its fixed, this method should be deleted
- @Override
- public Builder disablePagination() {
- // Unlike in its parent method, disabling pagination means to set
- // the limit attribute to the biggest value possible
- this.limit = Integer.MAX_VALUE;
- return (Builder) this;
- }
}
}
http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/blob/14fbe2d3/abiquo/src/main/java/org/jclouds/abiquo/domain/infrastructure/Datacenter.java
----------------------------------------------------------------------
diff --git a/abiquo/src/main/java/org/jclouds/abiquo/domain/infrastructure/Datacenter.java b/abiquo/src/main/java/org/jclouds/abiquo/domain/infrastructure/Datacenter.java
index 25f8664..4e28d13 100644
--- a/abiquo/src/main/java/org/jclouds/abiquo/domain/infrastructure/Datacenter.java
+++ b/abiquo/src/main/java/org/jclouds/abiquo/domain/infrastructure/Datacenter.java
@@ -19,8 +19,6 @@ package org.jclouds.abiquo.domain.infrastructure;
import static com.google.common.collect.Iterables.find;
import static com.google.common.collect.Iterables.transform;
-import java.util.List;
-
import org.jclouds.abiquo.AbiquoApi;
import org.jclouds.abiquo.domain.DomainWrapper;
import org.jclouds.abiquo.domain.cloud.VirtualMachineTemplate;
@@ -34,6 +32,7 @@ import org.jclouds.abiquo.domain.network.NetworkServiceType;
import org.jclouds.abiquo.domain.network.PrivateNetwork;
import org.jclouds.abiquo.domain.network.options.NetworkOptions;
import org.jclouds.abiquo.predicates.NetworkServiceTypePredicates;
+import org.jclouds.collect.PagedIterable;
import org.jclouds.rest.ApiContext;
import com.abiquo.model.enumerator.HypervisorType;
@@ -43,7 +42,6 @@ import com.abiquo.model.enumerator.NetworkType;
import com.abiquo.model.enumerator.RemoteServiceType;
import com.abiquo.model.enumerator.VlanTagAvailabilityType;
import com.abiquo.server.core.appslibrary.VirtualMachineTemplateDto;
-import com.abiquo.server.core.appslibrary.VirtualMachineTemplatesDto;
import com.abiquo.server.core.cloud.HypervisorTypeDto;
import com.abiquo.server.core.cloud.HypervisorTypesDto;
import com.abiquo.server.core.enterprise.DatacentersLimitsDto;
@@ -65,7 +63,6 @@ import com.abiquo.server.core.infrastructure.storage.StorageDevicesDto;
import com.abiquo.server.core.infrastructure.storage.StorageDevicesMetadataDto;
import com.abiquo.server.core.infrastructure.storage.TiersDto;
import com.google.common.base.Function;
-import com.google.common.collect.ImmutableList;
/**
* Adds high level functionality to {@link DatacenterDto}.
@@ -172,7 +169,7 @@ public class Datacenter extends DomainWrapper<DatacenterDto> {
* - RetrievealistofRacks</a>
* @return List of unmanaged racks in this datacenter.
*/
- public List<Rack> listRacks() {
+ public Iterable<Rack> listRacks() {
RacksDto racks = context.getApi().getInfrastructureApi().listRacks(target);
return wrap(context, Rack.class, racks.getCollection());
}
@@ -205,7 +202,7 @@ public class Datacenter extends DomainWrapper<DatacenterDto> {
* information for the storage devices, such as the management and
* iscsi ports, or the default credentials to access the device.
*/
- public List<StorageDeviceMetadata> listSupportedStorageDevices() {
+ public Iterable<StorageDeviceMetadata> listSupportedStorageDevices() {
StorageDevicesMetadataDto devices = context.getApi().getInfrastructureApi().listSupportedStorageDevices(target);
return wrap(context, StorageDeviceMetadata.class, devices.getCollection());
}
@@ -219,7 +216,7 @@ public class Datacenter extends DomainWrapper<DatacenterDto> {
* StorageDeviceResource- Retrievethelistofstoragedevices</a>
* @return List of storage devices in this datacenter.
*/
- public List<StorageDevice> listStorageDevices() {
+ public Iterable<StorageDevice> listStorageDevices() {
StorageDevicesDto devices = context.getApi().getInfrastructureApi().listStorageDevices(target);
return wrap(context, StorageDevice.class, devices.getCollection());
}
@@ -248,7 +245,7 @@ public class Datacenter extends DomainWrapper<DatacenterDto> {
*
* @return List of network services in this datacenter.
*/
- public List<NetworkServiceType> listNetworkServiceTypes() {
+ public Iterable<NetworkServiceType> listNetworkServiceTypes() {
NetworkServiceTypesDto dtos = context.getApi().getInfrastructureApi().listNetworkServiceTypes(target);
return wrap(context, NetworkServiceType.class, dtos.getCollection());
}
@@ -286,7 +283,7 @@ public class Datacenter extends DomainWrapper<DatacenterDto> {
* RemoteServiceResource- RetrievealistofRemoteServices</a>
* @return List of remote services in this datacenter.
*/
- public List<RemoteService> listRemoteServices() {
+ public Iterable<RemoteService> listRemoteServices() {
RemoteServicesDto remoteServices = context.getApi().getInfrastructureApi().listRemoteServices(target);
return wrap(context, RemoteService.class, remoteServices.getCollection());
}
@@ -316,7 +313,7 @@ public class Datacenter extends DomainWrapper<DatacenterDto> {
* DatacenterResource- Retrievelimitsbydatacenter</a>
* @return List of datacenter limits by all enterprises.
*/
- public List<Limits> listLimits() {
+ public Iterable<Limits> listLimits() {
DatacentersLimitsDto dto = context.getApi().getInfrastructureApi().listLimits(this.unwrap());
return DomainWrapper.wrap(context, Limits.class, dto.getCollection());
}
@@ -331,7 +328,7 @@ public class Datacenter extends DomainWrapper<DatacenterDto> {
* Retrievethelistoftiers </a>
* @return List of tiers in this datacenter.
*/
- public List<Tier> listTiers() {
+ public Iterable<Tier> listTiers() {
TiersDto dto = context.getApi().getInfrastructureApi().listTiers(this.unwrap());
return DomainWrapper.wrap(context, Tier.class, dto.getCollection());
}
@@ -347,7 +344,7 @@ public class Datacenter extends DomainWrapper<DatacenterDto> {
* @return List of public, external and unmanaged networks in this
* datacenter.
*/
- public List<Network<?>> listNetworks() {
+ public Iterable<Network<?>> listNetworks() {
VLANNetworksDto networks = context.getApi().getInfrastructureApi().listNetworks(target);
return Network.wrapNetworks(context, networks.getCollection());
}
@@ -363,7 +360,7 @@ public class Datacenter extends DomainWrapper<DatacenterDto> {
* PublicNetworkResource- Getthelistofpublicnetworks</a>
* @return List of networks of this datacenter matching the given type.
*/
- public List<Network<?>> listNetworks(final NetworkType type) {
+ public Iterable<Network<?>> listNetworks(final NetworkType type) {
NetworkOptions options = NetworkOptions.builder().type(type).build();
VLANNetworksDto networks = context.getApi().getInfrastructureApi().listNetworks(target, options);
return Network.wrapNetworks(context, networks.getCollection());
@@ -424,18 +421,18 @@ public class Datacenter extends DomainWrapper<DatacenterDto> {
* DatacenterResource- Retrieveavailablehypervisortypes</a>
* @return List of available hypervisor types in the datacenter.
*/
- public List<HypervisorType> listAvailableHypervisors() {
+ public Iterable<HypervisorType> listAvailableHypervisors() {
HypervisorTypesDto types = context.getApi().getInfrastructureApi().getHypervisorTypes(target);
return getHypervisorTypes(types);
}
- private List<HypervisorType> getHypervisorTypes(final HypervisorTypesDto dtos) {
- return ImmutableList.copyOf(transform(dtos.getCollection(), new Function<HypervisorTypeDto, HypervisorType>() {
+ private Iterable<HypervisorType> getHypervisorTypes(final HypervisorTypesDto dtos) {
+ return transform(dtos.getCollection(), new Function<HypervisorTypeDto, HypervisorType>() {
@Override
public HypervisorType apply(HypervisorTypeDto input) {
return HypervisorType.fromId(input.getId());
}
- }));
+ });
}
/**
@@ -519,7 +516,7 @@ public class Datacenter extends DomainWrapper<DatacenterDto> {
* > http://community.abiquo.com/display/ABI20/DatacenterResource#
* DatacenterResource- Retrievealistofremotemachineinformation</a>
*/
- public List<Machine> discoverMultipleMachines(final String ipFrom, final String ipTo,
+ public Iterable<Machine> discoverMultipleMachines(final String ipFrom, final String ipTo,
final HypervisorType hypervisorType, final String user, final String password) {
return discoverMultipleMachines(ipFrom, ipTo, hypervisorType, user, password, hypervisorType.defaultPort);
}
@@ -547,7 +544,7 @@ public class Datacenter extends DomainWrapper<DatacenterDto> {
* > http://community.abiquo.com/display/ABI20/DatacenterResource#
* DatacenterResource- Retrievealistofremotemachineinformation</a>
*/
- public List<Machine> discoverMultipleMachines(final String ipFrom, final String ipTo,
+ public Iterable<Machine> discoverMultipleMachines(final String ipFrom, final String ipTo,
final HypervisorType hypervisorType, final String user, final String password, final int port) {
MachinesDto dto = context
.getApi()
@@ -687,10 +684,10 @@ public class Datacenter extends DomainWrapper<DatacenterDto> {
* @return List of virtual machine templates in the repository of this
* datacenter.
*/
- public List<VirtualMachineTemplate> listTemplatesInRepository(final Enterprise enterprise) {
- VirtualMachineTemplatesDto dto = context.getApi().getVirtualMachineTemplateApi()
+ public Iterable<VirtualMachineTemplate> listTemplatesInRepository(final Enterprise enterprise) {
+ PagedIterable<VirtualMachineTemplateDto> templates = context.getApi().getVirtualMachineTemplateApi()
.listVirtualMachineTemplates(enterprise.getId(), target.getId());
- return wrap(context, VirtualMachineTemplate.class, dto.getCollection());
+ return wrap(context, VirtualMachineTemplate.class, templates.concat());
}
/**
http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/blob/14fbe2d3/abiquo/src/main/java/org/jclouds/abiquo/domain/infrastructure/Machine.java
----------------------------------------------------------------------
diff --git a/abiquo/src/main/java/org/jclouds/abiquo/domain/infrastructure/Machine.java b/abiquo/src/main/java/org/jclouds/abiquo/domain/infrastructure/Machine.java
index dd851a8..102f7d4 100644
--- a/abiquo/src/main/java/org/jclouds/abiquo/domain/infrastructure/Machine.java
+++ b/abiquo/src/main/java/org/jclouds/abiquo/domain/infrastructure/Machine.java
@@ -17,6 +17,7 @@
package org.jclouds.abiquo.domain.infrastructure;
import static com.google.common.base.Preconditions.checkNotNull;
+import static com.google.common.collect.ImmutableList.copyOf;
import java.util.List;
@@ -138,11 +139,11 @@ public class Machine extends DomainWrapper<MachineDto> {
// Children access
- public List<Datastore> getDatastores() {
+ public Iterable<Datastore> getDatastores() {
return wrap(context, Datastore.class, target.getDatastores().getCollection());
}
- public List<NetworkInterface> getNetworkInterfaces() {
+ public Iterable<NetworkInterface> getNetworkInterfaces() {
return wrap(context, NetworkInterface.class, target.getNetworkInterfaces().getCollection());
}
@@ -156,7 +157,7 @@ public class Machine extends DomainWrapper<MachineDto> {
* MachineResource-
* Retrievethelistofvirtualmachinesbymachine'shypervisor</a>
*/
- public List<VirtualMachine> listVirtualMachines() {
+ public Iterable<VirtualMachine> listVirtualMachines() {
MachineOptions options = MachineOptions.builder().sync(false).build();
VirtualMachinesWithNodeExtendedDto vms = context.getApi().getInfrastructureApi()
.listVirtualMachinesByMachine(target, options);
@@ -180,7 +181,7 @@ public class Machine extends DomainWrapper<MachineDto> {
* MachineResource-
* Retrievethelistofvirtualmachinesbymachine'shypervisor</a>
*/
- public List<VirtualMachine> listRemoteVirtualMachines() {
+ public Iterable<VirtualMachine> listRemoteVirtualMachines() {
MachineOptions options = MachineOptions.builder().sync(true).build();
VirtualMachinesWithNodeExtendedDto vms = context.getApi().getInfrastructureApi()
.listVirtualMachinesByMachine(target, options);
@@ -430,11 +431,11 @@ public class Machine extends DomainWrapper<MachineDto> {
dto.setState(state);
DatastoresDto datastoresDto = new DatastoresDto();
- datastoresDto.getCollection().addAll(unwrap(datastores));
+ datastoresDto.getCollection().addAll(copyOf(unwrap(datastores)));
dto.setDatastores(datastoresDto);
NetworkInterfacesDto networkInterfacesDto = new NetworkInterfacesDto();
- networkInterfacesDto.getCollection().addAll(unwrap(networkInterfaces));
+ networkInterfacesDto.getCollection().addAll(copyOf(unwrap(networkInterfaces)));
dto.setNetworkInterfaces(networkInterfacesDto);
Machine machine = new Machine(context, dto);
@@ -533,7 +534,7 @@ public class Machine extends DomainWrapper<MachineDto> {
public void setDatastores(final List<Datastore> datastores) {
DatastoresDto datastoresDto = new DatastoresDto();
- datastoresDto.getCollection().addAll(DomainWrapper.unwrap(datastores));
+ datastoresDto.getCollection().addAll(copyOf(unwrap(datastores)));
target.setDatastores(datastoresDto);
}
http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/blob/14fbe2d3/abiquo/src/main/java/org/jclouds/abiquo/domain/infrastructure/Rack.java
----------------------------------------------------------------------
diff --git a/abiquo/src/main/java/org/jclouds/abiquo/domain/infrastructure/Rack.java b/abiquo/src/main/java/org/jclouds/abiquo/domain/infrastructure/Rack.java
index d8f31c2..0c214e7 100644
--- a/abiquo/src/main/java/org/jclouds/abiquo/domain/infrastructure/Rack.java
+++ b/abiquo/src/main/java/org/jclouds/abiquo/domain/infrastructure/Rack.java
@@ -18,8 +18,6 @@ package org.jclouds.abiquo.domain.infrastructure;
import static com.google.common.base.Preconditions.checkNotNull;
-import java.util.List;
-
import org.jclouds.abiquo.AbiquoApi;
import org.jclouds.abiquo.domain.DomainWrapper;
import org.jclouds.abiquo.reference.ValidationErrors;
@@ -127,7 +125,7 @@ public class Rack extends DomainWrapper<RackDto> {
* > http://community.abiquo.com/display/ABI20/MachineResource#
* MachineResource- RetrievealistofMachines</a>
*/
- public List<Machine> listMachines() {
+ public Iterable<Machine> listMachines() {
MachinesDto machines = context.getApi().getInfrastructureApi().listMachines(target);
return wrap(context, Machine.class, machines.getCollection());
}
http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/blob/14fbe2d3/abiquo/src/main/java/org/jclouds/abiquo/domain/infrastructure/StorageDevice.java
----------------------------------------------------------------------
diff --git a/abiquo/src/main/java/org/jclouds/abiquo/domain/infrastructure/StorageDevice.java b/abiquo/src/main/java/org/jclouds/abiquo/domain/infrastructure/StorageDevice.java
index 166cf82..bfcead3 100644
--- a/abiquo/src/main/java/org/jclouds/abiquo/domain/infrastructure/StorageDevice.java
+++ b/abiquo/src/main/java/org/jclouds/abiquo/domain/infrastructure/StorageDevice.java
@@ -18,8 +18,6 @@ package org.jclouds.abiquo.domain.infrastructure;
import static com.google.common.base.Preconditions.checkNotNull;
-import java.util.List;
-
import org.jclouds.abiquo.AbiquoApi;
import org.jclouds.abiquo.domain.DomainWrapper;
import org.jclouds.abiquo.domain.infrastructure.options.StoragePoolOptions;
@@ -121,11 +119,11 @@ public class StorageDevice extends DomainWrapper<StorageDeviceDto> {
* StoragePoolResource- Retrievestoragepools</a>
* @return Synchronized list of storage pools in this device.
*/
- public List<StoragePool> listRemoteStoragePools() {
+ public Iterable<StoragePool> listRemoteStoragePools() {
StoragePoolsDto storagePools = context.getApi().getInfrastructureApi()
.listStoragePools(target, StoragePoolOptions.builder().sync(true).build());
- List<StoragePool> storagePoolList = wrap(context, StoragePool.class, storagePools.getCollection());
+ Iterable<StoragePool> storagePoolList = wrap(context, StoragePool.class, storagePools.getCollection());
for (StoragePool storagePool : storagePoolList) {
storagePool.storageDevice = this;
@@ -144,7 +142,7 @@ public class StorageDevice extends DomainWrapper<StorageDeviceDto> {
* StoragePoolResource- Retrievestoragepools</a>
* @return Unsynchronized list of storage pools in this device.
*/
- public List<StoragePool> listStoragePools() {
+ public Iterable<StoragePool> listStoragePools() {
StoragePoolsDto storagePools = context.getApi().getInfrastructureApi()
.listStoragePools(target, StoragePoolOptions.builder().sync(false).build());
return wrap(context, StoragePool.class, storagePools.getCollection());
@@ -177,7 +175,7 @@ public class StorageDevice extends DomainWrapper<StorageDeviceDto> {
* Retrievethelistoftiers </a>
* @return List of tiers in the datacenter using this device.
*/
- public List<Tier> listTiersFromDatacenter() {
+ public Iterable<Tier> listTiersFromDatacenter() {
DatacenterDto datacenter;
if (this.datacenter == null) {
http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/blob/14fbe2d3/abiquo/src/main/java/org/jclouds/abiquo/domain/infrastructure/Tier.java
----------------------------------------------------------------------
diff --git a/abiquo/src/main/java/org/jclouds/abiquo/domain/infrastructure/Tier.java b/abiquo/src/main/java/org/jclouds/abiquo/domain/infrastructure/Tier.java
index 0bc615a..190b81f 100644
--- a/abiquo/src/main/java/org/jclouds/abiquo/domain/infrastructure/Tier.java
+++ b/abiquo/src/main/java/org/jclouds/abiquo/domain/infrastructure/Tier.java
@@ -16,8 +16,6 @@
*/
package org.jclouds.abiquo.domain.infrastructure;
-import java.util.List;
-
import org.jclouds.abiquo.AbiquoApi;
import org.jclouds.abiquo.domain.DomainWrapper;
import org.jclouds.abiquo.reference.rest.ParentLinkName;
@@ -73,7 +71,7 @@ public class Tier extends DomainWrapper<TierDto> {
* StoragePoolResource- Retrievestoragepools</a>
* @return List of storage pools in this tier.
*/
- public List<StoragePool> listStoragePools() {
+ public Iterable<StoragePool> listStoragePools() {
StoragePoolsDto storagePools = context.getApi().getInfrastructureApi().listStoragePools(target);
return wrap(context, StoragePool.class, storagePools.getCollection());
}
http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/blob/14fbe2d3/abiquo/src/main/java/org/jclouds/abiquo/domain/network/ExternalNetwork.java
----------------------------------------------------------------------
diff --git a/abiquo/src/main/java/org/jclouds/abiquo/domain/network/ExternalNetwork.java b/abiquo/src/main/java/org/jclouds/abiquo/domain/network/ExternalNetwork.java
index e6c5f05..dd10ca4 100644
--- a/abiquo/src/main/java/org/jclouds/abiquo/domain/network/ExternalNetwork.java
+++ b/abiquo/src/main/java/org/jclouds/abiquo/domain/network/ExternalNetwork.java
@@ -18,14 +18,14 @@ package org.jclouds.abiquo.domain.network;
import static com.google.common.base.Preconditions.checkNotNull;
-import java.util.List;
-
import org.jclouds.abiquo.AbiquoApi;
+import org.jclouds.abiquo.domain.PaginatedCollection;
import org.jclouds.abiquo.domain.enterprise.Enterprise;
import org.jclouds.abiquo.domain.infrastructure.Datacenter;
import org.jclouds.abiquo.domain.network.options.IpOptions;
import org.jclouds.abiquo.reference.ValidationErrors;
import org.jclouds.abiquo.reference.rest.ParentLinkName;
+import org.jclouds.collect.PagedIterable;
import org.jclouds.http.HttpResponse;
import org.jclouds.http.functions.ParseXMLWithJAXB;
import org.jclouds.rest.ApiContext;
@@ -98,16 +98,17 @@ public class ExternalNetwork extends Network<ExternalIp> {
target = context.getApi().getInfrastructureApi().updateNetwork(target);
}
- /**
- * @see API: <a href=
- * "http://community.abiquo.com/display/ABI20/Public+IPs+Resource#PublicIPsResource-ReturnthelistofIPsforaPublicNetwork"
- * > http://community.abiquo.com/display/ABI20/Public+IPs+Resource#
- * PublicIPsResource- ReturnthelistofIPsforaPublicNetwork</a>
- */
@Override
- public List<ExternalIp> listIps(final IpOptions options) {
- ExternalIpsDto ips = context.getApi().getInfrastructureApi().listExternalIps(target, options);
- return wrap(context, ExternalIp.class, ips.getCollection());
+ public Iterable<ExternalIp> listIps() {
+ PagedIterable<ExternalIpDto> ips = context.getApi().getInfrastructureApi().listExternalIps(target);
+ return wrap(context, ExternalIp.class, ips.concat());
+ }
+
+ @Override
+ public Iterable<ExternalIp> listIps(final IpOptions options) {
+ PaginatedCollection<ExternalIpDto, ExternalIpsDto> ips = context.getApi().getInfrastructureApi()
+ .listExternalIps(target, options);
+ return wrap(context, ExternalIp.class, ips.toPagedIterable().concat());
}
@Override
http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/blob/14fbe2d3/abiquo/src/main/java/org/jclouds/abiquo/domain/network/Network.java
----------------------------------------------------------------------
diff --git a/abiquo/src/main/java/org/jclouds/abiquo/domain/network/Network.java b/abiquo/src/main/java/org/jclouds/abiquo/domain/network/Network.java
index 0f1a4e7..f59c7f0 100644
--- a/abiquo/src/main/java/org/jclouds/abiquo/domain/network/Network.java
+++ b/abiquo/src/main/java/org/jclouds/abiquo/domain/network/Network.java
@@ -32,7 +32,6 @@ import org.jclouds.rest.ApiContext;
import com.abiquo.model.enumerator.NetworkType;
import com.abiquo.server.core.infrastructure.network.VLANNetworkDto;
import com.google.common.base.Function;
-import com.google.common.collect.ImmutableList;
/**
* Adds generic high level functionality to {@link VLANNetworkDto}.
@@ -56,17 +55,14 @@ public abstract class Network<T extends Ip<?, ?>> extends DomainWrapper<VLANNetw
public abstract void delete();
- public abstract List<T> listIps(IpOptions options);
+ public abstract Iterable<T> listIps();
- public abstract T getIp(Integer id);
+ public abstract Iterable<T> listIps(IpOptions options);
- public List<T> listIps() {
- // Disable pagination by default
- return listIps(IpOptions.builder().disablePagination().build());
- }
+ public abstract T getIp(Integer id);
- public List<T> listUnusedIps() {
- return ImmutableList.copyOf(filter(listIps(), IpPredicates.<T> notUsed()));
+ public Iterable<T> listUnusedIps() {
+ return filter(listIps(), IpPredicates.<T> notUsed());
}
// Builder
@@ -302,12 +298,12 @@ public abstract class Network<T extends Ip<?, ?>> extends DomainWrapper<VLANNetw
return network;
}
- public static List<Network<?>> wrapNetworks(final ApiContext<AbiquoApi> context, final List<VLANNetworkDto> dtos) {
- return ImmutableList.copyOf(transform(dtos, new Function<VLANNetworkDto, Network<?>>() {
+ public static Iterable<Network<?>> wrapNetworks(final ApiContext<AbiquoApi> context, final List<VLANNetworkDto> dtos) {
+ return transform(dtos, new Function<VLANNetworkDto, Network<?>>() {
@Override
public Network<?> apply(VLANNetworkDto input) {
return wrapNetwork(context, input);
}
- }));
+ });
}
}
http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/blob/14fbe2d3/abiquo/src/main/java/org/jclouds/abiquo/domain/network/PrivateNetwork.java
----------------------------------------------------------------------
diff --git a/abiquo/src/main/java/org/jclouds/abiquo/domain/network/PrivateNetwork.java b/abiquo/src/main/java/org/jclouds/abiquo/domain/network/PrivateNetwork.java
index 531a12c..4d411f5 100644
--- a/abiquo/src/main/java/org/jclouds/abiquo/domain/network/PrivateNetwork.java
+++ b/abiquo/src/main/java/org/jclouds/abiquo/domain/network/PrivateNetwork.java
@@ -16,11 +16,11 @@
*/
package org.jclouds.abiquo.domain.network;
-import java.util.List;
-
import org.jclouds.abiquo.AbiquoApi;
+import org.jclouds.abiquo.domain.PaginatedCollection;
import org.jclouds.abiquo.domain.cloud.VirtualDatacenter;
import org.jclouds.abiquo.domain.network.options.IpOptions;
+import org.jclouds.collect.PagedIterable;
import org.jclouds.rest.ApiContext;
import com.abiquo.model.enumerator.NetworkType;
@@ -84,24 +84,26 @@ public class PrivateNetwork extends Network<PrivateIp> {
target = context.getApi().getCloudApi().updatePrivateNetwork(target);
}
- /**
- * @see API: <a href=
- * "http://community.abiquo.com/display/ABI20/Private+Network+Resource#PrivateNetworkResource-RetrievethelistofIPSofthePrivateNetwork"
- * > http://community.abiquo.com/display/ABI20/Private+Network+Resource#
- * PrivateNetworkResource -RetrievethelistofIPSofthePrivateNetwork</a>
- */
@Override
- public List<PrivateIp> listIps(final IpOptions options) {
- PrivateIpsDto ips = context.getApi().getCloudApi().listPrivateNetworkIps(target, options);
- return wrap(context, PrivateIp.class, ips.getCollection());
+ public Iterable<PrivateIp> listIps() {
+ PagedIterable<PrivateIpDto> ips = context.getApi().getCloudApi().listPrivateNetworkIps(target);
+ return wrap(context, PrivateIp.class, ips.concat());
+ }
+
+ @Override
+ public Iterable<PrivateIp> listIps(final IpOptions options) {
+ PaginatedCollection<PrivateIpDto, PrivateIpsDto> ips = context.getApi().getCloudApi()
+ .listPrivateNetworkIps(target, options);
+ return wrap(context, PrivateIp.class, ips.toPagedIterable().concat());
}
// Override to apply the filter in the server side
@Override
- public List<PrivateIp> listUnusedIps() {
- IpOptions options = IpOptions.builder().disablePagination().free(true).build();
- PrivateIpsDto ips = context.getApi().getCloudApi().listPrivateNetworkIps(target, options);
- return wrap(context, PrivateIp.class, ips.getCollection());
+ public Iterable<PrivateIp> listUnusedIps() {
+ IpOptions options = IpOptions.builder().free(true).build();
+ PaginatedCollection<PrivateIpDto, PrivateIpsDto> ips = context.getApi().getCloudApi()
+ .listPrivateNetworkIps(target, options);
+ return wrap(context, PrivateIp.class, ips.toPagedIterable().concat());
}
@Override