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

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


The following commit(s) were added to refs/heads/DLAB-927 by this push:
     new d850ed0  DLAB-927 added possibility to use multiple endpoints per 
project
d850ed0 is described below

commit d850ed06fd7a5f1c7f802bcf0b04d92237499b4c
Author: bhliva <bohdan_hl...@epam.com>
AuthorDate: Mon Sep 16 11:00:32 2019 +0300

    DLAB-927 added possibility to use multiple endpoints per project
---
 .../epam/dlab/backendapi/dao/EndpointDAOImpl.java  |  4 +-
 .../epam/dlab/backendapi/dao/ExploratoryDAO.java   |  3 +-
 .../com/epam/dlab/backendapi/dao/ProjectDAO.java   |  4 +-
 .../epam/dlab/backendapi/dao/ProjectDAOImpl.java   |  7 ++--
 .../dlab/backendapi/resources/ProjectResource.java | 13 +++---
 .../resources/callback/ProjectCallback.java        |  6 +--
 .../backendapi/service/ExploratoryService.java     |  3 +-
 .../dlab/backendapi/service/ProjectService.java    |  4 +-
 .../service/impl/EnvironmentServiceImpl.java       | 20 +++++----
 .../service/impl/ExploratoryServiceImpl.java       | 16 +++----
 .../service/impl/ProjectServiceImpl.java           | 49 ++++++++++++++--------
 .../service/impl/ComputationalServiceImplTest.java | 35 ++++++++++++----
 .../service/impl/EdgeServiceImplTest.java          |  2 +-
 .../service/impl/ExploratoryServiceImplTest.java   | 24 ++++++++---
 .../service/impl/GitCredentialServiceImplTest.java | 12 +++++-
 .../InfrastructureTemplateServiceBaseTest.java     | 37 ++++++++++------
 .../service/impl/LibraryServiceImplTest.java       | 24 +++++++++--
 17 files changed, 178 insertions(+), 85 deletions(-)

diff --git 
a/services/self-service/src/main/java/com/epam/dlab/backendapi/dao/EndpointDAOImpl.java
 
b/services/self-service/src/main/java/com/epam/dlab/backendapi/dao/EndpointDAOImpl.java
index 413d06d..a614773 100644
--- 
a/services/self-service/src/main/java/com/epam/dlab/backendapi/dao/EndpointDAOImpl.java
+++ 
b/services/self-service/src/main/java/com/epam/dlab/backendapi/dao/EndpointDAOImpl.java
@@ -6,7 +6,7 @@ import org.bson.conversions.Bson;
 import java.util.List;
 import java.util.Optional;
 
-import static com.mongodb.client.model.Filters.regex;
+import static com.mongodb.client.model.Filters.eq;
 
 public class EndpointDAOImpl extends BaseDAO implements EndpointDAO {
 
@@ -33,6 +33,6 @@ public class EndpointDAOImpl extends BaseDAO implements 
EndpointDAO {
        }
 
        private Bson endpointCondition(String name) {
-               return regex("name", "^" + name, "i");
+               return eq("name", name);
        }
 }
diff --git 
a/services/self-service/src/main/java/com/epam/dlab/backendapi/dao/ExploratoryDAO.java
 
b/services/self-service/src/main/java/com/epam/dlab/backendapi/dao/ExploratoryDAO.java
index bda1d6a..ca11b9d 100644
--- 
a/services/self-service/src/main/java/com/epam/dlab/backendapi/dao/ExploratoryDAO.java
+++ 
b/services/self-service/src/main/java/com/epam/dlab/backendapi/dao/ExploratoryDAO.java
@@ -204,12 +204,13 @@ public class ExploratoryDAO extends BaseDAO {
                                false);
        }
 
-       public List<UserInstanceDTO> 
fetchProjectExploratoriesWhereStatusNotIn(String project,
+       public List<UserInstanceDTO> 
fetchProjectExploratoriesWhereStatusNotIn(String project, String endpoint,
                                                                                
                                                                   
UserInstanceStatus... statuses) {
                final List<String> statusList = statusList(statuses);
                return getUserInstances(
                                and(
                                                eq(PROJECT, project),
+                                               eq("endpoint", endpoint),
                                                not(in(STATUS, statusList))
                                ),
                                false);
diff --git 
a/services/self-service/src/main/java/com/epam/dlab/backendapi/dao/ProjectDAO.java
 
b/services/self-service/src/main/java/com/epam/dlab/backendapi/dao/ProjectDAO.java
index 1bc806e..0a2216a 100644
--- 
a/services/self-service/src/main/java/com/epam/dlab/backendapi/dao/ProjectDAO.java
+++ 
b/services/self-service/src/main/java/com/epam/dlab/backendapi/dao/ProjectDAO.java
@@ -2,7 +2,6 @@ package com.epam.dlab.backendapi.dao;
 
 import com.epam.dlab.auth.UserInfo;
 import com.epam.dlab.backendapi.domain.ProjectDTO;
-import com.epam.dlab.backendapi.domain.UpdateProjectDTO;
 import com.epam.dlab.dto.UserInstanceStatus;
 import com.epam.dlab.dto.base.edge.EdgeInfo;
 
@@ -20,13 +19,14 @@ public interface ProjectDAO {
        void create(ProjectDTO projectDTO);
 
        void updateStatus(String projectName, ProjectDTO.Status status);
+
        void updateEdgeStatus(String projectName, String endpoint, 
UserInstanceStatus status);
 
        void updateEdgeInfo(String projectName, String endpointName, EdgeInfo 
edgeInfo);
 
        Optional<ProjectDTO> get(String name);
 
-       boolean update(UpdateProjectDTO projectDTO);
+       boolean update(ProjectDTO projectDTO);
 
        void remove(String name);
 
diff --git 
a/services/self-service/src/main/java/com/epam/dlab/backendapi/dao/ProjectDAOImpl.java
 
b/services/self-service/src/main/java/com/epam/dlab/backendapi/dao/ProjectDAOImpl.java
index 7da6e15..bc9db38 100644
--- 
a/services/self-service/src/main/java/com/epam/dlab/backendapi/dao/ProjectDAOImpl.java
+++ 
b/services/self-service/src/main/java/com/epam/dlab/backendapi/dao/ProjectDAOImpl.java
@@ -2,7 +2,6 @@ package com.epam.dlab.backendapi.dao;
 
 import com.epam.dlab.auth.UserInfo;
 import com.epam.dlab.backendapi.domain.ProjectDTO;
-import com.epam.dlab.backendapi.domain.UpdateProjectDTO;
 import com.epam.dlab.dto.UserInstanceStatus;
 import com.epam.dlab.dto.base.edge.EdgeInfo;
 import com.google.common.collect.Iterables;
@@ -16,6 +15,7 @@ import java.util.Collections;
 import java.util.List;
 import java.util.Optional;
 import java.util.Set;
+import java.util.stream.Collectors;
 
 import static com.mongodb.client.model.Filters.*;
 
@@ -86,10 +86,11 @@ public class ProjectDAOImpl extends BaseDAO implements 
ProjectDAO {
        }
 
        @Override
-       public boolean update(UpdateProjectDTO projectDTO) {
+       public boolean update(ProjectDTO projectDTO) {
                BasicDBObject updateProject = new BasicDBObject();
                updateProject.put(GROUPS, projectDTO.getGroups());
-               updateProject.put(ENDPOINTS, projectDTO.getEndpoints());
+               updateProject.put(ENDPOINTS,
+                               
projectDTO.getEndpoints().stream().map(this::convertToBson).collect(Collectors.toList()));
                return updateOne(PROJECTS_COLLECTION, 
projectCondition(projectDTO.getName()),
                                new Document(SET, 
updateProject)).getMatchedCount() > 0L;
        }
diff --git 
a/services/self-service/src/main/java/com/epam/dlab/backendapi/resources/ProjectResource.java
 
b/services/self-service/src/main/java/com/epam/dlab/backendapi/resources/ProjectResource.java
index 1df46d9..59251c6 100644
--- 
a/services/self-service/src/main/java/com/epam/dlab/backendapi/resources/ProjectResource.java
+++ 
b/services/self-service/src/main/java/com/epam/dlab/backendapi/resources/ProjectResource.java
@@ -174,7 +174,7 @@ public class ProjectResource {
        @PUT
        @RolesAllowed("/api/project")
        public Response updateProject(@Parameter(hidden = true) @Auth UserInfo 
userInfo, UpdateProjectDTO projectDTO) {
-               projectService.update(projectDTO);
+               projectService.update(userInfo, projectDTO);
                return Response.ok().build();
        }
 
@@ -185,14 +185,13 @@ public class ProjectResource {
                                        content = @Content(mediaType = 
MediaType.APPLICATION_JSON,
                                                        schema = 
@Schema(implementation = ErrorDTO.class)))
        })
-       @DELETE
-       @Path("{name}")
+       @POST
+       @Path("terminate")
        @RolesAllowed("/api/project")
-       public Response removeProject(
+       public Response removeProjectEndpoint(
                        @Parameter(hidden = true) @Auth UserInfo userInfo,
-                       @Parameter(description = "Project name")
-                       @PathParam("name") String name) {
-               projectService.terminate(userInfo, name);
+                       ProjectActionFormDTO projectActionDTO) {
+               projectService.terminateEndpoint(userInfo, 
projectActionDTO.getEndpoint(), projectActionDTO.getProjectName());
                return Response.ok().build();
        }
 
diff --git 
a/services/self-service/src/main/java/com/epam/dlab/backendapi/resources/callback/ProjectCallback.java
 
b/services/self-service/src/main/java/com/epam/dlab/backendapi/resources/callback/ProjectCallback.java
index b349f08..e5e9f93 100644
--- 
a/services/self-service/src/main/java/com/epam/dlab/backendapi/resources/callback/ProjectCallback.java
+++ 
b/services/self-service/src/main/java/com/epam/dlab/backendapi/resources/callback/ProjectCallback.java
@@ -42,15 +42,15 @@ public class ProjectCallback {
                if (UserInstanceStatus.RUNNING == status && 
Objects.nonNull(projectResult.getEdgeInfo())) {
                        projectDAO.updateEdgeInfo(projectName, 
projectResult.getEndpointName(), projectResult.getEdgeInfo());
                } else {
-                       updateExploratoriesStatusIfNeeded(status, 
projectResult.getProjectName());
+                       updateExploratoriesStatusIfNeeded(status, 
projectResult.getProjectName(), projectResult.getEndpointName());
                        projectDAO.updateEdgeStatus(projectName, 
projectResult.getEndpointName(), status);
                }
                return Response.ok().build();
        }
 
-       private void updateExploratoriesStatusIfNeeded(UserInstanceStatus 
status, String projectName) {
+       private void updateExploratoriesStatusIfNeeded(UserInstanceStatus 
status, String projectName, String endpoint) {
                if (UserInstanceStatus.TERMINATED == status) {
-                       
exploratoryService.updateProjectExploratoryStatuses(projectName, 
UserInstanceStatus.TERMINATED);
+                       
exploratoryService.updateProjectExploratoryStatuses(projectName, endpoint, 
UserInstanceStatus.TERMINATED);
                }
        }
 }
diff --git 
a/services/self-service/src/main/java/com/epam/dlab/backendapi/service/ExploratoryService.java
 
b/services/self-service/src/main/java/com/epam/dlab/backendapi/service/ExploratoryService.java
index 2dec798..76956c6 100644
--- 
a/services/self-service/src/main/java/com/epam/dlab/backendapi/service/ExploratoryService.java
+++ 
b/services/self-service/src/main/java/com/epam/dlab/backendapi/service/ExploratoryService.java
@@ -40,7 +40,8 @@ public interface ExploratoryService {
        String create(UserInfo userInfo, Exploratory exploratory, String 
project);
 
        void updateExploratoryStatuses(String user, UserInstanceStatus status);
-       void updateProjectExploratoryStatuses(String project, 
UserInstanceStatus status);
+
+       void updateProjectExploratoryStatuses(String project, String endpoint, 
UserInstanceStatus status);
 
        void updateExploratoriesReuploadKeyFlag(String user, boolean 
reuploadKeyRequired,
                                                                                
        UserInstanceStatus... exploratoryStatuses);
diff --git 
a/services/self-service/src/main/java/com/epam/dlab/backendapi/service/ProjectService.java
 
b/services/self-service/src/main/java/com/epam/dlab/backendapi/service/ProjectService.java
index c2b407b..50eaede 100644
--- 
a/services/self-service/src/main/java/com/epam/dlab/backendapi/service/ProjectService.java
+++ 
b/services/self-service/src/main/java/com/epam/dlab/backendapi/service/ProjectService.java
@@ -17,13 +17,13 @@ public interface ProjectService {
 
        ProjectDTO get(String name);
 
-       void terminate(UserInfo userInfo, String name);
+       void terminateEndpoint(UserInfo userInfo, String endpoint, String name);
 
        void start(UserInfo userInfo, String endpoint, String name);
 
        void stop(UserInfo userInfo, String endpoint, String name);
 
-       void update(UpdateProjectDTO projectDTO);
+       void update(UserInfo userInfo, UpdateProjectDTO projectDTO);
 
        void updateBudget(String project, Integer budget);
 
diff --git 
a/services/self-service/src/main/java/com/epam/dlab/backendapi/service/impl/EnvironmentServiceImpl.java
 
b/services/self-service/src/main/java/com/epam/dlab/backendapi/service/impl/EnvironmentServiceImpl.java
index 2e101d8..700c4ee 100644
--- 
a/services/self-service/src/main/java/com/epam/dlab/backendapi/service/impl/EnvironmentServiceImpl.java
+++ 
b/services/self-service/src/main/java/com/epam/dlab/backendapi/service/impl/EnvironmentServiceImpl.java
@@ -37,7 +37,10 @@ import com.google.inject.Inject;
 import com.google.inject.Singleton;
 import lombok.extern.slf4j.Slf4j;
 
-import java.util.*;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.List;
+import java.util.Set;
 import java.util.stream.Stream;
 
 import static com.epam.dlab.backendapi.resources.dto.UserDTO.Status.ACTIVE;
@@ -223,19 +226,18 @@ public class EnvironmentServiceImpl implements 
EnvironmentService {
        private List<UserResourceInfo> getProjectEnv(ProjectDTO projectDTO, 
List<UserInstanceDTO> allInstances) {
                final Stream<UserResourceInfo> userResources = 
allInstances.stream()
                                .filter(instance -> 
instance.getProject().equals(projectDTO.getName())).map(this::toUserResourceInfo);
-               /*if (projectDTO.getEndpointEdgeInfo() != null) {
-                       final Stream<UserResourceInfo> edges = 
projectDTO.getEndpointEdgeInfo().values()
+               if (projectDTO.getEndpoints() != null) {
+                       final Stream<UserResourceInfo> edges = 
projectDTO.getEndpoints()
                                        .stream()
-                                       .map(ei -> new 
UserResourceInfo().withResourceType(ResourceEnum.EDGE_NODE)
-                                                       
.withResourceStatus(ProjectDTO.Status.from(projectDTO.getStatus()).toString())
+                                       .map(e -> new 
UserResourceInfo().withResourceType(ResourceEnum.EDGE_NODE)
+                                                       
.withResourceStatus(e.getStatus().toString())
                                                        
.withProject(projectDTO.getName())
-                                                       
.withIp(ei.getPublicIp()));
-                       return Stream.concat(Stream.of(edgeResource), 
userResources)
+                                                       .withIp(e.getEdgeInfo() 
!= null ? e.getEdgeInfo().getIp() : null));
+                       return Stream.concat(edges, userResources)
                                        .collect(toList());
                } else {
                        return userResources.collect(toList());
-               }*/
-               return Collections.emptyList();
+               }
        }
 
        private UserResourceInfo toUserResourceInfo(UserInstanceDTO 
userInstance) {
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 1fb1a9e..9c5594b 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
@@ -132,8 +132,8 @@ public class ExploratoryServiceImpl implements 
ExploratoryService {
        }
 
        @Override
-       public void updateProjectExploratoryStatuses(String project, 
UserInstanceStatus status) {
-               
exploratoryDAO.fetchProjectExploratoriesWhereStatusNotIn(project, TERMINATED, 
FAILED)
+       public void updateProjectExploratoryStatuses(String project, String 
endpoint, UserInstanceStatus status) {
+               
exploratoryDAO.fetchProjectExploratoriesWhereStatusNotIn(project, endpoint, 
TERMINATED, FAILED)
                                .forEach(ui -> 
updateExploratoryStatus(ui.getExploratoryName(), status, ui.getUser()));
        }
 
@@ -175,8 +175,9 @@ public class ExploratoryServiceImpl implements 
ExploratoryService {
                                exploratoryName);
                final ExploratoryReconfigureSparkClusterActionDTO 
updateClusterConfigDTO =
                                requestBuilder.newClusterConfigUpdate(userInfo, 
userInstanceDTO, config);
-               final String uuid = 
provisioningService.post(endpointService.get(userInstanceDTO.getEndpoint()).getUrl()
 + EXPLORATORY_RECONFIGURE_SPARK, token, updateClusterConfigDTO,
-                               String.class);
+               final String uuid =
+                               
provisioningService.post(endpointService.get(userInstanceDTO.getEndpoint()).getUrl()
 + EXPLORATORY_RECONFIGURE_SPARK, token, updateClusterConfigDTO,
+                                               String.class);
                requestId.put(userName, uuid);
                exploratoryDAO.updateExploratoryFields(new 
ExploratoryStatusDTO()
                                .withUser(userName)
@@ -240,9 +241,10 @@ public class ExploratoryServiceImpl implements 
ExploratoryService {
                        updateExploratoryStatus(exploratoryName, status, 
userInfo.getName());
 
                        UserInstanceDTO userInstance = 
exploratoryDAO.fetchExploratoryFields(userInfo.getName(), exploratoryName);
-                       final String uuid = 
provisioningService.post(endpointService.get(userInstance.getEndpoint()).getUrl()
 + action,
-                                       userInfo.getAccessToken(),
-                                       getExploratoryActionDto(userInfo, 
status, userInstance), String.class);
+                       final String uuid =
+                                       
provisioningService.post(endpointService.get(userInstance.getEndpoint()).getUrl()
 + action,
+                                                       
userInfo.getAccessToken(),
+                                                       
getExploratoryActionDto(userInfo, status, userInstance), String.class);
                        requestId.put(userInfo.getName(), uuid);
                        return uuid;
                } catch (Exception t) {
diff --git 
a/services/self-service/src/main/java/com/epam/dlab/backendapi/service/impl/ProjectServiceImpl.java
 
b/services/self-service/src/main/java/com/epam/dlab/backendapi/service/impl/ProjectServiceImpl.java
index ac6c63d..d9496cc 100644
--- 
a/services/self-service/src/main/java/com/epam/dlab/backendapi/service/impl/ProjectServiceImpl.java
+++ 
b/services/self-service/src/main/java/com/epam/dlab/backendapi/service/impl/ProjectServiceImpl.java
@@ -6,6 +6,7 @@ import com.epam.dlab.backendapi.annotation.Project;
 import com.epam.dlab.backendapi.dao.ProjectDAO;
 import com.epam.dlab.backendapi.dao.UserGroupDao;
 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.domain.UpdateProjectDTO;
 import com.epam.dlab.backendapi.service.EndpointService;
@@ -21,9 +22,11 @@ import com.google.inject.Inject;
 import com.google.inject.name.Named;
 import lombok.extern.slf4j.Slf4j;
 
+import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
 import java.util.function.Supplier;
+import java.util.stream.Collectors;
 
 import static java.util.stream.Collectors.toSet;
 import static java.util.stream.Stream.concat;
@@ -92,13 +95,10 @@ public class ProjectServiceImpl implements ProjectService {
        }
 
        @Override
-       public void terminate(UserInfo userInfo, String name) {
-               get(name).getEndpoints().forEach(endpoint -> 
projectActionOnCloud(userInfo, name, TERMINATE_PRJ_API,
-                               endpoint.getName()));
-
-               exploratoryService.updateProjectExploratoryStatuses(name, 
UserInstanceStatus.TERMINATING);
-               projectDAO.updateStatus(name, ProjectDTO.Status.DELETING);
-
+       public void terminateEndpoint(UserInfo userInfo, String endpoint, 
String name) {
+               projectActionOnCloud(userInfo, name, TERMINATE_PRJ_API, 
endpoint);
+               projectDAO.updateEdgeStatus(name, endpoint, 
UserInstanceStatus.TERMINATING);
+               exploratoryService.updateProjectExploratoryStatuses(name, 
endpoint, UserInstanceStatus.TERMINATING);
        }
 
        @BudgetLimited
@@ -115,10 +115,20 @@ public class ProjectServiceImpl implements ProjectService 
{
        }
 
        @Override
-       public void update(UpdateProjectDTO projectDTO) {
-               if (!projectDAO.update(projectDTO)) {
-                       throw projectNotFound().get();
-               }
+       public void update(UserInfo userInfo, UpdateProjectDTO projectDTO) {
+               final ProjectDTO project = 
projectDAO.get(projectDTO.getName()).orElseThrow(projectNotFound());
+               final Set<String> endpoints = project.getEndpoints()
+                               .stream()
+                               .map(ProjectEndpointDTO::getName)
+                               .collect(toSet());
+               final HashSet<String> newEndpoints = new 
HashSet<>(projectDTO.getEndpoints());
+               newEndpoints.removeAll(endpoints);
+               final List<ProjectEndpointDTO> endpointsToBeCreated = 
newEndpoints.stream()
+                               .map(e -> new ProjectEndpointDTO(e, 
UserInstanceStatus.CREATING, null))
+                               .collect(Collectors.toList());
+               project.getEndpoints().addAll(endpointsToBeCreated);
+               projectDAO.update(project);
+               endpointsToBeCreated.forEach(e -> createEndpoint(userInfo, 
project, e.getName()));
        }
 
        @Override
@@ -141,19 +151,22 @@ public class ProjectServiceImpl implements ProjectService 
{
 
        private void createProjectOnCloud(UserInfo user, ProjectDTO projectDTO) 
{
                try {
-                       projectDTO.getEndpoints().forEach(endpoint -> {
-                               String uuid =
-                                               
provisioningService.post(endpointService.get(endpoint.getName()).getUrl() + 
CREATE_PRJ_API,
-                                                               
user.getAccessToken(),
-                                                               
requestBuilder.newProjectCreate(user, projectDTO, endpoint.getName()), 
String.class);
-                               requestId.put(user.getName(), uuid);
-                       });
+                       projectDTO.getEndpoints().forEach(endpoint -> 
createEndpoint(user, projectDTO,
+                                       endpoint.getName()));
                } catch (Exception e) {
                        log.error("Can not create project due to: {}", 
e.getMessage());
                        projectDAO.updateStatus(projectDTO.getName(), 
ProjectDTO.Status.FAILED);
                }
        }
 
+       private void createEndpoint(UserInfo user, ProjectDTO projectDTO, 
String endpointName) {
+               String uuid =
+                               
provisioningService.post(endpointService.get(endpointName).getUrl() + 
CREATE_PRJ_API,
+                                               user.getAccessToken(),
+                                               
requestBuilder.newProjectCreate(user, projectDTO, endpointName), String.class);
+               requestId.put(user.getName(), uuid);
+       }
+
 
        private void projectActionOnCloud(UserInfo user, String projectName, 
String provisioningApiUri, String endpoint) {
                try {
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 78e8459..376b458 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
@@ -23,9 +23,11 @@ import com.epam.dlab.auth.UserInfo;
 import com.epam.dlab.backendapi.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.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.TagService;
 import com.epam.dlab.backendapi.util.RequestBuilder;
 import com.epam.dlab.dto.SchedulerJobDTO;
@@ -99,6 +101,8 @@ public class ComputationalServiceImplTest {
        private RequestId requestId;
        @Mock
        private TagService tagService;
+       @Mock
+       private EndpointService endpointService;
 
        @InjectMocks
        private ComputationalServiceImpl computationalService;
@@ -121,6 +125,7 @@ public class ComputationalServiceImplTest {
 
        @Test
        public void createSparkCluster() {
+               
when(endpointService.get(anyString())).thenReturn(endpointDTO());
                when(computationalDAO.addComputational(anyString(), anyString(),
                                
any(SparkStandaloneClusterResource.class))).thenReturn(true);
                when(exploratoryDAO.fetchExploratoryFields(anyString(), 
anyString())).thenReturn(userInstance);
@@ -144,12 +149,12 @@ public class ComputationalServiceImplTest {
                                refEq(userInfo), refEq(userInstance), 
refEq(sparkClusterCreateForm));
 
                verify(provisioningService)
-                               
.post(ComputationalAPI.COMPUTATIONAL_CREATE_SPARK, TOKEN, compBaseMocked, 
String.class);
+                               .post(endpointDTO().getUrl() + 
ComputationalAPI.COMPUTATIONAL_CREATE_SPARK, TOKEN, compBaseMocked,
+                                               String.class);
 
                verify(requestId).put(USER, UUID);
                verifyNoMoreInteractions(configuration, computationalDAO, 
requestBuilder, provisioningService, requestId);
        }
-
        @Test
        public void createSparkClusterWhenResourceAlreadyExists() {
                when(computationalDAO.addComputational(anyString(), anyString(),
@@ -218,6 +223,7 @@ public class ComputationalServiceImplTest {
 
        @Test
        public void terminateComputationalEnvironment() {
+               
when(endpointService.get(anyString())).thenReturn(endpointDTO());
                
when(computationalDAO.updateComputationalStatus(any(ComputationalStatusDTO.class)))
                                .thenReturn(mock(UpdateResult.class));
                String explId = "explId";
@@ -248,7 +254,7 @@ public class ComputationalServiceImplTest {
                verify(requestBuilder).newComputationalTerminate(userInfo, 
EXPLORATORY_NAME, explId, COMP_NAME, compId,
                                DataEngineType.CLOUD_SERVICE, null);
 
-               
verify(provisioningService).post(ComputationalAPI.COMPUTATIONAL_TERMINATE_CLOUD_SPECIFIC,
 TOKEN, ctDto,
+               verify(provisioningService).post(endpointDTO().getUrl() + 
ComputationalAPI.COMPUTATIONAL_TERMINATE_CLOUD_SPECIFIC, TOKEN, ctDto,
                                String.class);
 
                verify(requestId).put(USER, UUID);
@@ -341,6 +347,7 @@ public class ComputationalServiceImplTest {
 
        @Test
        public void createDataEngineService() {
+               
when(endpointService.get(anyString())).thenReturn(endpointDTO());
                when(computationalDAO.addComputational(anyString(), 
anyString(), any(UserComputationalResource.class)))
                                .thenReturn(true);
                when(exploratoryDAO.fetchExploratoryFields(anyString(), 
anyString())).thenReturn(userInstance);
@@ -364,7 +371,8 @@ public class ComputationalServiceImplTest {
                                refEq(userInfo), refEq(userInstance), 
any(ComputationalCreateFormDTO.class));
 
                verify(provisioningService)
-                               
.post(ComputationalAPI.COMPUTATIONAL_CREATE_CLOUD_SPECIFIC, TOKEN, 
compBaseMocked, String.class);
+                               .post(endpointDTO().getUrl() + 
ComputationalAPI.COMPUTATIONAL_CREATE_CLOUD_SPECIFIC, TOKEN,
+                                               compBaseMocked, String.class);
 
                verify(requestId).put(USER, UUID);
                verifyNoMoreInteractions(computationalDAO, exploratoryDAO, 
requestBuilder, provisioningService, requestId);
@@ -412,6 +420,7 @@ public class ComputationalServiceImplTest {
 
        @Test
        public void 
createDataEngineServiceWhenMethodNewComputationalCreateThrowsException() {
+               
when(endpointService.get(anyString())).thenReturn(endpointDTO());
                when(computationalDAO.addComputational(anyString(), 
anyString(), any(UserComputationalResource.class)))
                                .thenReturn(true);
                when(exploratoryDAO.fetchExploratoryFields(anyString(), 
anyString())).thenReturn(userInstance);
@@ -444,6 +453,7 @@ public class ComputationalServiceImplTest {
        public void stopSparkCluster() {
                final UserInstanceDTO exploratory = getUserInstanceDto();
                
exploratory.setResources(singletonList(getUserComputationalResource(RUNNING, 
DOCKER_DLAB_DATAENGINE)));
+               
when(endpointService.get(anyString())).thenReturn(endpointDTO());
                when(exploratoryDAO.fetchExploratoryFields(anyString(), 
anyString(), anyBoolean())).thenReturn(exploratory);
                
when(computationalDAO.updateComputationalStatus(any(ComputationalStatusDTO.class)))
                                .thenReturn(mock(UpdateResult.class));
@@ -461,7 +471,8 @@ public class ComputationalServiceImplTest {
                verify(exploratoryDAO).fetchExploratoryFields(USER, 
EXPLORATORY_NAME, true);
                verify(requestBuilder).newComputationalStop(refEq(userInfo), 
refEq(exploratory), eq(COMP_NAME));
                verify(provisioningService)
-                               .post(eq("computational/stop/spark"), 
eq(TOKEN), refEq(computationalStopDTO), eq(String.class));
+                               .post(eq(endpointDTO().getUrl() + 
"computational/stop/spark"), eq(TOKEN), refEq(computationalStopDTO),
+                                               eq(String.class));
                verify(requestId).put(USER, "someUuid");
                verifyNoMoreInteractions(computationalDAO, exploratoryDAO, 
requestBuilder,
                                provisioningService, requestId);
@@ -480,6 +491,7 @@ public class ComputationalServiceImplTest {
 
        @Test
        public void startSparkCluster() {
+               
when(endpointService.get(anyString())).thenReturn(endpointDTO());
                final UserInstanceDTO exploratory = getUserInstanceDto();
                
exploratory.setResources(singletonList(getUserComputationalResource(STOPPED, 
DOCKER_DLAB_DATAENGINE)));
                when(exploratoryDAO.fetchExploratoryFields(anyString(), 
anyString(), anyBoolean())).thenReturn(exploratory);
@@ -499,7 +511,9 @@ public class ComputationalServiceImplTest {
                verify(exploratoryDAO).fetchExploratoryFields(USER, 
EXPLORATORY_NAME, true);
                verify(requestBuilder).newComputationalStart(refEq(userInfo), 
refEq(exploratory), eq(COMP_NAME));
                verify(provisioningService)
-                               .post(eq("computational/start/spark"), 
eq(TOKEN), refEq(computationalStartDTO), eq(String.class));
+                               .post(eq(endpointDTO().getUrl() + 
"computational/start/spark"), eq(TOKEN),
+                                               refEq(computationalStartDTO),
+                                               eq(String.class));
                verify(requestId).put(USER, "someUuid");
                verifyNoMoreInteractions(computationalDAO, exploratoryDAO, 
requestBuilder,
                                provisioningService, requestId);
@@ -562,6 +576,7 @@ public class ComputationalServiceImplTest {
 
        @Test
        public void testUpdateSparkClusterConfig() {
+               
when(endpointService.get(anyString())).thenReturn(endpointDTO());
                final ComputationalClusterConfigDTO clusterConfigDTO = new 
ComputationalClusterConfigDTO();
                final UserInstanceDTO userInstanceDto = getUserInstanceDto();
                final List<ClusterConfig> config = 
Collections.singletonList(new ClusterConfig());
@@ -585,7 +600,8 @@ public class ComputationalServiceImplTest {
                                .withExploratoryName(EXPLORATORY_NAME)
                                .withComputationalName(COMP_NAME)
                                
.withStatus(UserInstanceStatus.RECONFIGURING.toString()), "self"));
-               
verify(provisioningService).post(eq("computational/spark/reconfigure"), 
eq(getUserInfo().getAccessToken()),
+               verify(provisioningService).post(eq(endpointDTO().getUrl() + 
"computational/spark/reconfigure"),
+                               eq(getUserInfo().getAccessToken()),
                                refEq(new ComputationalClusterConfigDTO()), 
eq(String.class));
 
        }
@@ -702,6 +718,11 @@ public class ComputationalServiceImplTest {
                                .build();
        }
 
+       private EndpointDTO endpointDTO() {
+               return new EndpointDTO("test", "url", "", null);
+       }
+
+
        private UserComputationalResource 
getUserComputationalResource(UserInstanceStatus status, String imageName) {
                UserComputationalResource ucResource = new 
UserComputationalResource();
                ucResource.setComputationalName(COMP_NAME);
diff --git 
a/services/self-service/src/test/java/com/epam/dlab/backendapi/service/impl/EdgeServiceImplTest.java
 
b/services/self-service/src/test/java/com/epam/dlab/backendapi/service/impl/EdgeServiceImplTest.java
index 09784eb..6e47ca1 100644
--- 
a/services/self-service/src/test/java/com/epam/dlab/backendapi/service/impl/EdgeServiceImplTest.java
+++ 
b/services/self-service/src/test/java/com/epam/dlab/backendapi/service/impl/EdgeServiceImplTest.java
@@ -216,7 +216,7 @@ public class EdgeServiceImplTest {
                try {
                        edgeService.terminate(userInfo);
                } catch (DlabException e) {
-                       assertEquals("Could not terminate EDGE node: Could not 
infrastructure/edge/terminate EDGE node : " +
+                       assertEquals("Could not terminate EDGE node: " +
                                        "Cannot create instance of resource 
class ", e.getMessage());
                }
                verify(keyDAO).getEdgeStatus(USER);
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 6a4e771..aa02ccd 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
@@ -23,7 +23,9 @@ import com.epam.dlab.auth.UserInfo;
 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.RequestId;
+import com.epam.dlab.backendapi.service.EndpointService;
 import com.epam.dlab.backendapi.service.TagService;
 import com.epam.dlab.backendapi.util.RequestBuilder;
 import com.epam.dlab.dto.StatusEnvBaseDTO;
@@ -81,6 +83,8 @@ public class ExploratoryServiceImplTest {
        private RequestId requestId;
        @Mock
        private TagService tagService;
+       @Mock
+       private EndpointService endpointService;
 
        @InjectMocks
        private ExploratoryServiceImpl exploratoryService;
@@ -96,6 +100,7 @@ public class ExploratoryServiceImplTest {
 
        @Test
        public void start() {
+               
when(endpointService.get(anyString())).thenReturn(endpointDTO());
                
when(exploratoryDAO.updateExploratoryStatus(any(StatusEnvBaseDTO.class))).thenReturn(mock(UpdateResult.class));
                when(exploratoryDAO.fetchExploratoryFields(anyString(), 
anyString())).thenReturn(userInstance);
 
@@ -120,7 +125,7 @@ public class ExploratoryServiceImplTest {
 
                
verify(exploratoryDAO).updateExploratoryStatus(refEq(statusEnvBaseDTO, "self"));
                verify(exploratoryDAO).fetchExploratoryFields(USER, 
EXPLORATORY_NAME);
-               verify(provisioningService).post(exploratoryStart, TOKEN, 
egcuDto, String.class);
+               verify(provisioningService).post(endpointDTO().getUrl() + 
exploratoryStart, TOKEN, egcuDto, String.class);
                verify(requestId).put(USER, UUID);
                verifyNoMoreInteractions(exploratoryDAO, provisioningService, 
requestId);
        }
@@ -147,6 +152,7 @@ public class ExploratoryServiceImplTest {
 
        @Test
        public void stop() {
+               
when(endpointService.get(anyString())).thenReturn(endpointDTO());
                
when(exploratoryDAO.updateExploratoryStatus(any(StatusEnvBaseDTO.class))).thenReturn(mock(UpdateResult.class));
                
when(computationalDAO.updateComputationalStatusesForExploratory(any(StatusEnvBaseDTO.class))).thenReturn(1);
                when(exploratoryDAO.fetchExploratoryFields(anyString(), 
anyString())).thenReturn(userInstance);
@@ -168,7 +174,7 @@ public class ExploratoryServiceImplTest {
 
                
verify(exploratoryDAO).updateExploratoryStatus(refEq(statusEnvBaseDTO, "self"));
                verify(exploratoryDAO).fetchExploratoryFields(USER, 
EXPLORATORY_NAME);
-               verify(provisioningService).post(exploratoryStop, TOKEN, eaDto, 
String.class);
+               verify(provisioningService).post(endpointDTO().getUrl() + 
exploratoryStop, TOKEN, eaDto, String.class);
                
verify(computationalDAO).updateComputationalStatusesForExploratory(userInfo.getName(),
 EXPLORATORY_NAME,
                                UserInstanceStatus.STOPPING, 
UserInstanceStatus.TERMINATING, UserInstanceStatus.FAILED,
                                UserInstanceStatus.TERMINATED, 
UserInstanceStatus.STOPPED);
@@ -198,6 +204,7 @@ public class ExploratoryServiceImplTest {
 
        @Test
        public void terminate() {
+               
when(endpointService.get(anyString())).thenReturn(endpointDTO());
                
when(exploratoryDAO.updateExploratoryStatus(any(StatusEnvBaseDTO.class))).thenReturn(mock(UpdateResult.class));
                
when(computationalDAO.updateComputationalStatusesForExploratory(any(StatusEnvBaseDTO.class))).thenReturn(1);
                when(exploratoryDAO.fetchExploratoryFields(anyString(), 
anyString())).thenReturn(userInstance);
@@ -223,7 +230,7 @@ public class ExploratoryServiceImplTest {
                                                .TERMINATING, 
UserInstanceStatus.TERMINATING, UserInstanceStatus.TERMINATED,
                                UserInstanceStatus.FAILED);
                verify(requestBuilder).newExploratoryStop(userInfo, 
userInstance);
-               verify(provisioningService).post(exploratoryTerminate, TOKEN, 
eaDto, String.class);
+               verify(provisioningService).post(endpointDTO().getUrl() + 
exploratoryTerminate, TOKEN, eaDto, String.class);
                verify(requestId).put(USER, UUID);
                verifyNoMoreInteractions(exploratoryDAO, computationalDAO, 
requestBuilder, provisioningService, requestId);
        }
@@ -250,6 +257,7 @@ public class ExploratoryServiceImplTest {
 
        @Test
        public void create() {
+               
when(endpointService.get(anyString())).thenReturn(endpointDTO());
                
doNothing().when(exploratoryDAO).insertExploratory(any(UserInstanceDTO.class));
                ExploratoryGitCredsDTO egcDto = new ExploratoryGitCredsDTO();
                when(gitCredsDAO.findGitCreds(anyString())).thenReturn(egcDto);
@@ -272,7 +280,7 @@ public class ExploratoryServiceImplTest {
                verify(exploratoryDAO).insertExploratory(userInstance);
                verify(gitCredsDAO).findGitCreds(USER);
                verify(requestBuilder).newExploratoryCreate(exploratory, 
userInfo, egcDto, Collections.emptyMap());
-               verify(provisioningService).post(exploratoryCreate, TOKEN, 
ecDto, String.class);
+               verify(provisioningService).post(endpointDTO().getUrl() + 
exploratoryCreate, TOKEN, ecDto, String.class);
                verify(requestId).put(USER, UUID);
                verifyNoMoreInteractions(exploratoryDAO, gitCredsDAO, 
requestBuilder, provisioningService, requestId);
        }
@@ -308,6 +316,7 @@ public class ExploratoryServiceImplTest {
 
        @Test
        public void createWhenMethodNewExploratoryCreateThrowsException() {
+               
when(endpointService.get(anyString())).thenReturn(endpointDTO());
                
doNothing().when(exploratoryDAO).insertExploratory(any(UserInstanceDTO.class));
                ExploratoryGitCredsDTO egcDto = new ExploratoryGitCredsDTO();
                when(gitCredsDAO.findGitCreds(anyString())).thenReturn(egcDto);
@@ -449,6 +458,7 @@ public class ExploratoryServiceImplTest {
        @Test
        public void testUpdateExploratoryClusterConfig() {
 
+               
when(endpointService.get(anyString())).thenReturn(endpointDTO());
                when(exploratoryDAO.fetchRunningExploratoryFields(anyString(), 
anyString())).thenReturn(getUserInstanceDto());
                when(requestBuilder.newClusterConfigUpdate(any(UserInfo.class), 
any(UserInstanceDTO.class),
                                anyListOf(ClusterConfig.class))).thenReturn(new 
ExploratoryReconfigureSparkClusterActionDTO());
@@ -461,7 +471,7 @@ public class ExploratoryServiceImplTest {
                
verify(requestBuilder).newClusterConfigUpdate(refEq(getUserInfo()), 
refEq(getUserInstanceDto()),
                                refEq(singletonList(new ClusterConfig())));
                verify(requestId).put(USER, UUID);
-               
verify(provisioningService).post(eq("exploratory/reconfigure_spark"), eq(TOKEN),
+               verify(provisioningService).post(eq(endpointDTO().getUrl() + 
"exploratory/reconfigure_spark"), eq(TOKEN),
                                refEq(new 
ExploratoryReconfigureSparkClusterActionDTO(), "self"), eq(String.class));
                verify(exploratoryDAO).updateExploratoryFields(refEq(new 
ExploratoryStatusDTO()
                                .withUser(USER)
@@ -542,4 +552,8 @@ public class ExploratoryServiceImplTest {
                                .withStatus(status);
        }
 
+       private EndpointDTO endpointDTO() {
+               return new EndpointDTO("test", "url", "", null);
+       }
+
 }
diff --git 
a/services/self-service/src/test/java/com/epam/dlab/backendapi/service/impl/GitCredentialServiceImplTest.java
 
b/services/self-service/src/test/java/com/epam/dlab/backendapi/service/impl/GitCredentialServiceImplTest.java
index 2029cea..f6191a1 100644
--- 
a/services/self-service/src/test/java/com/epam/dlab/backendapi/service/impl/GitCredentialServiceImplTest.java
+++ 
b/services/self-service/src/test/java/com/epam/dlab/backendapi/service/impl/GitCredentialServiceImplTest.java
@@ -22,7 +22,9 @@ package com.epam.dlab.backendapi.service.impl;
 import com.epam.dlab.auth.UserInfo;
 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.RequestId;
+import com.epam.dlab.backendapi.service.EndpointService;
 import com.epam.dlab.backendapi.util.RequestBuilder;
 import com.epam.dlab.dto.UserInstanceDTO;
 import com.epam.dlab.dto.exploratory.ExploratoryGitCredsDTO;
@@ -56,6 +58,8 @@ public class GitCredentialServiceImplTest {
        private RequestBuilder requestBuilder;
        @Mock
        private RequestId requestId;
+       @Mock
+       private EndpointService endpointService;
 
        @InjectMocks
        private GitCredentialServiceImpl gitCredentialService;
@@ -65,6 +69,7 @@ public class GitCredentialServiceImplTest {
                String token = "token";
                UserInfo userInfo = new UserInfo(USER, token);
                doNothing().when(gitCredsDAO).updateGitCreds(anyString(), 
any(ExploratoryGitCredsDTO.class));
+               
when(endpointService.get(anyString())).thenReturn(endpointDTO());
 
                String exploratoryName = "explName";
                UserInstanceDTO uiDto = new 
UserInstanceDTO().withExploratoryName(exploratoryName).withUser(USER);
@@ -85,7 +90,8 @@ public class GitCredentialServiceImplTest {
                verify(gitCredsDAO).updateGitCreds(USER, egcDto);
                verify(exploratoryDAO).fetchRunningExploratoryFields(USER);
                verify(requestBuilder).newGitCredentialsUpdate(userInfo, uiDto, 
egcDto);
-               verify(provisioningService).post("exploratory/git_creds", 
token, egcuDto, String.class);
+               verify(provisioningService).post(endpointDTO().getUrl() + 
"exploratory/git_creds", token, egcuDto,
+                               String.class);
                verify(requestId).put(USER, uuid);
                verifyNoMoreInteractions(gitCredsDAO, exploratoryDAO, 
requestBuilder, provisioningService, requestId);
        }
@@ -160,4 +166,8 @@ public class GitCredentialServiceImplTest {
                verify(gitCredsDAO).findGitCreds(USER, true);
                verifyNoMoreInteractions(gitCredsDAO);
        }
+
+       private EndpointDTO endpointDTO() {
+               return new EndpointDTO("test", "url", "", null);
+       }
 }
diff --git 
a/services/self-service/src/test/java/com/epam/dlab/backendapi/service/impl/InfrastructureTemplateServiceBaseTest.java
 
b/services/self-service/src/test/java/com/epam/dlab/backendapi/service/impl/InfrastructureTemplateServiceBaseTest.java
index 907da6b..fdbacab 100644
--- 
a/services/self-service/src/test/java/com/epam/dlab/backendapi/service/impl/InfrastructureTemplateServiceBaseTest.java
+++ 
b/services/self-service/src/test/java/com/epam/dlab/backendapi/service/impl/InfrastructureTemplateServiceBaseTest.java
@@ -22,7 +22,9 @@ package com.epam.dlab.backendapi.service.impl;
 import com.epam.dlab.auth.UserInfo;
 import com.epam.dlab.backendapi.dao.ProjectDAO;
 import com.epam.dlab.backendapi.dao.SettingsDAO;
+import com.epam.dlab.backendapi.domain.EndpointDTO;
 import com.epam.dlab.backendapi.domain.ProjectDTO;
+import com.epam.dlab.backendapi.service.EndpointService;
 import com.epam.dlab.dto.base.computational.FullComputationalTemplate;
 import com.epam.dlab.dto.imagemetadata.ComputationalMetadataDTO;
 import com.epam.dlab.dto.imagemetadata.ComputationalResourceShapeDto;
@@ -51,6 +53,8 @@ public class InfrastructureTemplateServiceBaseTest {
        private RESTService provisioningService;
        @Mock
        private ProjectDAO projectDAO;
+       @Mock
+       private EndpointService endpointService;
 
        @InjectMocks
        private InfrastructureTemplateServiceBaseChild 
infrastructureTemplateServiceBaseChild =
@@ -58,6 +62,7 @@ public class InfrastructureTemplateServiceBaseTest {
 
        @Test
        public void getExploratoryTemplates() {
+               
when(endpointService.get(anyString())).thenReturn(endpointDTO());
                ExploratoryMetadataDTO emDto1 = new 
ExploratoryMetadataDTO("someImage1");
                HashMap<String, List<ComputationalResourceShapeDto>> shapes1 = 
new HashMap<>();
                shapes1.put("Memory optimized", Arrays.asList(
@@ -76,8 +81,8 @@ public class InfrastructureTemplateServiceBaseTest {
                                                "someRam2", 6)));
                emDto2.setExploratoryEnvironmentShapes(shapes2);
                List<ExploratoryMetadataDTO> expectedEmdDtoList = 
Arrays.asList(emDto1, emDto2);
-               /*when(projectDAO.get(anyString())).thenReturn(Optional.of(new 
ProjectDTO("project", Collections.emptySet(),
-                               Collections.singleton("project"), null, null, 
null)));*/
+               when(projectDAO.get(anyString())).thenReturn(Optional.of(new 
ProjectDTO("project", Collections.emptySet(),
+                               null, null, null, null)));
                when(provisioningService.get(anyString(), anyString(), 
any())).thenReturn(expectedEmdDtoList.toArray());
                
when(settingsDAO.getConfOsFamily()).thenReturn("someConfOsFamily");
 
@@ -87,13 +92,14 @@ public class InfrastructureTemplateServiceBaseTest {
                assertNotNull(actualEmdDtoList);
                assertEquals(expectedEmdDtoList, actualEmdDtoList);
 
-               verify(provisioningService).get("docker/exploratory", "token", 
ExploratoryMetadataDTO[].class);
+               verify(provisioningService).get(endpointDTO().getUrl() + 
"docker/exploratory", "token", ExploratoryMetadataDTO[].class);
                verify(settingsDAO, times(2)).getConfOsFamily();
                verifyNoMoreInteractions(provisioningService, settingsDAO);
        }
 
        @Test
        public void getExploratoryTemplatesWithException() {
+               
when(endpointService.get(anyString())).thenReturn(endpointDTO());
                doThrow(new DlabException("Could not load list of exploratory 
templates for user"))
                                .when(provisioningService).get(anyString(), 
anyString(), any());
 
@@ -103,20 +109,21 @@ public class InfrastructureTemplateServiceBaseTest {
                } catch (DlabException e) {
                        assertEquals("Could not load list of exploratory 
templates for user", e.getMessage());
                }
-               verify(provisioningService).get("docker/exploratory", "token", 
ExploratoryMetadataDTO[].class);
+               verify(provisioningService).get(endpointDTO().getUrl() + 
"docker/exploratory", "token", ExploratoryMetadataDTO[].class);
                verifyNoMoreInteractions(provisioningService);
        }
 
        @Test
        public void getComputationalTemplates() throws NoSuchFieldException, 
IllegalAccessException {
 
+               
when(endpointService.get(anyString())).thenReturn(endpointDTO());
                final ComputationalMetadataDTO computationalMetadataDTO = new 
ComputationalMetadataDTO("dataengine-service");
                
computationalMetadataDTO.setComputationResourceShapes(Collections.emptyMap());
                List<ComputationalMetadataDTO> expectedCmdDtoList = 
Collections.singletonList(
                                computationalMetadataDTO
                );
-               /*when(projectDAO.get(anyString())).thenReturn(Optional.of(new 
ProjectDTO("project", Collections.emptySet(),
-                               Collections.singleton("project"), null, null, 
null)));*/
+               when(projectDAO.get(anyString())).thenReturn(Optional.of(new 
ProjectDTO("project", Collections.emptySet(),
+                               null, null, null, null)));
                when(provisioningService.get(anyString(), anyString(), 
any())).thenReturn(expectedCmdDtoList.toArray(new 
ComputationalMetadataDTO[]{}));
 
                List<FullComputationalTemplate> expectedFullCmdDtoList = 
expectedCmdDtoList.stream()
@@ -132,12 +139,13 @@ public class InfrastructureTemplateServiceBaseTest {
                        
assertTrue(areFullComputationalTemplatesEqual(expectedFullCmdDtoList.get(i), 
actualFullCmdDtoList.get(i)));
                }
 
-               verify(provisioningService).get("docker/computational", 
"token", ComputationalMetadataDTO[].class);
+               verify(provisioningService).get(endpointDTO().getUrl() + 
"docker/computational", "token", ComputationalMetadataDTO[].class);
                verifyNoMoreInteractions(provisioningService);
        }
 
        @Test
        public void getComputationalTemplatesWhenMethodThrowsException() {
+               
when(endpointService.get(anyString())).thenReturn(endpointDTO());
                doThrow(new DlabException("Could not load list of computational 
templates for user"))
                                .when(provisioningService).get(anyString(), 
anyString(), any());
 
@@ -147,18 +155,20 @@ public class InfrastructureTemplateServiceBaseTest {
                } catch (DlabException e) {
                        assertEquals("Could not load list of computational 
templates for user", e.getMessage());
                }
-               verify(provisioningService).get("docker/computational", 
"token", ComputationalMetadataDTO[].class);
+               verify(provisioningService).get(endpointDTO().getUrl() + 
"docker/computational", "token",
+                               ComputationalMetadataDTO[].class);
                verifyNoMoreInteractions(provisioningService);
        }
 
        @Test
        public void getComputationalTemplatesWithInapproprietaryImageName() {
+               
when(endpointService.get(anyString())).thenReturn(endpointDTO());
                final ComputationalMetadataDTO computationalMetadataDTO = new 
ComputationalMetadataDTO("dataengine-service");
                
computationalMetadataDTO.setComputationResourceShapes(Collections.emptyMap());
                List<ComputationalMetadataDTO> expectedCmdDtoList = 
Collections.singletonList(computationalMetadataDTO);
                when(provisioningService.get(anyString(), anyString(), 
any())).thenReturn(expectedCmdDtoList.toArray(new 
ComputationalMetadataDTO[]{}));
-               /*when(projectDAO.get(anyString())).thenReturn(Optional.of(new 
ProjectDTO("project", Collections.emptySet(),
-                               Collections.singleton("project"), null, 
null,null)));*/
+               when(projectDAO.get(anyString())).thenReturn(Optional.of(new 
ProjectDTO("project", Collections.emptySet(),
+                               null, null, null, null)));
 
                UserInfo userInfo = new UserInfo("test", "token");
                try {
@@ -166,14 +176,13 @@ public class InfrastructureTemplateServiceBaseTest {
                } catch (IllegalArgumentException e) {
                        assertEquals("Unknown data engine null", 
e.getMessage());
                }
-               verify(provisioningService).get("docker/computational", 
"token", ComputationalMetadataDTO[].class);
+               verify(provisioningService).get(endpointDTO().getUrl() + 
"docker/computational", "token", ComputationalMetadataDTO[].class);
                verifyNoMoreInteractions(provisioningService);
        }
 
        private boolean 
areFullComputationalTemplatesEqual(FullComputationalTemplate object1,
                                                                                
                           FullComputationalTemplate object2) throws 
NoSuchFieldException,
                        IllegalAccessException {
-               String project = "";//TODO CHANGEIT
                Field computationalMetadataDTO1 = 
object1.getClass().getDeclaredField("computationalMetadataDTO");
                computationalMetadataDTO1.setAccessible(true);
                Field computationalMetadataDTO2 = 
object2.getClass().getDeclaredField("computationalMetadataDTO");
@@ -187,4 +196,8 @@ public class InfrastructureTemplateServiceBaseTest {
                        return new FullComputationalTemplate(metadataDTO);
                }
        }
+
+       private EndpointDTO endpointDTO() {
+               return new EndpointDTO("test", "url", "", null);
+       }
 }
diff --git 
a/services/self-service/src/test/java/com/epam/dlab/backendapi/service/impl/LibraryServiceImplTest.java
 
b/services/self-service/src/test/java/com/epam/dlab/backendapi/service/impl/LibraryServiceImplTest.java
index 9354fd3..4a076f8 100644
--- 
a/services/self-service/src/test/java/com/epam/dlab/backendapi/service/impl/LibraryServiceImplTest.java
+++ 
b/services/self-service/src/test/java/com/epam/dlab/backendapi/service/impl/LibraryServiceImplTest.java
@@ -22,11 +22,13 @@ package com.epam.dlab.backendapi.service.impl;
 import com.epam.dlab.auth.UserInfo;
 import com.epam.dlab.backendapi.dao.ExploratoryDAO;
 import com.epam.dlab.backendapi.dao.ExploratoryLibDAO;
+import com.epam.dlab.backendapi.domain.EndpointDTO;
 import com.epam.dlab.backendapi.domain.RequestId;
 import com.epam.dlab.backendapi.resources.dto.LibInfoRecord;
 import com.epam.dlab.backendapi.resources.dto.LibInstallFormDTO;
 import com.epam.dlab.backendapi.resources.dto.LibKey;
 import com.epam.dlab.backendapi.resources.dto.LibraryStatus;
+import com.epam.dlab.backendapi.service.EndpointService;
 import com.epam.dlab.backendapi.util.RequestBuilder;
 import com.epam.dlab.dto.UserInstanceDTO;
 import com.epam.dlab.dto.computational.UserComputationalResource;
@@ -81,6 +83,8 @@ public class LibraryServiceImplTest {
        private RequestId requestId;
        @Mock
        private RESTService provisioningService;
+       @Mock
+       private EndpointService endpointService;
 
        @Rule
        public ExpectedException expectedException = ExpectedException.none();
@@ -142,6 +146,7 @@ public class LibraryServiceImplTest {
                libraryInstallDTO.setLibs(libsToInstall);
                final UserInfo user = getUser();
 
+               
when(endpointService.get(anyString())).thenReturn(endpointDTO());
                when(exploratoryDAO.fetchExploratoryFields(anyString(), 
anyString(), anyString())).thenReturn(getUserInstanceDto());
                when(provisioningService.post(anyString(), anyString(), 
any(LibraryInstallDTO.class), any())).thenReturn(UUID);
                when(requestBuilder.newLibInstall(any(UserInfo.class), 
any(UserInstanceDTO.class),
@@ -156,7 +161,7 @@ public class LibraryServiceImplTest {
                verify(libraryDAO).getLibrary(USER, EXPLORATORY_NAME, 
COMPUTATIONAL_NAME, LIB_GROUP, LIB_NAME);
                verify(requestBuilder).newLibInstall(refEq(user), 
refEq(getUserInstanceDto()),
                                
refEq(getUserComputationalResourceWithName(COMPUTATIONAL_NAME)), 
eq(libsToInstall));
-               
verify(provisioningService).post(eq("library/computational/lib_install"), 
eq(user.getAccessToken()),
+               verify(provisioningService).post(eq(endpointDTO().getUrl() + 
"library/computational/lib_install"), eq(user.getAccessToken()),
                                refEq(libraryInstallDTO), eq(String.class));
                verify(libraryDAO).addLibrary(eq(USER), eq(EXPLORATORY_NAME), 
eq(COMPUTATIONAL_NAME),
                                refEq(libsToInstall.get(0)), eq(false));
@@ -172,6 +177,7 @@ public class LibraryServiceImplTest {
                libraryInstallDTO.setLibs(libsToInstall);
                final UserInfo user = getUser();
 
+               
when(endpointService.get(anyString())).thenReturn(endpointDTO());
                when(exploratoryDAO.fetchExploratoryFields(anyString(), 
anyString(), anyString())).thenReturn(getUserInstanceDto());
                when(provisioningService.post(anyString(), anyString(), 
any(LibraryInstallDTO.class), any())).thenReturn(UUID);
                when(requestBuilder.newLibInstall(any(UserInfo.class), 
any(UserInstanceDTO.class),
@@ -192,6 +198,7 @@ public class LibraryServiceImplTest {
                libraryInstallDTO.setLibs(libsToInstall);
                final UserInfo user = getUser();
 
+               
when(endpointService.get(anyString())).thenReturn(endpointDTO());
                when(exploratoryDAO.fetchExploratoryFields(anyString(), 
anyString(), anyString())).thenReturn(getUserInstanceDto());
                when(provisioningService.post(anyString(), anyString(), 
any(LibraryInstallDTO.class), any())).thenReturn(UUID);
                when(requestBuilder.newLibInstall(any(UserInfo.class), 
any(UserInstanceDTO.class),
@@ -210,7 +217,8 @@ public class LibraryServiceImplTest {
                                refEq(libsToInstall.get(0)), eq(true));
                verify(requestBuilder).newLibInstall(refEq(user), 
refEq(getUserInstanceDto()),
                                
refEq(getUserComputationalResourceWithName(COMPUTATIONAL_NAME)), 
eq(libsToInstall));
-               
verify(provisioningService).post(eq("library/computational/lib_install"), 
eq(user.getAccessToken()),
+               verify(provisioningService).post(eq(endpointDTO().getUrl() + 
"library/computational/lib_install"),
+                               eq(user.getAccessToken()),
                                refEq(libraryInstallDTO), eq(String.class));
                verify(requestId).put(user.getName(), UUID);
                verifyNoMoreInteractions(libraryDAO, requestBuilder, 
provisioningService, requestId, exploratoryDAO);
@@ -225,6 +233,7 @@ public class LibraryServiceImplTest {
                libraryInstallDTO.setLibs(libsToInstall);
                final UserInfo user = getUser();
 
+               
when(endpointService.get(anyString())).thenReturn(endpointDTO());
                when(exploratoryDAO.fetchExploratoryFields(anyString(), 
anyString(), anyString())).thenReturn(getUserInstanceDto());
                when(provisioningService.post(anyString(), anyString(), 
any(LibraryInstallDTO.class), any())).thenReturn(UUID);
                when(requestBuilder.newLibInstall(any(UserInfo.class), 
any(UserInstanceDTO.class),
@@ -250,6 +259,7 @@ public class LibraryServiceImplTest {
                libraryInstallDTO.setLibs(libsToInstall);
                final UserInfo user = getUser();
 
+               
when(endpointService.get(anyString())).thenReturn(endpointDTO());
                when(exploratoryDAO.fetchRunningExploratoryFields(anyString(), 
anyString())).thenReturn(getUserInstanceDto());
                when(provisioningService.post(anyString(), anyString(), 
any(LibraryInstallDTO.class), any())).thenReturn(UUID);
                when(requestBuilder.newLibInstall(any(UserInfo.class), 
any(UserInstanceDTO.class),
@@ -262,7 +272,7 @@ public class LibraryServiceImplTest {
 
                verify(libraryDAO).getLibrary(USER, EXPLORATORY_NAME, 
LIB_GROUP, LIB_NAME);
                verify(requestBuilder).newLibInstall(refEq(user), 
refEq(getUserInstanceDto()), eq(libsToInstall));
-               
verify(provisioningService).post(eq("library/exploratory/lib_install"), 
eq(user.getAccessToken()),
+               verify(provisioningService).post(eq(endpointDTO().getUrl() + 
"library/exploratory/lib_install"), eq(user.getAccessToken()),
                                refEq(libraryInstallDTO), eq(String.class));
                verify(libraryDAO).addLibrary(eq(USER), eq(EXPLORATORY_NAME), 
refEq(libsToInstall.get(0)), eq(false));
                verify(requestId).put(user.getName(), UUID);
@@ -277,6 +287,7 @@ public class LibraryServiceImplTest {
                libraryInstallDTO.setLibs(libsToInstall);
                final UserInfo user = getUser();
 
+               
when(endpointService.get(anyString())).thenReturn(endpointDTO());
                when(exploratoryDAO.fetchRunningExploratoryFields(anyString(), 
anyString())).thenReturn(getUserInstanceDto());
                when(provisioningService.post(anyString(), anyString(), 
any(LibraryInstallDTO.class), any())).thenReturn(UUID);
                when(requestBuilder.newLibInstall(any(UserInfo.class), 
any(UserInstanceDTO.class),
@@ -292,7 +303,7 @@ public class LibraryServiceImplTest {
                verify(libraryDAO).addLibrary(eq(USER), eq(EXPLORATORY_NAME), 
refEq(libsToInstall.get(0)), eq(true));
                verify(requestBuilder).newLibInstall(refEq(user), 
refEq(getUserInstanceDto()), eq(libsToInstall));
                verify(exploratoryDAO).fetchRunningExploratoryFields(USER, 
EXPLORATORY_NAME);
-               
verify(provisioningService).post(eq("library/exploratory/lib_install"), 
eq(user.getAccessToken()),
+               verify(provisioningService).post(eq(endpointDTO().getUrl() + 
"library/exploratory/lib_install"), eq(user.getAccessToken()),
                                refEq(libraryInstallDTO), eq(String.class));
                verify(requestId).put(USER, uuid);
                verifyNoMoreInteractions(libraryDAO, requestBuilder, 
provisioningService, requestId, exploratoryDAO);
@@ -305,6 +316,7 @@ public class LibraryServiceImplTest {
                libraryInstallDTO.setLibs(libsToInstall);
                final UserInfo user = getUser();
 
+               
when(endpointService.get(anyString())).thenReturn(endpointDTO());
                when(exploratoryDAO.fetchRunningExploratoryFields(anyString(), 
anyString())).thenReturn(getUserInstanceDto());
                when(provisioningService.post(anyString(), anyString(), 
any(LibraryInstallDTO.class), any())).thenReturn(UUID);
                when(requestBuilder.newLibInstall(any(UserInfo.class), 
any(UserInstanceDTO.class),
@@ -407,4 +419,8 @@ public class LibraryServiceImplTest {
                );
        }
 
+       private EndpointDTO endpointDTO() {
+               return new EndpointDTO("test", "url", "", null);
+       }
+
 }


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

Reply via email to