Skip to content

Commit f5114c7

Browse files
committed
Make config api from bsconfig api (#14617)
1 parent ff58fd9 commit f5114c7

File tree

10 files changed

+512
-252
lines changed

10 files changed

+512
-252
lines changed

include/ydb-cpp-sdk/client/bsconfig/storage_config.h

Lines changed: 0 additions & 69 deletions
This file was deleted.
Lines changed: 120 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,120 @@
1+
#pragma once
2+
3+
#include <ydb-cpp-sdk/client/common_client/settings.h>
4+
#include <ydb-cpp-sdk/client/driver/driver.h>
5+
#include <ydb-cpp-sdk/client/types/status/status.h>
6+
#include <ydb-cpp-sdk/client/types/request_settings.h>
7+
#include <ydb-cpp-sdk/client/types/ydb.h>
8+
9+
#include <memory>
10+
#include <string>
11+
12+
namespace NYdb::inline V3::NConfig {
13+
14+
struct TReplaceConfigSettings : public NYdb::TOperationRequestSettings<TReplaceConfigSettings> {
15+
FLUENT_SETTING_FLAG(DryRun);
16+
FLUENT_SETTING_FLAG(AllowUnknownFields);
17+
FLUENT_SETTING_FLAG(BypassChecks);
18+
};
19+
20+
enum class EFetchAllConfigsTransform {
21+
NONE,
22+
DETACH_STORAGE_CONFIG_SECTION,
23+
ATTACH_STORAGE_CONFIG_SECTION,
24+
};
25+
26+
struct TFetchAllConfigsSettings : public NYdb::TOperationRequestSettings<TFetchAllConfigsSettings> {
27+
FLUENT_SETTING(EFetchAllConfigsTransform, Transform);
28+
};
29+
30+
struct TBootstrapClusterSettings : public NYdb::TOperationRequestSettings<TBootstrapClusterSettings> {};
31+
32+
struct TMainConfigIdentity {
33+
ui64 Version;
34+
TString Cluster;
35+
};
36+
37+
struct TStorageConfigIdentity {
38+
ui64 Version;
39+
TString Cluster;
40+
};
41+
42+
struct TDatabaseConfigIdentity {
43+
ui64 Version;
44+
TString Cluster;
45+
TString Database;
46+
};
47+
48+
using TIdentityTypes = std::variant<
49+
std::monostate
50+
, TMainConfigIdentity
51+
, TStorageConfigIdentity
52+
, TDatabaseConfigIdentity
53+
>;
54+
55+
struct TConfig {
56+
TIdentityTypes Identity;
57+
TString Config;
58+
};
59+
60+
struct TFetchConfigResult : public TStatus {
61+
TFetchConfigResult(
62+
TStatus&& status,
63+
std::vector<TConfig>&& configs)
64+
: TStatus(std::move(status))
65+
, Configs_(std::move(configs))
66+
{}
67+
68+
const std::vector<TConfig>& GetConfigs() const {
69+
return Configs_;
70+
}
71+
72+
private:
73+
std::vector<TConfig> Configs_;
74+
};
75+
76+
using TAsyncFetchConfigResult = NThreading::TFuture<TFetchConfigResult>;
77+
78+
class TConfigClient {
79+
public:
80+
explicit TConfigClient(const TDriver& driver, const TCommonClientSettings& settings = {});
81+
82+
~TConfigClient();
83+
84+
// Replace config
85+
TAsyncStatus ReplaceConfig(
86+
const TString& mainConfig,
87+
const TReplaceConfigSettings& settings = {});
88+
89+
// Replace config
90+
TAsyncStatus ReplaceConfig(
91+
const TString& mainConfig,
92+
const TString& storageConfig,
93+
const TReplaceConfigSettings& settings = {});
94+
95+
// Replace config
96+
TAsyncStatus ReplaceConfigDisableDedicatedStorageSection(
97+
const TString& mainConfig,
98+
const TReplaceConfigSettings& settings = {});
99+
100+
// Replace config
101+
TAsyncStatus ReplaceConfigEnableDedicatedStorageSection(
102+
const TString& mainConfig,
103+
const TString& storageConfig,
104+
const TReplaceConfigSettings& settings = {});
105+
106+
// Fetch current cluster storage config
107+
TAsyncFetchConfigResult FetchAllConfigs(const TFetchAllConfigsSettings& settings = {});
108+
109+
// Bootstrap cluster with automatic configuration
110+
TAsyncStatus BootstrapCluster(
111+
const TString& selfAssemblyUUID,
112+
const TBootstrapClusterSettings& settings = {});
113+
114+
private:
115+
class TImpl;
116+
117+
std::unique_ptr<TImpl> Impl_;
118+
};
119+
120+
}

include/ydb-cpp-sdk/client/types/status/status.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ class TStatus {
2525
const NYdb::NIssue::TIssues& GetIssues() const;
2626
bool IsSuccess() const;
2727
bool IsTransportError() const;
28+
bool IsUnimplementedError() const;
2829
const std::string& GetEndpoint() const;
2930
const std::multimap<std::string, std::string>& GetResponseMetadata() const;
3031
float GetConsumedRu() const;

src/api/grpc/ydb_bsconfig_v1.proto

Lines changed: 0 additions & 22 deletions
This file was deleted.

src/api/grpc/ydb_config_v1.proto

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
syntax = "proto3";
2+
3+
package Ydb.Config.V1;
4+
5+
option java_package = "com.yandex.ydb.config.v1";
6+
option java_outer_classname = "ConfigGrpc";
7+
option java_multiple_files = true;
8+
9+
import "src/api/protos/ydb_config.proto";
10+
11+
service ConfigService {
12+
// Replace one or many configs.
13+
rpc ReplaceConfig(Config.ReplaceConfigRequest) returns (Config.ReplaceConfigResponse);
14+
15+
// Fetch configs from cluster.
16+
rpc FetchConfig(Config.FetchConfigRequest) returns (Config.FetchConfigResponse);
17+
18+
// Start cluster initialization process.
19+
rpc BootstrapCluster(Config.BootstrapClusterRequest) returns (Config.BootstrapClusterResponse);
20+
}

src/api/protos/ydb_bsconfig.proto

Lines changed: 0 additions & 53 deletions
This file was deleted.

0 commit comments

Comments
 (0)