Repository: cloudstack Updated Branches: refs/heads/master 0af26000b -> 1b5342b24
CLOUDSTACK-9535: [API] listVMSnapshots improvement Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/f4a42ab0 Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/f4a42ab0 Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/f4a42ab0 Branch: refs/heads/master Commit: f4a42ab0d7aa559e007e263b54e67d4ce9a0e2ad Parents: 9a8841d Author: nvazquez <nicolas.m.vazq...@gmail.com> Authored: Mon Oct 3 15:56:32 2016 -0300 Committer: nvazquez <nicolas.m.vazq...@gmail.com> Committed: Wed Oct 5 17:42:14 2016 -0300 ---------------------------------------------------------------------- .../com/cloud/vm/snapshot/VMSnapshotService.java | 3 ++- .../command/user/vmsnapshot/ListVMSnapshotCmd.java | 7 ++++--- server/src/com/cloud/api/ApiResponseHelper.java | 16 ++++++++++++++++ .../cloud/vm/snapshot/VMSnapshotManagerImpl.java | 5 +++-- 4 files changed, 25 insertions(+), 6 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cloudstack/blob/f4a42ab0/api/src/com/cloud/vm/snapshot/VMSnapshotService.java ---------------------------------------------------------------------- diff --git a/api/src/com/cloud/vm/snapshot/VMSnapshotService.java b/api/src/com/cloud/vm/snapshot/VMSnapshotService.java index 839da73..12767b3 100644 --- a/api/src/com/cloud/vm/snapshot/VMSnapshotService.java +++ b/api/src/com/cloud/vm/snapshot/VMSnapshotService.java @@ -27,11 +27,12 @@ import com.cloud.exception.InsufficientServerCapacityException; import com.cloud.exception.ResourceAllocationException; import com.cloud.exception.ResourceUnavailableException; import com.cloud.uservm.UserVm; +import com.cloud.utils.Pair; import com.cloud.vm.VirtualMachine; public interface VMSnapshotService { - List<? extends VMSnapshot> listVMSnapshots(ListVMSnapshotCmd cmd); + Pair<List<? extends VMSnapshot>, Integer> listVMSnapshots(ListVMSnapshotCmd cmd); VMSnapshot getVMSnapshotById(Long id); http://git-wip-us.apache.org/repos/asf/cloudstack/blob/f4a42ab0/api/src/org/apache/cloudstack/api/command/user/vmsnapshot/ListVMSnapshotCmd.java ---------------------------------------------------------------------- diff --git a/api/src/org/apache/cloudstack/api/command/user/vmsnapshot/ListVMSnapshotCmd.java b/api/src/org/apache/cloudstack/api/command/user/vmsnapshot/ListVMSnapshotCmd.java index ad5126e..9b2634d 100644 --- a/api/src/org/apache/cloudstack/api/command/user/vmsnapshot/ListVMSnapshotCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/vmsnapshot/ListVMSnapshotCmd.java @@ -28,6 +28,7 @@ import org.apache.cloudstack.api.response.ListResponse; import org.apache.cloudstack.api.response.UserVmResponse; import org.apache.cloudstack.api.response.VMSnapshotResponse; +import com.cloud.utils.Pair; import com.cloud.vm.snapshot.VMSnapshot; @APICommand(name = "listVMSnapshot", description = "List virtual machine snapshot by conditions", responseObject = VMSnapshotResponse.class, since = "4.2.0", entityType = {VMSnapshot.class}, @@ -69,15 +70,15 @@ public class ListVMSnapshotCmd extends BaseListTaggedResourcesCmd { @Override public void execute() { - List<? extends VMSnapshot> result = _vmSnapshotService.listVMSnapshots(this); + Pair<List<? extends VMSnapshot>,Integer> result = _vmSnapshotService.listVMSnapshots(this); ListResponse<VMSnapshotResponse> response = new ListResponse<VMSnapshotResponse>(); List<VMSnapshotResponse> snapshotResponses = new ArrayList<VMSnapshotResponse>(); - for (VMSnapshot r : result) { + for (VMSnapshot r : result.first()) { VMSnapshotResponse vmSnapshotResponse = _responseGenerator.createVMSnapshotResponse(r); vmSnapshotResponse.setObjectName("vmSnapshot"); snapshotResponses.add(vmSnapshotResponse); } - response.setResponses(snapshotResponses); + response.setResponses(snapshotResponses, result.second()); response.setResponseName(getCommandName()); setResponseObject(response); } http://git-wip-us.apache.org/repos/asf/cloudstack/blob/f4a42ab0/server/src/com/cloud/api/ApiResponseHelper.java ---------------------------------------------------------------------- diff --git a/server/src/com/cloud/api/ApiResponseHelper.java b/server/src/com/cloud/api/ApiResponseHelper.java index 66b8faa..6a7f0ab 100644 --- a/server/src/com/cloud/api/ApiResponseHelper.java +++ b/server/src/com/cloud/api/ApiResponseHelper.java @@ -194,6 +194,7 @@ import com.cloud.configuration.ResourceLimit; import com.cloud.dc.ClusterDetailsDao; import com.cloud.dc.ClusterVO; import com.cloud.dc.DataCenter; +import com.cloud.dc.DataCenterVO; import com.cloud.dc.HostPodVO; import com.cloud.dc.Pod; import com.cloud.dc.StorageNetworkIpRange; @@ -201,6 +202,7 @@ import com.cloud.dc.Vlan; import com.cloud.dc.Vlan.VlanType; import com.cloud.dc.VlanVO; import com.cloud.domain.Domain; +import com.cloud.domain.DomainVO; import com.cloud.event.Event; import com.cloud.exception.InvalidParameterValueException; import com.cloud.exception.PermissionDeniedException; @@ -552,6 +554,10 @@ public class ApiResponseHelper implements ResponseGenerator { UserVm vm = ApiDBUtils.findUserVmById(vmSnapshot.getVmId()); if (vm != null) { vmSnapshotResponse.setVirtualMachineid(vm.getUuid()); + DataCenterVO datacenter = ApiDBUtils.findZoneById(vm.getDataCenterId()); + if (datacenter != null) { + vmSnapshotResponse.setZoneId(datacenter.getUuid()); + } } if (vmSnapshot.getParent() != null) { VMSnapshot vmSnapshotParent = ApiDBUtils.getVMSnapshotById(vmSnapshot.getParent()); @@ -565,6 +571,16 @@ public class ApiResponseHelper implements ResponseGenerator { vmSnapshotResponse.setProjectId(project.getUuid()); vmSnapshotResponse.setProjectName(project.getName()); } + Account account = ApiDBUtils.findAccountById(vmSnapshot.getAccountId()); + if (account != null) { + vmSnapshotResponse.setAccountName(account.getAccountName()); + } + DomainVO domain = ApiDBUtils.findDomainById(vmSnapshot.getDomainId()); + if (domain != null) { + vmSnapshotResponse.setDomainId(domain.getUuid()); + vmSnapshotResponse.setDomainName(domain.getName()); + } + vmSnapshotResponse.setCurrent(vmSnapshot.getCurrent()); vmSnapshotResponse.setType(vmSnapshot.getType().toString()); vmSnapshotResponse.setObjectName("vmsnapshot"); http://git-wip-us.apache.org/repos/asf/cloudstack/blob/f4a42ab0/server/src/com/cloud/vm/snapshot/VMSnapshotManagerImpl.java ---------------------------------------------------------------------- diff --git a/server/src/com/cloud/vm/snapshot/VMSnapshotManagerImpl.java b/server/src/com/cloud/vm/snapshot/VMSnapshotManagerImpl.java index d8f4596..bb1536d 100644 --- a/server/src/com/cloud/vm/snapshot/VMSnapshotManagerImpl.java +++ b/server/src/com/cloud/vm/snapshot/VMSnapshotManagerImpl.java @@ -163,7 +163,7 @@ public class VMSnapshotManagerImpl extends MutualExclusiveIdsManagerBase impleme } @Override - public List<VMSnapshotVO> listVMSnapshots(ListVMSnapshotCmd cmd) { + public Pair<List<? extends VMSnapshot>, Integer> listVMSnapshots(ListVMSnapshotCmd cmd) { Account caller = getCaller(); List<Long> permittedAccounts = new ArrayList<Long>(); @@ -243,7 +243,8 @@ public class VMSnapshotManagerImpl extends MutualExclusiveIdsManagerBase impleme sc.setParameters("id", id); } - return _vmSnapshotDao.search(sc, searchFilter); + Pair<List<VMSnapshotVO>,Integer> searchAndCount = _vmSnapshotDao.searchAndCount(sc, searchFilter); + return new Pair<List<? extends VMSnapshot>, Integer>(searchAndCount.first(), searchAndCount.second()); }