You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dlab.apache.org by of...@apache.org on 2019/12/19 14:20:30 UTC

[incubator-dlab] branch DLAB-1410 created (now 69148eb)

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

ofuks pushed a change to branch DLAB-1410
in repository https://gitbox.apache.org/repos/asf/incubator-dlab.git.


      at 69148eb  [DLAB-1410] Added shared images functionality

This branch includes the following new commits:

     new 69148eb  [DLAB-1410] Added shared images functionality

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.



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


[incubator-dlab] 01/01: [DLAB-1410] Added shared images functionality

Posted by of...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ofuks pushed a commit to branch DLAB-1410
in repository https://gitbox.apache.org/repos/asf/incubator-dlab.git

commit 69148eb0eb952d2af83ec8aebff8c467e32dc20e
Author: Oleh Fuks <ol...@gmail.com>
AuthorDate: Thu Dec 19 16:20:07 2019 +0200

    [DLAB-1410] Added shared images functionality
---
 .../com/epam/dlab/dto/aws/AwsCloudSettings.java    |  2 -
 .../aws/computational/ComputationalCreateAws.java  | 15 ++++++
 .../computational/SparkComputationalCreateAws.java |  7 +++
 .../epam/dlab/dto/azure/AzureCloudSettings.java    |  2 -
 .../SparkComputationalCreateAzure.java             |  7 +++
 .../dlab/dto/exploratory/ExploratoryCreateDTO.java | 15 ++++++
 .../com/epam/dlab/dto/gcp/GcpCloudSettings.java    |  2 -
 .../gcp/computational/ComputationalCreateGcp.java  | 15 ++++++
 .../computational/SparkComputationalCreateGcp.java |  7 +++
 .../backendapi/core/commands/CommandBuilder.java   |  3 --
 .../dlab/backendapi/domain/CreateProjectDTO.java   |  4 ++
 .../epam/dlab/backendapi/domain/ProjectDTO.java    |  2 +-
 .../service/impl/ComputationalServiceImpl.java     | 23 +++++----
 .../service/impl/ExploratoryServiceImpl.java       |  7 ++-
 .../epam/dlab/backendapi/util/RequestBuilder.java  | 24 +++++----
 .../service/impl/ComputationalServiceImplTest.java | 58 ++++++++++++++++------
 .../service/impl/ExploratoryServiceImplTest.java   | 37 +++++++++++---
 17 files changed, 177 insertions(+), 53 deletions(-)

diff --git a/services/dlab-model/src/main/java/com/epam/dlab/dto/aws/AwsCloudSettings.java b/services/dlab-model/src/main/java/com/epam/dlab/dto/aws/AwsCloudSettings.java
index c27e1b2..cdc1212 100644
--- a/services/dlab-model/src/main/java/com/epam/dlab/dto/aws/AwsCloudSettings.java
+++ b/services/dlab-model/src/main/java/com/epam/dlab/dto/aws/AwsCloudSettings.java
@@ -70,8 +70,6 @@ public class AwsCloudSettings extends CloudSettings {
 	protected String confKeyDir;
 	@JsonProperty("conf_image_enabled")
 	private String imageEnabled;
-	@JsonProperty("conf_shared_image_enabled")
-	private String sharedImageEnabled;
 
 	@Override
 	@JsonIgnore
diff --git a/services/dlab-model/src/main/java/com/epam/dlab/dto/aws/computational/ComputationalCreateAws.java b/services/dlab-model/src/main/java/com/epam/dlab/dto/aws/computational/ComputationalCreateAws.java
index 5a7abdf..77021e0 100644
--- a/services/dlab-model/src/main/java/com/epam/dlab/dto/aws/computational/ComputationalCreateAws.java
+++ b/services/dlab-model/src/main/java/com/epam/dlab/dto/aws/computational/ComputationalCreateAws.java
@@ -40,6 +40,8 @@ public class ComputationalCreateAws extends ComputationalBase<ComputationalCreat
 	private String version;
 	@JsonProperty("emr_configurations")
 	private List<ClusterConfig> config;
+	@JsonProperty("conf_shared_image_enabled")
+	private String sharedImageEnabled;
 
 	public String getInstanceCount() {
 		return instanceCount;
@@ -132,6 +134,19 @@ public class ComputationalCreateAws extends ComputationalBase<ComputationalCreat
 		return this;
 	}
 
+	public String getSharedImageEnabled() {
+		return sharedImageEnabled;
+	}
+
+	public void setSharedImageEnabled(String sharedImageEnabled) {
+		this.sharedImageEnabled = sharedImageEnabled;
+	}
+
+	public ComputationalCreateAws withSharedImageEnabled(String sharedImageEnabled) {
+		setSharedImageEnabled(sharedImageEnabled);
+		return this;
+	}
+
 	@Override
 	public ToStringHelper toStringHelper(Object self) {
 		return super.toStringHelper(self)
diff --git a/services/dlab-model/src/main/java/com/epam/dlab/dto/aws/computational/SparkComputationalCreateAws.java b/services/dlab-model/src/main/java/com/epam/dlab/dto/aws/computational/SparkComputationalCreateAws.java
index d82628d..539937e 100644
--- a/services/dlab-model/src/main/java/com/epam/dlab/dto/aws/computational/SparkComputationalCreateAws.java
+++ b/services/dlab-model/src/main/java/com/epam/dlab/dto/aws/computational/SparkComputationalCreateAws.java
@@ -35,6 +35,8 @@ public class SparkComputationalCreateAws extends ComputationalBase<SparkComputat
 	private String dataEngineMasterShape;
 	@JsonProperty("spark_configurations")
 	private List<ClusterConfig> config;
+	@JsonProperty("conf_shared_image_enabled")
+	private String sharedImageEnabled;
 
 	public SparkComputationalCreateAws withDataEngineInstanceCount(String dataEngineInstanceCount) {
 		this.dataEngineInstanceCount = dataEngineInstanceCount;
@@ -56,6 +58,11 @@ public class SparkComputationalCreateAws extends ComputationalBase<SparkComputat
 		return this;
 	}
 
+	public SparkComputationalCreateAws withSharedImageEnabled(String sharedImageEnabled) {
+		this.sharedImageEnabled = sharedImageEnabled;
+		return this;
+	}
+
 	@Override
 	public MoreObjects.ToStringHelper toStringHelper(Object self) {
 		return super.toStringHelper(self)
diff --git a/services/dlab-model/src/main/java/com/epam/dlab/dto/azure/AzureCloudSettings.java b/services/dlab-model/src/main/java/com/epam/dlab/dto/azure/AzureCloudSettings.java
index 19e4f56..b8d4f5c 100644
--- a/services/dlab-model/src/main/java/com/epam/dlab/dto/azure/AzureCloudSettings.java
+++ b/services/dlab-model/src/main/java/com/epam/dlab/dto/azure/AzureCloudSettings.java
@@ -48,8 +48,6 @@ public class AzureCloudSettings extends CloudSettings {
     protected String confKeyDir;
     @JsonProperty("conf_image_enabled")
     private String imageEnabled;
-    @JsonProperty("conf_shared_image_enabled")
-    private String sharedImageEnabled;
 
     @Override
     @JsonIgnore
diff --git a/services/dlab-model/src/main/java/com/epam/dlab/dto/azure/computational/SparkComputationalCreateAzure.java b/services/dlab-model/src/main/java/com/epam/dlab/dto/azure/computational/SparkComputationalCreateAzure.java
index 1bc79fc..5902906 100644
--- a/services/dlab-model/src/main/java/com/epam/dlab/dto/azure/computational/SparkComputationalCreateAzure.java
+++ b/services/dlab-model/src/main/java/com/epam/dlab/dto/azure/computational/SparkComputationalCreateAzure.java
@@ -39,6 +39,8 @@ public class SparkComputationalCreateAzure extends ComputationalBase<SparkComput
 	private String azureUserRefreshToken;
 	@JsonProperty("spark_configurations")
 	private List<ClusterConfig> config;
+	@JsonProperty("conf_shared_image_enabled")
+	private String sharedImageEnabled;
 
 	public SparkComputationalCreateAzure withDataEngineInstanceCount(String dataEngineInstanceCount) {
 		this.dataEngineInstanceCount = dataEngineInstanceCount;
@@ -70,6 +72,11 @@ public class SparkComputationalCreateAzure extends ComputationalBase<SparkComput
 		return this;
 	}
 
+	public SparkComputationalCreateAzure withSharedImageEnabled(String sharedImageEnabled) {
+		this.sharedImageEnabled = sharedImageEnabled;
+		return this;
+	}
+
 	@Override
 	public MoreObjects.ToStringHelper toStringHelper(Object self) {
 		return super.toStringHelper(self)
diff --git a/services/dlab-model/src/main/java/com/epam/dlab/dto/exploratory/ExploratoryCreateDTO.java b/services/dlab-model/src/main/java/com/epam/dlab/dto/exploratory/ExploratoryCreateDTO.java
index 7f87951..cb32efb 100644
--- a/services/dlab-model/src/main/java/com/epam/dlab/dto/exploratory/ExploratoryCreateDTO.java
+++ b/services/dlab-model/src/main/java/com/epam/dlab/dto/exploratory/ExploratoryCreateDTO.java
@@ -41,6 +41,8 @@ public class ExploratoryCreateDTO<T extends ExploratoryCreateDTO<?>> extends Exp
 	private Map<String, String> tags;
 	@JsonProperty("endpoint_name")
 	private String endpoint;
+	@JsonProperty("conf_shared_image_enabled")
+	private String sharedImageEnabled;
 
 	/**
 	 * Return the list of GIT credentials.
@@ -82,6 +84,11 @@ public class ExploratoryCreateDTO<T extends ExploratoryCreateDTO<?>> extends Exp
 		return self;
 	}
 
+	public T withSharedImageEnabled(String sharedImageEnabled) {
+		this.sharedImageEnabled = sharedImageEnabled;
+		return self;
+	}
+
 	public String getImageName() {
 		return imageName;
 	}
@@ -103,6 +110,14 @@ public class ExploratoryCreateDTO<T extends ExploratoryCreateDTO<?>> extends Exp
 		this.endpoint = endpoint;
 	}
 
+	public String getSharedImageEnabled() {
+		return sharedImageEnabled;
+	}
+
+	public void setSharedImageEnabled(String sharedImageEnabled) {
+		this.sharedImageEnabled = sharedImageEnabled;
+	}
+
 	public List<ClusterConfig> getClusterConfig() {
 		return clusterConfig;
 	}
diff --git a/services/dlab-model/src/main/java/com/epam/dlab/dto/gcp/GcpCloudSettings.java b/services/dlab-model/src/main/java/com/epam/dlab/dto/gcp/GcpCloudSettings.java
index 370da91..ce6f1b7 100644
--- a/services/dlab-model/src/main/java/com/epam/dlab/dto/gcp/GcpCloudSettings.java
+++ b/services/dlab-model/src/main/java/com/epam/dlab/dto/gcp/GcpCloudSettings.java
@@ -64,8 +64,6 @@ public class GcpCloudSettings extends CloudSettings {
 	protected String region;
 	@JsonProperty("conf_image_enabled")
 	private String imageEnabled;
-	@JsonProperty("conf_shared_image_enabled")
-	private String sharedImageEnabled;
 
 	@Override
 	@JsonIgnore
diff --git a/services/dlab-model/src/main/java/com/epam/dlab/dto/gcp/computational/ComputationalCreateGcp.java b/services/dlab-model/src/main/java/com/epam/dlab/dto/gcp/computational/ComputationalCreateGcp.java
index c65d2ff..1ab5698 100644
--- a/services/dlab-model/src/main/java/com/epam/dlab/dto/gcp/computational/ComputationalCreateGcp.java
+++ b/services/dlab-model/src/main/java/com/epam/dlab/dto/gcp/computational/ComputationalCreateGcp.java
@@ -36,6 +36,8 @@ public class ComputationalCreateGcp extends ComputationalBase<ComputationalCreat
     private String preemptibleCount;
     @JsonProperty("dataproc_version")
     private String version;
+    @JsonProperty("conf_shared_image_enabled")
+    private String sharedImageEnabled;
 
     public ComputationalCreateGcp withMasterInstanceCount(String masterInstanceCount) {
         this.masterInstanceCount = masterInstanceCount;
@@ -67,6 +69,19 @@ public class ComputationalCreateGcp extends ComputationalBase<ComputationalCreat
         return this;
     }
 
+    public String getSharedImageEnabled() {
+        return sharedImageEnabled;
+    }
+
+    public void setSharedImageEnabled(String sharedImageEnabled) {
+        this.sharedImageEnabled = sharedImageEnabled;
+    }
+
+    public ComputationalCreateGcp withSharedImageEnabled(String sharedImageEnabled) {
+        setSharedImageEnabled(sharedImageEnabled);
+        return this;
+    }
+
     @Override
     public MoreObjects.ToStringHelper toStringHelper(Object self) {
         return super.toStringHelper(self)
diff --git a/services/dlab-model/src/main/java/com/epam/dlab/dto/gcp/computational/SparkComputationalCreateGcp.java b/services/dlab-model/src/main/java/com/epam/dlab/dto/gcp/computational/SparkComputationalCreateGcp.java
index 98cfb32..e21881b 100644
--- a/services/dlab-model/src/main/java/com/epam/dlab/dto/gcp/computational/SparkComputationalCreateGcp.java
+++ b/services/dlab-model/src/main/java/com/epam/dlab/dto/gcp/computational/SparkComputationalCreateGcp.java
@@ -37,6 +37,8 @@ public class SparkComputationalCreateGcp extends ComputationalBase<SparkComputat
 	private String dataEngineMasterSize;
 	@JsonProperty("spark_configurations")
 	private List<ClusterConfig> config;
+	@JsonProperty("conf_shared_image_enabled")
+	private String sharedImageEnabled;
 
 	public SparkComputationalCreateGcp withDataEngineInstanceCount(String dataEngineInstanceCount) {
 		this.dataEngineInstanceCount = dataEngineInstanceCount;
@@ -58,6 +60,11 @@ public class SparkComputationalCreateGcp extends ComputationalBase<SparkComputat
 		return this;
 	}
 
+	public SparkComputationalCreateGcp withSharedImageEnabled(String sharedImageEnabled) {
+		this.sharedImageEnabled = sharedImageEnabled;
+		return this;
+	}
+
 
 	@Override
 	public MoreObjects.ToStringHelper toStringHelper(Object self) {
diff --git a/services/provisioning-service/src/main/java/com/epam/dlab/backendapi/core/commands/CommandBuilder.java b/services/provisioning-service/src/main/java/com/epam/dlab/backendapi/core/commands/CommandBuilder.java
index 68e337b..123c96f 100644
--- a/services/provisioning-service/src/main/java/com/epam/dlab/backendapi/core/commands/CommandBuilder.java
+++ b/services/provisioning-service/src/main/java/com/epam/dlab/backendapi/core/commands/CommandBuilder.java
@@ -90,7 +90,6 @@ public class CommandBuilder {
 				.confKeyDir(cloudConfiguration.getConfKeyDir())
 				.azureIamUser(settings.getIamUser())
 				.imageEnabled(String.valueOf(cloudConfiguration.isImageEnabled()))
-				.sharedImageEnabled(String.valueOf(cloudConfiguration.isSharedImageEnabled()))
 				.build();
 	}
 
@@ -113,7 +112,6 @@ public class CommandBuilder {
 				.confKeyDir(cloudConfiguration.getConfKeyDir())
 				.gcpIamUser(settings.getIamUser())
 				.imageEnabled(String.valueOf(cloudConfiguration.isImageEnabled()))
-				.sharedImageEnabled(String.valueOf(cloudConfiguration.isSharedImageEnabled()))
 				.build();
 	}
 
@@ -139,7 +137,6 @@ public class CommandBuilder {
 				.os(cloudConfiguration.getOs())
 				.confKeyDir(cloudConfiguration.getConfKeyDir())
 				.imageEnabled(String.valueOf(cloudConfiguration.isImageEnabled()))
-				.sharedImageEnabled(String.valueOf(cloudConfiguration.isSharedImageEnabled()))
 				.build();
 	}
 }
diff --git a/services/self-service/src/main/java/com/epam/dlab/backendapi/domain/CreateProjectDTO.java b/services/self-service/src/main/java/com/epam/dlab/backendapi/domain/CreateProjectDTO.java
index 2e315b4..0c687e3 100644
--- a/services/self-service/src/main/java/com/epam/dlab/backendapi/domain/CreateProjectDTO.java
+++ b/services/self-service/src/main/java/com/epam/dlab/backendapi/domain/CreateProjectDTO.java
@@ -1,5 +1,6 @@
 package com.epam.dlab.backendapi.domain;
 
+import com.fasterxml.jackson.annotation.JsonProperty;
 import lombok.Data;
 
 import javax.validation.constraints.NotNull;
@@ -18,4 +19,7 @@ public class CreateProjectDTO {
 	private final String key;
 	@NotNull
 	private final String tag;
+	@NotNull
+	@JsonProperty("shared_image_enabled")
+	private boolean sharedImageEnabled;
 }
diff --git a/services/self-service/src/main/java/com/epam/dlab/backendapi/domain/ProjectDTO.java b/services/self-service/src/main/java/com/epam/dlab/backendapi/domain/ProjectDTO.java
index 2f53873..d440539 100644
--- a/services/self-service/src/main/java/com/epam/dlab/backendapi/domain/ProjectDTO.java
+++ b/services/self-service/src/main/java/com/epam/dlab/backendapi/domain/ProjectDTO.java
@@ -23,7 +23,7 @@ public class ProjectDTO {
 	private final String tag;
 	private final Integer budget;
 	private final List<ProjectEndpointDTO> endpoints;
-	private boolean useSharedImage;
+	private boolean sharedImageEnabled;
 
 
 	public enum Status {
diff --git a/services/self-service/src/main/java/com/epam/dlab/backendapi/service/impl/ComputationalServiceImpl.java b/services/self-service/src/main/java/com/epam/dlab/backendapi/service/impl/ComputationalServiceImpl.java
index 5133485..ab26b7c 100644
--- a/services/self-service/src/main/java/com/epam/dlab/backendapi/service/impl/ComputationalServiceImpl.java
+++ b/services/self-service/src/main/java/com/epam/dlab/backendapi/service/impl/ComputationalServiceImpl.java
@@ -25,11 +25,13 @@ import com.epam.dlab.backendapi.annotation.BudgetLimited;
 import com.epam.dlab.backendapi.annotation.Project;
 import com.epam.dlab.backendapi.dao.ComputationalDAO;
 import com.epam.dlab.backendapi.dao.ExploratoryDAO;
+import com.epam.dlab.backendapi.domain.ProjectDTO;
 import com.epam.dlab.backendapi.domain.RequestId;
 import com.epam.dlab.backendapi.resources.dto.ComputationalCreateFormDTO;
 import com.epam.dlab.backendapi.resources.dto.SparkStandaloneClusterCreateForm;
 import com.epam.dlab.backendapi.service.ComputationalService;
 import com.epam.dlab.backendapi.service.EndpointService;
+import com.epam.dlab.backendapi.service.ProjectService;
 import com.epam.dlab.backendapi.service.TagService;
 import com.epam.dlab.backendapi.util.RequestBuilder;
 import com.epam.dlab.constants.ServiceConsts;
@@ -76,11 +78,11 @@ public class ComputationalServiceImpl implements ComputationalService {
 	}
 
 	@Inject
+	private ProjectService projectService;
+	@Inject
 	private ExploratoryDAO exploratoryDAO;
-
 	@Inject
 	private ComputationalDAO computationalDAO;
-
 	@Inject
 	@Named(ServiceConsts.PROVISIONING_SERVICE_NAME)
 	private RESTService provisioningService;
@@ -96,10 +98,9 @@ public class ComputationalServiceImpl implements ComputationalService {
 
 	@BudgetLimited
 	@Override
-	public boolean createSparkCluster(UserInfo userInfo, SparkStandaloneClusterCreateForm form,
-									  @Project String project) {
-
+	public boolean createSparkCluster(UserInfo userInfo, SparkStandaloneClusterCreateForm form, @Project String project) {
 
+		final ProjectDTO projectDTO = projectService.get(project);
 		final UserInstanceDTO instance =
 				exploratoryDAO.fetchExploratoryFields(userInfo.getName(), form.getNotebookName());
 		final SparkStandaloneClusterResource compResource = createInitialComputationalResource(form);
@@ -107,10 +108,11 @@ public class ComputationalServiceImpl implements ComputationalService {
 				form.getCustomTag()));
 		if (computationalDAO.addComputational(userInfo.getName(), form.getNotebookName(), compResource)) {
 			try {
-				ComputationalBase<?> dto = requestBuilder.newComputationalCreate(userInfo, instance, form);
+				ComputationalBase<?> dto = requestBuilder.newComputationalCreate(userInfo, projectDTO, instance, form);
 
 				String uuid =
-						provisioningService.post(endpointService.get(instance.getEndpoint()).getUrl() + ComputationalAPI.COMPUTATIONAL_CREATE_SPARK,
+						provisioningService.post(endpointService.get(instance.getEndpoint()).getUrl() +
+										ComputationalAPI.COMPUTATIONAL_CREATE_SPARK,
 								userInfo.getAccessToken(), dto, String.class);
 				requestId.put(userInfo.getName(), uuid);
 				return true;
@@ -166,6 +168,7 @@ public class ComputationalServiceImpl implements ComputationalService {
 	public boolean createDataEngineService(UserInfo userInfo, ComputationalCreateFormDTO formDTO,
 										   UserComputationalResource computationalResource, @Project String project) {
 
+		final ProjectDTO projectDTO = projectService.get(project);
 		final UserInstanceDTO instance = exploratoryDAO.fetchExploratoryFields(userInfo.getName(), formDTO
 				.getNotebookName());
 		final Map<String, String> tags = tagService.getResourceTags(userInfo, instance.getEndpoint(), project,
@@ -177,8 +180,10 @@ public class ComputationalServiceImpl implements ComputationalService {
 		if (isAdded) {
 			try {
 				String uuid =
-						provisioningService.post(endpointService.get(instance.getEndpoint()).getUrl() + COMPUTATIONAL_CREATE_CLOUD_SPECIFIC, userInfo.getAccessToken(),
-								requestBuilder.newComputationalCreate(userInfo, instance, formDTO), String.class);
+						provisioningService.post(endpointService.get(instance.getEndpoint()).getUrl() +
+										COMPUTATIONAL_CREATE_CLOUD_SPECIFIC, userInfo.getAccessToken(),
+								requestBuilder.newComputationalCreate(userInfo, projectDTO, instance, formDTO),
+								String.class);
 				requestId.put(userInfo.getName(), uuid);
 				return true;
 			} catch (Exception t) {
diff --git a/services/self-service/src/main/java/com/epam/dlab/backendapi/service/impl/ExploratoryServiceImpl.java b/services/self-service/src/main/java/com/epam/dlab/backendapi/service/impl/ExploratoryServiceImpl.java
index 12968a3..fe710f5 100644
--- a/services/self-service/src/main/java/com/epam/dlab/backendapi/service/impl/ExploratoryServiceImpl.java
+++ b/services/self-service/src/main/java/com/epam/dlab/backendapi/service/impl/ExploratoryServiceImpl.java
@@ -26,9 +26,11 @@ import com.epam.dlab.backendapi.dao.ComputationalDAO;
 import com.epam.dlab.backendapi.dao.ExploratoryDAO;
 import com.epam.dlab.backendapi.dao.GitCredsDAO;
 import com.epam.dlab.backendapi.dao.ImageExploratoryDao;
+import com.epam.dlab.backendapi.domain.ProjectDTO;
 import com.epam.dlab.backendapi.domain.RequestId;
 import com.epam.dlab.backendapi.service.EndpointService;
 import com.epam.dlab.backendapi.service.ExploratoryService;
+import com.epam.dlab.backendapi.service.ProjectService;
 import com.epam.dlab.backendapi.service.TagService;
 import com.epam.dlab.backendapi.util.RequestBuilder;
 import com.epam.dlab.constants.ServiceConsts;
@@ -60,6 +62,8 @@ import static com.epam.dlab.rest.contracts.ExploratoryAPI.*;
 public class ExploratoryServiceImpl implements ExploratoryService {
 
 	@Inject
+	private ProjectService projectService;
+	@Inject
 	private ExploratoryDAO exploratoryDAO;
 	@Inject
 	private ComputationalDAO computationalDAO;
@@ -100,6 +104,7 @@ public class ExploratoryServiceImpl implements ExploratoryService {
 	public String create(UserInfo userInfo, Exploratory exploratory, @Project String project) {
 		boolean isAdded = false;
 		try {
+			final ProjectDTO projectDTO = projectService.get(project);
 			final UserInstanceDTO userInstanceDTO = getUserInstanceDTO(userInfo, exploratory, project);
 			exploratoryDAO.insertExploratory(userInstanceDTO);
 			isAdded = true;
@@ -108,7 +113,7 @@ public class ExploratoryServiceImpl implements ExploratoryService {
 			final String uuid =
 					provisioningService.post(endpointService.get(userInstanceDTO.getEndpoint()).getUrl() + EXPLORATORY_CREATE,
 							userInfo.getAccessToken(),
-							requestBuilder.newExploratoryCreate(exploratory, userInfo, gitCreds,
+							requestBuilder.newExploratoryCreate(projectDTO, exploratory, userInfo, gitCreds,
 									userInstanceDTO.getTags()),
 							String.class);
 			requestId.put(userInfo.getName(), uuid);
diff --git a/services/self-service/src/main/java/com/epam/dlab/backendapi/util/RequestBuilder.java b/services/self-service/src/main/java/com/epam/dlab/backendapi/util/RequestBuilder.java
index ac858e0..d4f690e 100644
--- a/services/self-service/src/main/java/com/epam/dlab/backendapi/util/RequestBuilder.java
+++ b/services/self-service/src/main/java/com/epam/dlab/backendapi/util/RequestBuilder.java
@@ -186,7 +186,8 @@ public class RequestBuilder {
 	}
 
 	@SuppressWarnings("unchecked")
-	public <T extends ExploratoryCreateDTO<T>> T newExploratoryCreate(Exploratory exploratory, UserInfo userInfo,
+	public <T extends ExploratoryCreateDTO<T>> T newExploratoryCreate(ProjectDTO projectDTO, Exploratory exploratory,
+																	  UserInfo userInfo,
 																	  ExploratoryGitCredsDTO exploratoryGitCredsDTO,
 																	  Map<String, String> tags) {
 
@@ -224,6 +225,7 @@ public class RequestBuilder {
 				.withClusterConfig(exploratory.getClusterConfig())
 				.withProject(exploratory.getProject())
 				.withEndpoint(exploratory.getEndpoint())
+				.withSharedImageEnabled(String.valueOf(projectDTO.isSharedImageEnabled()))
 				.withTags(tags);
 	}
 
@@ -363,7 +365,7 @@ public class RequestBuilder {
 	}
 
 	@SuppressWarnings("unchecked")
-	public <T extends ComputationalBase<T>> T newComputationalCreate(UserInfo userInfo,
+	public <T extends ComputationalBase<T>> T newComputationalCreate(UserInfo userInfo, ProjectDTO projectDTO,
 																	 UserInstanceDTO userInstance,
 																	 ComputationalCreateFormDTO form) {
 		T computationalCreate;
@@ -380,7 +382,8 @@ public class RequestBuilder {
 						.withSlaveInstanceSpot(awsForm.getSlaveInstanceSpot())
 						.withSlaveInstanceSpotPctPrice(awsForm.getSlaveInstanceSpotPctPrice())
 						.withVersion(awsForm.getVersion())
-						.withConfig((awsForm.getConfig()));
+						.withConfig((awsForm.getConfig()))
+						.withSharedImageEnabled(String.valueOf(projectDTO.isSharedImageEnabled()));
 				break;
 			case GCP:
 				GcpComputationalCreateForm gcpForm = (GcpComputationalCreateForm) form;
@@ -390,7 +393,8 @@ public class RequestBuilder {
 						.withPreemptibleCount(gcpForm.getPreemptibleCount())
 						.withMasterInstanceType(gcpForm.getMasterInstanceType())
 						.withSlaveInstanceType(gcpForm.getSlaveInstanceType())
-						.withVersion(gcpForm.getVersion());
+						.withVersion(gcpForm.getVersion())
+						.withSharedImageEnabled(String.valueOf(projectDTO.isSharedImageEnabled()));
 				break;
 
 			default:
@@ -409,7 +413,7 @@ public class RequestBuilder {
 	}
 
 	@SuppressWarnings("unchecked")
-	public <T extends ComputationalBase<T>> T newComputationalCreate(UserInfo userInfo,
+	public <T extends ComputationalBase<T>> T newComputationalCreate(UserInfo userInfo, ProjectDTO projectDTO,
 																	 UserInstanceDTO userInstance,
 																	 SparkStandaloneClusterCreateForm form) {
 
@@ -421,14 +425,16 @@ public class RequestBuilder {
 						.withDataEngineInstanceCount(form.getDataEngineInstanceCount())
 						.withDataEngineMasterShape(form.getDataEngineInstanceShape())
 						.withDataEngineSlaveShape(form.getDataEngineInstanceShape())
-						.withConfig(form.getConfig());
+						.withConfig(form.getConfig())
+						.withSharedImageEnabled(String.valueOf(projectDTO.isSharedImageEnabled()));
 				break;
 			case AZURE:
 				computationalCreate = (T) newResourceSysBaseDTO(userInfo, SparkComputationalCreateAzure.class)
 						.withDataEngineInstanceCount(form.getDataEngineInstanceCount())
 						.withDataEngineMasterSize(form.getDataEngineInstanceShape())
 						.withDataEngineSlaveSize(form.getDataEngineInstanceShape())
-						.withConfig(form.getConfig());
+						.withConfig(form.getConfig())
+						.withSharedImageEnabled(String.valueOf(projectDTO.isSharedImageEnabled()));
 				if (settingsDAO.isAzureDataLakeEnabled()) {
 					((SparkComputationalCreateAzure) computationalCreate)
 							.withAzureUserRefreshToken(userInfo.getKeys().get(AZURE_REFRESH_TOKEN_KEY));
@@ -443,7 +449,8 @@ public class RequestBuilder {
 						.withDataEngineInstanceCount(form.getDataEngineInstanceCount())
 						.withDataEngineMasterSize(form.getDataEngineInstanceShape())
 						.withDataEngineSlaveSize(form.getDataEngineInstanceShape())
-						.withConfig(form.getConfig());
+						.withConfig(form.getConfig())
+						.withSharedImageEnabled(String.valueOf(projectDTO.isSharedImageEnabled()));
 				break;
 			default:
 				throw new IllegalArgumentException(UNSUPPORTED_CLOUD_PROVIDER_MESSAGE + cloudProvider());
@@ -625,7 +632,6 @@ public class RequestBuilder {
 				.name(projectDTO.getName())
 				.tag(projectDTO.getTag())
 				.endpoint(endpoint)
-				.useSharedImage(String.valueOf(projectDTO.isUseSharedImage()))
 				.build()
 				.withCloudSettings(cloudSettings(userInfo));
 	}
diff --git a/services/self-service/src/test/java/com/epam/dlab/backendapi/service/impl/ComputationalServiceImplTest.java b/services/self-service/src/test/java/com/epam/dlab/backendapi/service/impl/ComputationalServiceImplTest.java
index 24e0791..8d568eb 100644
--- a/services/self-service/src/test/java/com/epam/dlab/backendapi/service/impl/ComputationalServiceImplTest.java
+++ b/services/self-service/src/test/java/com/epam/dlab/backendapi/service/impl/ComputationalServiceImplTest.java
@@ -24,10 +24,13 @@ import com.epam.dlab.backendapi.conf.SelfServiceApplicationConfiguration;
 import com.epam.dlab.backendapi.dao.ComputationalDAO;
 import com.epam.dlab.backendapi.dao.ExploratoryDAO;
 import com.epam.dlab.backendapi.domain.EndpointDTO;
+import com.epam.dlab.backendapi.domain.ProjectDTO;
+import com.epam.dlab.backendapi.domain.ProjectEndpointDTO;
 import com.epam.dlab.backendapi.domain.RequestId;
 import com.epam.dlab.backendapi.resources.dto.ComputationalCreateFormDTO;
 import com.epam.dlab.backendapi.resources.dto.SparkStandaloneClusterCreateForm;
 import com.epam.dlab.backendapi.service.EndpointService;
+import com.epam.dlab.backendapi.service.ProjectService;
 import com.epam.dlab.backendapi.service.TagService;
 import com.epam.dlab.backendapi.util.RequestBuilder;
 import com.epam.dlab.dto.SchedulerJobDTO;
@@ -36,6 +39,7 @@ import com.epam.dlab.dto.UserInstanceStatus;
 import com.epam.dlab.dto.aws.computational.ClusterConfig;
 import com.epam.dlab.dto.base.DataEngineType;
 import com.epam.dlab.dto.base.computational.ComputationalBase;
+import com.epam.dlab.dto.base.edge.EdgeInfo;
 import com.epam.dlab.dto.computational.*;
 import com.epam.dlab.exceptions.DlabException;
 import com.epam.dlab.exceptions.ResourceNotFoundException;
@@ -88,6 +92,8 @@ public class ComputationalServiceImplTest {
 	private UserComputationalResource ucResource;
 
 	@Mock
+	private ProjectService projectService;
+	@Mock
 	private ExploratoryDAO exploratoryDAO;
 	@Mock
 	private ComputationalDAO computationalDAO;
@@ -125,14 +131,16 @@ public class ComputationalServiceImplTest {
 
 	@Test
 	public void createSparkCluster() {
+		ProjectDTO projectDTO = getProjectDTO();
+		when(projectService.get(anyString())).thenReturn(projectDTO);
 		when(endpointService.get(anyString())).thenReturn(endpointDTO());
 		when(computationalDAO.addComputational(anyString(), anyString(),
 				any(SparkStandaloneClusterResource.class))).thenReturn(true);
 		when(exploratoryDAO.fetchExploratoryFields(anyString(), anyString())).thenReturn(userInstance);
 
 		ComputationalBase compBaseMocked = mock(ComputationalBase.class);
-		when(requestBuilder.newComputationalCreate(any(UserInfo.class), any(UserInstanceDTO.class),
-				any(SparkStandaloneClusterCreateForm.class))).thenReturn(compBaseMocked);
+		when(requestBuilder.newComputationalCreate(any(UserInfo.class), any(ProjectDTO.class),
+				any(UserInstanceDTO.class), any(SparkStandaloneClusterCreateForm.class))).thenReturn(compBaseMocked);
 		when(provisioningService.post(anyString(), anyString(), any(ComputationalBase.class), any())).thenReturn(UUID);
 		when(requestId.put(anyString(), anyString())).thenReturn(UUID);
 
@@ -141,19 +149,20 @@ public class ComputationalServiceImplTest {
 				computationalService.createSparkCluster(userInfo, sparkClusterCreateForm, "");
 		assertTrue(creationResult);
 
+		verify(projectService).get("");
 		verify(computationalDAO)
 				.addComputational(eq(USER), eq(EXPLORATORY_NAME), refEq(sparkClusterResource));
 
 		verify(exploratoryDAO).fetchExploratoryFields(USER, EXPLORATORY_NAME);
 		verify(requestBuilder).newComputationalCreate(
-				refEq(userInfo), refEq(userInstance), refEq(sparkClusterCreateForm));
+				refEq(userInfo), refEq(projectDTO), refEq(userInstance), refEq(sparkClusterCreateForm));
 
 		verify(provisioningService)
 				.post(endpointDTO().getUrl() + ComputationalAPI.COMPUTATIONAL_CREATE_SPARK, TOKEN, compBaseMocked,
 						String.class);
 
 		verify(requestId).put(USER, UUID);
-		verifyNoMoreInteractions(configuration, computationalDAO, requestBuilder, provisioningService, requestId);
+		verifyNoMoreInteractions(projectService, configuration, computationalDAO, requestBuilder, provisioningService, requestId);
 	}
 	@Test
 	public void createSparkClusterWhenResourceAlreadyExists() {
@@ -197,13 +206,15 @@ public class ComputationalServiceImplTest {
 
 	@Test
 	public void createSparkClusterWhenMethodNewComputationalCreateThrowsException() {
+		ProjectDTO projectDTO = getProjectDTO();
+		when(projectService.get(anyString())).thenReturn(projectDTO);
 		when(computationalDAO.addComputational(anyString(), anyString(),
 				any(SparkStandaloneClusterResource.class))).thenReturn(true);
 		when(exploratoryDAO.fetchExploratoryFields(anyString(), anyString())).thenReturn(userInstance);
 
 		doThrow(new DlabException("Cannot create instance of resource class "))
-				.when(requestBuilder).newComputationalCreate(any(UserInfo.class), any(UserInstanceDTO.class),
-				any(SparkStandaloneClusterCreateForm.class));
+				.when(requestBuilder).newComputationalCreate(any(UserInfo.class), any(ProjectDTO.class),
+				any(UserInstanceDTO.class), any(SparkStandaloneClusterCreateForm.class));
 
 		when(computationalDAO.updateComputationalStatus(any(ComputationalStatusDTO.class)))
 				.thenReturn(mock(UpdateResult.class));
@@ -214,11 +225,12 @@ public class ComputationalServiceImplTest {
 		} catch (DlabException e) {
 			assertEquals("Cannot create instance of resource class ", e.getMessage());
 		}
+		verify(projectService).get("");
 		verify(computationalDAO).addComputational(USER, EXPLORATORY_NAME, sparkClusterResource);
 		verify(computationalDAO).updateComputationalStatus(refEq(computationalStatusDTOWithStatusFailed, "self"));
 		verify(exploratoryDAO).fetchExploratoryFields(USER, EXPLORATORY_NAME);
-		verify(requestBuilder).newComputationalCreate(userInfo, userInstance, sparkClusterCreateForm);
-		verifyNoMoreInteractions(configuration, computationalDAO, exploratoryDAO, requestBuilder);
+		verify(requestBuilder).newComputationalCreate(userInfo, projectDTO, userInstance, sparkClusterCreateForm);
+		verifyNoMoreInteractions(projectService, configuration, computationalDAO, exploratoryDAO, requestBuilder);
 	}
 
 	@Test
@@ -345,14 +357,16 @@ public class ComputationalServiceImplTest {
 
 	@Test
 	public void createDataEngineService() {
+		ProjectDTO projectDTO = getProjectDTO();
+		when(projectService.get(anyString())).thenReturn(projectDTO);
 		when(endpointService.get(anyString())).thenReturn(endpointDTO());
 		when(computationalDAO.addComputational(anyString(), anyString(), any(UserComputationalResource.class)))
 				.thenReturn(true);
 		when(exploratoryDAO.fetchExploratoryFields(anyString(), anyString())).thenReturn(userInstance);
 
 		ComputationalBase compBaseMocked = mock(ComputationalBase.class);
-		when(requestBuilder.newComputationalCreate(any(UserInfo.class), any(UserInstanceDTO.class),
-				any(ComputationalCreateFormDTO.class))).thenReturn(compBaseMocked);
+		when(requestBuilder.newComputationalCreate(any(UserInfo.class), any(ProjectDTO.class),
+				any(UserInstanceDTO.class), any(ComputationalCreateFormDTO.class))).thenReturn(compBaseMocked);
 
 		when(provisioningService.post(anyString(), anyString(), any(ComputationalBase.class), any())).thenReturn(UUID);
 		when(requestId.put(anyString(), anyString())).thenReturn(UUID);
@@ -361,19 +375,21 @@ public class ComputationalServiceImplTest {
 				computationalService.createDataEngineService(userInfo, formList.get(1), ucResource, "");
 		assertTrue(creationResult);
 
+		verify(projectService).get("");
+
 		verify(computationalDAO).addComputational(eq(USER), eq(EXPLORATORY_NAME), refEq(ucResource));
 
 		verify(exploratoryDAO).fetchExploratoryFields(USER, EXPLORATORY_NAME);
 
 		verify(requestBuilder).newComputationalCreate(
-				refEq(userInfo), refEq(userInstance), any(ComputationalCreateFormDTO.class));
+				refEq(userInfo), refEq(projectDTO), refEq(userInstance), any(ComputationalCreateFormDTO.class));
 
 		verify(provisioningService)
 				.post(endpointDTO().getUrl() + ComputationalAPI.COMPUTATIONAL_CREATE_CLOUD_SPECIFIC, TOKEN,
 						compBaseMocked, String.class);
 
 		verify(requestId).put(USER, UUID);
-		verifyNoMoreInteractions(computationalDAO, exploratoryDAO, requestBuilder, provisioningService, requestId);
+		verifyNoMoreInteractions(projectService, computationalDAO, exploratoryDAO, requestBuilder, provisioningService, requestId);
 	}
 
 	@Test
@@ -418,14 +434,16 @@ public class ComputationalServiceImplTest {
 
 	@Test
 	public void createDataEngineServiceWhenMethodNewComputationalCreateThrowsException() {
+		ProjectDTO projectDTO = getProjectDTO();
+		when(projectService.get(anyString())).thenReturn(projectDTO);
 		when(endpointService.get(anyString())).thenReturn(endpointDTO());
 		when(computationalDAO.addComputational(anyString(), anyString(), any(UserComputationalResource.class)))
 				.thenReturn(true);
 		when(exploratoryDAO.fetchExploratoryFields(anyString(), anyString())).thenReturn(userInstance);
 
 		doThrow(new DlabException("Cannot create instance of resource class "))
-				.when(requestBuilder).newComputationalCreate(any(UserInfo.class), any(UserInstanceDTO.class),
-				any(ComputationalCreateFormDTO.class));
+				.when(requestBuilder).newComputationalCreate(any(UserInfo.class), any(ProjectDTO.class),
+				any(UserInstanceDTO.class), any(ComputationalCreateFormDTO.class));
 
 		when(computationalDAO.updateComputationalStatus(any(ComputationalStatusDTO.class)))
 				.thenReturn(mock(UpdateResult.class));
@@ -438,13 +456,14 @@ public class ComputationalServiceImplTest {
 					"Cannot create instance of resource class ", e.getMessage());
 		}
 
+		verify(projectService).get("");
 		verify(computationalDAO).addComputational(eq(USER), eq(EXPLORATORY_NAME), refEq(ucResource));
 		verify(exploratoryDAO).fetchExploratoryFields(USER, EXPLORATORY_NAME);
 		verify(requestBuilder).newComputationalCreate(
-				refEq(userInfo), refEq(userInstance), refEq(computationalCreateFormDTO));
+				refEq(userInfo), refEq(projectDTO), refEq(userInstance), refEq(computationalCreateFormDTO));
 		verify(computationalDAO).updateComputationalStatus(refEq(computationalStatusDTOWithStatusFailed, "self"));
 
-		verifyNoMoreInteractions(computationalDAO, exploratoryDAO, requestBuilder);
+		verifyNoMoreInteractions(projectService, computationalDAO, exploratoryDAO, requestBuilder);
 	}
 
 	@Test
@@ -737,4 +756,11 @@ public class ComputationalServiceImplTest {
 		return ucResource;
 	}
 
+	private ProjectDTO getProjectDTO() {
+		ProjectDTO projectDTO = new ProjectDTO("project", Collections.emptySet(), "", "", null,
+				singletonList(new ProjectEndpointDTO("endpoint", UserInstanceStatus.RUNNING,
+						new EdgeInfo())));
+		projectDTO.setSharedImageEnabled(true);
+		return projectDTO;
+	}
 }
diff --git a/services/self-service/src/test/java/com/epam/dlab/backendapi/service/impl/ExploratoryServiceImplTest.java b/services/self-service/src/test/java/com/epam/dlab/backendapi/service/impl/ExploratoryServiceImplTest.java
index 8f532ff..0b698cc 100644
--- a/services/self-service/src/test/java/com/epam/dlab/backendapi/service/impl/ExploratoryServiceImplTest.java
+++ b/services/self-service/src/test/java/com/epam/dlab/backendapi/service/impl/ExploratoryServiceImplTest.java
@@ -24,14 +24,18 @@ import com.epam.dlab.backendapi.dao.ComputationalDAO;
 import com.epam.dlab.backendapi.dao.ExploratoryDAO;
 import com.epam.dlab.backendapi.dao.GitCredsDAO;
 import com.epam.dlab.backendapi.domain.EndpointDTO;
+import com.epam.dlab.backendapi.domain.ProjectDTO;
+import com.epam.dlab.backendapi.domain.ProjectEndpointDTO;
 import com.epam.dlab.backendapi.domain.RequestId;
 import com.epam.dlab.backendapi.service.EndpointService;
+import com.epam.dlab.backendapi.service.ProjectService;
 import com.epam.dlab.backendapi.service.TagService;
 import com.epam.dlab.backendapi.util.RequestBuilder;
 import com.epam.dlab.dto.StatusEnvBaseDTO;
 import com.epam.dlab.dto.UserInstanceDTO;
 import com.epam.dlab.dto.UserInstanceStatus;
 import com.epam.dlab.dto.aws.computational.ClusterConfig;
+import com.epam.dlab.dto.base.edge.EdgeInfo;
 import com.epam.dlab.dto.computational.UserComputationalResource;
 import com.epam.dlab.dto.exploratory.*;
 import com.epam.dlab.exceptions.DlabException;
@@ -64,12 +68,16 @@ public class ExploratoryServiceImplTest {
 	private final String TOKEN = "token";
 	private final String EXPLORATORY_NAME = "expName";
 	private final String UUID = "1234-56789765-4321";
+	private static final String ENDPOINT_NAME = "endpointName";
+
 
 	private UserInfo userInfo;
 	private UserInstanceDTO userInstance;
 	private StatusEnvBaseDTO statusEnvBaseDTO;
 
 	@Mock
+	private ProjectService projectService;
+	@Mock
 	private ExploratoryDAO exploratoryDAO;
 	@Mock
 	private ComputationalDAO computationalDAO;
@@ -257,6 +265,8 @@ public class ExploratoryServiceImplTest {
 
 	@Test
 	public void create() {
+		ProjectDTO projectDTO = getProjectDTO();
+		when(projectService.get(anyString())).thenReturn(projectDTO);
 		when(endpointService.get(anyString())).thenReturn(endpointDTO());
 		doNothing().when(exploratoryDAO).insertExploratory(any(UserInstanceDTO.class));
 		ExploratoryGitCredsDTO egcDto = new ExploratoryGitCredsDTO();
@@ -264,8 +274,8 @@ public class ExploratoryServiceImplTest {
 
 		ExploratoryCreateDTO ecDto = new ExploratoryCreateDTO();
 		Exploratory exploratory = Exploratory.builder().name(EXPLORATORY_NAME).build();
-		when(requestBuilder.newExploratoryCreate(any(Exploratory.class), any(UserInfo.class),
-				any(ExploratoryGitCredsDTO.class), anyMapOf(String.class, String.class))).thenReturn(ecDto);
+		when(requestBuilder.newExploratoryCreate(any(ProjectDTO.class), any(Exploratory.class),
+				any(UserInfo.class), any(ExploratoryGitCredsDTO.class), anyMapOf(String.class, String.class))).thenReturn(ecDto);
 		String exploratoryCreate = "exploratory/create";
 		when(provisioningService.post(anyString(), anyString(), any(ExploratoryCreateDTO.class), any()))
 				.thenReturn(UUID);
@@ -277,12 +287,13 @@ public class ExploratoryServiceImplTest {
 
 		userInstance.withStatus("creating");
 		userInstance.withResources(Collections.emptyList());
+		verify(projectService).get("project");
 		verify(exploratoryDAO).insertExploratory(userInstance);
 		verify(gitCredsDAO).findGitCreds(USER);
-		verify(requestBuilder).newExploratoryCreate(exploratory, userInfo, egcDto, Collections.emptyMap());
+		verify(requestBuilder).newExploratoryCreate(projectDTO, exploratory, userInfo, egcDto, Collections.emptyMap());
 		verify(provisioningService).post(endpointDTO().getUrl() + exploratoryCreate, TOKEN, ecDto, String.class);
 		verify(requestId).put(USER, UUID);
-		verifyNoMoreInteractions(exploratoryDAO, gitCredsDAO, requestBuilder, provisioningService, requestId);
+		verifyNoMoreInteractions(projectService, exploratoryDAO, gitCredsDAO, requestBuilder, provisioningService, requestId);
 	}
 
 	@Test
@@ -316,6 +327,8 @@ public class ExploratoryServiceImplTest {
 
 	@Test
 	public void createWhenMethodNewExploratoryCreateThrowsException() {
+		ProjectDTO projectDTO = getProjectDTO();
+		when(projectService.get(anyString())).thenReturn(projectDTO);
 		when(endpointService.get(anyString())).thenReturn(endpointDTO());
 		doNothing().when(exploratoryDAO).insertExploratory(any(UserInstanceDTO.class));
 		ExploratoryGitCredsDTO egcDto = new ExploratoryGitCredsDTO();
@@ -324,8 +337,8 @@ public class ExploratoryServiceImplTest {
 		Exploratory exploratory = Exploratory.builder().name(EXPLORATORY_NAME).build();
 
 		doThrow(new DlabException("Cannot create instance of resource class ")).when(requestBuilder)
-				.newExploratoryCreate(any(Exploratory.class), any(UserInfo.class), any(ExploratoryGitCredsDTO.class),
-						anyMapOf(String.class, String.class));
+				.newExploratoryCreate(any(ProjectDTO.class), any(Exploratory.class), any(UserInfo.class),
+						any(ExploratoryGitCredsDTO.class), anyMapOf(String.class, String.class));
 
 		when(exploratoryDAO.updateExploratoryStatus(any(StatusEnvBaseDTO.class))).thenReturn(mock(UpdateResult.class));
 		try {
@@ -339,11 +352,12 @@ public class ExploratoryServiceImplTest {
 
 		userInstance.withStatus("creating");
 		userInstance.withResources(Collections.emptyList());
+		verify(projectService).get("project");
 		verify(exploratoryDAO).insertExploratory(userInstance);
 		verify(gitCredsDAO).findGitCreds(USER);
-		verify(requestBuilder).newExploratoryCreate(exploratory, userInfo, egcDto, Collections.emptyMap());
+		verify(requestBuilder).newExploratoryCreate(projectDTO, exploratory, userInfo, egcDto, Collections.emptyMap());
 		verify(exploratoryDAO).updateExploratoryStatus(refEq(statusEnvBaseDTO, "self"));
-		verifyNoMoreInteractions(exploratoryDAO, gitCredsDAO, requestBuilder);
+		verifyNoMoreInteractions(projectService, exploratoryDAO, gitCredsDAO, requestBuilder);
 	}
 
 	@Test
@@ -578,4 +592,11 @@ public class ExploratoryServiceImplTest {
 		return new EndpointDTO("test", "url", "", null);
 	}
 
+	private ProjectDTO getProjectDTO() {
+		ProjectDTO projectDTO = new ProjectDTO("project", Collections.emptySet(), "", "", null,
+				singletonList(new ProjectEndpointDTO(ENDPOINT_NAME, UserInstanceStatus.RUNNING,
+						new EdgeInfo())));
+		projectDTO.setSharedImageEnabled(true);
+		return projectDTO;
+	}
 }


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