You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dlab.apache.org by bh...@apache.org on 2019/09/26 11:46:53 UTC
[incubator-dlab] branch DLAB-terraform updated: DLAB-1140, 1144,
1148
This is an automated email from the ASF dual-hosted git repository.
bhliva pushed a commit to branch DLAB-terraform
in repository https://gitbox.apache.org/repos/asf/incubator-dlab.git
The following commit(s) were added to refs/heads/DLAB-terraform by this push:
new d04c32f DLAB-1140, 1144, 1148
d04c32f is described below
commit d04c32f0e27ea729fee53258ea3f19a2304a1563
Author: bhliva <bo...@epam.com>
AuthorDate: Thu Sep 26 14:46:42 2019 +0300
DLAB-1140, 1144, 1148
---
.../java/com/epam/dlab/backendapi/dao/ProjectDAOImpl.java | 6 ++++--
.../com/epam/dlab/backendapi/domain/CreateProjectDTO.java | 2 +-
.../java/com/epam/dlab/backendapi/domain/ProjectDTO.java | 2 +-
.../com/epam/dlab/backendapi/resources/ProjectResource.java | 12 +++++++++++-
.../com/epam/dlab/backendapi/service/ProjectService.java | 4 +++-
.../dlab/backendapi/service/impl/ProjectServiceImpl.java | 10 +++++++++-
6 files changed, 29 insertions(+), 7 deletions(-)
diff --git a/services/self-service/src/main/java/com/epam/dlab/backendapi/dao/ProjectDAOImpl.java b/services/self-service/src/main/java/com/epam/dlab/backendapi/dao/ProjectDAOImpl.java
index 0c5302d..8f21ab8 100644
--- a/services/self-service/src/main/java/com/epam/dlab/backendapi/dao/ProjectDAOImpl.java
+++ b/services/self-service/src/main/java/com/epam/dlab/backendapi/dao/ProjectDAOImpl.java
@@ -22,6 +22,7 @@ public class ProjectDAOImpl extends BaseDAO implements ProjectDAO {
private static final String GROUPS = "groups";
private static final String ENDPOINTS = "endpoints";
private static final String STATUS_FIELD = "status";
+ private static final String ENDPOINT_STATUS_FIELD = "endpoints." + STATUS_FIELD;
private static final String EDGE_INFO_FIELD = "edgeInfo";
private static final String ENDPOINT_FIELD = "endpoints.$.";
@@ -48,13 +49,14 @@ public class ProjectDAOImpl extends BaseDAO implements ProjectDAO {
final List<String> statusList =
Arrays.stream(statuses).map(UserInstanceStatus::name).collect(Collectors.toList());
- return find(PROJECTS_COLLECTION, not(in("endpoints." + STATUS_FIELD, statusList)), ProjectDTO.class);
+ return find(PROJECTS_COLLECTION, not(in(ENDPOINT_STATUS_FIELD, statusList)), ProjectDTO.class);
}
@Override
public List<ProjectDTO> getUserProjects(UserInfo userInfo) {
return find(PROJECTS_COLLECTION, and(in(GROUPS, Sets.union(userGroupDao.getUserGroups(userInfo.getName()),
- userInfo.getRoles()))), ProjectDTO.class);
+ userInfo.getRoles())), eq(ENDPOINT_STATUS_FIELD, UserInstanceStatus.RUNNING.name())),
+ ProjectDTO.class);
}
@Override
diff --git a/services/self-service/src/main/java/com/epam/dlab/backendapi/domain/CreateProjectDTO.java b/services/self-service/src/main/java/com/epam/dlab/backendapi/domain/CreateProjectDTO.java
index 82e44ca..6dbc183 100644
--- a/services/self-service/src/main/java/com/epam/dlab/backendapi/domain/CreateProjectDTO.java
+++ b/services/self-service/src/main/java/com/epam/dlab/backendapi/domain/CreateProjectDTO.java
@@ -14,7 +14,7 @@ public class CreateProjectDTO {
private final Set<String> groups;
@NotNull final Set<String> endpoints;
@NotNull
- @Pattern(regexp = "^ssh-.*", message = "Wrong key format. Key should be in openSSH format")
+ @Pattern(regexp = "^ssh-.*\\n", message = "Wrong key format. Key should be in openSSH format")
private final String key;
@NotNull
private final String tag;
diff --git a/services/self-service/src/main/java/com/epam/dlab/backendapi/domain/ProjectDTO.java b/services/self-service/src/main/java/com/epam/dlab/backendapi/domain/ProjectDTO.java
index 79d8b73..2f53873 100644
--- a/services/self-service/src/main/java/com/epam/dlab/backendapi/domain/ProjectDTO.java
+++ b/services/self-service/src/main/java/com/epam/dlab/backendapi/domain/ProjectDTO.java
@@ -17,7 +17,7 @@ public class ProjectDTO {
@NotNull
private final Set<String> groups;
@NotNull
- @Pattern(regexp = "^ssh-.*", message = "Wrong key format. Key should be in openSSH format")
+ @Pattern(regexp = "^ssh-.*\\n", message = "Wrong key format. Key should be in openSSH format")
private final String key;
@NotNull
private final String tag;
diff --git a/services/self-service/src/main/java/com/epam/dlab/backendapi/resources/ProjectResource.java b/services/self-service/src/main/java/com/epam/dlab/backendapi/resources/ProjectResource.java
index 1242203..3d618e3 100644
--- a/services/self-service/src/main/java/com/epam/dlab/backendapi/resources/ProjectResource.java
+++ b/services/self-service/src/main/java/com/epam/dlab/backendapi/resources/ProjectResource.java
@@ -160,7 +160,7 @@ public class ProjectResource {
@Produces(MediaType.APPLICATION_JSON)
public Response getUserProjects(@Parameter(hidden = true) @Auth UserInfo userInfo) {
return Response
- .ok(projectService.getUserProjects(userInfo))
+ .ok(projectService.getUserActiveProjects(userInfo))
.build();
}
@@ -198,6 +198,16 @@ public class ProjectResource {
return Response.ok().build();
}
+ @DELETE
+ @Path("{name}")
+ @RolesAllowed("/api/project")
+ public Response removeProject(
+ @Parameter(hidden = true) @Auth UserInfo userInfo,
+ @PathParam("name") String name) {
+ projectService.terminateProject(userInfo, name);
+ return Response.ok().build();
+ }
+
@Operation(summary = "Updates project budget", tags = "project")
@ApiResponses({
@ApiResponse(responseCode = "200", description = "Project budget is successfully updated"),
diff --git a/services/self-service/src/main/java/com/epam/dlab/backendapi/service/ProjectService.java b/services/self-service/src/main/java/com/epam/dlab/backendapi/service/ProjectService.java
index 50eaede..2823eb7 100644
--- a/services/self-service/src/main/java/com/epam/dlab/backendapi/service/ProjectService.java
+++ b/services/self-service/src/main/java/com/epam/dlab/backendapi/service/ProjectService.java
@@ -9,7 +9,7 @@ import java.util.List;
public interface ProjectService {
List<ProjectDTO> getProjects();
- List<ProjectDTO> getUserProjects(UserInfo userInfo);
+ List<ProjectDTO> getUserActiveProjects(UserInfo userInfo);
List<ProjectDTO> getProjectsWithStatus(ProjectDTO.Status status);
@@ -19,6 +19,8 @@ public interface ProjectService {
void terminateEndpoint(UserInfo userInfo, String endpoint, String name);
+ void terminateProject(UserInfo userInfo, String name);
+
void start(UserInfo userInfo, String endpoint, String name);
void stop(UserInfo userInfo, String endpoint, String name);
diff --git a/services/self-service/src/main/java/com/epam/dlab/backendapi/service/impl/ProjectServiceImpl.java b/services/self-service/src/main/java/com/epam/dlab/backendapi/service/impl/ProjectServiceImpl.java
index 431afe1..9b2a8ea 100644
--- a/services/self-service/src/main/java/com/epam/dlab/backendapi/service/impl/ProjectServiceImpl.java
+++ b/services/self-service/src/main/java/com/epam/dlab/backendapi/service/impl/ProjectServiceImpl.java
@@ -67,7 +67,7 @@ public class ProjectServiceImpl implements ProjectService {
}
@Override
- public List<ProjectDTO> getUserProjects(UserInfo userInfo) {
+ public List<ProjectDTO> getUserActiveProjects(UserInfo userInfo) {
userInfo.getRoles().add(ANY_USER_ROLE);
return projectDAO.getUserProjects(userInfo);
}
@@ -101,6 +101,14 @@ public class ProjectServiceImpl implements ProjectService {
exploratoryService.updateProjectExploratoryStatuses(name, endpoint, UserInstanceStatus.TERMINATING);
}
+ @Override
+ public void terminateProject(UserInfo userInfo, String name) {
+ get(name).getEndpoints()
+ .stream()
+ .map(ProjectEndpointDTO::getName)
+ .forEach(endpoint -> terminateEndpoint(userInfo, endpoint, name));
+ }
+
@BudgetLimited
@Override
public void start(UserInfo userInfo, String endpoint, @Project String name) {
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@dlab.apache.org
For additional commands, e-mail: commits-help@dlab.apache.org