diff options
author | Jon Bratseth <bratseth@oath.com> | 2018-03-20 21:23:51 +0100 |
---|---|---|
committer | Jon Bratseth <bratseth@oath.com> | 2018-03-20 21:23:51 +0100 |
commit | 75df844174e47bec91a3067ab50b16a9833fd5f0 (patch) | |
tree | 50770bc317f9cff020751ae4c8f6b1919423fd9b /config-provisioning/src/main/java/com/yahoo/config/provision/ClusterSpec.java | |
parent | 601b4777257e9d1694bdc6987d2b63ee6ccf52dc (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.java | 38 |
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 |