Skip to content

Commit 5bc5fc1

Browse files
authored
Remove termination_idle_time and termination_policy from profiles and fleets (#2407)
1 parent 68841e8 commit 5bc5fc1

File tree

7 files changed

+5
-62
lines changed

7 files changed

+5
-62
lines changed

src/dstack/_internal/cli/services/profile.py

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
Profile,
99
ProfileRetry,
1010
SpotPolicy,
11-
TerminationPolicy,
1211
parse_duration,
1312
parse_max_duration,
1413
)
@@ -149,10 +148,9 @@ def apply_profile_args(
149148
profile_settings.max_duration = args.max_duration
150149

151150
if args.idle_duration is not None:
152-
profile_settings.termination_idle_time = args.idle_duration
153-
154-
if args.dont_destroy:
155-
profile_settings.termination_policy = TerminationPolicy.DONT_DESTROY
151+
profile_settings.idle_duration = args.idle_duration
152+
elif args.dont_destroy:
153+
profile_settings.idle_duration = False
156154
if args.creation_policy_reuse:
157155
profile_settings.creation_policy = CreationPolicy.REUSE
158156

src/dstack/_internal/core/models/fleets.py

Lines changed: 0 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,6 @@
1616
ProfileParams,
1717
ProfileRetry,
1818
SpotPolicy,
19-
TerminationPolicy,
20-
parse_duration,
2119
parse_idle_duration,
2220
)
2321
from dstack._internal.core.models.resources import Range, ResourcesSpec
@@ -217,30 +215,13 @@ class InstanceGroupParams(CoreModel):
217215
Optional[float],
218216
Field(description="The maximum instance price per hour, in dollars", gt=0.0),
219217
] = None
220-
221218
idle_duration: Annotated[
222219
Optional[Union[Literal["off"], str, int]],
223220
Field(
224221
description="Time to wait before terminating idle instances. Defaults to `5m` for runs and `3d` for fleets. Use `off` for unlimited duration"
225222
),
226223
] = None
227-
# Deprecated:
228-
termination_policy: Annotated[
229-
Optional[TerminationPolicy],
230-
Field(
231-
description="Deprecated in favor of `idle_duration`",
232-
),
233-
] = None
234-
termination_idle_time: Annotated[
235-
Optional[Union[str, int]],
236-
Field(
237-
description="Deprecated in favor of `idle_duration`",
238-
),
239-
] = None
240224

241-
_validate_termination_idle_time = validator(
242-
"termination_idle_time", pre=True, allow_reuse=True
243-
)(parse_duration)
244225
_validate_idle_duration = validator("idle_duration", pre=True, allow_reuse=True)(
245226
parse_idle_duration
246227
)

src/dstack/_internal/core/models/profiles.py

Lines changed: 0 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -240,29 +240,13 @@ class ProfileParams(CoreModel):
240240
Optional[UtilizationPolicy],
241241
Field(description="Run termination policy based on utilization"),
242242
] = None
243-
# Deprecated:
244-
termination_policy: Annotated[
245-
Optional[TerminationPolicy],
246-
Field(
247-
description="Deprecated in favor of `idle_duration`",
248-
),
249-
] = None
250-
termination_idle_time: Annotated[
251-
Optional[Union[str, int]],
252-
Field(
253-
description="Deprecated in favor of `idle_duration`",
254-
),
255-
] = None
256243

257244
_validate_max_duration = validator("max_duration", pre=True, allow_reuse=True)(
258245
parse_max_duration
259246
)
260247
_validate_stop_duration = validator("stop_duration", pre=True, allow_reuse=True)(
261248
parse_stop_duration
262249
)
263-
_validate_termination_idle_time = validator(
264-
"termination_idle_time", pre=True, allow_reuse=True
265-
)(parse_duration)
266250
_validate_idle_duration = validator("idle_duration", pre=True, allow_reuse=True)(
267251
parse_idle_duration
268252
)

src/dstack/_internal/core/services/profiles.py

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -37,10 +37,6 @@ def get_termination(
3737
) -> Tuple[TerminationPolicy, int]:
3838
termination_policy = TerminationPolicy.DESTROY_AFTER_IDLE
3939
termination_idle_time = default_termination_idle_time
40-
if profile.termination_policy is not None:
41-
termination_policy = profile.termination_policy
42-
if profile.termination_idle_time is not None:
43-
termination_idle_time = profile.termination_idle_time
4440
if profile.idle_duration is not None and int(profile.idle_duration) < 0:
4541
termination_policy = TerminationPolicy.DONT_DESTROY
4642
elif profile.idle_duration is not None:

src/dstack/api/_public/runs.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -586,6 +586,8 @@ def get_plan(
586586
configuration: AnyRunConfiguration,
587587
repo: Optional[Repo] = None,
588588
configuration_path: Optional[str] = None,
589+
# Unused profile args are deprecated and removed but
590+
# kept for signature backward compatibility.
589591
backends: Optional[List[BackendType]] = None,
590592
regions: Optional[List[str]] = None,
591593
instance_types: Optional[List[str]] = None,
@@ -646,8 +648,6 @@ def get_plan(
646648
max_price=max_price,
647649
creation_policy=creation_policy,
648650
idle_duration=idle_duration,
649-
termination_policy=termination_policy,
650-
termination_idle_time=termination_policy_idle,
651651
)
652652
run_spec = RunSpec(
653653
run_name=run_name,

src/tests/_internal/server/routers/test_fleets.py

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -345,8 +345,6 @@ async def test_creates_fleet(self, test_db, session: AsyncSession, client: Async
345345
"retry": None,
346346
"max_price": None,
347347
"idle_duration": None,
348-
"termination_policy": None,
349-
"termination_idle_time": None,
350348
"type": "fleet",
351349
"name": "test-fleet",
352350
"reservation": None,
@@ -364,8 +362,6 @@ async def test_creates_fleet(self, test_db, session: AsyncSession, client: Async
364362
"max_price": None,
365363
"creation_policy": None,
366364
"idle_duration": None,
367-
"termination_policy": None,
368-
"termination_idle_time": None,
369365
"utilization_policy": None,
370366
"name": "",
371367
"default": False,
@@ -467,8 +463,6 @@ async def test_creates_ssh_fleet(self, test_db, session: AsyncSession, client: A
467463
"retry": None,
468464
"max_price": None,
469465
"idle_duration": None,
470-
"termination_policy": None,
471-
"termination_idle_time": None,
472466
"type": "fleet",
473467
"name": spec.configuration.name,
474468
"reservation": None,
@@ -486,8 +480,6 @@ async def test_creates_ssh_fleet(self, test_db, session: AsyncSession, client: A
486480
"max_price": None,
487481
"creation_policy": None,
488482
"idle_duration": None,
489-
"termination_policy": None,
490-
"termination_idle_time": None,
491483
"utilization_policy": None,
492484
"name": "",
493485
"default": False,

src/tests/_internal/server/routers/test_runs.py

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -122,8 +122,6 @@ def get_dev_env_run_plan_dict(
122122
"retry": None,
123123
"spot_policy": "spot",
124124
"idle_duration": None,
125-
"termination_idle_time": 300,
126-
"termination_policy": None,
127125
"utilization_policy": None,
128126
"reservation": None,
129127
},
@@ -142,8 +140,6 @@ def get_dev_env_run_plan_dict(
142140
"retry": None,
143141
"spot_policy": "spot",
144142
"idle_duration": None,
145-
"termination_idle_time": 300,
146-
"termination_policy": None,
147143
"utilization_policy": None,
148144
"reservation": None,
149145
},
@@ -276,8 +272,6 @@ def get_dev_env_run_dict(
276272
"retry": None,
277273
"spot_policy": "spot",
278274
"idle_duration": None,
279-
"termination_idle_time": 300,
280-
"termination_policy": None,
281275
"utilization_policy": None,
282276
"reservation": None,
283277
},
@@ -296,8 +290,6 @@ def get_dev_env_run_dict(
296290
"retry": None,
297291
"spot_policy": "spot",
298292
"idle_duration": None,
299-
"termination_idle_time": 300,
300-
"termination_policy": None,
301293
"utilization_policy": None,
302294
"reservation": None,
303295
},

0 commit comments

Comments
 (0)