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/22 13:00:31 UTC
[incubator-dlab] branch develop updated: DLAB-926 update instance
statuses where project is terminated
This is an automated email from the ASF dual-hosted git repository.
bhliva pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/incubator-dlab.git
The following commit(s) were added to refs/heads/develop by this push:
new ca8afeb DLAB-926 update instance statuses where project is terminated
ca8afeb is described below
commit ca8afeb83792d02a45633c79c70161ed0f292f08
Author: bhliva <bo...@epam.com>
AuthorDate: Mon Jul 22 16:00:07 2019 +0300
DLAB-926 update instance statuses where project is terminated
---
.../java/com/epam/dlab/backendapi/dao/ExploratoryDAO.java | 2 +-
.../java/com/epam/dlab/backendapi/dao/ProjectDAOImpl.java | 7 +++----
.../dlab/backendapi/resources/callback/ProjectCallback.java | 12 +++++++++++-
.../com/epam/dlab/backendapi/service/EnvironmentService.java | 2 +-
.../com/epam/dlab/backendapi/service/ExploratoryService.java | 1 +
.../dlab/backendapi/service/impl/EnvironmentServiceImpl.java | 9 ---------
.../dlab/backendapi/service/impl/ExploratoryServiceImpl.java | 8 +++++++-
.../dlab/backendapi/service/impl/ProjectServiceImpl.java | 11 ++++++-----
8 files changed, 30 insertions(+), 22 deletions(-)
diff --git a/services/self-service/src/main/java/com/epam/dlab/backendapi/dao/ExploratoryDAO.java b/services/self-service/src/main/java/com/epam/dlab/backendapi/dao/ExploratoryDAO.java
index 499ca20..bda1d6a 100644
--- a/services/self-service/src/main/java/com/epam/dlab/backendapi/dao/ExploratoryDAO.java
+++ b/services/self-service/src/main/java/com/epam/dlab/backendapi/dao/ExploratoryDAO.java
@@ -209,7 +209,7 @@ public class ExploratoryDAO extends BaseDAO {
final List<String> statusList = statusList(statuses);
return getUserInstances(
and(
- eq(USER, project),
+ eq(PROJECT, project),
not(in(STATUS, statusList))
),
false);
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 013e38c..dccc7df 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
@@ -12,9 +12,7 @@ import com.mongodb.client.result.UpdateResult;
import org.bson.Document;
import org.bson.conversions.Bson;
-import java.util.List;
-import java.util.Optional;
-import java.util.Set;
+import java.util.*;
import static com.mongodb.client.model.Filters.*;
@@ -102,7 +100,8 @@ public class ProjectDAOImpl extends BaseDAO implements ProjectDAO {
@Override
public boolean isAnyProjectAssigned(Set<String> groups) {
- return !Iterables.isEmpty(find(PROJECTS_COLLECTION, in(GROUPS, groups)));
+ return !Iterables.isEmpty(find(PROJECTS_COLLECTION, in(GROUPS,
+ Sets.union(groups, Collections.singleton("$anyuser")))));
}
private Bson projectCondition(String name) {
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 78489ab..971c0cc 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
@@ -4,6 +4,7 @@ import com.epam.dlab.auth.UserInfo;
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.backendapi.service.ExploratoryService;
import com.epam.dlab.dto.UserInstanceStatus;
import com.epam.dlab.dto.base.project.ProjectResult;
import com.google.inject.Inject;
@@ -23,11 +24,13 @@ import java.util.Objects;
public class ProjectCallback {
private final ProjectDAO projectDAO;
+ private final ExploratoryService exploratoryService;
private final RequestId requestId;
@Inject
- public ProjectCallback(ProjectDAO projectDAO, RequestId requestId) {
+ public ProjectCallback(ProjectDAO projectDAO, ExploratoryService exploratoryService, RequestId requestId) {
this.projectDAO = projectDAO;
+ this.exploratoryService = exploratoryService;
this.requestId = requestId;
}
@@ -40,8 +43,15 @@ public class ProjectCallback {
if (UserInstanceStatus.RUNNING == status && Objects.nonNull(projectResult.getEdgeInfo())) {
projectDAO.updateEdgeInfoAndStatus(projectName, projectResult.getEdgeInfo(), ProjectDTO.Status.ACTIVE);
} else {
+ updateExploratoriesStatusIfNeeded(status, projectResult.getProjectName());
projectDAO.updateStatus(projectName, ProjectDTO.Status.from(status));
}
return Response.ok().build();
}
+
+ private void updateExploratoriesStatusIfNeeded(UserInstanceStatus status, String projectName) {
+ if (UserInstanceStatus.TERMINATED == status) {
+ exploratoryService.updateProjectExploratoryStatuses(projectName, UserInstanceStatus.TERMINATED);
+ }
+ }
}
diff --git a/services/self-service/src/main/java/com/epam/dlab/backendapi/service/EnvironmentService.java b/services/self-service/src/main/java/com/epam/dlab/backendapi/service/EnvironmentService.java
index 230e50e..e36d936 100644
--- a/services/self-service/src/main/java/com/epam/dlab/backendapi/service/EnvironmentService.java
+++ b/services/self-service/src/main/java/com/epam/dlab/backendapi/service/EnvironmentService.java
@@ -36,6 +36,7 @@ public interface EnvironmentService {
void stopAll();
void stopEnvironment(String user);
+
void stopProjectEnvironment(String project);
void stopEdge(String user);
@@ -47,7 +48,6 @@ public interface EnvironmentService {
void terminateAll();
void terminateEnvironment(String user);
- void terminateProjectEnvironment(String project);
void terminateExploratory(String user, String exploratoryName);
diff --git a/services/self-service/src/main/java/com/epam/dlab/backendapi/service/ExploratoryService.java b/services/self-service/src/main/java/com/epam/dlab/backendapi/service/ExploratoryService.java
index e3729aa..2dec798 100644
--- a/services/self-service/src/main/java/com/epam/dlab/backendapi/service/ExploratoryService.java
+++ b/services/self-service/src/main/java/com/epam/dlab/backendapi/service/ExploratoryService.java
@@ -40,6 +40,7 @@ public interface ExploratoryService {
String create(UserInfo userInfo, Exploratory exploratory, String project);
void updateExploratoryStatuses(String user, UserInstanceStatus status);
+ void updateProjectExploratoryStatuses(String project, UserInstanceStatus status);
void updateExploratoriesReuploadKeyFlag(String user, boolean reuploadKeyRequired,
UserInstanceStatus... exploratoryStatuses);
diff --git a/services/self-service/src/main/java/com/epam/dlab/backendapi/service/impl/EnvironmentServiceImpl.java b/services/self-service/src/main/java/com/epam/dlab/backendapi/service/impl/EnvironmentServiceImpl.java
index af853e0..0678ae5 100644
--- a/services/self-service/src/main/java/com/epam/dlab/backendapi/service/impl/EnvironmentServiceImpl.java
+++ b/services/self-service/src/main/java/com/epam/dlab/backendapi/service/impl/EnvironmentServiceImpl.java
@@ -162,15 +162,6 @@ public class EnvironmentServiceImpl implements EnvironmentService {
}
@Override
- public void terminateProjectEnvironment(String project) {
- log.debug("Terminating environment for project {}", project);
- checkProjectResourceConditions(project, "terminate");
- exploratoryDAO.fetchProjectExploratoriesWhereStatusNotIn(project, UserInstanceStatus.TERMINATED,
- UserInstanceStatus.FAILED, UserInstanceStatus.TERMINATING)
- .forEach(this::terminateNotebook);
- }
-
- @Override
public void terminateExploratory(String user, String exploratoryName) {
terminateNotebook(new UserInstanceDTO().withUser(user).withExploratoryName(exploratoryName));
}
diff --git a/services/self-service/src/main/java/com/epam/dlab/backendapi/service/impl/ExploratoryServiceImpl.java b/services/self-service/src/main/java/com/epam/dlab/backendapi/service/impl/ExploratoryServiceImpl.java
index 9ce4a48..572fc88 100644
--- a/services/self-service/src/main/java/com/epam/dlab/backendapi/service/impl/ExploratoryServiceImpl.java
+++ b/services/self-service/src/main/java/com/epam/dlab/backendapi/service/impl/ExploratoryServiceImpl.java
@@ -103,7 +103,7 @@ public class ExploratoryServiceImpl implements ExploratoryService {
isAdded = true;
final ExploratoryGitCredsDTO gitCreds = gitCredsDAO.findGitCreds(userInfo.getName());
log.debug("Created exploratory environment {} for user {}", exploratory.getName(), userInfo.getName());
- final String uuid = provisioningService.post(EXPLORATORY_CREATE, userInfo.getAccessToken(),
+ final String uuid = provisioningService.post(EXPLORATORY_CREATE, userInfo.getAccessToken(),
requestBuilder.newExploratoryCreate(exploratory, userInfo, gitCreds, userInstanceDTO.getTags()),
String.class);
requestId.put(userInfo.getName(), uuid);
@@ -125,6 +125,12 @@ public class ExploratoryServiceImpl implements ExploratoryService {
.forEach(ui -> updateExploratoryStatus(ui.getExploratoryName(), status, user));
}
+ @Override
+ public void updateProjectExploratoryStatuses(String project, UserInstanceStatus status) {
+ exploratoryDAO.fetchProjectExploratoriesWhereStatusNotIn(project, TERMINATED, FAILED)
+ .forEach(ui -> updateExploratoryStatus(ui.getExploratoryName(), status, ui.getUser()));
+ }
+
/**
* Updates parameter 'reuploadKeyRequired' for corresponding user's exploratories with allowable statuses.
*
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 c246582..22e2f7e 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
@@ -6,9 +6,10 @@ import com.epam.dlab.backendapi.dao.UserGroupDao;
import com.epam.dlab.backendapi.domain.ProjectDTO;
import com.epam.dlab.backendapi.domain.RequestId;
import com.epam.dlab.backendapi.domain.UpdateProjectDTO;
-import com.epam.dlab.backendapi.service.EnvironmentService;
+import com.epam.dlab.backendapi.service.ExploratoryService;
import com.epam.dlab.backendapi.service.ProjectService;
import com.epam.dlab.constants.ServiceConsts;
+import com.epam.dlab.dto.UserInstanceStatus;
import com.epam.dlab.dto.project.ProjectActionDTO;
import com.epam.dlab.dto.project.ProjectCreateDTO;
import com.epam.dlab.exceptions.ResourceConflictException;
@@ -34,18 +35,18 @@ public class ProjectServiceImpl implements ProjectService {
private static final String STOP_PRJ_API = "infrastructure/project/stop";
private static final String ANY_USER_ROLE = "$anyuser";
private final ProjectDAO projectDAO;
- private final EnvironmentService environmentService;
+ private final ExploratoryService exploratoryService;
private final UserGroupDao userGroupDao;
private final RESTService provisioningService;
private final RequestId requestId;
@Inject
- public ProjectServiceImpl(ProjectDAO projectDAO, EnvironmentService environmentService,
+ public ProjectServiceImpl(ProjectDAO projectDAO, ExploratoryService exploratoryService,
UserGroupDao userGroupDao,
@Named(ServiceConsts.PROVISIONING_SERVICE_NAME) RESTService provisioningService,
RequestId requestId) {
this.projectDAO = projectDAO;
- this.environmentService = environmentService;
+ this.exploratoryService = exploratoryService;
this.userGroupDao = userGroupDao;
this.provisioningService = provisioningService;
this.requestId = requestId;
@@ -86,7 +87,7 @@ public class ProjectServiceImpl implements ProjectService {
@Override
public void terminate(UserInfo userInfo, String name) {
projectActionOnCloud(userInfo, name, TERMINATE_PRJ_API);
- environmentService.terminateProjectEnvironment(name);
+ exploratoryService.updateProjectExploratoryStatuses(name, UserInstanceStatus.TERMINATING);
projectDAO.updateStatus(name, ProjectDTO.Status.DELETING);
}
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@dlab.apache.org
For additional commands, e-mail: commits-help@dlab.apache.org