aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorØyvind Grønnesby <oyving@yahooinc.com>2023-03-14 15:00:30 +0100
committerGitHub <noreply@github.com>2023-03-14 15:00:30 +0100
commit12a906cd6d29c637cbbada5a881a3636a27885e0 (patch)
tree3571555ec55a43fdc078ab8891c796a0fcfbc6e3
parent8aa0114aa20c6fc94d83ebca8a28fbb61790429f (diff)
parent1b32060d35702f70f8b51b2d31b70d750ce40fc8 (diff)
Merge pull request #26434 from vespa-engine/ogronnesby/ignore-minor-micro
Ignore minor/micro versions in snapshots
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/resource/ResourceDatabaseClientMock.java4
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/resource/ResourceSnapshot.java20
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/ResourceMeterMaintainer.java6
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/controller/MeteringResponse.java2
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/ResourceMeterMaintainerTest.java12
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/controller/ControllerApiTest.java2
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/controller/responses/metering.json4
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
}