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