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 3916099d7d9118afbf611cc0d420d225a880dc0c
Author: Denys Yankiv <[email protected]>
AuthorDate: Wed May 18 14:18:24 2022 +0300

    add support to create user image as admin
---
 .../backendapi/resources/EnvironmentResource.java  | 15 +++++++++++++
 .../dto/ExploratoryImageCreateFormAdminDTO.java    | 24 ++++++++++++++++++++
 .../backendapi/service/EnvironmentService.java     |  2 ++
 .../service/impl/EnvironmentServiceImpl.java       | 26 ++++++++++++++--------
 4 files changed, 58 insertions(+), 9 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 9b984bb40..84da43971 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.ExploratoryImageCreateFormAdminDTO;
 import com.epam.datalab.backendapi.service.EnvironmentService;
 import com.google.inject.Inject;
 import io.dropwizard.auth.Auth;
@@ -27,6 +28,8 @@ 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;
@@ -35,6 +38,7 @@ import javax.ws.rs.PathParam;
 import javax.ws.rs.Produces;
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.Response;
+import javax.ws.rs.core.UriInfo;
 
 @Path("environment")
 @Slf4j
@@ -119,4 +123,15 @@ public class EnvironmentResource {
         environmentService.terminateComputational(userInfo, user, projectName, 
exploratoryName, computationalName);
         return Response.ok().build();
     }
+
+    @POST
+    @Consumes(MediaType.APPLICATION_JSON)
+    @Produces(MediaType.APPLICATION_JSON)
+    @Path("createImage/{projectName}/{exploratoryName}")
+    public Response createImage(@Auth UserInfo userInfo,
+                                @Valid @NotNull 
ExploratoryImageCreateFormAdminDTO form) {
+        log.info("Admin {} is creating an image of exploratory {} of user {}", 
userInfo.getName(), form.getNotebookName(), form.getUser());
+        environmentService.createImage(userInfo, form.getUser(), 
form.getProjectName(), form.getNotebookName(), form.getName(), 
form.getDescription());
+        return Response.ok().build();
+    }
 }
diff --git 
a/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/dto/ExploratoryImageCreateFormAdminDTO.java
 
b/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/dto/ExploratoryImageCreateFormAdminDTO.java
new file mode 100644
index 000000000..96104fa41
--- /dev/null
+++ 
b/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/dto/ExploratoryImageCreateFormAdminDTO.java
@@ -0,0 +1,24 @@
+package com.epam.datalab.backendapi.resources.dto;
+
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+import lombok.ToString;
+import org.hibernate.validator.constraints.NotBlank;
+
+@Data
+@ToString
+public class ExploratoryImageCreateFormAdminDTO {
+    @NotBlank
+    private String user;
+    @NotBlank
+    @JsonProperty("imageName")
+    private String name;
+    @NotBlank
+    @JsonProperty("exploratory_name")
+    private String notebookName;
+    @NotBlank
+    @JsonProperty("project_name")
+    private String projectName;
+    private final String description;
+}
\ No newline at end of file
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..e7506ca55 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,19 +66,21 @@ 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) {
-        this.envDAO = envDAO;
-        this.settingsDAO = settingsDAO;
-        this.exploratoryDAO = exploratoryDAO;
-        this.exploratoryService = exploratoryService;
-        this.computationalService = computationalService;
-        this.securityService = securityService;
-        this.projectService = projectService;
-    }
+        SecurityService securityService, ProjectService projectService, 
ImageExploratoryService imageExploratoryService) {
+            this.envDAO = envDAO;
+            this.settingsDAO = settingsDAO;
+            this.exploratoryDAO = exploratoryDAO;
+            this.exploratoryService = exploratoryService;
+            this.computationalService = computationalService;
+            this.securityService = securityService;
+            this.projectService = projectService;
+            this.imageExploratoryService = imageExploratoryService;
+        }
 
     @Override
     public List<UserDTO> getUsers() {
@@ -107,6 +109,12 @@ public class EnvironmentServiceImpl implements 
EnvironmentService {
                 .collect(Collectors.toList());
     }
 
+    @ProjectAdmin
+    @Override
+    public void createImage(@User UserInfo userInfo, String user, @Project 
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