diff options
author | ermolovd <ermolovd@yandex-team.com> | 2023-10-16 16:11:56 +0300 |
---|---|---|
committer | ermolovd <ermolovd@yandex-team.com> | 2023-10-16 16:38:55 +0300 |
commit | 2d212baccf6419e96202b6032de33a2ab775c137 (patch) | |
tree | bfb768032710e37ee2d0e2917c2af543dd60ad36 /yt/cpp/mapreduce/raw_client/rpc_parameters_serialization.cpp | |
parent | d4f3485ebf6530953946184c62b06e3d92b8a5c8 (diff) | |
download | ydb-2d212baccf6419e96202b6032de33a2ab775c137.tar.gz |
Possibility to get operation by its alias
Diffstat (limited to 'yt/cpp/mapreduce/raw_client/rpc_parameters_serialization.cpp')
-rw-r--r-- | yt/cpp/mapreduce/raw_client/rpc_parameters_serialization.cpp | 29 |
1 files changed, 25 insertions, 4 deletions
diff --git a/yt/cpp/mapreduce/raw_client/rpc_parameters_serialization.cpp b/yt/cpp/mapreduce/raw_client/rpc_parameters_serialization.cpp index 7a3c3548c7..aa28382326 100644 --- a/yt/cpp/mapreduce/raw_client/rpc_parameters_serialization.cpp +++ b/yt/cpp/mapreduce/raw_client/rpc_parameters_serialization.cpp @@ -32,6 +32,11 @@ static void SetOperationIdParam(TNode* node, const TOperationId& operationId) (*node)["operation_id"] = GetGuidAsString(operationId); } +static void SetAliasParam(TNode* node, const TString& alias) +{ + (*node)["operation_alias"] = alias; +} + static void SetPathParam(TNode* node, const TString& pathPrefix, const TYPath& path) { TYPath updatedPath = AddPathPrefix(path, pathPrefix); @@ -392,15 +397,31 @@ TNode SerializeParamsForListOperations( return result; } -TNode SerializeParamsForGetOperation( - const TOperationId& operationId, - const TGetOperationOptions& options) +TNode SerializeParamsForGetOperation(const std::variant<TString, TOperationId>& aliasOrOperationId, const TGetOperationOptions& options) { + auto includeRuntime = options.IncludeRuntime_; TNode result; - SetOperationIdParam(&result, operationId); + std::visit([&] (const auto& value) { + using TValue = std::decay_t<decltype(value)>; + if constexpr (std::is_same_v<TValue, TString>) { + SetAliasParam(&result, value); + if (includeRuntime.Empty()) { + // Getting operation by operation alias requires enabling this option. + // So enable it unless user explicitly set it. + includeRuntime = true; + } + } else if constexpr (std::is_same_v<TValue, TOperationId>) { + SetOperationIdParam(&result, value); + } else { + static_assert(std::is_same_v<TValue, void>, "unreachable"); + } + }, aliasOrOperationId); if (options.AttributeFilter_) { result["attributes"] = SerializeAttributeFilter(*options.AttributeFilter_); } + if (includeRuntime.Defined()) { + result["include_runtime"] = *includeRuntime; + } return result; } |