Skip to content

Commit 9ad18ef

Browse files
committed
Fix fleet provisioning error message when fleet retried
1 parent 40903db commit 9ad18ef

1 file changed

Lines changed: 20 additions & 6 deletions

File tree

  • src/dstack/_internal/cli/services/configurators

src/dstack/_internal/cli/services/configurators/fleet.py

Lines changed: 20 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -159,12 +159,19 @@ def _apply_plan(self, plan: FleetPlan, command_args: argparse.Namespace):
159159
console.print(
160160
get_fleets_table(
161161
[fleet],
162-
verbose=_failed_provisioning(fleet),
162+
verbose=_fleet_has_failed_instances(fleet),
163163
format_date=local_time,
164164
)
165165
)
166-
if _failed_provisioning(fleet):
167-
console.print("\n[error]Some instances failed. Check the table above for errors.[/]")
166+
if _fleet_has_failed_instances(fleet):
167+
if _fleet_retrying(fleet):
168+
console.print(
169+
"\n[error]Some instances failed. Provisioning will be retried in the background.[/]"
170+
)
171+
else:
172+
console.print(
173+
"\n[error]Some instances failed. Check the table above for errors.[/]"
174+
)
168175
exit(1)
169176

170177
def _apply_plan_on_old_server(self, plan: FleetPlan, command_args: argparse.Namespace):
@@ -253,11 +260,11 @@ def _apply_plan_on_old_server(self, plan: FleetPlan, command_args: argparse.Name
253260
console.print(
254261
get_fleets_table(
255262
[fleet],
256-
verbose=_failed_provisioning(fleet),
263+
verbose=_fleet_has_failed_instances(fleet),
257264
format_date=local_time,
258265
)
259266
)
260-
if _failed_provisioning(fleet):
267+
if _fleet_has_failed_instances(fleet):
261268
console.print("\n[error]Some instances failed. Check the table above for errors.[/]")
262269
exit(1)
263270

@@ -462,13 +469,20 @@ def _finished_provisioning(fleet: Fleet) -> bool:
462469
return True
463470

464471

465-
def _failed_provisioning(fleet: Fleet) -> bool:
472+
def _fleet_has_failed_instances(fleet: Fleet) -> bool:
466473
for instance in fleet.instances:
467474
if instance.status == InstanceStatus.TERMINATED:
468475
return True
469476
return False
470477

471478

479+
def _fleet_retrying(fleet: Fleet) -> bool:
480+
if fleet.spec.configuration.nodes is None:
481+
return False
482+
active_instances = [i for i in fleet.instances if i.status.is_active()]
483+
return len(active_instances) < fleet.spec.configuration.nodes.min
484+
485+
472486
def _apply_plan(api: Client, plan: FleetPlan) -> Fleet:
473487
try:
474488
return api.client.fleets.apply_plan(

0 commit comments

Comments
 (0)