Skip to content

Commit 74c1ffa

Browse files
committed
add paging indicator
1 parent bdff4b6 commit 74c1ffa

File tree

3 files changed

+29
-10
lines changed

3 files changed

+29
-10
lines changed

plugins/hypervisors/vmware/src/main/java/com/cloud/hypervisor/vmware/manager/VmwareManagerImpl.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1593,7 +1593,8 @@ public List<UnmanagedInstanceTO> listVMsInDatacenter(ListVmwareDcVmsCmd cmd) {
15931593
String datacenterName = cmd.getDatacenterName();
15941594
String username = cmd.getUsername();
15951595
String password = cmd.getPassword();
1596-
Integer maxObjects = cmd.getMaxNumber();
1596+
Integer maxObjects = cmd.getPageSize();
1597+
boolean nextPage = cmd.getPageNumber() != null && cmd.getPageNumber() > 1 ? false : true;
15971598
Long existingVcenterId = cmd.getExistingVcenterId();
15981599
String keyword = cmd.getKeyword();
15991600

@@ -1633,7 +1634,7 @@ public List<UnmanagedInstanceTO> listVMsInDatacenter(ListVmwareDcVmsCmd cmd) {
16331634
s_logger.error(msg);
16341635
throw new InvalidParameterValueException(msg);
16351636
}
1636-
List<UnmanagedInstanceTO> instances = dcMo.getVmsOnDatacenter(maxObjects);
1637+
List<UnmanagedInstanceTO> instances = dcMo.getVmsOnDatacenter(maxObjects, nextPage);
16371638
return StringUtils.isBlank(keyword) ? instances :
16381639
instances.stream().filter(x -> x.getName().toLowerCase().contains(keyword.toLowerCase())).collect(Collectors.toList());
16391640
} catch (Exception e) {

plugins/hypervisors/vmware/src/main/java/org/apache/cloudstack/api/command/admin/zone/ListVmwareDcVmsCmd.java

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -70,8 +70,14 @@ public class ListVmwareDcVmsCmd extends BaseListCmd {
7070
@Parameter(name = ApiConstants.PASSWORD, type = CommandType.STRING, description = "The password for specified username.")
7171
private String password;
7272

73-
@Parameter(name = ApiConstants.MAX_NUMBER, type = CommandType.INTEGER, description = "The maximum number of results to return.")
74-
private Integer maxNumber;
73+
@Parameter(name = ApiConstants.PAGE_SIZE, type = CommandType.INTEGER, description = "The maximum number of results to return.")
74+
private Integer pageSize;
75+
76+
@Parameter(name = ApiConstants.PAGE, type = CommandType.INTEGER,
77+
description = "For listVmwareDcVms, the maximum number of results to return is either 0, 1 or more." +
78+
" When more than 1, the next page as returned by the vcenter will be propagated to the caller." +
79+
" If no previous call has been done, this is the same as the first page")
80+
private Integer pageNumber;
7581

7682
public String getVcenter() {
7783
return vcenter;
@@ -85,8 +91,12 @@ public String getPassword() {
8591
return password;
8692
}
8793

88-
public Integer getMaxNumber() {
89-
return maxNumber;
94+
public Integer getPageSize() {
95+
return pageSize;
96+
}
97+
98+
public Integer getPageNumber() {
99+
return pageNumber;
90100
}
91101

92102
public String getDatacenterName() {

vmware-base/src/main/java/com/cloud/hypervisor/vmware/mo/DatacenterMO.java

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -162,9 +162,9 @@ public VirtualMachineMO checkIfVmAlreadyExistsInVcenter(String vmNameOnVcenter,
162162
return null;
163163
}
164164

165-
public List<UnmanagedInstanceTO> getVmsOnDatacenter(Integer maxObjects) throws Exception {
165+
public List<UnmanagedInstanceTO> getVmsOnDatacenter(Integer maxObjects, boolean nextPage) throws Exception {
166166
List<UnmanagedInstanceTO> vms = new ArrayList<>();
167-
List<ObjectContent> ocs = getVmPropertiesOnDatacenterVmFolder(new String[] {"name"}, maxObjects);
167+
List<ObjectContent> ocs = getVmPropertiesOnDatacenterVmFolder(new String[] {"name"}, maxObjects, nextPage);
168168
if (ocs != null) {
169169
for (ObjectContent oc : ocs) {
170170
ManagedObjectReference vmMor = oc.getObj();
@@ -312,10 +312,18 @@ public List<ObjectContent> getDatastorePropertiesOnDatacenter(String[] propertyP
312312
}
313313

314314
public List<ObjectContent> getVmPropertiesOnDatacenterVmFolder(String[] propertyPaths) throws Exception {
315-
return getVmPropertiesOnDatacenterVmFolder(propertyPaths, null);
315+
return getVmPropertiesOnDatacenterVmFolder(propertyPaths, null, false);
316316
}
317317

318-
public List<ObjectContent> getVmPropertiesOnDatacenterVmFolder(String[] propertyPaths, Integer maxObjects) throws Exception {
318+
/**
319+
*
320+
* @param propertyPaths Vmware side property names to query, for instance {"name"}
321+
* @param maxObjects the number of objects to retrieve
322+
* @param nextPage restart the query or continue a previous query
323+
* @return The propertyPaths requested for the objects of type "VirtualMachine" in a list are found/returned by the DC
324+
* @throws Exception generic {code}Exception{code} as thrown by Vmware.
325+
*/
326+
public List<ObjectContent> getVmPropertiesOnDatacenterVmFolder(String[] propertyPaths, Integer maxObjects, boolean nextPage) throws Exception {
319327
PropertySpec pSpec = new PropertySpec();
320328
pSpec.setType("VirtualMachine");
321329
pSpec.getPathSet().addAll(Arrays.asList(propertyPaths));

0 commit comments

Comments
 (0)