@@ -3385,7 +3385,7 @@ private Pair<List<ImageStoreJoinVO>, Integer> searchForCacheStoresInternal(ListS
33853385 @ Override
33863386 public ListResponse <DiskOfferingResponse > searchForDiskOfferings (ListDiskOfferingsCmd cmd ) {
33873387 Pair <List <DiskOfferingJoinVO >, Integer > result = searchForDiskOfferingsInternal (cmd );
3388- ListResponse <DiskOfferingResponse > response = new ListResponse <DiskOfferingResponse >();
3388+ ListResponse <DiskOfferingResponse > response = new ListResponse <>();
33893389 List <DiskOfferingResponse > offeringResponses = ViewResponseHelper .createDiskOfferingResponse (result .first ().toArray (new DiskOfferingJoinVO [result .first ().size ()]));
33903390 response .setResponses (offeringResponses , result .second ());
33913391 return response ;
@@ -3444,10 +3444,11 @@ private Ternary<List<Long>, Integer, String[]> searchForDiskOfferingsIdsAndCount
34443444 Boolean encrypt = cmd .getEncrypt ();
34453445 String storageType = cmd .getStorageType ();
34463446 DiskOffering .State state = cmd .getState ();
3447+ String tags = cmd .getTags ();
34473448
34483449 Filter searchFilter = new Filter (DiskOfferingVO .class , "sortKey" , SortKeyAscending .value (), cmd .getStartIndex (), cmd .getPageSizeVal ());
34493450 searchFilter .addOrderBy (DiskOfferingVO .class , "id" , true );
3450- SearchBuilder <DiskOfferingVO > diskOfferingSearch = _diskOfferingDao .createSearchBuilder ();
3451+ SearchBuilder <DiskOfferingJoinVO > diskOfferingSearch = _diskOfferingJoinDao .createSearchBuilder ();
34513452 diskOfferingSearch .select (null , Func .DISTINCT , diskOfferingSearch .entity ().getId ()); // select distinct
34523453
34533454 diskOfferingSearch .and ("computeOnly" , diskOfferingSearch .entity ().isComputeOnly (), Op .EQ );
@@ -3456,6 +3457,10 @@ private Ternary<List<Long>, Integer, String[]> searchForDiskOfferingsIdsAndCount
34563457 diskOfferingSearch .and ("state" , diskOfferingSearch .entity ().getState (), Op .EQ );
34573458 }
34583459
3460+ if (tags != null ) {
3461+ diskOfferingSearch .and ("tags" , SearchCriteria .Op .EQ , tags );
3462+ }
3463+
34593464 // Keeping this logic consistent with domain specific zones
34603465 // if a domainId is provided, we just return the disk offering
34613466 // associated with this domain
@@ -3471,17 +3476,17 @@ private Ternary<List<Long>, Integer, String[]> searchForDiskOfferingsIdsAndCount
34713476 domainDetailsSearch .entity ().getName (), diskOfferingSearch .entity ().setString (ApiConstants .DOMAIN_ID ));
34723477
34733478 if (!isRootAdmin ) {
3474- diskOfferingSearch .and ("displayOffering" , diskOfferingSearch .entity ().getDisplayOffering (), Op .EQ );
3479+ diskOfferingSearch .and ("displayOffering" , diskOfferingSearch .entity ().isDisplayOffering (), Op .EQ );
34753480 }
34763481
3477- SearchCriteria <DiskOfferingVO > sc = diskOfferingSearch .create ();
3482+ SearchCriteria <DiskOfferingJoinVO > sc = diskOfferingSearch .create ();
34783483 sc .setParameters ("computeOnly" , false );
34793484 sc .setParameters ("activeState" , DiskOffering .State .Active );
34803485
34813486 sc .setJoinParameters ("domainDetailsSearch" , "domainId" , domainId );
34823487
3483- Pair <List <DiskOfferingVO >, Integer > uniquePairs = _diskOfferingDao .searchAndCount (sc , searchFilter );
3484- List <Long > idsArray = uniquePairs .first ().stream ().map (DiskOfferingVO ::getId ).collect (Collectors .toList ());
3488+ Pair <List <DiskOfferingJoinVO >, Integer > uniquePairs = _diskOfferingJoinDao .searchAndCount (sc , searchFilter );
3489+ List <Long > idsArray = uniquePairs .first ().stream ().map (DiskOfferingJoinVO ::getId ).collect (Collectors .toList ());
34853490 return new Ternary <>(idsArray , uniquePairs .second (), new String [0 ]);
34863491 } else {
34873492 throw new PermissionDeniedException ("The account:" + account .getAccountName () + " does not fall in the same domain hierarchy as the disk offering" );
@@ -3564,7 +3569,7 @@ private Ternary<List<Long>, Integer, String[]> searchForDiskOfferingsIdsAndCount
35643569 domainDetailsSearch .entity ().getName (), diskOfferingSearch .entity ().setString (ApiConstants .DOMAIN_ID ));
35653570 }
35663571
3567- SearchCriteria <DiskOfferingVO > sc = diskOfferingSearch .create ();
3572+ SearchCriteria <DiskOfferingJoinVO > sc = diskOfferingSearch .create ();
35683573
35693574 sc .setParameters ("computeOnly" , false );
35703575
@@ -3624,7 +3629,7 @@ private Ternary<List<Long>, Integer, String[]> searchForDiskOfferingsIdsAndCount
36243629 sc .setJoinParameters ("domainDetailsSearch" , "domainIdIN" , domainIds .toArray ());
36253630 }
36263631
3627- Pair <List <DiskOfferingVO >, Integer > uniquePairs = _diskOfferingDao .searchAndCount (sc , searchFilter );
3632+ Pair <List <DiskOfferingJoinVO >, Integer > uniquePairs = _diskOfferingJoinDao .searchAndCount (sc , searchFilter );
36283633 String [] requiredTagsArray = new String [0 ];
36293634 if (CollectionUtils .isNotEmpty (uniquePairs .first ()) && VolumeApiServiceImpl .MatchStoragePoolTagsWithDiskOffering .valueIn (zoneId )) {
36303635 if (volumeId != null ) {
@@ -3633,7 +3638,7 @@ private Ternary<List<Long>, Integer, String[]> searchForDiskOfferingsIdsAndCount
36333638 requiredTagsArray = _storageTagDao .getStoragePoolTags (storagePoolId ).toArray (new String [0 ]);
36343639 }
36353640 }
3636- List <Long > idsArray = uniquePairs .first ().stream ().map (DiskOfferingVO ::getId ).collect (Collectors .toList ());
3641+ List <Long > idsArray = uniquePairs .first ().stream ().map (DiskOfferingJoinVO ::getId ).collect (Collectors .toList ());
36373642
36383643 return new Ternary <>(idsArray , uniquePairs .second (), requiredTagsArray );
36393644 }
0 commit comments