From 0f300a2b45e2abee091c9150fd2303ea975c8acf Mon Sep 17 00:00:00 2001 From: "christian.lutnik" Date: Wed, 19 Mar 2025 13:16:23 +0100 Subject: [PATCH 1/3] add a config for flag set metadata to circumvent flagd bug with metadata merging Signed-off-by: christian.lutnik --- flags/metadata-flags.json | 15 +++++++++++++++ flags/selector-flag-combined-metadata.json | 9 +++++++++ flags/selector-flag-metadata.json | 19 ------------------- flags/selector-flag-set-metadata.json | 19 ------------------- gherkin/metadata.feature | 21 ++++++++++++--------- launchpad/configs/default.json | 8 -------- launchpad/configs/metadata.json | 8 ++++++++ launchpad/configs/ssl.json | 8 -------- 8 files changed, 44 insertions(+), 63 deletions(-) delete mode 100644 flags/selector-flag-metadata.json delete mode 100644 flags/selector-flag-set-metadata.json create mode 100644 launchpad/configs/metadata.json diff --git a/flags/metadata-flags.json b/flags/metadata-flags.json index 0a2b8c6..5297348 100644 --- a/flags/metadata-flags.json +++ b/flags/metadata-flags.json @@ -23,6 +23,21 @@ "external" ] } + }, + "metadata-flag": { + "state": "ENABLED", + "variants": { + "true": true, + "false": false + }, + "defaultVariant": "false", + "targeting": {}, + "metadata": { + "string": "a", + "integer": 1, + "float": 1.2, + "boolean": true + } } } } diff --git a/flags/selector-flag-combined-metadata.json b/flags/selector-flag-combined-metadata.json index 57246f4..6f060a3 100644 --- a/flags/selector-flag-combined-metadata.json +++ b/flags/selector-flag-combined-metadata.json @@ -14,6 +14,15 @@ "float": 1.2, "boolean": true } + }, + "only-set-metadata-flag": { + "state": "ENABLED", + "variants": { + "true": true, + "false": false + }, + "defaultVariant": "false", + "targeting": {} } }, "metadata": { diff --git a/flags/selector-flag-metadata.json b/flags/selector-flag-metadata.json deleted file mode 100644 index 3fccde3..0000000 --- a/flags/selector-flag-metadata.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "flags": { - "metadata-flag": { - "state": "ENABLED", - "variants": { - "true": true, - "false": false - }, - "defaultVariant": "false", - "targeting": {}, - "metadata": { - "string": "a", - "integer": 1, - "float": 1.2, - "boolean": true - } - } - } -} diff --git a/flags/selector-flag-set-metadata.json b/flags/selector-flag-set-metadata.json deleted file mode 100644 index da917cc..0000000 --- a/flags/selector-flag-set-metadata.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "flags": { - "set-metadata-flag": { - "state": "ENABLED", - "variants": { - "true": true, - "false": false - }, - "defaultVariant": "false", - "targeting": {} - } - }, - "metadata": { - "string": "a", - "integer": 1, - "float": 1.2, - "boolean": true - } -} diff --git a/gherkin/metadata.feature b/gherkin/metadata.feature index c8bb1d5..a2f44df 100644 --- a/gherkin/metadata.feature +++ b/gherkin/metadata.feature @@ -6,8 +6,7 @@ Feature: flag and flag set metadata # It should be used in conjunction with the suites supplied by the OpenFeature specification. Scenario: Returns metadata - Given an option "selector" of type "String" with value "rawflags/selector-flag-metadata.json" - And a stable flagd provider + Given a stable flagd provider And a Boolean-flag with key "metadata-flag" and a default value "true" When the flag was evaluated with details Then the resolved metadata should contain @@ -18,16 +17,20 @@ Feature: flag and flag set metadata | boolean | Boolean | true | Scenario: Returns flag set metadata - Given an option "selector" of type "String" with value "rawflags/selector-flag-set-metadata.json" + Given an option "selector" of type "String" with value "rawflags/selector-flag-combined-metadata.json" And a stable flagd provider - And a Boolean-flag with key "set-metadata-flag" and a default value "true" + And a Boolean-flag with key "only-set-metadata-flag" and a default value "true" When the flag was evaluated with details Then the resolved metadata should contain - | key | metadata_type | value | - | string | String | a | - | integer | Integer | 1 | - | float | Float | 1.2 | - | boolean | Boolean | true | + | key | metadata_type | value | + | string | String | b | + | integer | Integer | 2 | + | float | Float | 2.2 | + | boolean | Boolean | false | + | flag-set-string | String | c | + | flag-set-integer | Integer | 3 | + | flag-set-float | Float | 3.2 | + | flag-set-boolean | Boolean | false | Scenario: Flag metadata overwrites flag set metadata Given an option "selector" of type "String" with value "rawflags/selector-flag-combined-metadata.json" diff --git a/launchpad/configs/default.json b/launchpad/configs/default.json index f0fbb32..533d4fc 100644 --- a/launchpad/configs/default.json +++ b/launchpad/configs/default.json @@ -8,14 +8,6 @@ "uri": "rawflags/selector-flags.json", "provider": "file" }, - { - "uri": "rawflags/selector-flag-metadata.json", - "provider": "file" - }, - { - "uri": "rawflags/selector-flag-set-metadata.json", - "provider": "file" - }, { "uri": "rawflags/selector-flag-combined-metadata.json", "provider": "file" diff --git a/launchpad/configs/metadata.json b/launchpad/configs/metadata.json new file mode 100644 index 0000000..ccb0f90 --- /dev/null +++ b/launchpad/configs/metadata.json @@ -0,0 +1,8 @@ +{ + "sources": [ + { + "uri": "rawflags/selector-flag-combined-metadata.json", + "provider": "file" + } + ] +} diff --git a/launchpad/configs/ssl.json b/launchpad/configs/ssl.json index 5e306dd..afba201 100644 --- a/launchpad/configs/ssl.json +++ b/launchpad/configs/ssl.json @@ -10,14 +10,6 @@ "uri": "rawflags/selector-flags.json", "provider": "file" }, - { - "uri": "rawflags/selector-flag-metadata.json", - "provider": "file" - }, - { - "uri": "rawflags/selector-flag-set-metadata.json", - "provider": "file" - }, { "uri": "rawflags/selector-flag-combined-metadata.json", "provider": "file" From b08fa4bb09fc41ddcbef7ecc53ce80bae55b7cdb Mon Sep 17 00:00:00 2001 From: "christian.lutnik" Date: Wed, 19 Mar 2025 13:25:07 +0100 Subject: [PATCH 2/3] use correct provider type Signed-off-by: christian.lutnik --- gherkin/metadata.feature | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gherkin/metadata.feature b/gherkin/metadata.feature index a2f44df..cdbd9e3 100644 --- a/gherkin/metadata.feature +++ b/gherkin/metadata.feature @@ -18,7 +18,7 @@ Feature: flag and flag set metadata Scenario: Returns flag set metadata Given an option "selector" of type "String" with value "rawflags/selector-flag-combined-metadata.json" - And a stable flagd provider + And a metadata flagd provider And a Boolean-flag with key "only-set-metadata-flag" and a default value "true" When the flag was evaluated with details Then the resolved metadata should contain @@ -34,7 +34,7 @@ Feature: flag and flag set metadata Scenario: Flag metadata overwrites flag set metadata Given an option "selector" of type "String" with value "rawflags/selector-flag-combined-metadata.json" - And a stable flagd provider + And a metadata flagd provider And a Boolean-flag with key "combined-metadata-flag" and a default value "true" When the flag was evaluated with details Then the resolved metadata should contain From 28c0951cc98770d1de6d89251ec2414447519635 Mon Sep 17 00:00:00 2001 From: "christian.lutnik" Date: Wed, 19 Mar 2025 14:11:19 +0100 Subject: [PATCH 3/3] remove unused file Signed-off-by: christian.lutnik --- launchpad/configs/default.json | 4 ---- launchpad/configs/ssl.json | 4 ---- 2 files changed, 8 deletions(-) diff --git a/launchpad/configs/default.json b/launchpad/configs/default.json index 533d4fc..484d2be 100644 --- a/launchpad/configs/default.json +++ b/launchpad/configs/default.json @@ -7,10 +7,6 @@ { "uri": "rawflags/selector-flags.json", "provider": "file" - }, - { - "uri": "rawflags/selector-flag-combined-metadata.json", - "provider": "file" } ], "context-value": { diff --git a/launchpad/configs/ssl.json b/launchpad/configs/ssl.json index afba201..550c2a7 100644 --- a/launchpad/configs/ssl.json +++ b/launchpad/configs/ssl.json @@ -9,10 +9,6 @@ { "uri": "rawflags/selector-flags.json", "provider": "file" - }, - { - "uri": "rawflags/selector-flag-combined-metadata.json", - "provider": "file" } ], "context-value": {