summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authornaumbi4 <[email protected]>2023-09-29 17:12:29 +0300
committernaumbi4 <[email protected]>2023-09-29 18:00:07 +0300
commit6e2845963f57a9c4ac8f8ae862200439661459d1 (patch)
treec088704c6a651c60d87146fc46cc575bbcb7e648
parent16b0f8d9f0fba37ed662509e8f20577aa073ca48 (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.cpp31
-rw-r--r--ydb/public/lib/ydb_cli/commands/ydb_service_scheme.h8
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;
+};
+
}
}