diff options
author | Håkon Hallingstad <hakon@oath.com> | 2018-12-31 16:17:33 +0100 |
---|---|---|
committer | Håkon Hallingstad <hakon@oath.com> | 2018-12-31 16:17:33 +0100 |
commit | a6703b62b6c2b2c2f8e1633e78d4ea50d564dc71 (patch) | |
tree | 6164b3b5f62f8feca17f7fcb7be02d9ac2afde1a /flags | |
parent | af82f15b8ec3a7c19d1b9ba48b53edf9feb6de48 (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.java | 46 | ||||
-rw-r--r-- | flags/src/main/java/com/yahoo/vespa/flags/json/Condition.java | 1 | ||||
-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.java | 1 |
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; |