dstack 0.18.41__py3-none-any.whl → 0.18.43__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.
Files changed (97) hide show
  1. dstack/_internal/cli/commands/__init__.py +2 -1
  2. dstack/_internal/cli/commands/apply.py +4 -2
  3. dstack/_internal/cli/commands/attach.py +21 -1
  4. dstack/_internal/cli/commands/completion.py +20 -0
  5. dstack/_internal/cli/commands/delete.py +3 -1
  6. dstack/_internal/cli/commands/fleet.py +2 -1
  7. dstack/_internal/cli/commands/gateway.py +7 -2
  8. dstack/_internal/cli/commands/logs.py +3 -2
  9. dstack/_internal/cli/commands/stats.py +2 -1
  10. dstack/_internal/cli/commands/stop.py +2 -1
  11. dstack/_internal/cli/commands/volume.py +2 -1
  12. dstack/_internal/cli/main.py +6 -0
  13. dstack/_internal/cli/services/completion.py +86 -0
  14. dstack/_internal/cli/services/configurators/run.py +10 -17
  15. dstack/_internal/cli/utils/fleet.py +5 -1
  16. dstack/_internal/cli/utils/volume.py +9 -0
  17. dstack/_internal/core/backends/aws/compute.py +24 -11
  18. dstack/_internal/core/backends/aws/resources.py +3 -3
  19. dstack/_internal/core/backends/azure/compute.py +14 -8
  20. dstack/_internal/core/backends/azure/resources.py +2 -0
  21. dstack/_internal/core/backends/base/compute.py +102 -2
  22. dstack/_internal/core/backends/base/offers.py +7 -1
  23. dstack/_internal/core/backends/cudo/compute.py +8 -4
  24. dstack/_internal/core/backends/datacrunch/compute.py +10 -4
  25. dstack/_internal/core/backends/gcp/auth.py +19 -13
  26. dstack/_internal/core/backends/gcp/compute.py +27 -20
  27. dstack/_internal/core/backends/gcp/resources.py +3 -10
  28. dstack/_internal/core/backends/kubernetes/compute.py +4 -3
  29. dstack/_internal/core/backends/lambdalabs/compute.py +9 -3
  30. dstack/_internal/core/backends/nebius/compute.py +2 -2
  31. dstack/_internal/core/backends/oci/compute.py +10 -4
  32. dstack/_internal/core/backends/runpod/compute.py +11 -4
  33. dstack/_internal/core/backends/tensordock/compute.py +14 -3
  34. dstack/_internal/core/backends/vastai/compute.py +12 -2
  35. dstack/_internal/core/backends/vultr/api_client.py +3 -3
  36. dstack/_internal/core/backends/vultr/compute.py +9 -3
  37. dstack/_internal/core/models/backends/aws.py +2 -0
  38. dstack/_internal/core/models/backends/base.py +1 -0
  39. dstack/_internal/core/models/configurations.py +0 -1
  40. dstack/_internal/core/models/runs.py +3 -3
  41. dstack/_internal/core/models/volumes.py +23 -0
  42. dstack/_internal/core/services/__init__.py +5 -1
  43. dstack/_internal/core/services/configs/__init__.py +3 -0
  44. dstack/_internal/server/background/tasks/common.py +22 -0
  45. dstack/_internal/server/background/tasks/process_instances.py +13 -21
  46. dstack/_internal/server/background/tasks/process_running_jobs.py +13 -16
  47. dstack/_internal/server/background/tasks/process_submitted_jobs.py +12 -7
  48. dstack/_internal/server/background/tasks/process_terminating_jobs.py +7 -2
  49. dstack/_internal/server/background/tasks/process_volumes.py +11 -1
  50. dstack/_internal/server/migrations/versions/a751ef183f27_move_attachment_data_to_volumes_.py +34 -0
  51. dstack/_internal/server/models.py +17 -19
  52. dstack/_internal/server/routers/logs.py +3 -0
  53. dstack/_internal/server/services/backends/configurators/aws.py +31 -1
  54. dstack/_internal/server/services/backends/configurators/gcp.py +8 -15
  55. dstack/_internal/server/services/config.py +11 -1
  56. dstack/_internal/server/services/fleets.py +5 -1
  57. dstack/_internal/server/services/jobs/__init__.py +14 -11
  58. dstack/_internal/server/services/jobs/configurators/dev.py +1 -3
  59. dstack/_internal/server/services/jobs/configurators/task.py +1 -3
  60. dstack/_internal/server/services/logs/__init__.py +78 -0
  61. dstack/_internal/server/services/{logs.py → logs/aws.py} +12 -207
  62. dstack/_internal/server/services/logs/base.py +47 -0
  63. dstack/_internal/server/services/logs/filelog.py +110 -0
  64. dstack/_internal/server/services/logs/gcp.py +165 -0
  65. dstack/_internal/server/services/offers.py +7 -7
  66. dstack/_internal/server/services/pools.py +19 -20
  67. dstack/_internal/server/services/proxy/routers/service_proxy.py +14 -7
  68. dstack/_internal/server/services/runner/client.py +8 -5
  69. dstack/_internal/server/services/volumes.py +68 -9
  70. dstack/_internal/server/settings.py +3 -0
  71. dstack/_internal/server/statics/index.html +1 -1
  72. dstack/_internal/server/statics/{main-ad5150a441de98cd8987.css → main-7510e71dfa9749a4e70e.css} +1 -1
  73. dstack/_internal/server/statics/{main-2ac66bfcbd2e39830b88.js → main-fe8fd9db55df8d10e648.js} +66 -66
  74. dstack/_internal/server/statics/{main-2ac66bfcbd2e39830b88.js.map → main-fe8fd9db55df8d10e648.js.map} +1 -1
  75. dstack/_internal/server/testing/common.py +46 -17
  76. dstack/api/_public/runs.py +1 -1
  77. dstack/version.py +2 -2
  78. {dstack-0.18.41.dist-info → dstack-0.18.43.dist-info}/METADATA +4 -3
  79. {dstack-0.18.41.dist-info → dstack-0.18.43.dist-info}/RECORD +97 -86
  80. tests/_internal/core/backends/base/__init__.py +0 -0
  81. tests/_internal/core/backends/base/test_compute.py +56 -0
  82. tests/_internal/server/background/tasks/test_process_running_jobs.py +2 -1
  83. tests/_internal/server/background/tasks/test_process_submitted_jobs.py +5 -3
  84. tests/_internal/server/background/tasks/test_process_terminating_jobs.py +11 -6
  85. tests/_internal/server/conftest.py +4 -5
  86. tests/_internal/server/routers/test_backends.py +1 -0
  87. tests/_internal/server/routers/test_logs.py +1 -1
  88. tests/_internal/server/routers/test_runs.py +2 -2
  89. tests/_internal/server/routers/test_volumes.py +9 -2
  90. tests/_internal/server/services/runner/test_client.py +22 -3
  91. tests/_internal/server/services/test_logs.py +3 -3
  92. tests/_internal/server/services/test_offers.py +167 -0
  93. tests/_internal/server/services/test_pools.py +105 -1
  94. {dstack-0.18.41.dist-info → dstack-0.18.43.dist-info}/LICENSE.md +0 -0
  95. {dstack-0.18.41.dist-info → dstack-0.18.43.dist-info}/WHEEL +0 -0
  96. {dstack-0.18.41.dist-info → dstack-0.18.43.dist-info}/entry_points.txt +0 -0
  97. {dstack-0.18.41.dist-info → dstack-0.18.43.dist-info}/top_level.txt +0 -0
@@ -1,94 +1,96 @@
1
1
  dstack/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
- dstack/version.py,sha256=_y8GsLLZfsEC3VdxzEbtitoyheXaElaOvO21SlEehwY,65
2
+ dstack/version.py,sha256=d3JTxTwIqwsUKYkzkrgMvw4t7I2HgxbJ2Bl3oR5u-g4,65
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=8XODoSW2joaEndvZxuHUPSFK85sGgJ7fVL976isYeJM,557
6
6
  dstack/_internal/cli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
7
- dstack/_internal/cli/main.py,sha256=XBL1ndQgWF3qVFfpoSJvRzT2N3NEwJs_3mhcNn3NRGU,3473
8
- dstack/_internal/cli/commands/__init__.py,sha256=i6d3YEmvLxV_pxLsHcj8CVmT0IsHRlwUt1Y7c_bNDP0,1914
9
- dstack/_internal/cli/commands/apply.py,sha256=4voRCc6ae9WfhheEkme-JaZsOMzGtUKr_ZqBU_yphZg,4808
10
- dstack/_internal/cli/commands/attach.py,sha256=ppN1wj003ydaGytZwOCh-Cv5WOkMuOMsfbbGB2BYqOg,4178
7
+ dstack/_internal/cli/main.py,sha256=RBGA0CvpRTS2seJPwYBQN_HIqEqSCF8iYoUMjDub57g,3676
8
+ dstack/_internal/cli/commands/__init__.py,sha256=e8EjD8Ej7Q3_APlxAN7NBwY7dGnW-DR91nH_RgcjBXg,2023
9
+ dstack/_internal/cli/commands/apply.py,sha256=dZH2B3Yr-lB7hs-QeUnvX0FV0Yk2x19dEO5uSFo4098,4909
10
+ dstack/_internal/cli/commands/attach.py,sha256=resmqoqkIOptp9Vn4BMs8m42Txl4mPzFDhHcv_lkWJk,5033
11
+ dstack/_internal/cli/commands/completion.py,sha256=2gDBYNb9u1JtuvZaAzqEOy0_ZatBvwn0Aq10j138xnA,546
11
12
  dstack/_internal/cli/commands/config.py,sha256=wc4haqU2-a65DcHdIH0gLyz3ViZ05dR7RXTlPm92G9g,3113
12
- dstack/_internal/cli/commands/delete.py,sha256=2jSt1XQ0W9l5YciO_bylGjljrPYpJbCyJu4HDYsXWtU,1317
13
- dstack/_internal/cli/commands/fleet.py,sha256=JmQCw93yXY4dGZM58zmrNJNwgLDQN6u4evIquJgncbk,3923
14
- dstack/_internal/cli/commands/gateway.py,sha256=nECzuhStVP_EI_x8PvwC2v4SlXH4sTG5Zh1fI2E30B4,5379
13
+ dstack/_internal/cli/commands/delete.py,sha256=agFBwJg8JXy1xp1UplRFLEPbix1bKvt6XvSBKpSPwYI,1418
14
+ dstack/_internal/cli/commands/fleet.py,sha256=J0Yi5CAYvIQF_NC4ZBsDYGc3grTOtvaF7sVcobd19Go,4028
15
+ dstack/_internal/cli/commands/gateway.py,sha256=PYVP3ngxKZ7hIvjUF3HcphMjXQRj84ePQs6gVrDjkgU,5567
15
16
  dstack/_internal/cli/commands/init.py,sha256=bLhSlViNWtjflB6xNq_PuCR2o2A06h222luh1NeUgVA,1169
16
- dstack/_internal/cli/commands/logs.py,sha256=S_TbKQ3YNKIlrcHlxnZl74FVeNq_TOiSNZBiUi7KjXI,2239
17
+ dstack/_internal/cli/commands/logs.py,sha256=ytWsxo_MGlAxsuNOd-yXsFzRDbnye_gtMcFfVdP2F4c,2349
17
18
  dstack/_internal/cli/commands/pool.py,sha256=XjTkW8cMQR20KoUrPuiQI246IMv8qTJD7-_Siuzgu0U,20656
18
19
  dstack/_internal/cli/commands/ps.py,sha256=WUQKL-1HcoM-oFF_WX4zplO8yKGMWfVbsivg0L7LP2w,1666
19
20
  dstack/_internal/cli/commands/run.py,sha256=hDItdHKXvVGQPqXKN-OQJ0HKupgmocqP3DNPl-yCamE,2690
20
21
  dstack/_internal/cli/commands/server.py,sha256=dCEdmVp1OlwFnSGw9k8mBb26wZy1D_ctgn5pmK8ZrCQ,2802
21
- dstack/_internal/cli/commands/stats.py,sha256=cCAk7xgWiCBUF1o7iqYDr4iOwWGTjkoEoEOBaEVr-Fk,5275
22
- dstack/_internal/cli/commands/stop.py,sha256=XFUe-5CiRlYw5ggMf2paZDfz3KXdOLDukA7NY3KEv5c,899
23
- dstack/_internal/cli/commands/volume.py,sha256=JatBQRcwcSrZzdGpmaeCwqdR31ZSNKJQT026V0C_aWE,3107
22
+ dstack/_internal/cli/commands/stats.py,sha256=KKSYfUmTL8d8_29Fajue_sa8KX_ifE_vx98CCNjttSo,5376
23
+ dstack/_internal/cli/commands/stop.py,sha256=i7TreejSemrQcL7C37La22KkwM98O09IDMRNt8cw1NI,1000
24
+ dstack/_internal/cli/commands/volume.py,sha256=h0bQQm6zx1Bq0kdBX5ksqPZk55wz-md_Kitm0RTDReg,3214
24
25
  dstack/_internal/cli/services/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
25
26
  dstack/_internal/cli/services/args.py,sha256=Rnqq4M979bNACwWehgGKF2j30x01Efs-dDP-bjyTroE,782
27
+ dstack/_internal/cli/services/completion.py,sha256=HvWHdZhXQWX1FyHf1OtQJxeuIXMXBKcoa5UjNRr0AN0,2984
26
28
  dstack/_internal/cli/services/profile.py,sha256=Fl052TeMCbWO1Q6HiaPVD9CdfClzZAkknkCd2pYXpdM,7716
27
29
  dstack/_internal/cli/services/repos.py,sha256=ImJuElGjsR4OQ7dBquy4PCQUbBM4bR4vhyLwMrVBS7k,3307
28
30
  dstack/_internal/cli/services/configurators/__init__.py,sha256=z94VPBFqybP8Zpwy3CzYxmpPAqYBOvRRLpXoz2H4GKI,2697
29
31
  dstack/_internal/cli/services/configurators/base.py,sha256=DxVuF9pDqghq9mFCcTDG1CxO06IAAwvzlc9nHflCipc,3443
30
32
  dstack/_internal/cli/services/configurators/fleet.py,sha256=bKnWXhr7r8GndxedNdG_TWvwcxV4gab_LFt4s3Q17D0,14822
31
33
  dstack/_internal/cli/services/configurators/gateway.py,sha256=czB2s89s7IowOmWnpDwWErPAUlW3FvFMizImhrkQiBM,8927
32
- dstack/_internal/cli/services/configurators/run.py,sha256=8RFxrk9EgOJZ2GoZPmhAm8z4XoTcVvYGkmTHS6uk73U,23421
34
+ dstack/_internal/cli/services/configurators/run.py,sha256=kRbT-yczl8h4rjCjiWMd2bB44x7iBWqDC1qKCOPi2HU,23072
33
35
  dstack/_internal/cli/services/configurators/volume.py,sha256=riMXLQbgvHIIFwLKdHfad-_0iE9wE3G_rUmXU5P3ZS8,8519
34
36
  dstack/_internal/cli/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
35
37
  dstack/_internal/cli/utils/common.py,sha256=rfmzqrsgR3rXW3wj0vxDdvrhUUg2aIy4A6E9MZbd55g,1763
36
- dstack/_internal/cli/utils/fleet.py,sha256=F9oW381tPePaxB0jBnxdpWLvxF6RDBKLbGuxEF52E-s,3755
38
+ dstack/_internal/cli/utils/fleet.py,sha256=NpqTdcMVcuUGke9drroxDoNnmifbKV7iziqdGPLc3lk,3885
37
39
  dstack/_internal/cli/utils/gateway.py,sha256=jMytH6u3x8hctMhm9bcmXLJxSgTXmpW8M9abATQrw3c,1474
38
40
  dstack/_internal/cli/utils/rich.py,sha256=Gx1MJU929kMKsbdo9qF7XHARNta2426Ssb-xMLVhwbQ,5710
39
41
  dstack/_internal/cli/utils/run.py,sha256=4NDhlcdE4bccQ4gWzhZ2EP8tHryZt4eI3BBho425VOA,7737
40
42
  dstack/_internal/cli/utils/updates.py,sha256=9KQcm_TEE_PiU0yc5WH4xRse0WIeHOubi9Et55odgvk,2601
41
- dstack/_internal/cli/utils/volume.py,sha256=dAdIBejLh-5vz34XcB4z2JkqQ3rrzmX5jKY0q7MyjNE,1639
43
+ dstack/_internal/cli/utils/volume.py,sha256=mU9I06dVMFbpjfkefxrZNoSWadKLoib3U14rHudNQN4,1975
42
44
  dstack/_internal/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
43
45
  dstack/_internal/core/consts.py,sha256=c1Yd5UY6Qx7KeuYgloXWncWhMsYj6TqwlElda7NtB98,254
44
46
  dstack/_internal/core/errors.py,sha256=UvqMIBVHG1NIUP0w0g5dWjnxOz37sfFi4lh4yuYK0vw,2793
45
47
  dstack/_internal/core/backends/__init__.py,sha256=P7uX9QYj-aWSHOub1vIwr-MVERVCwTi8pcG4MQVuEYw,958
46
48
  dstack/_internal/core/backends/aws/__init__.py,sha256=gGXM9op3UJ3-OGDjNr4ywa_fNf--oywRbrOGUH2tTDA,850
47
49
  dstack/_internal/core/backends/aws/auth.py,sha256=lRBwNUdEWMWlblDnFSGlIcNkZMY2tSjapdq1OjwollU,1253
48
- dstack/_internal/core/backends/aws/compute.py,sha256=UgRb2S5TQ0dbrXIU1jauElNgpvU4OPuj1Nrxa7gg3G8,35236
50
+ dstack/_internal/core/backends/aws/compute.py,sha256=PIxXZEzUQoLqIiplPkDyP5pWUgTPXz8XVe5Bg9Ge3hQ,35945
49
51
  dstack/_internal/core/backends/aws/config.py,sha256=bd4juOaiqsUsWeorIgqCW0xNigCFIRQIvaRxEHyhpwg,533
50
- dstack/_internal/core/backends/aws/resources.py,sha256=yKsMMLO4HMRTWero8cLDxtavWvqcne_y9VDXVH9G1lE,22551
52
+ dstack/_internal/core/backends/aws/resources.py,sha256=8Pm1zwejYESlH559GB0zNg5zVBgC5D4bPyGx7zBRhmg,22540
51
53
  dstack/_internal/core/backends/azure/__init__.py,sha256=J-mWp413v0DQFaTochlvMJXlGf8ukQCH_6oGuYFR31U,718
52
54
  dstack/_internal/core/backends/azure/auth.py,sha256=CZZlcUMkjh18wwtMl75K7kfob1bc9aI1TRr5QwMn_u8,1523
53
- dstack/_internal/core/backends/azure/compute.py,sha256=5NdOT1zonGrQvFiJK3unZW0vI-hw8_Nm8918Oh80ERU,23041
55
+ dstack/_internal/core/backends/azure/compute.py,sha256=ERtj3cEWVUR6MeA8W4dr4fo4SqtVMPfbkomoge5IIZs,23290
54
56
  dstack/_internal/core/backends/azure/config.py,sha256=nb7e9rBt5glSOcXW1NZUxlyjfe2W1CiEPERNlxLcLUo,391
55
- dstack/_internal/core/backends/azure/resources.py,sha256=OsVrWnrqUDs8-A6QOH5XDHTX6-fKpXotlvYLBiXDAH8,3020
57
+ dstack/_internal/core/backends/azure/resources.py,sha256=keE3ruSSNWhSYMCkG7832TYppMMe8lDEyph0tulhd18,3048
56
58
  dstack/_internal/core/backends/azure/utils.py,sha256=taHMJq6UHRzUXLUcO2P5VCKy3wJaye2bG-6QdkEPNdY,1741
57
59
  dstack/_internal/core/backends/base/__init__.py,sha256=nTI1mn75hqwUumBVmyD_OSJW3boYHzNh1ER6m9yl39Y,280
58
- dstack/_internal/core/backends/base/compute.py,sha256=awJhv8moWYPk3lOn7kSUT9B0TmgvJi980sNB8DsPjyI,17039
60
+ dstack/_internal/core/backends/base/compute.py,sha256=cATataCnSX881cU5spmpckI5bgjGseOQ8_Ms6ksYyqI,20077
59
61
  dstack/_internal/core/backends/base/config.py,sha256=iwgrp31Yt0iHRU2IpGhOwyuEcdt3igP9Q9rV7pmnyEg,74
60
- dstack/_internal/core/backends/base/offers.py,sha256=Lr0nVbSNBuIG2n0geDyX2JUexNnHqdoHWVshmuFQET8,5682
62
+ dstack/_internal/core/backends/base/offers.py,sha256=89H6g6Dw5WvXDEBnKoZUF-fGIE3Clc8T4lEjZ_jr71A,5909
61
63
  dstack/_internal/core/backends/cudo/__init__.py,sha256=e-RHwoV4-rg1I31BrSIZsgPBY5rsa_kN9dbZM0pve04,519
62
64
  dstack/_internal/core/backends/cudo/api_client.py,sha256=ygq1Gx7ZvwKaifdXtvzDSw4xR4ZH6UWd5J47BjuaGh0,3685
63
- dstack/_internal/core/backends/cudo/compute.py,sha256=Xr0oyNKeqZJtdD9HeCMU3_v6oJew25YcjCRt3jdVHSs,6825
65
+ dstack/_internal/core/backends/cudo/compute.py,sha256=-N6u7PmU--cpSk-B_KG-SbBbFO3ida4yJeTCVPyqhyI,6871
64
66
  dstack/_internal/core/backends/cudo/config.py,sha256=OEtzz3bxJ29D07i5pHd5xd5SkclbpFBN-i--yHyZ6gc,245
65
67
  dstack/_internal/core/backends/datacrunch/__init__.py,sha256=UiyGh78DabzGFkb-zwm84NB5CyhhSoXpqX8FxJp7pY8,573
66
68
  dstack/_internal/core/backends/datacrunch/api_client.py,sha256=EMnd4uEZqSXEcCajMvaYKnL4l-mZRPGYlsjaeG4It8M,2602
67
- dstack/_internal/core/backends/datacrunch/compute.py,sha256=gyOftmUdmS9fMqpyew0POundGLBPEzI2S_sGemhIOFc,6633
69
+ dstack/_internal/core/backends/datacrunch/compute.py,sha256=8ldjO2CtiOHTj9LsoIv2WS0Tcpc-14-1tvZZZ4gI_dg,6759
68
70
  dstack/_internal/core/backends/datacrunch/config.py,sha256=bShWTAb02PYP8fuBz7H7r-YhRkhy6_yfD0nuaKd9xd4,281
69
71
  dstack/_internal/core/backends/gcp/__init__.py,sha256=nxhPNTGd1pPag2DwBRKg3X5gEKlh32p7a9Yfyi7-d5k,546
70
- dstack/_internal/core/backends/gcp/auth.py,sha256=AL5i7VtXvMboTCk-dzvNykaogYV31xAYfEivXxzOD_k,1832
71
- dstack/_internal/core/backends/gcp/compute.py,sha256=VEAeaKYa-gIBNJ8MYBCnPf0xoELzlhoAZREHPupnqgQ,35929
72
+ dstack/_internal/core/backends/gcp/auth.py,sha256=hSClOujk8_kcodqK4SltdaIty6kKaQAecHYya99-LBQ,2495
73
+ dstack/_internal/core/backends/gcp/compute.py,sha256=-tp5z4cwUY3SVCSsijRHm8QnBaAzvMh-wVs6sVHdoCE,36087
72
74
  dstack/_internal/core/backends/gcp/config.py,sha256=AjNHgIsDqB5aKdyFXTKG9wNO2d3lgNyJW4Dk5Yb-LL4,722
73
- dstack/_internal/core/backends/gcp/resources.py,sha256=6khFYRZwMrjRxVAoHav3OsKFSVw-tuLVkJ_FzQCY8EI,14741
75
+ dstack/_internal/core/backends/gcp/resources.py,sha256=ZDs8rjdMCgHeeHH_vzxJjhCJN-omF4tRBApkN3GOjpg,14539
74
76
  dstack/_internal/core/backends/kubernetes/__init__.py,sha256=MpuT3Dxt2ZwZpAQomE_fXUDmgHBmfP8xvUP1YMAKTJQ,573
75
- dstack/_internal/core/backends/kubernetes/compute.py,sha256=vpI6Gb_WdrZHNqsXEqOUM2f174V0Nv7Zzsd1hlAjV1c,22611
77
+ dstack/_internal/core/backends/kubernetes/compute.py,sha256=aAh4XNs-5lTI-q_2Bt6NzyKT3-mQSCLTk_1qCDLPAhg,22719
76
78
  dstack/_internal/core/backends/kubernetes/config.py,sha256=odZgt1y8tPPm5L6Wta4XjpVDNi7aJGPANyyyapzUDWU,227
77
79
  dstack/_internal/core/backends/kubernetes/utils.py,sha256=k0cmjqMoNfJ_pAe6W82exV4AywMcpZ5jf0QICVbVuFY,1218
78
80
  dstack/_internal/core/backends/lambdalabs/__init__.py,sha256=eAjZoRfstuNcgDpYjYPBfHbBTjmQ0jkRP1AvftyR_Lk,581
79
81
  dstack/_internal/core/backends/lambdalabs/api_client.py,sha256=WaBO7VrPB4kbMQJDxjFxx0HEtAoSncQvH-cahWnVxx4,2688
80
- dstack/_internal/core/backends/lambdalabs/compute.py,sha256=cXSCXS5OU-e1p-UxrZenyXHPcyYHMF02LNH3HSrT4FI,8216
82
+ dstack/_internal/core/backends/lambdalabs/compute.py,sha256=1G5Z2ECtSqlp9dZcbFSKa0zYcgMb5_IA3kMOLFXNCu0,8398
81
83
  dstack/_internal/core/backends/lambdalabs/config.py,sha256=dK5nDZ320x8xVWaIZ_As2rk1rJOpxuFwIve1Qe6tjp8,261
82
84
  dstack/_internal/core/backends/local/__init__.py,sha256=Bbq2l8PWJTsMqovjS4u5VTDFrxYn-o3nJtdD1hfrBHM,399
83
85
  dstack/_internal/core/backends/local/compute.py,sha256=5ETgGZ09axLpRghBZp4GHUcOX0-m4ShhcL3MXHvySaU,3248
84
86
  dstack/_internal/core/backends/nebius/__init__.py,sha256=wmJ1JPm54Vc3omuVrLKbbEr_F9mZbeLl-Vb_eMF5r2s,537
85
87
  dstack/_internal/core/backends/nebius/api_client.py,sha256=T2f429uY2KFWY8NrnCaAu16O4L2ygYrkc10crrbu-BI,10326
86
- dstack/_internal/core/backends/nebius/compute.py,sha256=3mI0-au3XL-EViguA5tVjEws5aEl2Mbu747jKoNQCLo,8510
88
+ dstack/_internal/core/backends/nebius/compute.py,sha256=trlHEGlBiMg_ehYYUyxlA4hM2qQ3dMb7FSMBzy2cvdk,8518
87
89
  dstack/_internal/core/backends/nebius/config.py,sha256=S4XL45mxaZvqFraCyGefGY7G3vXbzLDP-ozIndKrL_w,244
88
90
  dstack/_internal/core/backends/nebius/types.py,sha256=7V5UTFlhdKO410pxtsQRpCjsaMf1vxcTwT3ncp1QI78,509
89
91
  dstack/_internal/core/backends/oci/__init__.py,sha256=Tjf82P3e3nRnYwvr27IRi9C-c9SI6-39TongpJFeQqY,510
90
92
  dstack/_internal/core/backends/oci/auth.py,sha256=dZy8EWsnUbylp0x1VYZpgu2MBXh_Tocz6KPAjPNmjbs,883
91
- dstack/_internal/core/backends/oci/compute.py,sha256=bm3LwfAd8PeNe_P0xIFuAPZIoL1KLqTcJ4M8Hz4dwhA,7742
93
+ dstack/_internal/core/backends/oci/compute.py,sha256=rNEXOsrjfcGRuz-tXVlKJrMcxPXAaxgdaBSwwgGXzu4,7894
92
94
  dstack/_internal/core/backends/oci/config.py,sha256=rSwnbRh7qXe64CfJ_oOnIRFaYevjZ5J4Hx1dNwkT3Xo,226
93
95
  dstack/_internal/core/backends/oci/exceptions.py,sha256=GxlUf7itcAQgY3m-U2ul_ZXzfUOcEcPEmisWFaoWSkA,288
94
96
  dstack/_internal/core/backends/oci/region.py,sha256=6MElwRMVQvl7FF2E90nQ1p7QmcRcyhAps2Dy2cOYR4A,2935
@@ -97,24 +99,24 @@ dstack/_internal/core/backends/remote/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCe
97
99
  dstack/_internal/core/backends/remote/provisioning.py,sha256=oNbomEuXIBdgYeCh6_RWB0nWtnrJ0-HRf9M6VYgoQvk,12461
98
100
  dstack/_internal/core/backends/runpod/__init__.py,sha256=CC9K4rZlSxpSIqt9akM1PIRzaOGozreY4hQWxO8dRZ4,537
99
101
  dstack/_internal/core/backends/runpod/api_client.py,sha256=Oet7CwQTu3sE57unqh-JvuMCBDEDPruAbGB4GyM0dM4,13427
100
- dstack/_internal/core/backends/runpod/compute.py,sha256=GRivKqHvobYHB55_76MiYcye1nwznxH2wgnwAx_xSlQ,9552
102
+ dstack/_internal/core/backends/runpod/compute.py,sha256=u6OSdGCXH5L2JX6ztEtXHW76MNv8ZE95PIhhVcfsHnU,9867
101
103
  dstack/_internal/core/backends/runpod/config.py,sha256=V9ihNEigp5szdDuffHDM47JsshyPc25x6jHwbuc2YhY,257
102
104
  dstack/_internal/core/backends/tensordock/__init__.py,sha256=AihBzxY8RjJHXYrpqaSGCkcOwqYsMgiyIlH16fnHxso,573
103
105
  dstack/_internal/core/backends/tensordock/api_client.py,sha256=4106Jzn_I1WTX0VZkZk3I-xkG7sHGTUBRapi8Fk2H7o,3805
104
- dstack/_internal/core/backends/tensordock/compute.py,sha256=XhenSNBt2xEatWQRc6QKcIlQXIIYYR7zfEb4zk2DMxE,5348
106
+ dstack/_internal/core/backends/tensordock/compute.py,sha256=njDKvNxN7Fupoxw_eMiItimOvadvdLXEAivM3e75ro0,5584
105
107
  dstack/_internal/core/backends/tensordock/config.py,sha256=tDbQd2JaALw05WQMHepbyaIBKLvDP0AW3qJyoMDxX5o,281
106
108
  dstack/_internal/core/backends/vastai/__init__.py,sha256=0biDt0AfWis81AJZc-R2TuUdSodjpiJjUtxPTG8RdG8,537
107
109
  dstack/_internal/core/backends/vastai/api_client.py,sha256=b-qgx352lnxhBXichJtURFGxR7Jd9JYx4WXaxYV-HH0,4940
108
- dstack/_internal/core/backends/vastai/compute.py,sha256=GYKEGPSUqxgq4_ei7VRjMyx-BAq1ULrZs9sRCY4qW10,4638
110
+ dstack/_internal/core/backends/vastai/compute.py,sha256=3gvzzaYo5yTrnWbRz10M6DRca2WUCiQXqUaVKVBUi5M,4854
109
111
  dstack/_internal/core/backends/vastai/config.py,sha256=cVHqnEkPKw2DFOkEGJ3XhMcRx4IBDgfUuS69DKksosI,244
110
112
  dstack/_internal/core/backends/vultr/__init__.py,sha256=D5FekILnO-lQ91hPYKrXWB0BuiGx7djMajuMa3ZlrV0,528
111
- dstack/_internal/core/backends/vultr/api_client.py,sha256=69iQFuP63Fb5UMacWYLxGXB9V74Tr1Hd6MheVHZkXb8,4346
112
- dstack/_internal/core/backends/vultr/compute.py,sha256=M78r6GIn4HI70yCBWB22xMPLADWgf8FVLVB5M8ymkH8,6175
113
+ dstack/_internal/core/backends/vultr/api_client.py,sha256=isHbdBQr2hFRYTcnTsGxSlWIKYrpC1X_gjSZjGxUupE,4363
114
+ dstack/_internal/core/backends/vultr/compute.py,sha256=HqoI7ZF_DafrOG3XALdRjYQdzpvCP0_SBsm6GSk1Sw4,6357
113
115
  dstack/_internal/core/backends/vultr/config.py,sha256=TqjT2yhW9rAiDpJ96gBFTM638FS9QwYAT33WSoh6z34,251
114
116
  dstack/_internal/core/models/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
115
117
  dstack/_internal/core/models/common.py,sha256=XNfEP_lHAs398oDfSVn8kCX79GIWvl0hDs05Rz1CBic,2579
116
118
  dstack/_internal/core/models/config.py,sha256=JJ7rT7dztzTWCY5TkoyxXxTvG5D4IFYhGe7EzwkLOWQ,581
117
- dstack/_internal/core/models/configurations.py,sha256=Jj9mM52uoYKdq557it8L8UHWsP1kbzHxjV-hmkouHf4,14816
119
+ dstack/_internal/core/models/configurations.py,sha256=lC5Pp_sQUb8GzR2z3QL1vMEMRgC8YwMPQlgpKt0z9dM,14726
118
120
  dstack/_internal/core/models/envs.py,sha256=ls2ahIhEb3LYLX_auH3F46uTRp2zdlMWKEpjmU_V3S4,5017
119
121
  dstack/_internal/core/models/fleets.py,sha256=MzJFMpzsuXBE1Fxlbf8dtsqes5qWMCMRSUWGoWIcRnA,10772
120
122
  dstack/_internal/core/models/gateways.py,sha256=n9lPq6X0n2a7fF-CseiBVDDwasJsU3VQumTetMsfZcc,3465
@@ -126,17 +128,17 @@ dstack/_internal/core/models/pools.py,sha256=SmxNQsSYolUMkraLi0BvEXDacuhp1cvbGQn
126
128
  dstack/_internal/core/models/profiles.py,sha256=Y0qsIV0DvvI-YxtcMLqmsrqulGKzJsE_0SdWU2Wusv8,8208
127
129
  dstack/_internal/core/models/projects.py,sha256=hY3rhLWkuDRsavAdNvQaK6IhnTr7yBHTmNwy9k7zjVE,643
128
130
  dstack/_internal/core/models/resources.py,sha256=AzBqGEZLHmg-HpjQtcb_W4pJQRxRtDyeuiHO4berdBA,12408
129
- dstack/_internal/core/models/runs.py,sha256=y41U2RLnLU9HZkXUcKi0c7-2CxXYKuOAlt9EtBogi3w,17919
131
+ dstack/_internal/core/models/runs.py,sha256=ziWnqFRL1hORWJ10evwxLySAe9umiP7kTc3IUvEniSc,17940
130
132
  dstack/_internal/core/models/secrets.py,sha256=OlnBI8ESBnpjSqB0-Vr3z8JcqB2Ydfiwo8IJUuM5jAc,219
131
133
  dstack/_internal/core/models/server.py,sha256=Hkc1v2s3KOiwslsWVmhUOAzcSeREoG-HD1SzSX9WUGg,152
132
134
  dstack/_internal/core/models/services.py,sha256=2Hpi7j0Q1shaf_0wd0C0044AJAmuYi-D3qx3PH849oI,3076
133
135
  dstack/_internal/core/models/unix.py,sha256=KxnSQELnkAjjuUgYcQKVkf-UAbYREBD8WCWDvHfOkuA,1915
134
136
  dstack/_internal/core/models/users.py,sha256=o_rd0GAmd6jufypVUs9P12NRri3rgAPDt-KxnqNNsGw,703
135
- dstack/_internal/core/models/volumes.py,sha256=ox2HTqpDi5J1hHh-R-hPrgBQ9Ku_Vas3fPSVfj3nPpo,5335
137
+ dstack/_internal/core/models/volumes.py,sha256=ZebkSybGXmnPQHjsDCWVofHavjwjLIovssmpXnLW6nU,6207
136
138
  dstack/_internal/core/models/backends/__init__.py,sha256=iPMAv4j7gpHc0cjt3SxzQGb-sywms8LUXt7IjtKNPnM,5589
137
- dstack/_internal/core/models/backends/aws.py,sha256=H0RB7pTVb7vjW_-MDpBBwPLbAoKDRtYFHe_n4ppXz6w,2463
139
+ dstack/_internal/core/models/backends/aws.py,sha256=YCt2Q3MF7RjYa707iU0EyXvkXYIr2ivNtdauCW-khss,2550
138
140
  dstack/_internal/core/models/backends/azure.py,sha256=OhK3HBvI_ZfLmKVxlnm7AowWOlarp6QXb3tbcbFoACw,2076
139
- dstack/_internal/core/models/backends/base.py,sha256=1UWcpAI6hhwJkNFLp00eJwRzb9C82dsp7QsMkRHr9VA,1373
141
+ dstack/_internal/core/models/backends/base.py,sha256=FabJjSLFnLMY597fJXgS8o2shtToML756aEd30OQyDo,1428
140
142
  dstack/_internal/core/models/backends/cudo.py,sha256=ZaqIq1yxxnoFddvzFES7VO82bVNxeI5laFWKKN_JaeE,1111
141
143
  dstack/_internal/core/models/backends/datacrunch.py,sha256=CpQDDZ2xHWz5BQPb9NA_eSP7FaQQegT0yGJZ1CCSNqc,1281
142
144
  dstack/_internal/core/models/backends/dstack.py,sha256=Oxyf8zqbOjxStimYrYuYvf0Kop3dJbyBQnkMnUGDs0Y,754
@@ -154,13 +156,13 @@ dstack/_internal/core/models/repos/base.py,sha256=lHV9iNSV1Iv1xxqxO7wCcGZ5WIliMp
154
156
  dstack/_internal/core/models/repos/local.py,sha256=ve9DoCn9qDyE2VOxzoK4_BdXwVveFPFY0fSls7jRcmI,2379
155
157
  dstack/_internal/core/models/repos/remote.py,sha256=JjqPVGzeYr7T8MhsvkUs3GzUpfnAIEWj-UAUbwJhl2Q,10877
156
158
  dstack/_internal/core/models/repos/virtual.py,sha256=1p6k2vBfWI6UT91os3lZfV5wl8bskNGFa1hyI5kiY-8,2569
157
- dstack/_internal/core/services/__init__.py,sha256=Utrh2zbYsP6IBGWMGROaHUefgo_TvLloN3logcdhuC4,282
159
+ dstack/_internal/core/services/__init__.py,sha256=UVVcj26WYVgo7jHzD07sNRqSOO7zA3QzQv-9LnCDqR4,415
158
160
  dstack/_internal/core/services/api_client.py,sha256=HTQ0fcZciUh-nmfV09hUt__Z4N2zq_R12xAiYXD0Jy0,650
159
161
  dstack/_internal/core/services/diff.py,sha256=lw7vTOYnGtRWlEulgVlHt1KjLdC8VJpfBcqMRuFZzSQ,532
160
162
  dstack/_internal/core/services/logs.py,sha256=7_eJdH4MD-3rVb4A6rIJfjj_p4jzUOCmjRVlPD-UDsg,2166
161
163
  dstack/_internal/core/services/profiles.py,sha256=SJGT6LG8JmrfsqlyXOkPZd61BDwZ4Q1ngcmDVgq826M,2160
162
164
  dstack/_internal/core/services/repos.py,sha256=YgTmLX8U1Y5cz2dG9yThK1-Geq02iik_C6DGZ0y6uEY,5311
163
- dstack/_internal/core/services/configs/__init__.py,sha256=2jwu1w0vEDNcKGdeI15SS4EtpLSZzRpG8xZslHgTJmY,5484
165
+ dstack/_internal/core/services/configs/__init__.py,sha256=hBFfU1IhkFJ7HZU9JgzBys8i1l_YM-iEKt0JqYd1YiE,5580
164
166
  dstack/_internal/core/services/ssh/__init__.py,sha256=UhgC3Lv3CPSGqSPEQZIKOfLKUlCFnaB0uqPQhfKCFt0,878
165
167
  dstack/_internal/core/services/ssh/attach.py,sha256=Vc47zLXqCUcg14BahwyX9qnBaGEJi96mTU1Nd0XU31Q,9011
166
168
  dstack/_internal/core/services/ssh/client.py,sha256=FUg74jNOagYR3OKuWMBwNgJWIDwHfYrIMSER8xn92D8,4102
@@ -223,20 +225,21 @@ dstack/_internal/server/app.py,sha256=pPto7JaBEkwvPF2FR8sqDzwIyMovI_85xk6WXfnnCY
223
225
  dstack/_internal/server/db.py,sha256=WjuqmjG3QAZmSMCeUaJ_ynbowlHuNAvYCZO649cTPHc,3210
224
226
  dstack/_internal/server/deps.py,sha256=31e8SU_ogPJWHIDLkgl7cuC_5V91xbJoLyAj17VanfM,670
225
227
  dstack/_internal/server/main.py,sha256=kztKhCYNoHSDyJJQScWfZXE0naNleJOCQULW6dd8SGw,109
226
- dstack/_internal/server/models.py,sha256=4DsizdUw1tOEpUKp9NQ_w9YKbjoJSc8SEGcaz5el5CI,27090
227
- dstack/_internal/server/settings.py,sha256=tEPw0xIltvW4TpLBA-OzKRM_PmvDuD4vuXCo7ITyzpo,3067
228
+ dstack/_internal/server/models.py,sha256=VKh_lfgGUlc0Xy_CGo02IDgwPRp3membAJg07jm27j4,27405
229
+ dstack/_internal/server/settings.py,sha256=4Vazy6qel63ToJzQSjlOHAt_5UpM99inAQYEINUgUAw,3170
228
230
  dstack/_internal/server/background/__init__.py,sha256=jNDwTgQwKhK1NYl0RJaKU4mwKIMOSIxPTKVyhizU1PM,3436
229
231
  dstack/_internal/server/background/tasks/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
232
+ dstack/_internal/server/background/tasks/common.py,sha256=N7xSXbf2MoBWgbJ1e3AEzYBTf1Gn-pDXYND8Zr_YCJQ,970
230
233
  dstack/_internal/server/background/tasks/process_fleets.py,sha256=lKXUvN_b7DNjD3psHzyCt_JYsTxPFuQ86iXi8fj8GkM,3202
231
234
  dstack/_internal/server/background/tasks/process_gateways.py,sha256=KN5n9r0cKizJ3oGpeLsv3euZKZOMf-02X0Sv09GE8N8,7141
232
- dstack/_internal/server/background/tasks/process_instances.py,sha256=gryg6-eKv6bQAtaX6v-GTi-Sc_g9Lk0CWauwYv7lWDA,37402
235
+ dstack/_internal/server/background/tasks/process_instances.py,sha256=xRV0tJbSPean2E09opTYLUH2Z4Xpm1Lw-o-LqPcecqc,37046
233
236
  dstack/_internal/server/background/tasks/process_metrics.py,sha256=BPv0S7pmMX91vObZiW51AJiNR0ULIj-OQlo5n97KISY,5328
234
237
  dstack/_internal/server/background/tasks/process_placement_groups.py,sha256=DZctiMF2TXKbYeygoz--ZiC9MXVL1sQJgq0oqRIc7hg,3858
235
- dstack/_internal/server/background/tasks/process_running_jobs.py,sha256=Y1-1CVwZ4q_R2Vqsb7BeRJFWsYMEKyBCp9siQfpGSm0,29899
238
+ dstack/_internal/server/background/tasks/process_running_jobs.py,sha256=8YH4hQXvkSxzrWz9wW0lYoMZmNgC3iUHBWR-tG_LCZI,29829
236
239
  dstack/_internal/server/background/tasks/process_runs.py,sha256=JWJqMzXXqvwQSxyKs4bKH2aBP8YQbiyO4tuwyMPVduk,16673
237
- dstack/_internal/server/background/tasks/process_submitted_jobs.py,sha256=QFV5sruEEswjprAukeF1rgzQSRtV5nvAFRdkc4deqLc,26785
238
- dstack/_internal/server/background/tasks/process_terminating_jobs.py,sha256=Tq6oZP6nMHLhtdKnWmC11VHNWaO409F6IwzajzE-kJs,3746
239
- dstack/_internal/server/background/tasks/process_volumes.py,sha256=UoMtYjX6MbSoMXOOuBhA0FVIlQMT_wZWsRNeYVV3cSI,4703
240
+ dstack/_internal/server/background/tasks/process_submitted_jobs.py,sha256=xv1aW2umlOdbdZn4TOvlhl6td3Uam378yIwosfSO9ks,27022
241
+ dstack/_internal/server/background/tasks/process_terminating_jobs.py,sha256=0Z3Q409RwSxOL_pgK8JktBthjtESEUH3ahwTLsTdYPk,3800
242
+ dstack/_internal/server/background/tasks/process_volumes.py,sha256=YafZml-b-bD7M6S0UmY-rLV-pIIX-SdzuyaErqxrnyk,4939
240
243
  dstack/_internal/server/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
241
244
  dstack/_internal/server/migrations/env.py,sha256=RuhcN-CST86VzMatjqBMdYcG0fGGMZl_o1YgZTL-WDw,2831
242
245
  dstack/_internal/server/migrations/versions/065588ec72b8_add_vultr_to_backendtype_enum.py,sha256=wSdI_HWGUFgczhOPyoP6BTPmDbN3KmjokHVpZJGsq4Q,2112
@@ -277,6 +280,7 @@ dstack/_internal/server/migrations/versions/99b4c8c954ea_add_termination_reason_
277
280
  dstack/_internal/server/migrations/versions/9eea6af28e10_added_fail_reason_for_instancemodel.py,sha256=n0iWQ3L1DWQqPIT-IRs9TR74psf-ZDjcYvSIfn80etY,1027
278
281
  dstack/_internal/server/migrations/versions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
279
282
  dstack/_internal/server/migrations/versions/a060e2440936_.py,sha256=4wXIln1yzEowe-1_xFRJFGfaVIwkwlpAO9RlLeVQ-uY,8016
283
+ dstack/_internal/server/migrations/versions/a751ef183f27_move_attachment_data_to_volumes_.py,sha256=befGXlRV7vP6u3VIyf7nMslyBHVAZuFbomQpmc7phRs,1023
280
284
  dstack/_internal/server/migrations/versions/a7b46c073fa1_add_placementgroupmodel.py,sha256=fXYI21V43UmHcIpq7KfD8Ggcjy_l4I_hfXWhB0SnSBM,2078
281
285
  dstack/_internal/server/migrations/versions/afbc600ff2b2_add_created_at_to_usermodel_and_.py,sha256=qRDvCdBaTjL82sdZN2GTWq0JCF2PZU-jFANzCJnM4Bw,3705
282
286
  dstack/_internal/server/migrations/versions/b4d6ad60db08_add_instancemodel_unreachable.py,sha256=rnmLqt_pzNtqMqcmzXIPZxs5WxDE7ieAdI6SnKUFjqM,1038
@@ -303,7 +307,7 @@ dstack/_internal/server/routers/backends.py,sha256=nocj-M0m54t_rpjZQBk15XRIVDpXI
303
307
  dstack/_internal/server/routers/fleets.py,sha256=Tmw4hlviCBuntQPpp4J8XyQZyoK2-4o41OlcEP4NNtg,4867
304
308
  dstack/_internal/server/routers/gateways.py,sha256=am5HnyWUydgUbEjIdjYBcob8CEIrx4bRtdj9kQhutkA,3149
305
309
  dstack/_internal/server/routers/instances.py,sha256=ELxXF4BiS9e4YCKFmBp8U4SsjP8eGmbj9Q4LiLfgsgY,1592
306
- dstack/_internal/server/routers/logs.py,sha256=-OO3KAjKJM3nTzva8xx_g9Wg3hfMRBuun10FN3SrJs8,886
310
+ dstack/_internal/server/routers/logs.py,sha256=_Euk283LbhlwHibJTKM-7YcpbeQFtWBqMfbOry3PSkU,1159
307
311
  dstack/_internal/server/routers/metrics.py,sha256=WEICSvIbs1-8zCgxF9WqgsR_9p0afDX_HjNW4-1LCOk,1581
308
312
  dstack/_internal/server/routers/pools.py,sha256=3NnwGQVLp5GFMypaXNKFqPjop746EEi4LSPMmx5NKek,4889
309
313
  dstack/_internal/server/routers/projects.py,sha256=0R-w_6WXUbNo6fREAexFUQ3RoOJF2D_Iz35elKjym14,2717
@@ -331,32 +335,31 @@ dstack/_internal/server/schemas/volumes.py,sha256=9iwaQLMhA6aj9XmtdU_9jWVhpzNOtF
331
335
  dstack/_internal/server/security/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
332
336
  dstack/_internal/server/security/permissions.py,sha256=K756I8fnBLBrq4PZwz1ttt74HI0UWBSmjaIfMHN5d1s,4425
333
337
  dstack/_internal/server/services/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
334
- dstack/_internal/server/services/config.py,sha256=b7m2wkVjtXDR46WMgYLw2uun9orM9lxXjnDp53oeASM,29525
338
+ dstack/_internal/server/services/config.py,sha256=4X9KCh7Gta3WrB735YuVt7aNlH5m7G-ULRBSwHatXOo,29955
335
339
  dstack/_internal/server/services/docker.py,sha256=3EcYPiVsrNBGDQYOb60QJ241mzTT6lJROYQXIwt-8dk,5351
336
- dstack/_internal/server/services/fleets.py,sha256=1b63NYpx4QMa1TaMZDEQxawpdrRLstFN5xUCPbm2_m8,28779
340
+ dstack/_internal/server/services/fleets.py,sha256=h5LL8FGOZMOl0kzLycP36U6k3SWl_bSnSn7oFg8ubQY,28980
337
341
  dstack/_internal/server/services/locking.py,sha256=UV5kc-BgROBuNDpBrp8jkcf-fHPOpHLc8JufL-8mbN8,2453
338
342
  dstack/_internal/server/services/logging.py,sha256=Nu1628kW2hqB__N0Eyr07wGWjVWxfyJnczonTJ72kSM,417
339
- dstack/_internal/server/services/logs.py,sha256=53pymPDaM9-xXHFzCyEHdvM49JPTpsLI2aPTSP5zaPo,20090
340
343
  dstack/_internal/server/services/metrics.py,sha256=_YmAQ_oCzzklgk_O5iSJDZJhRk9rBqx8REkPcRQUTAo,3490
341
- dstack/_internal/server/services/offers.py,sha256=gHE7HM_6EdOkAVL35Eclh5INbtLRtaanw1kTd9is48A,6926
344
+ dstack/_internal/server/services/offers.py,sha256=GIaICztEu4zbcpIGHvNsfMVYmPvoYg5zcQ0apHNdgBw,6954
342
345
  dstack/_internal/server/services/permissions.py,sha256=l7Ngdelmn65vjw13NcOdaC6lBYMRuSw6FbHzYwdK3nE,1005
343
346
  dstack/_internal/server/services/placement.py,sha256=DWZ8-iAE3o0J0xaHikuJYZzpuBiq7lj41LiAP1PfoEs,1773
344
- dstack/_internal/server/services/pools.py,sha256=ZJGZT2AtOxgm0m0BaSVdynelGXzr4Y0rRcH3BdyG_w4,28874
347
+ dstack/_internal/server/services/pools.py,sha256=-lF9jrAosNpRxRG3PnbzLWgwPFidGFccjF7tgKyC67A,28911
345
348
  dstack/_internal/server/services/projects.py,sha256=HWOnFOC6LmvbjDzRKADv7tXKIDWthbO11zrsHU7vkew,14709
346
349
  dstack/_internal/server/services/repos.py,sha256=f9ztN7jz_2gvD9hXF5sJwWDVyG2-NHRfjIdSukowPh8,9342
347
350
  dstack/_internal/server/services/runs.py,sha256=3m9oYKq08QQF1GlaOa6_2nYp9SMYoqvfjVnO3-fpTGY,36045
348
351
  dstack/_internal/server/services/storage.py,sha256=6I0xI_3_RpJNbKZwHjDnjrEwXGdHfiaeb5li15T-M1I,1884
349
352
  dstack/_internal/server/services/users.py,sha256=L-exfxHdhj3TKX-gSjezHrYK6tnrt5qsQs-zZng1tUI,7123
350
- dstack/_internal/server/services/volumes.py,sha256=GMHUlSjeiIc9LSWKes-ZPRKgyvWD6y1VT8w6mH-URtg,12635
353
+ dstack/_internal/server/services/volumes.py,sha256=UX-fqC3c240aG6EbdtVsXrJQbkF0O06IFZNtg6bA_tE,14551
351
354
  dstack/_internal/server/services/backends/__init__.py,sha256=Q8Ju0Shf2RAlIdi1CapJNUKOdUAFeRnxhNYti6GZiww,14923
352
355
  dstack/_internal/server/services/backends/handlers.py,sha256=j-MhBxrpdepoDG7f2tApjFnE23RVO5I15-hxHyOWnew,3251
353
356
  dstack/_internal/server/services/backends/configurators/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
354
- dstack/_internal/server/services/backends/configurators/aws.py,sha256=NVwLd9Ww0S0gFT1A2BqwMxItXJVwkKkVd1kg0HiQhXc,7899
357
+ dstack/_internal/server/services/backends/configurators/aws.py,sha256=PyyzH38rIQd7xM7tGnQjqtybcvdFNvqhZf6EIqiWvW0,9175
355
358
  dstack/_internal/server/services/backends/configurators/azure.py,sha256=AANl9dp4RmNT9Q_-ipcLDFp7w5F_-gIxogLthAJWqZY,20206
356
359
  dstack/_internal/server/services/backends/configurators/base.py,sha256=GHS0eBCRptdfZN1xISqPgOEt46oYK6C9Hpb3b_c0OtA,2433
357
360
  dstack/_internal/server/services/backends/configurators/cudo.py,sha256=o5KIXuJLFfzoeUqAivvMhwLy4GWDbKR6E1J9egP8T9g,3102
358
361
  dstack/_internal/server/services/backends/configurators/datacrunch.py,sha256=9rZPns9GwHywXsBFh47sa3IAnh0h7U92SLlHQD1Mj9s,2849
359
- dstack/_internal/server/services/backends/configurators/gcp.py,sha256=Rf5vjaJx_V0_h8vP93KOOKAUTBaKJoVUL3WZmxm-7yU,8970
362
+ dstack/_internal/server/services/backends/configurators/gcp.py,sha256=EuwwcucFxLgffk58TvH-GYI39gOn4h2_Wz-fi91Jhao,8839
360
363
  dstack/_internal/server/services/backends/configurators/kubernetes.py,sha256=HtZQfxTrCf23fn3QX36Z5RNUo78edr00xxgcUJKVulk,2518
361
364
  dstack/_internal/server/services/backends/configurators/lambdalabs.py,sha256=yVFOnKTplxl-rGDUVUDUG5R5sl1qmxQwImdnaSoNqf0,3325
362
365
  dstack/_internal/server/services/backends/configurators/nebius.py,sha256=tPch1yC4Tftli-rqt36I4HfYjfvwYRP_irrBJFHdhHY,3240
@@ -374,25 +377,30 @@ dstack/_internal/server/services/gateways/__init__.py,sha256=ceTzXRWu-pVghze9New
374
377
  dstack/_internal/server/services/gateways/client.py,sha256=1PH9gUjRkHegp37B27pjBVoPFk64KjxcE30eEPBTLM0,7321
375
378
  dstack/_internal/server/services/gateways/connection.py,sha256=ot3lV85XdmCT45vBWeyj57nLPcLPNm316zu3jMyeWjA,5625
376
379
  dstack/_internal/server/services/gateways/pool.py,sha256=0LclTl1tyx-doS78LeaAKjr-SMp98zuwh5f9s06JSd0,1914
377
- dstack/_internal/server/services/jobs/__init__.py,sha256=17TOvwep41_LrvaemVU8v5LK07vpjGDqbSNsRVBZz8E,25185
380
+ dstack/_internal/server/services/jobs/__init__.py,sha256=euq5U73vEGWxDmNASHjnZpWRc5Kp2Dpgy_opMwUDeeU,25444
378
381
  dstack/_internal/server/services/jobs/configurators/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
379
382
  dstack/_internal/server/services/jobs/configurators/base.py,sha256=I21dp1P9XC49NNJL_bfihwXfhFd6G-yQXYFYk-EJPEI,10306
380
- dstack/_internal/server/services/jobs/configurators/dev.py,sha256=2EEtfOpNXP5d9b3ZErE3dA3Co8aAAv1fbx9wAjRZpGY,2018
383
+ dstack/_internal/server/services/jobs/configurators/dev.py,sha256=_QOExS0ifCZMp4hLYaCuyb-ASQgAegpDguGWNdF_TUA,1953
381
384
  dstack/_internal/server/services/jobs/configurators/service.py,sha256=FOWrLE-6YFSMuGqjOwYTLMV4FuIM5lCMDFjS0l0CoLI,929
382
- dstack/_internal/server/services/jobs/configurators/task.py,sha256=ojCgdMyGak8u00tdu-th6U6w0pGRENV1mPtajwzeA_s,1502
385
+ dstack/_internal/server/services/jobs/configurators/task.py,sha256=0-B3oO-61Eq4-mmlLmqJPliFKHhvvIV0tqc12slcQuA,1436
383
386
  dstack/_internal/server/services/jobs/configurators/extensions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
384
387
  dstack/_internal/server/services/jobs/configurators/extensions/base.py,sha256=xJbHxaaSJ1zjn8zuuApP1Xt2uBaedPhhc-IY0NtDDJQ,418
385
388
  dstack/_internal/server/services/jobs/configurators/extensions/vscode.py,sha256=DAj8OEVLyL1x8Jko2EXKhnAkcSnlO1sJk6o6eiiVkDI,1611
389
+ dstack/_internal/server/services/logs/__init__.py,sha256=NAjO1KeYvuDznN2EkfAaJt9S6Y00fo_dl3ob3WmsdGQ,3088
390
+ dstack/_internal/server/services/logs/aws.py,sha256=949k8t9H9v_-aedDjDWkw8yPVyhZemmsszcDDEL5Tb4,13711
391
+ dstack/_internal/server/services/logs/base.py,sha256=7eCB6SPF9iWviv4vZ_34SvfM_Bvi9DeVj1t7TxmrXKs,1273
392
+ dstack/_internal/server/services/logs/filelog.py,sha256=2IAFQgLf5NwA1NTibe3ybn47TEddgUKZ_7b4B4yiQOY,3856
393
+ dstack/_internal/server/services/logs/gcp.py,sha256=xV-BJ4NcU8bRVAEXa0dmdYpqNy93dIKC6axo0viQi5c,6867
386
394
  dstack/_internal/server/services/proxy/__init__.py,sha256=aklmvGaGXISztQft-nH8R98WRU6x_L0Fx3RwVDhwt3g,85
387
395
  dstack/_internal/server/services/proxy/auth.py,sha256=AVhDCnk9KvxJ7Jsd8Xmotl_29V4lNuBw8mQNBhx90Ws,485
388
396
  dstack/_internal/server/services/proxy/deps.py,sha256=u4dHHKBlTgC8Fnnl3onErgE1HGKFwyZTwvq0uT6IdQ4,846
389
397
  dstack/_internal/server/services/proxy/repo.py,sha256=2Uy90hFeLlQBqqId9Y2tn4mJO3bie9v6FdVP0y5Z9UU,7195
390
398
  dstack/_internal/server/services/proxy/routers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
391
- dstack/_internal/server/services/proxy/routers/service_proxy.py,sha256=8rsuenv9LUlFJghV8Ly4vewGmc4pDdVTyuU0xiNLuVQ,1581
399
+ dstack/_internal/server/services/proxy/routers/service_proxy.py,sha256=5oB-SX8f_f32tTs5aJe9ZuMycHAyVTQDO9xJcFmUKCs,1953
392
400
  dstack/_internal/server/services/proxy/services/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
393
401
  dstack/_internal/server/services/proxy/services/service_proxy.py,sha256=4JrSxHqhBYqU1oENii89Db-bzkFWExYrOy-0mNEhWBs,4879
394
402
  dstack/_internal/server/services/runner/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
395
- dstack/_internal/server/services/runner/client.py,sha256=eIMQkyB-2RBA220zBfif74-lHYSQ5nA5WAdvW9dcvuE,14804
403
+ dstack/_internal/server/services/runner/client.py,sha256=lQBQoUIMtKviSSQV9rx8VKfWXlRswGJOEI0TF7QV_oA,14961
396
404
  dstack/_internal/server/services/runner/ssh.py,sha256=H-X0015ZPwYq5tc31ytFF1uNaUAr9itAsABI2oPJWrk,5017
397
405
  dstack/_internal/server/services/services/__init__.py,sha256=-kbk6Qb0mGImhNtYhG7JRsmyc0rKGl0A4rRuN1Wq2bA,10617
398
406
  dstack/_internal/server/services/services/autoscalers.py,sha256=0o_w9La-ex_P3VKG88w_XN3hkLkzryv5l1cH3pkZyAE,4315
@@ -422,10 +430,10 @@ dstack/_internal/server/statics/e467d7d60aae81ab198b.svg,sha256=_XHc9mfQZgGkcy4h
422
430
  dstack/_internal/server/statics/eb9b344b73818fe2b71a.png,sha256=2H14eOCQRyZhFGJ1Kn2LH1j70kTF1Qop4vH-tiKqyPI,85
423
431
  dstack/_internal/server/statics/f517dd626eb964120de0.png,sha256=4QQuNa8SqmcZ67HK6739OHCyjnAJseU1bkcn454KRQs,159
424
432
  dstack/_internal/server/statics/f958aecddee5d8e3222c.png,sha256=8CoZkVNgRfOAe62X1dU-AZDvwh_nESKaQblEmaX2Xrs,87
425
- dstack/_internal/server/statics/index.html,sha256=muVBl2rWgBSginZYqpj6UUYul4uP5yn3-17Im1aEdyM,10468
426
- dstack/_internal/server/statics/main-2ac66bfcbd2e39830b88.js,sha256=-Wm36zACnQ7vd0xw1HVxiJ_mD1U-FbCMJqR-pY5vNcQ,6203467
427
- dstack/_internal/server/statics/main-2ac66bfcbd2e39830b88.js.map,sha256=TpUtWdd0O_j1Ylrw9950x2F9CL-ZsovzXWD4M74Qy1w,8137484
428
- dstack/_internal/server/statics/main-ad5150a441de98cd8987.css,sha256=yI_fXTjWkI4AxHPG0NnFIAJbcX1kzLskED0wt2h0HuI,1296028
433
+ dstack/_internal/server/statics/index.html,sha256=3BqqXx8k6XRP4kYKcj-4h0EnhHTA6HcXcmijuEzqseQ,10468
434
+ dstack/_internal/server/statics/main-7510e71dfa9749a4e70e.css,sha256=crBuXqMqHxjUBz4ESOQLtRzot_irn6zYrZLf8Uj7gSk,1296121
435
+ dstack/_internal/server/statics/main-fe8fd9db55df8d10e648.js,sha256=DYwOYAwdEz8wUbv7GVGuDFwC2zAZg5qKEwKI1_R5dlE,6192701
436
+ dstack/_internal/server/statics/main-fe8fd9db55df8d10e648.js.map,sha256=K0gwTM9IZBYSuRFFPDWOSior62dC40TbdBH6D2n6bos,8122346
429
437
  dstack/_internal/server/statics/manifest.json,sha256=430w2BoWVmYYVr14lDvUxx-ROPt3VjigzeMqfLeiSCM,340
430
438
  dstack/_internal/server/statics/robots.txt,sha256=kNJLw79pisHhc3OVAimMzKcq3x9WT6sF9IS4xI0crdI,67
431
439
  dstack/_internal/server/statics/assets/android-chrome-144x144.png,sha256=tB3V-95O-VVEoawN5V1XFoMQRSK0I6gthraV8bATGaw,23414
@@ -502,7 +510,7 @@ dstack/_internal/server/statics/static/media/logo.f602feeb138844eda97c8cb6414614
502
510
  dstack/_internal/server/statics/static/media/okta.12f178e6873a1100965f2a4dbd18fcec.svg,sha256=KqFI05gQM135zC1plF1WBRF2F7CyKL7km97WKsZjAHI,319
503
511
  dstack/_internal/server/statics/static/media/theme.3994c817bb7dda191c1c9640dee0bf42.svg,sha256=ZxFFBVZWuRLqmWH4zhwGLNtKjOzHj-5MGJRunFAtu1I,561
504
512
  dstack/_internal/server/testing/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
505
- dstack/_internal/server/testing/common.py,sha256=lEvvOOZbKhxKHI1EZGEz9p_aGj3von2NLiHmaQd1cDk,28873
513
+ dstack/_internal/server/testing/common.py,sha256=LKoH9pD9cJoy3JsEbP4nureES_-PBw-wg685vZVx0Rs,29614
506
514
  dstack/_internal/server/testing/conf.py,sha256=-zhujfFjTHNfQDOK-hBck32By11c_kC0OeinB3esQGg,1902
507
515
  dstack/_internal/server/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
508
516
  dstack/_internal/server/utils/common.py,sha256=PbjXtqYy1taKXpyG5ys8cIrz9MXqc9dBAsR_9D1brrk,1414
@@ -529,7 +537,7 @@ dstack/api/_public/backends.py,sha256=IBeotauJzlte379LzRM6ByZCl_98QemGZsm3p_WX98
529
537
  dstack/api/_public/pools.py,sha256=wlTai0px6aQNeKyL-6nOil6DCj-GdozqqDGmnTg4ubw,1033
530
538
  dstack/api/_public/repos.py,sha256=LYWy1W3Z-2y_D82Jln6YzU2F_asPULGJq1GM9HAAMIc,6173
531
539
  dstack/api/_public/resources.py,sha256=lTQM2nb7_QB2RCwmpQlBkYkpiN_aWjgF78wI7Op_RlQ,2947
532
- dstack/api/_public/runs.py,sha256=3527ziltD9UNTDPMkaHHUXXQog2VLFXKQ0zgmRsnCb4,24718
540
+ dstack/api/_public/runs.py,sha256=wYxIlEKVHr-b1X-gUC1achBq-v1LNRBtP5Vg5mtnhGc,24719
533
541
  dstack/api/huggingface/__init__.py,sha256=oIrEij3wttLZ1yrywEGvCMd6zswMQrX5pPjrqdSi0UA,2201
534
542
  dstack/api/server/__init__.py,sha256=1Sw1bB8NItIFWlL1bdeUN1Tuwu3uaYOJWFrg1c4VULY,5801
535
543
  dstack/api/server/_backends.py,sha256=mMePYgFMHAUma3Gycx54VsaxAL_IFhBRcI4H4eWWMg0,1908
@@ -567,6 +575,8 @@ tests/_internal/core/backends/aws/test_resources.py,sha256=0Qz9YVjN874UWaZPFkVX9
567
575
  tests/_internal/core/backends/azure/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
568
576
  tests/_internal/core/backends/azure/test_compute.py,sha256=PkckOfdGyVjOfqbE0uOUD92MlltKXxkAw0Wu1IbOVMQ,2134
569
577
  tests/_internal/core/backends/azure/test_resources.py,sha256=Bi3g0BgtOiTMC1vuU7rtELsey5E-5jmB30vk-jEJF9M,1715
578
+ tests/_internal/core/backends/base/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
579
+ tests/_internal/core/backends/base/test_compute.py,sha256=LkeECcBu5SPNbysLHJWDGS_8mTbSZ1L5-ZD0Dh4Fv18,2118
570
580
  tests/_internal/core/backends/gcp/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
571
581
  tests/_internal/core/backends/gcp/test_resources.py,sha256=7nkVM9w-cVZov1M6SmOKm5W-JhooQCIgph4i-MGZx3c,1638
572
582
  tests/_internal/core/backends/kubernetes/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -603,7 +613,7 @@ tests/_internal/proxy/lib/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJW
603
613
  tests/_internal/proxy/lib/routers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
604
614
  tests/_internal/proxy/lib/routers/test_model_proxy.py,sha256=xPCQ9MGBNvRH8rhKZkvkcugxPzluySgErWXE3QsoPjg,8926
605
615
  tests/_internal/server/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
606
- tests/_internal/server/conftest.py,sha256=jUinigvS7Ryy-9hGzTIBkgm8vs55m_y1VLa9edEhrp4,1491
616
+ tests/_internal/server/conftest.py,sha256=5FbBihFl5tznVw0XjwSqI5P32jV12_i75UBt80V7wxo,1522
607
617
  tests/_internal/server/test_app.py,sha256=nIDp8nlWBaW6yQRhGtQZAwOVM55maF8vLw1YqYXIUTQ,605
608
618
  tests/_internal/server/test_migrations.py,sha256=8MV1uVSCY-UG_dG6M4a7ekSsGi9CqHjobopc-H5-WKg,2107
609
619
  tests/_internal/server/background/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -613,31 +623,32 @@ tests/_internal/server/background/tasks/test_process_gateways.py,sha256=h7jzDFQp
613
623
  tests/_internal/server/background/tasks/test_process_instances.py,sha256=-ATbgOT8XAeqGmPn4XPlSJzxnrm0haAJhX13nWOBOtM,24816
614
624
  tests/_internal/server/background/tasks/test_process_metrics.py,sha256=eirq386mVZqX_PqctuX7CxO38Prwy8RH2UesYXo3CnQ,5083
615
625
  tests/_internal/server/background/tasks/test_process_placement_groups.py,sha256=shHqZvS8QoNwQe8J29-aHk2X2HqX-gsxcQiZevU8yuY,1528
616
- tests/_internal/server/background/tasks/test_process_running_jobs.py,sha256=HrFPqsKJDTxaxj5Gounpqsx1Vr91-OrQ3-1c4PnfKNI,25483
626
+ tests/_internal/server/background/tasks/test_process_running_jobs.py,sha256=XzbP5WIJtgYSm7xcjPwuw6uAVAUrxVduO2nrjdmkQV4,25542
617
627
  tests/_internal/server/background/tasks/test_process_runs.py,sha256=Yv6f2CDZ-ejDGo7uOKyyAGxYLsvqyjNo4Zw1cCQbjgM,14489
618
- tests/_internal/server/background/tasks/test_process_submitted_jobs.py,sha256=XBgVD2DEzjh2dVj18qAYmRP6DDNnx6YINUbZOtVQT8M,24325
628
+ tests/_internal/server/background/tasks/test_process_submitted_jobs.py,sha256=Sf4aDa1ZYw5Sz3xAw8K0hoI-VDesv7Ew3gZdAzQvj_4,24451
619
629
  tests/_internal/server/background/tasks/test_process_submitted_volumes.py,sha256=njfRDdDzVtDL8rech_004Wf5z5PpoQVWFufKh1yUyYY,2171
620
- tests/_internal/server/background/tasks/test_process_terminating_jobs.py,sha256=85X-HD9HHBduTxOBfiTDgwVOOwoMDxjfioT8SfWUrmA,13899
630
+ tests/_internal/server/background/tasks/test_process_terminating_jobs.py,sha256=VZsfP1NVxkcLSNWfEXDFe_vQZUQfuG0B5i-krXKP_IQ,14147
621
631
  tests/_internal/server/routers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
622
- tests/_internal/server/routers/test_backends.py,sha256=4bY8oMMKB3xIRWUfVIUcI4dhDz1ukcpEeWOLllxmPUw,65231
632
+ tests/_internal/server/routers/test_backends.py,sha256=d95ZS97zSRHdmmDTxIPzYQWU-hb2_DvlNo2lcF0NNzw,65273
623
633
  tests/_internal/server/routers/test_fleets.py,sha256=ap3Jjg2iiwuklosu2_-xx-cJBlM6uZN5CQfGudORPf0,35105
624
634
  tests/_internal/server/routers/test_gateways.py,sha256=bb0pzm7uu1X3V8755b7ZZUHPSLk0Rd6CjoMCdionWVA,23535
625
635
  tests/_internal/server/routers/test_instances.py,sha256=BAWSCjXhe4N1px6BvPEcdAKrQHL5CkrHWvuGrzPRapc,9516
626
- tests/_internal/server/routers/test_logs.py,sha256=ADugQZhT2wvZlhnTQUaSkUFbL-kpW2s0qf29onxH7vA,3981
636
+ tests/_internal/server/routers/test_logs.py,sha256=NZwyJlgjMOGq4XEx7-VDjTpniYPhZpsbZvB0dTawaog,3989
627
637
  tests/_internal/server/routers/test_metrics.py,sha256=NSdb_x_1Nwsqgrf6KXBf257qd29CXcSN30yk_BQx2CE,5923
628
638
  tests/_internal/server/routers/test_pools.py,sha256=QQ00pqFVUCo1bSfwWcA2UztyI6Fr0bfU1rj_TnEnVG0,25275
629
639
  tests/_internal/server/routers/test_projects.py,sha256=Pa_YL9lYhYt06TFmuZFEf9pxc-K3fM9L29ULf4gCELw,23950
630
640
  tests/_internal/server/routers/test_repos.py,sha256=4O4mCDlAPh8xJU_XWtwLhFWRkoTxXvZC1N2DLPyz2AI,17225
631
- tests/_internal/server/routers/test_runs.py,sha256=t6tuvN8JHKSKgd_PRTlPo3VzsJ3aE_EmW9f8cczxQ4M,71547
641
+ tests/_internal/server/routers/test_runs.py,sha256=bwp0SGzD83IyIYg_nXwGOsG9VUt8G8YRYPhIiJTh48k,71547
632
642
  tests/_internal/server/routers/test_server.py,sha256=ROkuRNNJEkMQuK8guZ3Qy3iRRfiWvPIJJJDc09BI0D4,489
633
643
  tests/_internal/server/routers/test_users.py,sha256=5QSLvfn9SroGsZoBGmSTEaaqJcdEO8EUUy_YuvLL8ss,12787
634
- tests/_internal/server/routers/test_volumes.py,sha256=4nv7ba9VkjbYFyYyQmO0coyav_Z9x5t_ayoiyKmvXVw,15947
644
+ tests/_internal/server/routers/test_volumes.py,sha256=fVv7sVo9POFImal9Mlkaw8CJOAR67S_eYHxIReHebBU,16241
635
645
  tests/_internal/server/services/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
636
646
  tests/_internal/server/services/test_config.py,sha256=KfPyYSSsLaQszBAgqYeM2Tt5YkRiV-at0ik86ecdrtE,5168
637
647
  tests/_internal/server/services/test_docker.py,sha256=QsnoVJUnvzcd1Tpw0UtKXtDSCr9nh_jmtVSkOi7J4ug,5628
638
648
  tests/_internal/server/services/test_fleets.py,sha256=WqK9Bs3Nfew45n4WunZhvIvCw0VHJ2w5t0-4CakxFgU,8222
639
- tests/_internal/server/services/test_logs.py,sha256=QmaI07u9O0czwH8J2eZO3mOYnutAtIrDTUrF9CJLdwU,29647
640
- tests/_internal/server/services/test_pools.py,sha256=xbmrLoLlCxahnRhNUxvZNv2-u_JOOUXs5v1UKLJ_xlo,3719
649
+ tests/_internal/server/services/test_logs.py,sha256=z1t2rKe-egRLfK78sH6SCMB2ULwh3F8XgaB1np6qb88,29754
650
+ tests/_internal/server/services/test_offers.py,sha256=t0nQNjjm-fvIqHIOA_99hokrdTXwpYrgzjaQjqJXs8w,7814
651
+ tests/_internal/server/services/test_pools.py,sha256=aPF4R6_VCeDR4AcjQ0H2J1BKivoVs-JUNQBJZ-IYdPg,7436
641
652
  tests/_internal/server/services/test_repos.py,sha256=o2D0xmOPYaiwDq6nNJNtqYMSuSz_xKJ_ZChVOvWIhJY,14289
642
653
  tests/_internal/server/services/test_runs.py,sha256=8frDxa3NTJzXir6fJTXRLm_0B_jUd36qV66DgHvRdDU,9289
643
654
  tests/_internal/server/services/encryption/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -651,7 +662,7 @@ tests/_internal/server/services/proxy/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCe
651
662
  tests/_internal/server/services/proxy/routers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
652
663
  tests/_internal/server/services/proxy/routers/test_service_proxy.py,sha256=cGyBwfSgT268CRhkgpTEIM3O1U9z8tSNTYjHQrn3e0E,9843
653
664
  tests/_internal/server/services/runner/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
654
- tests/_internal/server/services/runner/test_client.py,sha256=LRJzmyMOGtURc-S4uICfhHjO2K0fxvCa--yXflnoTDM,16212
665
+ tests/_internal/server/services/runner/test_client.py,sha256=azCFqMipDCEhoTy4pjq3L5me4SD-mk0ldHTEQ6N6uu8,16855
655
666
  tests/_internal/server/services/services/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
656
667
  tests/_internal/server/services/services/test_autoscalers.py,sha256=YMi4W5gKFOpEdutc2Fli1L1DIUxCJLHE7ji-CJoiVac,3986
657
668
  tests/_internal/server/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -667,9 +678,9 @@ tests/_internal/utils/test_path.py,sha256=rzS-1YCxsFUocBe42dghLOMFNymPruGrA7bqFZ
667
678
  tests/_internal/utils/test_ssh.py,sha256=V-cBFPhD--9eM9d1uQQgpj2gnYLA3c43f4cX9uJ6E-U,1743
668
679
  tests/api/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
669
680
  tests/api/test_utils.py,sha256=SSSqHcNE5cZVqDq4n2sKZthRoXaZ_Bx7z1AAN5xTM9s,391
670
- dstack-0.18.41.dist-info/LICENSE.md,sha256=qDABaRGjSKVOib1U8viw2P_96sIK7Puo426784oD9f8,15976
671
- dstack-0.18.41.dist-info/METADATA,sha256=DyUee2y4XQJ8iDBDiDonQQIaqp-VfU9s_IV2Jfg4F2s,17690
672
- dstack-0.18.41.dist-info/WHEEL,sha256=tZoeGjtWxWRfdplE7E3d45VPlLNQnvbKiYnx7gwAy8A,92
673
- dstack-0.18.41.dist-info/entry_points.txt,sha256=GnLrMS8hx3rWAySQjA7tPNhtixV6a-brRkmal1PKoHc,58
674
- dstack-0.18.41.dist-info/top_level.txt,sha256=3BrIO1zrqxT9P20ymhRM6k15meZXzbPL6ykBlDZG2_k,13
675
- dstack-0.18.41.dist-info/RECORD,,
681
+ dstack-0.18.43.dist-info/LICENSE.md,sha256=qDABaRGjSKVOib1U8viw2P_96sIK7Puo426784oD9f8,15976
682
+ dstack-0.18.43.dist-info/METADATA,sha256=3xpGQbB7LyD6cW0q9f9y-VqJEzyi_HlhHbtCenaEdng,17769
683
+ dstack-0.18.43.dist-info/WHEEL,sha256=tZoeGjtWxWRfdplE7E3d45VPlLNQnvbKiYnx7gwAy8A,92
684
+ dstack-0.18.43.dist-info/entry_points.txt,sha256=GnLrMS8hx3rWAySQjA7tPNhtixV6a-brRkmal1PKoHc,58
685
+ dstack-0.18.43.dist-info/top_level.txt,sha256=3BrIO1zrqxT9P20ymhRM6k15meZXzbPL6ykBlDZG2_k,13
686
+ dstack-0.18.43.dist-info/RECORD,,
File without changes
@@ -0,0 +1,56 @@
1
+ import re
2
+
3
+ from dstack._internal.core.backends.base.compute import (
4
+ generate_unique_backend_name,
5
+ generate_unique_gateway_instance_name,
6
+ generate_unique_instance_name,
7
+ generate_unique_volume_name,
8
+ )
9
+ from dstack._internal.server.testing.common import (
10
+ get_gateway_compute_configuration,
11
+ get_instance_configuration,
12
+ get_volume,
13
+ )
14
+
15
+
16
+ class TestGenerateUniqueInstanceName:
17
+ def test_generates_name(self):
18
+ configuration = get_instance_configuration(
19
+ project_name="project1", instance_name="my-instance"
20
+ )
21
+ name = generate_unique_instance_name(configuration, 60)
22
+ assert re.match(r"^dstack-project1-my-instance-[a-z0-9]{8}$", name)
23
+
24
+
25
+ class TestGenerateUniqueGatewayInstanceName:
26
+ def test_generates_name(self):
27
+ configuration = get_gateway_compute_configuration(
28
+ project_name="project1", instance_name="my-gateway"
29
+ )
30
+ name = generate_unique_gateway_instance_name(configuration, 60)
31
+ assert re.match(r"^dstack-project1-my-gateway-[a-z0-9]{8}$", name)
32
+
33
+
34
+ class TestGenerateUniqueVolumeName:
35
+ def test_generates_name(self):
36
+ volume = get_volume(project_name="project1", name="my-volume")
37
+ name = generate_unique_volume_name(volume, 60)
38
+ assert re.match(r"^dstack-project1-my-volume-[a-z0-9]{8}$", name)
39
+
40
+
41
+ class TestGenerateUniqueBackendName:
42
+ def test_generates_name_with_project(self):
43
+ name = generate_unique_backend_name("instance", "project", 60)
44
+ assert re.match(r"^dstack-project-instance-[a-z0-9]{8}$", name)
45
+
46
+ def test_generates_name_without_project(self):
47
+ name = generate_unique_backend_name("instance", None, 60)
48
+ assert re.match(r"^dstack-instance-[a-z0-9]{8}$", name)
49
+
50
+ def test_truncates_long_names(self):
51
+ name = generate_unique_backend_name("a" * 100, "project", 30)
52
+ assert re.match(r"^dstack-project-aaaaaa-[a-z0-9]{8}$", name)
53
+
54
+ def test_validates_project_name(self):
55
+ name = generate_unique_backend_name("instance", "invalid_project!@", 60)
56
+ assert re.match(r"^dstack-instance-[a-z0-9]{8}$", name)
@@ -335,7 +335,7 @@ class TestProcessRunningJobs:
335
335
  name="test-run-0-0",
336
336
  registry_username="",
337
337
  registry_password="",
338
- image_name="dstackai/base:py3.13-0.6-cuda-12.1",
338
+ image_name="dstackai/base:py3.13-0.7-cuda-12.1",
339
339
  container_user="root",
340
340
  privileged=privileged,
341
341
  gpu=None,
@@ -349,6 +349,7 @@ class TestProcessRunningJobs:
349
349
  host_ssh_user="ubuntu",
350
350
  host_ssh_keys=["user_ssh_key"],
351
351
  container_ssh_keys=[project_ssh_pub_key, "user_ssh_key"],
352
+ instance_id=job_provisioning_data.instance_id,
352
353
  )
353
354
  await session.refresh(job)
354
355
  assert job is not None
@@ -27,7 +27,7 @@ from dstack._internal.core.models.volumes import (
27
27
  VolumeStatus,
28
28
  )
29
29
  from dstack._internal.server.background.tasks.process_submitted_jobs import process_submitted_jobs
30
- from dstack._internal.server.models import InstanceModel, JobModel
30
+ from dstack._internal.server.models import InstanceModel, JobModel, VolumeAttachmentModel
31
31
  from dstack._internal.server.testing.common import (
32
32
  create_fleet,
33
33
  create_instance,
@@ -515,7 +515,9 @@ class TestProcessSubmittedJobs:
515
515
  await session.refresh(instance)
516
516
  res = await session.execute(
517
517
  select(JobModel).options(
518
- joinedload(JobModel.instance).selectinload(InstanceModel.volumes)
518
+ joinedload(JobModel.instance)
519
+ .joinedload(InstanceModel.volume_attachments)
520
+ .joinedload(VolumeAttachmentModel.volume)
519
521
  )
520
522
  )
521
523
  job = res.unique().scalar_one()
@@ -523,7 +525,7 @@ class TestProcessSubmittedJobs:
523
525
  assert (
524
526
  job.instance_assigned and job.instance is not None and job.instance.id == instance.id
525
527
  )
526
- assert job.instance.volumes == [volume]
528
+ assert job.instance.volume_attachments[0].volume == volume
527
529
 
528
530
  @pytest.mark.asyncio
529
531
  @pytest.mark.parametrize("test_db", ["sqlite", "postgres"], indirect=True)