Skip to content

Commit

Permalink
Refactor bsconfig SDK client (ydb-platform#14162)
Browse files Browse the repository at this point in the history
  • Loading branch information
Gazizonoki authored Feb 5, 2025
1 parent 12bfdbf commit 61b0e0a
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 21 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -36,27 +36,29 @@ struct TFetchStorageConfigResult : public TStatus {

using TAsyncFetchStorageConfigResult = NThreading::TFuture<TFetchStorageConfigResult>;

struct TStorageConfigSettings : public NYdb::TOperationRequestSettings<TStorageConfigSettings> {};
struct TReplaceStorageConfigSettings : public NYdb::TOperationRequestSettings<TReplaceStorageConfigSettings> {};
struct TFetchStorageConfigSettings : public NYdb::TOperationRequestSettings<TFetchStorageConfigSettings> {};
struct TBootstrapClusterSettings : public NYdb::TOperationRequestSettings<TBootstrapClusterSettings> {};

class TStorageConfigClient {
public:

explicit TStorageConfigClient(const TDriver& driver, const TCommonClientSettings& settings = {});

~TStorageConfigClient();

// Replace config
TAsyncStatus ReplaceStorageConfig(const std::optional<TString>& yaml_config,
const std::optional<TString>& storage_yaml_config,
TAsyncStatus ReplaceStorageConfig(const std::optional<std::string>& yaml_config,
const std::optional<std::string>& storage_yaml_config,
std::optional<bool> switch_dedicated_storage_section,
bool dedicated_config_mode);
bool dedicated_config_mode,
const TReplaceStorageConfigSettings& settings = {});

// Fetch current cluster storage config
TAsyncFetchStorageConfigResult FetchStorageConfig(bool dedicated_storage_section, bool dedicated_cluster_section,
const TStorageConfigSettings& settings = {});
const TFetchStorageConfigSettings& settings = {});

// Bootstrap cluster with automatic configuration
TAsyncStatus BootstrapCluster(const std::string& selfAssemblyUUID);
TAsyncStatus BootstrapCluster(const std::string& selfAssemblyUUID, const TBootstrapClusterSettings& settings = {});

private:
class TImpl;
Expand Down
31 changes: 17 additions & 14 deletions ydb/public/sdk/cpp/src/client/bsconfig/storage_config.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,11 @@ class TStorageConfigClient::TImpl : public TClientImplCommon<TStorageConfigClien
{
}

TAsyncStatus ReplaceStorageConfig(const std::optional<TString>& yaml_config,
const std::optional<TString>& storage_yaml_config,
TAsyncStatus ReplaceStorageConfig(const std::optional<std::string>& yaml_config,
const std::optional<std::string>& storage_yaml_config,
std::optional<bool> switch_dedicated_storage_section,
bool dedicated_config_mode) {
bool dedicated_config_mode,
const TReplaceStorageConfigSettings& settings) {
auto request = MakeRequest<Ydb::BSConfig::ReplaceStorageConfigRequest>();

if (yaml_config) {
Expand All @@ -33,11 +34,12 @@ class TStorageConfigClient::TImpl : public TClientImplCommon<TStorageConfigClien

return RunSimple<Ydb::BSConfig::V1::BSConfigService, Ydb::BSConfig::ReplaceStorageConfigRequest, Ydb::BSConfig::ReplaceStorageConfigResponse>(
std::move(request),
&Ydb::BSConfig::V1::BSConfigService::Stub::AsyncReplaceStorageConfig);
&Ydb::BSConfig::V1::BSConfigService::Stub::AsyncReplaceStorageConfig,
TRpcRequestSettings::Make(settings));
}

TAsyncFetchStorageConfigResult FetchStorageConfig(bool dedicated_storage_section, bool dedicated_cluster_section,
const TStorageConfigSettings& settings = {}) {
const TFetchStorageConfigSettings& settings) {
auto request = MakeOperationRequest<Ydb::BSConfig::FetchStorageConfigRequest>(settings);
if (dedicated_storage_section) {
request.set_dedicated_storage_section(true);
Expand Down Expand Up @@ -70,12 +72,13 @@ class TStorageConfigClient::TImpl : public TClientImplCommon<TStorageConfigClien
return promise.GetFuture();
}

TAsyncStatus BootstrapCluster(const std::string& selfAssemblyUUID) {
TAsyncStatus BootstrapCluster(const std::string& selfAssemblyUUID, const TBootstrapClusterSettings& settings) {
auto request = MakeRequest<Ydb::BSConfig::BootstrapClusterRequest>();
request.set_self_assembly_uuid(selfAssemblyUUID);
return RunSimple<Ydb::BSConfig::V1::BSConfigService, Ydb::BSConfig::BootstrapClusterRequest,
Ydb::BSConfig::BootstrapClusterResponse>(std::move(request),
&Ydb::BSConfig::V1::BSConfigService::Stub::AsyncBootstrapCluster);
&Ydb::BSConfig::V1::BSConfigService::Stub::AsyncBootstrapCluster,
TRpcRequestSettings::Make(settings));
}
};

Expand All @@ -85,20 +88,20 @@ TStorageConfigClient::TStorageConfigClient(const TDriver& driver, const TCommonC

TStorageConfigClient::~TStorageConfigClient() = default;

TAsyncStatus TStorageConfigClient::ReplaceStorageConfig(const std::optional<TString>& yaml_config,
const std::optional<TString>& storage_yaml_config, std::optional<bool> switch_dedicated_storage_section,
bool dedicated_config_mode) {
TAsyncStatus TStorageConfigClient::ReplaceStorageConfig(const std::optional<std::string>& yaml_config,
const std::optional<std::string>& storage_yaml_config, std::optional<bool> switch_dedicated_storage_section,
bool dedicated_config_mode, const TReplaceStorageConfigSettings& settings) {
return Impl_->ReplaceStorageConfig(yaml_config, storage_yaml_config, switch_dedicated_storage_section,
dedicated_config_mode);
dedicated_config_mode, settings);
}

TAsyncFetchStorageConfigResult TStorageConfigClient::FetchStorageConfig(bool dedicated_storage_section,
bool dedicated_cluster_section, const TStorageConfigSettings& settings) {
bool dedicated_cluster_section, const TFetchStorageConfigSettings& settings) {
return Impl_->FetchStorageConfig(dedicated_storage_section, dedicated_cluster_section, settings);
}

TAsyncStatus TStorageConfigClient::BootstrapCluster(const std::string& selfAssemblyUUID) {
return Impl_->BootstrapCluster(selfAssemblyUUID);
TAsyncStatus TStorageConfigClient::BootstrapCluster(const std::string& selfAssemblyUUID, const TBootstrapClusterSettings& settings) {
return Impl_->BootstrapCluster(selfAssemblyUUID, settings);
}


Expand Down

0 comments on commit 61b0e0a

Please sign in to comment.