protected ApplicationEntity.Status getApplicationStatus() { ApplicationEntity applicationEntity = applicationEntityService.getByUUIDOrAppId(null, config.getString(APP_ID_PATH)); return applicationEntity.getStatus(); }
@POST @Path("/status") @Consumes(MediaType.APPLICATION_JSON) @Produces(MediaType.APPLICATION_JSON) public RESTResponse<ApplicationEntity.Status> checkApplicationStatusByUUID(ApplicationOperations.CheckStatusOperation operation) { return RESTResponse.<ApplicationEntity.Status>async((response) -> { ApplicationEntity.Status status = (entityService.getByUUIDOrAppId(null, operation.getAppId())).getStatus(); response.success(true).message("Successfully fetched application status"); response.data(status); }).get(); }
@Override public ApplicationEntity.Status getStatus(ApplicationOperations.CheckStatusOperation operation) { try { ApplicationEntity applicationEntity = applicationEntityService.getByUUIDOrAppId(operation.getUuid(), operation.getAppId()); Application application = applicationProviderService.getApplicationProviderByType(applicationEntity.getDescriptor().getType()).getApplication(); Preconditions.checkArgument(application.isExecutable(), "Application is not executable"); ApplicationAction applicationAction = new ApplicationAction(application, applicationEntity, config, alertMetadataService); return applicationAction.getStatus(); } catch (IllegalArgumentException e) { LOGGER.error("application id not exist", e); throw e; } } }
@Override public ApplicationEntity stop(ApplicationOperations.StopOperation operation) throws ApplicationWrongStatusException { ApplicationEntity applicationEntity = applicationEntityService.getByUUIDOrAppId(operation.getUuid(), operation.getAppId()); ApplicationProvider<?> appProvider = applicationProviderService.getApplicationProviderByType(applicationEntity.getDescriptor().getType()); Application application = appProvider.getApplication();
@Override public ApplicationEntity start(ApplicationOperations.StartOperation operation) throws ApplicationWrongStatusException { ApplicationEntity appEntity = applicationEntityService.getByUUIDOrAppId(operation.getUuid(), operation.getAppId()); ApplicationProvider<?> appProvider = applicationProviderService.getApplicationProviderByType(appEntity.getDescriptor().getType()); Application application = appProvider.getApplication();
@Override public ApplicationEntity uninstall(ApplicationOperations.UninstallOperation operation) throws ApplicationWrongStatusException { ApplicationEntity appEntity = applicationEntityService.getByUUIDOrAppId(operation.getUuid(), operation.getAppId()); ApplicationProvider<?> appProvider = applicationProviderService.getApplicationProviderByType(appEntity.getDescriptor().getType()); ApplicationAction appAction = new ApplicationAction(appProvider.getApplication(), appEntity, config, alertMetadataService); ApplicationEntity.Status currentStatus = appEntity.getStatus(); try { if (currentStatus == ApplicationEntity.Status.INITIALIZED || currentStatus == ApplicationEntity.Status.STOPPED) { // AfterUninstall Callback appAction.doUninstall(); appProvider.getApplicationListener().ifPresent((listener) -> { currentInjector.injectMembers(listener); listener.init(appEntity); listener.afterUninstall(); }); applicationHealthCheckService.unregister(appEntity); return applicationEntityService.delete(appEntity); } else { throw new ApplicationWrongStatusException("App: " + appEntity.getAppId() + " status is " + currentStatus + ", uninstall operation is not allowed"); } } catch (Throwable throwable) { LOGGER.error(throwable.getMessage(), throwable); throw throwable; } }