summaryrefslogtreecommitdiffstats
path: root/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/DeploymentStatus.java
diff options
context:
space:
mode:
Diffstat (limited to 'controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/DeploymentStatus.java')
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/DeploymentStatus.java49
1 files changed, 49 insertions, 0 deletions
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/DeploymentStatus.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/DeploymentStatus.java
new file mode 100644
index 00000000000..1582bc144f4
--- /dev/null
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/DeploymentStatus.java
@@ -0,0 +1,49 @@
+package com.yahoo.vespa.hosted.controller.deployment;
+
+import com.yahoo.config.provision.InstanceName;
+import com.yahoo.vespa.hosted.controller.Application;
+import com.yahoo.vespa.hosted.controller.api.integration.deployment.JobId;
+import com.yahoo.vespa.hosted.controller.api.integration.deployment.JobType;
+
+import java.util.Map;
+import java.util.Objects;
+import java.util.stream.Collectors;
+
+/**
+ * Status of the deployment jobs of an {@link Application}.
+ *
+ * @author jonmv
+ */
+public class DeploymentStatus {
+
+ private final Application application;
+ private final Map<JobId, JobStatus> jobs;
+
+ public DeploymentStatus(Application application, Map<JobId, JobStatus> jobs) {
+ this.application = Objects.requireNonNull(application);
+ this.jobs = Map.copyOf(jobs);
+ }
+
+ public Application application() {
+ return application;
+ }
+
+ public Map<JobId, JobStatus> jobs() {
+ return jobs;
+ }
+
+ public boolean hasFailures() {
+ return ! JobList.from(jobs.values())
+ .failing()
+ .not().withStatus(RunStatus.outOfCapacity)
+ .isEmpty();
+ }
+
+ public Map<JobType, JobStatus> instanceJobs(InstanceName instance) {
+ return jobs.entrySet().stream()
+ .filter(entry -> entry.getKey().application().equals(application.id().instance(instance)))
+ .collect(Collectors.toUnmodifiableMap(entry -> entry.getKey().type(),
+ entry -> entry.getValue()));
+ }
+
+}