aboutsummaryrefslogtreecommitdiffstats
path: root/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/Cluster.java
diff options
context:
space:
mode:
authorJon Bratseth <bratseth@gmail.com>2023-01-02 16:55:03 +0100
committerJon Bratseth <bratseth@gmail.com>2023-01-02 16:55:03 +0100
commit20a6b5041b179a382a90ca37382a0b6ba3f963f7 (patch)
tree08997145ac9497279caacf295b0b09261cdce1de /controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/Cluster.java
parente5d908c70f1063b05c965e989af1da8c4cb393b1 (diff)
Output load in target/suggested block
Diffstat (limited to 'controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/Cluster.java')
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/Cluster.java149
1 files changed, 88 insertions, 61 deletions
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/Cluster.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/Cluster.java
index d2b1f6a0803..b7a71cc7b91 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/Cluster.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/Cluster.java
@@ -20,12 +20,9 @@ public class Cluster {
private final ClusterResources min;
private final ClusterResources max;
private final ClusterResources current;
- private final Optional<ClusterResources> target;
- private final Optional<ClusterResources> suggested;
- private final Utilization utilization;
+ private final Autoscaling target;
+ private final Autoscaling suggested;
private final List<ScalingEvent> scalingEvents;
- private final String autoscalingStatusCode;
- private final String autoscalingStatus;
private final Duration scalingDuration;
public Cluster(ClusterSpec.Id id,
@@ -33,12 +30,9 @@ public class Cluster {
ClusterResources min,
ClusterResources max,
ClusterResources current,
- Optional<ClusterResources> target,
- Optional<ClusterResources> suggested,
- Utilization utilization,
+ Autoscaling target,
+ Autoscaling suggested,
List<ScalingEvent> scalingEvents,
- String autoscalingStatusCode,
- String autoscalingStatus,
Duration scalingDuration) {
this.id = id;
this.type = type;
@@ -47,24 +41,26 @@ public class Cluster {
this.current = current;
this.target = target;
this.suggested = suggested;
- this.utilization = utilization;
this.scalingEvents = scalingEvents;
- this.autoscalingStatusCode = autoscalingStatusCode;
- this.autoscalingStatus = autoscalingStatus;
this.scalingDuration = scalingDuration;
}
public ClusterSpec.Id id() { return id; }
+
public ClusterSpec.Type type() { return type; }
+
public ClusterResources min() { return min; }
+
public ClusterResources max() { return max; }
+
public ClusterResources current() { return current; }
- public Optional<ClusterResources> target() { return target; }
- public Optional<ClusterResources> suggested() { return suggested; }
- public Utilization utilization() { return utilization; }
+
+ public Autoscaling target() { return target; }
+
+ public Autoscaling suggested() { return suggested; }
+
public List<ScalingEvent> scalingEvents() { return scalingEvents; }
- public String autoscalingStatusCode() { return autoscalingStatusCode; }
- public String autoscalingStatus() { return autoscalingStatus; }
+
public Duration scalingDuration() { return scalingDuration; }
@Override
@@ -72,40 +68,6 @@ public class Cluster {
return "cluster '" + id + "'";
}
- public static class Utilization {
-
- private final double idealCpu, peakCpu;
- private final double idealMemory, peakMemory;
- private final double idealDisk, peakDisk;
-
- public Utilization(double idealCpu, double peakCpu,
- double idealMemory, double peakMemory,
- double idealDisk, double peakDisk) {
- this.idealCpu = idealCpu;
- this.peakCpu = peakCpu;
-
- this.idealMemory = idealMemory;
- this.peakMemory = peakMemory;
-
- this.idealDisk = idealDisk;
- this.peakDisk = peakDisk;
- }
-
- public double idealCpu() { return idealCpu; }
- public double peakCpu() { return peakCpu; }
-
- public double idealMemory() { return idealMemory; }
- public double peakMemory() { return peakMemory; }
-
- public double idealDisk() { return idealDisk; }
- public double peakDisk() { return peakDisk; }
-
- public static Utilization empty() { return new Utilization(0, 0,
- 0, 0,
- 0, 0); }
-
- }
-
public static class ScalingEvent {
private final ClusterResources from, to;
@@ -119,10 +81,13 @@ public class Cluster {
this.completion = completion;
}
- public ClusterResources from() { return from; }
- public ClusterResources to() { return to; }
- public Instant at() { return at; }
- public Optional<Instant> completion() { return completion; }
+ public ClusterResources from() {return from;}
+
+ public ClusterResources to() {return to;}
+
+ public Instant at() {return at;}
+
+ public Optional<Instant> completion() {return completion;}
@Override
public boolean equals(Object o) {
@@ -140,12 +105,74 @@ public class Cluster {
@Override
public String toString() {
return "ScalingEvent{" +
- "from=" + from +
- ", to=" + to +
- ", at=" + at +
- ", completion=" + completion +
- '}';
+ "from=" + from +
+ ", to=" + to +
+ ", at=" + at +
+ ", completion=" + completion +
+ '}';
}
}
+ public static class Autoscaling {
+
+ private final String status;
+ private final String description;
+ private final Optional<ClusterResources> resources;
+ private final Instant at;
+ private final Load peak;
+ private final Load ideal;
+
+ public Autoscaling(String status, String description, Optional<ClusterResources> resources, Instant at,
+ Load peak, Load ideal) {
+ this.status = status;
+ this.description = description;
+ this.resources = resources;
+ this.at = at;
+ this.peak = peak;
+ this.ideal = ideal;
+ }
+
+ public String status() {return status;}
+ public String description() {return description;}
+ public Optional<ClusterResources> resources() {
+ return resources;
+ }
+ public Instant at() {return at;}
+ public Load peak() {return peak;}
+ public Load ideal() {return ideal;}
+
+ @Override
+ public boolean equals(Object o) {
+ if (!(o instanceof Autoscaling other)) return false;
+ if (!this.status.equals(other.status)) return false;
+ if (!this.description.equals(other.description)) return false;
+ if (!this.resources.equals(other.resources)) return false;
+ if (!this.at.equals(other.at)) return false;
+ if (!this.peak.equals(other.peak)) return false;
+ if (!this.ideal.equals(other.ideal)) return false;
+ return true;
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(status, description, at, peak, ideal);
+ }
+
+ @Override
+ public String toString() {
+ return (resources.isPresent() ? "Autoscaling to " + resources : "Don't autoscale") +
+ (description.isEmpty() ? "" : ": " + description);
+ }
+
+ public static Autoscaling empty() {
+ return new Autoscaling("unavailable",
+ "",
+ Optional.empty(),
+ Instant.EPOCH,
+ Load.zero(),
+ Load.zero());
+ }
+
+ }
+
}