You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@datalab.apache.org by yk...@apache.org on 2021/04/27 12:07:02 UTC

[incubator-datalab] branch DATALAB-2091 updated: [DATALAB-2352] - refactoring

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

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


The following commit(s) were added to refs/heads/DATALAB-2091 by this push:
     new e3ab5ad  [DATALAB-2352] - refactoring
e3ab5ad is described below

commit e3ab5adc8c60d014f07d8d43bd3d39f48753d62b
Author: KinashYurii <ur...@gmail.com>
AuthorDate: Tue Apr 27 15:06:40 2021 +0300

    [DATALAB-2352] - refactoring
---
 .../main/java/com/epam/datalab/dto/base/edge/GPU.java   |  4 ----
 .../com/epam/datalab/dto/imagemetadata/EdgeGPU.java     |  2 +-
 .../backendapi/core/commands/CommandParserMock.java     |  4 +---
 .../java/com/epam/datalab/backendapi/dao/GpuDAO.java    |  2 +-
 .../com/epam/datalab/backendapi/dao/GpuDAOImpl.java     |  6 +++---
 .../backendapi/resources/callback/ProjectCallback.java  | 17 +----------------
 .../service/impl/InfrastructureTemplateServiceImpl.java | 16 ++++++++--------
 7 files changed, 15 insertions(+), 36 deletions(-)

diff --git a/services/datalab-model/src/main/java/com/epam/datalab/dto/base/edge/GPU.java b/services/datalab-model/src/main/java/com/epam/datalab/dto/base/edge/GPU.java
index 66af4aa..a7f0669 100644
--- a/services/datalab-model/src/main/java/com/epam/datalab/dto/base/edge/GPU.java
+++ b/services/datalab-model/src/main/java/com/epam/datalab/dto/base/edge/GPU.java
@@ -19,7 +19,6 @@
 
 package com.epam.datalab.dto.base.edge;
 
-import com.fasterxml.jackson.annotation.JsonProperty;
 import lombok.AllArgsConstructor;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
@@ -31,8 +30,5 @@ import lombok.NoArgsConstructor;
 @EqualsAndHashCode(callSuper = false)
 public class GPU {
 
-    @JsonProperty("size")
-    private String size;
-    @JsonProperty("gpu_type")
     private String gpuType;
 }
diff --git a/services/datalab-model/src/main/java/com/epam/datalab/dto/imagemetadata/EdgeGPU.java b/services/datalab-model/src/main/java/com/epam/datalab/dto/imagemetadata/EdgeGPU.java
index 6c67dd0..24ddfcd 100644
--- a/services/datalab-model/src/main/java/com/epam/datalab/dto/imagemetadata/EdgeGPU.java
+++ b/services/datalab-model/src/main/java/com/epam/datalab/dto/imagemetadata/EdgeGPU.java
@@ -33,6 +33,6 @@ import java.util.List;
 @EqualsAndHashCode(callSuper = false)
 public class EdgeGPU {
 
-    private String providerName;
+    private String projectName;
     private List<GPU> gpus;
 }
\ No newline at end of file
diff --git a/services/provisioning-service/src/main/java/com/epam/datalab/backendapi/core/commands/CommandParserMock.java b/services/provisioning-service/src/main/java/com/epam/datalab/backendapi/core/commands/CommandParserMock.java
index e61f06b..90659d9 100644
--- a/services/provisioning-service/src/main/java/com/epam/datalab/backendapi/core/commands/CommandParserMock.java
+++ b/services/provisioning-service/src/main/java/com/epam/datalab/backendapi/core/commands/CommandParserMock.java
@@ -214,10 +214,8 @@ public class CommandParserMock {
      */
     private Pair<String, String> getPair(String argName, String value, String separator) {
         String[] array = value.split(separator);
-        if (array.length == 2) {
+        if (array.length != 2) {
             return new ImmutablePair<>(array[0], array[1]);
-        } else if (array.length == 3) {
-            return new ImmutablePair<>(array[1], array[2]);
         }
         throw new DatalabException("Invalid value for \"" + argName + "\": " + value);
     }
diff --git a/services/self-service/src/main/java/com/epam/datalab/backendapi/dao/GpuDAO.java b/services/self-service/src/main/java/com/epam/datalab/backendapi/dao/GpuDAO.java
index bffba51..867deed 100644
--- a/services/self-service/src/main/java/com/epam/datalab/backendapi/dao/GpuDAO.java
+++ b/services/self-service/src/main/java/com/epam/datalab/backendapi/dao/GpuDAO.java
@@ -25,7 +25,7 @@ import java.util.Optional;
 
 public interface GpuDAO {
 
-    Optional<EdgeGPU> getGPUByProvider(String provider);
+    Optional<EdgeGPU> getGPUByProjectName(String projectName);
 
     void create(EdgeGPU gpu);
 
diff --git a/services/self-service/src/main/java/com/epam/datalab/backendapi/dao/GpuDAOImpl.java b/services/self-service/src/main/java/com/epam/datalab/backendapi/dao/GpuDAOImpl.java
index 37fcb12..bfbf0ca 100644
--- a/services/self-service/src/main/java/com/epam/datalab/backendapi/dao/GpuDAOImpl.java
+++ b/services/self-service/src/main/java/com/epam/datalab/backendapi/dao/GpuDAOImpl.java
@@ -29,10 +29,10 @@ import static com.mongodb.client.model.Filters.eq;
 public class GpuDAOImpl extends BaseDAO implements GpuDAO {
 
     private static final String GPU_COLLECTION = "gpuTypes";
-    private static final String ENDPOINT_EDGE_ID_FIELD = "providerName";
+    private static final String PROJECT_NAME_FIELD = "projectName";
 
     @Override
-    public Optional<EdgeGPU> getGPUByProvider(String edgeId) {
+    public Optional<EdgeGPU> getGPUByProjectName(String edgeId) {
         return findOne(GPU_COLLECTION, getByIdCondition(edgeId), EdgeGPU.class);
     }
 
@@ -47,6 +47,6 @@ public class GpuDAOImpl extends BaseDAO implements GpuDAO {
     }
 
     private Bson getByIdCondition(String edgeId) {
-        return eq(ENDPOINT_EDGE_ID_FIELD, edgeId);
+        return eq(PROJECT_NAME_FIELD, edgeId);
     }
 }
diff --git a/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/callback/ProjectCallback.java b/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/callback/ProjectCallback.java
index d3097ca..4b276ed 100644
--- a/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/callback/ProjectCallback.java
+++ b/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/callback/ProjectCallback.java
@@ -22,14 +22,12 @@ package com.epam.datalab.backendapi.resources.callback;
 import com.epam.datalab.backendapi.dao.EndpointDAO;
 import com.epam.datalab.backendapi.dao.GpuDAO;
 import com.epam.datalab.backendapi.dao.ProjectDAO;
-import com.epam.datalab.backendapi.domain.EndpointDTO;
 import com.epam.datalab.backendapi.domain.RequestId;
 import com.epam.datalab.backendapi.service.ExploratoryService;
 import com.epam.datalab.dto.UserInstanceStatus;
 import com.epam.datalab.dto.base.edge.GPU;
 import com.epam.datalab.dto.base.project.ProjectResult;
 import com.epam.datalab.dto.imagemetadata.EdgeGPU;
-import com.epam.datalab.exceptions.ResourceNotFoundException;
 import com.google.inject.Inject;
 import lombok.extern.slf4j.Slf4j;
 
@@ -47,7 +45,6 @@ import java.util.Objects;
 public class ProjectCallback {
 
     private final ProjectDAO projectDAO;
-    private final EndpointDAO endpointDAO;
     private final ExploratoryService exploratoryService;
     private final RequestId requestId;
     private final GpuDAO gpuDAO;
@@ -56,7 +53,6 @@ public class ProjectCallback {
     public ProjectCallback(ProjectDAO projectDAO, EndpointDAO endpointDAO, ExploratoryService exploratoryService, RequestId requestId,
                            GpuDAO gpuDAO) {
         this.projectDAO = projectDAO;
-        this.endpointDAO = endpointDAO;
         this.exploratoryService = exploratoryService;
         this.requestId = requestId;
         this.gpuDAO = gpuDAO;
@@ -67,10 +63,9 @@ public class ProjectCallback {
     public Response updateProjectStatus(ProjectResult projectResult) {
         requestId.checkAndRemove(projectResult.getRequestId());
         final String projectName = projectResult.getProjectName();
-        final String endpointName = projectResult.getEndpointName();
         final UserInstanceStatus status = UserInstanceStatus.of(projectResult.getStatus());
         List<GPU> gpuList = projectResult.getEdgeInfo().getGpuList();
-        addGpuForProvider(endpointName, gpuList);
+        gpuDAO.create(new EdgeGPU(projectName, gpuList));
         if (UserInstanceStatus.RUNNING == status && Objects.nonNull(projectResult.getEdgeInfo())) {
             projectDAO.updateEdgeInfo(projectName, projectResult.getEndpointName(), projectResult.getEdgeInfo());
         } else {
@@ -80,16 +75,6 @@ public class ProjectCallback {
         return Response.ok().build();
     }
 
-    private void addGpuForProvider(String endpointName, List<GPU> gpuList) {
-        try {
-            EndpointDTO endpointDTO = endpointDAO.get(endpointName)
-                    .orElseThrow(() -> new ResourceNotFoundException(String.format("Endpoint %s does not exist", endpointName)));
-            gpuDAO.create(new EdgeGPU(endpointDTO.getCloudProvider().getName(), gpuList));
-        } catch (ResourceNotFoundException ignored) {
-
-        }
-    }
-
     private void updateExploratoriesStatusIfNeeded(UserInstanceStatus status, String projectName, String endpoint) {
         if (UserInstanceStatus.TERMINATED == status) {
             exploratoryService.updateProjectExploratoryStatuses(projectName, endpoint, UserInstanceStatus.TERMINATED);
diff --git a/services/self-service/src/main/java/com/epam/datalab/backendapi/service/impl/InfrastructureTemplateServiceImpl.java b/services/self-service/src/main/java/com/epam/datalab/backendapi/service/impl/InfrastructureTemplateServiceImpl.java
index 6740dc9..cc659c5 100644
--- a/services/self-service/src/main/java/com/epam/datalab/backendapi/service/impl/InfrastructureTemplateServiceImpl.java
+++ b/services/self-service/src/main/java/com/epam/datalab/backendapi/service/impl/InfrastructureTemplateServiceImpl.java
@@ -100,7 +100,7 @@ public class InfrastructureTemplateServiceImpl implements InfrastructureTemplate
                     .filter(e -> exploratoryGpuIssuesAzureFilter(e, endpointDTO.getCloudProvider()) &&
                             UserRoles.checkAccess(user, RoleType.EXPLORATORY, e.getImage(), roles))
                     .peek(e -> filterShapes(user, e.getExploratoryEnvironmentShapes(), RoleType.EXPLORATORY_SHAPES, roles))
-                    .peek(e -> addGpu(e, endpointDTO.getCloudProvider().getName()))
+                    .peek(e -> addGpu(e, project))
                     .collect(Collectors.toList());
 
         } catch (DatalabException e) {
@@ -109,10 +109,6 @@ public class InfrastructureTemplateServiceImpl implements InfrastructureTemplate
         }
     }
 
-    private void addGpu(ExploratoryMetadataDTO e, String provider) {
-        gpuDAO.getGPUByProvider(provider).ifPresent(x -> x.setGpus(x.getGpus()));
-    }
-
     @Override
     public List<FullComputationalTemplate> getComputationalTemplates(UserInfo user, String project, String endpoint) {
 
@@ -130,7 +126,7 @@ public class InfrastructureTemplateServiceImpl implements InfrastructureTemplate
                     .peek(e -> e.setImage(getSimpleImageName(e.getImage())))
                     .peek(e -> filterShapes(user, e.getComputationResourceShapes(), RoleType.COMPUTATIONAL_SHAPES, roles))
                     .filter(e -> UserRoles.checkAccess(user, RoleType.COMPUTATIONAL, e.getImage(), roles))
-                    .map(comp -> fullComputationalTemplate(comp, endpointDTO.getCloudProvider()))
+                    .map(comp -> fullComputationalTemplate(comp, endpointDTO.getCloudProvider(), project))
                     .collect(Collectors.toList());
 
         } catch (DatalabException e) {
@@ -181,10 +177,10 @@ public class InfrastructureTemplateServiceImpl implements InfrastructureTemplate
      */
 
     private FullComputationalTemplate fullComputationalTemplate(ComputationalMetadataDTO metadataDTO,
-                                                                CloudProvider cloudProvider) {
+                                                                CloudProvider cloudProvider, String projectName) {
 
         DataEngineType dataEngineType = DataEngineType.fromDockerImageName(metadataDTO.getImage());
-        gpuDAO.getGPUByProvider(cloudProvider.getName()).ifPresent(x -> metadataDTO.setComputationGPU(x.getGpus()));
+        gpuDAO.getGPUByProjectName(projectName).ifPresent(edgeGPU -> metadataDTO.setComputationGPU(edgeGPU.getGpus()));
 
         if (dataEngineType == DataEngineType.CLOUD_SERVICE) {
             return getCloudFullComputationalTemplate(metadataDTO, cloudProvider);
@@ -258,4 +254,8 @@ public class InfrastructureTemplateServiceImpl implements InfrastructureTemplate
             this.sparkStandaloneConfiguration = sparkStandaloneConfiguration;
         }
     }
+
+    private void addGpu(ExploratoryMetadataDTO e, String projectName) {
+        gpuDAO.getGPUByProjectName(projectName).ifPresent(x -> x.setGpus(x.getGpus()));
+    }
 }

---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@datalab.apache.org
For additional commands, e-mail: commits-help@datalab.apache.org