summaryrefslogtreecommitdiffstats
path: root/flags
diff options
context:
space:
mode:
authorHåkon Hallingstad <hakon@oath.com>2019-01-15 17:21:54 +0100
committerHåkon Hallingstad <hakon@oath.com>2019-01-15 17:21:54 +0100
commit24ff6d7f160b92d9c4cfd426c00233858655d466 (patch)
treeb4df79cfb8fbc54b26bbe3d675080c890c9fa4a4 /flags
parent7b210b2bda57003de6fff1dbe28348fe6685fa0c (diff)
Add node type dimension
Diffstat (limited to 'flags')
-rw-r--r--flags/src/main/java/com/yahoo/vespa/flags/FetchVector.java13
-rw-r--r--flags/src/main/java/com/yahoo/vespa/flags/json/DimensionHelper.java1
-rw-r--r--flags/src/test/java/com/yahoo/vespa/flags/FlagsTest.java3
-rw-r--r--flags/src/test/java/com/yahoo/vespa/flags/json/SerializationTest.java4
4 files changed, 16 insertions, 5 deletions
diff --git a/flags/src/main/java/com/yahoo/vespa/flags/FetchVector.java b/flags/src/main/java/com/yahoo/vespa/flags/FetchVector.java
index 7d84efa52b2..6a6dfac14cf 100644
--- a/flags/src/main/java/com/yahoo/vespa/flags/FetchVector.java
+++ b/flags/src/main/java/com/yahoo/vespa/flags/FetchVector.java
@@ -1,6 +1,8 @@
// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.flags;
+import com.yahoo.vespa.flags.json.DimensionHelper;
+
import javax.annotation.concurrent.Immutable;
import java.util.Collections;
import java.util.EnumMap;
@@ -18,13 +20,18 @@ import java.util.function.Consumer;
*/
@Immutable
public class FetchVector {
+ /**
+ * Note: If this enum is changed, you must also change {@link DimensionHelper}.
+ */
public enum Dimension {
- /** Value from ZoneId::value */
+ /** Value from ZoneId::value of the form environment.region. */
ZONE_ID,
- /** Value from ApplicationId::serializedForm */
+ /** Value from ApplicationId::serializedForm of the form tenant:applicationName:instance. */
APPLICATION_ID,
/** Fully qualified hostname */
- HOSTNAME
+ HOSTNAME,
+ /** Node type from com.yahoo.config.provision.NodeType::name, e.g. tenant, host, confighost, controller, etc. */
+ NODE_TYPE
}
private final Map<Dimension, String> map;
diff --git a/flags/src/main/java/com/yahoo/vespa/flags/json/DimensionHelper.java b/flags/src/main/java/com/yahoo/vespa/flags/json/DimensionHelper.java
index b5afc3f1b7d..5f2acecaad7 100644
--- a/flags/src/main/java/com/yahoo/vespa/flags/json/DimensionHelper.java
+++ b/flags/src/main/java/com/yahoo/vespa/flags/json/DimensionHelper.java
@@ -16,6 +16,7 @@ public class DimensionHelper {
serializedDimensions.put(FetchVector.Dimension.ZONE_ID, "zone");
serializedDimensions.put(FetchVector.Dimension.HOSTNAME, "hostname");
serializedDimensions.put(FetchVector.Dimension.APPLICATION_ID, "application");
+ serializedDimensions.put(FetchVector.Dimension.NODE_TYPE, "node-type");
if (serializedDimensions.size() != FetchVector.Dimension.values().length) {
throw new IllegalStateException(FetchVectorHelper.class.getName() + " is not in sync with " +
diff --git a/flags/src/test/java/com/yahoo/vespa/flags/FlagsTest.java b/flags/src/test/java/com/yahoo/vespa/flags/FlagsTest.java
index 1aa1581f105..570058ae1d2 100644
--- a/flags/src/test/java/com/yahoo/vespa/flags/FlagsTest.java
+++ b/flags/src/test/java/com/yahoo/vespa/flags/FlagsTest.java
@@ -48,8 +48,9 @@ public class FlagsTest {
assertThat(vector.getValue().getValue(FetchVector.Dimension.HOSTNAME).get(), is(not(emptyOrNullString())));
// zone is set because it was set on the unbound flag above
assertThat(vector.getValue().getValue(FetchVector.Dimension.ZONE_ID), is(Optional.of("a-zone")));
- // application is not set
+ // application and node type are not set
assertThat(vector.getValue().getValue(FetchVector.Dimension.APPLICATION_ID), is(Optional.empty()));
+ assertThat(vector.getValue().getValue(FetchVector.Dimension.NODE_TYPE), is(Optional.empty()));
RawFlag rawFlag = mock(RawFlag.class);
when(source.fetch(eq(new FlagId("id")), any())).thenReturn(Optional.of(rawFlag));
diff --git a/flags/src/test/java/com/yahoo/vespa/flags/json/SerializationTest.java b/flags/src/test/java/com/yahoo/vespa/flags/json/SerializationTest.java
index 7836eb702b1..b3ff2a92b07 100644
--- a/flags/src/test/java/com/yahoo/vespa/flags/json/SerializationTest.java
+++ b/flags/src/test/java/com/yahoo/vespa/flags/json/SerializationTest.java
@@ -57,7 +57,8 @@ public class SerializationTest {
" \"attributes\": {\n" +
" \"zone\": \"z1\",\n" +
" \"application\": \"a1\",\n" +
- " \"hostname\": \"h1\"\n" +
+ " \"hostname\": \"h1\",\n" +
+ " \"node-type\": \"nt1\"\n" +
" }\n" +
"}";
@@ -85,6 +86,7 @@ public class SerializationTest {
assertThat(wireData.defaultFetchVector.get("zone"), equalTo("z1"));
assertThat(wireData.defaultFetchVector.get("application"), equalTo("a1"));
assertThat(wireData.defaultFetchVector.get("hostname"), equalTo("h1"));
+ assertThat(wireData.defaultFetchVector.get("node-type"), equalTo("nt1"));
// Verify serialization of RawFlag == serialization by ObjectMapper
ObjectMapper mapper = new ObjectMapper();