1
1
#!/usr/bin/env python
2
2
# -*- coding: utf-8 -*-
3
- import ydb .core .protos .msgbus_pb2 as msgbus
4
- from ydb .tests .library .common .types import DeltaTypes , PType
3
+ import json
4
+ from ydb .public .api .protos .ydb_status_codes_pb2 import StatusIds
5
+ from ydb .public .api .protos .draft .ydb_tablet_pb2 import ChangeTabletSchemaRequest
6
+ from ydb .tests .library .common .types import PType
5
7
6
8
7
9
def column_to_dict (delta ):
8
10
return {
9
- "ColumnId" : delta . ColumnId ,
10
- "ColumnName" : delta . ColumnName ,
11
+ "ColumnId" : delta [ 'column_id' ] ,
12
+ "ColumnName" : delta [ 'column_name' ] ,
11
13
"ColumnType" : str (
12
- PType .from_int (delta . ColumnType )
14
+ PType .from_int (delta [ 'column_type' ] )
13
15
)
14
16
}
15
17
@@ -35,8 +37,8 @@ def drop_column(self, delta):
35
37
return self
36
38
37
39
def add_column_to_family (self , delta ):
38
- cid = delta . ColumnId
39
- fid = delta . FamilyId
40
+ cid = delta [ 'column_id' ]
41
+ fid = delta [ 'family_id' ]
40
42
41
43
if fid not in self .data ['ColumnFamilies' ]:
42
44
raise RuntimeError ("Unknown family" )
@@ -45,8 +47,8 @@ def add_column_to_family(self, delta):
45
47
return self
46
48
47
49
def add_family (self , delta ):
48
- fid = delta . FamilyId
49
- rid = delta . RoomId
50
+ fid = delta [ 'family_id' ]
51
+ rid = delta [ 'room_id' ]
50
52
51
53
if rid not in self .data ['Rooms' ]:
52
54
raise RuntimeError ("Unknown room" )
@@ -67,25 +69,25 @@ def add_family(self, delta):
67
69
return self
68
70
69
71
def set_family (self , delta ):
70
- fid = delta . FamilyId
72
+ fid = delta [ 'family_id' ]
71
73
72
74
if fid not in self .data ['ColumnFamilies' ]:
73
75
raise RuntimeError ("Unknown family" )
74
76
75
- if hasattr ( delta , 'Codec' ) and delta . Codec is not None :
76
- self .data ['ColumnFamilies' ][fid ]['Codec' ] = delta . Codec
77
+ if 'codec' in delta and delta [ 'codec' ] is not None :
78
+ self .data ['ColumnFamilies' ][fid ]['Codec' ] = delta [ 'codec' ]
77
79
78
- if hasattr ( delta , 'InMemory' ) and delta . InMemory is not None :
79
- self .data ['ColumnFamilies' ][fid ]['InMemory' ] = delta . InMemory
80
+ if 'in_memory' in delta and delta [ 'in_memory' ] is not None :
81
+ self .data ['ColumnFamilies' ][fid ]['InMemory' ] = delta [ 'in_memory' ]
80
82
81
- if hasattr ( delta , 'Cache' ) and delta . Cache is not None :
82
- self .data ['ColumnFamilies' ][fid ]['Cache' ] = delta . Cache
83
+ if 'cache' in delta and delta [ 'cache' ] is not None :
84
+ self .data ['ColumnFamilies' ][fid ]['Cache' ] = delta [ 'cache' ]
83
85
84
- if hasattr ( delta , 'Small' ) and delta . Small is not None :
85
- self .data ['ColumnFamilies' ][fid ]['Small' ] = delta . Small
86
+ if 'small' in delta and delta [ 'small' ] is not None :
87
+ self .data ['ColumnFamilies' ][fid ]['Small' ] = delta [ 'small' ]
86
88
87
- if hasattr ( delta , 'Large' ) and delta . Large is not None :
88
- self .data ['ColumnFamilies' ][fid ]['Large' ] = delta . Large
89
+ if 'large' in delta and delta [ 'large' ] is not None :
90
+ self .data ['ColumnFamilies' ][fid ]['Large' ] = delta [ 'large' ]
89
91
90
92
return self
91
93
@@ -102,15 +104,15 @@ def Rooms(self):
102
104
return self .data ['Rooms' ]
103
105
104
106
def add_column_to_key (self , delta ):
105
- cid = delta . ColumnId
107
+ cid = delta [ 'column_id' ]
106
108
self .data ['TableKey' ].append (cid )
107
109
return self
108
110
109
111
def unknown_delta (self , delta ):
110
112
raise RuntimeError ("Unknown delta type" )
111
113
112
114
def set_room (self , delta ):
113
- self .data ['Rooms' ][delta . RoomId ] = {"Main" : delta . Main , "Outer" : delta . Outer , "Blobs" : delta . Blobs }
115
+ self .data ['Rooms' ][delta [ 'room_id' ]] = {"Main" : delta [ 'main' ] , "Outer" : delta [ 'outer' ] , "Blobs" : delta [ 'blobs' ] }
114
116
return self
115
117
116
118
def set_compaction_policy (self , delta ):
@@ -123,23 +125,27 @@ def set_table(self, delta):
123
125
124
126
def add_delta (self , delta ):
125
127
mapping = {
126
- DeltaTypes . AddColumn : self .add_column ,
127
- DeltaTypes . DropColumn : self .drop_column ,
128
- DeltaTypes . AddColumnToKey : self .add_column_to_key ,
129
- DeltaTypes . AddColumnToFamily : self .add_column_to_family ,
130
- DeltaTypes . AddFamily : self .add_family ,
131
- DeltaTypes . SetRoom : self .set_room ,
132
- DeltaTypes . SetCompactionPolicy : self .set_compaction_policy ,
133
- DeltaTypes . SetFamily : self .set_family ,
134
- DeltaTypes . SetTable : self .set_table ,
128
+ ' AddColumn' : self .add_column ,
129
+ ' DropColumn' : self .drop_column ,
130
+ ' AddColumnToKey' : self .add_column_to_key ,
131
+ ' AddColumnToFamily' : self .add_column_to_family ,
132
+ ' AddFamily' : self .add_family ,
133
+ ' SetRoom' : self .set_room ,
134
+ ' SetCompactionPolicy' : self .set_compaction_policy ,
135
+ ' SetFamily' : self .set_family ,
136
+ ' SetTable' : self .set_table ,
135
137
}
136
- op = mapping .get (delta . DeltaType , self .unknown_delta )
138
+ op = mapping .get (delta [ 'delta_type' ] , self .unknown_delta )
137
139
return op (delta )
138
140
139
141
140
142
def get_deltas (client , tablet_id ):
141
- resp = client .send_request (msgbus .TLocalSchemeTx (TabletID = tablet_id , Timeout = 60 * 1000 ), method = 'LocalSchemeTx' )
142
- return resp .LocalDbScheme .Delta
143
+ resp = client .tablet_service .ChangeTabletSchema (ChangeTabletSchemaRequest (tablet_id = tablet_id ))
144
+ assert resp .status == StatusIds .SUCCESS
145
+ if resp .status != StatusIds .SUCCESS :
146
+ raise RuntimeError ('ERROR: {status} {issues}' .format (status = resp .status , issues = resp .issues ))
147
+ schema = json .loads (resp .schema )
148
+ return schema ['delta' ]
143
149
144
150
145
151
def get_scheme (client , tablet_id ):
@@ -148,15 +154,15 @@ def get_scheme(client, tablet_id):
148
154
pos = {}
149
155
150
156
for delta in deltas :
151
- if not delta . HasField ( 'TableId' ) :
157
+ if 'table_id' not in delta :
152
158
continue
153
159
154
- if delta . DeltaType == DeltaTypes . AddTable :
155
- table = TableScheme (delta . TableId , delta . TableName )
156
- pos [delta . TableId ] = len (scheme )
160
+ if delta [ 'delta_type' ] == ' AddTable' :
161
+ table = TableScheme (delta [ 'table_id' ] , delta [ 'table_name' ] )
162
+ pos [delta [ 'table_id' ] ] = len (scheme )
157
163
scheme .append (table )
158
164
continue
159
165
160
- scheme [pos [delta . TableId ]] = scheme [pos [delta . TableId ]].add_delta (delta )
166
+ scheme [pos [delta [ 'table_id' ]]] = scheme [pos [delta [ 'table_id' ] ]].add_delta (delta )
161
167
162
168
return [element for element in scheme ]
0 commit comments