Skip to content

Commit 74b61d7

Browse files
authored
Add admin cluster config generate command (#14711)
1 parent 6192c83 commit 74b61d7

File tree

25 files changed

+359
-2
lines changed

25 files changed

+359
-2
lines changed

ydb/core/cms/console/configs_dispatcher.cpp

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -181,6 +181,7 @@ class TConfigsDispatcher : public TActorBootstrapped<TConfigsDispatcher> {
181181
void Handle(TEvConfigsDispatcher::TEvRemoveConfigSubscriptionRequest::TPtr &ev);
182182
void Handle(TEvConsole::TEvConfigNotificationRequest::TPtr &ev);
183183
void Handle(TEvConsole::TEvGetNodeLabelsRequest::TPtr &ev);
184+
void Handle(TEvConsole::TEvFetchStartupConfigRequest::TPtr &ev);
184185

185186
void ReplyMonJson(TActorId mailbox);
186187

@@ -199,6 +200,7 @@ class TConfigsDispatcher : public TActorBootstrapped<TConfigsDispatcher> {
199200
hFuncTraced(TEvConfigsDispatcher::TEvRemoveConfigSubscriptionRequest, Handle);
200201
// Resolve
201202
hFunc(TEvConsole::TEvGetNodeLabelsRequest, Handle);
203+
hFunc(TEvConsole::TEvFetchStartupConfigRequest, Handle);
202204
default:
203205
EnqueueEvent(ev);
204206
break;
@@ -223,7 +225,7 @@ class TConfigsDispatcher : public TActorBootstrapped<TConfigsDispatcher> {
223225
IgnoreFunc(TEvConfigsDispatcher::TEvSetConfigSubscriptionResponse);
224226
// Resolve
225227
hFunc(TEvConsole::TEvGetNodeLabelsRequest, Handle);
226-
228+
hFunc(TEvConsole::TEvFetchStartupConfigRequest, Handle);
227229
// Ignore these console requests until we get rid of persistent subscriptions-related code
228230
IgnoreFunc(TEvConsole::TEvAddConfigSubscriptionResponse);
229231
IgnoreFunc(TEvConsole::TEvGetNodeConfigResponse);
@@ -242,6 +244,7 @@ class TConfigsDispatcher : public TActorBootstrapped<TConfigsDispatcher> {
242244
const std::variant<std::monostate, TDenyList, TAllowList> ItemsServeRules;
243245
const NKikimrConfig::TAppConfig BaseConfig;
244246
NKikimrConfig::TAppConfig CurrentConfig;
247+
const TString StartupConfigYaml;
245248
NKikimrConfig::TAppConfig CandidateStartupConfig;
246249
bool StartupConfigProcessError = false;
247250
bool StartupConfigProcessDiff = false;
@@ -275,6 +278,7 @@ TConfigsDispatcher::TConfigsDispatcher(const TConfigsDispatcherInitInfo& initInf
275278
, ItemsServeRules(initInfo.ItemsServeRules)
276279
, BaseConfig(initInfo.InitialConfig)
277280
, CurrentConfig(initInfo.InitialConfig)
281+
, StartupConfigYaml(initInfo.StartupConfigYaml)
278282
, CandidateStartupConfig(initInfo.InitialConfig)
279283
, DebugInfo(initInfo.DebugInfo)
280284
, RecordedInitialConfiguratorDeps(std::move(initInfo.RecordedInitialConfiguratorDeps))
@@ -1232,6 +1236,15 @@ void TConfigsDispatcher::Handle(TEvConsole::TEvGetNodeLabelsRequest::TPtr &ev) {
12321236
Send(ev->Sender, Response.Release());
12331237
}
12341238

1239+
void TConfigsDispatcher::Handle(TEvConsole::TEvFetchStartupConfigRequest::TPtr &ev) {
1240+
auto Response = MakeHolder<TEvConsole::TEvFetchStartupConfigResponse>();
1241+
1242+
auto* resp = Response->Record.MutableResponse();
1243+
resp->set_config(StartupConfigYaml);
1244+
1245+
Send(ev->Sender, Response.Release());
1246+
}
1247+
12351248
IActor *CreateConfigsDispatcher(const TConfigsDispatcherInitInfo& initInfo) {
12361249
return new TConfigsDispatcher(initInfo);
12371250
}

ydb/core/cms/console/console.h

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ namespace TEvConsole {
5656
EvGetAllMetadataRequest,
5757
EvGetNodeLabelsRequest,
5858
EvIsYamlReadOnlyRequest,
59-
59+
EvFetchStartupConfigRequest,
6060
// responses
6161
EvCreateTenantResponse = EvCreateTenantRequest + 1024,
6262
EvAlterTenantResponse,
@@ -102,6 +102,7 @@ namespace TEvConsole {
102102
EvGenericError,
103103

104104
EvIsYamlReadOnlyResponse,
105+
EvFetchStartupConfigResponse,
105106

106107
EvEnd
107108
};
@@ -225,6 +226,10 @@ namespace TEvConsole {
225226

226227
struct TEvResolveAllConfigResponse : public TEventShortDebugPB<TEvResolveAllConfigResponse, NKikimrConsole::TResolveAllConfigResponse, EvResolveAllConfigResponse> {};
227228

229+
struct TEvFetchStartupConfigRequest : public TEventShortDebugPB<TEvFetchStartupConfigRequest, NKikimrConsole::TFetchStartupConfigRequest, EvFetchStartupConfigRequest> {};
230+
231+
struct TEvFetchStartupConfigResponse : public TEventShortDebugPB<TEvFetchStartupConfigResponse, NKikimrConsole::TFetchStartupConfigResponse, EvFetchStartupConfigResponse> {};
232+
228233
struct TEvUnauthorized : public TEventShortDebugPB<TEvUnauthorized, NKikimrConsole::TUnauthorized, EvUnauthorized> {};
229234

230235
struct TEvDisabled : public TEventShortDebugPB<TEvDisabled, NKikimrConsole::TDisabled, EvDisabled> {};

ydb/core/cms/console/console_configs_manager.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -861,6 +861,11 @@ void TConfigsManager::Handle(TEvConsole::TEvGetNodeLabelsRequest::TPtr &ev, cons
861861
}
862862
}
863863

864+
void TConfigsManager::Handle(TEvConsole::TEvFetchStartupConfigRequest::TPtr &ev, const TActorContext &ctx)
865+
{
866+
ctx.Send(ev->Forward(MakeConfigsDispatcherID(SelfId().NodeId())));
867+
}
868+
864869
void TConfigsManager::Handle(TEvConsole::TEvGetAllMetadataRequest::TPtr &ev, const TActorContext &ctx)
865870
{
866871
TxProcessor->ProcessTx(CreateTxGetYamlMetadata(ev), ctx);

ydb/core/cms/console/console_configs_manager.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -193,6 +193,7 @@ class TConfigsManager : public TActorBootstrapped<TConfigsManager> {
193193
void Handle(TEvInterconnect::TEvNodesInfo::TPtr &ev, const TActorContext &ctx);
194194
void Handle(TEvConsole::TEvReplaceYamlConfigRequest::TPtr & ev, const TActorContext & ctx);
195195
void Handle(TEvConsole::TEvSetYamlConfigRequest::TPtr & ev, const TActorContext & ctx);
196+
void Handle(TEvConsole::TEvFetchStartupConfigRequest::TPtr & ev, const TActorContext & ctx);
196197
void HandleUnauthorized(TEvConsole::TEvReplaceYamlConfigRequest::TPtr & ev, const TActorContext & ctx);
197198
void HandleUnauthorized(TEvConsole::TEvSetYamlConfigRequest::TPtr & ev, const TActorContext & ctx);
198199
void Handle(TEvConsole::TEvDropConfigRequest::TPtr & ev, const TActorContext & ctx);
@@ -248,6 +249,7 @@ class TConfigsManager : public TActorBootstrapped<TConfigsManager> {
248249
HFunc(TEvConsole::TEvGetAllConfigsRequest, HandleWithRights);
249250
HFunc(TEvConsole::TEvGetNodeLabelsRequest, HandleWithRights);
250251
HFunc(TEvConsole::TEvGetAllMetadataRequest, HandleWithRights);
252+
HFunc(TEvConsole::TEvFetchStartupConfigRequest, HandleWithRights);
251253
HFunc(TEvConsole::TEvAddVolatileConfigRequest, HandleWithRights);
252254
HFunc(TEvConsole::TEvRemoveVolatileConfigRequest, HandleWithRights);
253255
FFunc(TEvConsole::EvGetConfigItemsRequest, ForwardToConfigsProvider);

ydb/core/cms/console/console_impl.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,7 @@ class TConsole : public TActor<TConsole>
114114
FFunc(TEvConsole::EvDropConfigRequest, ForwardToConfigsManager);
115115
FFunc(TEvConsole::EvResolveConfigRequest, ForwardToConfigsManager);
116116
FFunc(TEvConsole::EvResolveAllConfigRequest, ForwardToConfigsManager);
117+
FFunc(TEvConsole::EvFetchStartupConfigRequest, ForwardToConfigsManager);
117118
FFunc(TEvConsole::EvGetConfigSubscriptionRequest, ForwardToConfigsManager);
118119
FFunc(TEvConsole::EvGetNodeConfigItemsRequest, ForwardToConfigsManager);
119120
FFunc(TEvConsole::EvGetNodeConfigRequest, ForwardToConfigsManager);

ydb/core/config/init/init.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -591,6 +591,7 @@ void LoadMainYamlConfig(TConfigRefs refs, const TString& mainYamlConfigFile, NKi
591591
IProtoConfigFileProvider& protoConfigFileProvider = refs.ProtoConfigFileProvider;
592592

593593
const TString mainYamlConfigString = protoConfigFileProvider.GetProtoFromFile(mainYamlConfigFile, errorCollector);
594+
appConfig.SetStartupConfigYaml(mainYamlConfigString);
594595

595596
if (appConfig.GetSelfManagementConfig().GetEnabled()) {
596597
// fill in InitialConfigYaml only when self-management through distconf is enabled

ydb/core/config/init/init.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -228,6 +228,7 @@ struct TDebugInfo {
228228

229229
struct TConfigsDispatcherInitInfo {
230230
NKikimrConfig::TAppConfig InitialConfig;
231+
TString StartupConfigYaml;
231232
TMap<TString, TString> Labels;
232233
std::variant<std::monostate, TDenyList, TAllowList> ItemsServeRules;
233234
std::optional<TDebugInfo> DebugInfo;

ydb/core/config/init/init_impl.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1396,6 +1396,7 @@ class TInitialConfiguratorImpl
13961396
servicesMask = ServicesMask;
13971397
clusterName = ClusterName;
13981398
configsDispatcherInitInfo.InitialConfig = appConfig;
1399+
configsDispatcherInitInfo.StartupConfigYaml = appConfig.GetStartupConfigYaml();
13991400
configsDispatcherInitInfo.ItemsServeRules = std::monostate{},
14001401
configsDispatcherInitInfo.Labels = Labels;
14011402
configsDispatcherInitInfo.DebugInfo = TDebugInfo {

ydb/core/grpc_services/rpc_dynamic_config.cpp

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,9 @@ using TEvResolveConfigRequest = TGrpcRequestOperationCall<DynamicConfig::Resolve
4343
using TEvResolveAllConfigRequest = TGrpcRequestOperationCall<DynamicConfig::ResolveAllConfigRequest,
4444
DynamicConfig::ResolveAllConfigResponse>;
4545

46+
using TEvFetchStartupConfigRequest = TGrpcRequestOperationCall<DynamicConfig::FetchStartupConfigRequest,
47+
DynamicConfig::FetchStartupConfigResponse>;
48+
4649
template <typename TRequest, typename TConsoleRequest, typename TConsoleResponse>
4750
class TDynamicConfigRPC : public TRpcOperationRequestActor<TDynamicConfigRPC<TRequest, TConsoleRequest, TConsoleResponse>, TRequest> {
4851
using TThis = TDynamicConfigRPC<TRequest, TConsoleRequest, TConsoleResponse>;
@@ -121,6 +124,10 @@ class TDynamicConfigRPC : public TRpcOperationRequestActor<TDynamicConfigRPC<TRe
121124
return TBase::ReplyWithResult(Ydb::StatusIds::SUCCESS, ev->Get()->Record.GetResponse(), TActivationContext::AsActorContext());
122125
}
123126

127+
void Handle(TEvConsole::TEvFetchStartupConfigResponse::TPtr& ev) {
128+
return TBase::ReplyWithResult(Ydb::StatusIds::SUCCESS, ev->Get()->Record.GetResponse(), TActivationContext::AsActorContext());
129+
}
130+
124131
void Handle(TEvConsole::TEvUnauthorized::TPtr&) {
125132
::google::protobuf::RepeatedPtrField< ::Ydb::Issue::IssueMessage> issues;
126133
auto issue = issues.Add();
@@ -283,4 +290,10 @@ void DoResolveAllConfigRequest(std::unique_ptr<IRequestOpCtx> p, const IFacility
283290
TEvConsole::TEvResolveAllConfigResponse>(p.release()));
284291
}
285292

293+
void DoFetchStartupConfigRequest(std::unique_ptr<IRequestOpCtx> p, const IFacilityProvider &) {
294+
TActivationContext::AsActorContext().Register(
295+
new TDynamicConfigRPC<TEvFetchStartupConfigRequest,
296+
TEvConsole::TEvFetchStartupConfigRequest,
297+
TEvConsole::TEvFetchStartupConfigResponse>(p.release()));
298+
}
286299
} // namespace NKikimr::NGRpcService

ydb/core/grpc_services/service_dynamic_config.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,5 +28,7 @@ void DoResolveConfigRequest(std::unique_ptr<IRequestOpCtx> p, const IFacilityPro
2828

2929
void DoResolveAllConfigRequest(std::unique_ptr<IRequestOpCtx> p, const IFacilityProvider&);
3030

31+
void DoFetchStartupConfigRequest(std::unique_ptr<IRequestOpCtx> p, const IFacilityProvider&);
32+
3133
}
3234
}

0 commit comments

Comments
 (0)