@@ -275,7 +275,7 @@ def _check_and_mark_terminating_if_idle_duration_expired(instance: InstanceModel
275275 delta = datetime .timedelta (seconds = idle_seconds )
276276 if idle_duration > delta :
277277 instance .status = InstanceStatus .TERMINATING
278- instance .termination_reason = InstanceTerminationReason .IDLE_TIMEOUT . value
278+ instance .termination_reason = InstanceTerminationReason .IDLE_TIMEOUT
279279 logger .info (
280280 "Instance %s idle duration expired: idle time %ss. Terminating" ,
281281 instance .name ,
@@ -311,7 +311,7 @@ async def _add_remote(instance: InstanceModel) -> None:
311311 retry_duration_deadline = instance .created_at + timedelta (seconds = PROVISIONING_TIMEOUT_SECONDS )
312312 if retry_duration_deadline < get_current_datetime ():
313313 instance .status = InstanceStatus .TERMINATED
314- instance .termination_reason = InstanceTerminationReason .PROOVISIONING_TIMEOUT . value
314+ instance .termination_reason = InstanceTerminationReason .PROVISIONING_TIMEOUT
315315 logger .warning (
316316 "Failed to start instance %s in %d seconds. Terminating..." ,
317317 instance .name ,
@@ -334,7 +334,7 @@ async def _add_remote(instance: InstanceModel) -> None:
334334 ssh_proxy_pkeys = None
335335 except (ValueError , PasswordRequiredException ):
336336 instance .status = InstanceStatus .TERMINATED
337- instance .termination_reason = InstanceTerminationReason .ERROR . value
337+ instance .termination_reason = InstanceTerminationReason .ERROR
338338 instance .termination_reason_message = "Unsupported private SSH key type"
339339 logger .warning (
340340 "Failed to add instance %s: unsupported private SSH key type" ,
@@ -393,7 +393,7 @@ async def _add_remote(instance: InstanceModel) -> None:
393393 )
394394 if instance_network is not None and internal_ip is None :
395395 instance .status = InstanceStatus .TERMINATED
396- instance .termination_reason = InstanceTerminationReason .ERROR . value
396+ instance .termination_reason = InstanceTerminationReason .ERROR
397397 instance .termination_reason_message = (
398398 "Failed to locate internal IP address on the given network"
399399 )
@@ -409,7 +409,7 @@ async def _add_remote(instance: InstanceModel) -> None:
409409 if internal_ip is not None :
410410 if not is_ip_among_addresses (ip_address = internal_ip , addresses = host_network_addresses ):
411411 instance .status = InstanceStatus .TERMINATED
412- instance .termination_reason = InstanceTerminationReason .ERROR . value
412+ instance .termination_reason = InstanceTerminationReason .ERROR
413413 instance .termination_reason_message = (
414414 "Specified internal IP not found among instance interfaces"
415415 )
@@ -432,7 +432,7 @@ async def _add_remote(instance: InstanceModel) -> None:
432432 instance .total_blocks = blocks
433433 else :
434434 instance .status = InstanceStatus .TERMINATED
435- instance .termination_reason = InstanceTerminationReason .ERROR . value
435+ instance .termination_reason = InstanceTerminationReason .ERROR
436436 instance .termination_reason_message = "Cannot split into blocks"
437437 logger .warning (
438438 "Failed to add instance %s: cannot split into blocks" ,
@@ -552,7 +552,7 @@ async def _create_instance(session: AsyncSession, instance: InstanceModel) -> No
552552 requirements = get_instance_requirements (instance )
553553 except ValidationError as e :
554554 instance .status = InstanceStatus .TERMINATED
555- instance .termination_reason = InstanceTerminationReason .ERROR . value
555+ instance .termination_reason = InstanceTerminationReason .ERROR
556556 instance .termination_reason_message = (
557557 f"Error to parse profile, requirements or instance_configuration: { e } "
558558 )
@@ -679,17 +679,19 @@ async def _create_instance(session: AsyncSession, instance: InstanceModel) -> No
679679 )
680680 return
681681
682- _mark_terminated (instance , InstanceTerminationReason .NO_OFFERS . value )
682+ _mark_terminated (instance , InstanceTerminationReason .NO_OFFERS )
683683 if instance .fleet and is_fleet_master_instance (instance ) and is_cloud_cluster (instance .fleet ):
684684 # Do not attempt to deploy other instances, as they won't determine the correct cluster
685685 # backend, region, and placement group without a successfully deployed master instance
686686 for sibling_instance in instance .fleet .instances :
687687 if sibling_instance .id == instance .id :
688688 continue
689- _mark_terminated (sibling_instance , InstanceTerminationReason .MASTER_FAILED . value )
689+ _mark_terminated (sibling_instance , InstanceTerminationReason .MASTER_FAILED )
690690
691691
692- def _mark_terminated (instance : InstanceModel , termination_reason : str ) -> None :
692+ def _mark_terminated (
693+ instance : InstanceModel , termination_reason : InstanceTerminationReason
694+ ) -> None :
693695 instance .status = InstanceStatus .TERMINATED
694696 instance .termination_reason = termination_reason
695697 logger .info (
@@ -711,7 +713,7 @@ async def _check_instance(session: AsyncSession, instance: InstanceModel) -> Non
711713 ):
712714 # A busy instance could have no active jobs due to this bug: https://github.com/dstackai/dstack/issues/2068
713715 instance .status = InstanceStatus .TERMINATING
714- instance .termination_reason = InstanceTerminationReason .JOB_FINISHED . value
716+ instance .termination_reason = InstanceTerminationReason .JOB_FINISHED
715717 logger .info (
716718 "Detected busy instance %s with finished job. Marked as TERMINATING" ,
717719 instance .name ,
@@ -840,7 +842,7 @@ async def _check_instance(session: AsyncSession, instance: InstanceModel) -> Non
840842 deadline = instance .termination_deadline
841843 if get_current_datetime () > deadline :
842844 instance .status = InstanceStatus .TERMINATING
843- instance .termination_reason = InstanceTerminationReason .TERMINATION_TIMEOUT . value
845+ instance .termination_reason = InstanceTerminationReason .TERMINATION_TIMEOUT
844846 logger .warning (
845847 "Instance %s shim waiting timeout. Marked as TERMINATING" ,
846848 instance .name ,
@@ -869,7 +871,7 @@ async def _wait_for_instance_provisioning_data(
869871 "Instance %s failed because instance has not become running in time" , instance .name
870872 )
871873 instance .status = InstanceStatus .TERMINATING
872- instance .termination_reason = InstanceTerminationReason .STARTING_TIMEOUT . value
874+ instance .termination_reason = InstanceTerminationReason .STARTING_TIMEOUT
873875 return
874876
875877 backend = await backends_services .get_project_backend_by_type (
@@ -882,7 +884,7 @@ async def _wait_for_instance_provisioning_data(
882884 instance .name ,
883885 )
884886 instance .status = InstanceStatus .TERMINATING
885- instance .termination_reason = InstanceTerminationReason .ERROR . value
887+ instance .termination_reason = InstanceTerminationReason .ERROR
886888 instance .termination_reason_message = "Backend not available"
887889 return
888890 try :
@@ -900,7 +902,7 @@ async def _wait_for_instance_provisioning_data(
900902 repr (e ),
901903 )
902904 instance .status = InstanceStatus .TERMINATING
903- instance .termination_reason = InstanceTerminationReason .ERROR . value
905+ instance .termination_reason = InstanceTerminationReason .ERROR
904906 instance .termination_reason_message = "Error while waiting for instance to become running"
905907 except Exception :
906908 logger .exception (
0 commit comments