From b92efd288b406c9ee7634ee128d7914e7826c64a Mon Sep 17 00:00:00 2001 From: Rakesh Venkatesh Date: Thu, 5 Nov 2020 09:23:14 +0100 Subject: [PATCH] Cleanup domain details when domain is deleted When domain is deleted, all the settings configured under the domain scope still exists in domain_details table. All the entries for the domain should be deleted as well --- .../src/main/java/com/cloud/user/DomainManagerImpl.java | 8 ++++++++ .../test/java/com/cloud/user/DomainManagerImplTest.java | 4 ++++ 2 files changed, 12 insertions(+) diff --git a/server/src/main/java/com/cloud/user/DomainManagerImpl.java b/server/src/main/java/com/cloud/user/DomainManagerImpl.java index 4c2955925b91..918223e46f70 100644 --- a/server/src/main/java/com/cloud/user/DomainManagerImpl.java +++ b/server/src/main/java/com/cloud/user/DomainManagerImpl.java @@ -24,6 +24,7 @@ import javax.inject.Inject; +import com.cloud.domain.dao.DomainDetailsDao; import org.apache.cloudstack.api.ApiConstants; import org.apache.cloudstack.api.command.admin.domain.ListDomainChildrenCmd; import org.apache.cloudstack.api.command.admin.domain.ListDomainsCmd; @@ -124,6 +125,8 @@ public class DomainManagerImpl extends ManagerBase implements DomainManager, Dom private NetworkDomainDao _networkDomainDao; @Inject private ConfigurationManager _configMgr; + @Inject + private DomainDetailsDao _domainDetailsDao; @Inject MessageBus _messageBus; @@ -333,6 +336,7 @@ public boolean deleteDomain(DomainVO domain, Boolean cleanup) { s_logger.debug("Domain specific Virtual IP ranges " + " are successfully released as a part of domain id=" + domain.getId() + " cleanup."); } + cleanupDomainDetails(domain.getId()); cleanupDomainOfferings(domain.getId()); CallContext.current().putContextParameter(Domain.class, domain.getUuid()); return true; @@ -447,6 +451,10 @@ protected void publishRemoveEventsAndRemoveDomain(DomainVO domain) { _messageBus.publish(_name, MESSAGE_REMOVE_DOMAIN_EVENT, PublishScope.LOCAL, domain); } + protected void cleanupDomainDetails(Long domainId) { + _domainDetailsDao.deleteDetails(domainId); + } + protected void cleanupDomainOfferings(Long domainId) { if (domainId == null) { return; diff --git a/server/src/test/java/com/cloud/user/DomainManagerImplTest.java b/server/src/test/java/com/cloud/user/DomainManagerImplTest.java index d8f564dea8f0..2e9b54049d1f 100644 --- a/server/src/test/java/com/cloud/user/DomainManagerImplTest.java +++ b/server/src/test/java/com/cloud/user/DomainManagerImplTest.java @@ -22,6 +22,7 @@ import java.util.List; import java.util.UUID; +import com.cloud.domain.dao.DomainDetailsDao; import org.apache.cloudstack.context.CallContext; import org.apache.cloudstack.engine.orchestration.service.NetworkOrchestrationService; import org.apache.cloudstack.framework.messagebus.MessageBus; @@ -92,6 +93,8 @@ public class DomainManagerImplTest { MessageBus _messageBus; @Mock ConfigurationManager _configMgr; + @Mock + DomainDetailsDao _domainDetailsDao; @Spy @InjectMocks @@ -191,6 +194,7 @@ public void testDeleteDomainNoCleanup() { domainManager.deleteDomain(DOMAIN_ID, testDomainCleanup); Mockito.verify(domainManager).deleteDomain(domain, testDomainCleanup); Mockito.verify(domainManager).removeDomainWithNoAccountsForCleanupNetworksOrDedicatedResources(domain); + Mockito.verify(domainManager).cleanupDomainDetails(DOMAIN_ID); Mockito.verify(domainManager).cleanupDomainOfferings(DOMAIN_ID); Mockito.verify(lock).unlock(); }