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

cherry pick 0cda3fc8

parent 788a40b7
No related branches found
No related tags found
2 merge requests!41release/1.6.4 into 'develop',!331.6.4 merge
......@@ -14,6 +14,7 @@ import net.geant.nmaas.orchestration.events.app.AppAutoDeploymentReviewEvent;
import net.geant.nmaas.orchestration.events.app.AppAutoDeploymentStatusUpdateEvent;
import net.geant.nmaas.orchestration.events.app.AppAutoDeploymentTriggeredEvent;
import net.geant.nmaas.portal.api.bulk.BulkAppDetails;
import net.geant.nmaas.portal.api.bulk.BulkDeploymentEntryView;
import net.geant.nmaas.portal.api.bulk.BulkDeploymentView;
import net.geant.nmaas.portal.api.bulk.BulkDeploymentViewS;
import net.geant.nmaas.portal.api.bulk.BulkType;
......@@ -21,6 +22,7 @@ import net.geant.nmaas.portal.api.bulk.CsvApplication;
import net.geant.nmaas.portal.api.domain.AppInstanceState;
import net.geant.nmaas.portal.api.domain.UserViewMinimal;
import net.geant.nmaas.portal.api.exception.MissingElementException;
import net.geant.nmaas.portal.exceptions.ObjectNotFoundException;
import net.geant.nmaas.portal.persistent.entity.AppInstance;
import net.geant.nmaas.portal.persistent.entity.Application;
import net.geant.nmaas.portal.persistent.entity.BulkDeployment;
......@@ -300,6 +302,75 @@ public class BulkApplicationServiceImpl implements BulkApplicationService {
);
}
@Override
public void deleteAppInstancesFromBulk(BulkDeploymentView bulk) {
List<BulkDeploymentEntryView> apps = bulk.getEntries();
for (BulkDeploymentEntryView app : apps) {
Long appInstanceId = Long.valueOf(findAppDetail(app, BULK_ENTRY_DETAIL_KEY_APP_INSTANCE_ID));
AppInstance appInstance = instanceService.find(appInstanceId)
.orElseThrow(() -> new ObjectNotFoundException("App instance not found"));
appLifecycleManager.removeApplication(appInstance.getInternalId());
instanceService.delete(appInstanceId);
}
}
private String findAppDetail(BulkDeploymentEntryView app, String key) {
return Optional.ofNullable(app.getDetails().get(key))
.orElseThrow(() -> new ObjectNotFoundException(key + " not found"));
}
@Override
public BulkDeployment updateState(Long bulkId) {
log.info("Update all states for bulk {}", bulkId);
Optional<BulkDeployment> bulk = this.bulkDeploymentRepository.findById(bulkId);
if(bulk.isPresent()) {
BulkDeployment bulkDeployment = bulk.get();
bulkDeployment.getEntries().forEach(entry -> {
try {
Long instanceId = Long.valueOf(entry.getDetails().get(BULK_ENTRY_DETAIL_KEY_APP_INSTANCE_ID));
AppInstance instance = instanceService.find(instanceId).orElseThrow();
AppLifecycleState state = appDeploymentMonitor.state(instance.getInternalId());
switch (state) {
case APPLICATION_DEPLOYMENT_VERIFIED:
entry.setState(BulkDeploymentState.COMPLETED);
bulkDeploymentEntryRepository.save(entry);
break;
case APPLICATION_CONFIGURATION_FAILED:
case APPLICATION_DEPLOYMENT_FAILED:
case APPLICATION_DEPLOYMENT_VERIFICATION_FAILED:
case INTERNAL_ERROR:
entry.setState(BulkDeploymentState.FAILED);
bulkDeploymentEntryRepository.save(entry);
break;
default:
entry.setState(BulkDeploymentState.PENDING);
bulkDeploymentEntryRepository.save(entry);
break;
}
logBulkStateUpdate(entry.getId(), entry.getState().name());
} catch (Exception e) {
log.error("Can not update state of {} bulk entry", entry.getId());
}
});
if (bulkDeployment.getEntries().stream().allMatch(e -> BulkDeploymentState.COMPLETED.equals(e.getState()))) {
bulkDeployment.setState(BulkDeploymentState.COMPLETED);
} else if (bulkDeployment.getEntries().stream().allMatch(e -> BulkDeploymentState.FAILED.equals(e.getState()))) {
bulkDeployment.setState(BulkDeploymentState.FAILED);
} else if (bulkDeployment.getEntries().stream().anyMatch(e -> BulkDeploymentState.FAILED.equals(e.getState()))) {
bulkDeployment.setState(BulkDeploymentState.PARTIALLY_FAILED);
}
logBulkStateUpdate(bulkDeployment.getId(),bulkDeployment.getState().name());
bulkDeploymentRepository.save(bulkDeployment);
return bulkDeployment;
} else {
log.error("Can not find bulk deployment {}", bulkId);
throw new MissingElementException("Can not find bulk deployment " + bulkId);
}
}
private static BulkDeployment createBulkDeployment(UserViewMinimal creator) {
BulkDeployment bulkDeployment = new BulkDeployment();
bulkDeployment.setType(BulkType.APPLICATION);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment