Skip to content

Commit ff4a487

Browse files
author
Prachi Damle
committed
Adding affinitygroupid search parameter to listVMsCmd
1 parent fc08c23 commit ff4a487

4 files changed

Lines changed: 30 additions & 9 deletions

File tree

api/src/org/apache/cloudstack/api/ApiConstants.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -479,6 +479,7 @@ public class ApiConstants {
479479
public static final String AFFINITY_GROUP_IDS = "affinitygroupids";
480480
public static final String AFFINITY_GROUP_NAMES = "affinitygroupnames";
481481
public static final String ASA_INSIDE_PORT_PROFILE = "insideportprofile";
482+
public static final String AFFINITY_GROUP_ID = "affinitygroupid";
482483

483484
public enum HostDetails {
484485
all, capacity, events, stats, min;

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

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

23+
import org.apache.cloudstack.affinity.AffinityGroupResponse;
2324
import org.apache.cloudstack.api.APICommand;
2425
import org.apache.cloudstack.api.ApiConstants;
2526
import org.apache.cloudstack.api.ApiConstants.VMDetails;
@@ -110,6 +111,10 @@ public class ListVMsCmd extends BaseListTaggedResourcesCmd {
110111
@Parameter(name=ApiConstants.VPC_ID, type=CommandType.UUID, entityType=VpcResponse.class,
111112
description="list vms by vpc")
112113
private Long vpcId;
114+
115+
@Parameter(name = ApiConstants.AFFINITY_GROUP_ID, type = CommandType.UUID, entityType = AffinityGroupResponse.class, description = "list vms by affinity group")
116+
private Long affinityGroupId;
117+
113118
/////////////////////////////////////////////////////
114119
/////////////////// Accessors ///////////////////////
115120
/////////////////////////////////////////////////////
@@ -174,6 +179,10 @@ public Long getVpcId(){
174179
return vpcId;
175180
}
176181

182+
public Long getAffinityGroupId() {
183+
return affinityGroupId;
184+
}
185+
177186
public EnumSet<VMDetails> getDetails() throws InvalidParameterValueException {
178187
EnumSet<VMDetails> dv;
179188
if (viewDetails==null || viewDetails.size() <=0){

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

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -638,6 +638,7 @@ private Pair<List<UserVmJoinVO>, Integer> searchForUserVMsInternal(ListVMsCmd cm
638638
c.addCriteria(Criteria.TEMPLATE_ID, cmd.getTemplateId());
639639
c.addCriteria(Criteria.ISO_ID, cmd.getIsoId());
640640
c.addCriteria(Criteria.VPC_ID, cmd.getVpcId());
641+
c.addCriteria(Criteria.AFFINITY_GROUP_ID, cmd.getAffinityGroupId());
641642

642643
if (domainId != null) {
643644
c.addCriteria(Criteria.DOMAINID, domainId);
@@ -693,6 +694,7 @@ private Pair<List<UserVmJoinVO>, Integer> searchForUserVMsByCriteria(Criteria c,
693694
Object templateId = c.getCriteria(Criteria.TEMPLATE_ID);
694695
Object isoId = c.getCriteria(Criteria.ISO_ID);
695696
Object vpcId = c.getCriteria(Criteria.VPC_ID);
697+
Object affinityGroupId = c.getCriteria(Criteria.AFFINITY_GROUP_ID);
696698

697699
sb.and("displayName", sb.entity().getDisplayName(), SearchCriteria.Op.LIKE);
698700
sb.and("id", sb.entity().getId(), SearchCriteria.Op.EQ);
@@ -733,6 +735,10 @@ private Pair<List<UserVmJoinVO>, Integer> searchForUserVMsByCriteria(Criteria c,
733735
sb.and("poolId", sb.entity().getPoolId(), SearchCriteria.Op.EQ);
734736
}
735737

738+
if (affinityGroupId != null) {
739+
sb.and("affinityGroupId", sb.entity().getAffinityGroupId(), SearchCriteria.Op.EQ);
740+
}
741+
736742
// populate the search criteria with the values passed in
737743
SearchCriteria<UserVmJoinVO> sc = sb.create();
738744

@@ -830,6 +836,10 @@ private Pair<List<UserVmJoinVO>, Integer> searchForUserVMsByCriteria(Criteria c,
830836
sc.setParameters("poolId", storageId);
831837
}
832838

839+
if (affinityGroupId != null) {
840+
sc.setParameters("affinityGroupId", affinityGroupId);
841+
}
842+
833843
// search vm details by ids
834844
Pair<List<UserVmJoinVO>, Integer> uniqueVmPair = _userVmJoinDao.searchAndCount(sc, searchFilter);
835845
Integer count = uniqueVmPair.second();
@@ -1976,14 +1986,14 @@ private Pair<List<DiskOfferingJoinVO>, Integer> searchForDiskOfferingsInternal(L
19761986
domainRecord = _domainDao.findById(domainRecord.getParent());
19771987
domainIds.add(domainRecord.getId());
19781988
}
1979-
1989+
19801990
SearchCriteria<DiskOfferingJoinVO> spc = _diskOfferingJoinDao.createSearchCriteria();
19811991

19821992
spc.addOr("domainId", SearchCriteria.Op.IN, domainIds.toArray());
19831993
spc.addOr("domainId", SearchCriteria.Op.NULL); // include public offering as where
19841994
sc.addAnd("domainId", SearchCriteria.Op.SC, spc);
19851995
sc.addAnd("systemUse", SearchCriteria.Op.EQ, false); // non-root users should not see system offering at all
1986-
1996+
19871997
}
19881998

19891999
if (keyword != null) {
@@ -2001,7 +2011,7 @@ private Pair<List<DiskOfferingJoinVO>, Integer> searchForDiskOfferingsInternal(L
20012011
if (name != null) {
20022012
sc.addAnd("name", SearchCriteria.Op.EQ, name);
20032013
}
2004-
2014+
20052015
// FIXME: disk offerings should search back up the hierarchy for
20062016
// available disk offerings...
20072017
/*
@@ -2081,7 +2091,7 @@ private Pair<List<ServiceOfferingJoinVO>, Integer> searchForServiceOfferingsInte
20812091
// boolean includePublicOfferings = false;
20822092
if ((caller.getType() == Account.ACCOUNT_TYPE_NORMAL || caller.getType() == Account.ACCOUNT_TYPE_DOMAIN_ADMIN)
20832093
|| caller.getType() == Account.ACCOUNT_TYPE_RESOURCE_DOMAIN_ADMIN) {
2084-
// For non-root users.
2094+
// For non-root users.
20852095
if (isSystem) {
20862096
throw new InvalidParameterValueException("Only root admins can access system's offering");
20872097
}

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

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
import java.util.HashMap;
2020

2121
public class Criteria {
22-
22+
2323
private Long offset;
2424
private Long limit;
2525
private String orderBy;
@@ -82,6 +82,7 @@ public class Criteria {
8282
public static final String TEMPLATE_ID = "templateid";
8383
public static final String ISO_ID = "isoid";
8484
public static final String VPC_ID = "vpcId";
85+
public static final String AFFINITY_GROUP_ID = "affinitygroupid";
8586

8687
public Criteria(String orderBy, Boolean ascending, Long offset, Long limit) {
8788
this.offset = offset;
@@ -90,7 +91,7 @@ public Criteria(String orderBy, Boolean ascending, Long offset, Long limit) {
9091
this.ascending = ascending;
9192
criteria = new HashMap<String, Object>();
9293
}
93-
94+
9495
public Criteria() {
9596
criteria = new HashMap<String, Object>();
9697
this.ascending = false;
@@ -99,11 +100,11 @@ public Criteria() {
99100
public Long getOffset() {
100101
return offset;
101102
}
102-
103+
103104
public void addCriteria(String name, Object val) {
104105
criteria.put(name, val);
105106
}
106-
107+
107108
public Object getCriteria(String name) {
108109
return criteria.get(name);
109110
}
@@ -135,5 +136,5 @@ public Boolean getAscending() {
135136
public void setAscending(Boolean ascending) {
136137
this.ascending = ascending;
137138
}
138-
139+
139140
}

0 commit comments

Comments
 (0)