diff options
author | shmel1k <shmel1k@ydb.tech> | 2023-04-19 10:16:14 +0300 |
---|---|---|
committer | shmel1k <shmel1k@ydb.tech> | 2023-04-19 10:16:14 +0300 |
commit | d5a6daee779ae552dd294dbcfffe42d0ceef8cb0 (patch) | |
tree | fb8c9db13b374acd6081e29326878db2a8a3f520 | |
parent | bbce3f5cecdf453747a498f97c3a644782ba80ec (diff) | |
download | ydb-d5a6daee779ae552dd294dbcfffe42d0ceef8cb0.tar.gz |
add describe for coordination node
14 files changed, 108 insertions, 9 deletions
diff --git a/ydb/public/lib/ydb_cli/commands/CMakeLists.darwin-x86_64.txt b/ydb/public/lib/ydb_cli/commands/CMakeLists.darwin-x86_64.txt index 05899f2c44..11902c60d2 100644 --- a/ydb/public/lib/ydb_cli/commands/CMakeLists.darwin-x86_64.txt +++ b/ydb/public/lib/ydb_cli/commands/CMakeLists.darwin-x86_64.txt @@ -31,6 +31,7 @@ target_link_libraries(clicommands PUBLIC lib-ydb_cli-import topic cpp-client-draft + cpp-client-ydb_coordination cpp-client-ydb_discovery cpp-client-ydb_export cpp-client-ydb_import @@ -86,6 +87,7 @@ target_link_libraries(clicommands.global PUBLIC lib-ydb_cli-import topic cpp-client-draft + cpp-client-ydb_coordination cpp-client-ydb_discovery cpp-client-ydb_export cpp-client-ydb_import diff --git a/ydb/public/lib/ydb_cli/commands/CMakeLists.linux-aarch64.txt b/ydb/public/lib/ydb_cli/commands/CMakeLists.linux-aarch64.txt index a3cb431493..a14760c1e3 100644 --- a/ydb/public/lib/ydb_cli/commands/CMakeLists.linux-aarch64.txt +++ b/ydb/public/lib/ydb_cli/commands/CMakeLists.linux-aarch64.txt @@ -32,6 +32,7 @@ target_link_libraries(clicommands PUBLIC lib-ydb_cli-import topic cpp-client-draft + cpp-client-ydb_coordination cpp-client-ydb_discovery cpp-client-ydb_export cpp-client-ydb_import @@ -88,6 +89,7 @@ target_link_libraries(clicommands.global PUBLIC lib-ydb_cli-import topic cpp-client-draft + cpp-client-ydb_coordination cpp-client-ydb_discovery cpp-client-ydb_export cpp-client-ydb_import diff --git a/ydb/public/lib/ydb_cli/commands/CMakeLists.linux-x86_64.txt b/ydb/public/lib/ydb_cli/commands/CMakeLists.linux-x86_64.txt index a3cb431493..a14760c1e3 100644 --- a/ydb/public/lib/ydb_cli/commands/CMakeLists.linux-x86_64.txt +++ b/ydb/public/lib/ydb_cli/commands/CMakeLists.linux-x86_64.txt @@ -32,6 +32,7 @@ target_link_libraries(clicommands PUBLIC lib-ydb_cli-import topic cpp-client-draft + cpp-client-ydb_coordination cpp-client-ydb_discovery cpp-client-ydb_export cpp-client-ydb_import @@ -88,6 +89,7 @@ target_link_libraries(clicommands.global PUBLIC lib-ydb_cli-import topic cpp-client-draft + cpp-client-ydb_coordination cpp-client-ydb_discovery cpp-client-ydb_export cpp-client-ydb_import diff --git a/ydb/public/lib/ydb_cli/commands/CMakeLists.windows-x86_64.txt b/ydb/public/lib/ydb_cli/commands/CMakeLists.windows-x86_64.txt index 05899f2c44..11902c60d2 100644 --- a/ydb/public/lib/ydb_cli/commands/CMakeLists.windows-x86_64.txt +++ b/ydb/public/lib/ydb_cli/commands/CMakeLists.windows-x86_64.txt @@ -31,6 +31,7 @@ target_link_libraries(clicommands PUBLIC lib-ydb_cli-import topic cpp-client-draft + cpp-client-ydb_coordination cpp-client-ydb_discovery cpp-client-ydb_export cpp-client-ydb_import @@ -86,6 +87,7 @@ target_link_libraries(clicommands.global PUBLIC lib-ydb_cli-import topic cpp-client-draft + cpp-client-ydb_coordination cpp-client-ydb_discovery cpp-client-ydb_export cpp-client-ydb_import diff --git a/ydb/public/lib/ydb_cli/commands/ydb_service_scheme.cpp b/ydb/public/lib/ydb_cli/commands/ydb_service_scheme.cpp index 41440aa616..d85e5dc82f 100644 --- a/ydb/public/lib/ydb_cli/commands/ydb_service_scheme.cpp +++ b/ydb/public/lib/ydb_cli/commands/ydb_service_scheme.cpp @@ -1,10 +1,10 @@ #include "ydb_service_scheme.h" #include <ydb/public/lib/json_value/ydb_json_value.h> -#include <ydb/public/sdk/cpp/client/ydb_proto/accessor.h> #include <ydb/public/lib/ydb_cli/common/pretty_table.h> #include <ydb/public/lib/ydb_cli/common/print_utils.h> #include <ydb/public/lib/ydb_cli/common/scheme_printers.h> +#include <ydb/public/sdk/cpp/client/ydb_proto/accessor.h> #include <util/string/join.h> @@ -182,6 +182,8 @@ int TCommandDescribe::PrintPathResponse(TDriver& driver, const NScheme::TDescrib case NScheme::ESchemeEntryType::PqGroup: case NScheme::ESchemeEntryType::Topic: return DescribeTopic(driver); + case NScheme::ESchemeEntryType::CoordinationNode: + return DescribeCoordinationNode(driver); default: WarnAboutTableOptions(); PrintEntryVerbose(entry, ShowPermissions); @@ -366,6 +368,60 @@ int TCommandDescribe::DescribeColumnTable(TDriver& driver) { return PrintTableResponse(result); } +int TCommandDescribe::PrintCoordinationNodeResponse(const NYdb::NCoordination::TDescribeNodeResult& result) const { + switch (OutputFormat) { + case EOutputFormat::Default: + case EOutputFormat::Pretty: + return PrintCoordinationNodeResponsePretty(result.GetResult()); + case EOutputFormat::Json: + Cerr << "Warning! Option --json is deprecated and will be removed soon. " + << "Use \"--format proto-json-base64\" option instead." << Endl; + [[fallthrough]]; + case EOutputFormat::ProtoJsonBase64: + return PrintCoordinationNodeResponseProtoJsonBase64(result.GetResult()); + default: + throw TMisuseException() << "This command doesn't support " << OutputFormat << " output format"; + } + return EXIT_SUCCESS; +} + +int TCommandDescribe::PrintCoordinationNodeResponsePretty(const NYdb::NCoordination::TNodeDescription& result) const { + Cout << "AttachConsistencyMode: " << result.GetAttachConsistencyMode() << Endl; + Cout << "ReadConsistencyMode: " << result.GetReadConsistencyMode() << Endl; + if (result.GetSessionGracePeriod().Defined()) { + Cout << "SessionGracePeriod: " << result.GetSessionGracePeriod() << Endl; + } + if (result.GetSelfCheckPeriod().Defined()) { + Cout << "SelfCheckPeriod: " << result.GetSelfCheckPeriod() << Endl; + } + Cout << "RatelimiterCountersMode: " << result.GetRateLimiterCountersMode() << Endl; + return EXIT_SUCCESS; +} + +int TCommandDescribe::PrintCoordinationNodeResponseProtoJsonBase64(const NYdb::NCoordination::TNodeDescription& result) const { + TString json; + google::protobuf::util::JsonPrintOptions jsonOpts; + jsonOpts.preserve_proto_field_names = true; + auto convertStatus = google::protobuf::util::MessageToJsonString( + NYdb::TProtoAccessor::GetProto(result), + &json, + jsonOpts + ); + if (convertStatus.ok()) { + Cout << json << Endl; + return EXIT_SUCCESS; + } + Cerr << "Error occurred while converting result proto to json: " << TString(convertStatus.message().ToString()) << Endl; + return EXIT_FAILURE; +} + +int TCommandDescribe::DescribeCoordinationNode(const TDriver& driver) { + NCoordination::TClient client(driver); + NCoordination::TDescribeNodeResult description = client.DescribeNode(Path).GetValueSync(); + + return PrintCoordinationNodeResponse(description); +} + namespace { void PrintColumns(const NTable::TTableDescription& tableDescription) { if (!tableDescription.GetTableColumns().size()) { diff --git a/ydb/public/lib/ydb_cli/commands/ydb_service_scheme.h b/ydb/public/lib/ydb_cli/commands/ydb_service_scheme.h index 24f545d245..a86fc59489 100644 --- a/ydb/public/lib/ydb_cli/commands/ydb_service_scheme.h +++ b/ydb/public/lib/ydb_cli/commands/ydb_service_scheme.h @@ -3,11 +3,12 @@ #include "ydb_command.h" #include "ydb_common.h" +#include <ydb/public/lib/ydb_cli/common/format.h> +#include <ydb/public/lib/ydb_cli/common/recursive_remove.h> +#include <ydb/public/sdk/cpp/client/ydb_coordination/coordination.h> #include <ydb/public/sdk/cpp/client/ydb_scheme/scheme.h> #include <ydb/public/sdk/cpp/client/ydb_table/table.h> #include <ydb/public/sdk/cpp/client/ydb_topic/topic.h> -#include <ydb/public/lib/ydb_cli/common/format.h> -#include <ydb/public/lib/ydb_cli/common/recursive_remove.h> namespace NYdb { namespace NConsoleClient { @@ -58,6 +59,11 @@ private: int PrintTopicResponsePretty(const NYdb::NTopic::TTopicDescription& settings); int PrintTopicResponseProtoJsonBase64(const NYdb::NTopic::TDescribeTopicResult& result); + int DescribeCoordinationNode(const TDriver& driver); + int PrintCoordinationNodeResponse(const NYdb::NCoordination::TDescribeNodeResult& result) const; + int PrintCoordinationNodeResponsePretty(const NYdb::NCoordination::TNodeDescription& result) const; + int PrintCoordinationNodeResponseProtoJsonBase64(const NYdb::NCoordination::TNodeDescription& result) const; + // Common options bool ShowPermissions = false; // Table options diff --git a/ydb/public/sdk/cpp/client/ydb_coordination/CMakeLists.darwin-x86_64.txt b/ydb/public/sdk/cpp/client/ydb_coordination/CMakeLists.darwin-x86_64.txt index 884937dbc6..0a78a6c824 100644 --- a/ydb/public/sdk/cpp/client/ydb_coordination/CMakeLists.darwin-x86_64.txt +++ b/ydb/public/sdk/cpp/client/ydb_coordination/CMakeLists.darwin-x86_64.txt @@ -24,11 +24,13 @@ target_link_libraries(cpp-client-ydb_coordination PUBLIC cpp-client-ydb_common_client client-ydb_common_client-impl cpp-client-ydb_driver + cpp-client-ydb_proto cpp-client-ydb_types client-ydb_types-status ) target_sources(cpp-client-ydb_coordination PRIVATE ${CMAKE_SOURCE_DIR}/ydb/public/sdk/cpp/client/ydb_coordination/coordination.cpp + ${CMAKE_SOURCE_DIR}/ydb/public/sdk/cpp/client/ydb_coordination/proto_accessor.cpp ) generate_enum_serilization(cpp-client-ydb_coordination ${CMAKE_SOURCE_DIR}/ydb/public/sdk/cpp/client/ydb_coordination/coordination.h diff --git a/ydb/public/sdk/cpp/client/ydb_coordination/CMakeLists.linux-aarch64.txt b/ydb/public/sdk/cpp/client/ydb_coordination/CMakeLists.linux-aarch64.txt index b56f658682..cf71e897ae 100644 --- a/ydb/public/sdk/cpp/client/ydb_coordination/CMakeLists.linux-aarch64.txt +++ b/ydb/public/sdk/cpp/client/ydb_coordination/CMakeLists.linux-aarch64.txt @@ -25,11 +25,13 @@ target_link_libraries(cpp-client-ydb_coordination PUBLIC cpp-client-ydb_common_client client-ydb_common_client-impl cpp-client-ydb_driver + cpp-client-ydb_proto cpp-client-ydb_types client-ydb_types-status ) target_sources(cpp-client-ydb_coordination PRIVATE ${CMAKE_SOURCE_DIR}/ydb/public/sdk/cpp/client/ydb_coordination/coordination.cpp + ${CMAKE_SOURCE_DIR}/ydb/public/sdk/cpp/client/ydb_coordination/proto_accessor.cpp ) generate_enum_serilization(cpp-client-ydb_coordination ${CMAKE_SOURCE_DIR}/ydb/public/sdk/cpp/client/ydb_coordination/coordination.h diff --git a/ydb/public/sdk/cpp/client/ydb_coordination/CMakeLists.linux-x86_64.txt b/ydb/public/sdk/cpp/client/ydb_coordination/CMakeLists.linux-x86_64.txt index b56f658682..cf71e897ae 100644 --- a/ydb/public/sdk/cpp/client/ydb_coordination/CMakeLists.linux-x86_64.txt +++ b/ydb/public/sdk/cpp/client/ydb_coordination/CMakeLists.linux-x86_64.txt @@ -25,11 +25,13 @@ target_link_libraries(cpp-client-ydb_coordination PUBLIC cpp-client-ydb_common_client client-ydb_common_client-impl cpp-client-ydb_driver + cpp-client-ydb_proto cpp-client-ydb_types client-ydb_types-status ) target_sources(cpp-client-ydb_coordination PRIVATE ${CMAKE_SOURCE_DIR}/ydb/public/sdk/cpp/client/ydb_coordination/coordination.cpp + ${CMAKE_SOURCE_DIR}/ydb/public/sdk/cpp/client/ydb_coordination/proto_accessor.cpp ) generate_enum_serilization(cpp-client-ydb_coordination ${CMAKE_SOURCE_DIR}/ydb/public/sdk/cpp/client/ydb_coordination/coordination.h diff --git a/ydb/public/sdk/cpp/client/ydb_coordination/CMakeLists.windows-x86_64.txt b/ydb/public/sdk/cpp/client/ydb_coordination/CMakeLists.windows-x86_64.txt index 884937dbc6..0a78a6c824 100644 --- a/ydb/public/sdk/cpp/client/ydb_coordination/CMakeLists.windows-x86_64.txt +++ b/ydb/public/sdk/cpp/client/ydb_coordination/CMakeLists.windows-x86_64.txt @@ -24,11 +24,13 @@ target_link_libraries(cpp-client-ydb_coordination PUBLIC cpp-client-ydb_common_client client-ydb_common_client-impl cpp-client-ydb_driver + cpp-client-ydb_proto cpp-client-ydb_types client-ydb_types-status ) target_sources(cpp-client-ydb_coordination PRIVATE ${CMAKE_SOURCE_DIR}/ydb/public/sdk/cpp/client/ydb_coordination/coordination.cpp + ${CMAKE_SOURCE_DIR}/ydb/public/sdk/cpp/client/ydb_coordination/proto_accessor.cpp ) generate_enum_serilization(cpp-client-ydb_coordination ${CMAKE_SOURCE_DIR}/ydb/public/sdk/cpp/client/ydb_coordination/coordination.h diff --git a/ydb/public/sdk/cpp/client/ydb_coordination/coordination.cpp b/ydb/public/sdk/cpp/client/ydb_coordination/coordination.cpp index f06f521808..01828ddf99 100644 --- a/ydb/public/sdk/cpp/client/ydb_coordination/coordination.cpp +++ b/ydb/public/sdk/cpp/client/ydb_coordination/coordination.cpp @@ -84,6 +84,7 @@ struct TNodeDescription::TImpl { RateLimiterCountersMode_ = static_cast<ERateLimiterCountersMode>(config.rate_limiter_counters_mode()); Owner_ = desc.self().owner(); PermissionToSchemeEntry(desc.self().effective_permissions(), &EffectivePermissions_); + Proto_ = desc; } TMaybe<TDuration> SelfCheckPeriod_; @@ -93,6 +94,7 @@ struct TNodeDescription::TImpl { ERateLimiterCountersMode RateLimiterCountersMode_; TString Owner_; TVector<NScheme::TPermissions> EffectivePermissions_; + Ydb::Coordination::DescribeNodeResult Proto_; }; TNodeDescription::TNodeDescription( @@ -128,6 +130,10 @@ const TVector<NScheme::TPermissions>& TNodeDescription::GetEffectivePermissions( return Impl_->EffectivePermissions_; } +const Ydb::Coordination::DescribeNodeResult& TNodeDescription::GetProto() const { + return Impl_->Proto_; +} + //////////////////////////////////////////////////////////////////////////////// TSemaphoreSession::TSemaphoreSession() { diff --git a/ydb/public/sdk/cpp/client/ydb_coordination/coordination.h b/ydb/public/sdk/cpp/client/ydb_coordination/coordination.h index fa8ab572d0..01e1c20342 100644 --- a/ydb/public/sdk/cpp/client/ydb_coordination/coordination.h +++ b/ydb/public/sdk/cpp/client/ydb_coordination/coordination.h @@ -107,6 +107,7 @@ public: const TString& GetOwner() const; const TVector<NScheme::TPermissions>& GetEffectivePermissions() const; + const Ydb::Coordination::DescribeNodeResult& GetProto() const; private: struct TImpl; diff --git a/ydb/public/sdk/cpp/client/ydb_coordination/proto_accessor.cpp b/ydb/public/sdk/cpp/client/ydb_coordination/proto_accessor.cpp new file mode 100644 index 0000000000..adc3a5d286 --- /dev/null +++ b/ydb/public/sdk/cpp/client/ydb_coordination/proto_accessor.cpp @@ -0,0 +1,11 @@ +#include <ydb/public/sdk/cpp/client/ydb_proto/accessor.h> + +#include "coordination.h" + +namespace NYdb { + +const Ydb::Coordination::DescribeNodeResult& TProtoAccessor::GetProto(const NCoordination::TNodeDescription& nodeDescription) { + return nodeDescription.GetProto(); +} + +}
\ No newline at end of file diff --git a/ydb/public/sdk/cpp/client/ydb_proto/accessor.h b/ydb/public/sdk/cpp/client/ydb_proto/accessor.h index 5ffcf39b29..33223c3bfc 100644 --- a/ydb/public/sdk/cpp/client/ydb_proto/accessor.h +++ b/ydb/public/sdk/cpp/client/ydb_proto/accessor.h @@ -1,19 +1,21 @@ #pragma once -#include <ydb/public/api/protos/ydb_value.pb.h> -#include <ydb/public/api/protos/ydb_query_stats.pb.h> -#include <ydb/public/api/protos/ydb_table.pb.h> +#include <ydb/public/api/grpc/draft/ydb_persqueue_v1.grpc.pb.h> +#include <ydb/public/api/protos/ydb_coordination.pb.h> #include <ydb/public/api/protos/ydb_export.pb.h> #include <ydb/public/api/protos/ydb_import.pb.h> -#include <ydb/public/api/grpc/draft/ydb_persqueue_v1.grpc.pb.h> +#include <ydb/public/api/protos/ydb_query_stats.pb.h> +#include <ydb/public/api/protos/ydb_table.pb.h> #include <ydb/public/api/protos/ydb_topic.pb.h> +#include <ydb/public/api/protos/ydb_value.pb.h> +#include <ydb/public/sdk/cpp/client/ydb_coordination/coordination.h> #include <ydb/public/sdk/cpp/client/ydb_export/export.h> #include <ydb/public/sdk/cpp/client/ydb_import/import.h> -#include <ydb/public/sdk/cpp/client/ydb_table/table.h> +#include <ydb/public/sdk/cpp/client/ydb_monitoring/monitoring.h> #include <ydb/public/sdk/cpp/client/ydb_persqueue_public/persqueue.h> +#include <ydb/public/sdk/cpp/client/ydb_table/table.h> #include <ydb/public/sdk/cpp/client/ydb_topic/topic.h> -#include <ydb/public/sdk/cpp/client/ydb_monitoring/monitoring.h> namespace NYdb { @@ -42,6 +44,7 @@ public: static const Ydb::Topic::DescribeTopicResult& GetProto(const NYdb::NTopic::TTopicDescription& topicDescription); static const Ydb::Topic::DescribeConsumerResult& GetProto(const NYdb::NTopic::TConsumerDescription& consumerDescription); static const Ydb::Monitoring::SelfCheckResult& GetProto(const NYdb::NMonitoring::TSelfCheckResult& selfCheckResult); + static const Ydb::Coordination::DescribeNodeResult& GetProto(const NYdb::NCoordination::TNodeDescription &describeNodeResult); static NTable::TQueryStats FromProto(const Ydb::TableStats::QueryStats& queryStats); static NTable::TTableDescription FromProto(const Ydb::Table::CreateTableRequest& request); |