This is an automated email from the ASF dual-hosted git repository.

dyankiv pushed a commit to branch DATALAB-2785
in repository https://gitbox.apache.org/repos/asf/incubator-datalab.git

commit b12b8bf13793ad954fd67cc43deca73e2b90352e
Author: Denys Yankiv <[email protected]>
AuthorDate: Tue May 10 13:38:55 2022 +0300

    add support for admin to create user instance image
---
 .../backendapi/resources/EnvironmentResource.java       | 17 +++++++++++++++++
 .../datalab/backendapi/service/EnvironmentService.java  |  2 ++
 .../backendapi/service/impl/EnvironmentServiceImpl.java | 10 +++++++++-
 3 files changed, 28 insertions(+), 1 deletion(-)

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 9b984bb40..f3c1f433c 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
@@ -20,6 +20,7 @@
 package com.epam.datalab.backendapi.resources;
 
 import com.epam.datalab.auth.UserInfo;
+import com.epam.datalab.backendapi.resources.dto.ExploratoryImageCreateFormDTO;
 import com.epam.datalab.backendapi.service.EnvironmentService;
 import com.google.inject.Inject;
 import io.dropwizard.auth.Auth;
@@ -27,14 +28,18 @@ import lombok.extern.slf4j.Slf4j;
 import org.hibernate.validator.constraints.NotEmpty;
 
 import javax.annotation.security.RolesAllowed;
+import javax.validation.Valid;
+import javax.validation.constraints.NotNull;
 import javax.ws.rs.Consumes;
 import javax.ws.rs.GET;
 import javax.ws.rs.POST;
 import javax.ws.rs.Path;
 import javax.ws.rs.PathParam;
 import javax.ws.rs.Produces;
+import javax.ws.rs.core.Context;
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.Response;
+import javax.ws.rs.core.UriInfo;
 
 @Path("environment")
 @Slf4j
@@ -119,4 +124,16 @@ public class EnvironmentResource {
         environmentService.terminateComputational(userInfo, user, projectName, 
exploratoryName, computationalName);
         return Response.ok().build();
     }
+
+    @POST
+    @Consumes(MediaType.TEXT_PLAIN)
+    @Produces(MediaType.APPLICATION_JSON)
+    @Path("createImage")
+    public Response createImage(@Auth UserInfo userInfo, @NotEmpty String user,
+                                @Valid @NotNull ExploratoryImageCreateFormDTO 
formDTO,
+                                @Context UriInfo uriInfo) {
+        log.info("Admin {} is creating an image of exploratory {} of user {}", 
userInfo.getName(), formDTO.getNotebookName(), user);
+        environmentService.createImage(userInfo, user, 
formDTO.getProjectName(), formDTO.getNotebookName(), formDTO.getName(), 
formDTO.getDescription());
+        return Response.ok().build();
+    }
 }
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 a4bd017e1..750d16598 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 createImage(UserInfo userInfo, String user, String project, String 
exploratoryName, String imageName, String description);
+
     void startExploratory(UserInfo userInfo, String user, String project, 
String exploratoryName);
 
     void stopAll();
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 12867525b..7c9ebfc29 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
@@ -66,11 +66,12 @@ public class EnvironmentServiceImpl implements 
EnvironmentService {
     private final ComputationalService computationalService;
     private final SecurityService securityService;
     private final ProjectService projectService;
+    private final ImageExploratoryService imageExploratoryService;
 
     @Inject
     public EnvironmentServiceImpl(EnvDAO envDAO, UserSettingsDAO settingsDAO, 
ExploratoryDAO exploratoryDAO,
                                   ExploratoryService exploratoryService, 
ComputationalService computationalService,
-                                  SecurityService securityService, 
ProjectService projectService) {
+                                  SecurityService securityService, 
ProjectService projectService, ImageExploratoryService imageExploratoryService) 
{
         this.envDAO = envDAO;
         this.settingsDAO = settingsDAO;
         this.exploratoryDAO = exploratoryDAO;
@@ -78,6 +79,7 @@ public class EnvironmentServiceImpl implements 
EnvironmentService {
         this.computationalService = computationalService;
         this.securityService = securityService;
         this.projectService = projectService;
+        this.imageExploratoryService = imageExploratoryService;
     }
 
     @Override
@@ -107,6 +109,12 @@ public class EnvironmentServiceImpl implements 
EnvironmentService {
                 .collect(Collectors.toList());
     }
 
+    @ProjectAdmin
+    @Override
+    public void createImage(@User UserInfo userInfo, String user, String 
project, String exploratoryName, String imageName, String description) {
+        
imageExploratoryService.createImage(securityService.getUserInfoOffline(user), 
project,exploratoryName, imageName, description, null);
+    }
+
     @ProjectAdmin
     @Override
     public void startExploratory(@User UserInfo userInfo, String user, 
@Project String project, String exploratoryName) {


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to