This is an automated email from the ASF dual-hosted git repository.
ykinash pushed a commit to branch DATALAB-2363
in repository https://gitbox.apache.org/repos/asf/incubator-datalab.git
The following commit(s) were added to refs/heads/DATALAB-2363 by this push:
new 08a3fcb [DATALAB-2363] - Convey to front-end image list and
description
08a3fcb is described below
commit 08a3fcb1ae797a4b6376849c5cc2b2f46adb1543
Author: KinashYurii <[email protected]>
AuthorDate: Fri May 21 16:11:07 2021 +0300
[DATALAB-2363] - Convey to front-end image list and description
---
.../computational/FullComputationalTemplate.java | 9 +-
.../datalab/dto/imagemetadata/ApplicationDto.java | 60 +-----------
.../imagemetadata/ComputationalMetadataDTO.java | 3 +-
.../ExploratoryEnvironmentImages.java | 13 +++
.../dto/imagemetadata/ExploratoryMetadataDTO.java | 6 +-
.../dto/imagemetadata/ImageMetadataDTO.java | 20 +---
.../datalab/dto/imagemetadata/TemplateDTO.java | 57 +----------
.../resources/dto/ExploratoryCreateFormDTO.java | 9 --
.../impl/InfrastructureTemplateServiceImpl.java | 107 ++++++++++-----------
9 files changed, 84 insertions(+), 200 deletions(-)
diff --git
a/services/datalab-model/src/main/java/com/epam/datalab/dto/base/computational/FullComputationalTemplate.java
b/services/datalab-model/src/main/java/com/epam/datalab/dto/base/computational/FullComputationalTemplate.java
index 09cc0b8..bbcf652 100644
---
a/services/datalab-model/src/main/java/com/epam/datalab/dto/base/computational/FullComputationalTemplate.java
+++
b/services/datalab-model/src/main/java/com/epam/datalab/dto/base/computational/FullComputationalTemplate.java
@@ -21,13 +21,10 @@ package com.epam.datalab.dto.base.computational;
import com.epam.datalab.dto.imagemetadata.ComputationalMetadataDTO;
import com.fasterxml.jackson.annotation.JsonUnwrapped;
+import lombok.AllArgsConstructor;
+@AllArgsConstructor
public class FullComputationalTemplate {
@JsonUnwrapped
- private ComputationalMetadataDTO computationalMetadataDTO;
-
-
- public FullComputationalTemplate(ComputationalMetadataDTO metadataDTO) {
- this.computationalMetadataDTO = metadataDTO;
- }
+ private final ComputationalMetadataDTO computationalMetadataDTO;
}
diff --git
a/services/datalab-model/src/main/java/com/epam/datalab/dto/imagemetadata/ApplicationDto.java
b/services/datalab-model/src/main/java/com/epam/datalab/dto/imagemetadata/ApplicationDto.java
index ad096fe..4023cab 100644
---
a/services/datalab-model/src/main/java/com/epam/datalab/dto/imagemetadata/ApplicationDto.java
+++
b/services/datalab-model/src/main/java/com/epam/datalab/dto/imagemetadata/ApplicationDto.java
@@ -20,66 +20,14 @@
package com.epam.datalab.dto.imagemetadata;
import com.fasterxml.jackson.annotation.JsonProperty;
-import org.apache.commons.lang3.builder.ReflectionToStringBuilder;
-
-import java.util.Objects;
+import lombok.*;
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
public class ApplicationDto {
@JsonProperty("Version")
private String version;
@JsonProperty("Name")
private String name;
-
- public ApplicationDto() {
- }
-
-
- public ApplicationDto(String version, String name) {
- this.version = version;
- this.name = name;
- }
-
- public String getVersion() {
- return version;
- }
-
- public void setVersion(String version) {
- this.version = version;
- }
-
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- @Override
- public boolean equals(Object o) {
- if (this == o) {
- return true;
- }
- if (o == null || getClass() != o.getClass()) {
- return false;
- }
-
- ApplicationDto that = (ApplicationDto) o;
-
- if (version != null ? !version.equals(that.version) : that.version !=
null) {
- return false;
- }
- return name != null ? name.equals(that.name) : that.name == null;
-
- }
-
- @Override
- public int hashCode() {
- return Objects.hash(version, name);
- }
-
- @Override
- public String toString() {
- return ReflectionToStringBuilder.toString(this);
- }
}
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 a70a74a..eb5d540 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
@@ -47,8 +47,7 @@ public class ComputationalMetadataDTO extends
ImageMetadataDTO {
private String requestId;
@JsonProperty(value = "computation_resources_shapes")
private Map<String, List<ComputationalResourceShapeDto>>
computationResourceShapes;
- //GPU
-// @JsonProperty("gpu_types")
+
private List<String> computationGPU;
public ComputationalMetadataDTO(String imageName) {
diff --git
a/services/datalab-model/src/main/java/com/epam/datalab/dto/imagemetadata/ExploratoryEnvironmentImages.java
b/services/datalab-model/src/main/java/com/epam/datalab/dto/imagemetadata/ExploratoryEnvironmentImages.java
new file mode 100644
index 0000000..08ab5b5
--- /dev/null
+++
b/services/datalab-model/src/main/java/com/epam/datalab/dto/imagemetadata/ExploratoryEnvironmentImages.java
@@ -0,0 +1,13 @@
+package com.epam.datalab.dto.imagemetadata;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+
+@Data
+public class ExploratoryEnvironmentImages {
+
+ @JsonProperty("Image family")
+ private String imageFamily;
+ @JsonProperty("Description")
+ private String description;
+}
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 07dbff5..6a477e5 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
@@ -34,17 +34,15 @@ import java.util.List;
@EqualsAndHashCode(callSuper = false)
@JsonIgnoreProperties
public class ExploratoryMetadataDTO extends ImageMetadataDTO {
- @JsonProperty
protected String image;
@JsonProperty("exploratory_environment_versions")
private List<ExploratoryEnvironmentVersion> exploratoryEnvironmentVersions;
@JsonProperty("exploratory_environment_shapes")
private HashMap<String, List<ComputationalResourceShapeDto>>
exploratoryEnvironmentShapes;
+ @JsonProperty("exploratory_environment_images")
+ private List<ExploratoryEnvironmentImages> exploratoryEnvironmentImages;
@JsonProperty("request_id")
private String requestId;
-
- //GPU
-// @JsonProperty("gpu_types")
private List<String> computationGPU;
public ExploratoryMetadataDTO(String imageName) {
diff --git
a/services/datalab-model/src/main/java/com/epam/datalab/dto/imagemetadata/ImageMetadataDTO.java
b/services/datalab-model/src/main/java/com/epam/datalab/dto/imagemetadata/ImageMetadataDTO.java
index 33d508a..88a6a5e 100644
---
a/services/datalab-model/src/main/java/com/epam/datalab/dto/imagemetadata/ImageMetadataDTO.java
+++
b/services/datalab-model/src/main/java/com/epam/datalab/dto/imagemetadata/ImageMetadataDTO.java
@@ -20,6 +20,7 @@
package com.epam.datalab.dto.imagemetadata;
import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.*;
import org.apache.commons.lang3.builder.ReflectionToStringBuilder;
/**
@@ -29,23 +30,10 @@ import
org.apache.commons.lang3.builder.ReflectionToStringBuilder;
* hierarchy as it will requite type information to be serialized within json
* which is not we really want.
*/
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
public abstract class ImageMetadataDTO {
@JsonProperty("image_type")
private ImageType imageType;
-
- public ImageType getImageType() {
- return imageType;
- }
-
- public void setImageType(ImageType imageType) {
- this.imageType = imageType;
- }
-
- public abstract void setImage(String image);
-
- @Override
- public String toString() {
- return ReflectionToStringBuilder.toString(this);
- }
-
}
diff --git
a/services/datalab-model/src/main/java/com/epam/datalab/dto/imagemetadata/TemplateDTO.java
b/services/datalab-model/src/main/java/com/epam/datalab/dto/imagemetadata/TemplateDTO.java
index 746ab8a..58a8987 100644
---
a/services/datalab-model/src/main/java/com/epam/datalab/dto/imagemetadata/TemplateDTO.java
+++
b/services/datalab-model/src/main/java/com/epam/datalab/dto/imagemetadata/TemplateDTO.java
@@ -20,65 +20,16 @@
package com.epam.datalab.dto.imagemetadata;
import com.fasterxml.jackson.annotation.JsonProperty;
-import org.apache.commons.lang3.builder.ReflectionToStringBuilder;
+import lombok.*;
import java.util.List;
-import java.util.Objects;
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
public class TemplateDTO {
@JsonProperty
private String version;
@JsonProperty
private List<ApplicationDto> applications;
-
- public TemplateDTO() {
- }
-
- public TemplateDTO(String version) {
- this.version = version;
- }
-
- public String getVersion() {
- return version;
- }
-
- public void setVersion(String version) {
- this.version = version;
- }
-
- public List<ApplicationDto> getApplications() {
- return applications;
- }
-
- public void setApplications(List<ApplicationDto> applications) {
- this.applications = applications;
- }
-
- @Override
- public boolean equals(Object o) {
- if (this == o) {
- return true;
- }
- if (o == null || getClass() != o.getClass()) {
- return false;
- }
-
- TemplateDTO that = (TemplateDTO) o;
-
- if (version != null ? !version.equals(that.version) : that.version !=
null) {
- return false;
- }
- return applications != null ? applications.equals(that.applications) :
that.applications == null;
-
- }
-
- @Override
- public int hashCode() {
- return Objects.hash(version, applications);
- }
-
- @Override
- public String toString() {
- return ReflectionToStringBuilder.toString(this);
- }
}
diff --git
a/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/dto/ExploratoryCreateFormDTO.java
b/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/dto/ExploratoryCreateFormDTO.java
index 8440ac5..0d80ff5 100644
---
a/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/dto/ExploratoryCreateFormDTO.java
+++
b/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/dto/ExploratoryCreateFormDTO.java
@@ -35,39 +35,30 @@ public class ExploratoryCreateFormDTO {
@NotBlank
@JsonProperty
private String image;
-
@NotBlank
@JsonProperty("template_name")
private String templateName;
-
@NotBlank
@JsonProperty
private String name;
-
@NotBlank
@JsonProperty
private String project;
@JsonProperty("custom_tag")
private String exploratoryTag;
-
@NotBlank
@JsonProperty
private String endpoint;
-
@NotBlank
@JsonProperty
private String shape;
-
@NotBlank
@JsonProperty
private String version;
-
@JsonProperty("notebook_image_name")
private String imageName;
-
@JsonProperty("cluster_config")
private List<ClusterConfig> clusterConfig;
-
@JsonProperty("gpu_enabled")
private Boolean enabledGPU;
@JsonProperty("gpuType")
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 e0ee035..03c56e5 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
@@ -82,31 +82,11 @@ public class InfrastructureTemplateServiceImpl implements
InfrastructureTemplate
@Override
public List<ExploratoryMetadataDTO> getExploratoryTemplates(UserInfo user,
String project, String endpoint) {
-
log.debug("Loading list of exploratory templates for user {} for
project {}", user.getName(), project);
try {
EndpointDTO endpointDTO = endpointService.get(endpoint);
- log.info("TEST LOG!!! endpoint: {}", endpointDTO.toString());
-
- ExploratoryMetadataDTO[] array =
- provisioningService.get(endpointDTO.getUrl() +
DOCKER_EXPLORATORY,
- user.getAccessToken(),
- ExploratoryMetadataDTO[].class);
- log.info("loaded: {}", (Object) array);
-
- final Set<String> roles =
userGroupDao.getUserGroups(user.getName());
- log.info("TEST LOG!!! roles: {}", roles);
- List<ExploratoryMetadataDTO> s= Arrays.stream(array)
- .peek(e -> e.setImage(getSimpleImageName(e.getImage())))
- .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, project))
- .collect(Collectors.toList());
- log.info("loaded: {}", s);
-
- return s;
-
+ Set<String> roles = userGroupDao.getUserGroups(user.getName());
+ return changeExploratoryMetadata(user, project, endpointDTO,
roles);
} catch (DatalabException e) {
log.error("Could not load list of exploratory templates for user:
{}", user.getName(), e);
throw e;
@@ -143,6 +123,50 @@ public class InfrastructureTemplateServiceImpl implements
InfrastructureTemplate
}
}
+ protected FullComputationalTemplate
getCloudFullComputationalTemplate(ComputationalMetadataDTO metadataDTO,
+
CloudProvider cloudProvider) {
+
+ switch (cloudProvider) {
+ case AWS:
+ return new AwsFullComputationalTemplate(metadataDTO,
+ AwsEmrConfiguration.builder()
+
.minEmrInstanceCount(configuration.getMinEmrInstanceCount())
+
.maxEmrInstanceCount(configuration.getMaxEmrInstanceCount())
+
.maxEmrSpotInstanceBidPct(configuration.getMaxEmrSpotInstanceBidPct())
+
.minEmrSpotInstanceBidPct(configuration.getMinEmrSpotInstanceBidPct())
+ .build());
+ case GCP:
+ return new GcpFullComputationalTemplate(metadataDTO,
+ GcpDataprocConfiguration.builder()
+
.minInstanceCount(configuration.getMinInstanceCount())
+
.maxInstanceCount(configuration.getMaxInstanceCount())
+
.minDataprocPreemptibleInstanceCount(configuration.getMinDataprocPreemptibleCount())
+ .build());
+ case AZURE:
+ log.error("Dataengine service is not supported currently for
{}", AZURE);
+ throw new UnsupportedOperationException("Dataengine service is
not supported currently for " + AZURE);
+ default:
+ throw new UnsupportedOperationException("Dataengine service is
not supported currently for " + cloudProvider);
+ }
+ }
+
+ private List<ExploratoryMetadataDTO> changeExploratoryMetadata(UserInfo
user, String project, EndpointDTO endpointDTO, Set<String> roles) {
+ return getExploratoryMetadata(user, endpointDTO).stream()
+ .peek(e -> e.setImage(getSimpleImageName(e.getImage())))
+ .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, project))
+ .collect(Collectors.toList());
+ }
+
+ private List<ExploratoryMetadataDTO> getExploratoryMetadata(UserInfo user,
EndpointDTO endpointDTO) {
+ return Arrays.asList(provisioningService.get(endpointDTO.getUrl() +
DOCKER_EXPLORATORY,
+ user.getAccessToken(),
+ ExploratoryMetadataDTO[].class));
+ }
+
+
/**
* Removes shapes for which user does not have an access
*
@@ -203,33 +227,16 @@ public class InfrastructureTemplateServiceImpl implements
InfrastructureTemplate
}
}
- protected FullComputationalTemplate
getCloudFullComputationalTemplate(ComputationalMetadataDTO metadataDTO,
-
CloudProvider cloudProvider) {
-
- switch (cloudProvider) {
- case AWS:
- return new AwsFullComputationalTemplate(metadataDTO,
- AwsEmrConfiguration.builder()
-
.minEmrInstanceCount(configuration.getMinEmrInstanceCount())
-
.maxEmrInstanceCount(configuration.getMaxEmrInstanceCount())
-
.maxEmrSpotInstanceBidPct(configuration.getMaxEmrSpotInstanceBidPct())
-
.minEmrSpotInstanceBidPct(configuration.getMinEmrSpotInstanceBidPct())
- .build());
- case GCP:
- return new GcpFullComputationalTemplate(metadataDTO,
- GcpDataprocConfiguration.builder()
-
.minInstanceCount(configuration.getMinInstanceCount())
-
.maxInstanceCount(configuration.getMaxInstanceCount())
-
.minDataprocPreemptibleInstanceCount(configuration.getMinDataprocPreemptibleCount())
- .build());
- case AZURE:
- log.error("Dataengine service is not supported currently for
{}", AZURE);
- throw new UnsupportedOperationException("Dataengine service is
not supported currently for " + AZURE);
- default:
- throw new UnsupportedOperationException("Dataengine service is
not supported currently for " + cloudProvider);
+ private void addGpu(ExploratoryMetadataDTO e, String projectName) {
+ log.info("Trying to read GPU from DB for {}", projectName);
+ try {
+ gpuDAO.getGPUByProjectName(projectName).ifPresent(edgeGPU ->
e.setComputationGPU(edgeGPU.getGpus()));
+ } catch (Exception ex) {
+ log.info(ex.getMessage());
}
}
+
private static class AwsFullComputationalTemplate extends
FullComputationalTemplate {
@JsonProperty("limits")
private AwsEmrConfiguration awsEmrConfiguration;
@@ -263,12 +270,4 @@ public class InfrastructureTemplateServiceImpl implements
InfrastructureTemplate
}
}
- private void addGpu(ExploratoryMetadataDTO e, String projectName) {
- log.info("Trying to read GPU from DB for {}", projectName);
- try {
- gpuDAO.getGPUByProjectName(projectName).ifPresent(edgeGPU ->
e.setComputationGPU(edgeGPU.getGpus()));
- } catch (Exception ex) {
- log.info(ex.getMessage());
- }
- }
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]