You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@datalab.apache.org by of...@apache.org on 2020/12/04 10:05:40 UTC

[incubator-datalab] branch develop updated: [DATALAB-2152]: fixed sync with clusters. (#996)

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

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


The following commit(s) were added to refs/heads/develop by this push:
     new ab42db9  [DATALAB-2152]: fixed sync with clusters. (#996)
ab42db9 is described below

commit ab42db910024abdbab18f3dbd5c15845b2475cbd
Author: Kinash Yurii <ur...@gmail.com>
AuthorDate: Fri Dec 4 12:05:33 2020 +0200

    [DATALAB-2152]: fixed sync with clusters. (#996)
    
    [DATALAB-2152]: fixed sync with clusters
---
 .../epam/datalab/dto/status/EnvResourceList.java   | 48 ++---------------
 .../datalab/dto/status/EnvResourceDTOTest.java     |  6 ++-
 .../epam/datalab/dto/status/EnvStatusDTOTest.java  |  6 ++-
 .../handlers/ResourcesStatusCallbackHandler.java   | 27 +++++-----
 .../com/epam/datalab/backendapi/dao/EnvDAO.java    |  7 +--
 .../service/impl/EnvironmentServiceImpl.java       |  4 +-
 .../impl/InfrastructureInfoServiceImpl.java        |  7 +--
 .../service/impl/EnvironmentServiceImplTest.java   | 10 ++--
 .../impl/InfrastructureInfoServiceImplTest.java    | 63 +++++++++++-----------
 9 files changed, 76 insertions(+), 102 deletions(-)

diff --git a/services/datalab-model/src/main/java/com/epam/datalab/dto/status/EnvResourceList.java b/services/datalab-model/src/main/java/com/epam/datalab/dto/status/EnvResourceList.java
index 018e736..0db1930 100644
--- a/services/datalab-model/src/main/java/com/epam/datalab/dto/status/EnvResourceList.java
+++ b/services/datalab-model/src/main/java/com/epam/datalab/dto/status/EnvResourceList.java
@@ -22,6 +22,8 @@ package com.epam.datalab.dto.status;
 import com.fasterxml.jackson.annotation.JsonProperty;
 import com.google.common.base.MoreObjects;
 import com.google.common.base.MoreObjects.ToStringHelper;
+import lombok.Builder;
+import lombok.Data;
 import lombok.EqualsAndHashCode;
 
 import java.util.List;
@@ -29,6 +31,8 @@ import java.util.List;
 /**
  * Describe the lists of resources (host, cluster, storage) for check status in Cloud.
  */
+@Data
+@Builder
 @EqualsAndHashCode
 public class EnvResourceList {
     @JsonProperty("host")
@@ -36,50 +40,6 @@ public class EnvResourceList {
     @JsonProperty("cluster")
     private List<EnvResource> clusterList;
 
-    /**
-     * Return the list of hosts.
-     */
-    public List<EnvResource> getHostList() {
-        return hostList;
-    }
-
-    /**
-     * Set the list of hosts.
-     */
-    public void setHostList(List<EnvResource> hostList) {
-        this.hostList = hostList;
-    }
-
-    /**
-     * Set the list of hosts.
-     */
-    public EnvResourceList withHostList(List<EnvResource> hostList) {
-        setHostList(hostList);
-        return this;
-    }
-
-    /**
-     * Return the list of clusters.
-     */
-    public List<EnvResource> getClusterList() {
-        return clusterList;
-    }
-
-    /**
-     * Set the list of clusters.
-     */
-    public void setClusterList(List<EnvResource> clusterList) {
-        this.clusterList = clusterList;
-    }
-
-    /**
-     * Set the list of clusters.
-     */
-    public EnvResourceList withClusterList(List<EnvResource> clusterList) {
-        setClusterList(clusterList);
-        return this;
-    }
-
     public ToStringHelper toStringHelper(Object self) {
         return MoreObjects.toStringHelper(self)
                 .add("host", hostList)
diff --git a/services/datalab-model/src/test/java/com/epam/datalab/dto/status/EnvResourceDTOTest.java b/services/datalab-model/src/test/java/com/epam/datalab/dto/status/EnvResourceDTOTest.java
index 5d76825..9c3470a 100644
--- a/services/datalab-model/src/test/java/com/epam/datalab/dto/status/EnvResourceDTOTest.java
+++ b/services/datalab-model/src/test/java/com/epam/datalab/dto/status/EnvResourceDTOTest.java
@@ -57,8 +57,10 @@ public class EnvResourceDTOTest {
         clusters1.add(new EnvResource().withId("11"));
         assertEquals(clusters1.get(0).getId(), "10");
 
-        EnvResourceList r1 = new EnvResourceList()
-                .withHostList(hosts1).withClusterList(clusters1);
+        EnvResourceList r1 = EnvResourceList.builder()
+                .hostList(hosts1)
+                .clusterList(clusters1)
+                .build();
         assertEquals(r1.getHostList().get(1).getId(), "2");
         assertEquals(r1.getHostList().get(2).getId(), "3");
         assertEquals(r1.getClusterList().get(1).getId(), "11");
diff --git a/services/datalab-model/src/test/java/com/epam/datalab/dto/status/EnvStatusDTOTest.java b/services/datalab-model/src/test/java/com/epam/datalab/dto/status/EnvStatusDTOTest.java
index fbdb3f7..d8dc69d 100644
--- a/services/datalab-model/src/test/java/com/epam/datalab/dto/status/EnvStatusDTOTest.java
+++ b/services/datalab-model/src/test/java/com/epam/datalab/dto/status/EnvStatusDTOTest.java
@@ -58,8 +58,10 @@ public class EnvStatusDTOTest {
         clusters1.add(new EnvResource().withId("11"));
         assertEquals(clusters1.get(0).getId(), "10");
 
-        EnvResourceList r1 = new EnvResourceList()
-                .withHostList(hosts1).withClusterList(clusters1);
+        EnvResourceList r1 = EnvResourceList.builder()
+                .hostList(hosts1)
+                .clusterList(clusters1)
+                .build();
         assertEquals(r1.getHostList().get(1).getId(), "2");
         assertEquals(r1.getHostList().get(2).getId(), "3");
         assertEquals(r1.getClusterList().get(1).getId(), "11");
diff --git a/services/provisioning-service/src/main/java/com/epam/datalab/backendapi/core/response/handlers/ResourcesStatusCallbackHandler.java b/services/provisioning-service/src/main/java/com/epam/datalab/backendapi/core/response/handlers/ResourcesStatusCallbackHandler.java
index 04fe951..3a93b62 100644
--- a/services/provisioning-service/src/main/java/com/epam/datalab/backendapi/core/response/handlers/ResourcesStatusCallbackHandler.java
+++ b/services/provisioning-service/src/main/java/com/epam/datalab/backendapi/core/response/handlers/ResourcesStatusCallbackHandler.java
@@ -31,7 +31,6 @@ import com.fasterxml.jackson.annotation.JsonCreator;
 import com.fasterxml.jackson.annotation.JsonProperty;
 import com.fasterxml.jackson.databind.JsonNode;
 import lombok.extern.slf4j.Slf4j;
-import org.apache.commons.collections4.CollectionUtils;
 
 import java.io.IOException;
 import java.time.Instant;
@@ -39,7 +38,9 @@ import java.util.Collections;
 import java.util.Date;
 import java.util.List;
 import java.util.Map;
+import java.util.Optional;
 import java.util.stream.Collectors;
+import java.util.stream.Stream;
 
 import static com.epam.datalab.rest.contracts.ApiCallbacks.INFRASTRUCTURE;
 import static com.epam.datalab.rest.contracts.ApiCallbacks.STATUS_URI;
@@ -51,9 +52,10 @@ public class ResourcesStatusCallbackHandler extends ResourceCallbackHandler<EnvS
 
     @JsonCreator
     public ResourcesStatusCallbackHandler(@JacksonInject RESTService selfService, @JsonProperty("action") DockerAction action,
-                                          @JsonProperty("uuid") String uuid, @JsonProperty("user") String user, EnvResourceList resourceList) {
+                                          @JsonProperty("uuid") String uuid, @JsonProperty("user") String user,
+                                          EnvResourceList resourceList) {
         super(selfService, user, uuid, action);
-        this.datalabHostResources = getEnvResources(resourceList.getHostList());
+        this.datalabHostResources = getEnvResources(resourceList);
     }
 
     @Override
@@ -69,12 +71,10 @@ public class ResourcesStatusCallbackHandler extends ResourceCallbackHandler<EnvS
             throw new DatalabException("Docker response for UUID " + getUUID() + " not valid: " + e.getLocalizedMessage(), e);
         }
 
-        EnvResourceList envResourceList = new EnvResourceList();
-        if (CollectionUtils.isNotEmpty(cloudResourceList.getHostList())) {
-            envResourceList.withHostList(getChangedEnvResources(cloudResourceList.getHostList()));
-        } else {
-            envResourceList.withHostList(Collections.emptyList());
-        }
+        EnvResourceList envResourceList = EnvResourceList.builder()
+                .hostList(getListOrEmpty(cloudResourceList.getHostList()))
+                .clusterList(getListOrEmpty(cloudResourceList.getClusterList()))
+                .build();
 
         baseStatus
                 .withResourceList(envResourceList)
@@ -115,9 +115,12 @@ public class ResourcesStatusCallbackHandler extends ResourceCallbackHandler<EnvS
                 .collect(Collectors.toList());
     }
 
-    private Map<String, EnvResource> getEnvResources(List<EnvResource> envResources) {
-        return envResources
-                .stream()
+    private Map<String, EnvResource> getEnvResources(EnvResourceList envResources) {
+        return Stream.concat(envResources.getClusterList().stream(), envResources.getHostList().stream())
                 .collect(Collectors.toMap(EnvResource::getId, e -> e));
     }
+
+    private List<EnvResource> getListOrEmpty(List<EnvResource> source) {
+        return getChangedEnvResources(Optional.of(source).orElse(Collections.emptyList()));
+    }
 }
diff --git a/services/self-service/src/main/java/com/epam/datalab/backendapi/dao/EnvDAO.java b/services/self-service/src/main/java/com/epam/datalab/backendapi/dao/EnvDAO.java
index 61317a1..1e03de1 100644
--- a/services/self-service/src/main/java/com/epam/datalab/backendapi/dao/EnvDAO.java
+++ b/services/self-service/src/main/java/com/epam/datalab/backendapi/dao/EnvDAO.java
@@ -123,9 +123,10 @@ public class EnvDAO extends BaseDAO {
         return hostList.stream()
                 .collect(Collectors.groupingBy(EnvResource::getEndpoint)).entrySet()
                 .stream()
-                .collect(Collectors.toMap(Map.Entry::getKey, e -> new EnvResourceList()
-                        .withHostList(!e.getValue().isEmpty() ? e.getValue() : Collections.emptyList())
-                        .withClusterList(clustersByEndpoint.getOrDefault(e.getKey(), clusterList))));
+                .collect(Collectors.toMap(Map.Entry::getKey, e -> EnvResourceList.builder()
+                        .hostList(!e.getValue().isEmpty() ? e.getValue() : Collections.emptyList())
+                        .clusterList(clustersByEndpoint.getOrDefault(e.getKey(), clusterList))
+                        .build()));
     }
 
     @SuppressWarnings("unchecked")
diff --git a/services/self-service/src/main/java/com/epam/datalab/backendapi/service/impl/EnvironmentServiceImpl.java b/services/self-service/src/main/java/com/epam/datalab/backendapi/service/impl/EnvironmentServiceImpl.java
index abc139a..19e1cd3 100644
--- a/services/self-service/src/main/java/com/epam/datalab/backendapi/service/impl/EnvironmentServiceImpl.java
+++ b/services/self-service/src/main/java/com/epam/datalab/backendapi/service/impl/EnvironmentServiceImpl.java
@@ -175,8 +175,8 @@ public class EnvironmentServiceImpl implements EnvironmentService {
 
     @Override
     public void updateEnvironmentStatuses(EnvResourceList resourceList) {
-        resourceList.getHostList()
-                .forEach(this::updateHostStatuses);
+        resourceList.getHostList().forEach(this::updateHostStatuses);
+        resourceList.getClusterList().forEach(this::updateHostStatuses);
     }
 
     private void updateHostStatuses(EnvResource envResource) {
diff --git a/services/self-service/src/main/java/com/epam/datalab/backendapi/service/impl/InfrastructureInfoServiceImpl.java b/services/self-service/src/main/java/com/epam/datalab/backendapi/service/impl/InfrastructureInfoServiceImpl.java
index 69973c1..2030516 100644
--- a/services/self-service/src/main/java/com/epam/datalab/backendapi/service/impl/InfrastructureInfoServiceImpl.java
+++ b/services/self-service/src/main/java/com/epam/datalab/backendapi/service/impl/InfrastructureInfoServiceImpl.java
@@ -148,9 +148,10 @@ public class InfrastructureInfoServiceImpl implements InfrastructureInfoService
 
     @Override
     public void updateInfrastructureStatuses(UserInfo user, String endpoint, List<EnvResource> hostInstances, List<EnvResource> clusterInstances) {
-        EnvResourceList envResourceList = new EnvResourceList()
-                .withClusterList(clusterInstances)
-                .withHostList(hostInstances);
+        EnvResourceList envResourceList = EnvResourceList.builder()
+                        .hostList(hostInstances)
+                        .clusterList(clusterInstances)
+                        .build();
 
         EndpointDTO endpointDTO = endpointService.get(endpoint);
         String uuid = provisioningService.post(endpointDTO.getUrl() + INFRASTRUCTURE_STATUS, user.getAccessToken(),
diff --git a/services/self-service/src/test/java/com/epam/datalab/backendapi/service/impl/EnvironmentServiceImplTest.java b/services/self-service/src/test/java/com/epam/datalab/backendapi/service/impl/EnvironmentServiceImplTest.java
index 3f35e47..9b68de7 100644
--- a/services/self-service/src/test/java/com/epam/datalab/backendapi/service/impl/EnvironmentServiceImplTest.java
+++ b/services/self-service/src/test/java/com/epam/datalab/backendapi/service/impl/EnvironmentServiceImplTest.java
@@ -335,7 +335,10 @@ public class EnvironmentServiceImplTest {
 
     @Test
     public void updateEnvironmentStatusesWithUnknownStatus() {
-        EnvResourceList envResourceList = new EnvResourceList().withHostList(Collections.singletonList(new EnvResource().withStatus("unknown status")));
+        EnvResourceList envResourceList = EnvResourceList.builder()
+                .hostList(Collections.singletonList(new EnvResource().withStatus("unknown status")))
+                .build();
+
         environmentService.updateEnvironmentStatuses(envResourceList);
 
         verifyZeroInteractions(projectService, exploratoryService, computationalService);
@@ -348,8 +351,9 @@ public class EnvironmentServiceImplTest {
     private EnvResourceList getEnvResourceList() {
         List<EnvResource> hostList = Arrays.asList(getEnvResource(ResourceType.EDGE), getEnvResource(ResourceType.EXPLORATORY),
                 getEnvResource(ResourceType.COMPUTATIONAL));
-        return new EnvResourceList()
-                .withHostList(hostList);
+        return  EnvResourceList.builder()
+                .hostList(hostList)
+                .build();
     }
 
     private EnvResource getEnvResource(ResourceType resourceType) {
diff --git a/services/self-service/src/test/java/com/epam/datalab/backendapi/service/impl/InfrastructureInfoServiceImplTest.java b/services/self-service/src/test/java/com/epam/datalab/backendapi/service/impl/InfrastructureInfoServiceImplTest.java
index c9da975..683617a 100644
--- a/services/self-service/src/test/java/com/epam/datalab/backendapi/service/impl/InfrastructureInfoServiceImplTest.java
+++ b/services/self-service/src/test/java/com/epam/datalab/backendapi/service/impl/InfrastructureInfoServiceImplTest.java
@@ -222,9 +222,10 @@ public class InfrastructureInfoServiceImplTest extends TestBase {
         infoService.updateInfrastructureStatuses(getUserInfo(), ENDPOINT_NAME, envResources, envResources);
 
         verify(endpointService).get(ENDPOINT_NAME);
-        verify(requestBuilder).newInfrastructureStatus(USER.toLowerCase(), CloudProvider.AWS, new EnvResourceList()
-                .withHostList(envResources)
-                .withClusterList(envResources));
+        verify(requestBuilder).newInfrastructureStatus(USER.toLowerCase(), CloudProvider.AWS, EnvResourceList.builder()
+                .hostList(envResources)
+                .clusterList(envResources)
+                .build());
         verify(provisioningService).post(ENDPOINT_URL + INFRASTRUCTURE_STATUS, TOKEN, new UserEnvironmentResources(), String.class);
         verify(requestId).put(USER.toLowerCase(), UUID);
         verifyNoMoreInteractions(endpointService, provisioningService, requestBuilder, requestId);
@@ -260,13 +261,13 @@ public class InfrastructureInfoServiceImplTest extends TestBase {
     private List<ProjectInfrastructureInfo> getProjectInfrastructureInfo() {
         List<ProjectInfrastructureInfo> objects = new ArrayList<>();
         objects.add(ProjectInfrastructureInfo.builder()
-		        .project(PROJECT)
-		        .billingQuoteUsed(10)
-		        .shared(Collections.singletonMap(ENDPOINT_NAME, Collections.emptyMap()))
-		        .exploratory(getUserInstanceDTOs())
-		        .exploratoryBilling(Collections.singletonList(getReport()))
-		        .endpoints(Collections.singletonList(getEndpointDTO()))
-		        .odahu(Collections.emptyList())
+                .project(PROJECT)
+                .billingQuoteUsed(10)
+                .shared(Collections.singletonMap(ENDPOINT_NAME, Collections.emptyMap()))
+                .exploratory(getUserInstanceDTOs())
+                .exploratoryBilling(Collections.singletonList(getReport()))
+                .endpoints(Collections.singletonList(getEndpointDTO()))
+                .odahu(Collections.emptyList())
                 .build());
         return objects;
     }
@@ -274,13 +275,13 @@ public class InfrastructureInfoServiceImplTest extends TestBase {
     private List<ProjectInfrastructureInfo> getAwsProjectInfrastructureInfo() {
         List<ProjectInfrastructureInfo> objects = new ArrayList<>();
         objects.add(ProjectInfrastructureInfo.builder()
-		        .project(PROJECT)
-		        .billingQuoteUsed(10)
-		        .shared(Collections.singletonMap(ENDPOINT_NAME, getAwsEdgeInfo()))
-		        .exploratory(getUserInstanceDTOs())
-		        .exploratoryBilling(Collections.singletonList(getReport()))
-		        .endpoints(Collections.singletonList(getEndpointDTO()))
-		        .odahu(Collections.emptyList())
+                .project(PROJECT)
+                .billingQuoteUsed(10)
+                .shared(Collections.singletonMap(ENDPOINT_NAME, getAwsEdgeInfo()))
+                .exploratory(getUserInstanceDTOs())
+                .exploratoryBilling(Collections.singletonList(getReport()))
+                .endpoints(Collections.singletonList(getEndpointDTO()))
+                .odahu(Collections.emptyList())
                 .build());
         return objects;
     }
@@ -288,13 +289,13 @@ public class InfrastructureInfoServiceImplTest extends TestBase {
     private List<ProjectInfrastructureInfo> getAzureProjectInfrastructureInfo() {
         List<ProjectInfrastructureInfo> objects = new ArrayList<>();
         objects.add(ProjectInfrastructureInfo.builder()
-		        .project(PROJECT)
-		        .billingQuoteUsed(10)
-		        .shared(Collections.singletonMap(ENDPOINT_NAME, getAzureEdgeInfo()))
-		        .exploratory(getUserInstanceDTOs())
-		        .exploratoryBilling(Collections.singletonList(getReport()))
-		        .endpoints(Collections.singletonList(getEndpointDTO()))
-		        .odahu(Collections.emptyList())
+                .project(PROJECT)
+                .billingQuoteUsed(10)
+                .shared(Collections.singletonMap(ENDPOINT_NAME, getAzureEdgeInfo()))
+                .exploratory(getUserInstanceDTOs())
+                .exploratoryBilling(Collections.singletonList(getReport()))
+                .endpoints(Collections.singletonList(getEndpointDTO()))
+                .odahu(Collections.emptyList())
                 .build());
         return objects;
     }
@@ -302,13 +303,13 @@ public class InfrastructureInfoServiceImplTest extends TestBase {
     private List<ProjectInfrastructureInfo> getGcpProjectInfrastructureInfo() {
         List<ProjectInfrastructureInfo> objects = new ArrayList<>();
         objects.add(ProjectInfrastructureInfo.builder()
-		        .project(PROJECT)
-		        .billingQuoteUsed(10)
-		        .shared(Collections.singletonMap(ENDPOINT_NAME, getGcpEdgeInfo()))
-		        .exploratory(getUserInstanceDTOs())
-		        .exploratoryBilling(Collections.singletonList(getReport()))
-		        .endpoints(Collections.singletonList(getEndpointDTO()))
-		        .odahu(Collections.emptyList())
+                .project(PROJECT)
+                .billingQuoteUsed(10)
+                .shared(Collections.singletonMap(ENDPOINT_NAME, getGcpEdgeInfo()))
+                .exploratory(getUserInstanceDTOs())
+                .exploratoryBilling(Collections.singletonList(getReport()))
+                .endpoints(Collections.singletonList(getEndpointDTO()))
+                .odahu(Collections.emptyList())
                 .build());
         return objects;
     }


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