diff options
4 files changed, 70 insertions, 19 deletions
diff --git a/config-provisioning/abi-spec.json b/config-provisioning/abi-spec.json index 54f6053f4a9..577105138ea 100644 --- a/config-provisioning/abi-spec.json +++ b/config-provisioning/abi-spec.json @@ -781,18 +781,36 @@ "public static com.yahoo.config.provision.SystemName defaultSystem()", "public static com.yahoo.config.provision.SystemName from(java.lang.String)", "public java.lang.String value()", + "public com.yahoo.config.provision.SystemType getType()", "public boolean isCd()", "public static java.util.Set all()" ], "fields": [ - "public static final enum com.yahoo.config.provision.SystemName dev", "public static final enum com.yahoo.config.provision.SystemName cd", "public static final enum com.yahoo.config.provision.SystemName main", "public static final enum com.yahoo.config.provision.SystemName Public", "public static final enum com.yahoo.config.provision.SystemName PublicCd", + "public static final enum com.yahoo.config.provision.SystemName dev", "public static final enum com.yahoo.config.provision.SystemName vaas" ] }, + "com.yahoo.config.provision.SystemType": { + "superClass": "java.lang.Enum", + "interfaces": [], + "attributes": [ + "public", + "final", + "enum" + ], + "methods": [ + "public static com.yahoo.config.provision.SystemType[] values()", + "public static com.yahoo.config.provision.SystemType valueOf(java.lang.String)" + ], + "fields": [ + "public static final enum com.yahoo.config.provision.SystemType MAIN", + "public static final enum com.yahoo.config.provision.SystemType PUBLIC" + ] + }, "com.yahoo.config.provision.TenantName": { "superClass": "java.lang.Object", "interfaces": [ diff --git a/config-provisioning/src/main/java/com/yahoo/config/provision/SystemName.java b/config-provisioning/src/main/java/com/yahoo/config/provision/SystemName.java index 0206e6f6734..32945c094be 100644 --- a/config-provisioning/src/main/java/com/yahoo/config/provision/SystemName.java +++ b/config-provisioning/src/main/java/com/yahoo/config/provision/SystemName.java @@ -2,7 +2,6 @@ package com.yahoo.config.provision; import java.util.EnumSet; -import java.util.List; import java.util.Set; /** @@ -12,23 +11,31 @@ import java.util.Set; */ public enum SystemName { - /** Local development system */ - dev, - /** Continuous deployment system */ - cd, + cd(SystemType.MAIN, true), /** Production system */ - main, + main(SystemType.MAIN, false), - /** System accessible for the public */ - Public, + /** System accessible to the public */ + Public(SystemType.PUBLIC, false), /** Continuous deployment system for testing the Public system */ - PublicCd, + PublicCd(SystemType.PUBLIC, true), + + /** Local development system */ + dev(SystemType.MAIN, false), /** VaaS */ - vaas; // TODO: Remove this and use public everywhere + vaas(SystemType.PUBLIC, true); // TODO: Remove this and use public everywhere + + private final SystemType type; + private final boolean isCd; + + SystemName(SystemType type, boolean isCd) { + this.type = type; + this.isCd = isCd; + } public static SystemName defaultSystem() { return main; @@ -58,12 +65,7 @@ public enum SystemName { } } - public boolean isCd() { - return List.of(cd, PublicCd).contains(this); - } - - public static Set<SystemName> all() { - return EnumSet.allOf(SystemName.class); - } - + public SystemType getType() { return type; } + public boolean isCd() { return isCd; } + public static Set<SystemName> all() { return EnumSet.allOf(SystemName.class); } } diff --git a/config-provisioning/src/main/java/com/yahoo/config/provision/SystemType.java b/config-provisioning/src/main/java/com/yahoo/config/provision/SystemType.java new file mode 100644 index 00000000000..0bdbf28281f --- /dev/null +++ b/config-provisioning/src/main/java/com/yahoo/config/provision/SystemType.java @@ -0,0 +1,13 @@ +// Copyright 2019 Oath Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. +package com.yahoo.config.provision; + +/** + * @author hakonhall + */ +public enum SystemType { + /** Denotes a system similar to SystemName.main, such as cd. */ + MAIN, + + /** Denotes a system similar to SystemName.Public, such as PublicCd. */ + PUBLIC; +} diff --git a/config-provisioning/src/test/java/com/yahoo/config/provision/SystemNameTest.java b/config-provisioning/src/test/java/com/yahoo/config/provision/SystemNameTest.java new file mode 100644 index 00000000000..6ffca4918a8 --- /dev/null +++ b/config-provisioning/src/test/java/com/yahoo/config/provision/SystemNameTest.java @@ -0,0 +1,18 @@ +// Copyright 2019 Oath Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. +package com.yahoo.config.provision; + +import org.junit.Test; + +import static org.junit.Assert.assertEquals; + +/** + * @author hakonhall + */ +public class SystemNameTest { + @Test + public void test() { + for (SystemName name : SystemName.values()) { + assertEquals(name, SystemName.from(name.value())); + } + } +}
\ No newline at end of file |