diff options
Diffstat (limited to 'controller-api')
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; } } |