diff options
2 files changed, 80 insertions, 10 deletions
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/MetricsService.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/MetricsService.java index 2068bc7e92d..5547f94c8cf 100644 --- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/MetricsService.java +++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/MetricsService.java @@ -4,25 +4,29 @@ package com.yahoo.vespa.hosted.controller.api.integration; import com.yahoo.config.provision.ApplicationId; import com.yahoo.config.provision.Zone; +import java.util.List; + /** * A service which returns metric values on request - * + * * @author bratseth */ public interface MetricsService { - + ApplicationMetrics getApplicationMetrics(ApplicationId application); DeploymentMetrics getDeploymentMetrics(ApplicationId application, Zone zone); + List<ClusterCostMetrics> getClusterCostMetrics(ApplicationId application, Zone zone); + class DeploymentMetrics { - + private final double queriesPerSecond; private final double writesPerSecond; private final long documentCount; private final double queryLatencyMillis; private final double writeLatencyMillis; - + public DeploymentMetrics(double queriesPerSecond, double writesPerSecond, long documentCount, double queryLatencyMillis, double writeLatencyMillis) { @@ -32,9 +36,9 @@ public interface MetricsService { this.queryLatencyMillis = queryLatencyMillis; this.writeLatencyMillis = writeLatencyMillis; } - + public double queriesPerSecond() { return queriesPerSecond; } - + public double writesPerSecond() { return writesPerSecond; } public long documentCount() { return documentCount; } @@ -44,17 +48,17 @@ public interface MetricsService { public double writeLatencyMillis() { return writeLatencyMillis; } } - + class ApplicationMetrics { private final double queryServiceQuality; private final double writeServiceQuality; - + public ApplicationMetrics(double queryServiceQuality, double writeServiceQuality) { this.queryServiceQuality = queryServiceQuality; this.writeServiceQuality = writeServiceQuality; } - + /** Returns the quality of service for queries as a number between 1 (perfect) and 0 (none) */ public double queryServiceQuality() { return queryServiceQuality; } @@ -62,5 +66,61 @@ public interface MetricsService { public double writeServiceQuality() { return writeServiceQuality; } } - + + class CostMetrics { + + private final double cpuUtil; + private final double memUtil; + private final double diskUtil; + + public CostMetrics(double cpuUtil, double memUtil, double diskUtil) { + this.cpuUtil = cpuUtil; + this.memUtil = memUtil; + this.diskUtil = diskUtil; + } + + public double cpuUtil() { return cpuUtil; } + + public double memUtil() { return memUtil; } + + public double diskUtil() { return diskUtil; } + + public static class Builder { + private double cpuUtil; + private double memUtil; + private double diskUtil; + + public void setCpuUtil(double cpuUtil) { + this.cpuUtil = cpuUtil; + } + + public void setMemUtil(double memUtil) { + this.memUtil = memUtil; + } + + public void setDiskUtil(double diskUtil) { + this.diskUtil = diskUtil; + } + + public CostMetrics build() { return new CostMetrics(cpuUtil, memUtil, diskUtil); } + } + + } + + class ClusterCostMetrics { + + private final String clusterId; + private final CostMetrics costMetrics; + + public ClusterCostMetrics(String clusterId, CostMetrics costMetrics) { + this.clusterId = clusterId; + this.costMetrics = costMetrics; + } + + public String clusterId() { return clusterId; } + + public CostMetrics costMetrics() { return costMetrics; } + + } + } diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/integration/MockMetricsService.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/integration/MockMetricsService.java index 360fd8616d3..79b4c5f6d6a 100644 --- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/integration/MockMetricsService.java +++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/integration/MockMetricsService.java @@ -4,6 +4,9 @@ package com.yahoo.vespa.hosted.controller.integration; import com.yahoo.config.provision.ApplicationId; import com.yahoo.config.provision.Zone; +import java.util.Collections; +import java.util.List; + /** * @author bratseth */ @@ -19,4 +22,11 @@ public class MockMetricsService implements com.yahoo.vespa.hosted.controller.api return new DeploymentMetrics(1, 2, 3, 4, 5); } + @Override + public List<ClusterCostMetrics> getClusterCostMetrics(ApplicationId application, Zone zone) { + CostMetrics costMetrics = new CostMetrics(55.54, 69.90, 34.59); + ClusterCostMetrics clusterCostMetrics = new ClusterCostMetrics("default", costMetrics); + return Collections.singletonList(clusterCostMetrics); + } + } |