You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@datalab.apache.org by dy...@apache.org on 2022/02/28 11:03:29 UTC
[incubator-datalab] branch DATALAB-2697 updated: add support for starting user instances as admin in selfservice
This is an automated email from the ASF dual-hosted git repository.
dyankiv pushed a commit to branch DATALAB-2697
in repository https://gitbox.apache.org/repos/asf/incubator-datalab.git
The following commit(s) were added to refs/heads/DATALAB-2697 by this push:
new 2b39b24 add support for starting user instances as admin in selfservice
new c088140 Merge pull request #1441 from denysyankiv/DATALAB-2649
2b39b24 is described below
commit 2b39b2408bcbb18482fb71637df9fade5f7fdbb7
Author: Denys Yankiv <de...@gmail.com>
AuthorDate: Mon Feb 28 13:00:41 2022 +0200
add support for starting user instances as admin in selfservice
---
.../datalab/backendapi/resources/EnvironmentResource.java | 12 ++++++++++++
.../datalab/backendapi/service/EnvironmentService.java | 2 ++
.../datalab/backendapi/service/ExploratoryService.java | 3 +++
.../backendapi/service/impl/EnvironmentServiceImpl.java | 14 +++++++++++---
.../backendapi/service/impl/ExploratoryServiceImpl.java | 7 +++++++
5 files changed, 35 insertions(+), 3 deletions(-)
diff --git a/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/EnvironmentResource.java b/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/EnvironmentResource.java
index b4b1418..9b984bb 100644
--- a/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/EnvironmentResource.java
+++ b/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/EnvironmentResource.java
@@ -59,6 +59,18 @@ public class EnvironmentResource {
@POST
@Consumes(MediaType.TEXT_PLAIN)
@Produces(MediaType.APPLICATION_JSON)
+ @Path("start/{projectName}/{exploratoryName}")
+ public Response startNotebook(@Auth UserInfo userInfo, @NotEmpty String user,
+ @PathParam("projectName") String projectName,
+ @PathParam("exploratoryName") String exploratoryName) {
+ log.info("Admin {} is starting notebook {} of user {}", userInfo.getName(), exploratoryName, user);
+ environmentService.startExploratory(userInfo, user, projectName, exploratoryName);
+ return Response.ok().build();
+ }
+
+ @POST
+ @Consumes(MediaType.TEXT_PLAIN)
+ @Produces(MediaType.APPLICATION_JSON)
@Path("stop/{projectName}/{exploratoryName}")
public Response stopNotebook(@Auth UserInfo userInfo, @NotEmpty String user,
@PathParam("projectName") String projectName,
diff --git a/services/self-service/src/main/java/com/epam/datalab/backendapi/service/EnvironmentService.java b/services/self-service/src/main/java/com/epam/datalab/backendapi/service/EnvironmentService.java
index ad9fa3c..a4bd017 100644
--- a/services/self-service/src/main/java/com/epam/datalab/backendapi/service/EnvironmentService.java
+++ b/services/self-service/src/main/java/com/epam/datalab/backendapi/service/EnvironmentService.java
@@ -31,6 +31,8 @@ public interface EnvironmentService {
List<UserResourceInfo> getAllEnv(UserInfo user);
+ void startExploratory(UserInfo userInfo, String user, String project, String exploratoryName);
+
void stopAll();
void stopEnvironmentWithServiceAccount(String user);
diff --git a/services/self-service/src/main/java/com/epam/datalab/backendapi/service/ExploratoryService.java b/services/self-service/src/main/java/com/epam/datalab/backendapi/service/ExploratoryService.java
index 3711c52..c54723f 100644
--- a/services/self-service/src/main/java/com/epam/datalab/backendapi/service/ExploratoryService.java
+++ b/services/self-service/src/main/java/com/epam/datalab/backendapi/service/ExploratoryService.java
@@ -21,6 +21,7 @@ package com.epam.datalab.backendapi.service;
import com.epam.datalab.auth.UserInfo;
+import com.epam.datalab.backendapi.annotation.Info;
import com.epam.datalab.backendapi.domain.ProjectDTO;
import com.epam.datalab.backendapi.resources.dto.ExploratoryCreatePopUp;
import com.epam.datalab.dto.UserInstanceDTO;
@@ -36,6 +37,8 @@ public interface ExploratoryService {
String start(UserInfo userInfo, String exploratoryName, String project, String auditInfo);
+ String startAsAdmin(UserInfo userInfo, String resourceCreator, String project, String exploratoryName, @Info String auditInfo);
+
String stop(UserInfo userInfo, String resourceCreator, String project, String exploratoryName, String auditInfo);
String terminate(UserInfo userInfo, String resourceCreator, String project, String exploratoryName, String auditInfo);
diff --git a/services/self-service/src/main/java/com/epam/datalab/backendapi/service/impl/EnvironmentServiceImpl.java b/services/self-service/src/main/java/com/epam/datalab/backendapi/service/impl/EnvironmentServiceImpl.java
index 2f23861..d364fc3 100644
--- a/services/self-service/src/main/java/com/epam/datalab/backendapi/service/impl/EnvironmentServiceImpl.java
+++ b/services/self-service/src/main/java/com/epam/datalab/backendapi/service/impl/EnvironmentServiceImpl.java
@@ -20,9 +20,7 @@
package com.epam.datalab.backendapi.service.impl;
import com.epam.datalab.auth.UserInfo;
-import com.epam.datalab.backendapi.annotation.Project;
-import com.epam.datalab.backendapi.annotation.ProjectAdmin;
-import com.epam.datalab.backendapi.annotation.User;
+import com.epam.datalab.backendapi.annotation.*;
import com.epam.datalab.backendapi.dao.EnvDAO;
import com.epam.datalab.backendapi.dao.ExploratoryDAO;
import com.epam.datalab.backendapi.dao.UserSettingsDAO;
@@ -45,10 +43,13 @@ import java.util.*;
import java.util.stream.Collectors;
import java.util.stream.Stream;
+import static com.epam.datalab.backendapi.domain.AuditActionEnum.START;
+import static com.epam.datalab.backendapi.domain.AuditResourceTypeEnum.NOTEBOOK;
import static com.epam.datalab.backendapi.resources.dto.UserDTO.Status.ACTIVE;
import static com.epam.datalab.backendapi.resources.dto.UserDTO.Status.NOT_ACTIVE;
import static com.epam.datalab.dto.UserInstanceStatus.*;
import static com.epam.datalab.rest.contracts.ComputationalAPI.AUDIT_MESSAGE;
+import static com.epam.datalab.rest.contracts.ExploratoryAPI.EXPLORATORY_START;
@Singleton
@Slf4j
@@ -106,6 +107,13 @@ public class EnvironmentServiceImpl implements EnvironmentService {
.collect(Collectors.toList());
}
+ @ProjectAdmin
+ @Override
+ public void startExploratory(@User UserInfo userInfo, String user, @Project String project, String exploratoryName) {
+ exploratoryService.startAsAdmin(userInfo, user, project, exploratoryName, null);
+ // exploratoryService.start(securityService.getServiceAccountInfo(user),exploratoryName,project,null);
+ }
+
@Override
public void stopAll() {
log.debug("Stopping environment for all users...");
diff --git a/services/self-service/src/main/java/com/epam/datalab/backendapi/service/impl/ExploratoryServiceImpl.java b/services/self-service/src/main/java/com/epam/datalab/backendapi/service/impl/ExploratoryServiceImpl.java
index 60d4c84..aac4e2a 100644
--- a/services/self-service/src/main/java/com/epam/datalab/backendapi/service/impl/ExploratoryServiceImpl.java
+++ b/services/self-service/src/main/java/com/epam/datalab/backendapi/service/impl/ExploratoryServiceImpl.java
@@ -98,6 +98,13 @@ public class ExploratoryServiceImpl implements ExploratoryService {
return action(userInfo, userInfo.getName(), project, exploratoryName, EXPLORATORY_START, STARTING);
}
+ @BudgetLimited
+ @Audit(action = START, type = NOTEBOOK)
+ @Override
+ public String startAsAdmin(@User UserInfo userInfo, String resourceCreator, @Project String project, @ResourceName String exploratoryName, @Info String auditInfo) {
+ return action(userInfo, resourceCreator, project, exploratoryName, EXPLORATORY_START, STARTING);
+ }
+
@Audit(action = STOP, type = NOTEBOOK)
@Override
public String stop(@User UserInfo userInfo, String resourceCreator, @Project String project, @ResourceName String exploratoryName, @Info String auditInfo) {
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@datalab.apache.org
For additional commands, e-mail: commits-help@datalab.apache.org