diff options
Diffstat (limited to 'config-provisioning/src/main/java/com/yahoo/config/provision/ClusterSpec.java')
-rw-r--r-- | config-provisioning/src/main/java/com/yahoo/config/provision/ClusterSpec.java | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/config-provisioning/src/main/java/com/yahoo/config/provision/ClusterSpec.java b/config-provisioning/src/main/java/com/yahoo/config/provision/ClusterSpec.java index 3f7502bd3f4..45a276a83b2 100644 --- a/config-provisioning/src/main/java/com/yahoo/config/provision/ClusterSpec.java +++ b/config-provisioning/src/main/java/com/yahoo/config/provision/ClusterSpec.java @@ -100,6 +100,63 @@ public final class ClusterSpec { return new ClusterSpec(type, id, Optional.of(groupId), vespaVersion, exclusive, combinedId, dockerImageRepo); } + public static Builder builder(Type type, Id id) { + return new Builder(type, id); + } + + public static class Builder { + + private final Type type; + private final Id id; + + private Optional<Group> groupId = Optional.empty(); + private Optional<String> dockerImageRepo = Optional.empty(); + private Version vespaVersion; + private boolean exclusive = false; + private Optional<Id> combinedId = Optional.empty(); + + + Builder(Type type, Id id) { + this.type = type; + this.id = id; + } + + public ClusterSpec build() { + return new ClusterSpec(type, id, groupId, vespaVersion, exclusive, combinedId, dockerImageRepo); + } + + public Builder group(Group groupId) { + this.groupId = Optional.ofNullable(groupId); + return this; + } + + public Builder vespaVersion(Version vespaVersion) { + this.vespaVersion = vespaVersion; + return this; + } + + public Builder vespaVersion(String vespaVersion) { + this.vespaVersion = Version.fromString(vespaVersion); + return this; + } + + public Builder exclusive(boolean exclusive) { + this.exclusive = exclusive; + return this; + } + + public Builder combinedId(Optional<Id> combinedId) { + this.combinedId = combinedId; + return this; + } + + public Builder dockerImageRepo(Optional<String> dockerImageRepo) { + this.dockerImageRepo = dockerImageRepo; + return this; + } + + } + @Override public String toString() { return type + " " + id + " " + groupId.map(group -> group + " ").orElse("") + vespaVersion + (dockerImageRepo.map(repo -> " " + repo).orElse("")); |