From ef716a3eaa114cdc798214e68be1cb98612f8d77 Mon Sep 17 00:00:00 2001 From: Alexander Turenko <alexander.turenko@tarantool.org> Date: Wed, 26 Jun 2024 02:49:22 +0300 Subject: [PATCH] config: expose experimental.config.utils.schema The module is renamed from `internal.config.utils.schema` to `experimental.config.utils.schema` without changes. It is useful for validation of configuration data in roles and applications. Also, it provides a couple of methods that aim to simplify usual tasks around processing of hierarchical configuration data. For example, * get/set a nested value * apply defaults from the schema * filter data based on annotations from the schema * transform a hierarchical data using a function * merge two hierarchical values * parse environment variable according to its type in the schema See https://github.com/tarantool/doc/issues/4279 for an in-depth description. Fixes #10117 NO_DOC=https://github.com/tarantool/doc/issues/4279 --- changelogs/unreleased/config-expose-config-utils-schema.md | 4 ++++ src/box/lua/config/cluster_config.lua | 2 +- src/box/lua/config/instance_config.lua | 2 +- src/box/lua/config/source/env.lua | 2 +- src/box/lua/init.c | 2 +- test/config-luatest/schema_test.lua | 2 +- 6 files changed, 9 insertions(+), 5 deletions(-) create mode 100644 changelogs/unreleased/config-expose-config-utils-schema.md diff --git a/changelogs/unreleased/config-expose-config-utils-schema.md b/changelogs/unreleased/config-expose-config-utils-schema.md new file mode 100644 index 0000000000..68ef0ecbf6 --- /dev/null +++ b/changelogs/unreleased/config-expose-config-utils-schema.md @@ -0,0 +1,4 @@ +## feature/config + +* Expose the `experimental.config.utils.schema` built-in module to the public + API (gh-10117). diff --git a/src/box/lua/config/cluster_config.lua b/src/box/lua/config/cluster_config.lua index 5fa4397da5..3a9c6158c4 100644 --- a/src/box/lua/config/cluster_config.lua +++ b/src/box/lua/config/cluster_config.lua @@ -1,4 +1,4 @@ -local schema = require('internal.config.utils.schema') +local schema = require('experimental.config.utils.schema') local instance_config = require('internal.config.instance_config') local expression = require('internal.config.utils.expression') diff --git a/src/box/lua/config/instance_config.lua b/src/box/lua/config/instance_config.lua index c6517ea6d1..5d06ba27c3 100644 --- a/src/box/lua/config/instance_config.lua +++ b/src/box/lua/config/instance_config.lua @@ -1,4 +1,4 @@ -local schema = require('internal.config.utils.schema') +local schema = require('experimental.config.utils.schema') local tarantool = require('tarantool') local compat = require('compat') local uuid = require('uuid') diff --git a/src/box/lua/config/source/env.lua b/src/box/lua/config/source/env.lua index 457a505931..0b87f81428 100644 --- a/src/box/lua/config/source/env.lua +++ b/src/box/lua/config/source/env.lua @@ -1,6 +1,6 @@ local uri = require('uri') local fun = require('fun') -local schema = require('internal.config.utils.schema') +local schema = require('experimental.config.utils.schema') local tabulate = require('internal.config.utils.tabulate') local instance_config = require('internal.config.instance_config') diff --git a/src/box/lua/init.c b/src/box/lua/init.c index e60ec331f2..b8cbcc6884 100644 --- a/src/box/lua/init.c +++ b/src/box/lua/init.c @@ -362,7 +362,7 @@ static const char *lua_sources[] = { config_utils_aboard_lua, "config/utils/schema", - "internal.config.utils.schema", + "experimental.config.utils.schema", config_utils_schema_lua, "config/utils/tabulate", diff --git a/test/config-luatest/schema_test.lua b/test/config-luatest/schema_test.lua index 91de71e126..e21f51c20d 100644 --- a/test/config-luatest/schema_test.lua +++ b/test/config-luatest/schema_test.lua @@ -1,6 +1,6 @@ local ffi = require('ffi') local fun = require('fun') -local schema = require('internal.config.utils.schema') +local schema = require('experimental.config.utils.schema') local t = require('luatest') local g = t.group() -- GitLab