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/07/01 10:49:42 UTC
[incubator-dlab] branch feature/projects updated: DLAB-830 added
project statuses and possibility to terminate project
This is an automated email from the ASF dual-hosted git repository.
bhliva pushed a commit to branch feature/projects
in repository https://gitbox.apache.org/repos/asf/incubator-dlab.git
The following commit(s) were added to refs/heads/feature/projects by this push:
new bca152a DLAB-830 added project statuses and possibility to terminate project
bca152a is described below
commit bca152aac4c96874833b4ff649ef20c4e36eaa17
Author: bhliva <bo...@epam.com>
AuthorDate: Mon Jul 1 13:49:13 2019 +0300
DLAB-830 added project statuses and possibility to terminate project
---
...CreateProjectResult.java => ProjectResult.java} | 2 +-
.../dlab/dto/{ => project}/ProjectCreateDTO.java | 3 ++-
.../epam/dlab/dto/project/ProjectTerminateDTO.java | 13 +++++++++++
.../response/handlers/ProjectCallbackHandler.java | 12 ++++++-----
.../dlab/backendapi/resources/ProjectResource.java | 12 ++++++++++-
.../dlab/backendapi/service/ProjectService.java | 4 +++-
.../service/impl/ProjectServiceImpl.java | 22 ++++++++++++++-----
.../mock_response/gcp/project_terminate.json | 12 +++++++++++
.../com/epam/dlab/backendapi/dao/ProjectDAO.java | 2 +-
.../epam/dlab/backendapi/dao/ProjectDAOImpl.java | 9 ++++----
.../epam/dlab/backendapi/domain/ProjectDTO.java | 12 +++++++++--
.../dlab/backendapi/resources/ProjectResource.java | 6 ++----
.../resources/callback/ProjectCallback.java | 14 ++++++------
.../dlab/backendapi/service/ProjectService.java | 3 ++-
.../service/impl/ProjectServiceImpl.java | 25 +++++++++++++++++-----
15 files changed, 112 insertions(+), 39 deletions(-)
diff --git a/services/dlab-model/src/main/java/com/epam/dlab/dto/base/project/CreateProjectResult.java b/services/dlab-model/src/main/java/com/epam/dlab/dto/base/project/ProjectResult.java
similarity index 82%
rename from services/dlab-model/src/main/java/com/epam/dlab/dto/base/project/CreateProjectResult.java
rename to services/dlab-model/src/main/java/com/epam/dlab/dto/base/project/ProjectResult.java
index 3059b0e..c1e6827 100644
--- a/services/dlab-model/src/main/java/com/epam/dlab/dto/base/project/CreateProjectResult.java
+++ b/services/dlab-model/src/main/java/com/epam/dlab/dto/base/project/ProjectResult.java
@@ -7,7 +7,7 @@ import lombok.Data;
@Data
@JsonIgnoreProperties(ignoreUnknown = true)
-public class CreateProjectResult extends StatusBaseDTO<CreateProjectResult> {
+public class ProjectResult extends StatusBaseDTO<ProjectResult> {
private ProjectEdgeInfo edgeInfo;
@JsonProperty("project_name")
private String projectName;
diff --git a/services/dlab-model/src/main/java/com/epam/dlab/dto/ProjectCreateDTO.java b/services/dlab-model/src/main/java/com/epam/dlab/dto/project/ProjectCreateDTO.java
similarity index 81%
rename from services/dlab-model/src/main/java/com/epam/dlab/dto/ProjectCreateDTO.java
rename to services/dlab-model/src/main/java/com/epam/dlab/dto/project/ProjectCreateDTO.java
index a5ec693..a933f0b 100644
--- a/services/dlab-model/src/main/java/com/epam/dlab/dto/ProjectCreateDTO.java
+++ b/services/dlab-model/src/main/java/com/epam/dlab/dto/project/ProjectCreateDTO.java
@@ -1,5 +1,6 @@
-package com.epam.dlab.dto;
+package com.epam.dlab.dto.project;
+import com.epam.dlab.dto.ResourceBaseDTO;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Builder;
import lombok.Data;
diff --git a/services/dlab-model/src/main/java/com/epam/dlab/dto/project/ProjectTerminateDTO.java b/services/dlab-model/src/main/java/com/epam/dlab/dto/project/ProjectTerminateDTO.java
new file mode 100644
index 0000000..533e342
--- /dev/null
+++ b/services/dlab-model/src/main/java/com/epam/dlab/dto/project/ProjectTerminateDTO.java
@@ -0,0 +1,13 @@
+package com.epam.dlab.dto.project;
+
+import com.epam.dlab.dto.ResourceBaseDTO;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+
+@Data
+@AllArgsConstructor
+public class ProjectTerminateDTO extends ResourceBaseDTO<ProjectTerminateDTO> {
+ @JsonProperty("project_name")
+ private final String name;
+}
diff --git a/services/provisioning-service/src/main/java/com/epam/dlab/backendapi/core/response/handlers/ProjectCallbackHandler.java b/services/provisioning-service/src/main/java/com/epam/dlab/backendapi/core/response/handlers/ProjectCallbackHandler.java
index 6f7f9eb..71a21e1 100644
--- a/services/provisioning-service/src/main/java/com/epam/dlab/backendapi/core/response/handlers/ProjectCallbackHandler.java
+++ b/services/provisioning-service/src/main/java/com/epam/dlab/backendapi/core/response/handlers/ProjectCallbackHandler.java
@@ -3,23 +3,25 @@ package com.epam.dlab.backendapi.core.response.handlers;
import com.epam.dlab.auth.SystemUserInfoService;
import com.epam.dlab.backendapi.core.commands.DockerAction;
import com.epam.dlab.dto.UserInstanceStatus;
-import com.epam.dlab.dto.base.project.CreateProjectResult;
import com.epam.dlab.dto.base.project.ProjectEdgeInfo;
+import com.epam.dlab.dto.base.project.ProjectResult;
import com.epam.dlab.exceptions.DlabException;
import com.epam.dlab.rest.client.RESTService;
import com.fasterxml.jackson.databind.JsonNode;
import java.io.IOException;
-public class ProjectCallbackHandler extends ResourceCallbackHandler<CreateProjectResult> {
+public class ProjectCallbackHandler extends ResourceCallbackHandler<ProjectResult> {
private final String callbackUri;
+ private final String projectName;
public ProjectCallbackHandler(SystemUserInfoService systemUserInfoService, RESTService selfService, String user,
- String uuid, DockerAction action, String callbackUri) {
+ String uuid, DockerAction action, String callbackUri, String projectName) {
super(systemUserInfoService, selfService, user, uuid, action);
this.callbackUri = callbackUri;
+ this.projectName = projectName;
}
@Override
@@ -28,13 +30,13 @@ public class ProjectCallbackHandler extends ResourceCallbackHandler<CreateProjec
}
@Override
- protected CreateProjectResult parseOutResponse(JsonNode resultNode, CreateProjectResult baseStatus) {
+ protected ProjectResult parseOutResponse(JsonNode resultNode, ProjectResult baseStatus) {
+ baseStatus.setProjectName(projectName);
if (resultNode != null && getAction() == DockerAction.CREATE
&& UserInstanceStatus.of(baseStatus.getStatus()) != UserInstanceStatus.FAILED) {
try {
final ProjectEdgeInfo projectEdgeInfo = mapper.readValue(resultNode.toString(), ProjectEdgeInfo.class);
baseStatus.setEdgeInfo(projectEdgeInfo);
- baseStatus.setProjectName(resultNode.get("project_name").asText());
} catch (IOException e) {
throw new DlabException("Cannot parse the EDGE info in JSON: " + e.getLocalizedMessage(), e);
}
diff --git a/services/provisioning-service/src/main/java/com/epam/dlab/backendapi/resources/ProjectResource.java b/services/provisioning-service/src/main/java/com/epam/dlab/backendapi/resources/ProjectResource.java
index 6bb8826..fa7aee1 100644
--- a/services/provisioning-service/src/main/java/com/epam/dlab/backendapi/resources/ProjectResource.java
+++ b/services/provisioning-service/src/main/java/com/epam/dlab/backendapi/resources/ProjectResource.java
@@ -2,7 +2,8 @@ package com.epam.dlab.backendapi.resources;
import com.epam.dlab.auth.UserInfo;
import com.epam.dlab.backendapi.service.ProjectService;
-import com.epam.dlab.dto.ProjectCreateDTO;
+import com.epam.dlab.dto.project.ProjectCreateDTO;
+import com.epam.dlab.dto.project.ProjectTerminateDTO;
import com.google.inject.Inject;
import io.dropwizard.auth.Auth;
@@ -22,10 +23,19 @@ public class ProjectResource {
this.projectService = projectService;
}
+ @Path("/create")
@POST
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public Response createProject(@Auth UserInfo userInfo, ProjectCreateDTO dto) {
return Response.ok(projectService.create(userInfo, dto)).build();
}
+
+ @Path("/terminate")
+ @POST
+ @Consumes(MediaType.APPLICATION_JSON)
+ @Produces(MediaType.APPLICATION_JSON)
+ public Response terminateProject(@Auth UserInfo userInfo, ProjectTerminateDTO dto) {
+ return Response.ok(projectService.terminate(userInfo, dto)).build();
+ }
}
diff --git a/services/provisioning-service/src/main/java/com/epam/dlab/backendapi/service/ProjectService.java b/services/provisioning-service/src/main/java/com/epam/dlab/backendapi/service/ProjectService.java
index 60656f4..b18aa8c 100644
--- a/services/provisioning-service/src/main/java/com/epam/dlab/backendapi/service/ProjectService.java
+++ b/services/provisioning-service/src/main/java/com/epam/dlab/backendapi/service/ProjectService.java
@@ -1,9 +1,11 @@
package com.epam.dlab.backendapi.service;
import com.epam.dlab.auth.UserInfo;
-import com.epam.dlab.dto.ProjectCreateDTO;
+import com.epam.dlab.dto.project.ProjectCreateDTO;
+import com.epam.dlab.dto.project.ProjectTerminateDTO;
public interface ProjectService {
String create(UserInfo userInfo, ProjectCreateDTO projectCreateDTO);
+ String terminate(UserInfo userInfo, ProjectTerminateDTO dto);
}
diff --git a/services/provisioning-service/src/main/java/com/epam/dlab/backendapi/service/impl/ProjectServiceImpl.java b/services/provisioning-service/src/main/java/com/epam/dlab/backendapi/service/impl/ProjectServiceImpl.java
index dc6401a..4eebcfc 100644
--- a/services/provisioning-service/src/main/java/com/epam/dlab/backendapi/service/impl/ProjectServiceImpl.java
+++ b/services/provisioning-service/src/main/java/com/epam/dlab/backendapi/service/impl/ProjectServiceImpl.java
@@ -7,7 +7,9 @@ import com.epam.dlab.backendapi.core.commands.*;
import com.epam.dlab.backendapi.core.response.folderlistener.FolderListenerExecutor;
import com.epam.dlab.backendapi.core.response.handlers.ProjectCallbackHandler;
import com.epam.dlab.backendapi.service.ProjectService;
-import com.epam.dlab.dto.ProjectCreateDTO;
+import com.epam.dlab.dto.ResourceBaseDTO;
+import com.epam.dlab.dto.project.ProjectCreateDTO;
+import com.epam.dlab.dto.project.ProjectTerminateDTO;
import com.epam.dlab.rest.client.RESTService;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.google.inject.Inject;
@@ -15,6 +17,7 @@ import lombok.extern.slf4j.Slf4j;
@Slf4j
public class ProjectServiceImpl implements ProjectService {
+ private static final String PROJECT_IMAGE = "docker.dlab-project";
@Inject
protected RESTService selfService;
@Inject
@@ -30,24 +33,33 @@ public class ProjectServiceImpl implements ProjectService {
@Override
public String create(UserInfo userInfo, ProjectCreateDTO dto) {
+ return executeDocker(userInfo, dto, DockerAction.CREATE, dto.getName());
+ }
+
+ @Override
+ public String terminate(UserInfo userInfo, ProjectTerminateDTO dto) {
+ return executeDocker(userInfo, dto, DockerAction.TERMINATE, dto.getName());
+ }
+
+ private String executeDocker(UserInfo userInfo, ResourceBaseDTO dto, DockerAction action, String projectName) {
String uuid = DockerCommands.generateUUID();
folderListenerExecutor.start(configuration.getKeyLoaderDirectory(),
configuration.getKeyLoaderPollTimeout(),
new ProjectCallbackHandler(systemUserInfoService, selfService, userInfo.getName(), uuid,
- DockerAction.CREATE, "/api/project/status"));
+ action, "/api/project/status", projectName));
RunDockerCommand runDockerCommand = new RunDockerCommand()
.withInteractive()
- .withName(String.join("_", dto.getName(), "project"))
+ .withName(String.join("_", projectName, "project"))
.withVolumeForRootKeys(configuration.getKeyDirectory())
.withVolumeForResponse(configuration.getKeyLoaderDirectory())
.withVolumeForLog(configuration.getDockerLogDirectory(), "project")
.withResource("project")
.withRequestId(uuid)
.withConfKeyName(configuration.getAdminKey())
- .withImage("docker.dlab-project")
- .withAction(DockerAction.CREATE);
+ .withImage(PROJECT_IMAGE)
+ .withAction(action);
try {
commandExecutor.executeAsync(userInfo.getName(), uuid, commandBuilder.buildCommand(runDockerCommand, dto));
diff --git a/services/provisioning-service/src/main/resources/mock_response/gcp/project_terminate.json b/services/provisioning-service/src/main/resources/mock_response/gcp/project_terminate.json
new file mode 100644
index 0000000..7420ded
--- /dev/null
+++ b/services/provisioning-service/src/main/resources/mock_response/gcp/project_terminate.json
@@ -0,0 +1,12 @@
+{
+ "status": "ok",
+ "response": {
+ "result": {
+ "Action": "Terminate edge node",
+ "project_tag": "prj1",
+ "service_base_name": "${CONF_SERVICE_BASE_NAME}"
+ },
+ "log": "/var/log/dlab/edge/edge_${EDGE_USER_NAME}_${REQUEST_ID}.log"
+ },
+ "request_id": "${REQUEST_ID}"
+}
\ No newline at end of file
diff --git a/services/self-service/src/main/java/com/epam/dlab/backendapi/dao/ProjectDAO.java b/services/self-service/src/main/java/com/epam/dlab/backendapi/dao/ProjectDAO.java
index 2e2ab55..0532f17 100644
--- a/services/self-service/src/main/java/com/epam/dlab/backendapi/dao/ProjectDAO.java
+++ b/services/self-service/src/main/java/com/epam/dlab/backendapi/dao/ProjectDAO.java
@@ -11,7 +11,7 @@ import java.util.Set;
public interface ProjectDAO {
List<ProjectDTO> getProjects();
- List<ProjectDTO> getUserProjects(UserInfo userInfo);
+ List<ProjectDTO> getUserProjectsWithStatus(UserInfo userInfo, ProjectDTO.Status status);
void create(ProjectDTO projectDTO);
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 dd89e5d..484438d 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
@@ -15,8 +15,7 @@ import java.util.List;
import java.util.Optional;
import java.util.Set;
-import static com.mongodb.client.model.Filters.eq;
-import static com.mongodb.client.model.Filters.in;
+import static com.mongodb.client.model.Filters.*;
public class ProjectDAOImpl extends BaseDAO implements ProjectDAO {
@@ -39,9 +38,9 @@ public class ProjectDAOImpl extends BaseDAO implements ProjectDAO {
}
@Override
- public List<ProjectDTO> getUserProjects(UserInfo userInfo) {
- return find(PROJECTS_COLLECTION, in(GROUPS, Sets.union(userGroupDao.getUserGroups(userInfo.getName()),
- userInfo.getRoles())), ProjectDTO.class);
+ public List<ProjectDTO> getUserProjectsWithStatus(UserInfo userInfo, ProjectDTO.Status status) {
+ return find(PROJECTS_COLLECTION, and(in(GROUPS, Sets.union(userGroupDao.getUserGroups(userInfo.getName()),
+ userInfo.getRoles())), eq(STATUS_FIELD, status.toString())), ProjectDTO.class);
}
@Override
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 8490bd3..2305774 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
@@ -1,5 +1,6 @@
package com.epam.dlab.backendapi.domain;
+import com.epam.dlab.dto.UserInstanceStatus;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import lombok.Data;
@@ -27,7 +28,14 @@ public class ProjectDTO {
public enum Status {
CREATING,
- CREATED,
- FAILED
+ ACTIVE,
+ FAILED, TERMINATED, TERMINATING;
+
+ public static Status from(UserInstanceStatus userInstanceStatus) {
+ if (userInstanceStatus == UserInstanceStatus.RUNNING) {
+ return ACTIVE;
+ }
+ return Status.valueOf(userInstanceStatus.name());
+ }
}
}
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 e8414a4..3a2b3ff 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
@@ -107,9 +107,7 @@ public class ProjectResource {
@Path("/me")
@GET
@Produces(MediaType.APPLICATION_JSON)
- public Response getUserProjects(@Parameter(hidden = true) @Auth UserInfo userInfo,
- @Parameter(description = "Project name")
- @PathParam("name") String name) {
+ public Response getUserProjects(@Parameter(hidden = true) @Auth UserInfo userInfo) {
return Response
.ok(projectService.getUserProjects(userInfo))
.build();
@@ -144,7 +142,7 @@ public class ProjectResource {
@Parameter(hidden = true) @Auth UserInfo userInfo,
@Parameter(description = "Project name")
@PathParam("name") String name) {
- projectService.remove(name);
+ projectService.terminate(userInfo, name);
return Response.ok().build();
}
diff --git a/services/self-service/src/main/java/com/epam/dlab/backendapi/resources/callback/ProjectCallback.java b/services/self-service/src/main/java/com/epam/dlab/backendapi/resources/callback/ProjectCallback.java
index 9807119..a1b0039 100644
--- a/services/self-service/src/main/java/com/epam/dlab/backendapi/resources/callback/ProjectCallback.java
+++ b/services/self-service/src/main/java/com/epam/dlab/backendapi/resources/callback/ProjectCallback.java
@@ -5,7 +5,7 @@ import com.epam.dlab.backendapi.dao.ProjectDAO;
import com.epam.dlab.backendapi.domain.ProjectDTO;
import com.epam.dlab.backendapi.domain.RequestId;
import com.epam.dlab.dto.UserInstanceStatus;
-import com.epam.dlab.dto.base.project.CreateProjectResult;
+import com.epam.dlab.dto.base.project.ProjectResult;
import com.google.inject.Inject;
import io.dropwizard.auth.Auth;
import lombok.extern.slf4j.Slf4j;
@@ -13,7 +13,6 @@ import lombok.extern.slf4j.Slf4j;
import javax.ws.rs.Consumes;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
-import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
@@ -33,13 +32,14 @@ public class ProjectCallback {
@POST
- public Response updateProjectStatus(@Auth UserInfo userInfo, CreateProjectResult projectResult) {
+ public Response updateProjectStatus(@Auth UserInfo userInfo, ProjectResult projectResult) {
requestId.checkAndRemove(projectResult.getRequestId());
- if (UserInstanceStatus.of(projectResult.getStatus()) == UserInstanceStatus.FAILED) {
- projectDAO.updateStatus(projectResult.getProjectName(), ProjectDTO.Status.FAILED);
+ final String projectName = projectResult.getProjectName();
+ final UserInstanceStatus status = UserInstanceStatus.of(projectResult.getStatus());
+ if (UserInstanceStatus.CREATED == status) {
+ projectDAO.updateEdgeInfoAndStatus(projectName, projectResult.getEdgeInfo(), ProjectDTO.Status.ACTIVE);
} else {
- projectDAO.updateEdgeInfoAndStatus(projectResult.getProjectName(), projectResult.getEdgeInfo(),
- ProjectDTO.Status.CREATED);
+ projectDAO.updateStatus(projectName, ProjectDTO.Status.from(status));
}
return Response.ok().build();
}
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 3245144..4c15d59 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
@@ -7,13 +7,14 @@ import java.util.List;
public interface ProjectService {
List<ProjectDTO> getProjects();
+
List<ProjectDTO> getUserProjects(UserInfo userInfo);
void create(UserInfo userInfo, ProjectDTO projectDTO);
ProjectDTO get(String name);
- void remove(String name);
+ void terminate(UserInfo userInfo, String name);
void update(ProjectDTO projectDTO);
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 637bdd3..8970939 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
@@ -8,7 +8,8 @@ import com.epam.dlab.backendapi.domain.RequestId;
import com.epam.dlab.backendapi.service.EnvironmentService;
import com.epam.dlab.backendapi.service.ProjectService;
import com.epam.dlab.constants.ServiceConsts;
-import com.epam.dlab.dto.ProjectCreateDTO;
+import com.epam.dlab.dto.project.ProjectCreateDTO;
+import com.epam.dlab.dto.project.ProjectTerminateDTO;
import com.epam.dlab.exceptions.ResourceConflictException;
import com.epam.dlab.exceptions.ResourceNotFoundException;
import com.epam.dlab.rest.client.RESTService;
@@ -26,7 +27,8 @@ import static java.util.stream.Stream.concat;
@Slf4j
public class ProjectServiceImpl implements ProjectService {
- private static final String CREATE_PRJ_API = "infrastructure/project";
+ private static final String CREATE_PRJ_API = "infrastructure/project/create";
+ private static final String TERMINATE_PRJ_API = "infrastructure/project/terminate";
private final ProjectDAO projectDAO;
private final EnvironmentService environmentService;
private final UserGroupDao userGroupDao;
@@ -52,7 +54,7 @@ public class ProjectServiceImpl implements ProjectService {
@Override
public List<ProjectDTO> getUserProjects(UserInfo userInfo) {
- return projectDAO.getUserProjects(userInfo);
+ return projectDAO.getUserProjectsWithStatus(userInfo, ProjectDTO.Status.ACTIVE);
}
@Override
@@ -72,9 +74,10 @@ public class ProjectServiceImpl implements ProjectService {
}
@Override
- public void remove(String name) {
+ public void terminate(UserInfo userInfo, String name) {
+ terminateProjectOnCloud(userInfo, name);
environmentService.terminateProjectEnvironment(name);
- projectDAO.remove(name);
+ projectDAO.updateStatus(name, ProjectDTO.Status.TERMINATING);
}
@Override
@@ -112,6 +115,18 @@ public class ProjectServiceImpl implements ProjectService {
}
}
+
+ private void terminateProjectOnCloud(UserInfo user, String projectName) {
+ try {
+ String uuid = provisioningService.post(TERMINATE_PRJ_API, user.getAccessToken(),
+ new ProjectTerminateDTO(projectName), String.class);
+ requestId.put(user.getName(), uuid);
+ } catch (Exception e) {
+ log.error("Can not terminate project due to: {}", e.getMessage());
+ projectDAO.updateStatus(projectName, ProjectDTO.Status.FAILED);
+ }
+ }
+
private Supplier<ResourceNotFoundException> projectNotFound() {
return () -> new ResourceNotFoundException("Project with passed name not found");
}
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@dlab.apache.org
For additional commands, e-mail: commits-help@dlab.apache.org