@@ -104,6 +104,8 @@ public class VMInstanceDaoImpl extends GenericDaoBase<VMInstanceVO, Long> implem
104104 protected SearchBuilder <VMInstanceVO > LastHostAndStatesSearch ;
105105 protected SearchBuilder <VMInstanceVO > VmsNotInClusterUsingPool ;
106106 protected SearchBuilder <VMInstanceVO > IdsPowerStateSelectSearch ;
107+ GenericSearchBuilder <VMInstanceVO , Integer > CountByOfferingId ;
108+ GenericSearchBuilder <VMInstanceVO , Integer > CountUserVmNotInDomain ;
107109
108110 @ Inject
109111 ResourceTagDao tagsDao ;
@@ -354,6 +356,18 @@ protected void init() {
354356 IdsPowerStateSelectSearch .entity ().getPowerStateUpdateCount (),
355357 IdsPowerStateSelectSearch .entity ().getPowerStateUpdateTime ());
356358 IdsPowerStateSelectSearch .done ();
359+
360+ CountByOfferingId = createSearchBuilder (Integer .class );
361+ CountByOfferingId .select (null , Func .COUNT , CountByOfferingId .entity ().getId ());
362+ CountByOfferingId .and ("serviceOfferingId" , CountByOfferingId .entity ().getServiceOfferingId (), Op .EQ );
363+ CountByOfferingId .done ();
364+
365+ CountUserVmNotInDomain = createSearchBuilder (Integer .class );
366+ CountUserVmNotInDomain .select (null , Func .COUNT , CountUserVmNotInDomain .entity ().getId ());
367+ CountUserVmNotInDomain .and ("serviceOfferingId" , CountUserVmNotInDomain .entity ().getServiceOfferingId (), Op .EQ );
368+ CountUserVmNotInDomain .and ("domainIdsNotIn" , CountUserVmNotInDomain .entity ().getDomainId (), Op .NIN );
369+ CountUserVmNotInDomain .done ();
370+
357371 }
358372
359373 @ Override
@@ -1247,6 +1261,29 @@ public Map<String, Long> getNameIdMapForVmIds(Collection<Long> ids) {
12471261 .collect (Collectors .toMap (VMInstanceVO ::getInstanceName , VMInstanceVO ::getId ));
12481262 }
12491263
1264+ @ Override
1265+ public int getVmCountByOfferingId (Long serviceOfferingId ) {
1266+ if (serviceOfferingId == null ) {
1267+ return 0 ;
1268+ }
1269+ SearchCriteria <Integer > sc = CountByOfferingId .create ();
1270+ sc .setParameters ("serviceOfferingId" , serviceOfferingId );
1271+ List <Integer > count = customSearch (sc , null );
1272+ return count .get (0 );
1273+ }
1274+
1275+ @ Override
1276+ public int getVmCountByOfferingNotInDomain (Long serviceOfferingId , List <Long > domainIds ) {
1277+ if (serviceOfferingId == null || CollectionUtils .isEmpty (domainIds )) {
1278+ return 0 ;
1279+ }
1280+ SearchCriteria <Integer > sc = CountUserVmNotInDomain .create ();
1281+ sc .setParameters ("serviceOfferingId" , serviceOfferingId );
1282+ sc .setParameters ("domainIdsNotIn" , domainIds .toArray ());
1283+ List <Integer > count = customSearch (sc , null );
1284+ return count .get (0 );
1285+ }
1286+
12501287 @ Override
12511288 public List <VMInstanceVO > listByIdsIncludingRemoved (List <Long > ids ) {
12521289 SearchBuilder <VMInstanceVO > idsSearch = createSearchBuilder ();
0 commit comments