diff options
author | Ola Aunrønning <olaa@verizonmedia.com> | 2020-02-11 18:08:31 +0100 |
---|---|---|
committer | Ola Aunrønning <olaa@verizonmedia.com> | 2020-02-11 18:17:09 +0100 |
commit | 7ee5738452cbae5413bfc6fb904290a0474dd0ae (patch) | |
tree | 006f4dfa65d505e4af7d9ddd6a05a70988a9d2f5 /controller-api | |
parent | 0200e6c6c57c69f4a877d3f5eccb0b9eeb79f293 (diff) |
Get raw snapshot history for tenant
Diffstat (limited to 'controller-api')
-rw-r--r-- | controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/resource/MeteringClient.java | 6 | ||||
-rw-r--r-- | controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/resource/MeteringData.java (renamed from controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/resource/MeteringInfo.java) | 4 | ||||
-rw-r--r-- | controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/stubs/MockMeteringClient.java | 24 |
3 files changed, 24 insertions, 10 deletions
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/resource/MeteringClient.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/resource/MeteringClient.java index 3e06b24c6be..1047e1a02a4 100644 --- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/resource/MeteringClient.java +++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/resource/MeteringClient.java @@ -4,7 +4,9 @@ package com.yahoo.vespa.hosted.controller.api.integration.resource; import com.yahoo.config.provision.ApplicationName; import com.yahoo.config.provision.TenantName; +import java.time.YearMonth; import java.util.Collection; +import java.util.List; /** * Consumes and retrieves snapshots of resources allocated per application. @@ -15,6 +17,8 @@ public interface MeteringClient { void consume(Collection<ResourceSnapshot> resources); - MeteringInfo getResourceSnapshots(TenantName tenantName, ApplicationName applicationName); + MeteringData getMeteringData(TenantName tenantName, ApplicationName applicationName); + + List<ResourceSnapshot> getSnapshotHistoryForTenant(TenantName tenantName, YearMonth yearMonth); } diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/resource/MeteringInfo.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/resource/MeteringData.java index d6cb8f7fe76..e9a6c81e636 100644 --- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/resource/MeteringInfo.java +++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/resource/MeteringData.java @@ -9,14 +9,14 @@ import java.util.Map; /** * @author olaa */ -public class MeteringInfo { +public class MeteringData { private final ResourceAllocation thisMonth; private final ResourceAllocation lastMonth; private final ResourceAllocation currentSnapshot; Map<ApplicationId, List<ResourceSnapshot>> snapshotHistory; - public MeteringInfo(ResourceAllocation thisMonth, ResourceAllocation lastMonth, ResourceAllocation currentSnapshot, Map<ApplicationId, List<ResourceSnapshot>> snapshotHistory) { + public MeteringData(ResourceAllocation thisMonth, ResourceAllocation lastMonth, ResourceAllocation currentSnapshot, Map<ApplicationId, List<ResourceSnapshot>> snapshotHistory) { this.thisMonth = thisMonth; this.lastMonth = lastMonth; this.currentSnapshot = currentSnapshot; 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 45ead36f622..80caef1709d 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 @@ -3,16 +3,19 @@ package com.yahoo.vespa.hosted.controller.api.integration.stubs; import com.yahoo.config.provision.ApplicationName; import com.yahoo.config.provision.TenantName; -import com.yahoo.vespa.hosted.controller.api.integration.resource.MeteringInfo; +import com.yahoo.vespa.hosted.controller.api.integration.resource.MeteringData; import com.yahoo.vespa.hosted.controller.api.integration.resource.ResourceAllocation; import com.yahoo.vespa.hosted.controller.api.integration.resource.ResourceSnapshot; import com.yahoo.vespa.hosted.controller.api.integration.resource.MeteringClient; +import java.time.YearMonth; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.List; +import java.util.Map; import java.util.Optional; +import java.util.stream.Collectors; /** * @author olaa @@ -20,7 +23,7 @@ import java.util.Optional; public class MockMeteringClient implements MeteringClient { private Collection<ResourceSnapshot> resources = new ArrayList<>(); - private Optional<MeteringInfo> meteringInfo; + private Optional<MeteringData> meteringData; @Override public void consume(Collection<ResourceSnapshot> resources){ @@ -28,18 +31,25 @@ public class MockMeteringClient implements MeteringClient { } @Override - public MeteringInfo getResourceSnapshots(TenantName tenantName, ApplicationName applicationName) { - return meteringInfo.orElseGet(() -> { + public MeteringData getMeteringData(TenantName tenantName, ApplicationName applicationName) { + return meteringData.orElseGet(() -> { ResourceAllocation emptyAllocation = new ResourceAllocation(0, 0, 0); - return new MeteringInfo(emptyAllocation, emptyAllocation, emptyAllocation, Collections.emptyMap()); + return new MeteringData(emptyAllocation, emptyAllocation, emptyAllocation, Collections.emptyMap()); }); } + @Override + public List<ResourceSnapshot> getSnapshotHistoryForTenant(TenantName tenantName, YearMonth yearMonth) { + return new ArrayList<>(resources); + } + public Collection<ResourceSnapshot> consumedResources() { return this.resources; } - public void setMeteringInfo(MeteringInfo meteringInfo) { - this.meteringInfo = Optional.of(meteringInfo); + 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; } } |