diff options
author | Øyvind Grønnesby <oyving@verizonmedia.com> | 2020-10-30 12:35:50 +0100 |
---|---|---|
committer | Øyvind Grønnesby <oyving@verizonmedia.com> | 2020-10-30 12:35:50 +0100 |
commit | 00c0780615289ce87423910377d17268de9f1aae (patch) | |
tree | 0a5276df3f62c3e3dae46e3ce08431545d4bf3b6 /controller-api | |
parent | fa97b260e26c01aab93e5955dc02b0a818d1c8d7 (diff) |
Add TENANT_ID as a flag dimension
Diffstat (limited to 'controller-api')
2 files changed, 27 insertions, 0 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 a00992da815..8f91a8127bd 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 @@ -221,6 +221,9 @@ public class SystemFlagsDataArchive { } else if (dimension.isEqualTo(DimensionHelper.toWire(FetchVector.Dimension.CONSOLE_USER_EMAIL))) { condition.get("values").forEachArrayElement(conditionValue -> conditionValue.asString() .orElseThrow(() -> new IllegalArgumentException("Non-string email address: " + conditionValue))); + } else if (dimension.isEqualTo(DimensionHelper.toWire(FetchVector.Dimension.TENANT_ID))) { + condition.get("values").forEachArrayElement(conditionValue -> conditionValue.asString() + .orElseThrow(() -> new IllegalArgumentException("Non-string tenant ID: " + conditionValue))); } })); } diff --git a/controller-api/src/test/java/com/yahoo/vespa/hosted/controller/api/systemflags/v1/SystemFlagsDataArchiveTest.java b/controller-api/src/test/java/com/yahoo/vespa/hosted/controller/api/systemflags/v1/SystemFlagsDataArchiveTest.java index aca991ec637..771e42e85f9 100644 --- a/controller-api/src/test/java/com/yahoo/vespa/hosted/controller/api/systemflags/v1/SystemFlagsDataArchiveTest.java +++ b/controller-api/src/test/java/com/yahoo/vespa/hosted/controller/api/systemflags/v1/SystemFlagsDataArchiveTest.java @@ -236,6 +236,30 @@ public class SystemFlagsDataArchiveTest { } } + @Test + public void normalize_json_fail_on_invalid_tenant_id() { + try { + SystemFlagsDataArchive.normalizeJson("{\n" + + " \"id\": \"foo\",\n" + + " \"rules\": [\n" + + " {\n" + + " \"conditions\": [\n" + + " {\n" + + " \"type\": \"whitelist\",\n" + + " \"dimension\": \"tenant\",\n" + + " \"values\": [ 123 ]\n" + + " }\n" + + " ],\n" + + " \"value\": true\n" + + " }\n" + + " ]\n" + + "}\n"); + fail(); + } catch (IllegalArgumentException e) { + assertEquals("Non-string tenant ID: 123", e.getMessage()); + } + } + private static void assertArchiveReturnsCorrectTestFlagDataForTarget(SystemFlagsDataArchive archive) { assertFlagDataHasValue(archive, MY_TEST_FLAG, mainControllerTarget, "main.controller"); assertFlagDataHasValue(archive, MY_TEST_FLAG, prodUsWestCfgTarget, "main.prod.us-west-1"); |