@@ -356,10 +356,10 @@ async def _activate_and_notify(
356
356
app : FastAPI ,
357
357
auto_scaling_mode : BaseAutoscaling ,
358
358
drained_node : AssociatedInstance ,
359
- ) -> None :
359
+ ) -> AssociatedInstance :
360
360
app_settings = get_application_settings (app )
361
361
docker_client = get_docker_client (app )
362
- await asyncio .gather (
362
+ updated_node , * _ = await asyncio .gather (
363
363
utils_docker .set_node_osparc_ready (
364
364
app_settings , docker_client , drained_node .node , ready = True
365
365
),
@@ -373,6 +373,7 @@ async def _activate_and_notify(
373
373
app , drained_node .assigned_tasks , progress = 1.0
374
374
),
375
375
)
376
+ return dataclasses .replace (drained_node , node = updated_node )
376
377
377
378
378
379
async def _activate_drained_nodes (
@@ -392,13 +393,13 @@ async def _activate_drained_nodes(
392
393
with log_context (
393
394
_logger , logging .INFO , f"activate { len (nodes_to_activate )} drained nodes"
394
395
):
395
- await asyncio .gather (
396
+ activated_nodes = await asyncio .gather (
396
397
* (
397
398
_activate_and_notify (app , auto_scaling_mode , node )
398
399
for node in nodes_to_activate
399
400
)
400
401
)
401
- new_active_node_ids = {node .ec2_instance .id for node in nodes_to_activate }
402
+ new_active_node_ids = {node .ec2_instance .id for node in activated_nodes }
402
403
remaining_drained_nodes = [
403
404
node
404
405
for node in cluster .drained_nodes
@@ -411,7 +412,7 @@ async def _activate_drained_nodes(
411
412
]
412
413
return dataclasses .replace (
413
414
cluster ,
414
- active_nodes = cluster .active_nodes + nodes_to_activate ,
415
+ active_nodes = cluster .active_nodes + activated_nodes ,
415
416
drained_nodes = remaining_drained_nodes ,
416
417
buffer_drained_nodes = remaining_reserved_drained_nodes ,
417
418
)
@@ -878,7 +879,7 @@ async def _deactivate_empty_nodes(app: FastAPI, cluster: Cluster) -> Cluster:
878
879
with log_context (
879
880
_logger , logging .INFO , f"drain { len (active_empty_instances )} empty nodes"
880
881
):
881
- updated_nodes : list [ Node ] = await asyncio .gather (
882
+ updated_nodes = await asyncio .gather (
882
883
* (
883
884
utils_docker .set_node_osparc_ready (
884
885
app_settings ,
@@ -1076,7 +1077,7 @@ async def _drain_retired_nodes(
1076
1077
app_settings = get_application_settings (app )
1077
1078
docker_client = get_docker_client (app )
1078
1079
# drain this empty nodes
1079
- updated_nodes : list [ Node ] = await asyncio .gather (
1080
+ updated_nodes = await asyncio .gather (
1080
1081
* (
1081
1082
utils_docker .set_node_osparc_ready (
1082
1083
app_settings ,
@@ -1173,7 +1174,11 @@ async def _autoscale_cluster(
1173
1174
) -> Cluster :
1174
1175
# 1. check if we have pending tasks
1175
1176
unnasigned_pending_tasks = await auto_scaling_mode .list_unrunnable_tasks (app )
1176
- _logger .info ("found %s pending tasks" , len (unnasigned_pending_tasks ))
1177
+ _logger .info (
1178
+ "found %s pending task%s" ,
1179
+ len (unnasigned_pending_tasks ),
1180
+ "s" if len (unnasigned_pending_tasks ) > 1 else "" ,
1181
+ )
1177
1182
# NOTE: this function predicts how the backend will assign tasks
1178
1183
still_pending_tasks , cluster = await _assign_tasks_to_current_cluster (
1179
1184
app , unnasigned_pending_tasks , cluster , auto_scaling_mode
0 commit comments