Skip to content

Commit babb0c4

Browse files
authored
Fix instance filtering by backend to use base backend (dstackai#2324)
1 parent 714fc44 commit babb0c4

2 files changed

Lines changed: 26 additions & 22 deletions

File tree

src/dstack/_internal/server/background/tasks/process_instances.py

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,6 @@
4545
InstanceOfferWithAvailability,
4646
InstanceRuntime,
4747
InstanceStatus,
48-
InstanceType,
4948
RemoteConnectionInfo,
5049
SSHKey,
5150
)
@@ -695,7 +694,8 @@ async def _check_instance(instance: InstanceModel) -> None:
695694

696695
if instance.status == InstanceStatus.PROVISIONING and instance.started_at is not None:
697696
provisioning_deadline = _get_provisioning_deadline(
698-
instance, job_provisioning_data.instance_type
697+
instance=instance,
698+
job_provisioning_data=job_provisioning_data,
699699
)
700700
if get_current_datetime() > provisioning_deadline:
701701
instance.status = InstanceStatus.TERMINATING
@@ -737,7 +737,8 @@ async def _wait_for_instance_provisioning_data(
737737
instance.name,
738738
)
739739
provisioning_deadline = _get_provisioning_deadline(
740-
instance, job_provisioning_data.instance_type
740+
instance=instance,
741+
job_provisioning_data=job_provisioning_data,
741742
)
742743
if get_current_datetime() > provisioning_deadline:
743744
logger.warning(
@@ -959,9 +960,13 @@ def _get_retry_duration_deadline(instance: InstanceModel, retry: Retry) -> datet
959960

960961

961962
def _get_provisioning_deadline(
962-
instance: InstanceModel, instance_type: InstanceType
963+
instance: InstanceModel,
964+
job_provisioning_data: JobProvisioningData,
963965
) -> datetime.datetime:
964-
timeout_interval = _get_instance_timeout_interval(instance.backend, instance_type.name)
966+
timeout_interval = _get_instance_timeout_interval(
967+
backend_type=job_provisioning_data.get_base_backend(),
968+
instance_type_name=job_provisioning_data.instance_type.name,
969+
)
965970
return instance.started_at.replace(tzinfo=datetime.timezone.utc) + timeout_interval
966971

967972

src/dstack/_internal/server/services/pools.py

Lines changed: 16 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -487,24 +487,23 @@ def filter_pool_instances(
487487
continue
488488
if status is not None and instance.status != status:
489489
continue
490-
if backend_types is not None and instance.backend not in backend_types:
491-
continue
492-
if regions is not None and instance.region not in regions:
493-
continue
494490
jpd = get_instance_provisioning_data(instance)
495-
if (
496-
jpd is not None
497-
and profile.instance_types is not None
498-
and jpd.instance_type.name not in profile.instance_types
499-
):
500-
continue
501-
if (
502-
jpd is not None
503-
and jpd.availability_zone is not None
504-
and zones is not None
505-
and jpd.availability_zone not in zones
506-
):
507-
continue
491+
if jpd is not None:
492+
if backend_types is not None and jpd.get_base_backend() not in backend_types:
493+
continue
494+
if regions is not None and jpd.region not in regions:
495+
continue
496+
if (
497+
profile.instance_types is not None
498+
and jpd.instance_type.name not in profile.instance_types
499+
):
500+
continue
501+
if (
502+
jpd.availability_zone is not None
503+
and zones is not None
504+
and jpd.availability_zone not in zones
505+
):
506+
continue
508507
if instance.total_blocks is None:
509508
# Still provisioning, we don't know yet if it shared or not
510509
continue

0 commit comments

Comments
 (0)