Skip to content

Commit 240a96f

Browse files
mregrockGazizonoki
authored andcommitted
Add admin cluster config generate command (#14711)
1 parent fb8ddf6 commit 240a96f

File tree

4 files changed

+65
-0
lines changed

4 files changed

+65
-0
lines changed

include/ydb-cpp-sdk/client/draft/ydb_dynamic_config.h

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -160,6 +160,21 @@ struct TVerboseResolveConfigResult : public TStatus {
160160

161161
using TAsyncVerboseResolveConfigResult = NThreading::TFuture<TVerboseResolveConfigResult>;
162162

163+
struct TFetchStartupConfigResult : public TStatus {
164+
TFetchStartupConfigResult(TStatus&& status, std::string&& config)
165+
: TStatus(std::move(status))
166+
, Config_(std::move(config))
167+
{}
168+
169+
const std::string& GetConfig() const {
170+
return Config_;
171+
}
172+
173+
private:
174+
std::string Config_;
175+
};
176+
177+
using TAsyncFetchStartupConfigResult = NThreading::TFuture<TFetchStartupConfigResult>;
163178

164179
struct TDynamicConfigClientSettings : public TCommonClientSettingsBase<TDynamicConfigClientSettings> {
165180
using TSelf = TDynamicConfigClientSettings;
@@ -240,6 +255,9 @@ class TDynamicConfigClient {
240255
const std::map<uint64_t, std::string>& volatileConfigs,
241256
const TClusterConfigSettings& settings = {});
242257

258+
// Fetch startup config
259+
TAsyncFetchStartupConfigResult FetchStartupConfig(const TClusterConfigSettings& settings = {});
260+
243261
private:
244262
std::shared_ptr<TImpl> Impl_;
245263
};

src/api/grpc/draft/ydb_dynamic_config_v1.proto

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,4 +46,7 @@ service DynamicConfigService {
4646

4747
// Resolve config for all possible labels combinations.
4848
rpc ResolveAllConfig(DynamicConfig.ResolveAllConfigRequest) returns (DynamicConfig.ResolveAllConfigResponse);
49+
50+
// Generate dynamic config based on cluster's static config.
51+
rpc FetchStartupConfig(DynamicConfig.FetchStartupConfigRequest) returns (DynamicConfig.FetchStartupConfigResponse);
4952
}

src/api/protos/draft/ydb_dynamic_config.proto

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -228,3 +228,17 @@ message ResolveAllConfigResult {
228228
// Verbose resolved configs
229229
repeated ResolvedConfig configs = 2;
230230
}
231+
232+
message FetchStartupConfigRequest {
233+
Ydb.Operations.OperationParams operation_params = 1;
234+
}
235+
236+
message FetchStartupConfigResponse {
237+
// Result of request will be inside operation.
238+
Ydb.Operations.Operation operation = 1;
239+
}
240+
241+
message FetchStartupConfigResult {
242+
// YAML document with generated dynamic config
243+
string config = 1;
244+
}

src/client/draft/ydb_dynamic_config.cpp

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -339,6 +339,32 @@ class TDynamicConfigClient::TImpl : public TClientImplCommon<TDynamicConfigClien
339339

340340
return promise.GetFuture();
341341
}
342+
343+
TAsyncFetchStartupConfigResult FetchStartupConfig(const TClusterConfigSettings& settings = {}) {
344+
auto request = MakeOperationRequest<Ydb::DynamicConfig::FetchStartupConfigRequest>(settings);
345+
346+
auto promise = NThreading::NewPromise<TFetchStartupConfigResult>();
347+
348+
auto extractor = [promise] (google::protobuf::Any* any, TPlainStatus status) mutable {
349+
std::string config;
350+
if (Ydb::DynamicConfig::FetchStartupConfigResult result; any && any->UnpackTo(&result)) {
351+
config = result.config();
352+
}
353+
354+
TFetchStartupConfigResult val(TStatus(std::move(status)), std::move(config));
355+
promise.SetValue(std::move(val));
356+
};
357+
358+
Connections_->RunDeferred<Ydb::DynamicConfig::V1::DynamicConfigService, Ydb::DynamicConfig::FetchStartupConfigRequest, Ydb::DynamicConfig::FetchStartupConfigResponse>(
359+
std::move(request),
360+
extractor,
361+
&Ydb::DynamicConfig::V1::DynamicConfigService::Stub::AsyncFetchStartupConfig,
362+
DbDriverState_,
363+
INITIAL_DEFERRED_CALL_DELAY,
364+
TRpcRequestSettings::Make(settings));
365+
366+
return promise.GetFuture();
367+
}
342368
};
343369

344370
TDynamicConfigClient::TDynamicConfigClient(const TDriver& driver)
@@ -434,4 +460,8 @@ TAsyncVerboseResolveConfigResult TDynamicConfigClient::VerboseResolveConfig(
434460
return Impl_->VerboseResolveConfig(config, volatileConfigs, settings);
435461
}
436462

463+
TAsyncFetchStartupConfigResult TDynamicConfigClient::FetchStartupConfig(const TClusterConfigSettings& settings) {
464+
return Impl_->FetchStartupConfig(settings);
465+
}
466+
437467
} // namespace NYdb::V3::NDynamicConfig

0 commit comments

Comments
 (0)