Skip to content

Commit b16bcef

Browse files
CyberROFLGazizonoki
authored andcommitted
Moved "Introduce DescribeReplication" commit from ydb repo
1 parent 8e630ad commit b16bcef

File tree

8 files changed

+425
-0
lines changed

8 files changed

+425
-0
lines changed
Lines changed: 131 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,131 @@
1+
#pragma once
2+
3+
#include <ydb-cpp-sdk/client/scheme/scheme.h>
4+
#include <ydb-cpp-sdk/client/driver/driver.h>
5+
6+
namespace Ydb::Replication {
7+
class ConnectionParams;
8+
class DescribeReplicationResult;
9+
}
10+
11+
namespace NYdb {
12+
class TProtoAccessor;
13+
}
14+
15+
namespace NYql {
16+
class TIssues;
17+
}
18+
19+
namespace NYdb::NReplication {
20+
21+
class TDescribeReplicationResult;
22+
using TAsyncDescribeReplicationResult = NThreading::TFuture<TDescribeReplicationResult>;
23+
struct TDescribeReplicationSettings: public TOperationRequestSettings<TDescribeReplicationSettings> {};
24+
25+
struct TStaticCredentials {
26+
std::string User;
27+
std::string PasswordSecretName;
28+
};
29+
30+
struct TOAuthCredentials {
31+
std::string TokenSecretName;
32+
};
33+
34+
class TConnectionParams: private TCommonClientSettings {
35+
public:
36+
enum class ECredentials {
37+
Static,
38+
OAuth,
39+
};
40+
41+
explicit TConnectionParams(const Ydb::Replication::ConnectionParams& params);
42+
43+
const std::string& GetDiscoveryEndpoint() const;
44+
const std::string& GetDatabase() const;
45+
46+
ECredentials GetCredentials() const;
47+
const TStaticCredentials& GetStaticCredentials() const;
48+
const TOAuthCredentials& GetOAuthCredentials() const;
49+
50+
private:
51+
std::variant<
52+
TStaticCredentials,
53+
TOAuthCredentials
54+
> Credentials_;
55+
};
56+
57+
struct TRunningState {};
58+
struct TDoneState {};
59+
60+
class TErrorState {
61+
class TImpl;
62+
63+
public:
64+
explicit TErrorState(NYql::TIssues&& issues);
65+
66+
const NYql::TIssues& GetIssues() const;
67+
68+
private:
69+
std::shared_ptr<TImpl> Impl_;
70+
};
71+
72+
class TReplicationDescription {
73+
public:
74+
struct TItem {
75+
std::string SrcPath;
76+
std::string DstPath;
77+
};
78+
79+
enum class EState {
80+
Running,
81+
Error,
82+
Done,
83+
};
84+
85+
explicit TReplicationDescription(const Ydb::Replication::DescribeReplicationResult& desc);
86+
87+
const TConnectionParams& GetConnectionParams() const;
88+
const std::vector<TItem> GetItems() const;
89+
90+
EState GetState() const;
91+
const TRunningState& GetRunningState() const;
92+
const TErrorState& GetErrorState() const;
93+
const TDoneState& GetDoneState() const;
94+
95+
private:
96+
TConnectionParams ConnectionParams_;
97+
std::vector<TItem> Items_;
98+
std::variant<
99+
TRunningState,
100+
TErrorState,
101+
TDoneState
102+
> State_;
103+
};
104+
105+
class TDescribeReplicationResult: public NScheme::TDescribePathResult {
106+
friend class NYdb::TProtoAccessor;
107+
const Ydb::Replication::DescribeReplicationResult& GetProto() const;
108+
109+
public:
110+
TDescribeReplicationResult(TStatus&& status, Ydb::Replication::DescribeReplicationResult&& desc);
111+
const TReplicationDescription& GetReplicationDescription() const;
112+
113+
private:
114+
TReplicationDescription ReplicationDescription_;
115+
std::unique_ptr<Ydb::Replication::DescribeReplicationResult> Proto_;
116+
};
117+
118+
class TReplicationClient {
119+
class TImpl;
120+
121+
public:
122+
TReplicationClient(const TDriver& driver, const TCommonClientSettings& settings = TCommonClientSettings());
123+
124+
TAsyncDescribeReplicationResult DescribeReplication(const std::string& path,
125+
const TDescribeReplicationSettings& settings = TDescribeReplicationSettings());
126+
127+
private:
128+
std::shared_ptr<TImpl> Impl_;
129+
};
130+
131+
} // namespace NYdb::NReplication

include/ydb-cpp-sdk/client/proto/accessor.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
#pragma once
22

3+
#include <src/api/protos/draft/ydb_replication.pb.h>
34
#include <src/api/protos/ydb_coordination.pb.h>
45
#include <src/api/protos/ydb_export.pb.h>
56
#include <src/api/protos/ydb_import.pb.h>
@@ -8,6 +9,7 @@
89
#include <src/api/protos/ydb_topic.pb.h>
910
#include <src/api/protos/ydb_value.pb.h>
1011

12+
#include <ydb-cpp-sdk/client/draft/ydb_replication.h>
1113
#include <ydb-cpp-sdk/client/coordination/coordination.h>
1214
#include <ydb-cpp-sdk/client/export/export.h>
1315
#include <ydb-cpp-sdk/client/import/import.h>
@@ -43,6 +45,7 @@ class TProtoAccessor {
4345
static const Ydb::Topic::DescribeConsumerResult& GetProto(const NYdb::NTopic::TConsumerDescription& consumerDescription);
4446
static const Ydb::Monitoring::SelfCheckResult& GetProto(const NYdb::NMonitoring::TSelfCheckResult& selfCheckResult);
4547
static const Ydb::Coordination::DescribeNodeResult& GetProto(const NYdb::NCoordination::TNodeDescription &describeNodeResult);
48+
static const Ydb::Replication::DescribeReplicationResult& GetProto(const NYdb::NReplication::TDescribeReplicationResult& desc);
4649

4750
static NTable::TQueryStats FromProto(const Ydb::TableStats::QueryStats& queryStats);
4851
static NTable::TTableDescription FromProto(const Ydb::Table::CreateTableRequest& request);

src/api/grpc/draft/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ target_proto_messages(api-grpc-draft PRIVATE
1717
${YDB_SDK_SOURCE_DIR}/src/api/grpc/draft/ydb_maintenance_v1.proto
1818
${YDB_SDK_SOURCE_DIR}/src/api/grpc/draft/ydb_logstore_v1.proto
1919
${YDB_SDK_SOURCE_DIR}/src/api/grpc/draft/ydb_dynamic_config_v1.proto
20+
${YDB_SDK_SOURCE_DIR}/src/api/grpc/draft/ydb_replication_v1.proto
2021
)
2122
target_proto_addincls(api-grpc-draft
2223
./
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
syntax = "proto3";
2+
3+
import "src/api/protos/draft/ydb_replication.proto";
4+
5+
package Ydb.Replication.V1;
6+
option java_package = "com.yandex.ydb.replication.v1";
7+
8+
service ReplicationService {
9+
rpc DescribeReplication(Replication.DescribeReplicationRequest) returns (Replication.DescribeReplicationResponse);
10+
}

src/api/protos/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ target_proto_messages(api-protos PRIVATE
1515
${YDB_SDK_SOURCE_DIR}/src/api/protos/draft/ydb_maintenance.proto
1616
${YDB_SDK_SOURCE_DIR}/src/api/protos/draft/ydb_logstore.proto
1717
${YDB_SDK_SOURCE_DIR}/src/api/protos/draft/ydb_dynamic_config.proto
18+
${YDB_SDK_SOURCE_DIR}/src/api/protos/draft/ydb_replication.proto
1819
${YDB_SDK_SOURCE_DIR}/src/api/protos/ydb_federation_discovery.proto
1920
${YDB_SDK_SOURCE_DIR}/src/api/protos/persqueue_error_codes_v1.proto
2021
${YDB_SDK_SOURCE_DIR}/src/api/protos/ydb_auth.proto
Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
syntax = "proto3";
2+
option cc_enable_arenas = true;
3+
4+
import "src/api/protos/annotations/validation.proto";
5+
import "src/api/protos/ydb_issue_message.proto";
6+
import "src/api/protos/ydb_operation.proto";
7+
import "src/api/protos/ydb_scheme.proto";
8+
9+
package Ydb.Replication;
10+
option java_package = "com.yandex.ydb.replication";
11+
12+
message DescribeReplicationRequest {
13+
Ydb.Operations.OperationParams operation_params = 1;
14+
// Replication path.
15+
string path = 2 [(required) = true];
16+
}
17+
18+
message DescribeReplicationResponse {
19+
// Result of request will be inside operation.
20+
Ydb.Operations.Operation operation = 1;
21+
}
22+
23+
message ConnectionParams {
24+
message StaticCredentials {
25+
string user = 1;
26+
string password_secret_name = 2;
27+
}
28+
29+
message OAuth {
30+
string token_secret_name = 1;
31+
}
32+
33+
string endpoint = 1;
34+
string database = 2;
35+
36+
oneof credentials {
37+
StaticCredentials static_credentials = 3;
38+
OAuth oauth = 4;
39+
}
40+
}
41+
42+
message DescribeReplicationResult {
43+
message Item {
44+
string source_path = 1;
45+
string destination_path = 2;
46+
}
47+
48+
message RunningState {
49+
}
50+
51+
message ErrorState {
52+
repeated Ydb.Issue.IssueMessage issues = 1;
53+
}
54+
55+
message DoneState {
56+
}
57+
58+
// Description of scheme object.
59+
Ydb.Scheme.Entry self = 1;
60+
ConnectionParams connection_params = 2;
61+
repeated Item items = 3;
62+
oneof state {
63+
RunningState running = 4;
64+
ErrorState error = 5;
65+
DoneState done = 6;
66+
}
67+
}

src/client/draft/CMakeLists.txt

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ add_library(cpp-client-draft)
22

33
target_link_libraries(cpp-client-draft PUBLIC
44
yutil
5+
yql-public-issue
56
api-grpc-draft
67
cpp-client-ydb_table
78
client-ydb_types-operation
@@ -10,7 +11,14 @@ target_link_libraries(cpp-client-draft PUBLIC
1011

1112
target_sources(cpp-client-draft PRIVATE
1213
ydb_dynamic_config.cpp
14+
ydb_replication.cpp
1315
ydb_scripting.cpp
1416
)
1517

18+
generate_enum_serilization(cpp-client-draft
19+
${YDB_SDK_SOURCE_DIR}/include/ydb-cpp-sdk/client/draft/ydb_replication.h
20+
INCLUDE_HEADERS
21+
include/ydb-cpp-sdk/client/draft/ydb_replication.h
22+
)
23+
1624
add_library(YDB-CPP-SDK::Draft ALIAS cpp-client-draft)

0 commit comments

Comments
 (0)