summaryrefslogtreecommitdiffstats
path: root/config-provisioning/src/main/java/com/yahoo/config/provision/ClusterSpec.java
diff options
context:
space:
mode:
authorJon Bratseth <bratseth@oath.com>2018-03-20 21:23:51 +0100
committerJon Bratseth <bratseth@oath.com>2018-03-20 21:23:51 +0100
commit75df844174e47bec91a3067ab50b16a9833fd5f0 (patch)
tree50770bc317f9cff020751ae4c8f6b1919423fd9b /config-provisioning/src/main/java/com/yahoo/config/provision/ClusterSpec.java
parent601b4777257e9d1694bdc6987d2b63ee6ccf52dc (diff)
Allow applications to request exlcusive access to hosts
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.java38
1 files changed, 34 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 bcc13f2c3e9..a0df2547631 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
@@ -22,11 +22,14 @@ public final class ClusterSpec {
private final Version vespaVersion;
- private ClusterSpec(Type type, Id id, Optional<Group> groupId, Version vespaVersion) {
+ private boolean exclusive;
+
+ private ClusterSpec(Type type, Id id, Optional<Group> groupId, Version vespaVersion, boolean exclusive) {
this.type = type;
this.id = id;
this.groupId = groupId;
this.vespaVersion = vespaVersion;
+ this.exclusive = exclusive;
}
/** Returns the cluster type */
@@ -40,13 +43,40 @@ public final class ClusterSpec {
/** Returns the group within the cluster this specifies, or empty to specify the whole cluster */
public Optional<Group> group() { return groupId; }
- public ClusterSpec changeGroup(Optional<Group> newGroup) { return new ClusterSpec(type, id, newGroup, vespaVersion); }
+ /**
+ * Returns whether the physical hosts running the nodes of this application can
+ * also run nodes of other applications. Using exclusive nodes for containers increases security
+ * and increases cost.
+ */
+ public boolean isExclusive() { return exclusive; }
+
+ // TODO: Remove after April 2018
+ public ClusterSpec changeGroup(Optional<Group> newGroup) {
+ return with(newGroup);
+ }
+
+ public ClusterSpec with(Optional<Group> newGroup) {
+ return new ClusterSpec(type, id, newGroup, vespaVersion, exclusive);
+ }
+
+ public ClusterSpec exclusive(boolean exclusive) {
+ return new ClusterSpec(type, id, groupId, vespaVersion, exclusive);
+ }
+ // TODO: Remove after April 2018
public static ClusterSpec request(Type type, Id id, Version vespaVersion) {
- return new ClusterSpec(type, id, Optional.empty(), vespaVersion);
+ return request(type, id, vespaVersion, false);
+ }
+ public static ClusterSpec request(Type type, Id id, Version vespaVersion, boolean exclusive) {
+ return new ClusterSpec(type, id, Optional.empty(), vespaVersion, exclusive);
}
+
+ // TODO: Remove after April 2018
public static ClusterSpec from(Type type, Id id, Group groupId, Version vespaVersion) {
- return new ClusterSpec(type, id, Optional.of(groupId), vespaVersion);
+ return new ClusterSpec(type, id, Optional.of(groupId), vespaVersion, false);
+ }
+ public static ClusterSpec from(Type type, Id id, Group groupId, Version vespaVersion, boolean exclusive) {
+ return new ClusterSpec(type, id, Optional.of(groupId), vespaVersion, exclusive);
}
@Override