diff options
author | Innokentii Mokin <innokentii@ydb.tech> | 2024-12-24 20:58:15 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-12-24 20:58:15 +0300 |
commit | 20b281ba6ab73dbb8b37acc49402a0f021223afe (patch) | |
tree | 23451e068c26e354a40823bbfb0df2f3f40d5dcc | |
parent | 8165ac169019ce18729318c775eb674f82843c6d (diff) | |
download | ydb-20b281ba6ab73dbb8b37acc49402a0f021223afe.tar.gz |
Make console ui indepentent of proto changes (#12927)
-rw-r--r-- | ydb/core/cms/json_proxy_proto.h | 56 |
1 files changed, 29 insertions, 27 deletions
diff --git a/ydb/core/cms/json_proxy_proto.h b/ydb/core/cms/json_proxy_proto.h index d7983e9b2d..74fa3c4b72 100644 --- a/ydb/core/cms/json_proxy_proto.h +++ b/ydb/core/cms/json_proxy_proto.h @@ -17,7 +17,7 @@ #include <util/generic/serialized_enum.h> -#include <iostream> +#include <unordered_map> namespace NKikimr::NCms { @@ -33,6 +33,7 @@ public: TJsonProxyProto(NMon::TEvHttpInfo::TPtr &event) : RequestEvent(event) { + RegisterDescriptor(NKikimrConfig::TImmediateControlsConfig::descriptor()); } void Bootstrap(const TActorContext &ctx) { @@ -62,32 +63,13 @@ protected: return ReplyWithEnumDescription(*NKikimrBlobStorage::TPDiskState::E_descriptor(), ctx); } else if (cgi.Has("type")) { TString name = cgi.Get("type"); - if (name == ".NKikimrConfig.TImmediateControlsConfig") - return ReplyWithTypeDescription(*NKikimrConfig::TImmediateControlsConfig::descriptor(), ctx); - else if (name == ".NKikimrConfig.TImmediateControlsConfig.TDataShardControls") - return ReplyWithTypeDescription(*NKikimrConfig::TImmediateControlsConfig::TDataShardControls::descriptor(), ctx); - else if (name == ".NKikimrConfig.TImmediateControlsConfig.TDataShardControls.TExecutionProfileOptions") - return ReplyWithTypeDescription(*NKikimrConfig::TImmediateControlsConfig::TDataShardControls::TExecutionProfileOptions::descriptor(), ctx); - else if (name == ".NKikimrConfig.TImmediateControlsConfig.TTxLimitControls") - return ReplyWithTypeDescription(*NKikimrConfig::TImmediateControlsConfig::TTxLimitControls::descriptor(), ctx); - else if (name == ".NKikimrConfig.TImmediateControlsConfig.TCoordinatorControls") - return ReplyWithTypeDescription(*NKikimrConfig::TImmediateControlsConfig::TCoordinatorControls::descriptor(), ctx); - else if (name == ".NKikimrConfig.TImmediateControlsConfig.TSchemeShardControls") - return ReplyWithTypeDescription(*NKikimrConfig::TImmediateControlsConfig::TSchemeShardControls::descriptor(), ctx); - else if (name == ".NKikimrConfig.TImmediateControlsConfig.TTCMallocControls") - return ReplyWithTypeDescription(*NKikimrConfig::TImmediateControlsConfig::TTCMallocControls::descriptor(), ctx); - else if (name == ".NKikimrConfig.TImmediateControlsConfig.TVDiskControls") - return ReplyWithTypeDescription(*NKikimrConfig::TImmediateControlsConfig::TVDiskControls::descriptor(), ctx); - else if (name == ".NKikimrConfig.TImmediateControlsConfig.TPDiskControls") - return ReplyWithTypeDescription(*NKikimrConfig::TImmediateControlsConfig::TPDiskControls::descriptor(), ctx); - else if (name == ".NKikimrConfig.TImmediateControlsConfig.TTabletControls") - return ReplyWithTypeDescription(*NKikimrConfig::TImmediateControlsConfig::TTabletControls::descriptor(), ctx); - else if (name == ".NKikimrConfig.TImmediateControlsConfig.TDSProxyControls") - return ReplyWithTypeDescription(*NKikimrConfig::TImmediateControlsConfig::TDSProxyControls::descriptor(), ctx); - else if (name == ".NKikimrConfig.TImmediateControlsConfig.TBlobStorageControllerControls") - return ReplyWithTypeDescription(*NKikimrConfig::TImmediateControlsConfig::TBlobStorageControllerControls::descriptor(), ctx); - else if (name == ".NKikimrConfig.TImmediateControlsConfig.TTableServiceControls") - return ReplyWithTypeDescription(*NKikimrConfig::TImmediateControlsConfig::TTableServiceControls::descriptor(), ctx); + if (name.length() > 1) { + name = name.substr(1); + + if (auto it = TypeRegistry.find(name); it != TypeRegistry.end()) { + return ReplyWithTypeDescription(*it->second, ctx); + } + } } ctx.Send(RequestEvent->Sender, @@ -197,7 +179,27 @@ protected: NMon::IEvHttpInfoRes::EContentType::Custom)); } + void RegisterDescriptor(const google::protobuf::Descriptor* desc) { + if (!desc) { + return; + } + + if (TypeRegistry.contains(desc->full_name())) { + return; + } + + TypeRegistry[desc->full_name()] = desc; + + for (int i = 0; i < desc->field_count(); ++i) { + auto* field = desc->field(i); + if (const auto* message = field->message_type(); message) { + RegisterDescriptor(message); + } + } + } + NMon::TEvHttpInfo::TPtr RequestEvent; + std::unordered_map<TString, const google::protobuf::Descriptor*> TypeRegistry; }; } // namespace NKikimr::NCms |