@@ -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+
472486def _apply_plan (api : Client , plan : FleetPlan ) -> Fleet :
473487 try :
474488 return api .client .fleets .apply_plan (
0 commit comments