From dab158e27a552c8117782af3cee863c659cf7380 Mon Sep 17 00:00:00 2001 From: Niyaz Date: Tue, 7 May 2024 18:01:24 +0300 Subject: [PATCH 1/9] refactor core: get rid of DefaultSecdistProvider component --- .../basic_chaos/clickhouse_service.cpp | 2 - .../functional_tests/metrics/service.cpp | 4 +- .../functional_tests/cache_update/service.cpp | 2 - core/functional_tests/https/service.cpp | 2 - core/functional_tests/metrics/service.cpp | 2 - core/functional_tests/uctl/service.cpp | 2 - .../userver/storages/secdist/component.hpp | 14 +--- .../storages/secdist/component_base.hpp | 61 ++++++++++++++ .../storages/secdist/default_provider.hpp | 35 ++++++++ .../userver/storages/secdist/secdist.hpp | 2 +- .../auth/digest/standalone_checker_test.cpp | 15 ++-- core/src/storages/secdist/component.cpp | 76 +++++++++++------ core/src/storages/secdist/component_base.cpp | 39 +++++++++ ...der_component.cpp => default_provider.cpp} | 81 +------------------ core/src/storages/secdist/secdist_test.cpp | 62 ++++++++------ .../kafka_service.cpp | 2 - .../integrational_tests/kafka_service.cpp | 2 - .../storages/mongo/multimongo_mongotest.cpp | 11 +-- .../basic_chaos/mysql_service.cpp | 2 - .../basic_chaos/rabbitmq_service.cpp | 2 - .../metrics/rabbitmq_service.cpp | 2 - .../basic_chaos/redis_service.cpp | 2 - .../cluster_auto_topology/redis_service.cpp | 2 - .../redis_service.cpp | 2 - .../integration_tests/redis_service.cpp | 2 - .../metrics/redis_service.cpp | 2 - .../functional_tests/pubsub/redis_service.cpp | 2 - .../clickhouse_service/clickhouse_service.cpp | 4 +- samples/clickhouse_service/static_config.yaml | 2 - .../digest_auth_service.cpp | 2 - .../digest_auth_service/static_config.yaml | 3 +- samples/https_service/hello_service.cpp | 2 - samples/https_service/static_config.yaml | 3 - samples/mysql_service/mysql_service.cpp | 2 - samples/mysql_service/static_config.yaml | 2 - .../production_service/production_service.cpp | 2 - samples/production_service/static_config.yaml | 2 - samples/rabbitmq_service/rabbitmq_service.cpp | 2 - samples/rabbitmq_service/static_config.yaml | 2 - samples/redis_service/redis_service.cpp | 2 - samples/redis_service/static_config.yaml | 2 - 41 files changed, 248 insertions(+), 216 deletions(-) create mode 100644 core/include/userver/storages/secdist/component_base.hpp create mode 100644 core/include/userver/storages/secdist/default_provider.hpp create mode 100644 core/src/storages/secdist/component_base.cpp rename core/src/storages/secdist/{provider_component.cpp => default_provider.cpp} (61%) diff --git a/clickhouse/functional_tests/basic_chaos/clickhouse_service.cpp b/clickhouse/functional_tests/basic_chaos/clickhouse_service.cpp index 208025bc35d0..db8580fde961 100644 --- a/clickhouse/functional_tests/basic_chaos/clickhouse_service.cpp +++ b/clickhouse/functional_tests/basic_chaos/clickhouse_service.cpp @@ -11,7 +11,6 @@ #include #include #include -#include #include #include @@ -214,7 +213,6 @@ int main(int argc, char* argv[]) { .Append() .Append() .Append() - .Append() .Append() .Append("clickhouse-database"); diff --git a/clickhouse/functional_tests/metrics/service.cpp b/clickhouse/functional_tests/metrics/service.cpp index 09890efbaca3..95ed272ca1d2 100644 --- a/clickhouse/functional_tests/metrics/service.cpp +++ b/clickhouse/functional_tests/metrics/service.cpp @@ -15,7 +15,6 @@ #include #include -#include #include #include "userver/clients/http/component.hpp" @@ -116,8 +115,7 @@ int main(int argc, char* argv[]) { .Append() .Append() .Append() - .Append() - .Append(); + .Append(); return utils::DaemonMain(argc, argv, components_list); } diff --git a/core/functional_tests/cache_update/service.cpp b/core/functional_tests/cache_update/service.cpp index ef8ba6e9e8e0..2a6af50ab042 100644 --- a/core/functional_tests/cache_update/service.cpp +++ b/core/functional_tests/cache_update/service.cpp @@ -10,8 +10,6 @@ #include #include #include -#include -#include #include #include diff --git a/core/functional_tests/https/service.cpp b/core/functional_tests/https/service.cpp index 64a7e842782a..c27e24da4c77 100644 --- a/core/functional_tests/https/service.cpp +++ b/core/functional_tests/https/service.cpp @@ -1,6 +1,5 @@ #include #include -#include #include #include @@ -20,7 +19,6 @@ int main(int argc, char* argv[]) { const auto component_list = components::MinimalServerComponentList() .Append() - .Append() .Append() .Append() .Append() diff --git a/core/functional_tests/metrics/service.cpp b/core/functional_tests/metrics/service.cpp index ae214f4c0a50..66a5a6057ae6 100644 --- a/core/functional_tests/metrics/service.cpp +++ b/core/functional_tests/metrics/service.cpp @@ -8,7 +8,6 @@ #include #include #include -#include #include #include @@ -62,7 +61,6 @@ int main(int argc, const char* const argv[]) { .AppendComponentList(components::CommonComponentList()) .AppendComponentList(components::CommonServerComponentList()) .Append() - .Append() .Append() .Append() .Append(); diff --git a/core/functional_tests/uctl/service.cpp b/core/functional_tests/uctl/service.cpp index 6b90d8067eb5..b059a2092e24 100644 --- a/core/functional_tests/uctl/service.cpp +++ b/core/functional_tests/uctl/service.cpp @@ -8,7 +8,6 @@ #include #include #include -#include #include #include @@ -18,7 +17,6 @@ int main(int argc, const char* const argv[]) { .AppendComponentList(components::CommonComponentList()) .AppendComponentList(components::CommonServerComponentList()) .Append() - .Append() .Append(); return utils::DaemonMain(argc, argv, component_list); } diff --git a/core/include/userver/storages/secdist/component.hpp b/core/include/userver/storages/secdist/component.hpp index cbf37641202d..5026612fca52 100644 --- a/core/include/userver/storages/secdist/component.hpp +++ b/core/include/userver/storages/secdist/component.hpp @@ -5,8 +5,7 @@ #include -#include -#include +#include USERVER_NAMESPACE_BEGIN @@ -39,7 +38,7 @@ namespace components { // clang-format on -class Secdist final : public ComponentBase { +class Secdist final : public SecdistComponentBase { public: /// @ingroup userver_component_names /// @brief The default name of components::Secdist @@ -47,16 +46,7 @@ class Secdist final : public ComponentBase { Secdist(const ComponentConfig&, const ComponentContext&); - const storages::secdist::SecdistConfig& Get() const; - - rcu::ReadablePtr GetSnapshot() const; - - storages::secdist::Secdist& GetStorage(); - static yaml_config::Schema GetStaticConfigSchema(); - - private: - storages::secdist::Secdist secdist_; }; template <> diff --git a/core/include/userver/storages/secdist/component_base.hpp b/core/include/userver/storages/secdist/component_base.hpp new file mode 100644 index 000000000000..1db423e5e377 --- /dev/null +++ b/core/include/userver/storages/secdist/component_base.hpp @@ -0,0 +1,61 @@ +#pragma once + +/// @file userver/storages/secdist/component_base.hpp +/// @brief @copybrief components::SecdistComponentBase + +#include + +#include +#include + +USERVER_NAMESPACE_BEGIN + +namespace components { +// clang-format off + +/// @ingroup userver_components +/// +/// @brief Component that stores security related data (keys, passwords, ...). +/// +/// The component must be configured in service config. +/// +/// Secdist requires a provider storages::secdist::SecdistProvider +/// You can implement your own or use components::DefaultSecdistProvider +/// +/// ## Static configuration example: +/// +/// @snippet samples/redis_service/static_config.yaml Sample secdist static config +/// +/// ## Static options: +/// Name | Description | Default value +/// ---- | ----------- | ------------- +/// provider | optional secdist provider component name | 'default-secdist-provider' +/// config | path to the config file with data | '' +/// format | config format, either `json` or `yaml` | 'json' +/// missing-ok | do not terminate components load if no file found by the config option | false +/// environment-secrets-key | name of environment variable from which to load additional data | - +/// update-period | period between data updates in utils::StringToDuration() suitable format ('0s' for no updates) | 0s +/// blocking-task-processor | name of task processor for background blocking operations | -- + +// clang-format on + +class SecdistComponentBase : public LoggableComponentBase { + public: + SecdistComponentBase(const ComponentConfig&, const ComponentContext&, + storages::secdist::SecdistConfig::Settings&&); + + const storages::secdist::SecdistConfig& Get() const; + + rcu::ReadablePtr GetSnapshot() const; + + storages::secdist::Secdist& GetStorage(); + + static yaml_config::Schema GetStaticConfigSchema(); + + private: + storages::secdist::Secdist secdist_; +}; + +} // namespace components + +USERVER_NAMESPACE_END diff --git a/core/include/userver/storages/secdist/default_provider.hpp b/core/include/userver/storages/secdist/default_provider.hpp new file mode 100644 index 000000000000..963f129c9ecb --- /dev/null +++ b/core/include/userver/storages/secdist/default_provider.hpp @@ -0,0 +1,35 @@ +#pragma once + +/// @file userver/storages/secdist/component.hpp +/// @brief @copybrief components::DefaultSecdistProvider + +#include + +#include +#include + +USERVER_NAMESPACE_BEGIN + +namespace storages::secdist { + +class DefaultProvider final : public storages::secdist::SecdistProvider { + public: + struct Settings { + std::string config_path; + SecdistFormat format{SecdistFormat::kJson}; + bool missing_ok{false}; + std::optional environment_secrets_key; + engine::TaskProcessor* blocking_task_processor{nullptr}; + }; + + explicit DefaultProvider(Settings settings); + + formats::json::Value Get() const override; + + private: + Settings settings_; +}; + +} // namespace storages::secdist + +USERVER_NAMESPACE_END diff --git a/core/include/userver/storages/secdist/secdist.hpp b/core/include/userver/storages/secdist/secdist.hpp index 7cfaa7be7407..c387b42a5fe2 100644 --- a/core/include/userver/storages/secdist/secdist.hpp +++ b/core/include/userver/storages/secdist/secdist.hpp @@ -78,7 +78,7 @@ enum class SecdistFormat { class SecdistConfig final { public: struct Settings { - SecdistProvider* provider{nullptr}; + std::unique_ptr provider{nullptr}; std::chrono::milliseconds update_period{std::chrono::milliseconds::zero()}; }; diff --git a/core/src/server/handlers/auth/digest/standalone_checker_test.cpp b/core/src/server/handlers/auth/digest/standalone_checker_test.cpp index 46193854e9e6..942f614e4a86 100644 --- a/core/src/server/handlers/auth/digest/standalone_checker_test.cpp +++ b/core/src/server/handlers/auth/digest/standalone_checker_test.cpp @@ -10,7 +10,7 @@ #include #include #include -#include +#include #include #include @@ -60,10 +60,14 @@ class StandAloneCheckerTest : public ::testing::Test { }; StandAloneCheckerTest() - : default_loader({temp_file_provier.GetFilePath(), - storages::secdist::SecdistFormat::kJson, true, - std::nullopt}), - secdist_config({&default_loader, std::chrono::milliseconds::zero()}), + : secdist_config({ + std::make_unique( + storages::secdist::DefaultProvider::Settings{ + temp_file_provier.GetFilePath(), + storages::secdist::SecdistFormat::kJson, + true, + std::nullopt}), + std::chrono::milliseconds::zero()}), digest_settings_({ "MD5", // algorithm std::vector{"/"}, // domains @@ -90,7 +94,6 @@ class StandAloneCheckerTest : public ::testing::Test { } TempFileProvider temp_file_provier; - storages::secdist::DefaultLoader default_loader; storages::secdist::SecdistConfig secdist_config; AuthCheckerSettings digest_settings_; diff --git a/core/src/storages/secdist/component.cpp b/core/src/storages/secdist/component.cpp index 9836c1b04916..e55b302755e4 100644 --- a/core/src/storages/secdist/component.cpp +++ b/core/src/storages/secdist/component.cpp @@ -3,60 +3,86 @@ #include #include #include -#include +#include #include #include USERVER_NAMESPACE_BEGIN namespace components { - namespace { +storages::secdist::SecdistFormat FormatFromString(std::string_view str) { + if (str.empty() || str == "json") { + return storages::secdist::SecdistFormat::kJson; + } else if (str == "yaml") { + return storages::secdist::SecdistFormat::kYaml; + } + + UINVARIANT( + false, + fmt::format("Unknown secdist format '{}' (must be one of 'json', 'yaml')", + str)); +} + storages::secdist::SecdistConfig::Settings ParseSettings( const ComponentConfig& config, const ComponentContext& context) { - storages::secdist::SecdistConfig::Settings settings; + using Provider = storages::secdist::DefaultProvider; + Provider::Settings provider_settings; + provider_settings.config_path = config["config"].As({}); + provider_settings.format = FormatFromString(config["format"].As({})); + provider_settings.missing_ok = config["missing-ok"].As(false); + provider_settings.environment_secrets_key = + config["environment-secrets-key"].As>(); + auto blocking_task_processor_name = + config["blocking-task-processor"].As>(); + provider_settings.blocking_task_processor = + blocking_task_processor_name + ? &context.GetTaskProcessor(*blocking_task_processor_name) + : nullptr; - const auto provider_name = - config["provider"].As("default-secdist-provider"); - settings.provider = - &context.FindComponent(provider_name); + storages::secdist::SecdistConfig::Settings settings; + settings.provider = std::make_unique(std::move(provider_settings)); settings.update_period = utils::StringToDuration(config["update-period"].As("0s")); + return settings; } } // namespace -Secdist::Secdist(const ComponentConfig& config, const ComponentContext& context) - : ComponentBase(config, context), - secdist_(ParseSettings(config, context)) {} - -const storages::secdist::SecdistConfig& Secdist::Get() const { - return secdist_.Get(); -} - -rcu::ReadablePtr Secdist::GetSnapshot() - const { - return secdist_.GetSnapshot(); -} - -storages::secdist::Secdist& Secdist::GetStorage() { return secdist_; } +Secdist::Secdist(const ComponentConfig& config, + const ComponentContext& context) + : SecdistComponentBase(config, context, ParseSettings(config, context)) {} yaml_config::Schema Secdist::GetStaticConfigSchema() { - return yaml_config::MergeSchemas(R"( + return yaml_config::MergeSchemas(R"( type: object description: Component that stores security related data (keys, passwords, ...). additionalProperties: false properties: + config: + type: string + description: path to the config file with data + defaultDescription: '' + format: + type: string + description: secdist format + defaultDescription: 'json' + missing-ok: + type: boolean + description: do not terminate components load if no file found by the config option + defaultDescription: false + environment-secrets-key: + type: string + description: name of environment variable from which to load additional data update-period: type: string description: period between data updates in utils::StringToDuration() suitable format ('0s' for no updates) defaultDescription: 0s - provider: + blocking-task-processor: type: string - description: optional secdist provider component name - defaultDescription: default-secdist-provider + description: name of task processor for background blocking operations )"); } diff --git a/core/src/storages/secdist/component_base.cpp b/core/src/storages/secdist/component_base.cpp new file mode 100644 index 000000000000..849b213d9e2a --- /dev/null +++ b/core/src/storages/secdist/component_base.cpp @@ -0,0 +1,39 @@ +#include + +#include +#include +#include +#include +#include +#include + +USERVER_NAMESPACE_BEGIN + +namespace components { + +SecdistComponentBase::SecdistComponentBase(const ComponentConfig& config, const ComponentContext& context, + storages::secdist::SecdistConfig::Settings&& settings) + : LoggableComponentBase(config, context), + secdist_(std::move(settings)) {} + +const storages::secdist::SecdistConfig& SecdistComponentBase::Get() const { + return secdist_.Get(); +} + +rcu::ReadablePtr SecdistComponentBase::GetSnapshot() + const { + return secdist_.GetSnapshot(); +} + +storages::secdist::Secdist& SecdistComponentBase::GetStorage() { return secdist_; } + +yaml_config::Schema SecdistComponentBase::GetStaticConfigSchema() { + auto schema = LoggableComponentBase::GetStaticConfigSchema(); + schema.UpdateDescription( + "Base class for user defined secdists and DefaultSecdist"); + return schema; +} + +} // namespace components + +USERVER_NAMESPACE_END diff --git a/core/src/storages/secdist/provider_component.cpp b/core/src/storages/secdist/default_provider.cpp similarity index 61% rename from core/src/storages/secdist/provider_component.cpp rename to core/src/storages/secdist/default_provider.cpp index d7f51c93bbf9..ba3b6a6dad8d 100644 --- a/core/src/storages/secdist/provider_component.cpp +++ b/core/src/storages/secdist/default_provider.cpp @@ -8,7 +8,7 @@ #include #include #include -#include +#include #include #include @@ -124,9 +124,9 @@ void UpdateFromEnv(formats::json::Value& doc, } // namespace -DefaultLoader::DefaultLoader(Settings settings) : settings_{settings} {} +DefaultProvider::DefaultProvider(Settings settings) : settings_{settings} {} -formats::json::Value DefaultLoader::Get() const { +formats::json::Value DefaultProvider::Get() const { auto doc = LoadFromFile(settings_.config_path, settings_.format, settings_.missing_ok, settings_.blocking_task_processor); @@ -136,79 +136,4 @@ formats::json::Value DefaultLoader::Get() const { } // namespace storages::secdist -namespace components { - -namespace { - -storages::secdist::SecdistFormat FormatFromString(std::string_view str) { - if (str.empty() || str == "json") { - return storages::secdist::SecdistFormat::kJson; - } else if (str == "yaml") { - return storages::secdist::SecdistFormat::kYaml; - } - - UINVARIANT( - false, - fmt::format("Unknown secdist format '{}' (must be one of 'json', 'yaml')", - str)); -} - -storages::secdist::DefaultLoader::Settings ParseSettings( - const components::ComponentConfig& config, - const components::ComponentContext& context) { - storages::secdist::DefaultLoader::Settings settings; - auto blocking_task_processor_name = - config["blocking-task-processor"].As>(); - settings.blocking_task_processor = - blocking_task_processor_name - ? &context.GetTaskProcessor(*blocking_task_processor_name) - : nullptr; - settings.config_path = config["config"].As({}); - settings.format = FormatFromString(config["format"].As({})); - settings.missing_ok = config["missing-ok"].As(false); - settings.environment_secrets_key = - config["environment-secrets-key"].As>(); - - return settings; -} - -} // namespace - -DefaultSecdistProvider::DefaultSecdistProvider(const ComponentConfig& config, - const ComponentContext& context) - : ComponentBase{config, context}, loader_{ParseSettings(config, context)} {} - -formats::json::Value DefaultSecdistProvider::Get() const { - return loader_.Get(); -} - -yaml_config::Schema DefaultSecdistProvider::GetStaticConfigSchema() { - return yaml_config::MergeSchemas(R"( -type: object -description: Component that stores security related data (keys, passwords, ...). -additionalProperties: false -properties: - config: - type: string - description: path to the config file with data - defaultDescription: '' - format: - type: string - description: secdist format - defaultDescription: 'json' - missing-ok: - type: boolean - description: do not terminate components load if no file found by the config option - defaultDescription: false - environment-secrets-key: - type: string - description: name of environment variable from which to load additional data - blocking-task-processor: - type: string - description: name of task processor for background blocking operations -)"); -} - -} // namespace components - USERVER_NAMESPACE_END diff --git a/core/src/storages/secdist/secdist_test.cpp b/core/src/storages/secdist/secdist_test.cpp index 2a3e0ed4202d..90515e1e7c82 100644 --- a/core/src/storages/secdist/secdist_test.cpp +++ b/core/src/storages/secdist/secdist_test.cpp @@ -13,7 +13,7 @@ #include /// [UserPasswords] -#include +#include #include #include @@ -73,10 +73,12 @@ TEST(SecdistConfig, Sample) { auto temp_file = fs::blocking::TempFile::Create(); fs::blocking::RewriteFileContents(temp_file.GetPath(), kSecdistJson); - storages::secdist::DefaultLoader provider{ - {temp_file.GetPath(), storages::secdist::SecdistFormat::kJson, false, - std::nullopt}}; - storages::secdist::SecdistConfig secdist_config{{&provider}}; + storages::secdist::DefaultProvider::Settings provider_settings{ + temp_file.GetPath(), storages::secdist::SecdistFormat::kJson, false, + std::nullopt}; + storages::secdist::SecdistConfig secdist_config{ + {std::make_unique( + std::move(provider_settings))}}; /// [Secdist Usage Sample - SecdistConfig] const auto& user_passwords = secdist_config.Get(); @@ -90,11 +92,14 @@ TEST(SecdistYamlConfig, Sample) { auto temp_file = fs::blocking::TempFile::Create(); fs::blocking::RewriteFileContents(temp_file.GetPath(), kSecdistYaml); - storages::secdist::DefaultLoader provider{ - {temp_file.GetPath(), storages::secdist::SecdistFormat::kYaml, false, - std::nullopt}}; - storages::secdist::SecdistConfig secdist_config{{&provider}}; + storages::secdist::DefaultProvider::Settings provider_settings{ + temp_file.GetPath(), storages::secdist::SecdistFormat::kYaml, false, + std::nullopt}; + storages::secdist::SecdistConfig secdist_config{ + {std::make_unique( + std::move(provider_settings))}}; + /// [Secdist Usage Sample - SecdistConfig] const auto& user_passwords = secdist_config.Get(); const auto password = UserPasswords::Password{"drowssap"}; @@ -102,6 +107,7 @@ TEST(SecdistYamlConfig, Sample) { EXPECT_TRUE(user_passwords.IsMatching("username", password)); EXPECT_FALSE(user_passwords.IsMatching("username2", password)); EXPECT_TRUE(user_passwords.IsMatching("another username", another_password)); + /// [Secdist Usage Sample - SecdistConfig] } UTEST(SecdistConfig, EnvironmentVariable) { @@ -111,9 +117,11 @@ UTEST(SecdistConfig, EnvironmentVariable) { ASSERT_EQ(setenv(kVarName.c_str(), kSecdistJson.c_str(), 1), 0); engine::subprocess::UpdateCurrentEnvironmentVariables(); - storages::secdist::DefaultLoader provider{ - {"", storages::secdist::SecdistFormat::kJson, false, kVarName}}; - storages::secdist::SecdistConfig secdist_config{{&provider}}; + storages::secdist::DefaultProvider::Settings provider_settings{ + "", storages::secdist::SecdistFormat::kJson, false, kVarName}; + storages::secdist::SecdistConfig secdist_config{ + {std::make_unique( + std::move(provider_settings))}}; const auto& user_passwords = secdist_config.Get(); @@ -154,10 +162,12 @@ UTEST(SecdistConfig, FileAndEnvironmentVariable) { ASSERT_EQ(setenv(kVarName.c_str(), kSecdistEnvVarJson.c_str(), 1), 0); engine::subprocess::UpdateCurrentEnvironmentVariables(); - storages::secdist::DefaultLoader provider{ - {temp_file.GetPath(), storages::secdist::SecdistFormat::kJson, false, - kVarName}}; - storages::secdist::SecdistConfig secdist_config{{&provider}}; + storages::secdist::DefaultProvider::Settings provider_settings{ + temp_file.GetPath(), storages::secdist::SecdistFormat::kJson, false, + kVarName}; + storages::secdist::SecdistConfig secdist_config{ + {std::make_unique( + std::move(provider_settings))}}; const auto& user_passwords = secdist_config.Get(); @@ -178,10 +188,12 @@ UTEST(Secdist, WithoutUpdates) { auto temp_file = fs::blocking::TempFile::Create(); fs::blocking::RewriteFileContents(temp_file.GetPath(), kSecdistJson); - storages::secdist::DefaultLoader provider{ - {temp_file.GetPath(), storages::secdist::SecdistFormat::kJson, false, - std::nullopt}}; - storages::secdist::Secdist secdist{{&provider}}; + storages::secdist::DefaultProvider::Settings provider_settings{ + temp_file.GetPath(), storages::secdist::SecdistFormat::kJson, false, + std::nullopt}; + storages::secdist::Secdist secdist{ + {std::make_unique( + std::move(provider_settings))}}; const auto& secdist_config = secdist.Get(); @@ -235,11 +247,13 @@ UTEST(Secdist, DynamicUpdate) { auto temp_file = fs::blocking::TempFile::Create(); fs::blocking::RewriteFileContents(temp_file.GetPath(), kSecdistInitJson); - storages::secdist::DefaultLoader provider{ - {temp_file.GetPath(), storages::secdist::SecdistFormat::kJson, false, - std::nullopt, &engine::current_task::GetTaskProcessor()}}; + storages::secdist::DefaultProvider::Settings provider_settings{ + temp_file.GetPath(), storages::secdist::SecdistFormat::kJson, false, + std::nullopt, &engine::current_task::GetTaskProcessor()}; storages::secdist::Secdist secdist{ - {&provider, std::chrono::milliseconds(100)}}; + {std::make_unique( + std::move(provider_settings)), + std::chrono::milliseconds(100)}}; auto subscriber = secdist.UpdateAndListen( &storage, "test/update_secdist", &SecdistConfigStorage::OnSecdistUpdate); diff --git a/kafka/functional_tests/balanced_consumer_groups/kafka_service.cpp b/kafka/functional_tests/balanced_consumer_groups/kafka_service.cpp index b745181b935d..9a5b69ea1d65 100644 --- a/kafka/functional_tests/balanced_consumer_groups/kafka_service.cpp +++ b/kafka/functional_tests/balanced_consumer_groups/kafka_service.cpp @@ -20,7 +20,6 @@ #include #include -#include #include @@ -257,7 +256,6 @@ int main(int argc, char* argv[]) { .Append("kafka-consumer-second") .Append() .Append() - .Append() .Append() .Append() .Append() diff --git a/kafka/functional_tests/integrational_tests/kafka_service.cpp b/kafka/functional_tests/integrational_tests/kafka_service.cpp index dd293652f822..514b84b27d80 100644 --- a/kafka/functional_tests/integrational_tests/kafka_service.cpp +++ b/kafka/functional_tests/integrational_tests/kafka_service.cpp @@ -21,7 +21,6 @@ #include #include -#include #include #include @@ -429,7 +428,6 @@ int main(int argc, char* argv[]) { .Append("kafka-producer-second") .Append() .Append() - .Append() .Append() .Append() .Append() diff --git a/mongo/src/storages/mongo/multimongo_mongotest.cpp b/mongo/src/storages/mongo/multimongo_mongotest.cpp index 7d0078b308b1..e8613892134b 100644 --- a/mongo/src/storages/mongo/multimongo_mongotest.cpp +++ b/mongo/src/storages/mongo/multimongo_mongotest.cpp @@ -18,8 +18,8 @@ #include #include #include -#include #include +#include USERVER_NAMESPACE_BEGIN @@ -70,11 +70,12 @@ UTEST(MultiMongo, DynamicSecdistUpdate) { auto temp_file = fs::blocking::TempFile::Create(); fs::blocking::RewriteFileContents(temp_file.GetPath(), kSecdistInitJson); - storages::secdist::DefaultLoader provider{ - {temp_file.GetPath(), storages::secdist::SecdistFormat::kJson, false, - std::nullopt, &engine::current_task::GetTaskProcessor()}}; + storages::secdist::DefaultProvider::Settings provider_settings{ + temp_file.GetPath(), storages::secdist::SecdistFormat::kJson, false, + std::nullopt, &engine::current_task::GetTaskProcessor()}; storages::secdist::Secdist secdist{ - {&provider, std::chrono::milliseconds(100)}}; + {std::make_unique( + std::move(provider_settings)), std::chrono::milliseconds(100)}}; auto subscriber = secdist.UpdateAndListen(&storage, "test/multimongo_update_secdist", &SecdistConfigStorage::OnSecdistUpdate); diff --git a/mysql/functional_tests/basic_chaos/mysql_service.cpp b/mysql/functional_tests/basic_chaos/mysql_service.cpp index d3950db62d0d..e76117f67b41 100644 --- a/mysql/functional_tests/basic_chaos/mysql_service.cpp +++ b/mysql/functional_tests/basic_chaos/mysql_service.cpp @@ -6,7 +6,6 @@ #include #include #include -#include #include namespace chaos { @@ -99,7 +98,6 @@ int main(int argc, char* argv[]) { components::MinimalServerComponentList() .Append() .Append() - .Append() .Append() .Append("key-value-db"); diff --git a/rabbitmq/functional_tests/basic_chaos/rabbitmq_service.cpp b/rabbitmq/functional_tests/basic_chaos/rabbitmq_service.cpp index f42390c908a8..a4194ae04905 100644 --- a/rabbitmq/functional_tests/basic_chaos/rabbitmq_service.cpp +++ b/rabbitmq/functional_tests/basic_chaos/rabbitmq_service.cpp @@ -11,7 +11,6 @@ #include #include #include -#include #include #include #include @@ -235,7 +234,6 @@ int main(int argc, char* argv[]) { // .Append() .Append() - .Append() // .Append() .Append() diff --git a/rabbitmq/functional_tests/metrics/rabbitmq_service.cpp b/rabbitmq/functional_tests/metrics/rabbitmq_service.cpp index c396c964701e..1a39241a27b5 100644 --- a/rabbitmq/functional_tests/metrics/rabbitmq_service.cpp +++ b/rabbitmq/functional_tests/metrics/rabbitmq_service.cpp @@ -13,7 +13,6 @@ #include #include #include -#include #include #include #include @@ -147,7 +146,6 @@ int main(int argc, char* argv[]) { .Append() .Append() .Append() - .Append() .Append() .Append() .Append() diff --git a/redis/functional_tests/basic_chaos/redis_service.cpp b/redis/functional_tests/basic_chaos/redis_service.cpp index c4c42f865f94..64dc3a85ae6e 100644 --- a/redis/functional_tests/basic_chaos/redis_service.cpp +++ b/redis/functional_tests/basic_chaos/redis_service.cpp @@ -17,7 +17,6 @@ #include #include #include -#include #include #include #include @@ -131,7 +130,6 @@ int main(int argc, char* argv[]) { components::MinimalServerComponentList() .Append() .Append() - .Append() .Append("key-value-database") .Append() .Append() diff --git a/redis/functional_tests/cluster_auto_topology/redis_service.cpp b/redis/functional_tests/cluster_auto_topology/redis_service.cpp index cdf6a4e9847b..6a4fc02314df 100644 --- a/redis/functional_tests/cluster_auto_topology/redis_service.cpp +++ b/redis/functional_tests/cluster_auto_topology/redis_service.cpp @@ -18,7 +18,6 @@ #include #include #include -#include #include #include #include "userver/storages/redis/exception.hpp" @@ -139,7 +138,6 @@ int main(int argc, char* argv[]) { .Append("handler-cluster") .Append() .Append() - .Append() .Append("key-value-database") .Append() .Append() diff --git a/redis/functional_tests/cluster_auto_topology_pubsub/redis_service.cpp b/redis/functional_tests/cluster_auto_topology_pubsub/redis_service.cpp index d5acff0897de..26583f27cd95 100644 --- a/redis/functional_tests/cluster_auto_topology_pubsub/redis_service.cpp +++ b/redis/functional_tests/cluster_auto_topology_pubsub/redis_service.cpp @@ -25,7 +25,6 @@ #include #include #include -#include #include #include #include @@ -212,7 +211,6 @@ int main(int argc, char* argv[]) { .Append("handler-cluster") .Append() .Append() - .Append() .Append("key-value-database") .Append() .Append() diff --git a/redis/functional_tests/integration_tests/redis_service.cpp b/redis/functional_tests/integration_tests/redis_service.cpp index 1cc56cd4565b..ac0217595569 100644 --- a/redis/functional_tests/integration_tests/redis_service.cpp +++ b/redis/functional_tests/integration_tests/redis_service.cpp @@ -15,7 +15,6 @@ #include #include #include -#include #include #include @@ -124,7 +123,6 @@ int main(int argc, char* argv[]) { .Append("handler-sentinel") .Append() .Append() - .Append() .Append("key-value-database") .Append() .Append() diff --git a/redis/functional_tests/metrics/redis_service.cpp b/redis/functional_tests/metrics/redis_service.cpp index f68973718aa4..34edc2c41848 100644 --- a/redis/functional_tests/metrics/redis_service.cpp +++ b/redis/functional_tests/metrics/redis_service.cpp @@ -18,7 +18,6 @@ #include #include #include -#include #include namespace chaos { @@ -133,7 +132,6 @@ int main(int argc, char* argv[]) { .Append() .Append() .Append() - .Append() .Append("key-value-database") .Append() .Append() diff --git a/redis/functional_tests/pubsub/redis_service.cpp b/redis/functional_tests/pubsub/redis_service.cpp index 25e3297b92c9..611a232692bc 100644 --- a/redis/functional_tests/pubsub/redis_service.cpp +++ b/redis/functional_tests/pubsub/redis_service.cpp @@ -20,7 +20,6 @@ #include #include #include -#include #include #include @@ -132,7 +131,6 @@ int main(int argc, char* argv[]) { .Append("handler-sentinel-with-master") .Append() .Append() - .Append() .Append("key-value-database") .Append() .Append() diff --git a/samples/clickhouse_service/clickhouse_service.cpp b/samples/clickhouse_service/clickhouse_service.cpp index f432236aee54..e7aad7a721f5 100644 --- a/samples/clickhouse_service/clickhouse_service.cpp +++ b/samples/clickhouse_service/clickhouse_service.cpp @@ -15,7 +15,6 @@ #include #include -#include #include @@ -73,8 +72,7 @@ int main(int argc, char* argv[]) { .Append() .Append("clickhouse-database") .Append() - .Append() - .Append(); + .Append(); return utils::DaemonMain(argc, argv, components_list); } diff --git a/samples/clickhouse_service/static_config.yaml b/samples/clickhouse_service/static_config.yaml index 6ec270328fd4..f8ec28a1d30f 100644 --- a/samples/clickhouse_service/static_config.yaml +++ b/samples/clickhouse_service/static_config.yaml @@ -16,8 +16,6 @@ components_manager: # /// [Clickhouse service sample - static config] secdist: # Component that stores configuration of hosts and passwords - provider: default-secdist-provider - default-secdist-provider: # Component that loads configuration of hosts and passwords config: /etc/clickhouse_service/secure_data.json # Values are supposed to be stored in this file missing-ok: true # ... but if the file is missing it is still ok environment-secrets-key: SECDIST_CONFIG # ... values will be loaded from this environment value diff --git a/samples/digest_auth_service/digest_auth_service.cpp b/samples/digest_auth_service/digest_auth_service.cpp index 4ac61d895c5e..c99a0b35fc7f 100644 --- a/samples/digest_auth_service/digest_auth_service.cpp +++ b/samples/digest_auth_service/digest_auth_service.cpp @@ -10,7 +10,6 @@ #include #include #include -#include #include #include @@ -53,7 +52,6 @@ int main(int argc, const char* const argv[]) { .Append() .Append() .Append() - .Append() .Append( "auth-digest-checker-settings-proxy") .Append< diff --git a/samples/digest_auth_service/static_config.yaml b/samples/digest_auth_service/static_config.yaml index 1be80f32ab7e..46ee5f8f3709 100644 --- a/samples/digest_auth_service/static_config.yaml +++ b/samples/digest_auth_service/static_config.yaml @@ -44,8 +44,7 @@ components_manager: realm: registred@userver.com # /// [hello config] # /// [secdist config] - secdist: {} # Component that stores configuration of hosts and passwords - default-secdist-provider: # Component that loads configuration of hosts and passwords + secdist: # Component that stores configuration of hosts and passwords config: '/etc/digest_auth/secdist.json' # Values are supposed to be stored in this file missing-ok: true # ... but if the file is missing it is still ok environment-secrets-key: SERVER_DIGEST_AUTH_SECRET # ... values will be loaded from this environment value diff --git a/samples/https_service/hello_service.cpp b/samples/https_service/hello_service.cpp index b0b3b5c4c356..b7e3093b7fb1 100644 --- a/samples/https_service/hello_service.cpp +++ b/samples/https_service/hello_service.cpp @@ -4,7 +4,6 @@ #include #include #include -#include #include namespace samples::hello { @@ -31,7 +30,6 @@ class Hello final : public server::handlers::HttpHandlerBase { int main(int argc, char* argv[]) { const auto component_list = components::MinimalServerComponentList() .Append() - .Append() .Append(); return utils::DaemonMain(argc, argv, component_list); } diff --git a/samples/https_service/static_config.yaml b/samples/https_service/static_config.yaml index d59be4da1cda..176ded204e62 100644 --- a/samples/https_service/static_config.yaml +++ b/samples/https_service/static_config.yaml @@ -33,9 +33,6 @@ components_manager: task_processor: main-task-processor # Run it on CPU bound task processor secdist: - provider: default-secdist-provider - - default-secdist-provider: config: /etc/https_service/secure_data.json missing-ok: false # environment-secrets-key: SECDIST_CONFIG diff --git a/samples/mysql_service/mysql_service.cpp b/samples/mysql_service/mysql_service.cpp index 0f766116f41f..058da4357dbc 100644 --- a/samples/mysql_service/mysql_service.cpp +++ b/samples/mysql_service/mysql_service.cpp @@ -10,7 +10,6 @@ #include #include #include -#include #include #include @@ -119,7 +118,6 @@ int main(int argc, char* argv[]) { .Append() .Append("sample-sql-component") .Append() - .Append() .Append() .Append() .Append() diff --git a/samples/mysql_service/static_config.yaml b/samples/mysql_service/static_config.yaml index 2fd6ec66305a..2221d8089587 100644 --- a/samples/mysql_service/static_config.yaml +++ b/samples/mysql_service/static_config.yaml @@ -27,8 +27,6 @@ components_manager: testsuite-support: secdist: - provider: default-secdist-provider - default-secdist-provider: # Component that stores configuration of hosts and passwords config: /etc/mysql_service/secure_data.json # Values are supposed to be stored in this file missing-ok: true # ... but if the file is missing it is still ok environment-secrets-key: SECDIST_CONFIG # ... values will be loaded from this environment value diff --git a/samples/production_service/production_service.cpp b/samples/production_service/production_service.cpp index 9bb761302ba4..366d510c4bb6 100644 --- a/samples/production_service/production_service.cpp +++ b/samples/production_service/production_service.cpp @@ -6,7 +6,6 @@ #include #include #include -#include #include int main(int argc, char* argv[]) { @@ -15,7 +14,6 @@ int main(int argc, char* argv[]) { .AppendComponentList(components::CommonComponentList()) .AppendComponentList(components::CommonServerComponentList()) .Append() - .Append() .Append() .Append() diff --git a/samples/production_service/static_config.yaml b/samples/production_service/static_config.yaml index c46efa8e7deb..e6952638c747 100644 --- a/samples/production_service/static_config.yaml +++ b/samples/production_service/static_config.yaml @@ -108,8 +108,6 @@ components_manager: # /// [Production service sample - static config secdist] # yaml secdist: - provider: default-secdist-provider - default-secdist-provider: config: $secdist-path # /// [Production service sample - static config secdist] diff --git a/samples/rabbitmq_service/rabbitmq_service.cpp b/samples/rabbitmq_service/rabbitmq_service.cpp index 3a86fff23ae9..8ffdddc0a4ca 100644 --- a/samples/rabbitmq_service/rabbitmq_service.cpp +++ b/samples/rabbitmq_service/rabbitmq_service.cpp @@ -12,7 +12,6 @@ #include #include #include -#include #include #include #include @@ -161,7 +160,6 @@ int main(int argc, char* argv[]) { .Append() .Append() .Append() - .Append() .Append() .Append() .Append(); diff --git a/samples/rabbitmq_service/static_config.yaml b/samples/rabbitmq_service/static_config.yaml index 0ffb25565fdb..7ce6fe3fd73f 100644 --- a/samples/rabbitmq_service/static_config.yaml +++ b/samples/rabbitmq_service/static_config.yaml @@ -26,8 +26,6 @@ components_manager: # /// [RabbitMQ consumer sample - static config] secdist: # Component that stores configuration of hosts and passwords - provider: default-secdist-provider - default-secdist-provider: # Component that loads configuration of hosts and passwords config: /etc/rabbitmq_service/secure_data.json # Values are supposed to be stored in this file missing-ok: true # ... but if the file is missing it is still ok environment-secrets-key: SECDIST_CONFIG # ... values will be loaded from this environment value diff --git a/samples/redis_service/redis_service.cpp b/samples/redis_service/redis_service.cpp index 5536947957bb..d8e51af9a987 100644 --- a/samples/redis_service/redis_service.cpp +++ b/samples/redis_service/redis_service.cpp @@ -13,7 +13,6 @@ #include #include #include -#include #include namespace samples::redis { @@ -212,7 +211,6 @@ int main(int argc, char* argv[]) { .Append() .Append() .Append() - .Append() .Append("key-value-database") .Append() .Append(); diff --git a/samples/redis_service/static_config.yaml b/samples/redis_service/static_config.yaml index 251e37c32087..fed9adb337df 100644 --- a/samples/redis_service/static_config.yaml +++ b/samples/redis_service/static_config.yaml @@ -25,8 +25,6 @@ components_manager: # /// [Sample secdist static config] # yaml secdist: # Component that stores configuration of hosts and passwords - provider: default-secdist-provider - default-secdist-provider: # Component that loads configuration of hosts and passwords config: /etc/redis_service/secure_data.json # Values are supposed to be stored in this file missing-ok: true # ... but if the file is missing it is still ok environment-secrets-key: SECDIST_CONFIG # ... values will be loaded from this environment value From f22469513eb894e79262f174d883602622eeade0 Mon Sep 17 00:00:00 2001 From: Niyaz Date: Wed, 8 May 2024 11:23:36 +0300 Subject: [PATCH 2/9] fix testsuite: replace the 'config' path for the 'secdist' instead of 'default-secdist-provider' --- testsuite/pytest_plugins/pytest_userver/plugins/config.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/testsuite/pytest_plugins/pytest_userver/plugins/config.py b/testsuite/pytest_plugins/pytest_userver/plugins/config.py index be4d559dd702..6d3cef9d9433 100644 --- a/testsuite/pytest_plugins/pytest_userver/plugins/config.py +++ b/testsuite/pytest_plugins/pytest_userver/plugins/config.py @@ -517,7 +517,7 @@ def patch_config(config, config_vars) -> None: def userver_config_secdist(service_secdist_path): """ Returns a function that adjusts the static configuration file for testsuite. - Sets the `default-secdist-provider.config` to the value of + Sets the `secdist.config` to the value of @ref pytest_userver.plugins.config.service_secdist_path "service_secdist_path" fixture. @@ -529,7 +529,7 @@ def _patch_config(config_yaml, config_vars): return components = config_yaml['components_manager']['components'] - if 'default-secdist-provider' not in components: + if 'secdist' not in components: return if not service_secdist_path.is_file(): @@ -538,7 +538,7 @@ def _patch_config(config_yaml, config_vars): f'"--service-secdist" pytest option or override the ' f'"service_secdist_path" fixture.', ) - components['default-secdist-provider']['config'] = str( + components['secdist']['config'] = str( service_secdist_path, ) From b47575d6bf8c57ad5807bb455fa4db234f666bb9 Mon Sep 17 00:00:00 2001 From: Niyaz Date: Wed, 8 May 2024 11:56:53 +0300 Subject: [PATCH 3/9] refactor secdist: delete 'default-secdist-provider' from rest static_configs --- clickhouse/functional_tests/basic_chaos/static_config.yaml | 3 +-- clickhouse/functional_tests/metrics/static_config.yaml | 3 +-- core/functional_tests/https/static_config.yaml | 3 --- core/functional_tests/https/tests-deadline/conftest.py | 2 +- core/functional_tests/metrics/static_config.yaml | 1 - core/functional_tests/uctl/static_config.yaml | 1 - core/src/components/manager_config_test.cpp | 3 +-- .../balanced_consumer_groups/static_config.yaml | 3 +-- kafka/functional_tests/integrational_tests/static_config.yaml | 3 +-- mysql/functional_tests/basic_chaos/static_config.yaml | 3 +-- rabbitmq/functional_tests/basic_chaos/static_config.yaml | 3 +-- rabbitmq/functional_tests/metrics/static_config.yaml | 3 +-- redis/functional_tests/basic_chaos/static_config.yaml | 4 +--- .../functional_tests/cluster_auto_topology/static_config.yaml | 3 +-- .../cluster_auto_topology_pubsub/static_config.yaml | 3 +-- redis/functional_tests/integration_tests/static_config.yaml | 3 +-- redis/functional_tests/metrics/static_config.yaml | 3 +-- redis/functional_tests/pubsub/static_config.yaml | 3 +-- samples/https_service/tests/conftest.py | 2 +- 19 files changed, 16 insertions(+), 36 deletions(-) diff --git a/clickhouse/functional_tests/basic_chaos/static_config.yaml b/clickhouse/functional_tests/basic_chaos/static_config.yaml index e662c5892477..43bbb469a79c 100644 --- a/clickhouse/functional_tests/basic_chaos/static_config.yaml +++ b/clickhouse/functional_tests/basic_chaos/static_config.yaml @@ -17,8 +17,7 @@ components_manager: queue_timeout: 10s use_secure_connection: false - secdist: {} - default-secdist-provider: + secdist: config: /etc/clickhouse_basic_chaos/secure_data.json missing-ok: true environment-secrets-key: SECDIST_CONFIG diff --git a/clickhouse/functional_tests/metrics/static_config.yaml b/clickhouse/functional_tests/metrics/static_config.yaml index 224af25ace52..cc46f521bc3b 100644 --- a/clickhouse/functional_tests/metrics/static_config.yaml +++ b/clickhouse/functional_tests/metrics/static_config.yaml @@ -13,8 +13,7 @@ components_manager: use_secure_connection: false compression: lz4 - secdist: {} - default-secdist-provider: + secdist: config: /etc/clickhouse_basic_chaos/secure_data.json missing-ok: true environment-secrets-key: SECDIST_CONFIG diff --git a/core/functional_tests/https/static_config.yaml b/core/functional_tests/https/static_config.yaml index 9a7452f6a97f..ffff1c2f3b0a 100644 --- a/core/functional_tests/https/static_config.yaml +++ b/core/functional_tests/https/static_config.yaml @@ -65,9 +65,6 @@ components_manager: task_processor: main-task-processor secdist: - provider: default-secdist-provider - - default-secdist-provider: config: secdist.json missing-ok: false diff --git a/core/functional_tests/https/tests-deadline/conftest.py b/core/functional_tests/https/tests-deadline/conftest.py index 7844c9dc8eb8..584010261dce 100644 --- a/core/functional_tests/https/tests-deadline/conftest.py +++ b/core/functional_tests/https/tests-deadline/conftest.py @@ -14,7 +14,7 @@ def patch_config(config_yaml, config_vars) -> None: tls['cert'] = str(service_source_dir / 'cert.crt') tls['private-key'] = str(service_source_dir / 'private_key.key') - components['default-secdist-provider']['config'] = str( + components['secdist']['config'] = str( service_source_dir / 'secdist.json', ) diff --git a/core/functional_tests/metrics/static_config.yaml b/core/functional_tests/metrics/static_config.yaml index 712304b24575..5de0e97a170e 100644 --- a/core/functional_tests/metrics/static_config.yaml +++ b/core/functional_tests/metrics/static_config.yaml @@ -83,7 +83,6 @@ components_manager: limited-logging-interval: 1s secdist: {} - default-secdist-provider: {} server: listener: diff --git a/core/functional_tests/uctl/static_config.yaml b/core/functional_tests/uctl/static_config.yaml index 8f62b22812c6..070b5114cdc2 100644 --- a/core/functional_tests/uctl/static_config.yaml +++ b/core/functional_tests/uctl/static_config.yaml @@ -83,7 +83,6 @@ components_manager: limited-logging-interval: 1s secdist: {} - default-secdist-provider: {} server: listener: diff --git a/core/src/components/manager_config_test.cpp b/core/src/components/manager_config_test.cpp index cdd8818149be..5d655b436ff3 100644 --- a/core/src/components/manager_config_test.cpp +++ b/core/src/components/manager_config_test.cpp @@ -111,7 +111,6 @@ constexpr char kConfig[] = R"( blocking_task_processor: pg-task-processor dbalias: devicenotify secdist: - default-secdist-provider: config: /etc/yandex/taxi-secdist/taxi.json server: listener: @@ -217,7 +216,7 @@ TEST(ManagerConfig, Basic) { EXPECT_EQ(mc.task_processors.size(), 5); - ASSERT_EQ(mc.components.size(), 28); + ASSERT_EQ(mc.components.size(), 27); EXPECT_TRUE(std::any_of( mc.components.begin(), mc.components.end(), diff --git a/kafka/functional_tests/balanced_consumer_groups/static_config.yaml b/kafka/functional_tests/balanced_consumer_groups/static_config.yaml index 1d21efc66e4b..68fae90eec68 100644 --- a/kafka/functional_tests/balanced_consumer_groups/static_config.yaml +++ b/kafka/functional_tests/balanced_consumer_groups/static_config.yaml @@ -43,8 +43,7 @@ components_manager: testpoint-url: $mockserver/testpoint throttling_enabled: false - secdist: {} - default-secdist-provider: + secdist: config: /etc/kafka_service/secure_data.json missing-ok: true environment-secrets-key: SECDIST_CONFIG diff --git a/kafka/functional_tests/integrational_tests/static_config.yaml b/kafka/functional_tests/integrational_tests/static_config.yaml index 86f090f8dabf..44cb6a83b499 100644 --- a/kafka/functional_tests/integrational_tests/static_config.yaml +++ b/kafka/functional_tests/integrational_tests/static_config.yaml @@ -74,8 +74,7 @@ components_manager: testpoint-url: $mockserver/testpoint throttling_enabled: false - secdist: {} - default-secdist-provider: + secdist: config: /etc/kafka_service/secure_data.json missing-ok: true environment-secrets-key: SECDIST_CONFIG diff --git a/mysql/functional_tests/basic_chaos/static_config.yaml b/mysql/functional_tests/basic_chaos/static_config.yaml index d5e275b088dc..4d26cfa4cf82 100644 --- a/mysql/functional_tests/basic_chaos/static_config.yaml +++ b/mysql/functional_tests/basic_chaos/static_config.yaml @@ -9,8 +9,7 @@ components_manager: initial_pool_size: 1 max_pool_size: 1 - secdist: {} - default-secdist-provider: + secdist: config: /etc/mysql_service/secure_data.json missing-ok: true environment-secrets-key: SECDIST_CONFIG diff --git a/rabbitmq/functional_tests/basic_chaos/static_config.yaml b/rabbitmq/functional_tests/basic_chaos/static_config.yaml index 5a0d48890e6f..4c6eb44a9585 100644 --- a/rabbitmq/functional_tests/basic_chaos/static_config.yaml +++ b/rabbitmq/functional_tests/basic_chaos/static_config.yaml @@ -19,8 +19,7 @@ components_manager: max_in_flight_requests: 5 use_secure_connection: false - secdist: {} # Component that stores configuration of hosts and passwords - default-secdist-provider: # Component that loads configuration of hosts and passwords + secdist: # Component that stores configuration of hosts and passwords config: /etc/rabbitmq_service/secure_data.json # Values are supposed to be stored in this file missing-ok: true # ... but if the file is missing it is still ok environment-secrets-key: SECDIST_CONFIG # ... values will be loaded from this environment value diff --git a/rabbitmq/functional_tests/metrics/static_config.yaml b/rabbitmq/functional_tests/metrics/static_config.yaml index a90f8a1ccf9b..6eb9ac4560e7 100644 --- a/rabbitmq/functional_tests/metrics/static_config.yaml +++ b/rabbitmq/functional_tests/metrics/static_config.yaml @@ -19,8 +19,7 @@ components_manager: queue: sample-queue prefetch_count: 5 - secdist: {} # Component that stores configuration of hosts and passwords - default-secdist-provider: # Component that loads configuration of hosts and passwords + secdist: # Component that stores configuration of hosts and passwords config: /etc/rabbitmq_service/secure_data.json # Values are supposed to be stored in this file missing-ok: true # ... but if the file is missing it is still ok environment-secrets-key: SECDIST_CONFIG # ... values will be loaded from this environment value diff --git a/redis/functional_tests/basic_chaos/static_config.yaml b/redis/functional_tests/basic_chaos/static_config.yaml index 2344e3bd03cf..bd385d0dfcef 100644 --- a/redis/functional_tests/basic_chaos/static_config.yaml +++ b/redis/functional_tests/basic_chaos/static_config.yaml @@ -48,9 +48,7 @@ components_manager: dns-client: fs-task-processor: fs-task-processor - secdist: {} - - default-secdist-provider: + secdist: config: /etc/redis_service/secure_data.json missing-ok: true environment-secrets-key: SECDIST_CONFIG diff --git a/redis/functional_tests/cluster_auto_topology/static_config.yaml b/redis/functional_tests/cluster_auto_topology/static_config.yaml index 2fc2dc2fd1e1..999683091fbc 100644 --- a/redis/functional_tests/cluster_auto_topology/static_config.yaml +++ b/redis/functional_tests/cluster_auto_topology/static_config.yaml @@ -34,8 +34,7 @@ components_manager: testpoint-url: $mockserver/testpoint throttling_enabled: false - secdist: {} - default-secdist-provider: + secdist: config: /etc/redis_service/secure_data.json missing-ok: true environment-secrets-key: SECDIST_CONFIG diff --git a/redis/functional_tests/cluster_auto_topology_pubsub/static_config.yaml b/redis/functional_tests/cluster_auto_topology_pubsub/static_config.yaml index cbb0e10bef4a..e67402f60093 100644 --- a/redis/functional_tests/cluster_auto_topology_pubsub/static_config.yaml +++ b/redis/functional_tests/cluster_auto_topology_pubsub/static_config.yaml @@ -40,8 +40,7 @@ components_manager: testpoint-url: $mockserver/testpoint throttling_enabled: false - secdist: {} - default-secdist-provider: + secdist: config: /etc/redis_service/secure_data.json missing-ok: true environment-secrets-key: SECDIST_CONFIG diff --git a/redis/functional_tests/integration_tests/static_config.yaml b/redis/functional_tests/integration_tests/static_config.yaml index 85eb54187541..d2a4a232bb96 100644 --- a/redis/functional_tests/integration_tests/static_config.yaml +++ b/redis/functional_tests/integration_tests/static_config.yaml @@ -39,8 +39,7 @@ components_manager: testpoint-url: $mockserver/testpoint throttling_enabled: false - secdist: {} - default-secdist-provider: + secdist: config: /etc/redis_service/secure_data.json missing-ok: true environment-secrets-key: SECDIST_CONFIG diff --git a/redis/functional_tests/metrics/static_config.yaml b/redis/functional_tests/metrics/static_config.yaml index f56ad643e86a..04c0036a58d7 100644 --- a/redis/functional_tests/metrics/static_config.yaml +++ b/redis/functional_tests/metrics/static_config.yaml @@ -71,8 +71,7 @@ components_manager: enable-monitoring: true forbid-requests-to-syncing-replicas: true - secdist: {} - default-secdist-provider: + secdist: config: /etc/redis_service/secure_data.json missing-ok: true environment-secrets-key: SECDIST_CONFIG diff --git a/redis/functional_tests/pubsub/static_config.yaml b/redis/functional_tests/pubsub/static_config.yaml index 5c043660c38f..bdedd17bd43b 100644 --- a/redis/functional_tests/pubsub/static_config.yaml +++ b/redis/functional_tests/pubsub/static_config.yaml @@ -48,8 +48,7 @@ components_manager: testpoint-url: $mockserver/testpoint throttling_enabled: false - secdist: {} - default-secdist-provider: + secdist: config: /etc/redis_service/secure_data.json missing-ok: true environment-secrets-key: SECDIST_CONFIG diff --git a/samples/https_service/tests/conftest.py b/samples/https_service/tests/conftest.py index 4993cf6c98f6..a088c6bff2cf 100644 --- a/samples/https_service/tests/conftest.py +++ b/samples/https_service/tests/conftest.py @@ -20,7 +20,7 @@ def patch_config(config, config_vars): tls['cert'] = str(SERVICE_SOURCE_DIR / 'cert.crt') tls['private-key'] = str(SERVICE_SOURCE_DIR / 'private_key.key') - components['default-secdist-provider']['config'] = str( + components['secdist']['config'] = str( SERVICE_SOURCE_DIR / 'secdist.json', ) From 2236fe3311859669228d27e503eda3e845fdbc1a Mon Sep 17 00:00:00 2001 From: Niyaz Date: Wed, 8 May 2024 13:42:20 +0300 Subject: [PATCH 4/9] docs --- .../userver/storages/secdist/component.hpp | 8 ++---- .../storages/secdist/component_base.hpp | 26 ++++++------------- .../storages/secdist/default_provider.hpp | 14 +++++++--- .../userver/storages/secdist/provider.hpp | 9 +++++++ core/src/storages/secdist/component.cpp | 4 +-- 5 files changed, 32 insertions(+), 29 deletions(-) diff --git a/core/include/userver/storages/secdist/component.hpp b/core/include/userver/storages/secdist/component.hpp index 5026612fca52..7a2df2c07641 100644 --- a/core/include/userver/storages/secdist/component.hpp +++ b/core/include/userver/storages/secdist/component.hpp @@ -14,13 +14,10 @@ namespace components { /// @ingroup userver_components /// -/// @brief Component that stores security related data (keys, passwords, ...). +/// @brief Default implementation of components::SecdistComponentBase. /// /// The component must be configured in service config. /// -/// Secdist requires a provider storages::secdist::SecdistProvider -/// You can implement your own or use components::DefaultSecdistProvider -/// /// ## Static configuration example: /// /// @snippet samples/redis_service/static_config.yaml Sample secdist static config @@ -28,7 +25,6 @@ namespace components { /// ## Static options: /// Name | Description | Default value /// ---- | ----------- | ------------- -/// provider | optional secdist provider component name | 'default-secdist-provider' /// config | path to the config file with data | '' /// format | config format, either `json` or `yaml` | 'json' /// missing-ok | do not terminate components load if no file found by the config option | false @@ -48,7 +44,7 @@ class Secdist final : public SecdistComponentBase { static yaml_config::Schema GetStaticConfigSchema(); }; - +/// [Sample secdist - default secdist] template <> inline constexpr bool kHasValidate = true; diff --git a/core/include/userver/storages/secdist/component_base.hpp b/core/include/userver/storages/secdist/component_base.hpp index 1db423e5e377..ff2f1e9d4d41 100644 --- a/core/include/userver/storages/secdist/component_base.hpp +++ b/core/include/userver/storages/secdist/component_base.hpp @@ -15,28 +15,18 @@ namespace components { /// @ingroup userver_components /// -/// @brief Component that stores security related data (keys, passwords, ...). +/// @brief Base component that stores security related data (keys, passwords, ...). /// -/// The component must be configured in service config. +/// You can use a ready-made components::Secdist or implement your own. /// -/// Secdist requires a provider storages::secdist::SecdistProvider -/// You can implement your own or use components::DefaultSecdistProvider +/// ### Writing your own secrets distributor: +/// Implement a custom provider class that contains the settings. +/// @snippet core/include/userver/storages/secdist/default_provider.hpp Sample secdist - default provider /// -/// ## Static configuration example: +/// Implement a custom secdist component, configure it's static config schema +/// and pass the custom provider to the storages::secdist::SecdistConfig::Settings. +/// @snippet core/include/userver/storages/secdist/component.сpp Sample secdist - default secdist /// -/// @snippet samples/redis_service/static_config.yaml Sample secdist static config -/// -/// ## Static options: -/// Name | Description | Default value -/// ---- | ----------- | ------------- -/// provider | optional secdist provider component name | 'default-secdist-provider' -/// config | path to the config file with data | '' -/// format | config format, either `json` or `yaml` | 'json' -/// missing-ok | do not terminate components load if no file found by the config option | false -/// environment-secrets-key | name of environment variable from which to load additional data | - -/// update-period | period between data updates in utils::StringToDuration() suitable format ('0s' for no updates) | 0s -/// blocking-task-processor | name of task processor for background blocking operations | -- - // clang-format on class SecdistComponentBase : public LoggableComponentBase { diff --git a/core/include/userver/storages/secdist/default_provider.hpp b/core/include/userver/storages/secdist/default_provider.hpp index 963f129c9ecb..780fd238047d 100644 --- a/core/include/userver/storages/secdist/default_provider.hpp +++ b/core/include/userver/storages/secdist/default_provider.hpp @@ -1,7 +1,7 @@ #pragma once -/// @file userver/storages/secdist/component.hpp -/// @brief @copybrief components::DefaultSecdistProvider +/// @file userver/storages/secdist/default_provider.hpp +/// @brief @copybrief storages::secdist::DefaultProvider #include @@ -11,7 +11,15 @@ USERVER_NAMESPACE_BEGIN namespace storages::secdist { +// clang-format off +/// @brief Default implementation of storages::secdist::SecdistProvider. +/// +/// Provides components::Secdist configurations to the +/// storages::secdist::SecdistConfig + +// clang-format on +/// [Sample secdist - default provider] class DefaultProvider final : public storages::secdist::SecdistProvider { public: struct Settings { @@ -29,7 +37,7 @@ class DefaultProvider final : public storages::secdist::SecdistProvider { private: Settings settings_; }; - +/// [Sample secdist - default provider] } // namespace storages::secdist USERVER_NAMESPACE_END diff --git a/core/include/userver/storages/secdist/provider.hpp b/core/include/userver/storages/secdist/provider.hpp index a29a32f000f7..b74532c94799 100644 --- a/core/include/userver/storages/secdist/provider.hpp +++ b/core/include/userver/storages/secdist/provider.hpp @@ -10,6 +10,15 @@ namespace storages::secdist { class SecdistProvider { public: + SecdistProvider() = default; + virtual ~SecdistProvider() = default; + + SecdistProvider(const SecdistProvider&) = delete; + SecdistProvider& operator=(const SecdistProvider&) = delete; + + SecdistProvider(SecdistProvider&&) = default; + SecdistProvider& operator=(SecdistProvider&&) = default; + virtual formats::json::Value Get() const = 0; }; diff --git a/core/src/storages/secdist/component.cpp b/core/src/storages/secdist/component.cpp index e55b302755e4..a2c6fd818791 100644 --- a/core/src/storages/secdist/component.cpp +++ b/core/src/storages/secdist/component.cpp @@ -8,7 +8,7 @@ #include USERVER_NAMESPACE_BEGIN - +/// [Sample secdist - default secdist] namespace components { namespace { @@ -87,5 +87,5 @@ additionalProperties: false } } // namespace components - +/// [Sample secdist - default secdist] USERVER_NAMESPACE_END From 02530aa7db35191247d093690ae3ba361adac67f Mon Sep 17 00:00:00 2001 From: Niyaz Date: Wed, 8 May 2024 14:58:54 +0300 Subject: [PATCH 5/9] typo secdist: redundant line --- core/include/userver/storages/secdist/component.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/include/userver/storages/secdist/component.hpp b/core/include/userver/storages/secdist/component.hpp index 7a2df2c07641..0cb76dd78a39 100644 --- a/core/include/userver/storages/secdist/component.hpp +++ b/core/include/userver/storages/secdist/component.hpp @@ -44,7 +44,7 @@ class Secdist final : public SecdistComponentBase { static yaml_config::Schema GetStaticConfigSchema(); }; -/// [Sample secdist - default secdist] + template <> inline constexpr bool kHasValidate = true; From a0999a34e07f501eade4a13ad366c9f52c7a5f1d Mon Sep 17 00:00:00 2001 From: Niyaz Date: Wed, 8 May 2024 16:27:13 +0300 Subject: [PATCH 6/9] mics secdist: format, includes order --- .../storages/secdist/component_base.hpp | 2 +- core/src/storages/secdist/component.cpp | 8 ++++---- core/src/storages/secdist/component_base.cpp | 18 ++++++++++-------- core/src/storages/secdist/default_provider.cpp | 1 + 4 files changed, 16 insertions(+), 13 deletions(-) diff --git a/core/include/userver/storages/secdist/component_base.hpp b/core/include/userver/storages/secdist/component_base.hpp index ff2f1e9d4d41..80ad2261dc59 100644 --- a/core/include/userver/storages/secdist/component_base.hpp +++ b/core/include/userver/storages/secdist/component_base.hpp @@ -32,7 +32,7 @@ namespace components { class SecdistComponentBase : public LoggableComponentBase { public: SecdistComponentBase(const ComponentConfig&, const ComponentContext&, - storages::secdist::SecdistConfig::Settings&&); + storages::secdist::SecdistConfig::Settings&&); const storages::secdist::SecdistConfig& Get() const; diff --git a/core/src/storages/secdist/component.cpp b/core/src/storages/secdist/component.cpp index a2c6fd818791..7b8d548b8402 100644 --- a/core/src/storages/secdist/component.cpp +++ b/core/src/storages/secdist/component.cpp @@ -2,8 +2,8 @@ #include #include -#include #include +#include #include #include @@ -30,7 +30,8 @@ storages::secdist::SecdistConfig::Settings ParseSettings( using Provider = storages::secdist::DefaultProvider; Provider::Settings provider_settings; provider_settings.config_path = config["config"].As({}); - provider_settings.format = FormatFromString(config["format"].As({})); + provider_settings.format = + FormatFromString(config["format"].As({})); provider_settings.missing_ok = config["missing-ok"].As(false); provider_settings.environment_secrets_key = config["environment-secrets-key"].As>(); @@ -51,8 +52,7 @@ storages::secdist::SecdistConfig::Settings ParseSettings( } // namespace -Secdist::Secdist(const ComponentConfig& config, - const ComponentContext& context) +Secdist::Secdist(const ComponentConfig& config, const ComponentContext& context) : SecdistComponentBase(config, context, ParseSettings(config, context)) {} yaml_config::Schema Secdist::GetStaticConfigSchema() { diff --git a/core/src/storages/secdist/component_base.cpp b/core/src/storages/secdist/component_base.cpp index 849b213d9e2a..6ac57d2d48f7 100644 --- a/core/src/storages/secdist/component_base.cpp +++ b/core/src/storages/secdist/component_base.cpp @@ -2,8 +2,8 @@ #include #include -#include #include +#include #include #include @@ -11,21 +11,23 @@ USERVER_NAMESPACE_BEGIN namespace components { -SecdistComponentBase::SecdistComponentBase(const ComponentConfig& config, const ComponentContext& context, - storages::secdist::SecdistConfig::Settings&& settings) - : LoggableComponentBase(config, context), - secdist_(std::move(settings)) {} +SecdistComponentBase::SecdistComponentBase( + const ComponentConfig& config, const ComponentContext& context, + storages::secdist::SecdistConfig::Settings&& settings) + : LoggableComponentBase(config, context), secdist_(std::move(settings)) {} const storages::secdist::SecdistConfig& SecdistComponentBase::Get() const { return secdist_.Get(); } -rcu::ReadablePtr SecdistComponentBase::GetSnapshot() - const { +rcu::ReadablePtr +SecdistComponentBase::GetSnapshot() const { return secdist_.GetSnapshot(); } -storages::secdist::Secdist& SecdistComponentBase::GetStorage() { return secdist_; } +storages::secdist::Secdist& SecdistComponentBase::GetStorage() { + return secdist_; +} yaml_config::Schema SecdistComponentBase::GetStaticConfigSchema() { auto schema = LoggableComponentBase::GetStaticConfigSchema(); diff --git a/core/src/storages/secdist/default_provider.cpp b/core/src/storages/secdist/default_provider.cpp index ba3b6a6dad8d..b3e467b33dd2 100644 --- a/core/src/storages/secdist/default_provider.cpp +++ b/core/src/storages/secdist/default_provider.cpp @@ -9,6 +9,7 @@ #include #include #include +#include #include #include From 2bae3725ab5ff183cb9ebe243811a6389a0461a5 Mon Sep 17 00:00:00 2001 From: Niyaz Date: Wed, 8 May 2024 17:54:38 +0300 Subject: [PATCH 7/9] mics secdist: prevent settings copy --- core/src/storages/secdist/default_provider.cpp | 3 ++- core/src/storages/secdist/secdist_test.cpp | 2 -- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/core/src/storages/secdist/default_provider.cpp b/core/src/storages/secdist/default_provider.cpp index b3e467b33dd2..190ba64ce428 100644 --- a/core/src/storages/secdist/default_provider.cpp +++ b/core/src/storages/secdist/default_provider.cpp @@ -125,7 +125,8 @@ void UpdateFromEnv(formats::json::Value& doc, } // namespace -DefaultProvider::DefaultProvider(Settings settings) : settings_{settings} {} +DefaultProvider::DefaultProvider(Settings settings) + : settings_{std::move(settings)} {} formats::json::Value DefaultProvider::Get() const { auto doc = diff --git a/core/src/storages/secdist/secdist_test.cpp b/core/src/storages/secdist/secdist_test.cpp index 90515e1e7c82..94f85851e459 100644 --- a/core/src/storages/secdist/secdist_test.cpp +++ b/core/src/storages/secdist/secdist_test.cpp @@ -99,7 +99,6 @@ TEST(SecdistYamlConfig, Sample) { {std::make_unique( std::move(provider_settings))}}; - /// [Secdist Usage Sample - SecdistConfig] const auto& user_passwords = secdist_config.Get(); const auto password = UserPasswords::Password{"drowssap"}; @@ -107,7 +106,6 @@ TEST(SecdistYamlConfig, Sample) { EXPECT_TRUE(user_passwords.IsMatching("username", password)); EXPECT_FALSE(user_passwords.IsMatching("username2", password)); EXPECT_TRUE(user_passwords.IsMatching("another username", another_password)); - /// [Secdist Usage Sample - SecdistConfig] } UTEST(SecdistConfig, EnvironmentVariable) { From 6b54b4a978530cccab8cb88582bf9d6b84f239d6 Mon Sep 17 00:00:00 2001 From: Niyaz Date: Wed, 5 Jun 2024 16:43:13 +0300 Subject: [PATCH 8/9] clean ydb from DefaultSecdistProvider --- .../storages/secdist/provider_component.hpp | 78 ------------------- samples/ydb_service/static_config.yaml | 2 - samples/ydb_service/ydb_service.cpp | 2 - ydb/functional_tests/basic/static_config.yaml | 3 +- ydb/functional_tests/basic/ydb_service.cpp | 2 - 5 files changed, 1 insertion(+), 86 deletions(-) delete mode 100644 core/include/userver/storages/secdist/provider_component.hpp diff --git a/core/include/userver/storages/secdist/provider_component.hpp b/core/include/userver/storages/secdist/provider_component.hpp deleted file mode 100644 index 9596aa93fc87..000000000000 --- a/core/include/userver/storages/secdist/provider_component.hpp +++ /dev/null @@ -1,78 +0,0 @@ -#pragma once - -/// @file userver/storages/secdist/component.hpp -/// @brief @copybrief components::DefaultSecdistProvider - -#include - -#include -#include -#include - -USERVER_NAMESPACE_BEGIN - -namespace storages::secdist { - -class DefaultLoader final : public storages::secdist::SecdistProvider { - public: - struct Settings { - std::string config_path; - SecdistFormat format{SecdistFormat::kJson}; - bool missing_ok{false}; - std::optional environment_secrets_key; - engine::TaskProcessor* blocking_task_processor{nullptr}; - }; - - explicit DefaultLoader(Settings settings); - - formats::json::Value Get() const override; - - private: - Settings settings_; -}; - -} // namespace storages::secdist - -namespace components { -// clang-format off - -/// @ingroup userver_components -/// -/// @brief Component that stores security related data (keys, passwords, ...). -/// -/// The component must be configured in service config. -/// -/// ## Static options: -/// Name | Description | Default value -/// ---- | ----------- | ------------- -/// config | path to the config file with data | '' -/// format | config format, either `json` or `yaml` | 'json' -/// missing-ok | do not terminate components load if no file found by the config option | false -/// environment-secrets-key | name of environment variable from which to load additional data | - -/// blocking-task-processor | name of task processor for background blocking operations | -- - -// clang-format on - -class DefaultSecdistProvider final : public ComponentBase, - public storages::secdist::SecdistProvider { - public: - /// @ingroup userver_component_names - /// @brief The default name of components::DefaultSecdistProvider - static constexpr std::string_view kName = "default-secdist-provider"; - - DefaultSecdistProvider(const ComponentConfig&, const ComponentContext&); - - formats::json::Value Get() const override; - - static yaml_config::Schema GetStaticConfigSchema(); - - private: - storages::secdist::DefaultLoader loader_; -}; - -template <> -inline constexpr bool kHasValidate = true; - -} // namespace components - -USERVER_NAMESPACE_END diff --git a/samples/ydb_service/static_config.yaml b/samples/ydb_service/static_config.yaml index 7855bded49ae..83e391ed7709 100644 --- a/samples/ydb_service/static_config.yaml +++ b/samples/ydb_service/static_config.yaml @@ -22,8 +22,6 @@ components_manager: level: debug overflow_behavior: discard # Drop logs if the system is too busy to write them down. secdist: - provider: default-secdist-provider - default-secdist-provider: config: secure_data.json dynamic-config: diff --git a/samples/ydb_service/ydb_service.cpp b/samples/ydb_service/ydb_service.cpp index 30ca54227473..a7b9292d239c 100644 --- a/samples/ydb_service/ydb_service.cpp +++ b/samples/ydb_service/ydb_service.cpp @@ -9,7 +9,6 @@ #include #include #include -#include #include #include @@ -32,7 +31,6 @@ int main(int argc, char* argv[]) { .Append() .Append() .Append() - .Append() .Append() .Append() .Append() diff --git a/ydb/functional_tests/basic/static_config.yaml b/ydb/functional_tests/basic/static_config.yaml index 62f8d7640796..1c507ca0633a 100644 --- a/ydb/functional_tests/basic/static_config.yaml +++ b/ydb/functional_tests/basic/static_config.yaml @@ -24,8 +24,7 @@ components_manager: file_path: '@stderr' level: debug overflow_behavior: discard # Drop logs if the system is too busy to write them down. - secdist: {} - default-secdist-provider: + secdist: config: secure_data.json dynamic-config: diff --git a/ydb/functional_tests/basic/ydb_service.cpp b/ydb/functional_tests/basic/ydb_service.cpp index 1dcb5b93d3c5..594cdb30d36a 100644 --- a/ydb/functional_tests/basic/ydb_service.cpp +++ b/ydb/functional_tests/basic/ydb_service.cpp @@ -12,7 +12,6 @@ #include #include #include -#include #include #include #include @@ -96,7 +95,6 @@ int main(int argc, char* argv[]) { .Append() .Append() .Append() - .Append() .Append() .Append() .Append() From 4cc9c6dfd28b73e322ee25ed3d6888508fc54f1a Mon Sep 17 00:00:00 2001 From: Niyaz Date: Wed, 5 Jun 2024 17:24:46 +0300 Subject: [PATCH 9/9] rename SecdistProvider -> SecdistProviderBase --- .../storages/secdist/component_base.hpp | 4 +-- .../storages/secdist/default_provider.hpp | 6 ++--- .../userver/storages/secdist/provider.hpp | 27 ------------------- .../storages/secdist/provider_base.hpp | 27 +++++++++++++++++++ .../userver/storages/secdist/secdist.hpp | 4 +-- core/src/storages/secdist/component_base.cpp | 4 +-- .../src/storages/secdist/default_provider.cpp | 1 - 7 files changed, 36 insertions(+), 37 deletions(-) delete mode 100644 core/include/userver/storages/secdist/provider.hpp create mode 100644 core/include/userver/storages/secdist/provider_base.hpp diff --git a/core/include/userver/storages/secdist/component_base.hpp b/core/include/userver/storages/secdist/component_base.hpp index 80ad2261dc59..b2f45efa59e9 100644 --- a/core/include/userver/storages/secdist/component_base.hpp +++ b/core/include/userver/storages/secdist/component_base.hpp @@ -5,7 +5,7 @@ #include -#include +#include #include USERVER_NAMESPACE_BEGIN @@ -29,7 +29,7 @@ namespace components { /// // clang-format on -class SecdistComponentBase : public LoggableComponentBase { +class SecdistComponentBase : public ComponentBase { public: SecdistComponentBase(const ComponentConfig&, const ComponentContext&, storages::secdist::SecdistConfig::Settings&&); diff --git a/core/include/userver/storages/secdist/default_provider.hpp b/core/include/userver/storages/secdist/default_provider.hpp index 780fd238047d..2070073507cb 100644 --- a/core/include/userver/storages/secdist/default_provider.hpp +++ b/core/include/userver/storages/secdist/default_provider.hpp @@ -5,7 +5,7 @@ #include -#include +#include #include USERVER_NAMESPACE_BEGIN @@ -13,14 +13,14 @@ USERVER_NAMESPACE_BEGIN namespace storages::secdist { // clang-format off -/// @brief Default implementation of storages::secdist::SecdistProvider. +/// @brief Default implementation of storages::secdist::SecdistProviderBase. /// /// Provides components::Secdist configurations to the /// storages::secdist::SecdistConfig // clang-format on /// [Sample secdist - default provider] -class DefaultProvider final : public storages::secdist::SecdistProvider { +class DefaultProvider final : public storages::secdist::SecdistProviderBase { public: struct Settings { std::string config_path; diff --git a/core/include/userver/storages/secdist/provider.hpp b/core/include/userver/storages/secdist/provider.hpp deleted file mode 100644 index b74532c94799..000000000000 --- a/core/include/userver/storages/secdist/provider.hpp +++ /dev/null @@ -1,27 +0,0 @@ -#pragma once - -/// @file userver/storages/secdist/provider.hpp - -#include - -USERVER_NAMESPACE_BEGIN - -namespace storages::secdist { - -class SecdistProvider { - public: - SecdistProvider() = default; - virtual ~SecdistProvider() = default; - - SecdistProvider(const SecdistProvider&) = delete; - SecdistProvider& operator=(const SecdistProvider&) = delete; - - SecdistProvider(SecdistProvider&&) = default; - SecdistProvider& operator=(SecdistProvider&&) = default; - - virtual formats::json::Value Get() const = 0; -}; - -} // namespace storages::secdist - -USERVER_NAMESPACE_END diff --git a/core/include/userver/storages/secdist/provider_base.hpp b/core/include/userver/storages/secdist/provider_base.hpp new file mode 100644 index 000000000000..bfa991308ea9 --- /dev/null +++ b/core/include/userver/storages/secdist/provider_base.hpp @@ -0,0 +1,27 @@ +#pragma once + +/// @file userver/storages/secdist/provider_base.hpp + +#include + +USERVER_NAMESPACE_BEGIN + +namespace storages::secdist { + +class SecdistProviderBase { + public: + SecdistProviderBase() = default; + virtual ~SecdistProviderBase() = default; + + SecdistProviderBase(const SecdistProviderBase&) = delete; + SecdistProviderBase& operator=(const SecdistProviderBase&) = delete; + + SecdistProviderBase(SecdistProviderBase&&) = default; + SecdistProviderBase& operator=(SecdistProviderBase&&) = default; + + virtual formats::json::Value Get() const = 0; +}; + +} // namespace storages::secdist + +USERVER_NAMESPACE_END diff --git a/core/include/userver/storages/secdist/secdist.hpp b/core/include/userver/storages/secdist/secdist.hpp index c387b42a5fe2..7676b9f3139f 100644 --- a/core/include/userver/storages/secdist/secdist.hpp +++ b/core/include/userver/storages/secdist/secdist.hpp @@ -18,7 +18,7 @@ #include #include #include -#include +#include #include USERVER_NAMESPACE_BEGIN @@ -78,7 +78,7 @@ enum class SecdistFormat { class SecdistConfig final { public: struct Settings { - std::unique_ptr provider{nullptr}; + std::unique_ptr provider{nullptr}; std::chrono::milliseconds update_period{std::chrono::milliseconds::zero()}; }; diff --git a/core/src/storages/secdist/component_base.cpp b/core/src/storages/secdist/component_base.cpp index 6ac57d2d48f7..65a6345668df 100644 --- a/core/src/storages/secdist/component_base.cpp +++ b/core/src/storages/secdist/component_base.cpp @@ -14,7 +14,7 @@ namespace components { SecdistComponentBase::SecdistComponentBase( const ComponentConfig& config, const ComponentContext& context, storages::secdist::SecdistConfig::Settings&& settings) - : LoggableComponentBase(config, context), secdist_(std::move(settings)) {} + : ComponentBase(config, context), secdist_(std::move(settings)) {} const storages::secdist::SecdistConfig& SecdistComponentBase::Get() const { return secdist_.Get(); @@ -30,7 +30,7 @@ storages::secdist::Secdist& SecdistComponentBase::GetStorage() { } yaml_config::Schema SecdistComponentBase::GetStaticConfigSchema() { - auto schema = LoggableComponentBase::GetStaticConfigSchema(); + auto schema = ComponentBase::GetStaticConfigSchema(); schema.UpdateDescription( "Base class for user defined secdists and DefaultSecdist"); return schema; diff --git a/core/src/storages/secdist/default_provider.cpp b/core/src/storages/secdist/default_provider.cpp index 190ba64ce428..7971ec993f07 100644 --- a/core/src/storages/secdist/default_provider.cpp +++ b/core/src/storages/secdist/default_provider.cpp @@ -7,7 +7,6 @@ #include #include #include -#include #include #include #include