Skip to content
Snippets Groups Projects
Commit f408f8db authored by kbeyro's avatar kbeyro
Browse files

Delete base when all the versions are set to DELETED

parent 2534d8bf
Branches
Tags
1 merge request!10Remove app instances on base removal
Pipeline #87464 passed
...@@ -10,12 +10,7 @@ import net.geant.nmaas.notifications.MailAttributes; ...@@ -10,12 +10,7 @@ import net.geant.nmaas.notifications.MailAttributes;
import net.geant.nmaas.notifications.NotificationEvent; import net.geant.nmaas.notifications.NotificationEvent;
import net.geant.nmaas.notifications.templates.MailType; import net.geant.nmaas.notifications.templates.MailType;
import net.geant.nmaas.orchestration.AppLifecycleManager; import net.geant.nmaas.orchestration.AppLifecycleManager;
import net.geant.nmaas.portal.api.domain.AppRateView; import net.geant.nmaas.portal.api.domain.*;
import net.geant.nmaas.portal.api.domain.ApplicationBaseView;
import net.geant.nmaas.portal.api.domain.ApplicationStateChangeRequest;
import net.geant.nmaas.portal.api.domain.ApplicationView;
import net.geant.nmaas.portal.api.domain.Id;
import net.geant.nmaas.portal.api.domain.UserView;
import net.geant.nmaas.portal.api.exception.MarketException; import net.geant.nmaas.portal.api.exception.MarketException;
import net.geant.nmaas.portal.api.exception.MissingElementException; import net.geant.nmaas.portal.api.exception.MissingElementException;
import net.geant.nmaas.portal.api.exception.ProcessingException; import net.geant.nmaas.portal.api.exception.ProcessingException;
...@@ -73,6 +68,8 @@ public class ApplicationController extends AppBaseController { ...@@ -73,6 +68,8 @@ public class ApplicationController extends AppBaseController {
private final AppLifecycleManager appLifecycleManager; private final AppLifecycleManager appLifecycleManager;
private final AppInstanceController appInstanceController;
/* /*
* Application Base Part * Application Base Part
*/ */
...@@ -151,14 +148,8 @@ public class ApplicationController extends AppBaseController { ...@@ -151,14 +148,8 @@ public class ApplicationController extends AppBaseController {
ApplicationState state = ApplicationState.DELETED; ApplicationState state = ApplicationState.DELETED;
for (ApplicationVersion appVersion : base.getVersions()) { for (ApplicationVersion appVersion : base.getVersions()) {
Application app = getApp(appVersion.getAppVersionId()); Application app = getApp(appVersion.getAppVersionId());
applicationService.changeApplicationState(app, state); if(app.getState() != ApplicationState.DELETED) throw new ProcessingException("Can not delete base, version " + app.getVersion() +" is not deleted");
List<AppInstance> instanceList = applicationInstanceService.findAllByApplication(app);
instanceList.forEach(instance -> {
appLifecycleManager.removeApplication(instance.getInternalId());
});
appVersion.setState(state);
} }
appBaseService.deleteAppBase(base); appBaseService.deleteAppBase(base);
} }
...@@ -323,8 +314,23 @@ public class ApplicationController extends AppBaseController { ...@@ -323,8 +314,23 @@ public class ApplicationController extends AppBaseController {
@PatchMapping(value = "/state/{id}") @PatchMapping(value = "/state/{id}")
@PreAuthorize("hasRole('ROLE_SYSTEM_ADMIN')") @PreAuthorize("hasRole('ROLE_SYSTEM_ADMIN')")
@Transactional @Transactional
public void changeApplicationState(@PathVariable long id, @RequestBody ApplicationStateChangeRequest stateChangeRequest) { public void changeApplicationState(@PathVariable long id, @RequestBody ApplicationStateChangeRequest stateChangeRequest, Principal principal) {
Application app = getApp(id); Application app = getApp(id);
if(stateChangeRequest.getState().equals(ApplicationState.DELETED)) {
applicationInstanceService.findAllByApplication(app).forEach(ai -> {
AppInstanceStatus instanceState = appInstanceController.getState(ai.getId(), principal);
int numberOfRunningInstances = 0;
if(!(instanceState.getState().equals(AppInstanceState.DONE)
|| instanceState.getState().equals(AppInstanceState.FAILURE)
|| instanceState.getState().equals(AppInstanceState.REMOVED) )) {
numberOfRunningInstances = +1;
}
if(numberOfRunningInstances > 0) {
throw new ProcessingException("Can not delete app version. You still have " + numberOfRunningInstances + " running instances of this version.");
}
}
);
}
applicationService.changeApplicationState(app, stateChangeRequest.getState()); applicationService.changeApplicationState(app, stateChangeRequest.getState());
appBaseService.updateApplicationVersionState(app.getName(), app.getVersion(), stateChangeRequest.getState()); appBaseService.updateApplicationVersionState(app.getName(), app.getVersion(), stateChangeRequest.getState());
this.sendMails(app, stateChangeRequest); this.sendMails(app, stateChangeRequest);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment