2424
2525import javax .inject .Inject ;
2626
27+ import com .cloud .api .query .dao .NetworkOfferingJoinDao ;
28+ import com .cloud .api .query .dao .VpcOfferingJoinDao ;
29+ import com .cloud .api .query .vo .NetworkOfferingJoinVO ;
30+ import com .cloud .api .query .vo .VpcOfferingJoinVO ;
2731import com .cloud .domain .dao .DomainDetailsDao ;
32+ import com .cloud .network .vpc .dao .VpcOfferingDao ;
33+ import com .cloud .network .vpc .dao .VpcOfferingDetailsDao ;
34+ import com .cloud .offerings .dao .NetworkOfferingDao ;
35+ import com .cloud .offerings .dao .NetworkOfferingDetailsDao ;
2836import org .apache .cloudstack .annotation .AnnotationService ;
2937import org .apache .cloudstack .annotation .dao .AnnotationDao ;
3038import org .apache .cloudstack .api .ApiConstants ;
@@ -106,12 +114,24 @@ public class DomainManagerImpl extends ManagerBase implements DomainManager, Dom
106114 @ Inject
107115 private DiskOfferingDetailsDao diskOfferingDetailsDao ;
108116 @ Inject
117+ private NetworkOfferingDao networkOfferingDao ;
118+ @ Inject
119+ private NetworkOfferingJoinDao networkOfferingJoinDao ;
120+ @ Inject
121+ private NetworkOfferingDetailsDao networkOfferingDetailsDao ;
122+ @ Inject
109123 private ServiceOfferingJoinDao serviceOfferingJoinDao ;
110124 @ Inject
111125 private ServiceOfferingDao serviceOfferingDao ;
112126 @ Inject
113127 private ServiceOfferingDetailsDao serviceOfferingDetailsDao ;
114128 @ Inject
129+ private VpcOfferingDao vpcOfferingDao ;
130+ @ Inject
131+ private VpcOfferingJoinDao vpcOfferingJoinDao ;
132+ @ Inject
133+ private VpcOfferingDetailsDao vpcOfferingDetailsDao ;
134+ @ Inject
115135 private ProjectDao _projectDao ;
116136 @ Inject
117137 private ProjectManager _projectMgr ;
@@ -483,18 +503,48 @@ protected void cleanupDomainOfferings(Long domainId) {
483503 }
484504
485505 String domainIdString = String .valueOf (domainId );
486- List <Long > diskOfferingsDetailsToRemove = new ArrayList <>();
487- List <Long > serviceOfferingsDetailsToRemove = new ArrayList <>();
488506
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 ());
507+ removeDiskOfferings (domainId , domainIdString );
508+
509+ removeServiceOfferings (domainId , domainIdString );
510+
511+ removeNetworkOfferings (domainId , domainIdString );
512+
513+ removeVpcOfferings (domainId , domainIdString );
514+ }
515+
516+ private void removeVpcOfferings (Long domainId , String domainIdString ) {
517+ List <Long > vpcOfferingsDetailsToRemove = new ArrayList <>();
518+ List <VpcOfferingJoinVO > vpcOfferingsForThisDomain = vpcOfferingJoinDao .findByDomainId (domainId );
519+ for (VpcOfferingJoinVO vpcOffering : vpcOfferingsForThisDomain ) {
520+ if (domainIdString .equals (vpcOffering .getDomainId ())) {
521+ vpcOfferingDao .remove (vpcOffering .getId ());
494522 } else {
495- diskOfferingsDetailsToRemove .add (diskOffering .getId ());
523+ vpcOfferingsDetailsToRemove .add (vpcOffering .getId ());
524+ }
525+ }
526+ for (final Long vpcOfferingId : vpcOfferingsDetailsToRemove ) {
527+ vpcOfferingDetailsDao .removeDetail (vpcOfferingId , ApiConstants .DOMAIN_ID , domainIdString );
528+ }
529+ }
530+
531+ private void removeNetworkOfferings (Long domainId , String domainIdString ) {
532+ List <Long > networkOfferingsDetailsToRemove = new ArrayList <>();
533+ List <NetworkOfferingJoinVO > networkOfferingsForThisDomain = networkOfferingJoinDao .findByDomainId (domainId , false );
534+ for (NetworkOfferingJoinVO networkOffering : networkOfferingsForThisDomain ) {
535+ if (domainIdString .equals (networkOffering .getDomainId ())) {
536+ networkOfferingDao .remove (networkOffering .getId ());
537+ } else {
538+ networkOfferingsDetailsToRemove .add (networkOffering .getId ());
496539 }
497540 }
541+ for (final Long networkOfferingId : networkOfferingsDetailsToRemove ) {
542+ networkOfferingDetailsDao .removeDetail (networkOfferingId , ApiConstants .DOMAIN_ID , domainIdString );
543+ }
544+ }
545+
546+ private void removeServiceOfferings (Long domainId , String domainIdString ) {
547+ List <Long > serviceOfferingsDetailsToRemove = new ArrayList <>();
498548 List <ServiceOfferingJoinVO > serviceOfferingsForThisDomain = serviceOfferingJoinDao .findByDomainId (domainId );
499549 for (ServiceOfferingJoinVO serviceOffering : serviceOfferingsForThisDomain ) {
500550 if (domainIdString .equals (serviceOffering .getDomainId ())) {
@@ -503,14 +553,25 @@ protected void cleanupDomainOfferings(Long domainId) {
503553 serviceOfferingsDetailsToRemove .add (serviceOffering .getId ());
504554 }
505555 }
556+ for (final Long serviceOfferingId : serviceOfferingsDetailsToRemove ) {
557+ serviceOfferingDetailsDao .removeDetail (serviceOfferingId , ApiConstants .DOMAIN_ID , domainIdString );
558+ }
559+ }
506560
561+ private void removeDiskOfferings (Long domainId , String domainIdString ) {
562+ List <Long > diskOfferingsDetailsToRemove = new ArrayList <>();
563+ List <DiskOfferingJoinVO > diskOfferingsForThisDomain = diskOfferingJoinDao .findByDomainId (domainId );
564+ for (DiskOfferingJoinVO diskOffering : diskOfferingsForThisDomain ) {
565+ if (domainIdString .equals (diskOffering .getDomainId ())) {
566+ diskOfferingDao .remove (diskOffering .getId ());
567+ } else {
568+ diskOfferingsDetailsToRemove .add (diskOffering .getId ());
569+ }
570+ }
507571 // Remove domain IDs for offerings which may be multi-domain
508572 for (final Long diskOfferingId : diskOfferingsDetailsToRemove ) {
509573 diskOfferingDetailsDao .removeDetail (diskOfferingId , ApiConstants .DOMAIN_ID , domainIdString );
510574 }
511- for (final Long serviceOfferingId : serviceOfferingsDetailsToRemove ) {
512- serviceOfferingDetailsDao .removeDetail (serviceOfferingId , ApiConstants .DOMAIN_ID , domainIdString );
513- }
514575 }
515576
516577 protected boolean cleanupDomain (Long domainId , Long ownerId ) throws ConcurrentOperationException , ResourceUnavailableException {
0 commit comments