2424
2525import javax .inject .Inject ;
2626
27+ import com .cloud .api .query .dao .NetworkOfferingJoinDao ;
28+ import com .cloud .api .query .vo .NetworkOfferingJoinVO ;
2729import com .cloud .domain .dao .DomainDetailsDao ;
30+ import com .cloud .offerings .dao .NetworkOfferingDao ;
31+ import com .cloud .offerings .dao .NetworkOfferingDetailsDao ;
2832import org .apache .cloudstack .annotation .AnnotationService ;
2933import org .apache .cloudstack .annotation .dao .AnnotationDao ;
3034import org .apache .cloudstack .api .ApiConstants ;
@@ -106,6 +110,12 @@ public class DomainManagerImpl extends ManagerBase implements DomainManager, Dom
106110 @ Inject
107111 private DiskOfferingDetailsDao diskOfferingDetailsDao ;
108112 @ Inject
113+ private NetworkOfferingDao networkOfferingDao ;
114+ @ Inject
115+ private NetworkOfferingJoinDao networkOfferingJoinDao ;
116+ @ Inject
117+ private NetworkOfferingDetailsDao networkOfferingDetailsDao ;
118+ @ Inject
109119 private ServiceOfferingJoinDao serviceOfferingJoinDao ;
110120 @ Inject
111121 private ServiceOfferingDao serviceOfferingDao ;
@@ -483,18 +493,31 @@ protected void cleanupDomainOfferings(Long domainId) {
483493 }
484494
485495 String domainIdString = String .valueOf (domainId );
486- List <Long > diskOfferingsDetailsToRemove = new ArrayList <>();
487- List <Long > serviceOfferingsDetailsToRemove = new ArrayList <>();
488496
489- // delete the service and disk offerings associated with this domain
490- List <DiskOfferingJoinVO > diskOfferingsForThisDomain = diskOfferingJoinDao .findByDomainId (domainId );
491- for (DiskOfferingJoinVO diskOffering : diskOfferingsForThisDomain ) {
492- if (domainIdString .equals (diskOffering .getDomainId ())) {
493- diskOfferingDao .remove (diskOffering .getId ());
497+ removeDiskOfferings (domainId , domainIdString );
498+
499+ removeServiceOfferings (domainId , domainIdString );
500+
501+ removeNetworkOfferings (domainId , domainIdString );
502+ }
503+
504+ private void removeNetworkOfferings (Long domainId , String domainIdString ) {
505+ List <Long > networkOfferingsDetailsToRemove = new ArrayList <>();
506+ List <NetworkOfferingJoinVO > networkOfferingsForThisDomain = networkOfferingJoinDao .findByDomainId (domainId , false );
507+ for (NetworkOfferingJoinVO networkOffering : networkOfferingsForThisDomain ) {
508+ if (domainIdString .equals (networkOffering .getDomainId ())) {
509+ networkOfferingDao .remove (networkOffering .getId ());
494510 } else {
495- diskOfferingsDetailsToRemove .add (diskOffering .getId ());
511+ networkOfferingsDetailsToRemove .add (networkOffering .getId ());
496512 }
497513 }
514+ for (final Long networkOfferingId : networkOfferingsDetailsToRemove ) {
515+ networkOfferingDetailsDao .removeDetail (networkOfferingId , ApiConstants .DOMAIN_ID , domainIdString );
516+ }
517+ }
518+
519+ private void removeServiceOfferings (Long domainId , String domainIdString ) {
520+ List <Long > serviceOfferingsDetailsToRemove = new ArrayList <>();
498521 List <ServiceOfferingJoinVO > serviceOfferingsForThisDomain = serviceOfferingJoinDao .findByDomainId (domainId );
499522 for (ServiceOfferingJoinVO serviceOffering : serviceOfferingsForThisDomain ) {
500523 if (domainIdString .equals (serviceOffering .getDomainId ())) {
@@ -503,14 +526,25 @@ protected void cleanupDomainOfferings(Long domainId) {
503526 serviceOfferingsDetailsToRemove .add (serviceOffering .getId ());
504527 }
505528 }
529+ for (final Long serviceOfferingId : serviceOfferingsDetailsToRemove ) {
530+ serviceOfferingDetailsDao .removeDetail (serviceOfferingId , ApiConstants .DOMAIN_ID , domainIdString );
531+ }
532+ }
506533
534+ private void removeDiskOfferings (Long domainId , String domainIdString ) {
535+ List <Long > diskOfferingsDetailsToRemove = new ArrayList <>();
536+ List <DiskOfferingJoinVO > diskOfferingsForThisDomain = diskOfferingJoinDao .findByDomainId (domainId );
537+ for (DiskOfferingJoinVO diskOffering : diskOfferingsForThisDomain ) {
538+ if (domainIdString .equals (diskOffering .getDomainId ())) {
539+ diskOfferingDao .remove (diskOffering .getId ());
540+ } else {
541+ diskOfferingsDetailsToRemove .add (diskOffering .getId ());
542+ }
543+ }
507544 // Remove domain IDs for offerings which may be multi-domain
508545 for (final Long diskOfferingId : diskOfferingsDetailsToRemove ) {
509546 diskOfferingDetailsDao .removeDetail (diskOfferingId , ApiConstants .DOMAIN_ID , domainIdString );
510547 }
511- for (final Long serviceOfferingId : serviceOfferingsDetailsToRemove ) {
512- serviceOfferingDetailsDao .removeDetail (serviceOfferingId , ApiConstants .DOMAIN_ID , domainIdString );
513- }
514548 }
515549
516550 protected boolean cleanupDomain (Long domainId , Long ownerId ) throws ConcurrentOperationException , ResourceUnavailableException {
0 commit comments