Skip to content

Commit b0b6acb

Browse files
authored
Merge d7fa9cb into 0f64840
2 parents 0f64840 + d7fa9cb commit b0b6acb

File tree

4 files changed

+33
-17
lines changed

4 files changed

+33
-17
lines changed

ydb/core/fq/libs/compute/ydb/synchronization_service/synchronization_service.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -436,6 +436,7 @@ class TSynchronizeScopeActor : public NActors::TActorBootstrapped<TSynchronizeSc
436436

437437
request.Get()->Get()->YDBClient = Client;
438438
request.Get()->Get()->ComputeDatabase = ComputeDatabase;
439+
request.Get()->Get()->Scope = Scope;
439440

440441
Register(NFq::NPrivate::MakeCreateConnectionActor(
441442
SelfId(),
@@ -465,6 +466,7 @@ class TSynchronizeScopeActor : public NActors::TActorBootstrapped<TSynchronizeSc
465466

466467
request.Get()->Get()->YDBClient = Client;
467468
request.Get()->Get()->ComputeDatabase = ComputeDatabase;
469+
request.Get()->Get()->Scope = Scope;
468470

469471
auto it = Connections.find(binding.second.content().connection_id());
470472
if (it == Connections.end()) {

ydb/core/fq/libs/control_plane_proxy/actors/query_utils.cpp

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
#include <ydb/core/fq/libs/result_formatter/result_formatter.h>
88
#include <ydb/core/kqp/provider/yql_kikimr_results.h>
99
#include <ydb/public/api/protos/draft/fq.pb.h>
10+
#include <ydb/public/lib/fq/scope.h>
1011

1112
namespace NFq {
1213
namespace NPrivate {
@@ -94,7 +95,9 @@ TString SignAccountId(const TString& id, const TSigner::TPtr& signer) {
9495

9596
TMaybe<TString> CreateSecretObjectQuery(const FederatedQuery::ConnectionSetting& setting,
9697
const TString& name,
97-
const TSigner::TPtr& signer) {
98+
const TSigner::TPtr& signer,
99+
const TString& scope) {
100+
const TString folderId = NYdb::NFq::TScope{scope}.ParseFolder();
98101
using namespace fmt::literals;
99102
TString secretObjects;
100103
auto serviceAccountId = ExtractServiceAccountId(setting);
@@ -103,7 +106,7 @@ TMaybe<TString> CreateSecretObjectQuery(const FederatedQuery::ConnectionSetting&
103106
R"(
104107
UPSERT OBJECT {sa_secret_name} (TYPE SECRET) WITH value={signature};
105108
)",
106-
"sa_secret_name"_a = EncloseAndEscapeString("k1" + name, '`'),
109+
"sa_secret_name"_a = EncloseAndEscapeString(TStringBuilder{} << "f1_" << folderId << name, '`'),
107110
"signature"_a = EncloseSecret(EncloseAndEscapeString(SignAccountId(serviceAccountId, signer), '"'))) : std::string{};
108111
}
109112

@@ -113,7 +116,7 @@ TMaybe<TString> CreateSecretObjectQuery(const FederatedQuery::ConnectionSetting&
113116
R"(
114117
UPSERT OBJECT {password_secret_name} (TYPE SECRET) WITH value={password};
115118
)",
116-
"password_secret_name"_a = EncloseAndEscapeString("k2" + name, '`'),
119+
"password_secret_name"_a = EncloseAndEscapeString(TStringBuilder{} << "f2_" << folderId << name, '`'),
117120
"password"_a = EncloseSecret(EncloseAndEscapeString(*password, '"')));
118121
}
119122

@@ -281,17 +284,22 @@ TString MakeCreateExternalDataSourceQuery(
281284
signer));
282285
}
283286

284-
TMaybe<TString> DropSecretObjectQuery(const TString& name) {
287+
TMaybe<TString> DropSecretObjectQuery(const TString& name, const TString& scope) {
288+
const TString folderId = NYdb::NFq::TScope{scope}.ParseFolder();
285289
using namespace fmt::literals;
286290
return fmt::format(
287291
R"(
288292
DROP OBJECT {secret_name1} (TYPE SECRET);
289293
DROP OBJECT {secret_name2} (TYPE SECRET);
290294
DROP OBJECT {secret_name3} (TYPE SECRET); -- for backward compatibility
295+
DROP OBJECT {secret_name4} (TYPE SECRET); -- for backward compatibility
296+
DROP OBJECT {secret_name5} (TYPE SECRET); -- for backward compatibility
291297
)",
292-
"secret_name1"_a = EncloseAndEscapeString("k1" + name, '`'),
293-
"secret_name2"_a = EncloseAndEscapeString("k2" + name, '`'),
294-
"secret_name3"_a = EncloseAndEscapeString(name, '`'));
298+
"secret_name1"_a = EncloseAndEscapeString(TStringBuilder{} << "f1_" << folderId << name, '`'),
299+
"secret_name2"_a = EncloseAndEscapeString(TStringBuilder{} << "f2_" << folderId << name, '`'),
300+
"secret_name3"_a = EncloseAndEscapeString(TStringBuilder{} << "k1" << name, '`'),
301+
"secret_name4"_a = EncloseAndEscapeString(TStringBuilder{} << "k2" << name, '`'),
302+
"secret_name5"_a = EncloseAndEscapeString(name, '`'));
295303
}
296304

297305
TString MakeDeleteExternalDataTableQuery(const TString& tableName) {

ydb/core/fq/libs/control_plane_proxy/actors/query_utils.h

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,10 @@ namespace NPrivate {
1010

1111
TMaybe<TString> CreateSecretObjectQuery(const FederatedQuery::ConnectionSetting& setting,
1212
const TString& name,
13-
const TSigner::TPtr& signer);
13+
const TSigner::TPtr& signer,
14+
const TString& scope);
1415

15-
TMaybe<TString> DropSecretObjectQuery(const TString& name);
16+
TMaybe<TString> DropSecretObjectQuery(const TString& name, const TString& scope);
1617

1718
TString MakeCreateExternalDataSourceQuery(
1819
const FederatedQuery::ConnectionContent& connectionContent,

ydb/core/fq/libs/control_plane_proxy/actors/ydb_schema_query_actor.cpp

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -557,10 +557,12 @@ IActor* MakeCreateConnectionActor(
557557
computeConfig](const TEvControlPlaneProxy::TEvCreateConnectionRequest::TPtr& req)
558558
-> std::vector<TSchemaQueryTask> {
559559
auto& connectionContent = req->Get()->Request.content();
560+
const auto& scope = req->Get()->Scope;
560561

561562
auto createSecretStatement = CreateSecretObjectQuery(connectionContent.setting(),
562563
connectionContent.name(),
563-
signer);
564+
signer,
565+
scope);
564566

565567
std::vector<TSchemaQueryTask> statements;
566568
if (createSecretStatement) {
@@ -659,21 +661,23 @@ IActor* MakeModifyConnectionActor(
659661
auto& oldConnectionContent = (*request->Get()->OldConnectionContent);
660662
auto& oldBindings = request->Get()->OldBindingContents;
661663
auto& newConnectionContent = request->Get()->Request.content();
664+
const auto& scope = request->Get()->Scope;
662665

663666
auto dropOldSecret =
664-
DropSecretObjectQuery(oldConnectionContent.name());
667+
DropSecretObjectQuery(oldConnectionContent.name(), scope);
665668
auto createNewSecret =
666669
CreateSecretObjectQuery(newConnectionContent.setting(),
667670
newConnectionContent.name(),
668-
signer);
671+
signer,
672+
scope);
669673

670674
bool replaceSupported = computeConfig.IsReplaceIfExistsSyntaxSupported();
671675
if (replaceSupported &&
672676
oldConnectionContent.name() == newConnectionContent.name()) {
673677
// CREATE OR REPLACE
674678
auto createSecretStatement =
675679
CreateSecretObjectQuery(newConnectionContent.setting(),
676-
newConnectionContent.name(), signer);
680+
newConnectionContent.name(), signer, scope);
677681

678682
std::vector<TSchemaQueryTask> statements;
679683
if (createSecretStatement) {
@@ -720,13 +724,13 @@ IActor* MakeModifyConnectionActor(
720724
.SQL = *dropOldSecret,
721725
.RollbackSQL = CreateSecretObjectQuery(oldConnectionContent.setting(),
722726
oldConnectionContent.name(),
723-
signer),
727+
signer, scope),
724728
.ShouldSkipStepOnError = IsPathDoesNotExistIssue});
725729
}
726730
if (createNewSecret) {
727731
statements.push_back(TSchemaQueryTask{.SQL = *createNewSecret,
728732
.RollbackSQL = DropSecretObjectQuery(
729-
newConnectionContent.name())});
733+
newConnectionContent.name(), scope)});
730734
}
731735

732736
statements.push_back(
@@ -787,9 +791,10 @@ IActor* MakeDeleteConnectionActor(
787791
const TEvControlPlaneProxy::TEvDeleteConnectionRequest::TPtr& request)
788792
-> std::vector<TSchemaQueryTask> {
789793
auto& connectionContent = *request->Get()->ConnectionContent;
794+
const auto& scope = request->Get()->Scope;
790795

791796
auto dropSecret =
792-
DropSecretObjectQuery(connectionContent.name());
797+
DropSecretObjectQuery(connectionContent.name(), scope);
793798

794799
std::vector statements = {
795800
TSchemaQueryTask{.SQL = TString{MakeDeleteExternalDataSourceQuery(
@@ -803,7 +808,7 @@ IActor* MakeDeleteConnectionActor(
803808
.RollbackSQL =
804809
CreateSecretObjectQuery(connectionContent.setting(),
805810
connectionContent.name(),
806-
signer),
811+
signer, scope),
807812
.ShouldSkipStepOnError = IsPathDoesNotExistIssue});
808813
}
809814
return statements;

0 commit comments

Comments
 (0)