Skip to content

Commit bb6fddf

Browse files
author
Alena Prokharchyk
committed
listVirtualMachines API: ability to search by service offering the vm is created from
listVolumes API: ability to search by disk offering the volume is created from
1 parent a6f1767 commit bb6fddf

4 files changed

Lines changed: 35 additions & 4 deletions

File tree

api/src/org/apache/cloudstack/api/command/user/vm/ListVMsCmd.java

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,6 @@
2020
import java.util.EnumSet;
2121
import java.util.List;
2222

23-
import org.apache.log4j.Logger;
24-
2523
import org.apache.cloudstack.affinity.AffinityGroupResponse;
2624
import org.apache.cloudstack.api.APICommand;
2725
import org.apache.cloudstack.api.ApiCommandJobType;
@@ -35,11 +33,13 @@
3533
import org.apache.cloudstack.api.response.ListResponse;
3634
import org.apache.cloudstack.api.response.NetworkResponse;
3735
import org.apache.cloudstack.api.response.PodResponse;
36+
import org.apache.cloudstack.api.response.ServiceOfferingResponse;
3837
import org.apache.cloudstack.api.response.StoragePoolResponse;
3938
import org.apache.cloudstack.api.response.TemplateResponse;
4039
import org.apache.cloudstack.api.response.UserVmResponse;
4140
import org.apache.cloudstack.api.response.VpcResponse;
4241
import org.apache.cloudstack.api.response.ZoneResponse;
42+
import org.apache.log4j.Logger;
4343

4444
import com.cloud.exception.InvalidParameterValueException;
4545

@@ -112,6 +112,9 @@ public class ListVMsCmd extends BaseListTaggedResourcesCmd {
112112
@Parameter(name = ApiConstants.AFFINITY_GROUP_ID, type = CommandType.UUID, entityType = AffinityGroupResponse.class, description = "list vms by affinity group")
113113
private Long affinityGroupId;
114114

115+
@Parameter(name = ApiConstants.SERVICE_OFFERING_ID, type = CommandType.UUID, entityType = ServiceOfferingResponse.class, description = "list by the service offering", since = "4.4")
116+
private Long serviceOffId;
117+
115118
/////////////////////////////////////////////////////
116119
/////////////////// Accessors ///////////////////////
117120
/////////////////////////////////////////////////////
@@ -140,6 +143,10 @@ public String getState() {
140143
return state;
141144
}
142145

146+
public Long getServiceOfferingId() {
147+
return serviceOffId;
148+
}
149+
143150
public Long getZoneId() {
144151
return zoneId;
145152
}

api/src/org/apache/cloudstack/api/command/user/volume/ListVolumesCmd.java

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,21 +16,21 @@
1616
// under the License.
1717
package org.apache.cloudstack.api.command.user.volume;
1818

19-
import org.apache.log4j.Logger;
20-
2119
import org.apache.cloudstack.acl.RoleType;
2220
import org.apache.cloudstack.api.APICommand;
2321
import org.apache.cloudstack.api.ApiCommandJobType;
2422
import org.apache.cloudstack.api.ApiConstants;
2523
import org.apache.cloudstack.api.BaseListTaggedResourcesCmd;
2624
import org.apache.cloudstack.api.Parameter;
25+
import org.apache.cloudstack.api.response.DiskOfferingResponse;
2726
import org.apache.cloudstack.api.response.HostResponse;
2827
import org.apache.cloudstack.api.response.ListResponse;
2928
import org.apache.cloudstack.api.response.PodResponse;
3029
import org.apache.cloudstack.api.response.StoragePoolResponse;
3130
import org.apache.cloudstack.api.response.UserVmResponse;
3231
import org.apache.cloudstack.api.response.VolumeResponse;
3332
import org.apache.cloudstack.api.response.ZoneResponse;
33+
import org.apache.log4j.Logger;
3434

3535
@APICommand(name = "listVolumes", description = "Lists all volumes.", responseObject = VolumeResponse.class,
3636
requestHasSensitiveInfo = false, responseHasSensitiveInfo = false)
@@ -72,6 +72,9 @@ public class ListVolumesCmd extends BaseListTaggedResourcesCmd {
7272
authorized = {RoleType.Admin})
7373
private Long storageId;
7474

75+
@Parameter(name = ApiConstants.DISK_OFFERING_ID, type = CommandType.UUID, entityType = DiskOfferingResponse.class, description = "list volumes by disk offering")
76+
private Long diskOfferingId;
77+
7578
/////////////////////////////////////////////////////
7679
/////////////////// Accessors ///////////////////////
7780
/////////////////////////////////////////////////////
@@ -92,6 +95,10 @@ public Long getPodId() {
9295
return podId;
9396
}
9497

98+
public Long getDiskOfferingId() {
99+
return diskOfferingId;
100+
}
101+
95102
public String getType() {
96103
return type;
97104
}

server/src/com/cloud/api/query/QueryManagerImpl.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -735,6 +735,7 @@ private Pair<List<UserVmJoinVO>, Integer> searchForUserVMsInternal(ListVMsCmd cm
735735
c.addCriteria(Criteria.ISO_ID, cmd.getIsoId());
736736
c.addCriteria(Criteria.VPC_ID, cmd.getVpcId());
737737
c.addCriteria(Criteria.AFFINITY_GROUP_ID, cmd.getAffinityGroupId());
738+
c.addCriteria(Criteria.SERVICE_OFFERING_ID, cmd.getServiceOfferingId());
738739

739740
if (domainId != null) {
740741
c.addCriteria(Criteria.DOMAINID, domainId);
@@ -791,6 +792,7 @@ private Pair<List<UserVmJoinVO>, Integer> searchForUserVMsByCriteria(Criteria c,
791792
Object isoId = c.getCriteria(Criteria.ISO_ID);
792793
Object vpcId = c.getCriteria(Criteria.VPC_ID);
793794
Object affinityGroupId = c.getCriteria(Criteria.AFFINITY_GROUP_ID);
795+
Object serviceOffId = c.getCriteria(Criteria.SERVICE_OFFERING_ID);
794796

795797
sb.and("displayName", sb.entity().getDisplayName(), SearchCriteria.Op.LIKE);
796798
sb.and("id", sb.entity().getId(), SearchCriteria.Op.EQ);
@@ -807,6 +809,10 @@ private Pair<List<UserVmJoinVO>, Integer> searchForUserVMsByCriteria(Criteria c,
807809
sb.and("isoId", sb.entity().getIsoId(), SearchCriteria.Op.EQ);
808810
sb.and("instanceGroupId", sb.entity().getInstanceGroupId(), SearchCriteria.Op.EQ);
809811

812+
if (serviceOffId != null) {
813+
sb.and("serviceOfferingId", sb.entity().getServiceOfferingId(), SearchCriteria.Op.EQ);
814+
}
815+
810816
if (groupId != null && (Long)groupId != -1) {
811817
sb.and("instanceGroupId", sb.entity().getInstanceGroupId(), SearchCriteria.Op.EQ);
812818
}
@@ -862,6 +868,10 @@ private Pair<List<UserVmJoinVO>, Integer> searchForUserVMsByCriteria(Criteria c,
862868
sc.addAnd("displayName", SearchCriteria.Op.SC, ssc);
863869
}
864870

871+
if (serviceOffId != null) {
872+
sc.setParameters("serviceOfferingId", serviceOffId);
873+
}
874+
865875
if (id != null) {
866876
sc.setParameters("id", id);
867877
}
@@ -1612,6 +1622,7 @@ private Pair<List<VolumeJoinVO>, Integer> searchForVolumesInternal(ListVolumesCm
16121622
Map<String, String> tags = cmd.getTags();
16131623
boolean isRootAdmin = _accountMgr.isRootAdmin(caller.getType());
16141624
Long storageId = cmd.getStorageId();
1625+
Long diskOffId = cmd.getDiskOfferingId();
16151626

16161627
Long zoneId = cmd.getZoneId();
16171628
Long podId = null;
@@ -1645,6 +1656,7 @@ private Pair<List<VolumeJoinVO>, Integer> searchForVolumesInternal(ListVolumesCm
16451656
sb.and("dataCenterId", sb.entity().getDataCenterId(), SearchCriteria.Op.EQ);
16461657
sb.and("podId", sb.entity().getPodId(), SearchCriteria.Op.EQ);
16471658
sb.and("storageId", sb.entity().getPoolId(), SearchCriteria.Op.EQ);
1659+
sb.and("diskOfferingId", sb.entity().getDiskOfferingId(), SearchCriteria.Op.EQ);
16481660
// Only return volumes that are not destroyed
16491661
sb.and("state", sb.entity().getState(), SearchCriteria.Op.NEQ);
16501662
sb.and("systemUse", sb.entity().isSystemUse(), SearchCriteria.Op.NEQ);
@@ -1685,6 +1697,10 @@ private Pair<List<VolumeJoinVO>, Integer> searchForVolumesInternal(ListVolumesCm
16851697
sc.addAnd("tagKey", SearchCriteria.Op.SC, tagSc);
16861698
}
16871699

1700+
if (diskOffId != null) {
1701+
sc.setParameters("diskOfferingId", diskOffId);
1702+
}
1703+
16881704
if (id != null) {
16891705
sc.setParameters("id", id);
16901706
}

server/src/com/cloud/server/Criteria.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,7 @@ public class Criteria {
8484
public static final String ISO_ID = "isoid";
8585
public static final String VPC_ID = "vpcId";
8686
public static final String AFFINITY_GROUP_ID = "affinitygroupid";
87+
public static final String SERVICE_OFFERING_ID = "serviceofferingid";
8788

8889
public Criteria(String orderBy, Boolean ascending, Long offset, Long limit) {
8990
this.offset = offset;

0 commit comments

Comments
 (0)