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