diff options
author | Øyvind Grønnesby <oyving@yahooinc.com> | 2023-03-14 15:00:30 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-03-14 15:00:30 +0100 |
commit | 12a906cd6d29c637cbbada5a881a3636a27885e0 (patch) | |
tree | 3571555ec55a43fdc078ab8891c796a0fcfbc6e3 | |
parent | 8aa0114aa20c6fc94d83ebca8a28fbb61790429f (diff) | |
parent | 1b32060d35702f70f8b51b2d31b70d750ce40fc8 (diff) |
Merge pull request #26434 from vespa-engine/ogronnesby/ignore-minor-micro
Ignore minor/micro versions in snapshots
7 files changed, 25 insertions, 25 deletions
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/resource/ResourceDatabaseClientMock.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/resource/ResourceDatabaseClientMock.java index c1d210e990d..5c9a5817dff 100644 --- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/resource/ResourceDatabaseClientMock.java +++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/resource/ResourceDatabaseClientMock.java @@ -79,7 +79,7 @@ public class ResourceDatabaseClientMock implements ResourceDatabaseClient { a.getZoneId(), plan, a.resources().architecture(), - a.getVersion().getMajor(), + a.getMajorVersion(), BigDecimal.valueOf(a.resources().vcpu()).multiply(d), BigDecimal.valueOf(a.resources().memoryGb()).multiply(d), BigDecimal.valueOf(a.resources().diskGb()).multiply(d) @@ -114,7 +114,7 @@ public class ResourceDatabaseClientMock implements ResourceDatabaseClient { .filter(snapshot -> snapshot.getTimestamp().isBefore(Instant.ofEpochMilli(end))) .filter(snapshot -> snapshot.getApplicationId().tenant().equals(tenantName)) .collect(Collectors.groupingBy( - usage -> Objects.hash(usage.getApplicationId(), usage.getZoneId(), tenantPlan.id().value(), usage.resources().architecture(), usage.getVersion().getMajor()) + usage -> Objects.hash(usage.getApplicationId(), usage.getZoneId(), tenantPlan.id().value(), usage.resources().architecture(), usage.getMajorVersion()) )) .values().stream() .map(snapshots -> resourceUsageFromSnapshots(tenantPlan, snapshots)) diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/resource/ResourceSnapshot.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/resource/ResourceSnapshot.java index 778e288f316..b3a91767465 100644 --- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/resource/ResourceSnapshot.java +++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/resource/ResourceSnapshot.java @@ -31,18 +31,18 @@ public class ResourceSnapshot { private final NodeResources resources; private final Instant timestamp; private final ZoneId zoneId; - private final Version version; + private final int majorVersion; - public ResourceSnapshot(ApplicationId applicationId, NodeResources resources, Instant timestamp, ZoneId zoneId, Version version) { + public ResourceSnapshot(ApplicationId applicationId, NodeResources resources, Instant timestamp, ZoneId zoneId, int majorVersion) { this.applicationId = applicationId; this.resources = resources; this.timestamp = timestamp; this.zoneId = zoneId; - this.version = version; + this.majorVersion = majorVersion; } public static ResourceSnapshot from(ApplicationId applicationId, int nodes, NodeResources resources, Instant timestamp, ZoneId zoneId) { - return new ResourceSnapshot(applicationId, resources.multipliedBy(nodes), timestamp, zoneId, Version.emptyVersion); + return new ResourceSnapshot(applicationId, resources.multipliedBy(nodes), timestamp, zoneId, 0); } public static ResourceSnapshot from(List<Node> nodes, Instant timestamp, ZoneId zoneId) { @@ -51,8 +51,8 @@ public class ResourceSnapshot { .map(node -> node.owner().get()) .collect(Collectors.toSet()); - Set<Version> versions = nodes.stream() - .map(Node::currentVersion) + Set<Integer> versions = nodes.stream() + .map(n -> n.wantedVersion().getMajor()) .collect(Collectors.toSet()); if (applicationIds.size() != 1) throw new IllegalArgumentException("List of nodes can only represent one application"); @@ -81,8 +81,8 @@ public class ResourceSnapshot { return zoneId; } - public Version getVersion() { - return version; + public int getMajorVersion() { + return majorVersion; } @Override @@ -95,12 +95,12 @@ public class ResourceSnapshot { this.resources.equals(other.resources) && this.timestamp.equals(other.timestamp) && this.zoneId.equals(other.zoneId) && - this.version.equals(other.version); + this.majorVersion == other.majorVersion; } @Override public int hashCode(){ - return Objects.hash(applicationId, resources, timestamp, zoneId, version); + return Objects.hash(applicationId, resources, timestamp, zoneId, majorVersion); } /* This function does pretty much the same thing as NodeResources::add, but it allows adding resources diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/ResourceMeterMaintainer.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/ResourceMeterMaintainer.java index 0976eedee23..3f20c2eac8f 100644 --- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/ResourceMeterMaintainer.java +++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/ResourceMeterMaintainer.java @@ -286,17 +286,17 @@ public class ResourceMeterMaintainer extends ControllerMaintainer { )); } - private Collector<Node, ?, Map<NodeResources.Architecture, Map<Version, ResourceSnapshot>>> groupSnapshotsByArchitectureAndMajorVersion(ZoneId zoneId) { + private Collector<Node, ?, Map<NodeResources.Architecture, Map<Integer, ResourceSnapshot>>> groupSnapshotsByArchitectureAndMajorVersion(ZoneId zoneId) { return Collectors.groupingBy( (Node node) -> node.resources().architecture(), Collectors.collectingAndThen( Collectors.groupingBy( - (Node node) -> node.currentVersion(), + (Node node) -> node.wantedVersion().getMajor(), Collectors.toList()), convertNodeListToResourceSnapshot(zoneId))); } - private Function<Map<Version, List<Node>>, Map<Version, ResourceSnapshot>> convertNodeListToResourceSnapshot(ZoneId zoneId) { + private Function<Map<Integer, List<Node>>, Map<Integer, ResourceSnapshot>> convertNodeListToResourceSnapshot(ZoneId zoneId) { return nodesByMajor -> { return nodesByMajor.entrySet().stream() .collect(Collectors.toMap( diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/controller/MeteringResponse.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/controller/MeteringResponse.java index 28248560a6f..ea7bce00794 100644 --- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/controller/MeteringResponse.java +++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/controller/MeteringResponse.java @@ -33,7 +33,7 @@ public class MeteringResponse extends SlimeJsonResponse { object.setDouble("memory", snapshot.resources().memoryGb()); object.setDouble("disk", snapshot.resources().diskGb()); object.setString("architecture", snapshot.resources().architecture().name()); - object.setString("version", snapshot.getVersion().toFullString()); + object.setLong("version", snapshot.getMajorVersion()); object.setDouble("gpuMemoryGb", snapshot.resources().gpuResources().memoryGb()); object.setLong("gpuCount", snapshot.resources().gpuResources().count()); }); diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/ResourceMeterMaintainerTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/ResourceMeterMaintainerTest.java index 3034c93e593..8196aa48197 100644 --- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/ResourceMeterMaintainerTest.java +++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/ResourceMeterMaintainerTest.java @@ -61,9 +61,9 @@ public class ResourceMeterMaintainerTest { .collect(Collectors.toMap(Map.Entry::getKey, entry -> entry.getValue().cost().getAsDouble()))); List<ResourceSnapshot> resourceSnapshots = List.of( - new ResourceSnapshot(app1, resources(12, 34, 56), Instant.EPOCH, z1, Version.emptyVersion), - new ResourceSnapshot(app1, resources(23, 45, 67), Instant.EPOCH, z2, Version.emptyVersion), - new ResourceSnapshot(app2, resources(34, 56, 78), Instant.EPOCH, z1, Version.emptyVersion)); + new ResourceSnapshot(app1, resources(12, 34, 56), Instant.EPOCH, z1, 0), + new ResourceSnapshot(app1, resources(23, 45, 67), Instant.EPOCH, z2, 0), + new ResourceSnapshot(app2, resources(34, 56, 78), Instant.EPOCH, z1, 0)); maintainer.updateDeploymentCost(resourceSnapshots); assertCost.accept(app1, Map.of(z1, 1.72, z2, 3.05)); @@ -71,9 +71,9 @@ public class ResourceMeterMaintainerTest { // Remove a region from app1 and add region to app2 resourceSnapshots = List.of( - new ResourceSnapshot(app1, resources(23, 45, 67), Instant.EPOCH, z2, Version.emptyVersion), - new ResourceSnapshot(app2, resources(34, 56, 78), Instant.EPOCH, z1, Version.emptyVersion), - new ResourceSnapshot(app2, resources(45, 67, 89), Instant.EPOCH, z2, Version.emptyVersion)); + new ResourceSnapshot(app1, resources(23, 45, 67), Instant.EPOCH, z2, 0), + new ResourceSnapshot(app2, resources(34, 56, 78), Instant.EPOCH, z1, 0), + new ResourceSnapshot(app2, resources(45, 67, 89), Instant.EPOCH, z2, 0)); maintainer.updateDeploymentCost(resourceSnapshots); assertCost.accept(app1, Map.of(z2, 3.05)); diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/controller/ControllerApiTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/controller/ControllerApiTest.java index ac7287b7e27..966c7f02cee 100644 --- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/controller/ControllerApiTest.java +++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/controller/ControllerApiTest.java @@ -162,7 +162,7 @@ public class ControllerApiTest extends ControllerContainerTest { new NodeResources(12, 48, 1200, 0, NodeResources.DiskSpeed.any, NodeResources.StorageType.any, NodeResources.Architecture.arm64), new NodeResources(24, 96, 2400, 0, NodeResources.DiskSpeed.any, NodeResources.StorageType.any, NodeResources.Architecture.x86_64)); - var snapshots = resources.stream().map(x -> new ResourceSnapshot(applicationId, x, timestamp, zoneId, Version.emptyVersion)).toList(); + var snapshots = resources.stream().map(x -> new ResourceSnapshot(applicationId, x, timestamp, zoneId, 0)).toList(); tester.controller().serviceRegistry().resourceDatabase().writeResourceSnapshots(snapshots); tester.assertResponse( diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/controller/responses/metering.json b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/controller/responses/metering.json index 328329e2b60..475bf1d449a 100644 --- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/controller/responses/metering.json +++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/controller/responses/metering.json @@ -7,7 +7,7 @@ "memory": 48.0, "disk": 1200.0, "architecture": "arm64", - "version": "0.0.0", + "version": 0, "gpuMemoryGb": 0.0, "gpuCount": 0 }, @@ -19,7 +19,7 @@ "memory": 96.0, "disk": 2400.0, "architecture": "x86_64", - "version": "0.0.0", + "version": 0, "gpuMemoryGb": 0.0, "gpuCount": 0 } |