summaryrefslogtreecommitdiffstats
path: root/controller-server/src/main/java/com
diff options
context:
space:
mode:
Diffstat (limited to 'controller-server/src/main/java/com')
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/Application.java8
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/application/DeploymentJobs.java25
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/ApplicationSerializer.java7
3 files changed, 26 insertions, 14 deletions
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/Application.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/Application.java
index 5cc4c441c3b..f68ce3ebfa5 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/Application.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/Application.java
@@ -16,6 +16,7 @@ import com.yahoo.vespa.hosted.controller.application.DeploymentJobs.JobReport;
import com.yahoo.vespa.hosted.controller.application.DeploymentJobs.JobType;
import java.time.Instant;
+import java.util.Collections;
import java.util.Comparator;
import java.util.LinkedHashMap;
import java.util.List;
@@ -43,8 +44,9 @@ public class Application {
/** Creates an empty application */
public Application(ApplicationId id) {
- this(id, DeploymentSpec.empty, ValidationOverrides.empty, ImmutableMap.of(), new DeploymentJobs(0L),
- Optional.empty(), false); // TODO: Get rid of the 0
+ this(id, DeploymentSpec.empty, ValidationOverrides.empty, ImmutableMap.of(),
+ new DeploymentJobs(Optional.empty(), Collections.emptyList(), Optional.empty()),
+ Optional.empty(), false);
}
/** Used from persistence layer: Do not use */
@@ -52,7 +54,7 @@ public class Application {
List<Deployment> deployments,
DeploymentJobs deploymentJobs, Optional<Change> deploying, boolean outstandingChange) {
this(id, deploymentSpec, validationOverrides,
- deployments.stream().collect(Collectors.toMap(d -> d.zone(), d -> d)),
+ deployments.stream().collect(Collectors.toMap(Deployment::zone, d -> d)),
deploymentJobs, deploying, outstandingChange);
}
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/application/DeploymentJobs.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/application/DeploymentJobs.java
index af8617cbf05..26bef06adcf 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/application/DeploymentJobs.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/application/DeploymentJobs.java
@@ -32,24 +32,20 @@ public class DeploymentJobs {
private final ImmutableMap<JobType, JobStatus> status;
private final Optional<String> jiraIssueId;
- /** Creates an empty set of deployment jobs */
- public DeploymentJobs(long projectId) {
- this(Optional.of(projectId), ImmutableMap.of(), Optional.empty());
- }
-
- public DeploymentJobs(Optional<Long> projectId, Collection<JobStatus> jobStatusEntries, Optional<String> jiraIssueId) {
+ public DeploymentJobs(Optional<Long> projectId, Collection<JobStatus> jobStatusEntries,
+ Optional<String> jiraIssueId) {
this(projectId, asMap(jobStatusEntries), jiraIssueId);
}
-
+
private DeploymentJobs(Optional<Long> projectId, Map<JobType, JobStatus> status, Optional<String> jiraIssueId) {
- Objects.requireNonNull(projectId, "projectId cannot be null");
+ requireId(projectId, "projectId cannot be null or <= 0");
Objects.requireNonNull(status, "status cannot be null");
Objects.requireNonNull(jiraIssueId, "jiraIssueId cannot be null");
this.projectId = projectId;
this.status = ImmutableMap.copyOf(status);
this.jiraIssueId = jiraIssueId;
}
-
+
private static Map<JobType, JobStatus> asMap(Collection<JobStatus> jobStatusEntries) {
ImmutableMap.Builder<JobType, JobStatus> b = new ImmutableMap.Builder<>();
for (JobStatus jobStatusEntry : jobStatusEntries)
@@ -306,4 +302,15 @@ public class DeploymentJobs {
}
}
+ private static Optional<Long> requireId(Optional<Long> id, String message) {
+ Objects.requireNonNull(id, message);
+ if (!id.isPresent()) {
+ return id;
+ }
+ if (id.get() <= 0) {
+ throw new IllegalArgumentException(message);
+ }
+ return id;
+ }
+
}
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/ApplicationSerializer.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/ApplicationSerializer.java
index 14fce0987b7..81b3cb635ef 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/ApplicationSerializer.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/ApplicationSerializer.java
@@ -121,7 +121,9 @@ public class ApplicationSerializer {
}
private void toSlime(DeploymentJobs deploymentJobs, Cursor cursor) {
- deploymentJobs.projectId().ifPresent(projectId -> cursor.setLong(projectIdField, projectId));
+ deploymentJobs.projectId()
+ .filter(id -> id > 0) // TODO: Discards invalid data. Remove filter after October 2017
+ .ifPresent(projectId -> cursor.setLong(projectIdField, projectId));
jobStatusToSlime(deploymentJobs.jobStatus().values(), cursor.setArray(jobStatusField));
deploymentJobs.jiraIssueId().ifPresent(jiraIssueId -> cursor.setString(jiraIssueIdField, jiraIssueId));
}
@@ -213,7 +215,8 @@ public class ApplicationSerializer {
}
private DeploymentJobs deploymentJobsFromSlime(Inspector object) {
- Optional<Long> projectId = optionalLong(object.field(projectIdField));
+ Optional<Long> projectId = optionalLong(object.field(projectIdField))
+ .filter(id -> id > 0); // TODO: Discards invalid data. Remove filter after October 2017
List<JobStatus> jobStatusList = jobStatusListFromSlime(object.field(jobStatusField));
Optional<String> jiraIssueKey = optionalString(object.field(jiraIssueIdField));