diff options
author | naumbi4 <[email protected]> | 2023-09-29 17:12:29 +0300 |
---|---|---|
committer | naumbi4 <[email protected]> | 2023-09-29 18:00:07 +0300 |
commit | 6e2845963f57a9c4ac8f8ae862200439661459d1 (patch) | |
tree | c088704c6a651c60d87146fc46cc575bbcb7e648 | |
parent | 16b0f8d9f0fba37ed662509e8f20577aa073ca48 (diff) |
KIKIMR-13498: add scheme permissions list command for ydb cli
Revert version change
Revert "Revert "Add scheme permissions list command for ydb cli""
This reverts commit f5c0625fbd390b45e577cdafaa1f87c047ea2b40.
-rw-r--r-- | ydb/public/lib/ydb_cli/commands/ydb_service_scheme.cpp | 31 | ||||
-rw-r--r-- | ydb/public/lib/ydb_cli/commands/ydb_service_scheme.h | 8 |
2 files changed, 39 insertions, 0 deletions
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 3eb76bf17d0..537f66baf7e 100644 --- a/ydb/public/lib/ydb_cli/commands/ydb_service_scheme.cpp +++ b/ydb/public/lib/ydb_cli/commands/ydb_service_scheme.cpp @@ -912,6 +912,7 @@ TCommandPermissions::TCommandPermissions() AddCommand(std::make_unique<TCommandPermissionSet>()); AddCommand(std::make_unique<TCommandChangeOwner>()); AddCommand(std::make_unique<TCommandPermissionClear>()); + AddCommand(std::make_unique<TCommandPermissionList>()); } TCommandPermissionGrant::TCommandPermissionGrant() @@ -1102,5 +1103,35 @@ int TCommandPermissionClear::Run(TConfig& config) { return EXIT_SUCCESS; } +TCommandPermissionList::TCommandPermissionList() + : TYdbOperationCommand("list", std::initializer_list<TString>(), "List permissions") +{} + +void TCommandPermissionList::Config(TConfig& config) { + TYdbOperationCommand::Config(config); + + config.SetFreeArgsNum(1); + SetFreeArgTitle(0, "<path>", "Path to list permissions for"); +} + +void TCommandPermissionList::Parse(TConfig& config) { + TClientCommand::Parse(config); + ParsePath(config, 0); +} + +int TCommandPermissionList::Run(TConfig& config) { + TDriver driver = CreateDriver(config); + NScheme::TSchemeClient client(driver); + NScheme::TDescribePathResult result = client.DescribePath( + Path, + FillSettings(NScheme::TDescribePathSettings()) + ).GetValueSync(); + ThrowOnError(result); + NScheme::TSchemeEntry entry = result.GetEntry(); + Cout << Endl; + PrintAllPermissions(entry.Owner, entry.Permissions, entry.EffectivePermissions); + return EXIT_SUCCESS; +} + } } 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 f7be849879b..080a5ac91a4 100644 --- a/ydb/public/lib/ydb_cli/commands/ydb_service_scheme.h +++ b/ydb/public/lib/ydb_cli/commands/ydb_service_scheme.h @@ -164,5 +164,13 @@ public: virtual int Run(TConfig& config) override; }; +class TCommandPermissionList : public TYdbOperationCommand, public TCommandWithPath { +public: + TCommandPermissionList(); + virtual void Config(TConfig& config) override; + virtual void Parse(TConfig& config) override; + virtual int Run(TConfig& config) override; +}; + } } |