aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorinnokentii <innokentii@yandex-team.com>2023-04-28 12:20:38 +0300
committerinnokentii <innokentii@yandex-team.com>2023-04-28 12:20:38 +0300
commit286e997bc2bac59ce93a6bd4f9ca895e692655c5 (patch)
tree5e95fa29505dcf6d05355e77a61424534be492fe
parent2f4b8b4083ec7b5ea9c036b1c8fb64b6d1f16058 (diff)
downloadydb-286e997bc2bac59ce93a6bd4f9ca895e692655c5.tar.gz
Add more configs instrospection
add more configs instrospection
-rw-r--r--ydb/core/cms/console/configs_dispatcher.cpp78
-rw-r--r--ydb/core/cms/console/configs_dispatcher.h6
-rw-r--r--ydb/core/cms/console/yaml_config/console_dumper.cpp11
-rw-r--r--ydb/core/cms/console/yaml_config/util.h15
-rw-r--r--ydb/core/driver_lib/cli_utils/cli_cmds_server.cpp10
-rw-r--r--ydb/core/driver_lib/run/config.h3
-rw-r--r--ydb/core/driver_lib/run/kikimr_services_initializers.cpp4
-rw-r--r--ydb/core/driver_lib/run/kikimr_services_initializers.h2
8 files changed, 109 insertions, 20 deletions
diff --git a/ydb/core/cms/console/configs_dispatcher.cpp b/ydb/core/cms/console/configs_dispatcher.cpp
index a83f01ebd6e..833547d3fd4 100644
--- a/ydb/core/cms/console/configs_dispatcher.cpp
+++ b/ydb/core/cms/console/configs_dispatcher.cpp
@@ -6,6 +6,7 @@
#include "util.h"
#include <ydb/core/cms/console/util/config_index.h>
+#include <ydb/core/cms/console/yaml_config/util.h>
#include <ydb/core/cms/console/yaml_config/yaml_config.h>
#include <ydb/core/mind/tenant_pool.h>
#include <ydb/core/mon/mon.h>
@@ -15,6 +16,7 @@
#include <library/cpp/actors/core/mon.h>
#include <library/cpp/actors/interconnect/interconnect.h>
#include <library/cpp/json/json_reader.h>
+#include <library/cpp/json/json_writer.h>
#include <util/generic/bitmap.h>
#include <util/generic/ptr.h>
@@ -127,7 +129,11 @@ public:
return NKikimrServices::TActivity::CONFIGS_DISPATCHER_ACTOR;
}
- TConfigsDispatcher(const NKikimrConfig::TAppConfig &config, const TMap<TString, TString> &labels);
+ TConfigsDispatcher(
+ const NKikimrConfig::TAppConfig &config,
+ const TMap<TString, TString> &labels,
+ const NKikimrConfig::TAppConfig &initialCmsConfig,
+ const NKikimrConfig::TAppConfig &initialCmsYamlConfig);
void Bootstrap();
@@ -155,6 +161,8 @@ public:
void Handle(TEvConfigsDispatcher::TEvRemoveConfigSubscriptionRequest::TPtr &ev);
void Handle(TEvConsole::TEvConfigNotificationRequest::TPtr &ev);
+ void ReplyMonJson(TActorId mailbox);
+
STATEFN(StateInit)
{
TRACE_EVENT(NKikimrServices::CONFIGS_DISPATCHER);
@@ -206,8 +214,10 @@ public:
private:
TMap<TString, TString> Labels;
- NKikimrConfig::TAppConfig InitialConfig;
+ const NKikimrConfig::TAppConfig InitialConfig;
NKikimrConfig::TAppConfig CurrentConfig;
+ const NKikimrConfig::TAppConfig InitialCmsConfig;
+ const NKikimrConfig::TAppConfig InitialCmsYamlConfig;
ui64 NextRequestCookie;
TVector<TActorId> HttpRequests;
TActorId CommonSubscriptionClient;
@@ -226,11 +236,17 @@ private:
bool YamlConfigEnabled = false;
};
-TConfigsDispatcher::TConfigsDispatcher(const NKikimrConfig::TAppConfig &config, const TMap<TString, TString> &labels)
- : Labels(labels)
- , InitialConfig(config)
- , CurrentConfig(config)
- , NextRequestCookie(Now().GetValue())
+TConfigsDispatcher::TConfigsDispatcher(
+ const NKikimrConfig::TAppConfig &config,
+ const TMap<TString, TString> &labels,
+ const NKikimrConfig::TAppConfig &initialCmsConfig,
+ const NKikimrConfig::TAppConfig &initialCmsYamlConfig)
+ : Labels(labels)
+ , InitialConfig(config)
+ , CurrentConfig(config)
+ , InitialCmsConfig(initialCmsConfig)
+ , InitialCmsYamlConfig(initialCmsYamlConfig)
+ , NextRequestCookie(Now().GetValue())
{
}
@@ -327,12 +343,46 @@ NKikimrConfig::TAppConfig TConfigsDispatcher::ParseYamlProtoConfig()
void TConfigsDispatcher::Handle(NMon::TEvHttpInfo::TPtr &ev)
{
+ if (auto it = ev->Get()->Request.GetHeaders().FindHeader("Content-Type"); it && it->Value() == "application/json") {
+ ReplyMonJson(ev->Sender);
+ return;
+ }
+
if (HttpRequests.empty())
Send(GetNameserviceActorId(), new TEvInterconnect::TEvListNodes);
HttpRequests.push_back(ev->Sender);
}
+void TConfigsDispatcher::ReplyMonJson(TActorId mailbox) {
+ TStringStream str;
+ str << NMonitoring::HTTPOKJSON;
+
+ NJson::TJsonValue response;
+ response.SetType(NJson::EJsonValueType::JSON_MAP);
+
+ auto& labels = response["labels"];
+ labels.SetType(NJson::EJsonValueType::JSON_ARRAY);
+ for (auto &[key, value] : Labels) {
+ NJson::TJsonValue label;
+ label.SetType(NJson::EJsonValueType::JSON_MAP);
+ label.InsertValue("name", key);
+ label.InsertValue("value", value);
+ labels.AppendValue(std::move(label));
+ }
+
+ response.InsertValue("yaml_config", YamlConfig);
+ response.InsertValue("resolved_json_config", NJson::ReadJsonFastTree(ResolvedJsonConfig, true));
+ response.InsertValue("current_json_config", NJson::ReadJsonFastTree(NProtobufJson::Proto2Json(CurrentConfig, NYamlConfig::GetProto2JsonConfig()), true));
+ response.InsertValue("initial_json_config", NJson::ReadJsonFastTree(NProtobufJson::Proto2Json(InitialConfig, NYamlConfig::GetProto2JsonConfig()), true));
+ response.InsertValue("initial_cms_json_config", NJson::ReadJsonFastTree(NProtobufJson::Proto2Json(InitialCmsConfig, NYamlConfig::GetProto2JsonConfig()), true));
+ response.InsertValue("initial_cms_yaml_json_config", NJson::ReadJsonFastTree(NProtobufJson::Proto2Json(InitialCmsYamlConfig, NYamlConfig::GetProto2JsonConfig()), true));
+
+ NJson::WriteJson(&str, &response, {});
+
+ Send(mailbox, new NMon::TEvHttpInfoRes(str.Str(), 0, NMon::IEvHttpInfoRes::EContentType::Custom));
+}
+
void TConfigsDispatcher::Handle(TEvConsole::TEvConfigNotificationRequest::TPtr &ev)
{
const auto &rec = ev->Get()->Record;
@@ -537,6 +587,14 @@ void TConfigsDispatcher::Handle(TEvInterconnect::TEvNodesInfo::TPtr &ev)
COLLAPSED_REF_CONTENT("initial-config", "Initial config") {
NHttp::OutputConfigHTML(str, InitialConfig);
}
+ str << "<br />" << Endl;
+ COLLAPSED_REF_CONTENT("initial-cms-config", "Initial CMS config") {
+ NHttp::OutputConfigHTML(str, InitialCmsConfig);
+ }
+ str << "<br />" << Endl;
+ COLLAPSED_REF_CONTENT("initial-cms-yaml-config", "Initial CMS YAML config") {
+ NHttp::OutputConfigHTML(str, InitialCmsYamlConfig);
+ }
}
}
}
@@ -850,9 +908,11 @@ void TConfigsDispatcher::Handle(TEvConsole::TEvConfigNotificationResponse::TPtr
IActor *CreateConfigsDispatcher(
const NKikimrConfig::TAppConfig &config,
- const TMap<TString, TString> &labels)
+ const TMap<TString, TString> &labels,
+ const NKikimrConfig::TAppConfig &initialCmsConfig,
+ const NKikimrConfig::TAppConfig &initialCmsYamlConfig)
{
- return new TConfigsDispatcher(config, labels);
+ return new TConfigsDispatcher(config, labels, initialCmsConfig, initialCmsYamlConfig);
}
} // namespace NKikimr::NConsole
diff --git a/ydb/core/cms/console/configs_dispatcher.h b/ydb/core/cms/console/configs_dispatcher.h
index 0c470db68cf..879e8bf58fe 100644
--- a/ydb/core/cms/console/configs_dispatcher.h
+++ b/ydb/core/cms/console/configs_dispatcher.h
@@ -111,7 +111,11 @@ struct TEvConfigsDispatcher {
* are compared to the current one and notifications are not sent to local
* subscribers if there is no config modification detected.
*/
-IActor *CreateConfigsDispatcher(const NKikimrConfig::TAppConfig &config, const TMap<TString, TString> &labels);
+IActor *CreateConfigsDispatcher(
+ const NKikimrConfig::TAppConfig &config,
+ const TMap<TString, TString> &labels,
+ const NKikimrConfig::TAppConfig &initialCmsConfig = {},
+ const NKikimrConfig::TAppConfig &initialCmsYamlConfig = {});
inline TActorId MakeConfigsDispatcherID(ui32 node = 0) {
char x[12] = { 'c', 'o', 'n', 'f', 'i', 'g', 's', 'd', 'i', 's', 'p' };
diff --git a/ydb/core/cms/console/yaml_config/console_dumper.cpp b/ydb/core/cms/console/yaml_config/console_dumper.cpp
index 42226003559..b173afea78f 100644
--- a/ydb/core/cms/console/yaml_config/console_dumper.cpp
+++ b/ydb/core/cms/console/yaml_config/console_dumper.cpp
@@ -1,8 +1,9 @@
#include "console_dumper.h"
+#include "util.h"
+
#include <ydb/core/cms/console/yaml_config/yaml_config.h>
#include <ydb/core/cms/console/util/config_index.h>
-#include <library/cpp/protobuf/json/proto2json.h>
#include <library/cpp/yaml/fyamlcpp/fyamlcpp.h>
namespace NYamlConfig {
@@ -169,14 +170,6 @@ NKikimrConfig::TAppConfig BundleDomainConfig(const TDomainItemsContainer &items)
return config;
}
-NProtobufJson::TProto2JsonConfig GetProto2JsonConfig() {
- return NProtobufJson::TProto2JsonConfig()
- .SetFormatOutput(false)
- .SetEnumMode(NProtobufJson::TProto2JsonConfig::EnumName)
- .SetFieldNameMode(NProtobufJson::TProto2JsonConfig::FieldNameSnakeCaseDense)
- .SetStringifyNumbers(NProtobufJson::TProto2JsonConfig::StringifyLongNumbersForDouble);
-}
-
TVector<TSelectorData> FillSelectorsData(const TSelectorItemsContainer &items) {
TVector<TSelectorData> selectors;
diff --git a/ydb/core/cms/console/yaml_config/util.h b/ydb/core/cms/console/yaml_config/util.h
new file mode 100644
index 00000000000..30a97705bb4
--- /dev/null
+++ b/ydb/core/cms/console/yaml_config/util.h
@@ -0,0 +1,15 @@
+#pragma once
+
+#include <library/cpp/protobuf/json/proto2json.h>
+
+namespace NYamlConfig {
+
+inline NProtobufJson::TProto2JsonConfig GetProto2JsonConfig() {
+ return NProtobufJson::TProto2JsonConfig()
+ .SetFormatOutput(false)
+ .SetEnumMode(NProtobufJson::TProto2JsonConfig::EnumName)
+ .SetFieldNameMode(NProtobufJson::TProto2JsonConfig::FieldNameSnakeCaseDense)
+ .SetStringifyNumbers(NProtobufJson::TProto2JsonConfig::StringifyLongNumbersForDouble);
+}
+
+} // NYamlConfig
diff --git a/ydb/core/driver_lib/cli_utils/cli_cmds_server.cpp b/ydb/core/driver_lib/cli_utils/cli_cmds_server.cpp
index a111b88ccee..85cfdadeaa1 100644
--- a/ydb/core/driver_lib/cli_utils/cli_cmds_server.cpp
+++ b/ydb/core/driver_lib/cli_utils/cli_cmds_server.cpp
@@ -790,6 +790,11 @@ protected:
yamlConfig);
}
+ RunConfig.InitialCmsConfig.CopyFrom(appConfig);
+
+ RunConfig.InitialCmsYamlConfig.CopyFrom(yamlConfig);
+ NYamlConfig::ReplaceUnmanagedKinds(appConfig, RunConfig.InitialCmsYamlConfig);
+
if (yamlConfig.HasYamlConfigEnabled() && yamlConfig.GetYamlConfigEnabled()) {
BaseConfig.Swap(&yamlConfig);
NYamlConfig::ReplaceUnmanagedKinds(result.GetConfig(), BaseConfig);
@@ -1113,6 +1118,11 @@ protected:
yamlConfig);
}
+ RunConfig.InitialCmsConfig.CopyFrom(result.GetConfig());
+
+ RunConfig.InitialCmsYamlConfig.CopyFrom(yamlConfig);
+ NYamlConfig::ReplaceUnmanagedKinds(result.GetConfig(), RunConfig.InitialCmsYamlConfig);
+
if (yamlConfig.HasYamlConfigEnabled() && yamlConfig.GetYamlConfigEnabled()) {
appConfig = yamlConfig;
NYamlConfig::ReplaceUnmanagedKinds(result.GetConfig(), appConfig);
diff --git a/ydb/core/driver_lib/run/config.h b/ydb/core/driver_lib/run/config.h
index ae8f8ee61e2..c486031d786 100644
--- a/ydb/core/driver_lib/run/config.h
+++ b/ydb/core/driver_lib/run/config.h
@@ -121,6 +121,9 @@ struct TKikimrRunConfig {
TString ClusterName;
+ NKikimrConfig::TAppConfig InitialCmsConfig;
+ NKikimrConfig::TAppConfig InitialCmsYamlConfig;
+
TKikimrRunConfig(NKikimrConfig::TAppConfig& appConfig,
ui32 nodeId = 0, const TKikimrScopeId& scopeId = {});
};
diff --git a/ydb/core/driver_lib/run/kikimr_services_initializers.cpp b/ydb/core/driver_lib/run/kikimr_services_initializers.cpp
index 69dbfcd74dc..561d7ad221c 100644
--- a/ydb/core/driver_lib/run/kikimr_services_initializers.cpp
+++ b/ydb/core/driver_lib/run/kikimr_services_initializers.cpp
@@ -2587,11 +2587,13 @@ void THttpProxyServiceInitializer::InitializeServices(NActors::TActorSystemSetup
TConfigsDispatcherInitializer::TConfigsDispatcherInitializer(const TKikimrRunConfig& runConfig)
: IKikimrServicesInitializer(runConfig)
, Labels(runConfig.Labels)
+ , InitialCmsConfig(runConfig.InitialCmsConfig)
+ , InitialCmsYamlConfig(runConfig.InitialCmsYamlConfig)
{
}
void TConfigsDispatcherInitializer::InitializeServices(NActors::TActorSystemSetup* setup, const NKikimr::TAppData* appData) {
- IActor* actor = NConsole::CreateConfigsDispatcher(Config, Labels);
+ IActor* actor = NConsole::CreateConfigsDispatcher(Config, Labels, InitialCmsConfig, InitialCmsYamlConfig);
setup->LocalServices.push_back(std::pair<TActorId, TActorSetupCmd>(
NConsole::MakeConfigsDispatcherID(NodeId),
TActorSetupCmd(actor, TMailboxType::HTSwap, appData->UserPoolId)));
diff --git a/ydb/core/driver_lib/run/kikimr_services_initializers.h b/ydb/core/driver_lib/run/kikimr_services_initializers.h
index 913de4961f2..20b109ae4cf 100644
--- a/ydb/core/driver_lib/run/kikimr_services_initializers.h
+++ b/ydb/core/driver_lib/run/kikimr_services_initializers.h
@@ -459,6 +459,8 @@ public:
private:
TMap<TString, TString> Labels;
+ NKikimrConfig::TAppConfig InitialCmsConfig;
+ NKikimrConfig::TAppConfig InitialCmsYamlConfig;
};
class TConfigsCacheInitializer : public IKikimrServicesInitializer {