From c3f1a9d324ad01450df315242bdabe6edd0c7e60 Mon Sep 17 00:00:00 2001 From: Min Chen Date: Tue, 22 Jan 2013 17:14:44 -0800 Subject: [PATCH] CLOUDSTACK-355: fix count for listSwiftsCmd. --- api/src/com/cloud/resource/ResourceService.java | 5 +++-- .../api/command/admin/swift/ListSwiftsCmd.java | 10 +++++----- server/src/com/cloud/resource/ResourceManagerImpl.java | 5 +++-- server/src/com/cloud/storage/swift/SwiftManager.java | 3 ++- .../src/com/cloud/storage/swift/SwiftManagerImpl.java | 7 ++++--- .../com/cloud/resource/MockResourceManagerImpl.java | 2 +- 6 files changed, 18 insertions(+), 14 deletions(-) diff --git a/api/src/com/cloud/resource/ResourceService.java b/api/src/com/cloud/resource/ResourceService.java index b9db8e734d9..7348a5a6867 100755 --- a/api/src/com/cloud/resource/ResourceService.java +++ b/api/src/com/cloud/resource/ResourceService.java @@ -34,6 +34,7 @@ import com.cloud.hypervisor.Hypervisor.HypervisorType; import com.cloud.org.Cluster; import com.cloud.storage.S3; import com.cloud.storage.Swift; +import com.cloud.utils.Pair; import com.cloud.utils.fsm.NoTransitionException; import org.apache.cloudstack.api.command.admin.host.ReconnectHostCmd; @@ -94,10 +95,10 @@ public interface ResourceService { Swift discoverSwift(AddSwiftCmd addSwiftCmd) throws DiscoveryException; S3 discoverS3(AddS3Cmd cmd) throws DiscoveryException; - + List getSupportedHypervisorTypes(long zoneId, boolean forVirtualRouter, Long podId); - List listSwifts(ListSwiftsCmd cmd); + Pair, Integer> listSwifts(ListSwiftsCmd cmd); List listS3s(ListS3sCmd cmd); diff --git a/api/src/org/apache/cloudstack/api/command/admin/swift/ListSwiftsCmd.java b/api/src/org/apache/cloudstack/api/command/admin/swift/ListSwiftsCmd.java index d7c151188e7..af266437932 100644 --- a/api/src/org/apache/cloudstack/api/command/admin/swift/ListSwiftsCmd.java +++ b/api/src/org/apache/cloudstack/api/command/admin/swift/ListSwiftsCmd.java @@ -30,6 +30,7 @@ import org.apache.cloudstack.api.response.ListResponse; import org.apache.cloudstack.api.response.SwiftResponse; import com.cloud.storage.Swift; import com.cloud.user.Account; +import com.cloud.utils.Pair; @APICommand(name = "listSwifts", description = "List Swift.", responseObject = HostResponse.class, since="3.0.0") public class ListSwiftsCmd extends BaseListCmd { @@ -64,20 +65,19 @@ public class ListSwiftsCmd extends BaseListCmd { @Override public void execute(){ - List result = _resourceService.listSwifts(this); + Pair, Integer> result = _resourceService.listSwifts(this); ListResponse response = new ListResponse(); List swiftResponses = new ArrayList(); if (result != null) { - SwiftResponse swiftResponse = null; - for (Swift swift : result) { - swiftResponse = _responseGenerator.createSwiftResponse(swift); + for (Swift swift : result.first()) { + SwiftResponse swiftResponse = _responseGenerator.createSwiftResponse(swift); swiftResponse.setResponseName(getCommandName()); swiftResponse.setObjectName("swift"); swiftResponses.add(swiftResponse); } } - response.setResponses(swiftResponses); + response.setResponses(swiftResponses, result.second()); response.setResponseName(getCommandName()); this.setResponseObject(response); } diff --git a/server/src/com/cloud/resource/ResourceManagerImpl.java b/server/src/com/cloud/resource/ResourceManagerImpl.java index b6ee747bee9..f82424a10c2 100755 --- a/server/src/com/cloud/resource/ResourceManagerImpl.java +++ b/server/src/com/cloud/resource/ResourceManagerImpl.java @@ -560,8 +560,9 @@ public class ResourceManagerImpl implements ResourceManager, ResourceService, Ma } @Override - public List listSwifts(ListSwiftsCmd cmd) { - return _swiftMgr.listSwifts(cmd); + public Pair, Integer> listSwifts(ListSwiftsCmd cmd) { + Pair, Integer> swifts = _swiftMgr.listSwifts(cmd); + return new Pair, Integer>(swifts.first(), swifts.second()); } @Override diff --git a/server/src/com/cloud/storage/swift/SwiftManager.java b/server/src/com/cloud/storage/swift/SwiftManager.java index 0dd6e1cf22a..2abdac7f807 100644 --- a/server/src/com/cloud/storage/swift/SwiftManager.java +++ b/server/src/com/cloud/storage/swift/SwiftManager.java @@ -27,6 +27,7 @@ import com.cloud.exception.DiscoveryException; import com.cloud.storage.Swift; import com.cloud.storage.SwiftVO; import com.cloud.storage.VMTemplateSwiftVO; +import com.cloud.utils.Pair; import com.cloud.utils.component.Manager; public interface SwiftManager extends Manager { @@ -50,7 +51,7 @@ public interface SwiftManager extends Manager { Long chooseZoneForTmpltExtract(Long tmpltId); - List listSwifts(ListSwiftsCmd cmd); + Pair, Integer> listSwifts(ListSwiftsCmd cmd); VMTemplateSwiftVO findByTmpltId(Long tmpltId); } diff --git a/server/src/com/cloud/storage/swift/SwiftManagerImpl.java b/server/src/com/cloud/storage/swift/SwiftManagerImpl.java index dab16ced985..d62dd63c068 100644 --- a/server/src/com/cloud/storage/swift/SwiftManagerImpl.java +++ b/server/src/com/cloud/storage/swift/SwiftManagerImpl.java @@ -50,6 +50,7 @@ import com.cloud.storage.dao.SwiftDao; import com.cloud.storage.dao.VMTemplateHostDao; import com.cloud.storage.dao.VMTemplateSwiftDao; import com.cloud.storage.dao.VMTemplateZoneDao; +import com.cloud.utils.Pair; import com.cloud.utils.component.Inject; import com.cloud.utils.db.Filter; import com.cloud.utils.db.SearchCriteria; @@ -242,7 +243,7 @@ public class SwiftManagerImpl implements SwiftManager { if (swift == null) { return null; } - + List tmpltHosts = _vmTmpltHostDao.listByOnlyTemplateId(tmpltId); if (tmpltHosts != null) { Collections.shuffle(tmpltHosts); @@ -260,13 +261,13 @@ public class SwiftManagerImpl implements SwiftManager { } @Override - public List listSwifts(ListSwiftsCmd cmd) { + public Pair, Integer> listSwifts(ListSwiftsCmd cmd) { Filter searchFilter = new Filter(SwiftVO.class, "id", Boolean.TRUE, cmd.getStartIndex(), cmd.getPageSizeVal()); SearchCriteria sc = _swiftDao.createSearchCriteria(); if (cmd.getId() != null) { sc.addAnd("id", SearchCriteria.Op.EQ, cmd.getId()); } - return _swiftDao.search(sc, searchFilter); + return _swiftDao.searchAndCount(sc, searchFilter); } diff --git a/server/test/com/cloud/resource/MockResourceManagerImpl.java b/server/test/com/cloud/resource/MockResourceManagerImpl.java index e94cdea9853..a0dad479144 100644 --- a/server/test/com/cloud/resource/MockResourceManagerImpl.java +++ b/server/test/com/cloud/resource/MockResourceManagerImpl.java @@ -202,7 +202,7 @@ public class MockResourceManagerImpl implements ResourceManager, Manager { * @see com.cloud.resource.ResourceService#listSwifts(com.cloud.api.commands.ListSwiftsCmd) */ @Override - public List listSwifts(ListSwiftsCmd cmd) { + public Pair, Integer> listSwifts(ListSwiftsCmd cmd) { // TODO Auto-generated method stub return null; }