[DATALAB-2232] -- fixed GPU for Jupyter
diff --git a/services/datalab-model/src/main/java/com/epam/datalab/dto/aws/exploratory/ExploratoryCreateAws.java b/services/datalab-model/src/main/java/com/epam/datalab/dto/aws/exploratory/ExploratoryCreateAws.java
index c3fe399..95fe658 100644
--- a/services/datalab-model/src/main/java/com/epam/datalab/dto/aws/exploratory/ExploratoryCreateAws.java
+++ b/services/datalab-model/src/main/java/com/epam/datalab/dto/aws/exploratory/ExploratoryCreateAws.java
@@ -22,19 +22,15 @@
import com.epam.datalab.dto.exploratory.ExploratoryCreateDTO;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.google.common.base.MoreObjects;
+import lombok.Getter;
+import lombok.Setter;
+@Setter
+@Getter
public class ExploratoryCreateAws extends ExploratoryCreateDTO<ExploratoryCreateAws> {
@JsonProperty("aws_notebook_instance_type")
private String notebookInstanceType;
- public String getNotebookInstanceType() {
- return notebookInstanceType;
- }
-
- public void setNotebookInstanceType(String notebookInstanceType) {
- this.notebookInstanceType = notebookInstanceType;
- }
-
public ExploratoryCreateAws withNotebookInstanceType(String notebookInstanceType) {
setNotebookInstanceType(notebookInstanceType);
return this;
diff --git a/services/datalab-model/src/main/java/com/epam/datalab/dto/azure/exploratory/ExploratoryCreateAzure.java b/services/datalab-model/src/main/java/com/epam/datalab/dto/azure/exploratory/ExploratoryCreateAzure.java
index 8a08dc0..612dbfe 100644
--- a/services/datalab-model/src/main/java/com/epam/datalab/dto/azure/exploratory/ExploratoryCreateAzure.java
+++ b/services/datalab-model/src/main/java/com/epam/datalab/dto/azure/exploratory/ExploratoryCreateAzure.java
@@ -22,7 +22,11 @@
import com.epam.datalab.dto.exploratory.ExploratoryCreateDTO;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.google.common.base.MoreObjects;
+import lombok.Getter;
+import lombok.Setter;
+@Setter
+@Getter
public class ExploratoryCreateAzure extends ExploratoryCreateDTO<ExploratoryCreateAzure> {
@JsonProperty("azure_notebook_instance_size")
private String notebookInstanceType;
@@ -31,29 +35,6 @@
@JsonProperty("azure_user_refresh_token")
private String azureUserRefreshToken;
- public String getNotebookInstanceType() {
- return notebookInstanceType;
- }
-
- public void setNotebookInstanceType(String notebookInstanceType) {
- this.notebookInstanceType = notebookInstanceType;
- }
-
- public String getAzureDataLakeEnabled() {
- return azureDataLakeEnabled;
- }
-
- public void setAzureDataLakeEnabled(String azureDataLakeEnabled) {
- this.azureDataLakeEnabled = azureDataLakeEnabled;
- }
-
- public String getAzureUserRefreshToken() {
- return azureUserRefreshToken;
- }
-
- public void setAzureUserRefreshToken(String azureUserRefreshToken) {
- this.azureUserRefreshToken = azureUserRefreshToken;
- }
public ExploratoryCreateAzure withNotebookInstanceSize(String notebookInstanceType) {
setNotebookInstanceType(notebookInstanceType);
diff --git a/services/datalab-model/src/main/java/com/epam/datalab/dto/exploratory/ExploratoryBaseDTO.java b/services/datalab-model/src/main/java/com/epam/datalab/dto/exploratory/ExploratoryBaseDTO.java
index 8462e48..20e50b5 100644
--- a/services/datalab-model/src/main/java/com/epam/datalab/dto/exploratory/ExploratoryBaseDTO.java
+++ b/services/datalab-model/src/main/java/com/epam/datalab/dto/exploratory/ExploratoryBaseDTO.java
@@ -22,10 +22,12 @@
import com.epam.datalab.dto.ResourceEnvBaseDTO;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.google.common.base.MoreObjects.ToStringHelper;
+import lombok.Getter;
+import lombok.Setter;
+@Getter
+@Setter
public class ExploratoryBaseDTO<T extends ExploratoryBaseDTO<?>> extends ResourceEnvBaseDTO<T> {
- @SuppressWarnings("unchecked")
- private final T self = (T) this;
@JsonProperty("notebook_image")
private String notebookImage;
@JsonProperty("project_name")
@@ -41,19 +43,22 @@
this.notebookImage = notebookImage;
}
+ @SuppressWarnings("unchecked")
public T withNotebookImage(String notebookImage) {
setNotebookImage(notebookImage);
- return self;
+ return (T) this;
}
+ @SuppressWarnings("unchecked")
public T withProject(String project) {
setProject(project);
- return self;
+ return (T) this;
}
+ @SuppressWarnings("unchecked")
public T withEndpoint(String endpoint) {
setEndpoint(endpoint);
- return self;
+ return (T) this;
}
@Override
@@ -62,14 +67,6 @@
.add("notebookImage", notebookImage);
}
- public String getProject() {
- return project;
- }
-
- public void setProject(String project) {
- this.project = project;
- }
-
public String getEndpoint() {
return endpoint;
}
diff --git a/services/datalab-model/src/main/java/com/epam/datalab/dto/exploratory/ExploratoryCreateDTO.java b/services/datalab-model/src/main/java/com/epam/datalab/dto/exploratory/ExploratoryCreateDTO.java
index 207e5c2..98935bd 100644
--- a/services/datalab-model/src/main/java/com/epam/datalab/dto/exploratory/ExploratoryCreateDTO.java
+++ b/services/datalab-model/src/main/java/com/epam/datalab/dto/exploratory/ExploratoryCreateDTO.java
@@ -22,14 +22,16 @@
import com.epam.datalab.dto.aws.computational.ClusterConfig;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.google.common.base.MoreObjects.ToStringHelper;
+import lombok.Getter;
+import lombok.Setter;
import java.util.List;
import java.util.Map;
+@Setter
+@Getter
public class ExploratoryCreateDTO<T extends ExploratoryCreateDTO<?>> extends ExploratoryBaseDTO<T> {
- @SuppressWarnings("unchecked")
- private final T self = (T) this;
@JsonProperty("git_creds")
private List<ExploratoryGitCreds> gitCreds;
@@ -43,6 +45,12 @@
private String endpoint;
@JsonProperty("conf_shared_image_enabled")
private String sharedImageEnabled;
+ @JsonProperty("gpu_enabled")
+ private Boolean enabledGPU;
+ @JsonProperty("gpuType")
+ private String gpuType;
+ @JsonProperty("gpuCount")
+ private String gpuCount;
/**
* Return the list of GIT credentials.
@@ -61,33 +69,40 @@
/**
* Set the list of GIT credentials and return this object.
*/
+ @SuppressWarnings("unchecked")
public T withGitCreds(List<ExploratoryGitCreds> gitCreds) {
setGitCreds(gitCreds);
- return self;
+ return (T) this;
}
/**
* Set the image name and return this object.
*/
+ @SuppressWarnings("unchecked")
public T withImageName(String imageName) {
setImageName(imageName);
- return self;
+ return (T) this;
}
+ @SuppressWarnings("unchecked")
public T withTags(Map<String, String> tags) {
this.tags = tags;
- return self;
+ return (T) this;
}
+ @SuppressWarnings("unchecked")
+
@Override
public T withEndpoint(String endpoint) {
this.endpoint = endpoint;
- return self;
+ return (T) this;
}
+ @SuppressWarnings("unchecked")
+
public T withSharedImageEnabled(String sharedImageEnabled) {
this.sharedImageEnabled = sharedImageEnabled;
- return self;
+ return (T) this;
}
public String getImageName() {
@@ -98,31 +113,30 @@
this.imageName = imageName;
}
+ @SuppressWarnings("unchecked")
+
public T withClusterConfig(List<ClusterConfig> config) {
this.clusterConfig = config;
- return self;
+ return (T) this;
}
- @Override
- public String getEndpoint() {
- return endpoint;
+ @SuppressWarnings("unchecked")
+
+ public T withEnabledGPU(Boolean enabledGPU) {
+ setEnabledGPU(enabledGPU);
+ return (T) this;
}
- @Override
- public void setEndpoint(String endpoint) {
- this.endpoint = endpoint;
+ @SuppressWarnings("unchecked")
+ public T withGPUCount(String gpuCount) {
+ setGpuCount(gpuCount);
+ return (T) this;
}
- public String getSharedImageEnabled() {
- return sharedImageEnabled;
- }
-
- public void setSharedImageEnabled(String sharedImageEnabled) {
- this.sharedImageEnabled = sharedImageEnabled;
- }
-
- public List<ClusterConfig> getClusterConfig() {
- return clusterConfig;
+ @SuppressWarnings("unchecked")
+ public T withGPUType(String gpuType) {
+ setGpuType(gpuType);
+ return (T) this;
}
@Override
diff --git a/services/datalab-model/src/main/java/com/epam/datalab/dto/gcp/exploratory/ExploratoryCreateGcp.java b/services/datalab-model/src/main/java/com/epam/datalab/dto/gcp/exploratory/ExploratoryCreateGcp.java
index a18e1db..59e270b 100644
--- a/services/datalab-model/src/main/java/com/epam/datalab/dto/gcp/exploratory/ExploratoryCreateGcp.java
+++ b/services/datalab-model/src/main/java/com/epam/datalab/dto/gcp/exploratory/ExploratoryCreateGcp.java
@@ -22,19 +22,17 @@
import com.epam.datalab.dto.exploratory.ExploratoryCreateDTO;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.google.common.base.MoreObjects;
+import lombok.Getter;
+import lombok.Setter;
+import javax.ws.rs.GET;
+
+@Getter
+@Setter
public class ExploratoryCreateGcp extends ExploratoryCreateDTO<ExploratoryCreateGcp> {
@JsonProperty("gcp_notebook_instance_size")
private String notebookInstanceSize;
- public String getNotebookInstanceSize() {
- return notebookInstanceSize;
- }
-
- public void setNotebookInstanceSize(String notebookInstanceSize) {
- this.notebookInstanceSize = notebookInstanceSize;
- }
-
public ExploratoryCreateGcp withNotebookInstanceType(String notebookInstanceType) {
setNotebookInstanceSize(notebookInstanceType);
return this;
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 a2fb984..1e47fb1 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
@@ -32,12 +32,7 @@
import com.epam.datalab.backendapi.resources.dto.aws.AwsComputationalCreateForm;
import com.epam.datalab.backendapi.resources.dto.gcp.GcpComputationalCreateForm;
import com.epam.datalab.cloud.CloudProvider;
-import com.epam.datalab.dto.LibListComputationalDTO;
-import com.epam.datalab.dto.LibListExploratoryDTO;
-import com.epam.datalab.dto.ResourceBaseDTO;
-import com.epam.datalab.dto.ResourceSysBaseDTO;
-import com.epam.datalab.dto.UserEnvironmentResources;
-import com.epam.datalab.dto.UserInstanceDTO;
+import com.epam.datalab.dto.*;
import com.epam.datalab.dto.aws.AwsCloudSettings;
import com.epam.datalab.dto.aws.computational.AwsComputationalTerminateDTO;
import com.epam.datalab.dto.aws.computational.ClusterConfig;
@@ -53,21 +48,8 @@
import com.epam.datalab.dto.base.CloudSettings;
import com.epam.datalab.dto.base.DataEngineType;
import com.epam.datalab.dto.base.computational.ComputationalBase;
-import com.epam.datalab.dto.computational.ComputationalCheckInactivityDTO;
-import com.epam.datalab.dto.computational.ComputationalClusterConfigDTO;
-import com.epam.datalab.dto.computational.ComputationalStartDTO;
-import com.epam.datalab.dto.computational.ComputationalStopDTO;
-import com.epam.datalab.dto.computational.ComputationalTerminateDTO;
-import com.epam.datalab.dto.computational.UserComputationalResource;
-import com.epam.datalab.dto.exploratory.ExploratoryActionDTO;
-import com.epam.datalab.dto.exploratory.ExploratoryCheckInactivityAction;
-import com.epam.datalab.dto.exploratory.ExploratoryCreateDTO;
-import com.epam.datalab.dto.exploratory.ExploratoryGitCredsDTO;
-import com.epam.datalab.dto.exploratory.ExploratoryGitCredsUpdateDTO;
-import com.epam.datalab.dto.exploratory.ExploratoryImageDTO;
-import com.epam.datalab.dto.exploratory.ExploratoryReconfigureSparkClusterActionDTO;
-import com.epam.datalab.dto.exploratory.LibInstallDTO;
-import com.epam.datalab.dto.exploratory.LibraryInstallDTO;
+import com.epam.datalab.dto.computational.*;
+import com.epam.datalab.dto.exploratory.*;
import com.epam.datalab.dto.gcp.GcpCloudSettings;
import com.epam.datalab.dto.gcp.computational.ComputationalCreateGcp;
import com.epam.datalab.dto.gcp.computational.GcpComputationalTerminateDTO;
@@ -88,9 +70,7 @@
import java.util.Map;
import java.util.UUID;
-import static com.epam.datalab.cloud.CloudProvider.AWS;
-import static com.epam.datalab.cloud.CloudProvider.AZURE;
-import static com.epam.datalab.cloud.CloudProvider.GCP;
+import static com.epam.datalab.cloud.CloudProvider.*;
@Singleton
public class RequestBuilder {
@@ -197,7 +177,10 @@
.withProject(exploratory.getProject())
.withEndpoint(exploratory.getEndpoint())
.withSharedImageEnabled(String.valueOf(projectDTO.isSharedImageEnabled()))
- .withTags(tags);
+ .withTags(tags)
+ .withGPUCount(exploratory.getGpuCount())
+ .withGPUType(exploratory.getGpuType())
+ .withEnabledGPU(exploratory.getEnabledGPU());
}
@SuppressWarnings("unchecked")
@@ -626,57 +609,57 @@
.key(projectDTO.getKey().replace("\n", ""))
.name(projectDTO.getName())
.tag(projectDTO.getTag())
- .endpoint(endpointDTO.getName())
- .build()
- .withCloudSettings(cloudSettings(userInfo.getName(), endpointDTO.getCloudProvider()));
+ .endpoint(endpointDTO.getName())
+ .build()
+ .withCloudSettings(cloudSettings(userInfo.getName(), endpointDTO.getCloudProvider()));
}
- public ProjectActionDTO newProjectAction(UserInfo userInfo, String project, EndpointDTO endpointDTO) {
- return new ProjectActionDTO(project, endpointDTO.getName())
- .withCloudSettings(cloudSettings(userInfo.getName(), endpointDTO.getCloudProvider()));
- }
+ public ProjectActionDTO newProjectAction(UserInfo userInfo, String project, EndpointDTO endpointDTO) {
+ return new ProjectActionDTO(project, endpointDTO.getName())
+ .withCloudSettings(cloudSettings(userInfo.getName(), endpointDTO.getCloudProvider()));
+ }
- public CreateOdahuDTO newOdahuCreate(String user, OdahuCreateDTO odahuCreateDTO, ProjectDTO projectDTO, EndpointDTO endpointDTO) {
- return CreateOdahuDTO.builder()
- .name(odahuCreateDTO.getName())
- .project(projectDTO.getName())
- .endpoint(odahuCreateDTO.getEndpoint())
- .key(projectDTO.getKey().replace("\n", ""))
- .build()
- .withEdgeUserName(getEdgeUserName(user, endpointDTO.getCloudProvider()))
- .withCloudSettings(cloudSettings(user, endpointDTO.getCloudProvider()));
- }
+ public CreateOdahuDTO newOdahuCreate(String user, OdahuCreateDTO odahuCreateDTO, ProjectDTO projectDTO, EndpointDTO endpointDTO) {
+ return CreateOdahuDTO.builder()
+ .name(odahuCreateDTO.getName())
+ .project(projectDTO.getName())
+ .endpoint(odahuCreateDTO.getEndpoint())
+ .key(projectDTO.getKey().replace("\n", ""))
+ .build()
+ .withEdgeUserName(getEdgeUserName(user, endpointDTO.getCloudProvider()))
+ .withCloudSettings(cloudSettings(user, endpointDTO.getCloudProvider()));
+ }
- public ActionOdahuDTO newOdahuAction(String user, String name, ProjectDTO projectDTO, EndpointDTO endpointDTO,
- OdahuFieldsDTO odahuFields) {
- return ActionOdahuDTO.builder()
- .name(name)
- .project(projectDTO.getName())
- .key(projectDTO.getKey().replace("\n", ""))
- .endpoint(endpointDTO.getName())
- .grafanaAdmin(odahuFields.getGrafanaAdmin())
- .grafanaPassword(odahuFields.getGrafanaPassword())
- .oauthCookieSecret(odahuFields.getOauthCookieSecret())
- .decryptToken(odahuFields.getDecryptToken())
- .build()
- .withEdgeUserName(getEdgeUserName(user, endpointDTO.getCloudProvider()))
- .withCloudSettings(cloudSettings(user, endpointDTO.getCloudProvider()));
- }
+ public ActionOdahuDTO newOdahuAction(String user, String name, ProjectDTO projectDTO, EndpointDTO endpointDTO,
+ OdahuFieldsDTO odahuFields) {
+ return ActionOdahuDTO.builder()
+ .name(name)
+ .project(projectDTO.getName())
+ .key(projectDTO.getKey().replace("\n", ""))
+ .endpoint(endpointDTO.getName())
+ .grafanaAdmin(odahuFields.getGrafanaAdmin())
+ .grafanaPassword(odahuFields.getGrafanaPassword())
+ .oauthCookieSecret(odahuFields.getOauthCookieSecret())
+ .decryptToken(odahuFields.getDecryptToken())
+ .build()
+ .withEdgeUserName(getEdgeUserName(user, endpointDTO.getCloudProvider()))
+ .withCloudSettings(cloudSettings(user, endpointDTO.getCloudProvider()));
+ }
- public UserEnvironmentResources newInfrastructureStatus(String user, CloudProvider cloudProvider, EnvResourceList resourceList) {
- return newResourceSysBaseDTO(user, cloudProvider, UserEnvironmentResources.class)
- .withResourceList(resourceList);
- }
+ public UserEnvironmentResources newInfrastructureStatus(String user, CloudProvider cloudProvider, EnvResourceList resourceList) {
+ return newResourceSysBaseDTO(user, cloudProvider, UserEnvironmentResources.class)
+ .withResourceList(resourceList);
+ }
- /**
- * Returns application name basing on docker image
- *
- * @param imageName docker image name
- * @return application name
- */
- private String getApplicationNameFromImage(String imageName) {
- if (imageName != null) {
- int pos = imageName.indexOf('-');
+ /**
+ * Returns application name basing on docker image
+ *
+ * @param imageName docker image name
+ * @return application name
+ */
+ private String getApplicationNameFromImage(String imageName) {
+ if (imageName != null) {
+ int pos = imageName.indexOf('-');
if (pos > 0) {
return imageName.substring(pos + 1);
}