aboutsummaryrefslogtreecommitdiffstats
path: root/yt/cpp/mapreduce/raw_client/rpc_parameters_serialization.cpp
diff options
context:
space:
mode:
authorermolovd <ermolovd@yandex-team.com>2023-10-16 16:11:56 +0300
committerermolovd <ermolovd@yandex-team.com>2023-10-16 16:38:55 +0300
commit2d212baccf6419e96202b6032de33a2ab775c137 (patch)
treebfb768032710e37ee2d0e2917c2af543dd60ad36 /yt/cpp/mapreduce/raw_client/rpc_parameters_serialization.cpp
parentd4f3485ebf6530953946184c62b06e3d92b8a5c8 (diff)
downloadydb-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.cpp29
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;
}