From 095654451bc9b45f5e9a812f5a4a3dd7aa28310d Mon Sep 17 00:00:00 2001
From: Vladimir Davydov <vdavydov@tarantool.org>
Date: Thu, 5 Oct 2023 11:05:38 +0300
Subject: [PATCH] config: add audit_spaces and audit_extract_key parameters

The new parameters will be implemented in Tarantool Enterprise Edition.
This commit just adds configuration stubs.

Needed for tarantool/tarantool-ee#502
Needed for tarantool/tarantool-ee#503

NO_DOC=stubs for enterprise edition
NO_CHANGELOG=stubs for enterprise edition
---
 src/box/lua/config/instance_config.lua             | 14 ++++++++++++++
 src/box/lua/load_cfg.lua                           |  4 ++++
 test/box/box.lua                                   |  2 ++
 test/config-luatest/cluster_config_schema_test.lua |  1 +
 test/config-luatest/config_test.lua                |  4 ++++
 .../config-luatest/instance_config_schema_test.lua |  5 ++++-
 6 files changed, 29 insertions(+), 1 deletion(-)

diff --git a/src/box/lua/config/instance_config.lua b/src/box/lua/config/instance_config.lua
index d27ab5e8e0..2820c1b03b 100644
--- a/src/box/lua/config/instance_config.lua
+++ b/src/box/lua/config/instance_config.lua
@@ -1834,6 +1834,20 @@ return schema.new('instance_config', schema.record({
             "data_operations",
             "compatibility",
         }),
+        spaces = enterprise_edition(schema.array({
+            items = schema.scalar({
+                type = 'string',
+            }),
+            box_cfg = 'audit_spaces',
+            box_cfg_nondynamic = true,
+            default = box.NULL,
+        })),
+        extract_key = enterprise_edition(schema.scalar({
+            type = 'boolean',
+            box_cfg = 'audit_extract_key',
+            box_cfg_nondynamic = true,
+            default = false,
+        })),
     })),
     roles_cfg = schema.map({
         key = schema.scalar({type = 'string'}),
diff --git a/src/box/lua/load_cfg.lua b/src/box/lua/load_cfg.lua
index d9d7bb5d45..801d3e1bda 100644
--- a/src/box/lua/load_cfg.lua
+++ b/src/box/lua/load_cfg.lua
@@ -116,6 +116,8 @@ local default_cfg = {
     audit_nonblock      = ifdef_audit(true),
     audit_format        = ifdef_audit('json'),
     audit_filter        = ifdef_audit('compatibility'),
+    audit_spaces        = ifdef_audit(nil),
+    audit_extract_key   = ifdef_audit(false),
 
     auth_type           = 'chap-sha1',
     auth_delay          = ifdef_security(0),
@@ -313,6 +315,8 @@ local template_cfg = {
     audit_nonblock      = ifdef_audit('boolean'),
     audit_format        = ifdef_audit('string'),
     audit_filter        = ifdef_audit('string'),
+    audit_spaces        = ifdef_audit('table'),
+    audit_extract_key   = ifdef_audit('boolean'),
 
     auth_type           = 'string',
     auth_delay          = ifdef_security('number'),
diff --git a/test/box/box.lua b/test/box/box.lua
index 272db0332a..25bf02d9b6 100644
--- a/test/box/box.lua
+++ b/test/box/box.lua
@@ -25,6 +25,8 @@ local _enterprise_keys = {
     audit_nonblock = true,
     audit_format = true,
     audit_filter = true,
+    audit_spaces = true,
+    audit_extract_key = true,
     flightrec_enabled = true,
     flightrec_logs_size = true,
     flightrec_logs_max_msg_size = true,
diff --git a/test/config-luatest/cluster_config_schema_test.lua b/test/config-luatest/cluster_config_schema_test.lua
index 391bbd1cca..a04ae14342 100644
--- a/test/config-luatest/cluster_config_schema_test.lua
+++ b/test/config-luatest/cluster_config_schema_test.lua
@@ -284,6 +284,7 @@ g.test_defaults = function()
                 server = box.NULL
             },
             to = "devnull",
+            extract_key = false,
         } or nil,
         failover = {
             probe_interval = 10,
diff --git a/test/config-luatest/config_test.lua b/test/config-luatest/config_test.lua
index 22312ca25d..edf60439bc 100644
--- a/test/config-luatest/config_test.lua
+++ b/test/config-luatest/config_test.lua
@@ -805,6 +805,8 @@ g.test_audit_options = function()
         t.assert_equals(box.cfg.audit_nonblock, true)
         t.assert_equals(box.cfg.audit_format, 'csv')
         t.assert_equals(box.cfg.audit_filter, table.concat(events, ","))
+        t.assert_equals(box.cfg.audit_spaces, {'space1', 'space2', 'space3'})
+        t.assert_equals(box.cfg.audit_extract_key, true)
     end
 
     helpers.success_case(g, {
@@ -814,6 +816,8 @@ g.test_audit_options = function()
             ['audit_log.nonblock'] = true,
             ['audit_log.format'] = 'csv',
             ['audit_log.filter'] = events,
+            ['audit_log.spaces'] = {'space1', 'space2', 'space3'},
+            ['audit_log.extract_key'] = true,
         },
         verify = verify,
         verify_args = {events}
diff --git a/test/config-luatest/instance_config_schema_test.lua b/test/config-luatest/instance_config_schema_test.lua
index e25da955db..eb54f42627 100644
--- a/test/config-luatest/instance_config_schema_test.lua
+++ b/test/config-luatest/instance_config_schema_test.lua
@@ -1345,7 +1345,9 @@ g.test_audit_available = function()
             },
             nonblock = true,
             format = 'plain',
-            filter = {'all', 'none'}
+            filter = {'all', 'none'},
+            spaces = {'space1', 'space2', 'space3'},
+            extract_key = true,
         },
     }
     instance_config:validate(iconfig)
@@ -1362,6 +1364,7 @@ g.test_audit_available = function()
             server = box.NULL
         },
         to = "devnull",
+        extract_key = false,
     }
     local res = instance_config:apply_default({}).audit_log
     t.assert_equals(res, exp)
-- 
GitLab