Skip to content

Commit 9c6cc2d

Browse files
slavkapdhslove
authored andcommitted
storagetype API param in list service/disk offerings (apache#8215)
1 parent 9f992b4 commit 9c6cc2d

File tree

3 files changed

+41
-0
lines changed

3 files changed

+41
-0
lines changed

api/src/main/java/org/apache/cloudstack/api/command/user/offering/ListDiskOfferingsCmd.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
import org.apache.cloudstack.api.ApiConstants;
2626
import org.apache.cloudstack.api.BaseListDomainResourcesCmd;
2727
import org.apache.cloudstack.api.Parameter;
28+
import org.apache.cloudstack.api.BaseCmd.CommandType;
2829
import org.apache.cloudstack.api.response.DiskOfferingResponse;
2930
import org.apache.cloudstack.api.response.ListResponse;
3031

@@ -60,6 +61,12 @@ public class ListDiskOfferingsCmd extends BaseListDomainResourcesCmd {
6061
@Parameter(name = ApiConstants.ENCRYPT, type = CommandType.BOOLEAN, description = "listed offerings support disk encryption", since = "4.18")
6162
private Boolean encrypt;
6263

64+
@Parameter(name = ApiConstants.STORAGE_TYPE,
65+
type = CommandType.STRING,
66+
description = "the storage type of the service offering. Values are local and shared.",
67+
since = "4.19")
68+
private String storageType;
69+
6370
/////////////////////////////////////////////////////
6471
/////////////////// Accessors ///////////////////////
6572
/////////////////////////////////////////////////////
@@ -84,6 +91,10 @@ public Long getVolumeId() {
8491

8592
public Boolean getEncrypt() { return encrypt; }
8693

94+
public String getStorageType() {
95+
return storageType;
96+
}
97+
8798
/////////////////////////////////////////////////////
8899
/////////////// API Implementation///////////////////
89100
/////////////////////////////////////////////////////

api/src/main/java/org/apache/cloudstack/api/command/user/offering/ListServiceOfferingsCmd.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
import org.apache.cloudstack.api.ApiConstants;
2424
import org.apache.cloudstack.api.BaseListDomainResourcesCmd;
2525
import org.apache.cloudstack.api.Parameter;
26+
import org.apache.cloudstack.api.BaseCmd.CommandType;
2627
import org.apache.cloudstack.api.response.ListResponse;
2728
import org.apache.cloudstack.api.response.ServiceOfferingResponse;
2829
import org.apache.cloudstack.api.response.UserVmResponse;
@@ -88,6 +89,12 @@ public class ListServiceOfferingsCmd extends BaseListDomainResourcesCmd {
8889
since = "4.18")
8990
private Boolean encryptRoot;
9091

92+
@Parameter(name = ApiConstants.STORAGE_TYPE,
93+
type = CommandType.STRING,
94+
description = "the storage type of the service offering. Values are local and shared.",
95+
since = "4.19")
96+
private String storageType;
97+
9198
/////////////////////////////////////////////////////
9299
/////////////////// Accessors ///////////////////////
93100
/////////////////////////////////////////////////////
@@ -130,6 +137,10 @@ public Integer getCpuSpeed() {
130137

131138
public Boolean getEncryptRoot() { return encryptRoot; }
132139

140+
public String getStorageType() {
141+
return storageType;
142+
}
143+
133144
/////////////////////////////////////////////////////
134145
/////////////// API Implementation///////////////////
135146
/////////////////////////////////////////////////////

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

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -237,6 +237,7 @@
237237
import com.cloud.network.security.SecurityGroupVMMapVO;
238238
import com.cloud.network.security.dao.SecurityGroupVMMapDao;
239239
import com.cloud.offering.DiskOffering;
240+
import com.cloud.offering.ServiceOffering;
240241
import com.cloud.org.Grouping;
241242
import com.cloud.projects.Project;
242243
import com.cloud.projects.Project.ListProjectResourcesCriteria;
@@ -3142,6 +3143,8 @@ private Pair<List<DiskOfferingJoinVO>, Integer> searchForDiskOfferingsInternal(L
31423143
Long volumeId = cmd.getVolumeId();
31433144
Long storagePoolId = cmd.getStoragePoolId();
31443145
Boolean encrypt = cmd.getEncrypt();
3146+
String storageType = cmd.getStorageType();
3147+
31453148
// Keeping this logic consistent with domain specific zones
31463149
// if a domainId is provided, we just return the disk offering
31473150
// associated with this domain
@@ -3193,6 +3196,8 @@ private Pair<List<DiskOfferingJoinVO>, Integer> searchForDiskOfferingsInternal(L
31933196
sc.addAnd("encrypt", SearchCriteria.Op.EQ, encrypt);
31943197
}
31953198

3199+
useStorageType(sc, storageType);
3200+
31963201
if (zoneId != null) {
31973202
SearchBuilder<DiskOfferingJoinVO> sb = _diskOfferingJoinDao.createSearchBuilder();
31983203
sb.and("zoneId", sb.entity().getZoneId(), Op.FIND_IN_SET);
@@ -3272,6 +3277,17 @@ private Pair<List<DiskOfferingJoinVO>, Integer> searchForDiskOfferingsInternal(L
32723277
return new Pair<>(result.first(), result.second());
32733278
}
32743279

3280+
private void useStorageType(SearchCriteria<?> sc, String storageType) {
3281+
if (storageType != null) {
3282+
if (storageType.equalsIgnoreCase(ServiceOffering.StorageType.local.toString())) {
3283+
sc.addAnd("useLocalStorage", Op.EQ, true);
3284+
3285+
} else if (storageType.equalsIgnoreCase(ServiceOffering.StorageType.shared.toString())) {
3286+
sc.addAnd("useLocalStorage", Op.EQ, false);
3287+
}
3288+
}
3289+
}
3290+
32753291
private List<Long> findRelatedDomainIds(Domain domain, boolean isRecursive) {
32763292
List<Long> domainIds = _domainDao.getDomainParentIds(domain.getId())
32773293
.stream().collect(Collectors.toList());
@@ -3321,6 +3337,7 @@ private Pair<List<ServiceOfferingJoinVO>, Integer> searchForServiceOfferingsInte
33213337
Integer memory = cmd.getMemory();
33223338
Integer cpuSpeed = cmd.getCpuSpeed();
33233339
Boolean encryptRoot = cmd.getEncryptRoot();
3340+
String storageType = cmd.getStorageType();
33243341

33253342
SearchCriteria<ServiceOfferingJoinVO> sc = _srvOfferingJoinDao.createSearchCriteria();
33263343
if (!accountMgr.isRootAdmin(caller.getId()) && isSystem) {
@@ -3444,6 +3461,8 @@ private Pair<List<ServiceOfferingJoinVO>, Integer> searchForServiceOfferingsInte
34443461
sc.addAnd("vmType", SearchCriteria.Op.EQ, vmTypeStr);
34453462
}
34463463

3464+
useStorageType(sc, storageType);
3465+
34473466
if (zoneId != null) {
34483467
SearchBuilder<ServiceOfferingJoinVO> sb = _srvOfferingJoinDao.createSearchBuilder();
34493468
sb.and("zoneId", sb.entity().getZoneId(), Op.FIND_IN_SET);

0 commit comments

Comments
 (0)