summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorudovichenko-r <[email protected]>2025-11-12 16:35:54 +0300
committerudovichenko-r <[email protected]>2025-11-12 17:22:14 +0300
commitb4abe24d34fa2148ab7c938cd24bdc331fe4eecd (patch)
treef788632d217cb3dea5d749a3de385735808a28f2
parent69eb8a156b9c3547684eabb28f6055b0ec1c1f4c (diff)
Use isRobot API flag in task runner
commit_hash:cfe2b8b385e4d0420832ee38e3190db0251933b8
-rw-r--r--yql/essentials/core/credentials/yql_credentials.h9
-rw-r--r--yql/essentials/providers/common/activation/yql_activation.cpp12
-rw-r--r--yql/essentials/providers/common/activation/yql_activation.h16
-rw-r--r--yql/essentials/providers/config/yql_config_provider.cpp6
-rw-r--r--yt/yql/providers/yt/provider/yql_yt_provider.cpp6
5 files changed, 37 insertions, 12 deletions
diff --git a/yql/essentials/core/credentials/yql_credentials.h b/yql/essentials/core/credentials/yql_credentials.h
index cc5bf5d8e29..8b643fe102a 100644
--- a/yql/essentials/core/credentials/yql_credentials.h
+++ b/yql/essentials/core/credentials/yql_credentials.h
@@ -48,6 +48,14 @@ public:
return Groups_;
}
+ void SetIsRobot(bool isRobot) {
+ IsRobot_ = isRobot;
+ }
+
+ bool IsRobot() const {
+ return IsRobot_;
+ }
+
const TCredential* FindCredential(const TStringBuf& name) const;
TString FindCredentialContent(const TStringBuf& name1, const TStringBuf& name2, const TString& defaultContent) const;
@@ -60,6 +68,7 @@ private:
THashMap<TString, TCredential> CredentialTable_;
TUserCredentials UserCredentials_;
std::unordered_set<TString> Groups_;
+ bool IsRobot_ = false;
};
} // namespace NYql
diff --git a/yql/essentials/providers/common/activation/yql_activation.cpp b/yql/essentials/providers/common/activation/yql_activation.cpp
index 85adeb0ba7b..3e10c121897 100644
--- a/yql/essentials/providers/common/activation/yql_activation.cpp
+++ b/yql/essentials/providers/common/activation/yql_activation.cpp
@@ -12,7 +12,7 @@
namespace NYql::NConfig {
template <class TActivation>
-ui32 GetPercentage(const TActivation& activation, const TString& userName, const std::unordered_set<std::string_view>& groups) {
+ui32 GetPercentage(const TActivation& activation, const TString& userName, bool isRobot, const std::unordered_set<std::string_view>& groups) {
if (AnyOf(activation.GetIncludeUsers(), [&](const auto& user) { return user == userName; })) {
return 100;
}
@@ -32,7 +32,7 @@ ui32 GetPercentage(const TActivation& activation, const TString& userName, const
if (currentRev && AnyOf(activation.GetExcludeRevisions(), [&](const auto& rev) { return rev == currentRev; })) {
return 0;
}
- if ((userName.StartsWith("robot-") || userName.StartsWith("zomb-")) && activation.GetExcludeRobots()) {
+ if (isRobot && activation.GetExcludeRobots()) {
return 0;
}
@@ -55,13 +55,13 @@ ui32 GetPercentage(const TActivation& activation, const TString& userName, const
}
template <class TActivation>
-bool Allow(const TActivation& activation, const TString& userName, const std::unordered_set<std::string_view>& groups) {
- ui32 percent = GetPercentage(activation, userName, groups);
+bool Allow(const TActivation& activation, const TString& userName, bool isRobot, const std::unordered_set<std::string_view>& groups) {
+ ui32 percent = GetPercentage(activation, userName, isRobot, groups);
const auto random = RandomNumber<ui8>(100);
return random < percent;
}
-template ui32 GetPercentage<NYql::TActivationPercentage>(const NYql::TActivationPercentage& activation, const TString& userName, const std::unordered_set<std::string_view>& groups);
-template bool Allow<NYql::TActivationPercentage>(const NYql::TActivationPercentage& activation, const TString& userName, const std::unordered_set<std::string_view>& groups);
+template ui32 GetPercentage<NYql::TActivationPercentage>(const NYql::TActivationPercentage& activation, const TString& userName, bool isRobot, const std::unordered_set<std::string_view>& groups);
+template bool Allow<NYql::TActivationPercentage>(const NYql::TActivationPercentage& activation, const TString& userName, bool isRobot, const std::unordered_set<std::string_view>& groups);
} // namespace NYql::NConfig
diff --git a/yql/essentials/providers/common/activation/yql_activation.h b/yql/essentials/providers/common/activation/yql_activation.h
index 3d4f3068e55..fcac244bed2 100644
--- a/yql/essentials/providers/common/activation/yql_activation.h
+++ b/yql/essentials/providers/common/activation/yql_activation.h
@@ -6,9 +6,21 @@
namespace NYql::NConfig {
template <class TActivation>
-ui32 GetPercentage(const TActivation& activation, const TString& userName, const std::unordered_set<std::string_view>& groups);
+ui32 GetPercentage(const TActivation& activation, const TString& userName, bool userIsRobot, const std::unordered_set<std::string_view>& groups);
+// TODO: remove after changing DQ provider
template <class TActivation>
-bool Allow(const TActivation& activation, const TString& userName, const std::unordered_set<std::string_view>& groups);
+ui32 GetPercentage(const TActivation& activation, const TString& userName, const std::unordered_set<std::string_view>& groups) {
+ return GetPercentage(activation, userName, userName.StartsWith("robot-") || userName.StartsWith("zomb-"), groups);
+}
+
+template <class TActivation>
+bool Allow(const TActivation& activation, const TString& userName, bool userIsRobot, const std::unordered_set<std::string_view>& groups);
+
+// TODO: remove after changing DQ provider
+template <class TActivation>
+bool Allow(const TActivation& activation, const TString& userName, const std::unordered_set<std::string_view>& groups) {
+ return Allow(activation, userName, userName.StartsWith("robot-") || userName.StartsWith("zomb-"), groups);
+}
} // namespace NYql::NConfig
diff --git a/yql/essentials/providers/config/yql_config_provider.cpp b/yql/essentials/providers/config/yql_config_provider.cpp
index 4ca9f7e3778..5f534bde8c0 100644
--- a/yql/essentials/providers/config/yql_config_provider.cpp
+++ b/yql/essentials/providers/config/yql_config_provider.cpp
@@ -144,14 +144,16 @@ public:
bool Initialize(TExprContext& ctx) override {
std::unordered_set<std::string_view> groups;
+ bool isRobot = false;
if (Types_.Credentials != nullptr) {
groups.insert(Types_.Credentials->GetGroups().begin(), Types_.Credentials->GetGroups().end());
+ isRobot = Types_.Credentials->IsRobot();
}
- auto filter = [this, groups = std::move(groups)](const TCoreAttr& attr) {
+ auto filter = [this, groups = std::move(groups), isRobot](const TCoreAttr& attr) {
if (!attr.HasActivation() || !Username_) {
return true;
}
- if (NConfig::Allow(attr.GetActivation(), Username_, groups)) {
+ if (NConfig::Allow(attr.GetActivation(), Username_, isRobot, groups)) {
Statistics_.Entries.emplace_back(TStringBuilder() << "Activation:" << attr.GetName(), 0, 0, 0, 0, 1);
return true;
}
diff --git a/yt/yql/providers/yt/provider/yql_yt_provider.cpp b/yt/yql/providers/yt/provider/yql_yt_provider.cpp
index c0854fa7b99..f70e866ebd5 100644
--- a/yt/yql/providers/yt/provider/yql_yt_provider.cpp
+++ b/yt/yql/providers/yt/provider/yql_yt_provider.cpp
@@ -360,14 +360,16 @@ std::pair<std::shared_ptr<TYtState>, TStatWriter> CreateYtNativeState(IYtGateway
if (ytGatewayConfig) {
std::unordered_set<std::string_view> groups;
+ bool isRobot = false;
if (ytState->Types->Credentials != nullptr) {
groups.insert(ytState->Types->Credentials->GetGroups().begin(), ytState->Types->Credentials->GetGroups().end());
+ isRobot = ytState->Types->Credentials->IsRobot();
}
- auto filter = [userName, ytState, groups = std::move(groups)](const NYql::TAttr& attr) -> bool {
+ auto filter = [userName, ytState, groups = std::move(groups), isRobot](const NYql::TAttr& attr) -> bool {
if (!attr.HasActivation()) {
return true;
}
- if (NConfig::Allow(attr.GetActivation(), userName, groups)) {
+ if (NConfig::Allow(attr.GetActivation(), userName, isRobot, groups)) {
with_lock(ytState->StatisticsMutex) {
ytState->Statistics[Max<ui32>()].Entries.emplace_back(TStringBuilder() << "Activation:" << attr.GetName(), 0, 0, 0, 0, 1);
}