Skip to content

Commit 04061f1

Browse files
authored
storagetype API param in list service/disk offerings (#8215)
1 parent 96b07d7 commit 04061f1

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;
@@ -3130,6 +3131,8 @@ private Pair<List<DiskOfferingJoinVO>, Integer> searchForDiskOfferingsInternal(L
31303131
Long volumeId = cmd.getVolumeId();
31313132
Long storagePoolId = cmd.getStoragePoolId();
31323133
Boolean encrypt = cmd.getEncrypt();
3134+
String storageType = cmd.getStorageType();
3135+
31333136
// Keeping this logic consistent with domain specific zones
31343137
// if a domainId is provided, we just return the disk offering
31353138
// associated with this domain
@@ -3181,6 +3184,8 @@ private Pair<List<DiskOfferingJoinVO>, Integer> searchForDiskOfferingsInternal(L
31813184
sc.addAnd("encrypt", SearchCriteria.Op.EQ, encrypt);
31823185
}
31833186

3187+
useStorageType(sc, storageType);
3188+
31843189
if (zoneId != null) {
31853190
SearchBuilder<DiskOfferingJoinVO> sb = _diskOfferingJoinDao.createSearchBuilder();
31863191
sb.and("zoneId", sb.entity().getZoneId(), Op.FIND_IN_SET);
@@ -3260,6 +3265,17 @@ private Pair<List<DiskOfferingJoinVO>, Integer> searchForDiskOfferingsInternal(L
32603265
return new Pair<>(result.first(), result.second());
32613266
}
32623267

3268+
private void useStorageType(SearchCriteria<?> sc, String storageType) {
3269+
if (storageType != null) {
3270+
if (storageType.equalsIgnoreCase(ServiceOffering.StorageType.local.toString())) {
3271+
sc.addAnd("useLocalStorage", Op.EQ, true);
3272+
3273+
} else if (storageType.equalsIgnoreCase(ServiceOffering.StorageType.shared.toString())) {
3274+
sc.addAnd("useLocalStorage", Op.EQ, false);
3275+
}
3276+
}
3277+
}
3278+
32633279
private List<Long> findRelatedDomainIds(Domain domain, boolean isRecursive) {
32643280
List<Long> domainIds = _domainDao.getDomainParentIds(domain.getId())
32653281
.stream().collect(Collectors.toList());
@@ -3309,6 +3325,7 @@ private Pair<List<ServiceOfferingJoinVO>, Integer> searchForServiceOfferingsInte
33093325
Integer memory = cmd.getMemory();
33103326
Integer cpuSpeed = cmd.getCpuSpeed();
33113327
Boolean encryptRoot = cmd.getEncryptRoot();
3328+
String storageType = cmd.getStorageType();
33123329

33133330
SearchCriteria<ServiceOfferingJoinVO> sc = _srvOfferingJoinDao.createSearchCriteria();
33143331
if (!accountMgr.isRootAdmin(caller.getId()) && isSystem) {
@@ -3432,6 +3449,8 @@ private Pair<List<ServiceOfferingJoinVO>, Integer> searchForServiceOfferingsInte
34323449
sc.addAnd("vmType", SearchCriteria.Op.EQ, vmTypeStr);
34333450
}
34343451

3452+
useStorageType(sc, storageType);
3453+
34353454
if (zoneId != null) {
34363455
SearchBuilder<ServiceOfferingJoinVO> sb = _srvOfferingJoinDao.createSearchBuilder();
34373456
sb.and("zoneId", sb.entity().getZoneId(), Op.FIND_IN_SET);

0 commit comments

Comments
 (0)