use of alien4cloud.model.application.Application in project alien4cloud by alien4cloud.
the class ApplicationDeploymentController method getSecretProviderConfigurationsForCurrentDeployment.
@ApiOperation(value = "Get current secret provider configuration for the given application on the given cloud.", notes = "Application role required [ APPLICATION_MANAGER | APPLICATION_DEVOPS ] and Application environment role required [ DEPLOYMENT_MANAGER ]")
@RequestMapping(value = "/{applicationId:.+}/environments/{applicationEnvironmentId}/current-secret-provider-configurations", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
@PreAuthorize("isAuthenticated()")
public RestResponse<List<SecretCredentialInfo>> getSecretProviderConfigurationsForCurrentDeployment(@PathVariable String applicationId, @PathVariable String applicationEnvironmentId) {
Application application = applicationService.checkAndGetApplication(applicationId);
// get the topology from the version and the cloud from the environment
ApplicationEnvironment environment = applicationEnvironmentService.getEnvironmentByIdOrDefault(application.getId(), applicationEnvironmentId);
AuthorizationUtil.checkAuthorizationForEnvironment(application, environment, ApplicationEnvironmentRole.APPLICATION_USER);
Deployment deployment = deploymentService.getActiveDeployment(environment.getId());
List<SecretCredentialInfo> secretProviderConfigurations = Lists.newArrayList();
for (int i = 0; i < deployment.getLocationIds().length; i++) {
Location location = locationService.getOrFail(deployment.getLocationIds()[i]);
if (location.getSecretProviderConfiguration() != null) {
secretProviderConfigurations.add(secretProviderService.getSecretCredentialInfo(location.getSecretProviderConfiguration().getPluginName(), location.getSecretProviderConfiguration().getConfiguration()));
}
}
return RestResponseBuilder.<List<SecretCredentialInfo>>builder().data(secretProviderConfigurations).build();
}
use of alien4cloud.model.application.Application in project alien4cloud by alien4cloud.
the class ApplicationDeploymentController method getApplicationsStatuses.
@ApiOperation(value = "Deprecated Get the deployment status for the environements that the current user is allowed to see for a given application.", notes = "Returns the current status of an application list from the PaaS it is deployed on for all environments.")
@RequestMapping(value = "/statuses", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE)
@PreAuthorize("isAuthenticated()")
@Deprecated
public RestResponse<Map<String, Map<String, EnvironmentStatusDTO>>> getApplicationsStatuses(@RequestBody List<String> applicationIds) {
Map<String, Map<String, EnvironmentStatusDTO>> statuses = Maps.newHashMap();
for (String applicationId : applicationIds) {
Map<String, EnvironmentStatusDTO> environmentStatuses = Maps.newHashMap();
Application application = applicationService.checkAndGetApplication(applicationId);
// get all environments status for the current application
ApplicationEnvironment[] environments = applicationEnvironmentService.getByApplicationId(application.getId());
for (ApplicationEnvironment env : environments) {
if (AuthorizationUtil.hasAuthorizationForEnvironment(application, env, ApplicationEnvironmentRole.values())) {
DeploymentStatus status = DeploymentStatus.UNKNOWN;
try {
status = applicationEnvironmentService.getStatus(env);
} catch (Exception e) {
log.debug("Getting status for the environment <" + env.getId() + "> failed because the associated orchestrator seems disabled. Returned status is UNKNOWN.", e);
}
// TODO: include environment roles in the DTO to help display on ui
environmentStatuses.put(env.getId(), new EnvironmentStatusDTO(env.getName(), status));
}
}
statuses.put(applicationId, environmentStatuses);
}
return RestResponseBuilder.<Map<String, Map<String, EnvironmentStatusDTO>>>builder().data(statuses).build();
}
use of alien4cloud.model.application.Application in project alien4cloud by alien4cloud.
the class ApplicationDeploymentController method getActiveDeployment.
/**
* Get only the active deployment for the given application on the given cloud
*
* @param applicationId id of the topology
* @return the active deployment
*/
@ApiOperation(value = "Get active deployment for the given application on the given cloud.", notes = "Application role required [ APPLICATION_MANAGER | APPLICATION_DEVOPS ] and Application environment role required [ DEPLOYMENT_MANAGER ]")
@RequestMapping(value = "/{applicationId:.+}/environments/{applicationEnvironmentId}/active-deployment", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
@PreAuthorize("isAuthenticated()")
public RestResponse<Deployment> getActiveDeployment(@PathVariable String applicationId, @PathVariable String applicationEnvironmentId) {
Application application = applicationService.checkAndGetApplication(applicationId);
// get the topology from the version and the cloud from the environment
ApplicationEnvironment environment = applicationEnvironmentService.getEnvironmentByIdOrDefault(application.getId(), applicationEnvironmentId);
AuthorizationUtil.checkAuthorizationForEnvironment(application, environment, ApplicationEnvironmentRole.APPLICATION_USER);
Deployment deployment = deploymentService.getActiveDeployment(environment.getId());
return RestResponseBuilder.<Deployment>builder().data(deployment).build();
}
use of alien4cloud.model.application.Application in project alien4cloud by alien4cloud.
the class ApplicationDeploymentController method doUndeploy.
private RestResponse<Void> doUndeploy(String applicationId, String applicationEnvironmentId, SecretProviderConfigurationAndCredentials secretProviderConfigurationAndCredentials) {
ApplicationEnvironment environment = applicationEnvironmentService.getEnvironmentByIdOrDefault(applicationId, applicationEnvironmentId);
Application application = applicationService.checkAndGetApplication(applicationId);
AuthorizationUtil.checkAuthorizationForEnvironment(application, environment);
try {
undeployService.undeployEnvironment(secretProviderConfigurationAndCredentials, applicationEnvironmentId);
} catch (OrchestratorDisabledException e) {
return RestResponseBuilder.<Void>builder().error(new RestError(RestErrorCode.CLOUD_DISABLED_ERROR.getCode(), e.getMessage())).build();
}
return RestResponseBuilder.<Void>builder().build();
}
use of alien4cloud.model.application.Application in project alien4cloud by alien4cloud.
the class ApplicationEnvironmentController method getApplicationEnvironmentStatus.
/**
* Get the current status of the environment for the given application.
*
* @param applicationId the id of the application to be deployed.
* @param applicationEnvironmentId the environment for which to get the status
* @return A {@link RestResponse} that contains the application's current {@link DeploymentStatus}.
* @throws Exception
*/
@ApiOperation(value = "Get an application environment from its id", notes = "Returns the application environment. Application role required [ APPLICATION_USER | DEPLOYMENT_MANAGER ]")
@RequestMapping(value = "/{applicationEnvironmentId:.+}/status", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
@PreAuthorize("isAuthenticated()")
public RestResponse<DeploymentStatus> getApplicationEnvironmentStatus(@PathVariable String applicationId, @PathVariable String applicationEnvironmentId) throws ExecutionException, InterruptedException {
Application application = applicationService.checkAndGetApplication(applicationId);
ApplicationEnvironment environment = applicationEnvironmentService.getOrFail(applicationEnvironmentId);
AuthorizationUtil.checkAuthorizationForEnvironment(application, environment, ApplicationEnvironmentRole.values());
DeploymentStatus status = applicationEnvironmentService.getStatus(environment);
return RestResponseBuilder.<DeploymentStatus>builder().data(status).build();
}
Aggregations