// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.vespa.hosted.controller.api.integration.organization; import com.yahoo.config.provision.ApplicationId; import com.yahoo.config.provision.zone.ZoneId; import com.yahoo.vespa.hosted.controller.api.identifiers.DeploymentId; import java.time.Instant; import java.util.Map; import java.util.Objects; import java.util.Optional; /** * A summary of activity in an application. * * @author mpolden */ public class ApplicationSummary { private final ApplicationId application; private final Optional lastQueried; private final Optional lastWritten; private final Optional lastBuilt; private final Map metrics; public ApplicationSummary(ApplicationId application, Optional lastQueried, Optional lastWritten, Optional lastBuilt, Map metrics) { this.application = Objects.requireNonNull(application); this.lastQueried = Objects.requireNonNull(lastQueried); this.lastWritten = Objects.requireNonNull(lastWritten); this.lastBuilt = Objects.requireNonNull(lastBuilt); this.metrics = Map.copyOf(Objects.requireNonNull(metrics)); } public ApplicationId application() { return application; } public Optional lastQueried() { return lastQueried; } public Optional lastWritten() { return lastWritten; } public Optional lastBuilt() { return lastBuilt; } public Map metrics() { return metrics; } public static class Metric { private final double documentCount; private final double queriesPerSecond; private final double writesPerSecond; public Metric(double documentCount, double queriesPerSecond, double writesPerSecond) { this.documentCount = documentCount; this.queriesPerSecond = queriesPerSecond; this.writesPerSecond = writesPerSecond; } public double documentCount() { return documentCount; } public double queriesPerSecond() { return queriesPerSecond; } public double writesPerSecond() { return writesPerSecond; } } }