/
githubmirror
/
nbs
Обзор
Документация
Войти
/
githubmirror
/
nbs
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
cloud/filestore/apps/client/lib/ln.cpp
67 строк
2 KB
Andrei Strelkovskii
issue-2674: filestore-client ln command + support for RenameNode, UnlinkNode + basic support for RenameNode in filesystems with directories in shards (#2823)
10 янв 2025, 03:17
Не верифицирован
10 янв 2025, 03:17
b580cd5
Код
Авторство
О чём код?
#include "command.h" #include <cloud/filestore/public/api/protos/fs.pb.h> #include <util/stream/file.h> #include <util/system/sysstat.h> namespace NCloud::NFileStore::NClient { namespace { //////////////////////////////////////////////////////////////////////////////// class TLnCommand final : public TFileStoreCommand { private: TString Path; TString SymLink; public: TLnCommand() { Opts.AddLongOption("path") .Required() .RequiredArgument("PATH") .StoreResult(&Path); Opts.AddLongOption("symlink") .Required() .RequiredArgument("PATH") .StoreResult(&SymLink); } bool Execute() override { auto sessionGuard = CreateSession(); auto& session = sessionGuard.AccessSession(); auto resolved = ResolvePath(session, Path, true); Y_ENSURE(resolved.size() >= 2, "root node can't be ln target"); auto request = CreateRequest<NProto::TCreateNodeRequest>(); request->SetNodeId(resolved[resolved.size() - 2].Node.GetId()); request->SetName(TString(resolved.back().Name)); request->MutableSymLink()->SetTargetPath(SymLink); auto response = WaitFor(session.CreateNode( PrepareCallContext(), std::move(request))); CheckResponse(response); return true; } }; } // namespace //////////////////////////////////////////////////////////////////////////////// TCommandPtr NewLnCommand() { return std::make_shared<TLnCommand>(); } } // namespace NCloud::NFileStore::NClient