diff --git a/src/main/java/net/geant/nmaas/portal/persistent/entity/DomainGroup.java b/src/main/java/net/geant/nmaas/portal/persistent/entity/DomainGroup.java index 36f735f09be49321f9205d1072bcddccc2e8d1b1..1533eaea4e9795c8c29630a2bc044ab7bdb7dd05 100644 --- a/src/main/java/net/geant/nmaas/portal/persistent/entity/DomainGroup.java +++ b/src/main/java/net/geant/nmaas/portal/persistent/entity/DomainGroup.java @@ -23,6 +23,7 @@ import javax.validation.constraints.NotNull; import java.io.Serializable; import java.util.ArrayList; import java.util.List; +import java.util.Optional; import java.util.stream.Collectors; @Entity diff --git a/src/main/java/net/geant/nmaas/portal/service/DomainGroupService.java b/src/main/java/net/geant/nmaas/portal/service/DomainGroupService.java index f8609b69cb27bd1aa77c88eba016efbb69457581..a95e5c3c1e352e68b752110bc679286797ecdc4c 100644 --- a/src/main/java/net/geant/nmaas/portal/service/DomainGroupService.java +++ b/src/main/java/net/geant/nmaas/portal/service/DomainGroupService.java @@ -1,6 +1,7 @@ package net.geant.nmaas.portal.service; import net.geant.nmaas.portal.api.domain.DomainGroupView; +import net.geant.nmaas.portal.persistent.entity.ApplicationBase; import net.geant.nmaas.portal.persistent.entity.Domain; import java.util.List; @@ -23,4 +24,6 @@ public interface DomainGroupService { DomainGroupView updateDomainGroup(Long domainGroupId, DomainGroupView view); + void deleteAppBaseFromAllAppState(ApplicationBase base); + } diff --git a/src/main/java/net/geant/nmaas/portal/service/impl/ApplicationStatePerDomainServiceImpl.java b/src/main/java/net/geant/nmaas/portal/service/impl/ApplicationStatePerDomainServiceImpl.java index cd043eb0faa60c7ec897aa8bec03020affb4692c..297af2ebcc25cc6f74df8103c18012adf3c8c45b 100644 --- a/src/main/java/net/geant/nmaas/portal/service/impl/ApplicationStatePerDomainServiceImpl.java +++ b/src/main/java/net/geant/nmaas/portal/service/impl/ApplicationStatePerDomainServiceImpl.java @@ -101,5 +101,4 @@ public class ApplicationStatePerDomainServiceImpl implements ApplicationStatePer public boolean validateAppConfigurationAgainstState(AppConfigurationView appConfig, ApplicationStatePerDomain appState) { return appConfig.getStorageSpace() == null || appConfig.getStorageSpace() <= appState.getPvStorageSizeLimit(); } - } diff --git a/src/main/java/net/geant/nmaas/portal/service/impl/DomainGroupServiceImpl.java b/src/main/java/net/geant/nmaas/portal/service/impl/DomainGroupServiceImpl.java index 0c4cd891b7cdf12df56fdb04a7536fe3fe0daee3..32c7e7598c9dadc203e87b9c7993ae9c87a5fb08 100644 --- a/src/main/java/net/geant/nmaas/portal/service/impl/DomainGroupServiceImpl.java +++ b/src/main/java/net/geant/nmaas/portal/service/impl/DomainGroupServiceImpl.java @@ -6,6 +6,7 @@ import net.geant.nmaas.portal.api.domain.ApplicationStatePerDomainView; import net.geant.nmaas.portal.api.domain.DomainGroupView; import net.geant.nmaas.portal.api.exception.MissingElementException; import net.geant.nmaas.portal.api.exception.ProcessingException; +import net.geant.nmaas.portal.persistent.entity.ApplicationBase; import net.geant.nmaas.portal.persistent.entity.ApplicationStatePerDomain; import net.geant.nmaas.portal.persistent.entity.Domain; import net.geant.nmaas.portal.persistent.entity.DomainGroup; @@ -136,4 +137,10 @@ public class DomainGroupServiceImpl implements DomainGroupService { } } + public void deleteAppBaseFromAllAppState(ApplicationBase base) { + domainGroupRepository.findAll().forEach(d -> { + d.getApplicationStatePerDomain().removeIf(state -> state.getApplicationBase().equals(base)); + }); + } + } \ No newline at end of file diff --git a/src/main/java/net/geant/nmaas/portal/service/impl/DomainServiceImpl.java b/src/main/java/net/geant/nmaas/portal/service/impl/DomainServiceImpl.java index 7f4ff1affeaf543bb54bc73e8a3b8ddfc255a8c4..0caa0356871627bb0839f0bdf10545168c9701b8 100644 --- a/src/main/java/net/geant/nmaas/portal/service/impl/DomainServiceImpl.java +++ b/src/main/java/net/geant/nmaas/portal/service/impl/DomainServiceImpl.java @@ -536,8 +536,8 @@ public class DomainServiceImpl implements DomainService { public void removeAppBaseFromAllDomains(ApplicationBase base) { getDomains().forEach(domain -> { removeFromDomain(base, domain); - }); + domainGroupService.deleteAppBaseFromAllAppState(base); } private void removeFromDomain(ApplicationBase base, Domain domain) { diff --git a/src/test/java/net/geant/nmaas/portal/service/impl/DomainServiceTest.java b/src/test/java/net/geant/nmaas/portal/service/impl/DomainServiceTest.java index d3c645f890f97fd226061f03ae830b15588f2e06..e9e2e9922bb914f33c467d751f6318fca83e33d1 100644 --- a/src/test/java/net/geant/nmaas/portal/service/impl/DomainServiceTest.java +++ b/src/test/java/net/geant/nmaas/portal/service/impl/DomainServiceTest.java @@ -473,4 +473,22 @@ public class DomainServiceTest { assertEquals(0, domain2.getApplicationStatePerDomain().size()); } + @Test + void shouldRemoveAppBaseFromAllDomainGroup() { + ApplicationBase applicationBase = new ApplicationBase(1L, "appBase"); + ApplicationStatePerDomain statePerDomain = new ApplicationStatePerDomain(applicationBase); + DomainGroup domainGroup = new DomainGroup("test", "test1"); + DomainGroup domainGroup2 = new DomainGroup("test2", "test2"); + domainGroup.setApplicationStatePerDomain(new ArrayList<>(List.of(statePerDomain))); + domainGroup2.setApplicationStatePerDomain(new ArrayList<>(List.of(statePerDomain))); + when(domainGroupRepository.findAll()).thenReturn(List.of(domainGroup, domainGroup2)); + + domainGroupService.deleteAppBaseFromAllAppState(applicationBase); + + assertEquals(0, domainGroup.getApplicationStatePerDomain().size()); + assertEquals(0, domainGroup2.getApplicationStatePerDomain().size()); + + + } + }