Skip to content

Commit 39a4da3

Browse files
authored
Move DefineBox and DefineStoragePools in single transaction (#4784)
1 parent c42eeee commit 39a4da3

File tree

1 file changed

+12
-17
lines changed

1 file changed

+12
-17
lines changed

ydb/tools/cfg/dynamic.py

Lines changed: 12 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@ def __init__(
3030
self._walle_provider = walle_provider
3131
self._cluster_details = base.ClusterDetailsProvider(template, walle_provider=self._walle_provider)
3232
self._grpc_endpoint = grpc_endpoint
33-
self.__define_storage_pools_request = None
3433
self.__configure_request = None
3534
self.__static_config = static.StaticConfigGenerator(
3635
template, binary_path, output_dir, walle_provider=walle_provider, local_binary_path=local_binary_path
@@ -60,6 +59,7 @@ def __init_storage_command(self, proto_file):
6059

6160
def __add_storage_pool(
6261
self,
62+
request,
6363
box_id,
6464
storage_pool_id,
6565
erasure,
@@ -72,7 +72,7 @@ def __add_storage_pool(
7272
encryption_mode=0,
7373
generation=0,
7474
):
75-
cmd = self.__define_storage_pools_request.Command.add()
75+
cmd = request.Command.add()
7676
cmd.DefineStoragePool.BoxId = box_id
7777
name = "Storage Pool with id: %d" % storage_pool_id if name is None else name
7878
cmd.DefineStoragePool.ItemConfigGeneration = generation
@@ -152,8 +152,7 @@ def init_storage_commands(self):
152152
return '\n'.join(
153153
[
154154
"set -eu",
155-
self.__init_storage_command("DefineBox.txt"),
156-
self.__init_storage_command("DefineStoragePools.txt"),
155+
self.__init_storage_command("DefineBoxAndStoragePools.txt"),
157156
]
158157
)
159158

@@ -174,8 +173,8 @@ def init_root_storage(self):
174173
def cms_init_cmd(self):
175174
return self.__cms_init_cmds()
176175

177-
def define_box_request(self):
178-
define_box_request = bs_config.TConfigRequest()
176+
def define_box_and_storage_pools_request(self):
177+
request = bs_config.TConfigRequest()
179178
box_id = 1
180179
drives_to_config_id = {}
181180
host_config_id_iter = itertools.count(start=1)
@@ -195,7 +194,7 @@ def add_drive(array, drive):
195194

196195
for host_config in self._cluster_details.host_configs:
197196
at_least_one_host_config_defined = True
198-
cmd = define_box_request.Command.add()
197+
cmd = request.Command.add()
199198
cmd.DefineHostConfig.HostConfigId = host_config.host_config_id
200199
cmd.DefineHostConfig.ItemConfigGeneration = host_config.generation
201200
drives_to_config_id[host_config.drives] = host_config.host_config_id
@@ -212,14 +211,14 @@ def add_drive(array, drive):
212211
)
213212

214213
host_config_id = next(host_config_id_iter)
215-
cmd = define_box_request.Command.add()
214+
cmd = request.Command.add()
216215
cmd.DefineHostConfig.HostConfigId = host_config_id
217216
for drive in host.drives:
218217
add_drive(cmd.DefineHostConfig.Drive, drive)
219218

220219
drives_to_config_id[host.drives] = host_config_id
221220

222-
box_cmd = define_box_request.Command.add()
221+
box_cmd = request.Command.add()
223222
box_cmd.DefineBox.BoxId = box_id
224223
box_cmd.DefineBox.ItemConfigGeneration = self._cluster_details.storage_config_generation
225224
for host in self._cluster_details.hosts:
@@ -230,23 +229,20 @@ def add_drive(array, drive):
230229
box_host.HostConfigId = host.host_config_id
231230
else:
232231
box_host.HostConfigId = drives_to_config_id[host.drives]
233-
return define_box_request
234232

235-
def define_storage_pools_request(self):
236-
self.__define_storage_pools_request = bs_config.TConfigRequest()
237233
storage_pool_id = itertools.count(start=1)
238234

239235
if self._cluster_details.storage_pools_deprecated:
240236
for storage_pool in self._cluster_details.storage_pools_deprecated:
241-
self.__add_storage_pool(storage_pool_id=next(storage_pool_id), **storage_pool.to_dict())
237+
self.__add_storage_pool(request, storage_pool_id=next(storage_pool_id), **storage_pool.to_dict())
242238

243239
# for tablets in domain lets make pools
244240
# but it is not supposed to make tablets in domain directly
245241
for domain in self._cluster_details.domains:
246242
for storage_pool in domain.storage_pools:
247-
self.__add_storage_pool(storage_pool_id=next(storage_pool_id), **storage_pool.to_dict())
243+
self.__add_storage_pool(request, storage_pool_id=next(storage_pool_id), **storage_pool.to_dict())
248244

249-
return self.__define_storage_pools_request
245+
return request
250246

251247
@staticmethod
252248
def make_bind_root_storage_request(domain):
@@ -298,8 +294,7 @@ def make_configure_request(self, domain):
298294

299295
def get_storage_requests(self):
300296
return {
301-
'DefineBox.txt': utils.message_to_string(self.define_box_request()),
302-
'DefineStoragePools.txt': utils.message_to_string(self.define_storage_pools_request()),
297+
'DefineBoxAndStoragePools.txt': utils.message_to_string(self.define_box_and_storage_pools_request()),
303298
}
304299

305300
@staticmethod

0 commit comments

Comments
 (0)