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