diff --git a/api/src/main/java/org/apache/cloudstack/api/command/user/vm/ListVMsCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/user/vm/ListVMsCmd.java index b0ff1023c5c2..dcbf9627813f 100644 --- a/api/src/main/java/org/apache/cloudstack/api/command/user/vm/ListVMsCmd.java +++ b/api/src/main/java/org/apache/cloudstack/api/command/user/vm/ListVMsCmd.java @@ -37,6 +37,7 @@ import org.apache.cloudstack.api.BaseListTaggedResourcesCmd; import org.apache.cloudstack.api.Parameter; import org.apache.cloudstack.api.ResponseObject.ResponseView; +import org.apache.cloudstack.api.response.BackupOfferingResponse; import org.apache.cloudstack.api.response.HostResponse; import org.apache.cloudstack.api.response.InstanceGroupResponse; import org.apache.cloudstack.api.response.IsoVmResponse; @@ -132,6 +133,9 @@ public class ListVMsCmd extends BaseListTaggedResourcesCmd implements UserCmd { @Parameter(name = ApiConstants.SERVICE_OFFERING_ID, type = CommandType.UUID, entityType = ServiceOfferingResponse.class, description = "list by the service offering", since = "4.4") private Long serviceOffId; + @Parameter(name = ApiConstants.BACKUP_OFFERING_ID, type = CommandType.UUID, entityType = BackupOfferingResponse.class, description = "list by the backup offering", since = "4.17") + private Long backupOffId; + @Parameter(name = ApiConstants.DISPLAY_VM, type = CommandType.BOOLEAN, description = "list resources by display flag; only ROOT admin is eligible to pass this parameter", since = "4.4", authorized = {RoleType.Admin}) private Boolean display; @@ -180,6 +184,10 @@ public Long getServiceOfferingId() { return serviceOffId; } + public Long getBackupOfferingId() { + return backupOffId; + } + public Long getZoneId() { return zoneId; } diff --git a/server/src/main/java/com/cloud/api/query/QueryManagerImpl.java b/server/src/main/java/com/cloud/api/query/QueryManagerImpl.java index 971d409c5d27..c6a1e52a789b 100644 --- a/server/src/main/java/com/cloud/api/query/QueryManagerImpl.java +++ b/server/src/main/java/com/cloud/api/query/QueryManagerImpl.java @@ -985,6 +985,7 @@ private Pair, Integer> searchForUserVMsInternal(ListVMsCmd cm Object keyPairName = cmd.getKeyPairName(); Object serviceOffId = cmd.getServiceOfferingId(); Object securityGroupId = cmd.getSecurityGroupId(); + Object backupOfferingId = cmd.getBackupOfferingId(); Object isHaEnabled = cmd.getHaEnabled(); Object pod = null; Long clusterId = null; @@ -1017,6 +1018,11 @@ private Pair, Integer> searchForUserVMsInternal(ListVMsCmd cm if (serviceOffId != null) { sb.and("serviceOfferingId", sb.entity().getServiceOfferingId(), SearchCriteria.Op.EQ); } + + if (backupOfferingId != null) { + sb.and("backupOfferingId", sb.entity().getBackupOfferingId(), SearchCriteria.Op.EQ); + } + if (display != null) { sb.and("display", sb.entity().isDisplayVm(), SearchCriteria.Op.EQ); } @@ -1103,6 +1109,10 @@ private Pair, Integer> searchForUserVMsInternal(ListVMsCmd cm sc.setParameters("serviceOfferingId", serviceOffId); } + if (backupOfferingId != null) { + sc.setParameters("backupOfferingId", backupOfferingId); + } + if (securityGroupId != null) { sc.setParameters("securityGroupId", securityGroupId); } diff --git a/server/src/main/java/com/cloud/api/query/vo/UserVmJoinVO.java b/server/src/main/java/com/cloud/api/query/vo/UserVmJoinVO.java index 2ce7e6c8572d..5f28119a5db7 100644 --- a/server/src/main/java/com/cloud/api/query/vo/UserVmJoinVO.java +++ b/server/src/main/java/com/cloud/api/query/vo/UserVmJoinVO.java @@ -629,6 +629,10 @@ public String getBackupOfferingUuid() { return backupOfferingUuid; } + public Long getBackupOfferingId() { + return backupOfferingId; + } + public String getBackupOfferingName() { return backupOfferingName; }