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

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


The following commit(s) were added to refs/heads/DLAB-1571 by this push:
     new 8151f52  Remote billing
8151f52 is described below

commit 8151f5243a91eec41cba08e7a88223b16b42aefa
Author: Oleh Fuks <olegfuk...@gmail.com>
AuthorDate: Fri Mar 27 15:15:11 2020 +0200

    Remote billing
---
 .../epam/dlab/dto/billing/BillingResourceType.java |  1 +
 .../epam/dlab/backendapi/util/BillingUtils.java    | 43 ++++++++++++++--------
 2 files changed, 28 insertions(+), 16 deletions(-)

diff --git 
a/services/dlab-model/src/main/java/com/epam/dlab/dto/billing/BillingResourceType.java
 
b/services/dlab-model/src/main/java/com/epam/dlab/dto/billing/BillingResourceType.java
index 894d3e4..ac02ab1 100644
--- 
a/services/dlab-model/src/main/java/com/epam/dlab/dto/billing/BillingResourceType.java
+++ 
b/services/dlab-model/src/main/java/com/epam/dlab/dto/billing/BillingResourceType.java
@@ -22,6 +22,7 @@ package com.epam.dlab.dto.billing;
 public enum BillingResourceType {
     EDGE,
     SSN,
+    ENDPOINT,
     BUCKET,
     VOLUME,
     EXPLORATORY,
diff --git 
a/services/self-service/src/main/java/com/epam/dlab/backendapi/util/BillingUtils.java
 
b/services/self-service/src/main/java/com/epam/dlab/backendapi/util/BillingUtils.java
index d8e230a..0fe4ebe 100644
--- 
a/services/self-service/src/main/java/com/epam/dlab/backendapi/util/BillingUtils.java
+++ 
b/services/self-service/src/main/java/com/epam/dlab/backendapi/util/BillingUtils.java
@@ -23,7 +23,6 @@ import com.epam.dlab.backendapi.domain.BillingReportLine;
 import com.epam.dlab.dto.UserInstanceDTO;
 import com.epam.dlab.dto.UserInstanceStatus;
 import com.epam.dlab.dto.base.DataEngineType;
-import com.epam.dlab.dto.billing.BillingResourceType;
 import com.epam.dlab.dto.computational.UserComputationalResource;
 import jersey.repackaged.com.google.common.collect.Lists;
 import org.apache.commons.lang3.StringUtils;
@@ -37,11 +36,21 @@ import java.util.Objects;
 import java.util.Optional;
 import java.util.stream.Stream;
 
+import static com.epam.dlab.dto.billing.BillingResourceType.BUCKET;
+import static com.epam.dlab.dto.billing.BillingResourceType.COMPUTATIONAL;
+import static com.epam.dlab.dto.billing.BillingResourceType.EDGE;
+import static com.epam.dlab.dto.billing.BillingResourceType.ENDPOINT;
+import static com.epam.dlab.dto.billing.BillingResourceType.EXPLORATORY;
+import static com.epam.dlab.dto.billing.BillingResourceType.SSN;
+import static com.epam.dlab.dto.billing.BillingResourceType.VOLUME;
+
 public class BillingUtils {
 
     private static final String[] REPORT_HEADERS = {"DLab ID", "User", 
"Project", "DLab Resource Type", "Shape", "Product", "Cost"};
     private static final String REPORT_FIRST_LINE = "Service base name: %s. 
Available reporting period from: %s to: %s";
     private static final String TOTAL_LINE = "Total: %s %s";
+    private static final String SSN_FORMAT = "%s-ssn";
+    private static final String ENDPOINT_FORMAT = "%s-%s-endpoint";
     private static final String EDGE_FORMAT = "%s-%s-%s-edge";
     private static final String EDGE_VOLUME_FORMAT = 
"%s-%s-%s-edge-volume-primary";
     private static final String PROJECT_ENDPOINT_BUCKET_FORMAT = 
"%s-%s-%s-bucket";
@@ -63,24 +72,26 @@ public class BillingUtils {
         final String endpointBucketId = 
String.format(PROJECT_ENDPOINT_BUCKET_FORMAT, sbn, project.toLowerCase(), 
endpoint);
 
         return Stream.of(
-                BillingReportLine.builder().resourceName("EDGE 
node").user(SHARED_RESOURCE).project(project).dlabId(userEdgeId).resourceType(BillingResourceType.EDGE).status(UserInstanceStatus.of(status)).build(),
-                BillingReportLine.builder().resourceName("EDGE 
volume").user(SHARED_RESOURCE).project(project).dlabId(edgeVolumeId).resourceType(BillingResourceType.VOLUME).build(),
-                BillingReportLine.builder().resourceName("Project endpoint 
shared 
bucket").user(SHARED_RESOURCE).project(project).dlabId(endpointBucketId).resourceType(BillingResourceType.BUCKET).build()
+                BillingReportLine.builder().resourceName("EDGE 
node").user(SHARED_RESOURCE).project(project).dlabId(userEdgeId).resourceType(EDGE).status(UserInstanceStatus.of(status)).build(),
+                BillingReportLine.builder().resourceName("EDGE 
volume").user(SHARED_RESOURCE).project(project).dlabId(edgeVolumeId).resourceType(VOLUME).build(),
+                BillingReportLine.builder().resourceName("Project endpoint 
shared 
bucket").user(SHARED_RESOURCE).project(project).dlabId(endpointBucketId).resourceType(BUCKET).build()
         );
     }
 
     public static Stream<BillingReportLine> ssnBillingDataStream(String sbn) {
-        final String ssnId = sbn + "-ssn";
+        final String ssnId = String.format(SSN_FORMAT, sbn);
         return Stream.of(
-                
BillingReportLine.builder().user(SHARED_RESOURCE).project(SHARED_RESOURCE).resourceName("SSN").dlabId(ssnId).resourceType(BillingResourceType.SSN).build(),
-                
BillingReportLine.builder().user(SHARED_RESOURCE).project(SHARED_RESOURCE).resourceName("SSN
 Volume").dlabId(String.format(VOLUME_PRIMARY_FORMAT, 
ssnId)).resourceType(BillingResourceType.VOLUME).build()
+                
BillingReportLine.builder().user(SHARED_RESOURCE).project(SHARED_RESOURCE).resourceName("SSN").dlabId(ssnId).resourceType(SSN).build(),
+                
BillingReportLine.builder().user(SHARED_RESOURCE).project(SHARED_RESOURCE).resourceName("SSN
 Volume").dlabId(String.format(VOLUME_PRIMARY_FORMAT, 
ssnId)).resourceType(VOLUME).build()
         );
     }
 
     public static Stream<BillingReportLine> 
sharedEndpointBillingDataStream(String endpoint, String sbn) {
         final String projectEndpointBucketId = 
String.format(ENDPOINT_SHARED_BUCKET_FORMAT, sbn, endpoint.toLowerCase());
+        final String endpointId = String.format(ENDPOINT_FORMAT, sbn, 
endpoint.toLowerCase());
         return Stream.of(
-                BillingReportLine.builder().resourceName("Endpoint shared 
bucket").user(SHARED_RESOURCE).project(SHARED_RESOURCE).dlabId(projectEndpointBucketId).resourceType(BillingResourceType.BUCKET).build()
+                BillingReportLine.builder().resourceName("Endpoint shared 
bucket").user(SHARED_RESOURCE).project(SHARED_RESOURCE).dlabId(projectEndpointBucketId).resourceType(BUCKET).build(),
+                
BillingReportLine.builder().resourceName("Endpoint").user(SHARED_RESOURCE).project(SHARED_RESOURCE).dlabId(endpointId).resourceType(ENDPOINT).build()
         );
     }
 
@@ -89,12 +100,12 @@ public class BillingUtils {
                 .stream()
                 .filter(cr -> cr.getComputationalId() != null)
                 .flatMap(cr -> Stream.concat(Stream.of(
-                        
withUserProject(userInstance).dlabId(cr.getComputationalId()).resourceName(cr.getComputationalName()).resourceType(BillingResourceType.COMPUTATIONAL)
+                        
withUserProject(userInstance).dlabId(cr.getComputationalId()).resourceName(cr.getComputationalName()).resourceType(COMPUTATIONAL)
                                 
.status(UserInstanceStatus.of(cr.getStatus())).shape(getComputationalShape(cr)).build(),
                         
withUserProject(userInstance).resourceName(cr.getComputationalName() + ":" + 
VOLUME_PRIMARY).dlabId(String.format(VOLUME_PRIMARY_COMPUTATIONAL_FORMAT, 
cr.getComputationalId(), "m"))
-                                
.resourceType(BillingResourceType.VOLUME).build(),
+                                .resourceType(VOLUME).build(),
                         
withUserProject(userInstance).resourceName(cr.getComputationalName() + ":" + 
VOLUME_SECONDARY).dlabId(String.format(VOLUME_SECONDARY_COMPUTATIONAL_FORMAT, 
cr.getComputationalId(), "m"))
-                                
.resourceType(BillingResourceType.VOLUME).build()
+                                .resourceType(VOLUME).build()
                         ),
                         getSlaveVolumes(userInstance, cr, 
maxSparkInstanceCount)
                 ));
@@ -102,10 +113,10 @@ public class BillingUtils {
         final String primaryVolumeId = String.format(VOLUME_PRIMARY_FORMAT, 
exploratoryId);
         final String secondaryVolumeId = 
String.format(VOLUME_SECONDARY_FORMAT, exploratoryId);
         final Stream<BillingReportLine> exploratoryStream = Stream.of(
-                
withUserProject(userInstance).resourceName(userInstance.getExploratoryName()).dlabId(exploratoryId).resourceType(BillingResourceType.EXPLORATORY)
+                
withUserProject(userInstance).resourceName(userInstance.getExploratoryName()).dlabId(exploratoryId).resourceType(EXPLORATORY)
                         
.status(UserInstanceStatus.of(userInstance.getStatus())).shape(userInstance.getShape()).build(),
-                
withUserProject(userInstance).resourceName(VOLUME_PRIMARY).dlabId(primaryVolumeId).resourceType(BillingResourceType.VOLUME).build(),
-                
withUserProject(userInstance).resourceName(VOLUME_SECONDARY).dlabId(secondaryVolumeId).resourceType(BillingResourceType.VOLUME).build());
+                
withUserProject(userInstance).resourceName(VOLUME_PRIMARY).dlabId(primaryVolumeId).resourceType(VOLUME).build(),
+                
withUserProject(userInstance).resourceName(VOLUME_SECONDARY).dlabId(secondaryVolumeId).resourceType(VOLUME).build());
         return Stream.concat(computationalStream, exploratoryStream);
     }
 
@@ -113,9 +124,9 @@ public class BillingUtils {
         List<BillingReportLine> list = new ArrayList<>();
         for (int i = 1; i <= maxSparkInstanceCount; i++) {
             
list.add(withUserProject(userInstance).resourceName(cr.getComputationalName() + 
":" + VOLUME_PRIMARY).dlabId(String.format(VOLUME_PRIMARY_COMPUTATIONAL_FORMAT, 
cr.getComputationalId(), "s" + i))
-                    .resourceType(BillingResourceType.VOLUME).build());
+                    .resourceType(VOLUME).build());
             
list.add(withUserProject(userInstance).resourceName(cr.getComputationalName() + 
":" + 
VOLUME_PRIMARY).dlabId(String.format(VOLUME_SECONDARY_COMPUTATIONAL_FORMAT, 
cr.getComputationalId(), "s" + i))
-                    .resourceType(BillingResourceType.VOLUME).build());
+                    .resourceType(VOLUME).build());
         }
         return list.stream();
     }


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

Reply via email to