summaryrefslogtreecommitdiffstats
path: root/flags
diff options
context:
space:
mode:
authorHåkon Hallingstad <hakon@oath.com>2018-12-31 16:17:33 +0100
committerHåkon Hallingstad <hakon@oath.com>2018-12-31 16:17:33 +0100
commita6703b62b6c2b2c2f8e1633e78d4ea50d564dc71 (patch)
tree6164b3b5f62f8feca17f7fcb7be02d9ac2afde1a /flags
parentaf82f15b8ec3a7c19d1b9ba48b53edf9feb6de48 (diff)
Expose defined flags
- Exposes all defined flags at /flags/v1/defined. - Defines all hosted flags in Flags. Perhaps later we can support hiding hosted flags (aka support different set of flags for different teams). - Categorizes /flags/v1 as a hosted vespa operation for /zone/v2. Also fixes component definitions in services.xml. The affected bundles have been verified at an example config server.
Diffstat (limited to 'flags')
-rw-r--r--flags/src/main/java/com/yahoo/vespa/flags/Flags.java46
-rw-r--r--flags/src/main/java/com/yahoo/vespa/flags/json/Condition.java1
-rw-r--r--flags/src/main/java/com/yahoo/vespa/flags/json/DimensionHelper.java (renamed from flags/src/main/java/com/yahoo/vespa/flags/json/wire/DimensionHelper.java)2
-rw-r--r--flags/src/main/java/com/yahoo/vespa/flags/json/FetchVectorHelper.java (renamed from flags/src/main/java/com/yahoo/vespa/flags/json/wire/FetchVectorHelper.java)2
-rw-r--r--flags/src/main/java/com/yahoo/vespa/flags/json/FlagData.java1
5 files changed, 47 insertions, 5 deletions
diff --git a/flags/src/main/java/com/yahoo/vespa/flags/Flags.java b/flags/src/main/java/com/yahoo/vespa/flags/Flags.java
index b66ba9fc0c9..50cb5ffdf7c 100644
--- a/flags/src/main/java/com/yahoo/vespa/flags/Flags.java
+++ b/flags/src/main/java/com/yahoo/vespa/flags/Flags.java
@@ -32,7 +32,7 @@ public class Flags {
public static final FlagSerializer<Integer> INT_SERIALIZER = new SimpleFlagSerializer<>(IntNode::new, JsonNode::isIntegralNumber, JsonNode::asInt);
public static final FlagSerializer<Long> LONG_SERIALIZER = new SimpleFlagSerializer<>(LongNode::new, JsonNode::isIntegralNumber, JsonNode::asLong);
- private static final ConcurrentHashMap<FlagId, FlagDefinition<?>> flags = new ConcurrentHashMap<>();
+ private static volatile ConcurrentHashMap<FlagId, FlagDefinition<?>> flags = new ConcurrentHashMap<>();
public static final UnboundFlag<Boolean> HEALTHMONITOR_MONITOR_INFRA = defineBoolean(
"healthmonitor-monitorinfra", true,
@@ -67,6 +67,32 @@ public class Flags {
"Takes effect only at bootstrap of config server/controller",
FetchVector.Dimension.HOSTNAME);
+ public static final UnboundFlag<Boolean> PROXYHOST_USES_REAL_ORCHESTRATOR = defineBoolean(
+ "proxyhost-uses-real-orchestrator", true,
+ "Whether proxy hosts uses the real Orchestrator when suspending/resuming, or a synthetic.",
+ "Takes effect immediately when changed.",
+ FetchVector.Dimension.HOSTNAME);
+
+ public static final UnboundFlag<Boolean> CONFIGHOST_USES_REAL_ORCHESTRATOR = defineBoolean(
+ "confighost-uses-real-orchestrator", false,
+ "Whether the config server hosts uses the real Orchestrator when suspending/resuming, or a synthetic.",
+ "Takes effect immediately when changed.",
+ FetchVector.Dimension.HOSTNAME);
+
+ public static final UnboundFlag<Boolean> ENABLE_DOCKER_1_13 = defineBoolean(
+ "enable-docker-1.13", true,
+ "Whether to upgrade to Docker version 1.13.",
+ "Takes effect on next host admin tick.",
+ FetchVector.Dimension.HOSTNAME);
+
+ public static final UnboundFlag<Boolean> ENABLE_CROWDSTRIKE = defineBoolean(
+ "enable-crowdstrike", true,
+ "Whether to enable CrowdStrike.", "Takes effect on next host admin tick");
+
+ public static final UnboundFlag<Boolean> ENABLE_NESSUS = defineBoolean(
+ "enable-nessus", true,
+ "Whether to enable Nessus.", "Takes effect on next host admin tick");
+
public static UnboundFlag<Boolean> defineBoolean(String flagId, boolean defaultValue, String description,
String modificationEffect, FetchVector.Dimension... dimensions) {
return define(flagId, defaultValue, BOOLEAN_SERIALIZER, description, modificationEffect, dimensions);
@@ -127,4 +153,22 @@ public class Flags {
public static Optional<FlagDefinition<?>> getFlag(FlagId flagId) {
return Optional.ofNullable(flags.get(flagId));
}
+
+ public static Replacer clearFlagsForTesting() {
+ return new Replacer();
+ }
+
+ public static class Replacer implements AutoCloseable {
+ private final ConcurrentHashMap<FlagId, FlagDefinition<?>> savedFlags;
+
+ private Replacer() {
+ this.savedFlags = Flags.flags;
+ Flags.flags = new ConcurrentHashMap<>();
+ }
+
+ @Override
+ public void close() {
+ Flags.flags = savedFlags;
+ }
+ }
}
diff --git a/flags/src/main/java/com/yahoo/vespa/flags/json/Condition.java b/flags/src/main/java/com/yahoo/vespa/flags/json/Condition.java
index c07232bfe66..4bc86fd96f5 100644
--- a/flags/src/main/java/com/yahoo/vespa/flags/json/Condition.java
+++ b/flags/src/main/java/com/yahoo/vespa/flags/json/Condition.java
@@ -2,7 +2,6 @@
package com.yahoo.vespa.flags.json;
import com.yahoo.vespa.flags.FetchVector;
-import com.yahoo.vespa.flags.json.wire.DimensionHelper;
import com.yahoo.vespa.flags.json.wire.WireCondition;
import java.util.Arrays;
diff --git a/flags/src/main/java/com/yahoo/vespa/flags/json/wire/DimensionHelper.java b/flags/src/main/java/com/yahoo/vespa/flags/json/DimensionHelper.java
index e2cb6dd0932..b5afc3f1b7d 100644
--- a/flags/src/main/java/com/yahoo/vespa/flags/json/wire/DimensionHelper.java
+++ b/flags/src/main/java/com/yahoo/vespa/flags/json/DimensionHelper.java
@@ -1,5 +1,5 @@
// 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.json.wire;
+package com.yahoo.vespa.flags.json;
import com.yahoo.vespa.flags.FetchVector;
diff --git a/flags/src/main/java/com/yahoo/vespa/flags/json/wire/FetchVectorHelper.java b/flags/src/main/java/com/yahoo/vespa/flags/json/FetchVectorHelper.java
index 834e4024a6a..d92b7a738dc 100644
--- a/flags/src/main/java/com/yahoo/vespa/flags/json/wire/FetchVectorHelper.java
+++ b/flags/src/main/java/com/yahoo/vespa/flags/json/FetchVectorHelper.java
@@ -1,5 +1,5 @@
// 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.json.wire;
+package com.yahoo.vespa.flags.json;
import com.yahoo.vespa.flags.FetchVector;
diff --git a/flags/src/main/java/com/yahoo/vespa/flags/json/FlagData.java b/flags/src/main/java/com/yahoo/vespa/flags/json/FlagData.java
index 9ee3b2dcd85..a73033a9314 100644
--- a/flags/src/main/java/com/yahoo/vespa/flags/json/FlagData.java
+++ b/flags/src/main/java/com/yahoo/vespa/flags/json/FlagData.java
@@ -5,7 +5,6 @@ import com.fasterxml.jackson.databind.JsonNode;
import com.yahoo.vespa.flags.FetchVector;
import com.yahoo.vespa.flags.FlagSource;
import com.yahoo.vespa.flags.RawFlag;
-import com.yahoo.vespa.flags.json.wire.FetchVectorHelper;
import com.yahoo.vespa.flags.json.wire.WireFlagData;
import com.yahoo.vespa.flags.json.wire.WireRule;