diff options
author | gjoranv <gjoranv@gmail.com> | 2023-08-24 10:48:16 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-08-24 10:48:16 +0200 |
commit | 971778549065f1a20fdd9b9f2168b086a23a6644 (patch) | |
tree | 8c511ab52605b25f9b0b776dbe36f4cb19b8c308 | |
parent | 39420e6f2331825568605cfeb2975844de99de3a (diff) | |
parent | 04561fc0bf54f7ec23b99c0781dbae4e8b1bf5af (diff) |
Merge pull request #28131 from vespa-engine/add-account-dimension
Add 'cloud-account' dimension
3 files changed, 10 insertions, 5 deletions
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/systemflags/v1/SystemFlagsDataArchive.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/systemflags/v1/SystemFlagsDataArchive.java index c6f1d96ed43..fa8a0ddcba1 100644 --- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/systemflags/v1/SystemFlagsDataArchive.java +++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/systemflags/v1/SystemFlagsDataArchive.java @@ -7,6 +7,7 @@ import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.node.ObjectNode; import com.yahoo.component.Version; import com.yahoo.config.provision.ApplicationId; +import com.yahoo.config.provision.CloudAccount; import com.yahoo.config.provision.CloudName; import com.yahoo.config.provision.ClusterSpec; import com.yahoo.config.provision.Environment; @@ -38,8 +39,6 @@ import java.nio.file.Paths; import java.util.ArrayList; import java.util.List; import java.util.Map; -import java.util.Objects; -import java.util.Optional; import java.util.Set; import java.util.TreeMap; import java.util.function.Consumer; @@ -191,8 +190,8 @@ public class SystemFlagsDataArchive { flagData.rules().forEach(rule -> rule.conditions().forEach(condition -> { int force_switch_expression_dummy = switch (condition.type()) { case RELATIONAL -> switch (condition.dimension()) { - case APPLICATION_ID, CLOUD, CLUSTER_ID, CLUSTER_TYPE, CONSOLE_USER_EMAIL, ENVIRONMENT, - HOSTNAME, NODE_TYPE, SYSTEM, TENANT_ID, ZONE_ID -> + case APPLICATION_ID, CLOUD, CLOUD_ACCOUNT, CLUSTER_ID, CLUSTER_TYPE, CONSOLE_USER_EMAIL, + ENVIRONMENT, HOSTNAME, NODE_TYPE, SYSTEM, TENANT_ID, ZONE_ID -> throw new FlagValidationException(condition.type().toWire() + " " + DimensionHelper.toWire(condition.dimension()) + " condition is not supported"); @@ -215,6 +214,7 @@ public class SystemFlagsDataArchive { if (!Set.of(YAHOO, AWS, GCP).contains(CloudName.from(cloud))) throw new FlagValidationException("Unknown cloud: " + cloud); }); + case CLOUD_ACCOUNT -> validateConditionValues(condition, CloudAccount::from); case CLUSTER_ID -> validateConditionValues(condition, ClusterSpec.Id::from); case CLUSTER_TYPE -> validateConditionValues(condition, ClusterSpec.Type::from); case ENVIRONMENT -> validateConditionValues(condition, Environment::from); 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 5bcc1e67547..7af1661cf0c 100644 --- a/flags/src/main/java/com/yahoo/vespa/flags/FetchVector.java +++ b/flags/src/main/java/com/yahoo/vespa/flags/FetchVector.java @@ -9,7 +9,6 @@ import java.util.Map; import java.util.Objects; import java.util.Optional; import java.util.Set; -import java.util.function.BiConsumer; import java.util.function.Consumer; /** @@ -34,6 +33,11 @@ public class FetchVector { */ CLOUD, + /** + * Cloud account ID from com.yahoo.config.provision.CloudAccount::value, e.g. aws:123456789012 + */ + CLOUD_ACCOUNT, + /** Cluster ID from com.yahoo.config.provision.ClusterSpec.Id::value, e.g. cluster-controllers, logserver. */ CLUSTER_ID, 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 5e5506b616b..2193d70ec47 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 @@ -17,6 +17,7 @@ public class DimensionHelper { static { serializedDimensions.put(FetchVector.Dimension.APPLICATION_ID, "application"); serializedDimensions.put(FetchVector.Dimension.CLOUD, "cloud"); + serializedDimensions.put(FetchVector.Dimension.CLOUD_ACCOUNT, "cloud-account"); serializedDimensions.put(FetchVector.Dimension.CLUSTER_ID, "cluster-id"); serializedDimensions.put(FetchVector.Dimension.CLUSTER_TYPE, "cluster-type"); serializedDimensions.put(FetchVector.Dimension.CONSOLE_USER_EMAIL, "console-user-email"); |