3434import com .cloud .api .query .vo .VpcOfferingJoinVO ;
3535import com .cloud .configuration .Resource ;
3636import com .cloud .domain .dao .DomainDetailsDao ;
37+ import com .cloud .network .dao .NetworkDao ;
38+ import com .cloud .network .vpc .dao .VpcDao ;
3739import com .cloud .network .vpc .dao .VpcOfferingDao ;
3840import com .cloud .network .vpc .dao .VpcOfferingDetailsDao ;
3941import com .cloud .offerings .dao .NetworkOfferingDao ;
8587import com .cloud .service .dao .ServiceOfferingDao ;
8688import com .cloud .service .dao .ServiceOfferingDetailsDao ;
8789import com .cloud .storage .dao .DiskOfferingDao ;
90+ import com .cloud .storage .dao .VolumeDao ;
8891import com .cloud .user .dao .AccountDao ;
8992import com .cloud .utils .Pair ;
9093import com .cloud .utils .component .ManagerBase ;
101104import com .cloud .utils .net .NetUtils ;
102105import com .cloud .vm .ReservationContext ;
103106import com .cloud .vm .ReservationContextImpl ;
107+ import com .cloud .vm .dao .VMInstanceDao ;
108+
104109import org .apache .commons .lang3 .StringUtils ;
105110
106111@ Component
@@ -141,6 +146,14 @@ public class DomainManagerImpl extends ManagerBase implements DomainManager, Dom
141146 @ Inject
142147 private ProjectDao _projectDao ;
143148 @ Inject
149+ private VMInstanceDao vmInstanceDao ;
150+ @ Inject
151+ private NetworkDao networkDao ;
152+ @ Inject
153+ private VolumeDao volumeDao ;
154+ @ Inject
155+ private VpcDao vpcDao ;
156+ @ Inject
144157 private ProjectManager _projectMgr ;
145158 @ Inject
146159 private RegionManager _regionMgr ;
@@ -543,7 +556,8 @@ private void removeVpcOfferings(Long domainId, String domainIdString) {
543556 List <Long > vpcOfferingsDetailsToRemove = new ArrayList <>();
544557 List <VpcOfferingJoinVO > vpcOfferingsForThisDomain = vpcOfferingJoinDao .findByDomainId (domainId );
545558 for (VpcOfferingJoinVO vpcOffering : vpcOfferingsForThisDomain ) {
546- if (domainIdString .equals (vpcOffering .getDomainId ())) {
559+ int vpcCount = vpcDao .getVpcCountByOfferingId (vpcOffering .getId ());
560+ if (vpcCount == 0 ) {
547561 vpcOfferingDao .remove (vpcOffering .getId ());
548562 } else {
549563 vpcOfferingsDetailsToRemove .add (vpcOffering .getId ());
@@ -558,7 +572,8 @@ private void removeNetworkOfferings(Long domainId, String domainIdString) {
558572 List <Long > networkOfferingsDetailsToRemove = new ArrayList <>();
559573 List <NetworkOfferingJoinVO > networkOfferingsForThisDomain = networkOfferingJoinDao .findByDomainId (domainId , false );
560574 for (NetworkOfferingJoinVO networkOffering : networkOfferingsForThisDomain ) {
561- if (domainIdString .equals (networkOffering .getDomainId ())) {
575+ int networkCount = networkDao .getNetworkCountByNetworkOffId (networkOffering .getId ());
576+ if (networkCount == 0 ) {
562577 networkOfferingDao .remove (networkOffering .getId ());
563578 } else {
564579 networkOfferingsDetailsToRemove .add (networkOffering .getId ());
@@ -573,7 +588,8 @@ private void removeServiceOfferings(Long domainId, String domainIdString) {
573588 List <Long > serviceOfferingsDetailsToRemove = new ArrayList <>();
574589 List <ServiceOfferingJoinVO > serviceOfferingsForThisDomain = serviceOfferingJoinDao .findByDomainId (domainId );
575590 for (ServiceOfferingJoinVO serviceOffering : serviceOfferingsForThisDomain ) {
576- if (domainIdString .equals (serviceOffering .getDomainId ())) {
591+ int vmCount = vmInstanceDao .getVmCountByOfferingId (serviceOffering .getId ());
592+ if (vmCount == 0 ) {
577593 serviceOfferingDao .remove (serviceOffering .getId ());
578594 } else {
579595 serviceOfferingsDetailsToRemove .add (serviceOffering .getId ());
@@ -588,7 +604,8 @@ private void removeDiskOfferings(Long domainId, String domainIdString) {
588604 List <Long > diskOfferingsDetailsToRemove = new ArrayList <>();
589605 List <DiskOfferingJoinVO > diskOfferingsForThisDomain = diskOfferingJoinDao .findByDomainId (domainId );
590606 for (DiskOfferingJoinVO diskOffering : diskOfferingsForThisDomain ) {
591- if (domainIdString .equals (diskOffering .getDomainId ())) {
607+ int volumeCount = volumeDao .getVolumeCountByOfferingId (diskOffering .getId ());
608+ if (volumeCount == 0 ) {
592609 diskOfferingDao .remove (diskOffering .getId ());
593610 } else {
594611 diskOfferingsDetailsToRemove .add (diskOffering .getId ());
0 commit comments