Skip to content
Closed
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,9 @@
since = "4.19")
private String diskOfferingState;

@Parameter(name = ApiConstants.TAGS, type = CommandType.STRING, description = "list network offerings by tags", length = 4096)
private String tags;

/////////////////////////////////////////////////////
/////////////////// Accessors ///////////////////////
/////////////////////////////////////////////////////
Expand Down Expand Up @@ -116,6 +119,10 @@
return state;
}

public String getTags() {
return tags;
}

Check warning on line 124 in api/src/main/java/org/apache/cloudstack/api/command/user/offering/ListDiskOfferingsCmd.java

View check run for this annotation

Codecov / codecov/patch

api/src/main/java/org/apache/cloudstack/api/command/user/offering/ListDiskOfferingsCmd.java#L122-L124

Added lines #L122 - L124 were not covered by tests

/////////////////////////////////////////////////////
/////////////// API Implementation///////////////////
/////////////////////////////////////////////////////
Expand Down
23 changes: 14 additions & 9 deletions server/src/main/java/com/cloud/api/query/QueryManagerImpl.java
Original file line number Diff line number Diff line change
Expand Up @@ -3385,7 +3385,7 @@
@Override
public ListResponse<DiskOfferingResponse> searchForDiskOfferings(ListDiskOfferingsCmd cmd) {
Pair<List<DiskOfferingJoinVO>, Integer> result = searchForDiskOfferingsInternal(cmd);
ListResponse<DiskOfferingResponse> response = new ListResponse<DiskOfferingResponse>();
ListResponse<DiskOfferingResponse> response = new ListResponse<>();

Check warning on line 3388 in server/src/main/java/com/cloud/api/query/QueryManagerImpl.java

View check run for this annotation

Codecov / codecov/patch

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

Added line #L3388 was not covered by tests
List<DiskOfferingResponse> offeringResponses = ViewResponseHelper.createDiskOfferingResponse(result.first().toArray(new DiskOfferingJoinVO[result.first().size()]));
response.setResponses(offeringResponses, result.second());
return response;
Expand Down Expand Up @@ -3444,10 +3444,11 @@
Boolean encrypt = cmd.getEncrypt();
String storageType = cmd.getStorageType();
DiskOffering.State state = cmd.getState();
String tags = cmd.getTags();

Check warning on line 3447 in server/src/main/java/com/cloud/api/query/QueryManagerImpl.java

View check run for this annotation

Codecov / codecov/patch

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

Added line #L3447 was not covered by tests

Filter searchFilter = new Filter(DiskOfferingVO.class, "sortKey", SortKeyAscending.value(), cmd.getStartIndex(), cmd.getPageSizeVal());
searchFilter.addOrderBy(DiskOfferingVO.class, "id", true);
SearchBuilder<DiskOfferingVO> diskOfferingSearch = _diskOfferingDao.createSearchBuilder();
SearchBuilder<DiskOfferingJoinVO> diskOfferingSearch = _diskOfferingJoinDao.createSearchBuilder();

Check warning on line 3451 in server/src/main/java/com/cloud/api/query/QueryManagerImpl.java

View check run for this annotation

Codecov / codecov/patch

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

Added line #L3451 was not covered by tests
diskOfferingSearch.select(null, Func.DISTINCT, diskOfferingSearch.entity().getId()); // select distinct

diskOfferingSearch.and("computeOnly", diskOfferingSearch.entity().isComputeOnly(), Op.EQ);
Expand All @@ -3456,6 +3457,10 @@
diskOfferingSearch.and("state", diskOfferingSearch.entity().getState(), Op.EQ);
}

if (tags != null) {
diskOfferingSearch.and("tags", SearchCriteria.Op.EQ, tags);

Check warning on line 3461 in server/src/main/java/com/cloud/api/query/QueryManagerImpl.java

View check run for this annotation

Codecov / codecov/patch

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

Added line #L3461 was not covered by tests
}

// Keeping this logic consistent with domain specific zones
// if a domainId is provided, we just return the disk offering
// associated with this domain
Expand All @@ -3471,17 +3476,17 @@
domainDetailsSearch.entity().getName(), diskOfferingSearch.entity().setString(ApiConstants.DOMAIN_ID));

if (!isRootAdmin) {
diskOfferingSearch.and("displayOffering", diskOfferingSearch.entity().getDisplayOffering(), Op.EQ);
diskOfferingSearch.and("displayOffering", diskOfferingSearch.entity().isDisplayOffering(), Op.EQ);

Check warning on line 3479 in server/src/main/java/com/cloud/api/query/QueryManagerImpl.java

View check run for this annotation

Codecov / codecov/patch

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

Added line #L3479 was not covered by tests
}

SearchCriteria<DiskOfferingVO> sc = diskOfferingSearch.create();
SearchCriteria<DiskOfferingJoinVO> sc = diskOfferingSearch.create();

Check warning on line 3482 in server/src/main/java/com/cloud/api/query/QueryManagerImpl.java

View check run for this annotation

Codecov / codecov/patch

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

Added line #L3482 was not covered by tests
sc.setParameters("computeOnly", false);
sc.setParameters("activeState", DiskOffering.State.Active);

sc.setJoinParameters("domainDetailsSearch", "domainId", domainId);

Pair<List<DiskOfferingVO>, Integer> uniquePairs = _diskOfferingDao.searchAndCount(sc, searchFilter);
List<Long> idsArray = uniquePairs.first().stream().map(DiskOfferingVO::getId).collect(Collectors.toList());
Pair<List<DiskOfferingJoinVO>, Integer> uniquePairs = _diskOfferingJoinDao.searchAndCount(sc, searchFilter);
List<Long> idsArray = uniquePairs.first().stream().map(DiskOfferingJoinVO::getId).collect(Collectors.toList());

Check warning on line 3489 in server/src/main/java/com/cloud/api/query/QueryManagerImpl.java

View check run for this annotation

Codecov / codecov/patch

server/src/main/java/com/cloud/api/query/QueryManagerImpl.java#L3488-L3489

Added lines #L3488 - L3489 were not covered by tests
return new Ternary<>(idsArray, uniquePairs.second(), new String[0]);
} else {
throw new PermissionDeniedException("The account:" + account.getAccountName() + " does not fall in the same domain hierarchy as the disk offering");
Expand Down Expand Up @@ -3564,7 +3569,7 @@
domainDetailsSearch.entity().getName(), diskOfferingSearch.entity().setString(ApiConstants.DOMAIN_ID));
}

SearchCriteria<DiskOfferingVO> sc = diskOfferingSearch.create();
SearchCriteria<DiskOfferingJoinVO> sc = diskOfferingSearch.create();

Check warning on line 3572 in server/src/main/java/com/cloud/api/query/QueryManagerImpl.java

View check run for this annotation

Codecov / codecov/patch

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

Added line #L3572 was not covered by tests

sc.setParameters("computeOnly", false);

Expand Down Expand Up @@ -3624,7 +3629,7 @@
sc.setJoinParameters("domainDetailsSearch", "domainIdIN", domainIds.toArray());
}

Pair<List<DiskOfferingVO>, Integer> uniquePairs = _diskOfferingDao.searchAndCount(sc, searchFilter);
Pair<List<DiskOfferingJoinVO>, Integer> uniquePairs = _diskOfferingJoinDao.searchAndCount(sc, searchFilter);

Check warning on line 3632 in server/src/main/java/com/cloud/api/query/QueryManagerImpl.java

View check run for this annotation

Codecov / codecov/patch

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

Added line #L3632 was not covered by tests
String[] requiredTagsArray = new String[0];
if (CollectionUtils.isNotEmpty(uniquePairs.first()) && VolumeApiServiceImpl.MatchStoragePoolTagsWithDiskOffering.valueIn(zoneId)) {
if (volumeId != null) {
Expand All @@ -3633,7 +3638,7 @@
requiredTagsArray = _storageTagDao.getStoragePoolTags(storagePoolId).toArray(new String[0]);
}
}
List<Long> idsArray = uniquePairs.first().stream().map(DiskOfferingVO::getId).collect(Collectors.toList());
List<Long> idsArray = uniquePairs.first().stream().map(DiskOfferingJoinVO::getId).collect(Collectors.toList());

Check warning on line 3641 in server/src/main/java/com/cloud/api/query/QueryManagerImpl.java

View check run for this annotation

Codecov / codecov/patch

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

Added line #L3641 was not covered by tests

return new Ternary<>(idsArray, uniquePairs.second(), requiredTagsArray);
}
Expand Down