dstack 0.19.19__py3-none-any.whl → 0.19.21__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of dstack might be problematic. Click here for more details.

Files changed (54) hide show
  1. dstack/_internal/core/backends/__init__.py +0 -65
  2. dstack/_internal/core/backends/cloudrift/api_client.py +13 -1
  3. dstack/_internal/core/backends/features.py +64 -0
  4. dstack/_internal/core/backends/oci/resources.py +5 -5
  5. dstack/_internal/core/compatibility/fleets.py +2 -0
  6. dstack/_internal/core/compatibility/runs.py +4 -0
  7. dstack/_internal/core/models/profiles.py +37 -0
  8. dstack/_internal/server/app.py +22 -10
  9. dstack/_internal/server/background/__init__.py +5 -6
  10. dstack/_internal/server/background/tasks/process_fleets.py +52 -38
  11. dstack/_internal/server/background/tasks/process_gateways.py +2 -2
  12. dstack/_internal/server/background/tasks/process_idle_volumes.py +5 -4
  13. dstack/_internal/server/background/tasks/process_instances.py +62 -48
  14. dstack/_internal/server/background/tasks/process_metrics.py +9 -2
  15. dstack/_internal/server/background/tasks/process_placement_groups.py +2 -0
  16. dstack/_internal/server/background/tasks/process_prometheus_metrics.py +14 -2
  17. dstack/_internal/server/background/tasks/process_running_jobs.py +129 -124
  18. dstack/_internal/server/background/tasks/process_runs.py +63 -20
  19. dstack/_internal/server/background/tasks/process_submitted_jobs.py +12 -10
  20. dstack/_internal/server/background/tasks/process_terminating_jobs.py +12 -4
  21. dstack/_internal/server/background/tasks/process_volumes.py +4 -1
  22. dstack/_internal/server/migrations/versions/50dd7ea98639_index_status_columns.py +55 -0
  23. dstack/_internal/server/migrations/versions/ec02a26a256c_add_runmodel_next_triggered_at.py +38 -0
  24. dstack/_internal/server/models.py +16 -16
  25. dstack/_internal/server/schemas/logs.py +1 -9
  26. dstack/_internal/server/services/fleets.py +19 -10
  27. dstack/_internal/server/services/gateways/__init__.py +17 -17
  28. dstack/_internal/server/services/instances.py +10 -14
  29. dstack/_internal/server/services/jobs/__init__.py +10 -12
  30. dstack/_internal/server/services/logs/aws.py +45 -3
  31. dstack/_internal/server/services/logs/filelog.py +121 -11
  32. dstack/_internal/server/services/offers.py +3 -3
  33. dstack/_internal/server/services/projects.py +35 -15
  34. dstack/_internal/server/services/prometheus/client_metrics.py +3 -0
  35. dstack/_internal/server/services/prometheus/custom_metrics.py +22 -3
  36. dstack/_internal/server/services/runs.py +74 -34
  37. dstack/_internal/server/services/services/__init__.py +4 -1
  38. dstack/_internal/server/services/users.py +2 -3
  39. dstack/_internal/server/services/volumes.py +11 -11
  40. dstack/_internal/server/settings.py +3 -0
  41. dstack/_internal/server/statics/index.html +1 -1
  42. dstack/_internal/server/statics/{main-64f8273740c4b52c18f5.js → main-39a767528976f8078166.js} +7 -26
  43. dstack/_internal/server/statics/{main-64f8273740c4b52c18f5.js.map → main-39a767528976f8078166.js.map} +1 -1
  44. dstack/_internal/server/statics/{main-d58fc0460cb0eae7cb5c.css → main-8f9ee218d3eb45989682.css} +2 -2
  45. dstack/_internal/server/testing/common.py +7 -0
  46. dstack/_internal/server/utils/sentry_utils.py +12 -0
  47. dstack/_internal/utils/common.py +10 -21
  48. dstack/_internal/utils/cron.py +5 -0
  49. dstack/version.py +1 -1
  50. {dstack-0.19.19.dist-info → dstack-0.19.21.dist-info}/METADATA +2 -11
  51. {dstack-0.19.19.dist-info → dstack-0.19.21.dist-info}/RECORD +54 -49
  52. {dstack-0.19.19.dist-info → dstack-0.19.21.dist-info}/WHEEL +0 -0
  53. {dstack-0.19.19.dist-info → dstack-0.19.21.dist-info}/entry_points.txt +0 -0
  54. {dstack-0.19.19.dist-info → dstack-0.19.21.dist-info}/licenses/LICENSE.md +0 -0
@@ -68,6 +68,7 @@ from dstack._internal.core.models.runs import (
68
68
  Requirements,
69
69
  RunSpec,
70
70
  RunStatus,
71
+ RunTerminationReason,
71
72
  )
72
73
  from dstack._internal.core.models.users import GlobalRole
73
74
  from dstack._internal.core.models.volumes import (
@@ -282,12 +283,15 @@ async def create_run(
282
283
  user: UserModel,
283
284
  run_name: str = "test-run",
284
285
  status: RunStatus = RunStatus.SUBMITTED,
286
+ termination_reason: Optional[RunTerminationReason] = None,
285
287
  submitted_at: datetime = datetime(2023, 1, 2, 3, 4, tzinfo=timezone.utc),
286
288
  run_spec: Optional[RunSpec] = None,
287
289
  run_id: Optional[UUID] = None,
288
290
  deleted: bool = False,
289
291
  priority: int = 0,
290
292
  deployment_num: int = 0,
293
+ resubmission_attempt: int = 0,
294
+ next_triggered_at: Optional[datetime] = None,
291
295
  ) -> RunModel:
292
296
  if run_spec is None:
293
297
  run_spec = get_run_spec(
@@ -305,12 +309,15 @@ async def create_run(
305
309
  submitted_at=submitted_at,
306
310
  run_name=run_name,
307
311
  status=status,
312
+ termination_reason=termination_reason,
308
313
  run_spec=run_spec.json(),
309
314
  last_processed_at=submitted_at,
310
315
  jobs=[],
311
316
  priority=priority,
312
317
  deployment_num=deployment_num,
313
318
  desired_replica_count=1,
319
+ resubmission_attempt=resubmission_attempt,
320
+ next_triggered_at=next_triggered_at,
314
321
  )
315
322
  session.add(run)
316
323
  await session.commit()
@@ -0,0 +1,12 @@
1
+ import functools
2
+
3
+ import sentry_sdk
4
+
5
+
6
+ def instrument_background_task(f):
7
+ @functools.wraps(f)
8
+ async def wrapper(*args, **kwargs):
9
+ with sentry_sdk.start_transaction(name=f"background.{f.__name__}"):
10
+ return await f(*args, **kwargs)
11
+
12
+ return wrapper
@@ -225,27 +225,6 @@ def remove_prefix(text: str, prefix: str) -> str:
225
225
  T = TypeVar("T")
226
226
 
227
227
 
228
- def split_chunks(iterable: Iterable[T], chunk_size: int) -> Iterable[List[T]]:
229
- """
230
- Splits an iterable into chunks of at most `chunk_size` items.
231
-
232
- >>> list(split_chunks([1, 2, 3, 4, 5], 2))
233
- [[1, 2], [3, 4], [5]]
234
- """
235
-
236
- if chunk_size < 1:
237
- raise ValueError(f"chunk_size should be a positive integer, not {chunk_size}")
238
-
239
- chunk = []
240
- for item in iterable:
241
- chunk.append(item)
242
- if len(chunk) == chunk_size:
243
- yield chunk
244
- chunk = []
245
- if chunk:
246
- yield chunk
247
-
248
-
249
228
  MEMORY_UNITS = {
250
229
  "B": 1,
251
230
  "K": 2**10,
@@ -283,7 +262,17 @@ def get_or_error(v: Optional[T]) -> T:
283
262
  return v
284
263
 
285
264
 
265
+ # TODO: drop after dropping Python 3.11
286
266
  def batched(seq: Iterable[T], n: int) -> Iterable[List[T]]:
267
+ """
268
+ Roughly equivalent to itertools.batched from Python 3.12.
269
+
270
+ >>> list(batched([1, 2, 3, 4, 5], 2))
271
+ [[1, 2], [3, 4], [5]]
272
+ """
273
+
274
+ if n < 1:
275
+ raise ValueError(f"n should be a positive integer, not {n}")
287
276
  it = iter(seq)
288
277
  return iter(lambda: list(itertools.islice(it, n)), [])
289
278
 
@@ -0,0 +1,5 @@
1
+ from apscheduler.triggers.cron import CronTrigger
2
+
3
+
4
+ def validate_cron(cron_expr: str):
5
+ CronTrigger.from_crontab(cron_expr)
dstack/version.py CHANGED
@@ -1,4 +1,4 @@
1
- __version__ = "0.19.19"
1
+ __version__ = "0.19.21"
2
2
  __is_release__ = True
3
3
  base_image = "0.10"
4
4
  base_image_ubuntu_version = "22.04"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dstack
3
- Version: 0.19.19
3
+ Version: 0.19.21
4
4
  Summary: dstack is an open-source orchestration engine for running AI workloads on any cloud or on-premises.
5
5
  Project-URL: Homepage, https://dstack.ai
6
6
  Project-URL: Source, https://github.com/dstackai/dstack
@@ -15,6 +15,7 @@ Classifier: License :: OSI Approved :: Mozilla Public License 2.0 (MPL 2.0)
15
15
  Classifier: Programming Language :: Python :: 3
16
16
  Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
17
17
  Requires-Python: >=3.9
18
+ Requires-Dist: apscheduler<4
18
19
  Requires-Dist: argcomplete>=3.5.0
19
20
  Requires-Dist: cachetools
20
21
  Requires-Dist: cryptography
@@ -46,7 +47,6 @@ Requires-Dist: aiorwlock; extra == 'all'
46
47
  Requires-Dist: aiosqlite; extra == 'all'
47
48
  Requires-Dist: alembic-postgresql-enum; extra == 'all'
48
49
  Requires-Dist: alembic>=1.10.2; extra == 'all'
49
- Requires-Dist: apscheduler<4; extra == 'all'
50
50
  Requires-Dist: asyncpg; extra == 'all'
51
51
  Requires-Dist: azure-identity>=1.12.0; extra == 'all'
52
52
  Requires-Dist: azure-mgmt-authorization>=3.0.0; extra == 'all'
@@ -92,7 +92,6 @@ Requires-Dist: aiorwlock; extra == 'aws'
92
92
  Requires-Dist: aiosqlite; extra == 'aws'
93
93
  Requires-Dist: alembic-postgresql-enum; extra == 'aws'
94
94
  Requires-Dist: alembic>=1.10.2; extra == 'aws'
95
- Requires-Dist: apscheduler<4; extra == 'aws'
96
95
  Requires-Dist: asyncpg; extra == 'aws'
97
96
  Requires-Dist: backports-entry-points-selectable; extra == 'aws'
98
97
  Requires-Dist: boto3>=1.38.13; extra == 'aws'
@@ -117,7 +116,6 @@ Requires-Dist: aiorwlock; extra == 'azure'
117
116
  Requires-Dist: aiosqlite; extra == 'azure'
118
117
  Requires-Dist: alembic-postgresql-enum; extra == 'azure'
119
118
  Requires-Dist: alembic>=1.10.2; extra == 'azure'
120
- Requires-Dist: apscheduler<4; extra == 'azure'
121
119
  Requires-Dist: asyncpg; extra == 'azure'
122
120
  Requires-Dist: azure-identity>=1.12.0; extra == 'azure'
123
121
  Requires-Dist: azure-mgmt-authorization>=3.0.0; extra == 'azure'
@@ -147,7 +145,6 @@ Requires-Dist: aiorwlock; extra == 'datacrunch'
147
145
  Requires-Dist: aiosqlite; extra == 'datacrunch'
148
146
  Requires-Dist: alembic-postgresql-enum; extra == 'datacrunch'
149
147
  Requires-Dist: alembic>=1.10.2; extra == 'datacrunch'
150
- Requires-Dist: apscheduler<4; extra == 'datacrunch'
151
148
  Requires-Dist: asyncpg; extra == 'datacrunch'
152
149
  Requires-Dist: backports-entry-points-selectable; extra == 'datacrunch'
153
150
  Requires-Dist: datacrunch; extra == 'datacrunch'
@@ -179,7 +176,6 @@ Requires-Dist: aiorwlock; extra == 'gcp'
179
176
  Requires-Dist: aiosqlite; extra == 'gcp'
180
177
  Requires-Dist: alembic-postgresql-enum; extra == 'gcp'
181
178
  Requires-Dist: alembic>=1.10.2; extra == 'gcp'
182
- Requires-Dist: apscheduler<4; extra == 'gcp'
183
179
  Requires-Dist: asyncpg; extra == 'gcp'
184
180
  Requires-Dist: backports-entry-points-selectable; extra == 'gcp'
185
181
  Requires-Dist: docker>=6.0.0; extra == 'gcp'
@@ -209,7 +205,6 @@ Requires-Dist: aiorwlock; extra == 'kubernetes'
209
205
  Requires-Dist: aiosqlite; extra == 'kubernetes'
210
206
  Requires-Dist: alembic-postgresql-enum; extra == 'kubernetes'
211
207
  Requires-Dist: alembic>=1.10.2; extra == 'kubernetes'
212
- Requires-Dist: apscheduler<4; extra == 'kubernetes'
213
208
  Requires-Dist: asyncpg; extra == 'kubernetes'
214
209
  Requires-Dist: backports-entry-points-selectable; extra == 'kubernetes'
215
210
  Requires-Dist: docker>=6.0.0; extra == 'kubernetes'
@@ -233,7 +228,6 @@ Requires-Dist: aiorwlock; extra == 'lambda'
233
228
  Requires-Dist: aiosqlite; extra == 'lambda'
234
229
  Requires-Dist: alembic-postgresql-enum; extra == 'lambda'
235
230
  Requires-Dist: alembic>=1.10.2; extra == 'lambda'
236
- Requires-Dist: apscheduler<4; extra == 'lambda'
237
231
  Requires-Dist: asyncpg; extra == 'lambda'
238
232
  Requires-Dist: backports-entry-points-selectable; extra == 'lambda'
239
233
  Requires-Dist: boto3>=1.38.13; extra == 'lambda'
@@ -258,7 +252,6 @@ Requires-Dist: aiorwlock; extra == 'nebius'
258
252
  Requires-Dist: aiosqlite; extra == 'nebius'
259
253
  Requires-Dist: alembic-postgresql-enum; extra == 'nebius'
260
254
  Requires-Dist: alembic>=1.10.2; extra == 'nebius'
261
- Requires-Dist: apscheduler<4; extra == 'nebius'
262
255
  Requires-Dist: asyncpg; extra == 'nebius'
263
256
  Requires-Dist: backports-entry-points-selectable; extra == 'nebius'
264
257
  Requires-Dist: docker>=6.0.0; extra == 'nebius'
@@ -282,7 +275,6 @@ Requires-Dist: aiorwlock; extra == 'oci'
282
275
  Requires-Dist: aiosqlite; extra == 'oci'
283
276
  Requires-Dist: alembic-postgresql-enum; extra == 'oci'
284
277
  Requires-Dist: alembic>=1.10.2; extra == 'oci'
285
- Requires-Dist: apscheduler<4; extra == 'oci'
286
278
  Requires-Dist: asyncpg; extra == 'oci'
287
279
  Requires-Dist: backports-entry-points-selectable; extra == 'oci'
288
280
  Requires-Dist: cryptography>=44.0.3; extra == 'oci'
@@ -308,7 +300,6 @@ Requires-Dist: aiorwlock; extra == 'server'
308
300
  Requires-Dist: aiosqlite; extra == 'server'
309
301
  Requires-Dist: alembic-postgresql-enum; extra == 'server'
310
302
  Requires-Dist: alembic>=1.10.2; extra == 'server'
311
- Requires-Dist: apscheduler<4; extra == 'server'
312
303
  Requires-Dist: asyncpg; extra == 'server'
313
304
  Requires-Dist: backports-entry-points-selectable; extra == 'server'
314
305
  Requires-Dist: docker>=6.0.0; extra == 'server'
@@ -1,5 +1,5 @@
1
1
  dstack/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
- dstack/version.py,sha256=l0CTJ7PnsWwem_lcd_pUUwS6kJWBsrfwQWnasH4RxHU,102
2
+ dstack/version.py,sha256=69F2XTd8pmd4oG2eNHMHCrCE3WDUqAhO21ECqYm3wnA,102
3
3
  dstack/_internal/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
4
4
  dstack/_internal/compat.py,sha256=bF9U9fTMfL8UVhCouedoUSTYFl7UAOiU0WXrnRoByxw,40
5
5
  dstack/_internal/settings.py,sha256=mlqH4Jwd-Qvxwt869dYXy4snQ0naUsHOwXiI0WSMojA,1246
@@ -47,8 +47,9 @@ dstack/_internal/cli/utils/volume.py,sha256=mU9I06dVMFbpjfkefxrZNoSWadKLoib3U14r
47
47
  dstack/_internal/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
48
48
  dstack/_internal/core/consts.py,sha256=c1Yd5UY6Qx7KeuYgloXWncWhMsYj6TqwlElda7NtB98,254
49
49
  dstack/_internal/core/errors.py,sha256=VTEmJ6C0zWL3fUL8ObRjB4rNL7_NxwEuWf0hZs6orWo,3377
50
- dstack/_internal/core/backends/__init__.py,sha256=MOZt5mNbcaAaamjLuZKUk9fJCUwk7EAMn8sbE02NwD0,2765
50
+ dstack/_internal/core/backends/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
51
51
  dstack/_internal/core/backends/configurators.py,sha256=7LFad72b6zdzzDRaFUaQrJLf6PxGRsxR3tfyn15rQbA,3976
52
+ dstack/_internal/core/backends/features.py,sha256=cswqwmZYD8g041V_m-ovHbJRkB2_vni1DiGJpKD8M_g,2764
52
53
  dstack/_internal/core/backends/models.py,sha256=byP6YFXQHbkOyuX8MxwRvPfjtk87o9oCefR8U-lvsAI,4319
53
54
  dstack/_internal/core/backends/aws/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
54
55
  dstack/_internal/core/backends/aws/auth.py,sha256=BAe3HAedoAO42Fbv7YhpODKWlyil8M0PuRJsL-_u_kw,978
@@ -72,7 +73,7 @@ dstack/_internal/core/backends/base/configurator.py,sha256=OCv8N2oxcxy3In2zS1PKi
72
73
  dstack/_internal/core/backends/base/models.py,sha256=Ij0osOl-T-ABsKLoVg2eY81DMkwdWkevAnjXj2QnLXI,532
73
74
  dstack/_internal/core/backends/base/offers.py,sha256=2BARohq0sJk0a9K0Z4OuIbpIQNSSq8ZTzAnO8pCxO4M,6228
74
75
  dstack/_internal/core/backends/cloudrift/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
75
- dstack/_internal/core/backends/cloudrift/api_client.py,sha256=oGIFJ3FiNVl5BvAlY_6SSWaUcQbg5pbjPf4jeixivmo,7565
76
+ dstack/_internal/core/backends/cloudrift/api_client.py,sha256=mI3_ttwujfSunTiTIelnc1XaLBlfxsKsacrlyB12f8c,8178
76
77
  dstack/_internal/core/backends/cloudrift/backend.py,sha256=Jz3nIQsa3TnMISVXK6EU43O0B7FgIMxwwaEBmd_s5BY,596
77
78
  dstack/_internal/core/backends/cloudrift/compute.py,sha256=fmCaUliSRKDjAPT8YFwX-7xSk0eMnxryFsDBFBcS7VQ,5141
78
79
  dstack/_internal/core/backends/cloudrift/configurator.py,sha256=wZ4HswqGeK0sffcbGvfNPIAdT_VsOt1ZKN7UXZ4WliI,2331
@@ -129,7 +130,7 @@ dstack/_internal/core/backends/oci/configurator.py,sha256=jIHmJbmam5RtcOC2Uf-MuE
129
130
  dstack/_internal/core/backends/oci/exceptions.py,sha256=GxlUf7itcAQgY3m-U2ul_ZXzfUOcEcPEmisWFaoWSkA,288
130
131
  dstack/_internal/core/backends/oci/models.py,sha256=fDlY7-A0WDQeiwJzwrQl6D5ENOc-677Bz8LXyvBvF0c,2969
131
132
  dstack/_internal/core/backends/oci/region.py,sha256=a41dmlv-7jh2vP2z-0wnf0Yzdh2Donjm9aXuMgFXXKo,2935
132
- dstack/_internal/core/backends/oci/resources.py,sha256=WxIh0Xw07B9SikJSMI6Z41fqidAO3hu_z5TUT71e76g,28997
133
+ dstack/_internal/core/backends/oci/resources.py,sha256=VfTDuVTEO8MUvD3i2DFoe2du1qP4MSQb1yEaDgHbUp8,28982
133
134
  dstack/_internal/core/backends/remote/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
134
135
  dstack/_internal/core/backends/remote/provisioning.py,sha256=ZmaQ08Lssx3aRLF7Jqp3mt41dVvZ1FqXFN9tuoFSDAs,13481
135
136
  dstack/_internal/core/backends/runpod/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -162,10 +163,10 @@ dstack/_internal/core/backends/vultr/compute.py,sha256=-6Mw7ADW6HaqzK34I3T5RVhre
162
163
  dstack/_internal/core/backends/vultr/configurator.py,sha256=YdBeMveKaUDiLESTG3AzpSpQRzevUGpdnCGJx4tUR7g,2190
163
164
  dstack/_internal/core/backends/vultr/models.py,sha256=TkqK_lW6w5k_7wsoFiKDb6NXuTrHL6ypVm59FoyaSFY,928
164
165
  dstack/_internal/core/compatibility/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
165
- dstack/_internal/core/compatibility/fleets.py,sha256=TXkJ9kr8_dtPHzlVe6-JsZ1OJC2rAS92xj_cHjgGeAQ,2930
166
+ dstack/_internal/core/compatibility/fleets.py,sha256=ijUNkEiamJ29jAszjBeT1jrsGygDFCo1zEyTa7xUuHw,3004
166
167
  dstack/_internal/core/compatibility/gateways.py,sha256=4h_lfpN9KJFyLTFexq-wlu74Rwpk0anV67v38aJ-SnI,1463
167
168
  dstack/_internal/core/compatibility/logs.py,sha256=keXt3OFKR0CjD_XMsetzRu8yQGCz7CWBwycuP267L_Q,629
168
- dstack/_internal/core/compatibility/runs.py,sha256=mcSjlWLr8LgxbK5LX7lNGwg6FVuRAEtzZ8ilxjdsedo,7740
169
+ dstack/_internal/core/compatibility/runs.py,sha256=g1aIGTxLkXDh5kmnyfUzr9eQtRq65hhUhVr8PrmSc3o,7927
169
170
  dstack/_internal/core/compatibility/volumes.py,sha256=ofjpVusuc-pq285bGrIh8PAqu0QlAd6NQgU3gfJQIc0,1546
170
171
  dstack/_internal/core/models/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
171
172
  dstack/_internal/core/models/common.py,sha256=RI03rSaxhSigIpqtWDeBZ9_yX6R0-6_wC1bMGqYsTZE,3855
@@ -179,7 +180,7 @@ dstack/_internal/core/models/instances.py,sha256=Vwh-D3WB_NBdG_1BPHBEaX60n4MtYks
179
180
  dstack/_internal/core/models/logs.py,sha256=vCMJFnebmTk5chodUQvghsyT1Funir1-InAcDHr-M68,483
180
181
  dstack/_internal/core/models/metrics.py,sha256=Xb8hCXUL-ncQ3PMsErIUAJTe9gwh5jyrQ4UQoZbibsc,269
181
182
  dstack/_internal/core/models/placement.py,sha256=WJVq5ENJykyRarQzL2EeYQag_9_jV7VSAtR_xoFvPVM,720
182
- dstack/_internal/core/models/profiles.py,sha256=V3O5lS4_V2H_aKTgnE_A-YVtxH9BqwnhNuMsHksjO7s,11798
183
+ dstack/_internal/core/models/profiles.py,sha256=M9PXPaqQsOSOy32OHWwmWUwpdHR-8Ue9tEPJRSdLjKM,12866
183
184
  dstack/_internal/core/models/projects.py,sha256=HmmlrvUSSEjfGfX7X5tmGJ-CbKeyGK6shHD5OghDNks,671
184
185
  dstack/_internal/core/models/resources.py,sha256=mUqFwLazN2fUHV3ZOoi1_ZtmtjNUsIqmXYjviM_BERU,14370
185
186
  dstack/_internal/core/models/runs.py,sha256=8uvtQInQv6PbKQwCYfLk9UaQAO02Zj0gicIBrCdCvGY,20972
@@ -262,27 +263,27 @@ dstack/_internal/proxy/lib/testing/auth.py,sha256=-firWTnis9Eogoi58BURv1S-te4Hf9
262
263
  dstack/_internal/proxy/lib/testing/common.py,sha256=5e2VYboMqjBnUxkvidaWLoQ-uaBGh_hnURb_VJc38q4,1518
263
264
  dstack/_internal/server/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
264
265
  dstack/_internal/server/alembic.ini,sha256=rTauBJC8Jxlw76KUygW061OFAGV7GhwAStinlaxoYGY,3166
265
- dstack/_internal/server/app.py,sha256=_ZtbHissUnBGw7icQWvrOCJuNmAFpN4vNpZQMYpOMog,14299
266
+ dstack/_internal/server/app.py,sha256=W8vmHhWabKeiecHWjiHBxgyBjIka67AHC2PeZwG1cFU,14847
266
267
  dstack/_internal/server/db.py,sha256=WjuqmjG3QAZmSMCeUaJ_ynbowlHuNAvYCZO649cTPHc,3210
267
268
  dstack/_internal/server/deps.py,sha256=31e8SU_ogPJWHIDLkgl7cuC_5V91xbJoLyAj17VanfM,670
268
269
  dstack/_internal/server/main.py,sha256=kztKhCYNoHSDyJJQScWfZXE0naNleJOCQULW6dd8SGw,109
269
- dstack/_internal/server/models.py,sha256=iDpyj9DwgETuqoxPSPXfdL_wgpxFZhlDhcnPE2u13Zk,31368
270
- dstack/_internal/server/settings.py,sha256=NAvLCUsFOfI50ZLyYOCy6CRZffpdi0dk7vc7DKVMhPk,5148
271
- dstack/_internal/server/background/__init__.py,sha256=e-644wIdhtGjQM2ylI0jXfMjTKhDP-J6rHN0imgyj0o,5393
270
+ dstack/_internal/server/models.py,sha256=UR0ouKSKimdYs6XwkCbZ-7ZU6r9mzI7DA5sTP561_PQ,31559
271
+ dstack/_internal/server/settings.py,sha256=5LIHHmVHEj4CST_eOYnrjKGzMv-CTltZICSqnxu6jo8,5263
272
+ dstack/_internal/server/background/__init__.py,sha256=ApoAca1NNtP4xu6Dv_mQkkfe2CknmWXumFIpzdhGe7I,5312
272
273
  dstack/_internal/server/background/tasks/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
273
274
  dstack/_internal/server/background/tasks/common.py,sha256=N7xSXbf2MoBWgbJ1e3AEzYBTf1Gn-pDXYND8Zr_YCJQ,970
274
- dstack/_internal/server/background/tasks/process_fleets.py,sha256=i_94wf8rOBFnBjOF0kW2by6B623o-y2N_QtIbeTxDjQ,3505
275
- dstack/_internal/server/background/tasks/process_gateways.py,sha256=X04Yilmw2CHPStOyaSyhZ78D1cPVEqTc7WTEFgl-OPw,8319
276
- dstack/_internal/server/background/tasks/process_idle_volumes.py,sha256=Ej0NOoM0PIwDK6Q3Zd-Rl7FMCHI_LW74QQLczCrTAuc,5162
277
- dstack/_internal/server/background/tasks/process_instances.py,sha256=jZ5A_3BVg_15WnpKkoPWqh65IHzRoCIS1EsFgei-UmM,43347
278
- dstack/_internal/server/background/tasks/process_metrics.py,sha256=aJPHnmKQE19JVxJVwGFyyK7buUcbp9Smw9CkFO2DPAk,6135
279
- dstack/_internal/server/background/tasks/process_placement_groups.py,sha256=FylKGqz7RMBduJNlfuaGdgiPb6oneU49pdqvyinuV8Y,4167
280
- dstack/_internal/server/background/tasks/process_prometheus_metrics.py,sha256=9VoGFqdiXcVkCi_NV1VqQdqllDkB0bHIqOHKMIZK1Fg,5183
281
- dstack/_internal/server/background/tasks/process_running_jobs.py,sha256=Nz9LgGTrAIkHDHpeTySy-xukfcdXtVYQAcQLrFLNRfo,43773
282
- dstack/_internal/server/background/tasks/process_runs.py,sha256=JisPDw0-5Uf3JD2Cb3mTXDjwbABJ5cj-EeLYgk7d74s,22608
283
- dstack/_internal/server/background/tasks/process_submitted_jobs.py,sha256=Nmb7zRcoX9MQ6xw1bBTl8zRdo4smGPlWsfNnXK5HMs0,28853
284
- dstack/_internal/server/background/tasks/process_terminating_jobs.py,sha256=j7Ph2tgCHlUYHU9-ONPSQCJ8qLdWrN2rb2l2nCYukzg,3896
285
- dstack/_internal/server/background/tasks/process_volumes.py,sha256=Svvi2USV8S_B6OfKg3hWSXjSanDmAfL1pQYe9EnqTNk,5134
275
+ dstack/_internal/server/background/tasks/process_fleets.py,sha256=PInDWAcD7c-tSXGb4WzOBmJM4TIoD3Xy6C84kj6p1Zk,3703
276
+ dstack/_internal/server/background/tasks/process_gateways.py,sha256=Ee8uGE4rKPP7U0I9OpgvIRfO3sNkpp_tdFW0Gh4XYdE,8259
277
+ dstack/_internal/server/background/tasks/process_idle_volumes.py,sha256=mqnl8wvWaKTYvJMbgFJbOP-bZMRQG2vrhUnaNcyBldE,5223
278
+ dstack/_internal/server/background/tasks/process_instances.py,sha256=-SKtzDK2YPM9pkTOtbU8mEeREflYt1G5lwXXRUx9Ajg,43848
279
+ dstack/_internal/server/background/tasks/process_metrics.py,sha256=yKXe9J7m3oleK0C-oGJaYNkcPT8kqkz0nw-A7xqYbjE,6390
280
+ dstack/_internal/server/background/tasks/process_placement_groups.py,sha256=lgYIzjHG9EITK31yG6uQjlIcSwW5jsP9ZOBBZqW_eNs,4263
281
+ dstack/_internal/server/background/tasks/process_prometheus_metrics.py,sha256=_UZm37FVV4rhdd0So7HtcKbIgrSdAr5Vx-Uen_xizec,5459
282
+ dstack/_internal/server/background/tasks/process_running_jobs.py,sha256=r2VoyJlvIgXzeyAt_bhh4FWbAH5WleuWuiZmbO5hepw,43784
283
+ dstack/_internal/server/background/tasks/process_runs.py,sha256=p2YIjKobnObEjeWegdfwTNAaoe_9eYxAN7gmis6wqKI,24448
284
+ dstack/_internal/server/background/tasks/process_submitted_jobs.py,sha256=9jIB7yMC211yhQLFVtlmw__jGjb7w-7X1fZZ2wa4f4U,28913
285
+ dstack/_internal/server/background/tasks/process_terminating_jobs.py,sha256=4civvAaLPT1R-PopVNkcTNnbn_Na7fIhFL8szYqLHUg,4074
286
+ dstack/_internal/server/background/tasks/process_volumes.py,sha256=7qNGX3yRoVmx2zUwJ9iTU124lGGBjKL3E8aEwKFX9eg,5208
286
287
  dstack/_internal/server/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
287
288
  dstack/_internal/server/migrations/env.py,sha256=RuhcN-CST86VzMatjqBMdYcG0fGGMZl_o1YgZTL-WDw,2831
288
289
  dstack/_internal/server/migrations/script.py.mako,sha256=Xi-IcoSN51tKWbAq1-nNVX7j6_89mf9AuX9DjnqUO_o,574
@@ -307,6 +308,7 @@ dstack/_internal/server/migrations/versions/3dbdce90d0e0_fix_code_uq_constraint.
307
308
  dstack/_internal/server/migrations/versions/48ad3ecbaea2_do_not_delete_projects_and_runs.py,sha256=FaVmRi9ocsygGEf5j2XDPaYbdgGl98ykycpFul1GdMw,1453
308
309
  dstack/_internal/server/migrations/versions/4ae1a5b0e7f1_add_run_list_index.py,sha256=qpzzdCpETXGCVCyhMDFoUviPBFrz585Kg5znYTffha8,862
309
310
  dstack/_internal/server/migrations/versions/4b4319398164_introduce_runs_processing.py,sha256=XUyqSYoeTYpt4wu_aFeVY-NgDSx6ZAUtTUiTHNPitwY,4938
311
+ dstack/_internal/server/migrations/versions/50dd7ea98639_index_status_columns.py,sha256=X0gf8KqYfCfcZyq8tZj5mTSGKSeAZv3-teIemy2KlPY,1944
310
312
  dstack/_internal/server/migrations/versions/51d45659d574_add_instancemodel_blocks_fields.py,sha256=RpGbj86Omt-Rme5D3q_CIRWlAScjpILcgXS4jszceLY,1161
311
313
  dstack/_internal/server/migrations/versions/54a77e19c64c_add_manager_project_role.py,sha256=D3QgOShGrnWd-5SqIj8C6xQL2JwoRRB-b6Sm6eM_hA4,2056
312
314
  dstack/_internal/server/migrations/versions/555138b1f77f_change_instancemodel_for_asynchronous_.py,sha256=WpwO5OHPUfjNg-LV6A53wPeKXiwb_saQvOWL7PGLCu8,2782
@@ -356,6 +358,7 @@ dstack/_internal/server/migrations/versions/dfffd6a1165c_add_fields_for_gateways
356
358
  dstack/_internal/server/migrations/versions/e3b7db07727f_add_gatewaycomputemodel_app_updated_at.py,sha256=XAhYoza5xvG6ALFtNJn2H0LK8MMTDoAAV40U0opm1bg,1860
357
359
  dstack/_internal/server/migrations/versions/e6391ca6a264_separate_gateways_from_compute.py,sha256=efWiMgcv9LCrimVC52dvA_sH1nfxtNm5Ywadr_pbW7s,2612
358
360
  dstack/_internal/server/migrations/versions/ea60480f82bb_add_membermodel_member_num.py,sha256=jdUjThL8ELQAiFtODts2pxjo62fn3WEd8w50jp7-e44,825
361
+ dstack/_internal/server/migrations/versions/ec02a26a256c_add_runmodel_next_triggered_at.py,sha256=YeEeTHYqh5i5ycO3ExZhCWc16iC--JuRtVcDRu2RJ9Q,962
359
362
  dstack/_internal/server/migrations/versions/ed0ca30e13bb_migrate_instancestatus_provisioning.py,sha256=YhXQ9ApeMB8grDjNcbnXQKHYPlIJB7QlvE1R1nM5_6k,689
360
363
  dstack/_internal/server/migrations/versions/fe72c4de8376_add_gateways.py,sha256=1-0e060NDpgYQhoKDmHWednANk1cZzMdVns7sEo5Lwo,2730
361
364
  dstack/_internal/server/migrations/versions/ffa99edd1988_add_jobterminationreason_max_duration_.py,sha256=1wBIisgN25doZfAErnqyshoSSzoDHPt4nZfC2MmSWak,2324
@@ -382,7 +385,7 @@ dstack/_internal/server/schemas/files.py,sha256=3SW-aMv5eAL5Fs_N3isCSPc6xgjOkRQn
382
385
  dstack/_internal/server/schemas/fleets.py,sha256=9JcKe8VQM6p705lsgrp0xO08aTC32R88BJah7vZ-LgM,1101
383
386
  dstack/_internal/server/schemas/gateways.py,sha256=wrLQgSFkpxf-pijeyl2UjR8SpQXVshal6pW8wZf73Yk,1142
384
387
  dstack/_internal/server/schemas/instances.py,sha256=MedAVbKa_1F9zhdSPrjMmL-Og5Dp0cxxvfApKj29194,431
385
- dstack/_internal/server/schemas/logs.py,sha256=Hk0TNMyQz6HsnzSCPYCBkDHMdLUXYRTVBkCkNTUU--0,753
388
+ dstack/_internal/server/schemas/logs.py,sha256=I4KaPgXiaYLWtovBchUiqK0wk-b7py-yTHKzhPH8tYc,453
386
389
  dstack/_internal/server/schemas/projects.py,sha256=sXm9KMecLYaLemE4rPr8MzvlkHvpwzawmL5GNB87wuY,804
387
390
  dstack/_internal/server/schemas/repos.py,sha256=Sit0Tqol79VOMGGp8ncZXLLsZ4INcF-pAA_jwRchYqA,666
388
391
  dstack/_internal/server/schemas/runner.py,sha256=KCEdtGgfxoZfgxzZ_7r_RatCb_QMnA80J6_PLQc6EP0,5213
@@ -396,22 +399,22 @@ dstack/_internal/server/services/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRk
396
399
  dstack/_internal/server/services/config.py,sha256=yo8njslwfS7_blhbPPhOtzCMyg8N_mmFSw5aPvirSzw,10691
397
400
  dstack/_internal/server/services/docker.py,sha256=zAvjFHxIP03Td92NzbGEScz0piLjloE60tQ7vz0AeCA,5328
398
401
  dstack/_internal/server/services/files.py,sha256=LJYFRtIJwB-QL-FhIu1408oqVVfa2lPZZlaTuZMo6pw,2847
399
- dstack/_internal/server/services/fleets.py,sha256=x4zOJ2UoGJmn4LA6zRSLG05lfREEL0UtsOWD9S8rsFY,37024
400
- dstack/_internal/server/services/instances.py,sha256=bJlMFo5DTHHL2LM25CuzJgx9eNXKbeZ2pjX0Waorq8Q,18969
402
+ dstack/_internal/server/services/fleets.py,sha256=ugbITHV_KRkFBFKkRIaaRDUcKFzTYEYmtrZsmoa64b8,37146
403
+ dstack/_internal/server/services/instances.py,sha256=ox1J7OI0U-FYis8HyKgWh_DTvyxV6mmo_s6lgQwkzIk,18737
401
404
  dstack/_internal/server/services/locking.py,sha256=4y_k8U7X71_lExdaXDSSEfizhfydBXOZKe64zo-1DX8,5224
402
405
  dstack/_internal/server/services/logging.py,sha256=h5Cy22TJi5IvbKXE_kVZYXQy0XJrHK85JV4-GCuWA1o,543
403
406
  dstack/_internal/server/services/metrics.py,sha256=jKLy1jSCVR_crqVu_CmsOMbvMkucWBandI0SS1LDeRQ,6896
404
- dstack/_internal/server/services/offers.py,sha256=4hhqLzmo14_IY84FSDG59Sib1DrmTAOk-_q8M4aYoLU,7737
407
+ dstack/_internal/server/services/offers.py,sha256=ACfTGW6Nx7RoUwJObsSH22lI_BDDi2ux55PXWZN6els,7746
405
408
  dstack/_internal/server/services/permissions.py,sha256=l7Ngdelmn65vjw13NcOdaC6lBYMRuSw6FbHzYwdK3nE,1005
406
409
  dstack/_internal/server/services/placement.py,sha256=U-7z4kJ6ZyrCXzkDychWoOhniz19ooFwiNI2InoTLls,2420
407
410
  dstack/_internal/server/services/plugins.py,sha256=KgBqBUqxjQirRcYNuXVetE4OQj0EPkdC7ccbrNV1WQE,3825
408
- dstack/_internal/server/services/projects.py,sha256=UMcqUvT4n02iTgvPSqzlPx0CoQIoi5bWsmrN78747_k,22346
411
+ dstack/_internal/server/services/projects.py,sha256=Gk4E4srbNPDG5AR4Ec8OmajaVrmupHDsg6dk8ybb6nQ,23001
409
412
  dstack/_internal/server/services/repos.py,sha256=f9ztN7jz_2gvD9hXF5sJwWDVyG2-NHRfjIdSukowPh8,9342
410
413
  dstack/_internal/server/services/resources.py,sha256=VRFOih_cMJdc0c2m9nSGsX8vWAJQV3M6N87aqS_JXfw,699
411
- dstack/_internal/server/services/runs.py,sha256=SN-zDWXwWpfxA9zuHEaN2aokm6_Gu2SufBS4gMmxqrQ,43851
414
+ dstack/_internal/server/services/runs.py,sha256=Ncqun9CxD2WBwPRxOY8xIKdb9t_VqytP4iuZyNj9GV4,45373
412
415
  dstack/_internal/server/services/secrets.py,sha256=oVz8mv4pQv8onaDdPKft2qJYq3Xnh8-uskoMxBuyfpE,5567
413
- dstack/_internal/server/services/users.py,sha256=W-5xL7zsHNjeG7BBK54RWGvIrBOrw-FF0NcG_z9qhoE,7466
414
- dstack/_internal/server/services/volumes.py,sha256=67yhlPfCSHmtCJecOUy_OlubwJ3lpY8kA2Dn9DOien4,16922
416
+ dstack/_internal/server/services/users.py,sha256=L-COF4RjtwYSfnkGQefrSiEU0haTv0o1P2OuUdvMK8E,7378
417
+ dstack/_internal/server/services/volumes.py,sha256=DBGIUsysAO7sQ6vb4mjhzO9XLdyQvtNujucxhGnkSsU,16682
415
418
  dstack/_internal/server/services/backends/__init__.py,sha256=UzZ-JqaUEheaE3fwNfnRJ47yK2nO23mTT3BwcYDooP4,13147
416
419
  dstack/_internal/server/services/backends/handlers.py,sha256=j-MhBxrpdepoDG7f2tApjFnE23RVO5I15-hxHyOWnew,3251
417
420
  dstack/_internal/server/services/encryption/__init__.py,sha256=3kCw_cxC3-Un1OIofdW5Gqsm0ZCXXTlGz09cULBx_uc,3155
@@ -419,11 +422,11 @@ dstack/_internal/server/services/encryption/keys/__init__.py,sha256=47DEQpj8HBSa
419
422
  dstack/_internal/server/services/encryption/keys/aes.py,sha256=2He1p2_Rg6hnCeLIGJo-Yfdsij7so_338oY49RXuL3Q,2276
420
423
  dstack/_internal/server/services/encryption/keys/base.py,sha256=mqumJiidoexUPoqxhQG6J_SpC1WGYwkdjKm1MUWnXo8,352
421
424
  dstack/_internal/server/services/encryption/keys/identity.py,sha256=ryb_YSV6u4c7W1OsVfEpzJvZCrR4zZYlzLw_GpjpD2Q,741
422
- dstack/_internal/server/services/gateways/__init__.py,sha256=xb6U_lZEnjw0clcIyEM0m47vn25sDM8mobtMC1PkqZo,22054
425
+ dstack/_internal/server/services/gateways/__init__.py,sha256=eI98kRhV0eJuZPwRJLtSO4M4oLfFmMMNuDIEOsmVQzg,22132
423
426
  dstack/_internal/server/services/gateways/client.py,sha256=kgkBxfIIklVQh2Djk8_qlDVHHbnoTRvoJNEwNNxTcY8,7653
424
427
  dstack/_internal/server/services/gateways/connection.py,sha256=ot3lV85XdmCT45vBWeyj57nLPcLPNm316zu3jMyeWjA,5625
425
428
  dstack/_internal/server/services/gateways/pool.py,sha256=0LclTl1tyx-doS78LeaAKjr-SMp98zuwh5f9s06JSd0,1914
426
- dstack/_internal/server/services/jobs/__init__.py,sha256=SqAVnnHYP5vWlBNambHlRXfSD2MTPD6VNn5pW_dlBxg,27685
429
+ dstack/_internal/server/services/jobs/__init__.py,sha256=TuQpdBm62lIXPiA81ZfdjjCn3JIXMuxuOsGLFMquZhI,27569
427
430
  dstack/_internal/server/services/jobs/configurators/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
428
431
  dstack/_internal/server/services/jobs/configurators/base.py,sha256=RldlN_CuPt7lQy_kaks1IwAzschGlVo8aZygwwWEjco,13622
429
432
  dstack/_internal/server/services/jobs/configurators/dev.py,sha256=i58_LYvX__gxLoCx7GwjNj26M67FjgAIcEWyl3f8mOU,2435
@@ -434,13 +437,13 @@ dstack/_internal/server/services/jobs/configurators/extensions/base.py,sha256=xJ
434
437
  dstack/_internal/server/services/jobs/configurators/extensions/cursor.py,sha256=r6Cgdd-P5C63xXyrqC6E0yNKIeTX6KabRLO92VEpJRY,1719
435
438
  dstack/_internal/server/services/jobs/configurators/extensions/vscode.py,sha256=WRg_jqi4eSqbs3XRVASMFF7OQHYRDtVBNn6NCroJY1I,1694
436
439
  dstack/_internal/server/services/logs/__init__.py,sha256=6KOyAUc-LpZHM3B-bDehiAxx6cwtveQnf2nN864uJzY,3575
437
- dstack/_internal/server/services/logs/aws.py,sha256=ocIRvJ-b7griZjPYAY_0jo4YC4ad8K6utPGMYDhOSNc,13327
440
+ dstack/_internal/server/services/logs/aws.py,sha256=H_mLPi21-GRnkdmCgxAGKnxhtrjvUma_i_Il8jSnU2k,15120
438
441
  dstack/_internal/server/services/logs/base.py,sha256=7eCB6SPF9iWviv4vZ_34SvfM_Bvi9DeVj1t7TxmrXKs,1273
439
- dstack/_internal/server/services/logs/filelog.py,sha256=Q15FpAsrjZDDUq0i5UI3_IJ23OH8u-Cv3v1hGxV2RGg,5235
442
+ dstack/_internal/server/services/logs/filelog.py,sha256=ZpnrMWhWVOpZHnUCZEm2pkJRZYgWBzlasdcyPCb6v90,9811
440
443
  dstack/_internal/server/services/logs/gcp.py,sha256=Rfl5x1Slr4hyjdr0YPCugfHRC3aNL7D2LCiP4CvQB1s,6917
441
444
  dstack/_internal/server/services/prometheus/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
442
- dstack/_internal/server/services/prometheus/client_metrics.py,sha256=nGhvOHEoWONGAfbNh5gC23It7B46A6hfQ8mErUQIcYI,1541
443
- dstack/_internal/server/services/prometheus/custom_metrics.py,sha256=xq5G-Q2BJup9lS2F6__0wUVTs-k1Gr3dYclGzo2WoWo,12474
445
+ dstack/_internal/server/services/prometheus/client_metrics.py,sha256=BN38NpAdjJBPpoN_q5APHhxmGBd8PghJJpZ9Vi3OaZs,1745
446
+ dstack/_internal/server/services/prometheus/custom_metrics.py,sha256=xjBuNAbJQtfsf5zATzh7IwFCjIGjulJ-RuaMcYHKR2k,13547
444
447
  dstack/_internal/server/services/proxy/__init__.py,sha256=aklmvGaGXISztQft-nH8R98WRU6x_L0Fx3RwVDhwt3g,85
445
448
  dstack/_internal/server/services/proxy/auth.py,sha256=AVhDCnk9KvxJ7Jsd8Xmotl_29V4lNuBw8mQNBhx90Ws,485
446
449
  dstack/_internal/server/services/proxy/deps.py,sha256=u4dHHKBlTgC8Fnnl3onErgE1HGKFwyZTwvq0uT6IdQ4,846
@@ -452,7 +455,7 @@ dstack/_internal/server/services/proxy/services/service_proxy.py,sha256=4JrSxHqh
452
455
  dstack/_internal/server/services/runner/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
453
456
  dstack/_internal/server/services/runner/client.py,sha256=m2chzrQmtcRiw2JUmdfWAbcQFGVKq4CiNEFZGE21WBw,15944
454
457
  dstack/_internal/server/services/runner/ssh.py,sha256=H-X0015ZPwYq5tc31ytFF1uNaUAr9itAsABI2oPJWrk,5017
455
- dstack/_internal/server/services/services/__init__.py,sha256=vHJ2L9KUUbHhk0yPO2UjTZFYBAYFwGlV4EJtNZ29Ktg,11723
458
+ dstack/_internal/server/services/services/__init__.py,sha256=X5JEwtiuxyjs0v0SEOh1pUc1Yc_r6PSbqwUjOUZVH5E,11834
456
459
  dstack/_internal/server/services/services/autoscalers.py,sha256=wg3QgfdKcaBdbtyJJlAzeMlicGKQMuRGpMPZKyemK5U,4447
457
460
  dstack/_internal/server/services/services/options.py,sha256=BEpZbRY4PKFVkNNWxLtY--QISqBL1_aPPzZYLPpRgvM,2234
458
461
  dstack/_internal/server/services/storage/__init__.py,sha256=ZjlLdCQiclM7h_dKJM9HXjMJDKCFOAf3yI4iO6K3HHk,1384
@@ -484,10 +487,10 @@ dstack/_internal/server/statics/e467d7d60aae81ab198b.svg,sha256=_XHc9mfQZgGkcy4h
484
487
  dstack/_internal/server/statics/eb9b344b73818fe2b71a.png,sha256=2H14eOCQRyZhFGJ1Kn2LH1j70kTF1Qop4vH-tiKqyPI,85
485
488
  dstack/_internal/server/statics/f517dd626eb964120de0.png,sha256=4QQuNa8SqmcZ67HK6739OHCyjnAJseU1bkcn454KRQs,159
486
489
  dstack/_internal/server/statics/f958aecddee5d8e3222c.png,sha256=8CoZkVNgRfOAe62X1dU-AZDvwh_nESKaQblEmaX2Xrs,87
487
- dstack/_internal/server/statics/index.html,sha256=l3t7nN8OnkHRhhnDJvNa8C3eeZ2DGI60NvfJoBcd3sg,10468
488
- dstack/_internal/server/statics/main-64f8273740c4b52c18f5.js,sha256=joDk1H4T0iqH97OLtaeLePVScgwu9Oi7PIU9IFM_3DM,6673377
489
- dstack/_internal/server/statics/main-64f8273740c4b52c18f5.js.map,sha256=k74XDER1bFoSSxUTiXw_OeArqsN2uh4jy2xMRbKxahM,8770324
490
- dstack/_internal/server/statics/main-d58fc0460cb0eae7cb5c.css,sha256=knvt0R2lSfVp72_uDvtBEXgRdqlBseZoZWPB7dPNUK8,1355031
490
+ dstack/_internal/server/statics/index.html,sha256=DenidaBKYk7aQpAq_zR1n1cTFwDpIpoXaahZDdFBvqY,10468
491
+ dstack/_internal/server/statics/main-39a767528976f8078166.js,sha256=ocZJEfsDa4iKPxr1t72UpQYNra7MN85X813p77o4snM,6385580
492
+ dstack/_internal/server/statics/main-39a767528976f8078166.js.map,sha256=3cVIGQThOAjhaKcehJFwprAnVIz693d7tYzp341IkgI,8443146
493
+ dstack/_internal/server/statics/main-8f9ee218d3eb45989682.css,sha256=QjK-f7GZKDVf-O-mIS7eJLtmokt4gTfFHYP-BfgghlM,1352872
491
494
  dstack/_internal/server/statics/manifest.json,sha256=430w2BoWVmYYVr14lDvUxx-ROPt3VjigzeMqfLeiSCM,340
492
495
  dstack/_internal/server/statics/robots.txt,sha256=kNJLw79pisHhc3OVAimMzKcq3x9WT6sF9IS4xI0crdI,67
493
496
  dstack/_internal/server/statics/assets/android-chrome-144x144.png,sha256=tB3V-95O-VVEoawN5V1XFoMQRSK0I6gthraV8bATGaw,23414
@@ -566,14 +569,16 @@ dstack/_internal/server/statics/static/media/logo.f602feeb138844eda97c8cb6414614
566
569
  dstack/_internal/server/statics/static/media/okta.12f178e6873a1100965f2a4dbd18fcec.svg,sha256=KqFI05gQM135zC1plF1WBRF2F7CyKL7km97WKsZjAHI,319
567
570
  dstack/_internal/server/statics/static/media/theme.3994c817bb7dda191c1c9640dee0bf42.svg,sha256=ZxFFBVZWuRLqmWH4zhwGLNtKjOzHj-5MGJRunFAtu1I,561
568
571
  dstack/_internal/server/testing/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
569
- dstack/_internal/server/testing/common.py,sha256=I74o8M5b3mJ5bguCYp-CKTnGQEQHTcG18Xz9j3iIn3c,34106
572
+ dstack/_internal/server/testing/common.py,sha256=ZpqosCSolTPCel1bFwgJ_3KWr2LfyoXCiJfGf_8o124,34423
570
573
  dstack/_internal/server/testing/conf.py,sha256=-zhujfFjTHNfQDOK-hBck32By11c_kC0OeinB3esQGg,1902
571
574
  dstack/_internal/server/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
572
575
  dstack/_internal/server/utils/common.py,sha256=PbjXtqYy1taKXpyG5ys8cIrz9MXqc9dBAsR_9D1brrk,1414
573
576
  dstack/_internal/server/utils/logging.py,sha256=bxUS2uWG5snypNRfL0d5sMLCDytyOZac81PSQlb7_rs,1907
574
577
  dstack/_internal/server/utils/routers.py,sha256=WFjcIlJETY7SAQ1eHRxaZuAAUsWYT8S_ATLHQ6a_MBs,5498
578
+ dstack/_internal/server/utils/sentry_utils.py,sha256=3vYP_CH4Q6Ju5BZ0js2Yw4Gg_gdD8XVIjNVUpOQYwX8,277
575
579
  dstack/_internal/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
576
- dstack/_internal/utils/common.py,sha256=W91g_g63X50a5vPCYl7ntW528QBMViaN1owqKc9VHeo,9383
580
+ dstack/_internal/utils/common.py,sha256=m2_lmWjIPTJvI8V2XifY2FUiqT_1KIUWfnLCbAjOvEw,9119
581
+ dstack/_internal/utils/cron.py,sha256=_axJFBCuZwMXZN04YPSk_gMvrRv6gNiGqd5hITyIg9Y,127
577
582
  dstack/_internal/utils/crypto.py,sha256=2RTSyzePuwwqc1X2HO6lwcSFyZ2kujnqluoICQ2DLJQ,1462
578
583
  dstack/_internal/utils/dxf.py,sha256=wguK9s6-69kqSDZkxd1kFEr6VlH5ixvFRJxizyOuJ8I,3229
579
584
  dstack/_internal/utils/env.py,sha256=HRbIspHpKHh05fMZeV23-hrZoV6vVMuniefD08u6ey0,357
@@ -622,8 +627,8 @@ dstack/plugins/builtin/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3
622
627
  dstack/plugins/builtin/rest_plugin/__init__.py,sha256=lgTsq8Z6Km2F2UhPRChVB4vDM5ZpWtdk1iB1aa20ypA,440
623
628
  dstack/plugins/builtin/rest_plugin/_models.py,sha256=9hgVuU6OGSxidar88XhQnNo9izYWeQvVH45ciErv-Es,1910
624
629
  dstack/plugins/builtin/rest_plugin/_plugin.py,sha256=iv8TmQh959iEUZjCFTzmGnFW8fHukTVpPmD4iBzOfS4,5361
625
- dstack-0.19.19.dist-info/METADATA,sha256=burdmLwqNXVaOOp7NaggyHjDMKds_KFDhROp50QIlxQ,20952
626
- dstack-0.19.19.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
627
- dstack-0.19.19.dist-info/entry_points.txt,sha256=GnLrMS8hx3rWAySQjA7tPNhtixV6a-brRkmal1PKoHc,58
628
- dstack-0.19.19.dist-info/licenses/LICENSE.md,sha256=qDABaRGjSKVOib1U8viw2P_96sIK7Puo426784oD9f8,15976
629
- dstack-0.19.19.dist-info/RECORD,,
630
+ dstack-0.19.21.dist-info/METADATA,sha256=ANt80iZwkabsiNy_6-3bJrwON0vBN7xOmRb7oImIu-M,20506
631
+ dstack-0.19.21.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
632
+ dstack-0.19.21.dist-info/entry_points.txt,sha256=GnLrMS8hx3rWAySQjA7tPNhtixV6a-brRkmal1PKoHc,58
633
+ dstack-0.19.21.dist-info/licenses/LICENSE.md,sha256=qDABaRGjSKVOib1U8viw2P_96sIK7Puo426784oD9f8,15976
634
+ dstack-0.19.21.dist-info/RECORD,,