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/26 18:47:16 UTC
[incubator-datalab] branch DATALAB-2091 updated: [DATALAB-2352] -
Retrieve the list of available GPU during endpoint deployment
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 1aea3b0 [DATALAB-2352] - Retrieve the list of available GPU during endpoint deployment
new 3532f7d Merge branch 'DATALAB-2091' of https://github.com/apache/incubator-datalab into DATALAB-2091
1aea3b0 is described below
commit 1aea3b000a8095cbf32ad32c0dc544e43f3651d3
Author: KinashYurii <ur...@gmail.com>
AuthorDate: Mon Apr 26 21:45:29 2021 +0300
[DATALAB-2352] - Retrieve the list of available GPU during endpoint deployment
---
.../com/epam/datalab/dto/base/edge/EdgeInfo.java | 5 +
.../ComputationalGPU.java => base/edge/GPU.java} | 10 +-
.../datalab/dto/base/project/ProjectResult.java | 3 +-
.../computational/UserComputationalResource.java | 10 +-
.../computational/GcpComputationalResource.java | 19 +---
.../imagemetadata/ComputationalMetadataDTO.java | 5 +-
.../{ComputationalGPU.java => EdgeGPU.java} | 12 +--
.../dto/imagemetadata/ExploratoryMetadataDTO.java | 5 +-
.../core/commands/CommandParserMock.java | 14 ++-
.../datalab/backendapi/dao/EndpointDAOImpl.java | 1 -
.../com/epam/datalab/backendapi/dao/GpuDAO.java} | 27 ++---
.../epam/datalab/backendapi/dao/GpuDAOImpl.java | 52 ++++++++++
.../epam/datalab/backendapi/modules/DevModule.java | 104 ++++---------------
.../backendapi/modules/ProductionModule.java | 112 +++++----------------
.../resources/callback/ProjectCallback.java | 27 ++++-
.../dto/gcp/GcpComputationalCreateForm.java | 14 +--
.../resources/gcp/ComputationalResourceGcp.java | 6 +-
.../impl/InfrastructureTemplateServiceImpl.java | 39 ++++---
.../service/impl/ProjectServiceImpl.java | 32 ++----
.../datalab/backendapi/util/RequestBuilder.java | 6 +-
.../InfrastructureTemplateServiceBaseTest.java | 27 ++---
21 files changed, 221 insertions(+), 309 deletions(-)
diff --git a/services/datalab-model/src/main/java/com/epam/datalab/dto/base/edge/EdgeInfo.java b/services/datalab-model/src/main/java/com/epam/datalab/dto/base/edge/EdgeInfo.java
index f112383..7370305 100644
--- a/services/datalab-model/src/main/java/com/epam/datalab/dto/base/edge/EdgeInfo.java
+++ b/services/datalab-model/src/main/java/com/epam/datalab/dto/base/edge/EdgeInfo.java
@@ -25,6 +25,8 @@ import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonTypeInfo;
import lombok.Data;
+import java.util.List;
+
@Data
@JsonIgnoreProperties(ignoreUnknown = true)
@JsonTypeInfo(use = JsonTypeInfo.Id.CLASS)
@@ -68,4 +70,7 @@ public class EdgeInfo {
@JsonProperty("reupload_key_required")
private boolean reuploadKeyRequired = false;
+
+ @JsonProperty("gpu_types")
+ private List<GPU> gpuList;
}
diff --git a/services/datalab-model/src/main/java/com/epam/datalab/dto/imagemetadata/ComputationalGPU.java b/services/datalab-model/src/main/java/com/epam/datalab/dto/base/edge/GPU.java
similarity index 89%
copy from services/datalab-model/src/main/java/com/epam/datalab/dto/imagemetadata/ComputationalGPU.java
copy to services/datalab-model/src/main/java/com/epam/datalab/dto/base/edge/GPU.java
index 7c9481b..66af4aa 100644
--- a/services/datalab-model/src/main/java/com/epam/datalab/dto/imagemetadata/ComputationalGPU.java
+++ b/services/datalab-model/src/main/java/com/epam/datalab/dto/base/edge/GPU.java
@@ -17,7 +17,7 @@
* under the License.
*/
-package com.epam.datalab.dto.imagemetadata;
+package com.epam.datalab.dto.base.edge;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.AllArgsConstructor;
@@ -29,10 +29,10 @@ import lombok.NoArgsConstructor;
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = false)
-public class ComputationalGPU {
+public class GPU {
- @JsonProperty("Size")
+ @JsonProperty("size")
private String size;
- @JsonProperty("Gpu_type")
+ @JsonProperty("gpu_type")
private String gpuType;
-}
\ No newline at end of file
+}
diff --git a/services/datalab-model/src/main/java/com/epam/datalab/dto/base/project/ProjectResult.java b/services/datalab-model/src/main/java/com/epam/datalab/dto/base/project/ProjectResult.java
index ad05d4d..d355df9 100644
--- a/services/datalab-model/src/main/java/com/epam/datalab/dto/base/project/ProjectResult.java
+++ b/services/datalab-model/src/main/java/com/epam/datalab/dto/base/project/ProjectResult.java
@@ -24,7 +24,9 @@ import com.epam.datalab.dto.base.edge.EdgeInfo;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
+import lombok.EqualsAndHashCode;
+@EqualsAndHashCode(callSuper = true)
@Data
@JsonIgnoreProperties(ignoreUnknown = true)
public class ProjectResult extends StatusBaseDTO<ProjectResult> {
@@ -33,5 +35,4 @@ public class ProjectResult extends StatusBaseDTO<ProjectResult> {
private String projectName;
@JsonProperty("endpoint_name")
private String endpointName;
-
}
diff --git a/services/datalab-model/src/main/java/com/epam/datalab/dto/computational/UserComputationalResource.java b/services/datalab-model/src/main/java/com/epam/datalab/dto/computational/UserComputationalResource.java
index 37fd927..c845aa1 100644
--- a/services/datalab-model/src/main/java/com/epam/datalab/dto/computational/UserComputationalResource.java
+++ b/services/datalab-model/src/main/java/com/epam/datalab/dto/computational/UserComputationalResource.java
@@ -75,14 +75,10 @@ public class UserComputationalResource {
protected List<ClusterConfig> config;
private Map<String, String> tags;
@JsonProperty("masterGPUType")
- private String masterGPUType;
- @JsonProperty("slaveGPUType")
- private String slaveGPUType;
+ private String gpuType;
@JsonProperty("masterGPUCount")
- private String masterGPUCount;
- @JsonProperty("slaveGPUCount")
- private String slaveGPUCount;
- private boolean enabledGPU;
+ private String gpuCount;
+ private boolean enabledGPU;
public UserComputationalResource(String computationalName, String computationalId, String imageName,
String templateName, String status, Date uptime, SchedulerJobDTO schedulerData,
diff --git a/services/datalab-model/src/main/java/com/epam/datalab/dto/gcp/computational/GcpComputationalResource.java b/services/datalab-model/src/main/java/com/epam/datalab/dto/gcp/computational/GcpComputationalResource.java
index 72485e0..de62280 100644
--- a/services/datalab-model/src/main/java/com/epam/datalab/dto/gcp/computational/GcpComputationalResource.java
+++ b/services/datalab-model/src/main/java/com/epam/datalab/dto/gcp/computational/GcpComputationalResource.java
@@ -57,12 +57,8 @@ public class GcpComputationalResource extends UserComputationalResource {
private final String version;
@JsonProperty("masterGPUType")
private final String masterGPUType;
- @JsonProperty("slaveGPUType")
- private final String slaveGPUType;
@JsonProperty("masterGPUCount")
private final String masterGPUCount;
- @JsonProperty("slaveGPUCount")
- private final String slaveGPUCount;
private final Boolean enabledGPU;
@Builder
@@ -73,8 +69,7 @@ public class GcpComputationalResource extends UserComputationalResource {
String masterNumber, String preemptibleNumber, String version,
List<ResourceURL> resourceURL, LocalDateTime lastActivity,
Map<String, String> tags, int totalInstanceCount,
- String masterGPUCount, String masterGPUType, String slaveGPUCount,
- String slaveGPUType, Boolean enabledGPU) {
+ String gpuCount, String gpuType, Boolean enabledGPU) {
super(computationalName, computationalId, imageName, templateName, status, uptime, schedulerJobData,
reuploadKeyRequired, resourceURL, lastActivity, tags, totalInstanceCount);
this.instanceId = instanceId;
@@ -84,15 +79,11 @@ public class GcpComputationalResource extends UserComputationalResource {
this.masterNumber = masterNumber;
this.version = version;
this.preemptibleNumber = preemptibleNumber;
- this.masterGPUCount = masterGPUCount;
- this.masterGPUType = masterGPUType;
- this.slaveGPUCount = slaveGPUCount;
- this.slaveGPUType = slaveGPUType;
+ this.masterGPUCount = gpuCount;
+ this.masterGPUType = gpuType;
this.enabledGPU = enabledGPU;
- super.setMasterGPUCount(masterGPUCount);
- super.setSlaveGPUCount(slaveGPUCount);
- super.setMasterGPUType(masterGPUType);
- super.setSlaveGPUType(slaveGPUType);
+ super.setGpuCount(masterGPUCount);
+ super.setGpuType(masterGPUType);
super.setEnabledGPU(enabledGPU);
}
}
diff --git a/services/datalab-model/src/main/java/com/epam/datalab/dto/imagemetadata/ComputationalMetadataDTO.java b/services/datalab-model/src/main/java/com/epam/datalab/dto/imagemetadata/ComputationalMetadataDTO.java
index 61dbb93..83ace74 100644
--- a/services/datalab-model/src/main/java/com/epam/datalab/dto/imagemetadata/ComputationalMetadataDTO.java
+++ b/services/datalab-model/src/main/java/com/epam/datalab/dto/imagemetadata/ComputationalMetadataDTO.java
@@ -19,6 +19,7 @@
package com.epam.datalab.dto.imagemetadata;
+import com.epam.datalab.dto.base.edge.GPU;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
@@ -46,8 +47,8 @@ public class ComputationalMetadataDTO extends ImageMetadataDTO {
@JsonProperty(value = "computation_resources_shapes")
private Map<String, List<ComputationalResourceShapeDto>> computationResourceShapes;
//GPU
- @JsonProperty("gpu_types")
- private List<ComputationalGPU> computationGPU;
+// @JsonProperty("gpu_types")
+ private List<GPU> computationGPU;
public ComputationalMetadataDTO(String imageName) {
this.image = imageName;
diff --git a/services/datalab-model/src/main/java/com/epam/datalab/dto/imagemetadata/ComputationalGPU.java b/services/datalab-model/src/main/java/com/epam/datalab/dto/imagemetadata/EdgeGPU.java
similarity index 84%
copy from services/datalab-model/src/main/java/com/epam/datalab/dto/imagemetadata/ComputationalGPU.java
copy to services/datalab-model/src/main/java/com/epam/datalab/dto/imagemetadata/EdgeGPU.java
index 7c9481b..6c67dd0 100644
--- a/services/datalab-model/src/main/java/com/epam/datalab/dto/imagemetadata/ComputationalGPU.java
+++ b/services/datalab-model/src/main/java/com/epam/datalab/dto/imagemetadata/EdgeGPU.java
@@ -19,20 +19,20 @@
package com.epam.datalab.dto.imagemetadata;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.epam.datalab.dto.base.edge.GPU;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
+import java.util.List;
+
@Data
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = false)
-public class ComputationalGPU {
+public class EdgeGPU {
- @JsonProperty("Size")
- private String size;
- @JsonProperty("Gpu_type")
- private String gpuType;
+ private String providerName;
+ private List<GPU> gpus;
}
\ No newline at end of file
diff --git a/services/datalab-model/src/main/java/com/epam/datalab/dto/imagemetadata/ExploratoryMetadataDTO.java b/services/datalab-model/src/main/java/com/epam/datalab/dto/imagemetadata/ExploratoryMetadataDTO.java
index de42238..5571db2 100644
--- a/services/datalab-model/src/main/java/com/epam/datalab/dto/imagemetadata/ExploratoryMetadataDTO.java
+++ b/services/datalab-model/src/main/java/com/epam/datalab/dto/imagemetadata/ExploratoryMetadataDTO.java
@@ -20,6 +20,7 @@
package com.epam.datalab.dto.imagemetadata;
+import com.epam.datalab.dto.base.edge.GPU;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
@@ -42,8 +43,8 @@ public class ExploratoryMetadataDTO extends ImageMetadataDTO {
private String requestId;
//GPU
- @JsonProperty("gpu_types")
- private List<ComputationalGPU> computationGPU;
+// @JsonProperty("gpu_types")
+ private List<GPU> computationGPU;
public ExploratoryMetadataDTO(String imageName) {
this.image = imageName;
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 c454fcd..e61f06b 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
@@ -29,11 +29,7 @@ import org.apache.commons.lang3.tuple.ImmutablePair;
import org.apache.commons.lang3.tuple.Pair;
import java.io.IOException;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
/**
* Parse command for emulate commands of Docker.
@@ -218,10 +214,12 @@ public class CommandParserMock {
*/
private Pair<String, String> getPair(String argName, String value, String separator) {
String[] array = value.split(separator);
- if (array.length != 2) {
- throw new DatalabException("Invalid value for \"" + argName + "\": " + value);
+ if (array.length == 2) {
+ return new ImmutablePair<>(array[0], array[1]);
+ } else if (array.length == 3) {
+ return new ImmutablePair<>(array[1], array[2]);
}
- return new ImmutablePair<>(array[0], array[1]);
+ throw new DatalabException("Invalid value for \"" + argName + "\": " + value);
}
/**
diff --git a/services/self-service/src/main/java/com/epam/datalab/backendapi/dao/EndpointDAOImpl.java b/services/self-service/src/main/java/com/epam/datalab/backendapi/dao/EndpointDAOImpl.java
index 5b3fedf..6aea428 100644
--- a/services/self-service/src/main/java/com/epam/datalab/backendapi/dao/EndpointDAOImpl.java
+++ b/services/self-service/src/main/java/com/epam/datalab/backendapi/dao/EndpointDAOImpl.java
@@ -30,7 +30,6 @@ import java.util.regex.Pattern;
import static com.mongodb.client.model.Filters.eq;
import static com.mongodb.client.model.Filters.regex;
-
public class EndpointDAOImpl extends BaseDAO implements EndpointDAO {
private static final String ENDPOINTS_COLLECTION = "endpoints";
diff --git a/services/datalab-model/src/main/java/com/epam/datalab/dto/imagemetadata/ComputationalGPU.java b/services/self-service/src/main/java/com/epam/datalab/backendapi/dao/GpuDAO.java
similarity index 64%
rename from services/datalab-model/src/main/java/com/epam/datalab/dto/imagemetadata/ComputationalGPU.java
rename to services/self-service/src/main/java/com/epam/datalab/backendapi/dao/GpuDAO.java
index 7c9481b..bffba51 100644
--- a/services/datalab-model/src/main/java/com/epam/datalab/dto/imagemetadata/ComputationalGPU.java
+++ b/services/self-service/src/main/java/com/epam/datalab/backendapi/dao/GpuDAO.java
@@ -17,22 +17,17 @@
* under the License.
*/
-package com.epam.datalab.dto.imagemetadata;
+package com.epam.datalab.backendapi.dao;
-import com.fasterxml.jackson.annotation.JsonProperty;
-import lombok.AllArgsConstructor;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.NoArgsConstructor;
+import com.epam.datalab.dto.imagemetadata.EdgeGPU;
-@Data
-@NoArgsConstructor
-@AllArgsConstructor
-@EqualsAndHashCode(callSuper = false)
-public class ComputationalGPU {
+import java.util.Optional;
- @JsonProperty("Size")
- private String size;
- @JsonProperty("Gpu_type")
- private String gpuType;
-}
\ No newline at end of file
+public interface GpuDAO {
+
+ Optional<EdgeGPU> getGPUByProvider(String provider);
+
+ void create(EdgeGPU gpu);
+
+ void remove(String nodeId);
+}
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
new file mode 100644
index 0000000..37fcb12
--- /dev/null
+++ b/services/self-service/src/main/java/com/epam/datalab/backendapi/dao/GpuDAOImpl.java
@@ -0,0 +1,52 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package com.epam.datalab.backendapi.dao;
+
+import com.epam.datalab.dto.imagemetadata.EdgeGPU;
+import org.bson.conversions.Bson;
+
+import java.util.Optional;
+
+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";
+
+ @Override
+ public Optional<EdgeGPU> getGPUByProvider(String edgeId) {
+ return findOne(GPU_COLLECTION, getByIdCondition(edgeId), EdgeGPU.class);
+ }
+
+ @Override
+ public void create(EdgeGPU gpu) {
+ insertOne(GPU_COLLECTION, gpu);
+ }
+
+ @Override
+ public void remove(String edgeId) {
+ deleteOne(GPU_COLLECTION, getByIdCondition(edgeId));
+ }
+
+ private Bson getByIdCondition(String edgeId) {
+ return eq(ENDPOINT_EDGE_ID_FIELD, edgeId);
+ }
+}
diff --git a/services/self-service/src/main/java/com/epam/datalab/backendapi/modules/DevModule.java b/services/self-service/src/main/java/com/epam/datalab/backendapi/modules/DevModule.java
index 047a7f6..6da6ee7 100644
--- a/services/self-service/src/main/java/com/epam/datalab/backendapi/modules/DevModule.java
+++ b/services/self-service/src/main/java/com/epam/datalab/backendapi/modules/DevModule.java
@@ -23,76 +23,9 @@ import com.epam.datalab.ModuleBase;
import com.epam.datalab.auth.contract.SecurityAPI;
import com.epam.datalab.backendapi.auth.SelfServiceSecurityAuthorizer;
import com.epam.datalab.backendapi.conf.SelfServiceApplicationConfiguration;
-import com.epam.datalab.backendapi.dao.AuditDAO;
-import com.epam.datalab.backendapi.dao.AuditDAOImpl;
-import com.epam.datalab.backendapi.dao.BackupDAO;
-import com.epam.datalab.backendapi.dao.BackupDAOImpl;
-import com.epam.datalab.backendapi.dao.BaseBillingDAO;
-import com.epam.datalab.backendapi.dao.BillingDAO;
-import com.epam.datalab.backendapi.dao.EndpointDAO;
-import com.epam.datalab.backendapi.dao.EndpointDAOImpl;
-import com.epam.datalab.backendapi.dao.ImageExploratoryDAO;
-import com.epam.datalab.backendapi.dao.ImageExploratoryDAOImpl;
-import com.epam.datalab.backendapi.dao.OdahuDAO;
-import com.epam.datalab.backendapi.dao.OdahuDAOImpl;
-import com.epam.datalab.backendapi.dao.ProjectDAO;
-import com.epam.datalab.backendapi.dao.ProjectDAOImpl;
-import com.epam.datalab.backendapi.dao.UserGroupDAO;
-import com.epam.datalab.backendapi.dao.UserGroupDAOImpl;
-import com.epam.datalab.backendapi.dao.UserRoleDAO;
-import com.epam.datalab.backendapi.dao.UserRoleDAOImpl;
-import com.epam.datalab.backendapi.service.AccessKeyService;
-import com.epam.datalab.backendapi.service.ApplicationSettingService;
-import com.epam.datalab.backendapi.service.ApplicationSettingServiceImpl;
-import com.epam.datalab.backendapi.service.AuditService;
-import com.epam.datalab.backendapi.service.BackupService;
-import com.epam.datalab.backendapi.service.BucketService;
-import com.epam.datalab.backendapi.service.ComputationalService;
-import com.epam.datalab.backendapi.service.EndpointService;
-import com.epam.datalab.backendapi.service.EnvironmentService;
-import com.epam.datalab.backendapi.service.ExploratoryService;
-import com.epam.datalab.backendapi.service.ExternalLibraryService;
-import com.epam.datalab.backendapi.service.GitCredentialService;
-import com.epam.datalab.backendapi.service.GuacamoleService;
-import com.epam.datalab.backendapi.service.ImageExploratoryService;
-import com.epam.datalab.backendapi.service.InactivityService;
-import com.epam.datalab.backendapi.service.KeycloakService;
-import com.epam.datalab.backendapi.service.KeycloakServiceImpl;
-import com.epam.datalab.backendapi.service.LibraryService;
-import com.epam.datalab.backendapi.service.OdahuService;
-import com.epam.datalab.backendapi.service.ProjectService;
-import com.epam.datalab.backendapi.service.ReuploadKeyService;
-import com.epam.datalab.backendapi.service.SchedulerJobService;
-import com.epam.datalab.backendapi.service.SecurityService;
-import com.epam.datalab.backendapi.service.SecurityServiceImpl;
-import com.epam.datalab.backendapi.service.SystemInfoService;
-import com.epam.datalab.backendapi.service.TagService;
-import com.epam.datalab.backendapi.service.TagServiceImpl;
-import com.epam.datalab.backendapi.service.UserGroupService;
-import com.epam.datalab.backendapi.service.UserRoleService;
-import com.epam.datalab.backendapi.service.UserRoleServiceImpl;
-import com.epam.datalab.backendapi.service.UserSettingService;
-import com.epam.datalab.backendapi.service.UserSettingServiceImpl;
-import com.epam.datalab.backendapi.service.impl.AccessKeyServiceImpl;
-import com.epam.datalab.backendapi.service.impl.AuditServiceImpl;
-import com.epam.datalab.backendapi.service.impl.BackupServiceImpl;
-import com.epam.datalab.backendapi.service.impl.BucketServiceImpl;
-import com.epam.datalab.backendapi.service.impl.ComputationalServiceImpl;
-import com.epam.datalab.backendapi.service.impl.EndpointServiceImpl;
-import com.epam.datalab.backendapi.service.impl.EnvironmentServiceImpl;
-import com.epam.datalab.backendapi.service.impl.ExploratoryServiceImpl;
-import com.epam.datalab.backendapi.service.impl.GitCredentialServiceImpl;
-import com.epam.datalab.backendapi.service.impl.GuacamoleServiceImpl;
-import com.epam.datalab.backendapi.service.impl.ImageExploratoryServiceImpl;
-import com.epam.datalab.backendapi.service.impl.InactivityServiceImpl;
-import com.epam.datalab.backendapi.service.impl.LibraryServiceImpl;
-import com.epam.datalab.backendapi.service.impl.MavenCentralLibraryService;
-import com.epam.datalab.backendapi.service.impl.OdahuServiceImpl;
-import com.epam.datalab.backendapi.service.impl.ProjectServiceImpl;
-import com.epam.datalab.backendapi.service.impl.ReuploadKeyServiceImpl;
-import com.epam.datalab.backendapi.service.impl.SchedulerJobServiceImpl;
-import com.epam.datalab.backendapi.service.impl.SystemInfoServiceImpl;
-import com.epam.datalab.backendapi.service.impl.UserGroupServiceImpl;
+import com.epam.datalab.backendapi.dao.*;
+import com.epam.datalab.backendapi.service.*;
+import com.epam.datalab.backendapi.service.impl.*;
import com.epam.datalab.constants.ServiceConsts;
import com.epam.datalab.mongo.MongoService;
import com.epam.datalab.rest.client.RESTService;
@@ -170,21 +103,22 @@ public class DevModule extends ModuleBase<SelfServiceApplicationConfiguration> i
bind(SystemInfoService.class).to(SystemInfoServiceImpl.class);
bind(UserGroupService.class).to(UserGroupServiceImpl.class);
bind(UserRoleService.class).to(UserRoleServiceImpl.class);
- bind(UserRoleDAO.class).to(UserRoleDAOImpl.class);
- bind(UserGroupDAO.class).to(UserGroupDAOImpl.class);
- bind(ApplicationSettingService.class).to(ApplicationSettingServiceImpl.class);
- bind(UserSettingService.class).to(UserSettingServiceImpl.class);
- bind(GuacamoleService.class).to(GuacamoleServiceImpl.class);
- bind(EndpointService.class).to(EndpointServiceImpl.class);
- bind(EndpointDAO.class).to(EndpointDAOImpl.class);
- bind(ProjectService.class).to(ProjectServiceImpl.class);
- bind(AuditService.class).to(AuditServiceImpl.class);
- bind(ProjectDAO.class).to(ProjectDAOImpl.class);
- bind(OdahuDAO.class).to(OdahuDAOImpl.class);
- bind(OdahuService.class).to(OdahuServiceImpl.class);
- bind(BillingDAO.class).to(BaseBillingDAO.class);
- bind(AuditDAO.class).to(AuditDAOImpl.class);
- bind(BucketService.class).to(BucketServiceImpl.class);
+ bind(UserRoleDAO.class).to(UserRoleDAOImpl.class);
+ bind(UserGroupDAO.class).to(UserGroupDAOImpl.class);
+ bind(ApplicationSettingService.class).to(ApplicationSettingServiceImpl.class);
+ bind(UserSettingService.class).to(UserSettingServiceImpl.class);
+ bind(GuacamoleService.class).to(GuacamoleServiceImpl.class);
+ bind(EndpointService.class).to(EndpointServiceImpl.class);
+ bind(EndpointDAO.class).to(EndpointDAOImpl.class);
+ bind(ProjectService.class).to(ProjectServiceImpl.class);
+ bind(AuditService.class).to(AuditServiceImpl.class);
+ bind(ProjectDAO.class).to(ProjectDAOImpl.class);
+ bind(GpuDAO.class).to(GpuDAOImpl.class);
+ bind(OdahuDAO.class).to(OdahuDAOImpl.class);
+ bind(OdahuService.class).to(OdahuServiceImpl.class);
+ bind(BillingDAO.class).to(BaseBillingDAO.class);
+ bind(AuditDAO.class).to(AuditDAOImpl.class);
+ bind(BucketService.class).to(BucketServiceImpl.class);
}
private void configureCors(Environment environment) {
diff --git a/services/self-service/src/main/java/com/epam/datalab/backendapi/modules/ProductionModule.java b/services/self-service/src/main/java/com/epam/datalab/backendapi/modules/ProductionModule.java
index 47ba87e..15df056 100644
--- a/services/self-service/src/main/java/com/epam/datalab/backendapi/modules/ProductionModule.java
+++ b/services/self-service/src/main/java/com/epam/datalab/backendapi/modules/ProductionModule.java
@@ -22,76 +22,9 @@ package com.epam.datalab.backendapi.modules;
import com.epam.datalab.ModuleBase;
import com.epam.datalab.backendapi.auth.SelfServiceSecurityAuthorizer;
import com.epam.datalab.backendapi.conf.SelfServiceApplicationConfiguration;
-import com.epam.datalab.backendapi.dao.AuditDAO;
-import com.epam.datalab.backendapi.dao.AuditDAOImpl;
-import com.epam.datalab.backendapi.dao.BackupDAO;
-import com.epam.datalab.backendapi.dao.BackupDAOImpl;
-import com.epam.datalab.backendapi.dao.BaseBillingDAO;
-import com.epam.datalab.backendapi.dao.BillingDAO;
-import com.epam.datalab.backendapi.dao.EndpointDAO;
-import com.epam.datalab.backendapi.dao.EndpointDAOImpl;
-import com.epam.datalab.backendapi.dao.ImageExploratoryDAO;
-import com.epam.datalab.backendapi.dao.ImageExploratoryDAOImpl;
-import com.epam.datalab.backendapi.dao.OdahuDAO;
-import com.epam.datalab.backendapi.dao.OdahuDAOImpl;
-import com.epam.datalab.backendapi.dao.ProjectDAO;
-import com.epam.datalab.backendapi.dao.ProjectDAOImpl;
-import com.epam.datalab.backendapi.dao.UserGroupDAO;
-import com.epam.datalab.backendapi.dao.UserGroupDAOImpl;
-import com.epam.datalab.backendapi.dao.UserRoleDAO;
-import com.epam.datalab.backendapi.dao.UserRoleDAOImpl;
-import com.epam.datalab.backendapi.service.AccessKeyService;
-import com.epam.datalab.backendapi.service.ApplicationSettingService;
-import com.epam.datalab.backendapi.service.ApplicationSettingServiceImpl;
-import com.epam.datalab.backendapi.service.AuditService;
-import com.epam.datalab.backendapi.service.BackupService;
-import com.epam.datalab.backendapi.service.BucketService;
-import com.epam.datalab.backendapi.service.ComputationalService;
-import com.epam.datalab.backendapi.service.EndpointService;
-import com.epam.datalab.backendapi.service.EnvironmentService;
-import com.epam.datalab.backendapi.service.ExploratoryService;
-import com.epam.datalab.backendapi.service.ExternalLibraryService;
-import com.epam.datalab.backendapi.service.GitCredentialService;
-import com.epam.datalab.backendapi.service.GuacamoleService;
-import com.epam.datalab.backendapi.service.ImageExploratoryService;
-import com.epam.datalab.backendapi.service.InactivityService;
-import com.epam.datalab.backendapi.service.KeycloakService;
-import com.epam.datalab.backendapi.service.KeycloakServiceImpl;
-import com.epam.datalab.backendapi.service.LibraryService;
-import com.epam.datalab.backendapi.service.OdahuService;
-import com.epam.datalab.backendapi.service.ProjectService;
-import com.epam.datalab.backendapi.service.ReuploadKeyService;
-import com.epam.datalab.backendapi.service.SchedulerJobService;
-import com.epam.datalab.backendapi.service.SecurityService;
-import com.epam.datalab.backendapi.service.SecurityServiceImpl;
-import com.epam.datalab.backendapi.service.SystemInfoService;
-import com.epam.datalab.backendapi.service.TagService;
-import com.epam.datalab.backendapi.service.TagServiceImpl;
-import com.epam.datalab.backendapi.service.UserGroupService;
-import com.epam.datalab.backendapi.service.UserRoleService;
-import com.epam.datalab.backendapi.service.UserRoleServiceImpl;
-import com.epam.datalab.backendapi.service.UserSettingService;
-import com.epam.datalab.backendapi.service.UserSettingServiceImpl;
-import com.epam.datalab.backendapi.service.impl.AccessKeyServiceImpl;
-import com.epam.datalab.backendapi.service.impl.AuditServiceImpl;
-import com.epam.datalab.backendapi.service.impl.BackupServiceImpl;
-import com.epam.datalab.backendapi.service.impl.BucketServiceImpl;
-import com.epam.datalab.backendapi.service.impl.ComputationalServiceImpl;
-import com.epam.datalab.backendapi.service.impl.EndpointServiceImpl;
-import com.epam.datalab.backendapi.service.impl.EnvironmentServiceImpl;
-import com.epam.datalab.backendapi.service.impl.ExploratoryServiceImpl;
-import com.epam.datalab.backendapi.service.impl.GitCredentialServiceImpl;
-import com.epam.datalab.backendapi.service.impl.GuacamoleServiceImpl;
-import com.epam.datalab.backendapi.service.impl.ImageExploratoryServiceImpl;
-import com.epam.datalab.backendapi.service.impl.InactivityServiceImpl;
-import com.epam.datalab.backendapi.service.impl.LibraryServiceImpl;
-import com.epam.datalab.backendapi.service.impl.MavenCentralLibraryService;
-import com.epam.datalab.backendapi.service.impl.OdahuServiceImpl;
-import com.epam.datalab.backendapi.service.impl.ProjectServiceImpl;
-import com.epam.datalab.backendapi.service.impl.ReuploadKeyServiceImpl;
-import com.epam.datalab.backendapi.service.impl.SchedulerJobServiceImpl;
-import com.epam.datalab.backendapi.service.impl.SystemInfoServiceImpl;
-import com.epam.datalab.backendapi.service.impl.UserGroupServiceImpl;
+import com.epam.datalab.backendapi.dao.*;
+import com.epam.datalab.backendapi.service.*;
+import com.epam.datalab.backendapi.service.impl.*;
import com.epam.datalab.constants.ServiceConsts;
import com.epam.datalab.mongo.MongoService;
import com.epam.datalab.rest.client.RESTService;
@@ -159,24 +92,25 @@ public class ProductionModule extends ModuleBase<SelfServiceApplicationConfigura
bind(UserGroupService.class).to(UserGroupServiceImpl.class);
bind(UserRoleService.class).to(UserRoleServiceImpl.class);
bind(UserRoleDAO.class).to(UserRoleDAOImpl.class);
- bind(UserGroupDAO.class).to(UserGroupDAOImpl.class);
- bind(InactivityService.class).to(InactivityServiceImpl.class);
- bind(ApplicationSettingService.class).to(ApplicationSettingServiceImpl.class);
- bind(UserSettingService.class).to(UserSettingServiceImpl.class);
- bind(GuacamoleService.class).to(GuacamoleServiceImpl.class);
- bind(EndpointService.class).to(EndpointServiceImpl.class);
- bind(EndpointDAO.class).to(EndpointDAOImpl.class);
- bind(ProjectService.class).to(ProjectServiceImpl.class);
- bind(AuditService.class).to(AuditServiceImpl.class);
- bind(ProjectDAO.class).to(ProjectDAOImpl.class);
- bind(OdahuDAO.class).to(OdahuDAOImpl.class);
- bind(OdahuService.class).to(OdahuServiceImpl.class);
- bind(BillingDAO.class).to(BaseBillingDAO.class);
- bind(AuditDAO.class).to(AuditDAOImpl.class);
- bind(BucketService.class).to(BucketServiceImpl.class);
- bind(TagService.class).to(TagServiceImpl.class);
- bind(SecurityService.class).to(SecurityServiceImpl.class);
- bind(KeycloakService.class).to(KeycloakServiceImpl.class);
- bind(Client.class).toInstance(httpClient);
+ bind(UserGroupDAO.class).to(UserGroupDAOImpl.class);
+ bind(InactivityService.class).to(InactivityServiceImpl.class);
+ bind(ApplicationSettingService.class).to(ApplicationSettingServiceImpl.class);
+ bind(UserSettingService.class).to(UserSettingServiceImpl.class);
+ bind(GuacamoleService.class).to(GuacamoleServiceImpl.class);
+ bind(EndpointService.class).to(EndpointServiceImpl.class);
+ bind(EndpointDAO.class).to(EndpointDAOImpl.class);
+ bind(ProjectService.class).to(ProjectServiceImpl.class);
+ bind(AuditService.class).to(AuditServiceImpl.class);
+ bind(ProjectDAO.class).to(ProjectDAOImpl.class);
+ bind(GpuDAO.class).to(GpuDAOImpl.class);
+ bind(OdahuDAO.class).to(OdahuDAOImpl.class);
+ bind(OdahuService.class).to(OdahuServiceImpl.class);
+ bind(BillingDAO.class).to(BaseBillingDAO.class);
+ bind(AuditDAO.class).to(AuditDAOImpl.class);
+ bind(BucketService.class).to(BucketServiceImpl.class);
+ bind(TagService.class).to(TagServiceImpl.class);
+ bind(SecurityService.class).to(SecurityServiceImpl.class);
+ bind(KeycloakService.class).to(KeycloakServiceImpl.class);
+ bind(Client.class).toInstance(httpClient);
}
}
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 3ac6d02..d3097ca 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
@@ -19,11 +19,17 @@
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;
@@ -32,6 +38,7 @@ import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
+import java.util.List;
import java.util.Objects;
@Path("/project/status")
@@ -40,14 +47,19 @@ 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;
@Inject
- public ProjectCallback(ProjectDAO projectDAO, ExploratoryService exploratoryService, RequestId requestId) {
+ 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;
}
@@ -55,7 +67,10 @@ 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);
if (UserInstanceStatus.RUNNING == status && Objects.nonNull(projectResult.getEdgeInfo())) {
projectDAO.updateEdgeInfo(projectName, projectResult.getEndpointName(), projectResult.getEdgeInfo());
} else {
@@ -65,6 +80,16 @@ 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/resources/dto/gcp/GcpComputationalCreateForm.java b/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/dto/gcp/GcpComputationalCreateForm.java
index afca270..92c8402 100644
--- a/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/dto/gcp/GcpComputationalCreateForm.java
+++ b/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/dto/gcp/GcpComputationalCreateForm.java
@@ -56,15 +56,9 @@ public class GcpComputationalCreateForm extends ComputationalCreateFormDTO {
@JsonProperty("gpu_enabled")
private Boolean enabledGPU;
- @JsonProperty("masterGPUType")
- private String masterGPUType;
+ @JsonProperty("gpuType")
+ private String gpuType;
- @JsonProperty("slaveGPUType")
- private String slaveGPUType;
-
- @JsonProperty("masterGPUCount")
- private String masterGPUCount;
-
- @JsonProperty("slaveGPUCount")
- private String slaveGPUCount;
+ @JsonProperty("gpuCount")
+ private String gpuCount;
}
diff --git a/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/gcp/ComputationalResourceGcp.java b/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/gcp/ComputationalResourceGcp.java
index 460e255..00310c9 100644
--- a/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/gcp/ComputationalResourceGcp.java
+++ b/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/gcp/ComputationalResourceGcp.java
@@ -101,10 +101,8 @@ public class ComputationalResourceGcp implements ComputationalAPI {
.imageName(form.getImage())
.templateName(form.getTemplateName())
.status(CREATING.toString())
- .masterGPUCount(form.getMasterGPUCount())
- .masterGPUType(form.getMasterGPUType())
- .slaveGPUCount(form.getSlaveGPUCount())
- .slaveGPUType(form.getSlaveGPUType())
+ .gpuCount(form.getGpuCount())
+ .gpuType(form.getGpuCount())
.enabledGPU(form.getEnabledGPU())
.masterShape(form.getMasterInstanceType())
.slaveShape(form.getSlaveInstanceType())
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 de4e6e5..6740dc9 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
@@ -21,6 +21,7 @@ package com.epam.datalab.backendapi.service.impl;
import com.epam.datalab.auth.UserInfo;
import com.epam.datalab.backendapi.conf.SelfServiceApplicationConfiguration;
+import com.epam.datalab.backendapi.dao.GpuDAO;
import com.epam.datalab.backendapi.dao.ProjectDAO;
import com.epam.datalab.backendapi.dao.SettingsDAO;
import com.epam.datalab.backendapi.dao.UserGroupDAO;
@@ -59,21 +60,28 @@ import static com.epam.datalab.rest.contracts.DockerAPI.DOCKER_EXPLORATORY;
@Slf4j
public class InfrastructureTemplateServiceImpl implements InfrastructureTemplateService {
- @Inject
- private SelfServiceApplicationConfiguration configuration;
- @Inject
- private SettingsDAO settingsDAO;
- @Inject
- private ProjectDAO projectDAO;
- @Inject
- private EndpointService endpointService;
- @Inject
- private UserGroupDAO userGroupDao;
+ private final SelfServiceApplicationConfiguration configuration;
+ private final SettingsDAO settingsDAO;
+ private final UserGroupDAO userGroupDao;
+ private final GpuDAO gpuDAO;
+ private final EndpointService endpointService;
@Inject
- @Named(ServiceConsts.PROVISIONING_SERVICE_NAME)
- private RESTService provisioningService;
+ private final RESTService provisioningService;
+
+ @Inject
+ public InfrastructureTemplateServiceImpl(SelfServiceApplicationConfiguration configuration, SettingsDAO settingsDAO,
+ ProjectDAO projectDAO, EndpointService endpointService,
+ UserGroupDAO userGroupDao, GpuDAO gpuDAO,
+ @Named(ServiceConsts.PROVISIONING_SERVICE_NAME) RESTService provisioningService) {
+ this.configuration = configuration;
+ this.settingsDAO = settingsDAO;
+ this.endpointService = endpointService;
+ this.userGroupDao = userGroupDao;
+ this.gpuDAO = gpuDAO;
+ this.provisioningService = provisioningService;
+ }
@Override
public List<ExploratoryMetadataDTO> getExploratoryTemplates(UserInfo user, String project, String endpoint) {
@@ -92,6 +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()))
.collect(Collectors.toList());
} catch (DatalabException e) {
@@ -100,6 +109,10 @@ 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) {
@@ -171,6 +184,7 @@ public class InfrastructureTemplateServiceImpl implements InfrastructureTemplate
CloudProvider cloudProvider) {
DataEngineType dataEngineType = DataEngineType.fromDockerImageName(metadataDTO.getImage());
+ gpuDAO.getGPUByProvider(cloudProvider.getName()).ifPresent(x -> metadataDTO.setComputationGPU(x.getGpus()));
if (dataEngineType == DataEngineType.CLOUD_SERVICE) {
return getCloudFullComputationalTemplate(metadataDTO, cloudProvider);
@@ -187,6 +201,7 @@ public class InfrastructureTemplateServiceImpl implements InfrastructureTemplate
protected FullComputationalTemplate getCloudFullComputationalTemplate(ComputationalMetadataDTO metadataDTO,
CloudProvider cloudProvider) {
+
switch (cloudProvider) {
case AWS:
return new AwsFullComputationalTemplate(metadataDTO,
diff --git a/services/self-service/src/main/java/com/epam/datalab/backendapi/service/impl/ProjectServiceImpl.java b/services/self-service/src/main/java/com/epam/datalab/backendapi/service/impl/ProjectServiceImpl.java
index dc39c36..4df5d92 100644
--- a/services/self-service/src/main/java/com/epam/datalab/backendapi/service/impl/ProjectServiceImpl.java
+++ b/services/self-service/src/main/java/com/epam/datalab/backendapi/service/impl/ProjectServiceImpl.java
@@ -20,24 +20,12 @@
package com.epam.datalab.backendapi.service.impl;
import com.epam.datalab.auth.UserInfo;
-import com.epam.datalab.backendapi.annotation.Audit;
-import com.epam.datalab.backendapi.annotation.BudgetLimited;
-import com.epam.datalab.backendapi.annotation.Info;
-import com.epam.datalab.backendapi.annotation.Project;
-import com.epam.datalab.backendapi.annotation.ProjectAdmin;
-import com.epam.datalab.backendapi.annotation.ResourceName;
-import com.epam.datalab.backendapi.annotation.User;
+import com.epam.datalab.backendapi.annotation.*;
import com.epam.datalab.backendapi.conf.SelfServiceApplicationConfiguration;
import com.epam.datalab.backendapi.dao.ExploratoryDAO;
import com.epam.datalab.backendapi.dao.ProjectDAO;
import com.epam.datalab.backendapi.dao.UserGroupDAO;
-import com.epam.datalab.backendapi.domain.BudgetDTO;
-import com.epam.datalab.backendapi.domain.EndpointDTO;
-import com.epam.datalab.backendapi.domain.ProjectDTO;
-import com.epam.datalab.backendapi.domain.ProjectEndpointDTO;
-import com.epam.datalab.backendapi.domain.RequestId;
-import com.epam.datalab.backendapi.domain.UpdateProjectBudgetDTO;
-import com.epam.datalab.backendapi.domain.UpdateProjectDTO;
+import com.epam.datalab.backendapi.domain.*;
import com.epam.datalab.backendapi.roles.UserRoles;
import com.epam.datalab.backendapi.service.EndpointService;
import com.epam.datalab.backendapi.service.ExploratoryService;
@@ -53,20 +41,11 @@ import com.google.inject.Inject;
import com.google.inject.name.Named;
import lombok.extern.slf4j.Slf4j;
-import java.util.Arrays;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Optional;
-import java.util.Set;
+import java.util.*;
import java.util.function.Supplier;
import java.util.stream.Collectors;
-import static com.epam.datalab.backendapi.domain.AuditActionEnum.CREATE;
-import static com.epam.datalab.backendapi.domain.AuditActionEnum.RECREATE;
-import static com.epam.datalab.backendapi.domain.AuditActionEnum.START;
-import static com.epam.datalab.backendapi.domain.AuditActionEnum.STOP;
-import static com.epam.datalab.backendapi.domain.AuditActionEnum.TERMINATE;
-import static com.epam.datalab.backendapi.domain.AuditActionEnum.UPDATE;
+import static com.epam.datalab.backendapi.domain.AuditActionEnum.*;
import static com.epam.datalab.backendapi.domain.AuditResourceTypeEnum.EDGE_NODE;
import static com.epam.datalab.backendapi.domain.AuditResourceTypeEnum.PROJECT;
import static java.util.stream.Collectors.toSet;
@@ -302,7 +281,8 @@ public class ProjectServiceImpl implements ProjectService {
private void createProjectOnCloud(UserInfo user, ProjectDTO project) {
try {
- project.getEndpoints().forEach(e -> createEndpoint(user, project, e.getName(), project.getName(), String.format(AUDIT_ADD_EDGE_NODE, e.getName(), project.getName())));
+ project.getEndpoints().forEach(e -> createEndpoint(user, project, e.getName(), project.getName(),
+ String.format(AUDIT_ADD_EDGE_NODE, e.getName(), project.getName())));
} catch (Exception e) {
log.error("Can not create project due to: {}", e.getMessage(), e);
projectDAO.updateStatus(project.getName(), ProjectDTO.Status.FAILED);
diff --git a/services/self-service/src/main/java/com/epam/datalab/backendapi/util/RequestBuilder.java b/services/self-service/src/main/java/com/epam/datalab/backendapi/util/RequestBuilder.java
index 1e47fb1..76457cf 100644
--- a/services/self-service/src/main/java/com/epam/datalab/backendapi/util/RequestBuilder.java
+++ b/services/self-service/src/main/java/com/epam/datalab/backendapi/util/RequestBuilder.java
@@ -358,10 +358,8 @@ public class RequestBuilder {
.withMasterInstanceType(gcpForm.getMasterInstanceType())
.withSlaveInstanceType(gcpForm.getSlaveInstanceType())
.withVersion(gcpForm.getVersion())
- .withMasterGPUCount(gcpForm.getMasterGPUCount())
- .withMasterGPUType(gcpForm.getMasterGPUType())
- .withSlaveGPUCount(gcpForm.getSlaveGPUCount())
- .withSlaveGPUType(gcpForm.getSlaveGPUType())
+ .withMasterGPUCount(gcpForm.getGpuCount())
+ .withMasterGPUType(gcpForm.getGpuType())
.withSharedImageEnabled(String.valueOf(projectDTO.isSharedImageEnabled()));
break;
diff --git a/services/self-service/src/test/java/com/epam/datalab/backendapi/service/impl/InfrastructureTemplateServiceBaseTest.java b/services/self-service/src/test/java/com/epam/datalab/backendapi/service/impl/InfrastructureTemplateServiceBaseTest.java
index d68e157..cf5a1d4 100644
--- a/services/self-service/src/test/java/com/epam/datalab/backendapi/service/impl/InfrastructureTemplateServiceBaseTest.java
+++ b/services/self-service/src/test/java/com/epam/datalab/backendapi/service/impl/InfrastructureTemplateServiceBaseTest.java
@@ -21,6 +21,7 @@ package com.epam.datalab.backendapi.service.impl;
import com.epam.datalab.auth.UserInfo;
import com.epam.datalab.backendapi.conf.SelfServiceApplicationConfiguration;
+import com.epam.datalab.backendapi.dao.GpuDAO;
import com.epam.datalab.backendapi.dao.ProjectDAO;
import com.epam.datalab.backendapi.dao.SettingsDAO;
import com.epam.datalab.backendapi.dao.UserGroupDAO;
@@ -41,23 +42,11 @@ import org.mockito.Mock;
import org.mockito.runners.MockitoJUnitRunner;
import java.lang.reflect.Field;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Optional;
+import java.util.*;
import java.util.stream.Collectors;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-import static org.mockito.Mockito.any;
-import static org.mockito.Mockito.anyString;
-import static org.mockito.Mockito.doThrow;
-import static org.mockito.Mockito.times;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.verifyNoMoreInteractions;
-import static org.mockito.Mockito.when;
+import static org.junit.Assert.*;
+import static org.mockito.Mockito.*;
@RunWith(MockitoJUnitRunner.class)
public class InfrastructureTemplateServiceBaseTest {
@@ -74,9 +63,11 @@ public class InfrastructureTemplateServiceBaseTest {
private UserGroupDAO userGroupDao;
@Mock
private SelfServiceApplicationConfiguration configuration;
+ @Mock
+ private GpuDAO gpuDAO;
@InjectMocks
- private InfrastructureTemplateServiceBaseChild infrastructureTemplateServiceBaseChild =
+ private final InfrastructureTemplateServiceBaseChild infrastructureTemplateServiceBaseChild =
new InfrastructureTemplateServiceBaseChild();
@Test
@@ -219,6 +210,10 @@ public class InfrastructureTemplateServiceBaseTest {
private class InfrastructureTemplateServiceBaseChild extends InfrastructureTemplateServiceImpl {
+ private InfrastructureTemplateServiceBaseChild() {
+ super(configuration, settingsDAO, projectDAO, endpointService, userGroupDao, gpuDAO, provisioningService);
+ }
+
protected FullComputationalTemplate getCloudFullComputationalTemplate(ComputationalMetadataDTO metadataDTO) {
return new FullComputationalTemplate(metadataDTO);
}
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@datalab.apache.org
For additional commands, e-mail: commits-help@datalab.apache.org