in aws-core-server/src/main/java/jetbrains/buildServer/serverSide/oauth/aws/controllers/AvailableAwsConnsController.java [68:128]
protected ModelAndView doHandle(@NotNull HttpServletRequest request, @NotNull HttpServletResponse response) throws Exception {
Loggers.CLOUD.debug("Available AWS Connections have been requested for the project with id: " + request.getParameter("projectId"));
final ActionErrors errors = new ActionErrors();
try {
final String projectId = request.getParameter("projectId");
if (projectId == null) {
throw new AwsConnectorException("The ID of the project where to find Available AWS Connections is null");
}
final SProject project = myProjectManager.findProjectByExternalId(projectId);
if (project == null) {
throw new AwsConnectorException("Could not find the project with id: " + projectId);
}
List<ConnectionDescriptor> awsConnections = myConnectionsManager.getAvailableConnectionsOfType(project, AwsConnectionProvider.TYPE);
final ProjectEx projectEx = (ProjectEx) project;
final boolean forBuildStepFeatureEnabled = projectEx.getBooleanInternalParameterOrTrue(ALLOWED_IN_BUILDS_FEATURE_FLAG);
final boolean isForBuildStep = Boolean.parseBoolean(request.getParameter(ALLOWED_IN_BUILDS_REQUEST_PARAM));
if (forBuildStepFeatureEnabled && isForBuildStep) {
awsConnections = awsConnections.stream().filter(conn -> {
final String isAllowedInBuildSteps = conn.getParameters().get(AwsCloudConnectorConstants.ALLOWED_IN_BUILDS_PARAM);
return isAllowedInBuildSteps == null || Boolean.parseBoolean(isAllowedInBuildSteps);
}).collect(Collectors.toList());
}
final boolean childProjectsFeatureEnabled = projectEx.getBooleanInternalParameterOrTrue(ALLOWED_IN_SUBPROJECTS_FEATURE_FLAG);
if (childProjectsFeatureEnabled) {
awsConnections = awsConnections.stream()
.filter(conn -> conn.getProjectId().equals(project.getProjectId()) || ParamUtil.isAllowedInSubProjects(conn.getParameters()))
.collect(Collectors.toList());
}
List<List<String>> readyAvailAwsConnProps = getAvailableAwsConnectionsParams(processAvailableAwsConnections(awsConnections, request));
String resourceName = request.getParameter("resource");
if (resourceName == null) {
ModelAndView mv = new ModelAndView(myDescriptor.getPluginResourcesPath(AwsConnectionProvider.EDIT_PARAMS_URL));
mv.getModel().put("projectId", project.getProjectId());
mv.getModel().put(availableAwsConnsBeanName, readyAvailAwsConnProps);
return mv;
} else if (resourceName.equals(AVAIL_AWS_CONNECTIONS_REST_RESOURCE_NAME)) {
writeAsJson(
readyAvailAwsConnProps,
response
);
} else {
throw new AwsConnectorException("Resource " + resourceName + " is not supported. Only " + AVAIL_AWS_CONNECTIONS_REST_RESOURCE_NAME + " is supported.");
}
} catch (AwsConnectorException e) {
errors.addError("error_" + AVAIL_AWS_CONNECTIONS_SELECT_ID, e.getMessage());
writeAsJson(errors, response);
}
return null;
}