summaryrefslogtreecommitdiffstats
path: root/controller-api
diff options
context:
space:
mode:
authorØyvind Grønnesby <oyving@verizonmedia.com>2020-10-27 13:48:10 +0100
committerGitHub <noreply@github.com>2020-10-27 13:48:10 +0100
commit705e47f793e9a6cc08d22cafec7974d0b0daf714 (patch)
tree4bfc2bbb1503f118bac51e2b02f05452e668dd19 /controller-api
parenteaa6d7b9065c8c8b76d16f324f7bdee26434152c (diff)
parentc74b2208ab93202fa72e50528a1190b22f43125b (diff)
Merge pull request #14715 from vespa-engine/olaa/include-resource-usage-in-line-items
Include resource usage in line items
Diffstat (limited to 'controller-api')
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/billing/Invoice.java72
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/resource/CostInfo.java18
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/stubs/MockMeteringClient.java1
3 files changed, 65 insertions, 26 deletions
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/billing/Invoice.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/billing/Invoice.java
index 31388d24e2e..44f8f6e786d 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/billing/Invoice.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/billing/Invoice.java
@@ -6,7 +6,6 @@ import com.yahoo.config.provision.zone.ZoneId;
import java.math.BigDecimal;
import java.time.ZonedDateTime;
-import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.Objects;
@@ -125,30 +124,43 @@ public class Invoice {
private final String plan;
private final String agent;
private final ZonedDateTime addedAt;
- private final Optional<ZonedDateTime> startedAt;
- private final Optional<ZonedDateTime> endedAt;
- private final Optional<ApplicationId> applicationId;
- private final Optional<ZoneId> zoneId;
+ private ZonedDateTime startedAt;
+ private ZonedDateTime endedAt;
+ private ApplicationId applicationId;
+ private ZoneId zoneId;
+ private BigDecimal cpuHours;
+ private BigDecimal memoryHours;
+ private BigDecimal diskHours;
+ private BigDecimal cpuCost;
+ private BigDecimal memoryCost;
+ private BigDecimal diskCost;
- public LineItem(String id, String description, BigDecimal amount, String plan, String agent, ZonedDateTime addedAt, ZonedDateTime startedAt, ZonedDateTime endedAt, ApplicationId applicationId, ZoneId zoneId) {
+ public LineItem(String id, String description, BigDecimal amount, String plan, String agent, ZonedDateTime addedAt) {
this.id = id;
this.description = description;
this.amount = amount;
this.plan = plan;
this.agent = agent;
this.addedAt = addedAt;
- this.startedAt = Optional.ofNullable(startedAt);
- this.endedAt = Optional.ofNullable(endedAt);
+ }
+
+ public LineItem(String id, String description, BigDecimal amount, String plan, String agent, ZonedDateTime addedAt, ZonedDateTime startedAt, ZonedDateTime endedAt, ApplicationId applicationId, ZoneId zoneId,
+ BigDecimal cpuHours, BigDecimal memoryHours, BigDecimal diskHours, BigDecimal cpuCost, BigDecimal memoryCost, BigDecimal diskCost) {
+ this(id, description, amount, plan, agent, addedAt);
+ this.startedAt = startedAt;
+ this.endedAt = endedAt;
if (applicationId == null && zoneId != null)
throw new IllegalArgumentException("Must supply applicationId if zoneId is supplied");
- this.applicationId = Optional.ofNullable(applicationId);
- this.zoneId = Optional.ofNullable(zoneId);
- }
-
- public LineItem(String id, String description, BigDecimal amount, String plan, String agent, ZonedDateTime addedAt) {
- this(id, description, amount, plan, agent, addedAt, null, null, null, null);
+ this.applicationId = applicationId;
+ this.zoneId = zoneId;
+ this.cpuHours = cpuHours;
+ this.memoryHours = memoryHours;
+ this.diskHours = diskHours;
+ this.cpuCost = cpuCost;
+ this.memoryCost = memoryCost;
+ this.diskCost = diskCost;
}
/** The opaque ID of this */
@@ -183,22 +195,46 @@ public class Invoice {
/** What time period is this line item for - time start */
public Optional<ZonedDateTime> startedAt() {
- return startedAt;
+ return Optional.ofNullable(startedAt);
}
/** What time period is this line item for - time end */
public Optional<ZonedDateTime> endedAt() {
- return endedAt;
+ return Optional.ofNullable(endedAt);
}
/** Optionally - what application is this line item about */
public Optional<ApplicationId> applicationId() {
- return applicationId;
+ return Optional.ofNullable(applicationId);
}
/** Optionally - what zone deployment is this line item about */
public Optional<ZoneId> zoneId() {
- return zoneId;
+ return Optional.ofNullable(zoneId);
+ }
+
+ public Optional<BigDecimal> getCpuHours() {
+ return Optional.ofNullable(cpuHours);
+ }
+
+ public Optional<BigDecimal> getMemoryHours() {
+ return Optional.ofNullable(memoryHours);
+ }
+
+ public Optional<BigDecimal> getDiskHours() {
+ return Optional.ofNullable(diskHours);
+ }
+
+ public Optional<BigDecimal> getCpuCost() {
+ return Optional.ofNullable(cpuCost);
+ }
+
+ public Optional<BigDecimal> getMemoryCost() {
+ return Optional.ofNullable(memoryCost);
+ }
+
+ public Optional<BigDecimal> getDiskCost() {
+ return Optional.ofNullable(diskCost);
}
@Override
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/resource/CostInfo.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/resource/CostInfo.java
index 50c257acd23..56369b52809 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/resource/CostInfo.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/resource/CostInfo.java
@@ -16,14 +16,14 @@ public class CostInfo {
private final BigDecimal cpuHours;
private final BigDecimal memoryHours;
private final BigDecimal diskHours;
- private final int cpuCost;
- private final int memoryCost;
- private final int diskCost;
+ private final BigDecimal cpuCost;
+ private final BigDecimal memoryCost;
+ private final BigDecimal diskCost;
public CostInfo(ApplicationId applicationId, ZoneId zoneId,
BigDecimal cpuHours, BigDecimal memoryHours, BigDecimal diskHours,
- int cpuCost, int memoryCost, int diskCost) {
+ BigDecimal cpuCost, BigDecimal memoryCost, BigDecimal diskCost) {
this.applicationId = applicationId;
this.zoneId = zoneId;
this.cpuHours = cpuHours;
@@ -54,16 +54,20 @@ public class CostInfo {
return diskHours;
}
- public int getCpuCost() {
+ public BigDecimal getCpuCost() {
return cpuCost;
}
- public int getMemoryCost() {
+ public BigDecimal getMemoryCost() {
return memoryCost;
}
- public int getDiskCost() {
+ public BigDecimal getDiskCost() {
return diskCost;
}
+ public BigDecimal getTotalCost() {
+ return cpuCost.add(memoryCost).add(diskCost);
+ }
+
}
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/stubs/MockMeteringClient.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/stubs/MockMeteringClient.java
index 80caef1709d..ec3f564e930 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/stubs/MockMeteringClient.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/stubs/MockMeteringClient.java
@@ -50,6 +50,5 @@ public class MockMeteringClient implements MeteringClient {
public void setMeteringData(MeteringData meteringData) {
this.meteringData = Optional.of(meteringData);
this.resources = meteringData.getSnapshotHistory().entrySet().stream().map(Map.Entry::getValue).flatMap(List::stream).collect(Collectors.toList());
- boolean a = false;
}
}