diff options
author | Harald Musum <musum@verizonmedia.com> | 2020-03-17 08:58:29 +0100 |
---|---|---|
committer | Harald Musum <musum@verizonmedia.com> | 2020-03-17 08:58:29 +0100 |
commit | d04a6cbda7d2cfcbf649039b2f89d2769546dc5e (patch) | |
tree | 916e7e8a08de87dc5bbbf51ff26a7ed1fde28d6d /config-provisioning | |
parent | 577b7595b425d24de0e1c9853741c1ca46772f63 (diff) |
Add builder for ClusterSpec
Diffstat (limited to 'config-provisioning')
3 files changed, 82 insertions, 9 deletions
diff --git a/config-provisioning/abi-spec.json b/config-provisioning/abi-spec.json index 4552ec9603d..5b8a90a9f5d 100644 --- a/config-provisioning/abi-spec.json +++ b/config-provisioning/abi-spec.json @@ -205,6 +205,23 @@ ], "fields": [] }, + "com.yahoo.config.provision.ClusterSpec$Builder": { + "superClass": "java.lang.Object", + "interfaces": [], + "attributes": [ + "public" + ], + "methods": [ + "public com.yahoo.config.provision.ClusterSpec build()", + "public com.yahoo.config.provision.ClusterSpec$Builder group(com.yahoo.config.provision.ClusterSpec$Group)", + "public com.yahoo.config.provision.ClusterSpec$Builder vespaVersion(com.yahoo.component.Version)", + "public com.yahoo.config.provision.ClusterSpec$Builder vespaVersion(java.lang.String)", + "public com.yahoo.config.provision.ClusterSpec$Builder exclusive(boolean)", + "public com.yahoo.config.provision.ClusterSpec$Builder combinedId(java.util.Optional)", + "public com.yahoo.config.provision.ClusterSpec$Builder dockerImageRepo(java.util.Optional)" + ], + "fields": [] + }, "com.yahoo.config.provision.ClusterSpec$Group": { "superClass": "java.lang.Object", "interfaces": [], @@ -281,6 +298,7 @@ "public static com.yahoo.config.provision.ClusterSpec request(com.yahoo.config.provision.ClusterSpec$Type, com.yahoo.config.provision.ClusterSpec$Id, com.yahoo.component.Version, boolean, java.util.Optional, java.util.Optional)", "public static com.yahoo.config.provision.ClusterSpec from(com.yahoo.config.provision.ClusterSpec$Type, com.yahoo.config.provision.ClusterSpec$Id, com.yahoo.config.provision.ClusterSpec$Group, com.yahoo.component.Version, boolean, java.util.Optional)", "public static com.yahoo.config.provision.ClusterSpec from(com.yahoo.config.provision.ClusterSpec$Type, com.yahoo.config.provision.ClusterSpec$Id, com.yahoo.config.provision.ClusterSpec$Group, com.yahoo.component.Version, boolean, java.util.Optional, java.util.Optional)", + "public static com.yahoo.config.provision.ClusterSpec$Builder builder(com.yahoo.config.provision.ClusterSpec$Type, com.yahoo.config.provision.ClusterSpec$Id)", "public java.lang.String toString()", "public int hashCode()", "public boolean equals(java.lang.Object)", 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("")); diff --git a/config-provisioning/src/test/java/com/yahoo/config/provision/ClusterMembershipTest.java b/config-provisioning/src/test/java/com/yahoo/config/provision/ClusterMembershipTest.java index 3ac04cd1cb5..2962fdb77e2 100644 --- a/config-provisioning/src/test/java/com/yahoo/config/provision/ClusterMembershipTest.java +++ b/config-provisioning/src/test/java/com/yahoo/config/provision/ClusterMembershipTest.java @@ -18,8 +18,7 @@ public class ClusterMembershipTest { @Test public void testContainerServiceInstance() { - ClusterSpec cluster = ClusterSpec.request(ClusterSpec.Type.container, ClusterSpec.Id.from("id1"), - Version.fromString("6.42"), false, Optional.empty(), Optional.empty()); + ClusterSpec cluster = ClusterSpec.builder(ClusterSpec.Type.container, ClusterSpec.Id.from("id1")).vespaVersion("6.42").build(); assertContainerService(ClusterMembership.from(cluster, 3)); } @@ -57,8 +56,7 @@ public class ClusterMembershipTest { @Test public void testServiceInstance() { - ClusterSpec cluster = ClusterSpec.request(ClusterSpec.Type.content, ClusterSpec.Id.from("id1"), - Version.fromString("6.42"), false, Optional.empty(), Optional.empty()); + ClusterSpec cluster = ClusterSpec.builder(ClusterSpec.Type.content, ClusterSpec.Id.from("id1")).vespaVersion("6.42").build(); assertContentService(ClusterMembership.from(cluster, 37)); } @@ -77,16 +75,16 @@ public class ClusterMembershipTest { @Test public void testServiceInstanceWithRetire() { - ClusterSpec cluster = ClusterSpec.request(ClusterSpec.Type.content, ClusterSpec.Id.from("id1"), - Version.fromString("6.42"), false, Optional.empty(), Optional.empty()); + ClusterSpec cluster = ClusterSpec.builder(ClusterSpec.Type.content, ClusterSpec.Id.from("id1")).vespaVersion("6.42").build(); assertContentServiceWithRetire(ClusterMembership.retiredFrom(cluster, 37)); } @Test public void testServiceInstanceWithGroupAndRetire() { - ClusterSpec cluster = ClusterSpec.from(ClusterSpec.Type.content, ClusterSpec.Id.from("id1"), - ClusterSpec.Group.from(4), Version.fromString("6.42"), - false, Optional.empty(), Optional.empty()); + ClusterSpec cluster = ClusterSpec.builder(ClusterSpec.Type.content, ClusterSpec.Id.from("id1")) + .group(ClusterSpec.Group.from(4)) + .vespaVersion("6.42") + .build(); assertContentServiceWithGroupAndRetire(ClusterMembership.retiredFrom(cluster, 37)); } |