summaryrefslogtreecommitdiffstats
path: root/config-provisioning/src/main/java/com/yahoo/config/provision/ClusterSpec.java
diff options
context:
space:
mode:
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.java19
1 files changed, 15 insertions, 4 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 45a276a83b2..70d0a7a1929 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,14 +100,21 @@ 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);
+ /** Creates a ClusterSpec when requesting a cluster */
+ public static Builder request(Type type, Id id) {
+ return new Builder(type, id, false);
+ }
+
+ /** Creates a ClusterSpec for an existing cluster, group id and vespa version needs to be set */
+ public static Builder specification(Type type, Id id) {
+ return new Builder(type, id, true);
}
public static class Builder {
private final Type type;
private final Id id;
+ private final boolean specification;
private Optional<Group> groupId = Optional.empty();
private Optional<String> dockerImageRepo = Optional.empty();
@@ -115,13 +122,17 @@ public final class ClusterSpec {
private boolean exclusive = false;
private Optional<Id> combinedId = Optional.empty();
-
- Builder(Type type, Id id) {
+ Builder(Type type, Id id, boolean specification) {
this.type = type;
this.id = id;
+ this.specification = specification;
}
public ClusterSpec build() {
+ if (specification) {
+ if (groupId.isEmpty()) throw new IllegalArgumentException("Creating a ClusterSpec with specification() requires groupId to be set");
+ if (vespaVersion == null) throw new IllegalArgumentException("Creating a ClusterSpec with specification() requires vespaVersion to be set");
+ }
return new ClusterSpec(type, id, groupId, vespaVersion, exclusive, combinedId, dockerImageRepo);
}