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

[incubator-dlab] branch DLAB-1230 updated: [DLAB-1230] Fixed billing issues with edges [Azure]

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

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


The following commit(s) were added to refs/heads/DLAB-1230 by this push:
     new bb4f91f  [DLAB-1230] Fixed billing issues with edges [Azure]
bb4f91f is described below

commit bb4f91fa417dc96c11adac41d622abf4b668e74e
Author: Oleh Fuks <ol...@gmail.com>
AuthorDate: Mon Nov 11 13:30:35 2019 +0200

    [DLAB-1230] Fixed billing issues with edges [Azure]
---
 .../azure/AzureBillableResourcesService.java       | 40 ++++++++++------------
 1 file changed, 19 insertions(+), 21 deletions(-)

diff --git a/services/billing-azure/src/main/java/com/epam/dlab/billing/azure/AzureBillableResourcesService.java b/services/billing-azure/src/main/java/com/epam/dlab/billing/azure/AzureBillableResourcesService.java
index 7b5fd61..fa3a518 100644
--- a/services/billing-azure/src/main/java/com/epam/dlab/billing/azure/AzureBillableResourcesService.java
+++ b/services/billing-azure/src/main/java/com/epam/dlab/billing/azure/AzureBillableResourcesService.java
@@ -161,31 +161,26 @@ public class AzureBillableResourcesService {
 	private Set<AzureDlabBillableResource> getEdgeAndStorageAccount() {
 		Set<AzureDlabBillableResource> billableResources = new HashSet<>();
 
-		try {
-
-			final FindIterable<Document> prjDocuments = mongoDbBillingClient.getDatabase()
-					.getCollection("Projects").find();
-			final List<Document> edges = StreamSupport.stream(prjDocuments.spliterator(), false)
-					.flatMap(d -> ((List<Document>) d.get("endpoints")).stream())
-					.map(d -> (Document) d.get("edgeInfo"))
-					.collect(Collectors.toList());
-			List<EdgeInfoAzure> edgeInfoList = objectMapper.readValue(
-					objectMapper.writeValueAsString(edges),
-					new com.fasterxml.jackson.core.type.TypeReference<List<EdgeInfoAzure>>() {
-					});
-
-			Optional.ofNullable(edgeInfoList).ifPresent(e -> e.stream().filter(Objects::nonNull).forEach(
-					edgeInfoAzure -> billableResources.addAll(getEdgeAndStorageAccount(edgeInfoAzure))));
+		Map<String, List<Document>> projectEndpoints = StreamSupport.stream(mongoDbBillingClient.getDatabase()
+				.getCollection("Projects").find().spliterator(), false)
+				.collect(Collectors.toMap(key -> key.getString("name").toLowerCase(),
+						value -> (List<Document>) value.get("endpoints")));
+
+		projectEndpoints.forEach((key, value) -> value.forEach(endpoint -> {
+			try {
+				billableResources.addAll(getEdgeAndStorageAccount(key, objectMapper.readValue(
+						objectMapper.writeValueAsString(endpoint.get("edgeInfo")),
+						new com.fasterxml.jackson.core.type.TypeReference<EdgeInfoAzure>() {
+						})));
+			} catch (IOException ex) {
+				log.error("Error during preparation of billable resources", ex);
+			}
+		}));
 
-			return billableResources;
-		} catch (IOException e) {
-			log.error("Error during preparation of billable resources", e);
-		}
 		return billableResources;
 	}
 
-	private Set<AzureDlabBillableResource> getEdgeAndStorageAccount(EdgeInfoAzure edgeInfoAzure) {
-
+	private Set<AzureDlabBillableResource> getEdgeAndStorageAccount(String projectName, EdgeInfoAzure edgeInfoAzure) {
 		Set<AzureDlabBillableResource> billableResources = new HashSet<>();
 
 		if (StringUtils.isNotEmpty(edgeInfoAzure.getUserContainerName())) {
@@ -193,6 +188,7 @@ public class AzureBillableResourcesService {
 					.id(edgeInfoAzure.getUserStorageAccountTagName())
 					.type(DlabResourceType.EDGE_STORAGE_ACCOUNT)
 					.user(SHARED_RESOURCE)
+					.project(projectName)
 					.build());
 		}
 
@@ -201,12 +197,14 @@ public class AzureBillableResourcesService {
 					.id(edgeInfoAzure.getInstanceId())
 					.type(DlabResourceType.EDGE)
 					.user(SHARED_RESOURCE)
+					.project(projectName)
 					.build());
 
 			billableResources.add(AzureDlabBillableResource.builder()
 					.id(edgeInfoAzure.getInstanceId() + "-volume-primary")
 					.type(DlabResourceType.VOLUME)
 					.user(SHARED_RESOURCE)
+					.project(projectName)
 					.build());
 		}
 


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