server: Cleanup domain details when domain is deleted (#4445)

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
This commit is contained in:
Rakesh 2021-02-12 08:22:22 +01:00 committed by GitHub
parent 0d04bd621f
commit de7b131724
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 12 additions and 0 deletions

View File

@ -24,6 +24,7 @@ import java.util.UUID;
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 class DomainManagerImpl extends ManagerBase implements DomainManager, Dom
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 @@ public class DomainManagerImpl extends ManagerBase implements DomainManager, Dom
_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;

View File

@ -22,6 +22,7 @@ import java.util.Collections;
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 class DomainManagerImplTest {
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();
}