dstack 0.19.33__py3-none-any.whl → 0.19.35__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 (56) hide show
  1. dstack/_internal/cli/services/configurators/run.py +1 -1
  2. dstack/_internal/core/backends/base/compute.py +20 -1
  3. dstack/_internal/core/backends/base/models.py +10 -0
  4. dstack/_internal/core/backends/base/offers.py +4 -1
  5. dstack/_internal/core/backends/features.py +5 -0
  6. dstack/_internal/core/backends/gcp/compute.py +24 -9
  7. dstack/_internal/core/backends/gcp/models.py +4 -1
  8. dstack/_internal/core/backends/nebius/compute.py +28 -16
  9. dstack/_internal/core/backends/nebius/configurator.py +1 -1
  10. dstack/_internal/core/backends/nebius/models.py +4 -0
  11. dstack/_internal/core/backends/nebius/resources.py +41 -20
  12. dstack/_internal/core/backends/runpod/api_client.py +245 -59
  13. dstack/_internal/core/backends/runpod/compute.py +161 -14
  14. dstack/_internal/core/compatibility/runs.py +25 -4
  15. dstack/_internal/core/models/compute_groups.py +39 -0
  16. dstack/_internal/core/models/fleets.py +6 -1
  17. dstack/_internal/core/models/instances.py +2 -1
  18. dstack/_internal/core/models/profiles.py +3 -1
  19. dstack/_internal/core/models/runs.py +4 -0
  20. dstack/_internal/core/services/ssh/key_manager.py +56 -0
  21. dstack/_internal/server/app.py +14 -2
  22. dstack/_internal/server/background/__init__.py +7 -0
  23. dstack/_internal/server/background/tasks/process_compute_groups.py +164 -0
  24. dstack/_internal/server/background/tasks/process_instances.py +81 -49
  25. dstack/_internal/server/background/tasks/process_submitted_jobs.py +179 -84
  26. dstack/_internal/server/migrations/env.py +20 -2
  27. dstack/_internal/server/migrations/versions/7d1ec2b920ac_add_computegroupmodel.py +93 -0
  28. dstack/_internal/server/models.py +42 -0
  29. dstack/_internal/server/routers/metrics.py +6 -2
  30. dstack/_internal/server/routers/runs.py +15 -6
  31. dstack/_internal/server/routers/users.py +7 -0
  32. dstack/_internal/server/services/compute_groups.py +22 -0
  33. dstack/_internal/server/services/fleets.py +1 -0
  34. dstack/_internal/server/services/jobs/__init__.py +31 -9
  35. dstack/_internal/server/services/jobs/configurators/base.py +3 -2
  36. dstack/_internal/server/services/offers.py +1 -0
  37. dstack/_internal/server/services/requirements/combine.py +1 -0
  38. dstack/_internal/server/services/runs.py +21 -3
  39. dstack/_internal/server/services/users.py +3 -3
  40. dstack/_internal/server/statics/index.html +1 -1
  41. dstack/_internal/server/statics/{main-97c7e184573ca23f9fe4.js → main-e79754c136f1d8e4e7e6.js} +11 -11
  42. dstack/_internal/server/statics/{main-97c7e184573ca23f9fe4.js.map → main-e79754c136f1d8e4e7e6.js.map} +1 -1
  43. dstack/_internal/server/testing/common.py +55 -0
  44. dstack/_internal/server/utils/routers.py +18 -20
  45. dstack/_internal/settings.py +4 -1
  46. dstack/_internal/utils/version.py +22 -0
  47. dstack/api/_public/__init__.py +2 -2
  48. dstack/api/_public/runs.py +36 -39
  49. dstack/api/server/__init__.py +4 -0
  50. dstack/version.py +1 -1
  51. {dstack-0.19.33.dist-info → dstack-0.19.35.dist-info}/METADATA +4 -4
  52. {dstack-0.19.33.dist-info → dstack-0.19.35.dist-info}/RECORD +55 -50
  53. dstack/_internal/core/backends/nebius/fabrics.py +0 -49
  54. {dstack-0.19.33.dist-info → dstack-0.19.35.dist-info}/WHEEL +0 -0
  55. {dstack-0.19.33.dist-info → dstack-0.19.35.dist-info}/entry_points.txt +0 -0
  56. {dstack-0.19.33.dist-info → dstack-0.19.35.dist-info}/licenses/LICENSE.md +0 -0
@@ -1,8 +1,8 @@
1
1
  dstack/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
- dstack/version.py,sha256=_FEUL4dv2EnNUXCWAEH2UsClkAJ5_z4QOZGhqRl7P-Q,102
2
+ dstack/version.py,sha256=oy6y07NPDywy8QDbWP6gk1Rq2PNa_tUPCEHQir3Te4g,102
3
3
  dstack/_internal/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
4
4
  dstack/_internal/compat.py,sha256=bF9U9fTMfL8UVhCouedoUSTYFl7UAOiU0WXrnRoByxw,40
5
- dstack/_internal/settings.py,sha256=FYtd7tRk17Oc62Kl_3O8NuT5JHb8TKhLThl1TsfjjVs,1390
5
+ dstack/_internal/settings.py,sha256=pyjV-8_5l0WQjoP4TKzNc-3zLRrJ04zQ2x2277Fck6k,1469
6
6
  dstack/_internal/cli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
7
7
  dstack/_internal/cli/main.py,sha256=AZ4TB025U5wpQq3qH5sk9KkOYZCpxMIKqfaLH_Mv0DU,3876
8
8
  dstack/_internal/cli/commands/__init__.py,sha256=5kjow9mYUNTAeN1sItgp9-c5-GikWWSTPknJ5_0CiUk,2529
@@ -33,7 +33,7 @@ dstack/_internal/cli/services/configurators/__init__.py,sha256=AwbKV85_XH0V8IS8v
33
33
  dstack/_internal/cli/services/configurators/base.py,sha256=9mabsRsKHY7xFl8yDRM__FOEQvtEYOn_4KeXKzO6-vA,3244
34
34
  dstack/_internal/cli/services/configurators/fleet.py,sha256=xchLFqHkm0zVs3tEVMlYXd4lGjP_OWzdp3nzqNg7b8k,19374
35
35
  dstack/_internal/cli/services/configurators/gateway.py,sha256=B2aEoVhhRZGk25OekR7BT4eAvAgZGAyVOw7DlSuo2jg,8755
36
- dstack/_internal/cli/services/configurators/run.py,sha256=HGE3LBO6WfWis9ykXsH-3xVBdGk4e5SdIVWmblKQV_k,39404
36
+ dstack/_internal/cli/services/configurators/run.py,sha256=tpIKtpbvl5dQDIlO30WjK5ABc8ki7TsQyNT0fbAkU0Q,39391
37
37
  dstack/_internal/cli/services/configurators/volume.py,sha256=ZeESHttKFERBFysJvSGFC4UXUOLghKlzcilXbL48s-c,8346
38
38
  dstack/_internal/cli/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
39
39
  dstack/_internal/cli/utils/common.py,sha256=xgq2Rdx6wGS1NLx8FlmkjKrGaNYD428oeBB4VMjvJ5c,3447
@@ -50,7 +50,7 @@ dstack/_internal/core/consts.py,sha256=gN6AKBhvR-o6unEH66Kg3Sehqd06TO7uxunSvThvq
50
50
  dstack/_internal/core/errors.py,sha256=VTEmJ6C0zWL3fUL8ObRjB4rNL7_NxwEuWf0hZs6orWo,3377
51
51
  dstack/_internal/core/backends/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
52
52
  dstack/_internal/core/backends/configurators.py,sha256=Fy1FpiS_2aV8IWT1nkCb2CUI7fDVVRK-O2YFcHSpkTo,4573
53
- dstack/_internal/core/backends/features.py,sha256=EA18teMYJ80AohFuoNf7yHs_mMh4O3KaEGGbETI7zQQ,2975
53
+ dstack/_internal/core/backends/features.py,sha256=AtrLzkzfpkqiVOrIOhCwUS5GZFQOlVt9ubym_xq4VWM,3208
54
54
  dstack/_internal/core/backends/models.py,sha256=Msj99dfzw3r6G_tG_SUTcSD-m6fK89fbJm5HTr4Xh1s,4862
55
55
  dstack/_internal/core/backends/amddevcloud/__init__.py,sha256=IMhALdujfNvUdMJklEJ_vMWsjApR1iJWsYT30SNMa4s,72
56
56
  dstack/_internal/core/backends/amddevcloud/backend.py,sha256=aUIOxKzXDDvmPEverL52Nj6zpel2zSZwZo0hTBrb6Pc,724
@@ -73,10 +73,10 @@ dstack/_internal/core/backends/azure/resources.py,sha256=cJWS2Yjxdg-XtjpdBxfVDZa
73
73
  dstack/_internal/core/backends/azure/utils.py,sha256=taHMJq6UHRzUXLUcO2P5VCKy3wJaye2bG-6QdkEPNdY,1741
74
74
  dstack/_internal/core/backends/base/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
75
75
  dstack/_internal/core/backends/base/backend.py,sha256=hdFMHED1RMV9GVfLSU0yGhGE-cXlbLvt1coDA885PMM,505
76
- dstack/_internal/core/backends/base/compute.py,sha256=MEglNP0H9iLi0a88ElRUxVcs1-qtpGEuWkxnrBp4KoA,36018
76
+ dstack/_internal/core/backends/base/compute.py,sha256=7w-nM4a-F7YdfXxQT8gTGVyaDbG6Hkh4GC_eeaefXHs,36645
77
77
  dstack/_internal/core/backends/base/configurator.py,sha256=TKG5iJlOXxVT2agE_ruMW8JGt2dtwXY7ghmJN8bEWlw,4299
78
- dstack/_internal/core/backends/base/models.py,sha256=Ij0osOl-T-ABsKLoVg2eY81DMkwdWkevAnjXj2QnLXI,532
79
- dstack/_internal/core/backends/base/offers.py,sha256=87I7f2Perkc3Gt9tJ4stWvPAP3ZklJNk8XHKAXYaVmg,7555
78
+ dstack/_internal/core/backends/base/models.py,sha256=kT163t_pZX-lbbBMVYoHpbrSnSnOq3j1upXRtRszK4A,797
79
+ dstack/_internal/core/backends/base/offers.py,sha256=UfaGMVVspesRlSCcWSGL7vC8_4Y4sCauE7wnoa6D_EY,7639
80
80
  dstack/_internal/core/backends/cloudrift/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
81
81
  dstack/_internal/core/backends/cloudrift/api_client.py,sha256=mI3_ttwujfSunTiTIelnc1XaLBlfxsKsacrlyB12f8c,8178
82
82
  dstack/_internal/core/backends/cloudrift/backend.py,sha256=Jz3nIQsa3TnMISVXK6EU43O0B7FgIMxwwaEBmd_s5BY,596
@@ -109,9 +109,9 @@ dstack/_internal/core/backends/dstack/models.py,sha256=Jbe0Syez43N5i97TlIc8l-5Vn
109
109
  dstack/_internal/core/backends/gcp/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
110
110
  dstack/_internal/core/backends/gcp/auth.py,sha256=VWCn34hapaZ3E0OHCoiAVL97o3s64RF9w85CZ6xdtmk,2235
111
111
  dstack/_internal/core/backends/gcp/backend.py,sha256=OvTv1c7j4LTPCIEtkwD3-q6Eo1QET8xlM8CzbY0hLmI,572
112
- dstack/_internal/core/backends/gcp/compute.py,sha256=ebax_Yqs0zlDYeYwRtz1tlL0sNZKWM0ieyQNFBA7nbg,51364
112
+ dstack/_internal/core/backends/gcp/compute.py,sha256=rfIGOmaauRXTU-tjc7Krv96Dugq_etHIcuocgEaAx48,51783
113
113
  dstack/_internal/core/backends/gcp/configurator.py,sha256=pA3o5--gKBMLXvlAUIgBL30ayeUBWsLS-xqMljIlzAM,6887
114
- dstack/_internal/core/backends/gcp/models.py,sha256=1g3U1zktb6RkWag7EPcAoSZejkf5lUrMlpos0_WUEus,5489
114
+ dstack/_internal/core/backends/gcp/models.py,sha256=Vcut665e2ErYvnbIrTujA0m_556PxUbbP_ta1Yso6Qo,5555
115
115
  dstack/_internal/core/backends/gcp/resources.py,sha256=a_WlJkDIIlyKd9eSbeHNaAwAo1ZxLHkDUYn4-K_3u_Q,21077
116
116
  dstack/_internal/core/backends/gcp/features/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
117
117
  dstack/_internal/core/backends/gcp/features/tcpx.py,sha256=8bDR5kwF5qke5EWNdBscdbZQnC7oVXKSls3WPcoXgZI,2902
@@ -138,11 +138,10 @@ dstack/_internal/core/backends/local/backend.py,sha256=KJuNXUXrg60NhLywnExD1EXH2
138
138
  dstack/_internal/core/backends/local/compute.py,sha256=tWNsKGKYlPx9yeqwlpAL_XExOYMPLcb6AsGAji3YO3M,3825
139
139
  dstack/_internal/core/backends/nebius/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
140
140
  dstack/_internal/core/backends/nebius/backend.py,sha256=2XqZIbSR8VzlfOnuVklXlDxNmwAkQj7txQN8VXF1j2E,566
141
- dstack/_internal/core/backends/nebius/compute.py,sha256=CzcNNbBsrIA15_Dpb0ubBBEk8r_RONubSLHw5CGxEU4,15443
142
- dstack/_internal/core/backends/nebius/configurator.py,sha256=eybolJi5rlEeU8GBXC7pdOU7To32ASQGHDAiE2cNeFo,3794
143
- dstack/_internal/core/backends/nebius/fabrics.py,sha256=-X-nSPV2pUin2PAYDHGm-j14KPboIFRpLi93PKHUXTM,1616
144
- dstack/_internal/core/backends/nebius/models.py,sha256=OSiUANBf893Xdm7-4WDoPfmd3YFk5-oRjdXiWUjvDdk,6194
145
- dstack/_internal/core/backends/nebius/resources.py,sha256=MVyMaS0-mZu2g-tJ4HF7GiT1hFFL7Mha9hXtP3XeT7o,14070
141
+ dstack/_internal/core/backends/nebius/compute.py,sha256=io9imiy1fxsufYoGlMp6SRdQuR4-xlwwVgf825aGG4c,15844
142
+ dstack/_internal/core/backends/nebius/configurator.py,sha256=xejKSnjSBwVCG6ooSjWyB1Q-sn3NJ98y98E68RNpCtQ,3796
143
+ dstack/_internal/core/backends/nebius/models.py,sha256=6iSAj7pr5OpSyA_GDk_QtRTAr_yGFf8cGSRM8hqp8XA,6267
144
+ dstack/_internal/core/backends/nebius/resources.py,sha256=j9QtqVHvFyKk2ei4fQW0mAO0294lMQvU5Pk7XUlV99M,14778
146
145
  dstack/_internal/core/backends/oci/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
147
146
  dstack/_internal/core/backends/oci/auth.py,sha256=8Cr18y_LOsyRP-16yfFpT70Cofpm0clB3KawS_7aRl4,717
148
147
  dstack/_internal/core/backends/oci/backend.py,sha256=yXjVCt7n6BVLH0byYFbNFf-P9J0FwlNfxsYbKGMdoI4,536
@@ -153,9 +152,9 @@ dstack/_internal/core/backends/oci/models.py,sha256=fDlY7-A0WDQeiwJzwrQl6D5ENOc-
153
152
  dstack/_internal/core/backends/oci/region.py,sha256=a41dmlv-7jh2vP2z-0wnf0Yzdh2Donjm9aXuMgFXXKo,2935
154
153
  dstack/_internal/core/backends/oci/resources.py,sha256=-47u2vWvRnpNQmgz3A12vu1hSIQ-dqawDl5ndyF0nwY,29392
155
154
  dstack/_internal/core/backends/runpod/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
156
- dstack/_internal/core/backends/runpod/api_client.py,sha256=Oet7CwQTu3sE57unqh-JvuMCBDEDPruAbGB4GyM0dM4,13427
155
+ dstack/_internal/core/backends/runpod/api_client.py,sha256=9v3_cY9Kua-nFdiOsKPYIJadW9Brjfls4QG0L1FUUFY,20482
157
156
  dstack/_internal/core/backends/runpod/backend.py,sha256=GcLbySsGY29ZGHXSqTXCxUUoTK9pxVScKly0_fkNr8c,566
158
- dstack/_internal/core/backends/runpod/compute.py,sha256=0KwqTfvjNxZXkHS_Y8fYDMHMzL_vo-bxXg00djUIJRo,11097
157
+ dstack/_internal/core/backends/runpod/compute.py,sha256=-iGEKveep0HFUCQbBSqbqKCc_3cg4oFVeUz8VK0q5f8,17451
159
158
  dstack/_internal/core/backends/runpod/configurator.py,sha256=ZcDKN5ulmFMjSy9TlnV-2qxqPwTZUpIwfVwtShZL5fU,2242
160
159
  dstack/_internal/core/backends/runpod/models.py,sha256=W3nO4sjvvWtfKYDZDVJ8oBSsgeGdSR-Z_PD7OpfDBgY,1466
161
160
  dstack/_internal/core/backends/template/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -182,25 +181,26 @@ dstack/_internal/core/compatibility/fleets.py,sha256=jg42A7OmprqATKKt6JpLL1qOQSZ
182
181
  dstack/_internal/core/compatibility/gateways.py,sha256=4h_lfpN9KJFyLTFexq-wlu74Rwpk0anV67v38aJ-SnI,1463
183
182
  dstack/_internal/core/compatibility/gpus.py,sha256=myWVUjaK2S1QuYgRZyMtD8-DPKQTjadSbsnECtfoHHs,575
184
183
  dstack/_internal/core/compatibility/logs.py,sha256=keXt3OFKR0CjD_XMsetzRu8yQGCz7CWBwycuP267L_Q,629
185
- dstack/_internal/core/compatibility/runs.py,sha256=pT5RxheOzJJXFpJM1th-ku9-inj3McMBcdEHxcMBp9U,9357
184
+ dstack/_internal/core/compatibility/runs.py,sha256=i2vJwTGuT1GZ2pYzUnM6DpewsjqbArd3zsdp-x_VGGQ,10453
186
185
  dstack/_internal/core/compatibility/volumes.py,sha256=ofjpVusuc-pq285bGrIh8PAqu0QlAd6NQgU3gfJQIc0,1546
187
186
  dstack/_internal/core/models/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
188
187
  dstack/_internal/core/models/common.py,sha256=QKdZM7L2NepzOPavkkI_q3g6WYCauMTbtZSZwWZVYHE,4704
188
+ dstack/_internal/core/models/compute_groups.py,sha256=8iW4XpUv4H0Sc9xmgKIEG-xBmNArse2SlNQxbELeoSw,1176
189
189
  dstack/_internal/core/models/config.py,sha256=VYfgyWG2kfGhJxkC48vZDCbHahIEnO05mDDagJ5kA6s,787
190
190
  dstack/_internal/core/models/configurations.py,sha256=G0MO8iKR1uRQABWuB_biglZQTCqLBK3vhxIKwJKEsTg,30998
191
191
  dstack/_internal/core/models/envs.py,sha256=yq84YRFBILOy4x3XnGcTgYpbZ69eFTCQPgBCr9Ndov4,4969
192
192
  dstack/_internal/core/models/files.py,sha256=CI1AQN07ACot_6RVkG7qLml07Ro0co2hGsAfcTamn3Y,1977
193
- dstack/_internal/core/models/fleets.py,sha256=Ux-RSdoJUFF4lSDPH70MJKoav_xYv0w9Ou_BwOJevq0,15215
193
+ dstack/_internal/core/models/fleets.py,sha256=5IGRs4_dc_up7FZQy6CIGqFtAoV7Xkn731FBUZkpX8w,15373
194
194
  dstack/_internal/core/models/gateways.py,sha256=_O8EWwHWLdgNoWY4P4u71KM-uEr5DDp42LXfyv1qMDI,4054
195
195
  dstack/_internal/core/models/health.py,sha256=Q0Z5pYbW-rD5wLn3-EDre2Q7X6tX7DFaglKz5SDv18U,570
196
- dstack/_internal/core/models/instances.py,sha256=Gpv46fu3uWO-3f8w1A6rBzU5dYhmO_wWh9s8fvnd9iw,6872
196
+ dstack/_internal/core/models/instances.py,sha256=nITxuRsT3OqPMi1HFN9Bq0rTFwsIJPXbRgxhtfvSeQM,6915
197
197
  dstack/_internal/core/models/logs.py,sha256=VOsgEsvUIRNNHivD6OZnPZNC52ioqafv7ccdnFQ1YI8,529
198
198
  dstack/_internal/core/models/metrics.py,sha256=Xb8hCXUL-ncQ3PMsErIUAJTe9gwh5jyrQ4UQoZbibsc,269
199
199
  dstack/_internal/core/models/placement.py,sha256=WJVq5ENJykyRarQzL2EeYQag_9_jV7VSAtR_xoFvPVM,720
200
- dstack/_internal/core/models/profiles.py,sha256=vzGQllBGepTcFotgpot6OksyBIM03IJWtW3kZEfkro4,14524
200
+ dstack/_internal/core/models/profiles.py,sha256=MK-OLgIM9cSfgJsqs0NWmeLdjKtOSEgZOvoCpYn69H4,14631
201
201
  dstack/_internal/core/models/projects.py,sha256=hOZoL85q-873vT_Aw7FhzpS6DGVt0Y3yT8kpElrLFto,833
202
202
  dstack/_internal/core/models/resources.py,sha256=-dLupzud5BSqxNABBjLVYTCKekbr9_mhaNGD1ZWBjgM,14544
203
- dstack/_internal/core/models/runs.py,sha256=UZd2iJNgeRBrX6eHleHXjgpEzvCCxzfZKECAA5M_Vrk,22688
203
+ dstack/_internal/core/models/runs.py,sha256=SBwfo3bKIREDMemSnTaJGuMqi68igTyRNd3lonWuf5o,22886
204
204
  dstack/_internal/core/models/secrets.py,sha256=5T4B4eCeZmVQ8t22qYYlm4NUyX7VloiXCJuyDfE92QA,413
205
205
  dstack/_internal/core/models/server.py,sha256=Hkc1v2s3KOiwslsWVmhUOAzcSeREoG-HD1SzSX9WUGg,152
206
206
  dstack/_internal/core/models/services.py,sha256=2Hpi7j0Q1shaf_0wd0C0044AJAmuYi-D3qx3PH849oI,3076
@@ -224,6 +224,7 @@ dstack/_internal/core/services/configs/__init__.py,sha256=FW_A4TprMuY1PA_nOoAJNQ
224
224
  dstack/_internal/core/services/ssh/__init__.py,sha256=UhgC3Lv3CPSGqSPEQZIKOfLKUlCFnaB0uqPQhfKCFt0,878
225
225
  dstack/_internal/core/services/ssh/attach.py,sha256=6YZ_HaimKrjdLzcDLksGi0_9rlVyLeBgPmmWHC7dYxo,9096
226
226
  dstack/_internal/core/services/ssh/client.py,sha256=FUg74jNOagYR3OKuWMBwNgJWIDwHfYrIMSER8xn92D8,4102
227
+ dstack/_internal/core/services/ssh/key_manager.py,sha256=koinlhUAtFyhmDBLGwD9Z36HQzQtzp-GeXvPhefq33c,1855
227
228
  dstack/_internal/core/services/ssh/ports.py,sha256=m5YofoHBo2jhurfUi5UEpdrH0IWjgJ5XKRdG-15bIhA,2914
228
229
  dstack/_internal/core/services/ssh/tunnel.py,sha256=NLnb4YyzvqmKdNvSlj9IV2I9QdrPyGdw-Oac6EeVjTk,11767
229
230
  dstack/_internal/proxy/__init__.py,sha256=xSEZgET1qgOhB3VASyP2oyTU93WUnMVCJ2wPZYJ4Di0,345
@@ -280,30 +281,31 @@ dstack/_internal/proxy/lib/testing/auth.py,sha256=-firWTnis9Eogoi58BURv1S-te4Hf9
280
281
  dstack/_internal/proxy/lib/testing/common.py,sha256=5e2VYboMqjBnUxkvidaWLoQ-uaBGh_hnURb_VJc38q4,1518
281
282
  dstack/_internal/server/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
282
283
  dstack/_internal/server/alembic.ini,sha256=rTauBJC8Jxlw76KUygW061OFAGV7GhwAStinlaxoYGY,3166
283
- dstack/_internal/server/app.py,sha256=BdjpR_XsTMkNey85ZwTjKd9_KKbtlePnIqy7QQDQdq0,15364
284
+ dstack/_internal/server/app.py,sha256=QW3iM_77I-aUfeyVDqlSzQ8d7R0I-mwg__zgs1QTaXo,15852
284
285
  dstack/_internal/server/db.py,sha256=NY0-K_7ok2OYLtPMeZ4EHlHK5N2a77uj4aJCVgWO2qE,3245
285
286
  dstack/_internal/server/deps.py,sha256=31e8SU_ogPJWHIDLkgl7cuC_5V91xbJoLyAj17VanfM,670
286
287
  dstack/_internal/server/main.py,sha256=kztKhCYNoHSDyJJQScWfZXE0naNleJOCQULW6dd8SGw,109
287
- dstack/_internal/server/models.py,sha256=SXqbr4TRmGbr5WDR-MRza-sxkTvDnfh4i2uTg2y_Pcs,34373
288
+ dstack/_internal/server/models.py,sha256=OsBrPcVz9UA4X0-XtvBNGhIp8-VNbQECLEuckeXHB_o,36549
288
289
  dstack/_internal/server/settings.py,sha256=7SRzSlTnUPNNjlZH-vpgwbwj95gI-LLtQite8LQnaTU,7418
289
- dstack/_internal/server/background/__init__.py,sha256=QftEjgQZffu83sY-F0WL65vRp28FbBEtezfowQYcTv4,5606
290
+ dstack/_internal/server/background/__init__.py,sha256=aKoWHuRWUMjxw0JTGAMYnnv8ADA7ddo-HlTvyvixp2o,5920
290
291
  dstack/_internal/server/background/tasks/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
291
292
  dstack/_internal/server/background/tasks/common.py,sha256=n87hFjDNtS2x8mYbBnKLqhXus1P8qkdfqXG1TSeIJjM,1089
293
+ dstack/_internal/server/background/tasks/process_compute_groups.py,sha256=_oAA4N6C_4ntHIH-C1zeIqjXN20pkT03QB4-zvI6FKI,6763
292
294
  dstack/_internal/server/background/tasks/process_fleets.py,sha256=0i_S3HCZp4AjQjER7j_pvIm22eYbrBwZnt9-0kgsq3E,11547
293
295
  dstack/_internal/server/background/tasks/process_gateways.py,sha256=FH9RY3Tfmtw_UctCdYZDIRb2rgtmHdxTg6Oc4IBiDBA,8356
294
296
  dstack/_internal/server/background/tasks/process_idle_volumes.py,sha256=mqnl8wvWaKTYvJMbgFJbOP-bZMRQG2vrhUnaNcyBldE,5223
295
- dstack/_internal/server/background/tasks/process_instances.py,sha256=kDqtfqWoSS91qW0NpVftxrr8Z2tDv6Fj2cfbjvgHY3o,44196
297
+ dstack/_internal/server/background/tasks/process_instances.py,sha256=tDV4nO6wPKRkcfTWh-zivU9UT_9sp4v_D0UdQnglzwQ,45774
296
298
  dstack/_internal/server/background/tasks/process_metrics.py,sha256=yKXe9J7m3oleK0C-oGJaYNkcPT8kqkz0nw-A7xqYbjE,6390
297
299
  dstack/_internal/server/background/tasks/process_placement_groups.py,sha256=lgYIzjHG9EITK31yG6uQjlIcSwW5jsP9ZOBBZqW_eNs,4263
298
300
  dstack/_internal/server/background/tasks/process_probes.py,sha256=dmug-_rmYiVLLF-imto-Ju1gPtENvHvCjHyilqgYuJw,6457
299
301
  dstack/_internal/server/background/tasks/process_prometheus_metrics.py,sha256=_UZm37FVV4rhdd0So7HtcKbIgrSdAr5Vx-Uen_xizec,5459
300
302
  dstack/_internal/server/background/tasks/process_running_jobs.py,sha256=ZSx8hQX3XFHetaJT78A9W0mSzTIsY5NgMrSD6gb0Mmw,45029
301
303
  dstack/_internal/server/background/tasks/process_runs.py,sha256=K4km4XT0JYUf6JYbpKbEAyumUDBT21lqcMFTQ7pIsoY,25200
302
- dstack/_internal/server/background/tasks/process_submitted_jobs.py,sha256=fDuLfnSJqWDL2oPrxXQMkaqKgplMdKT0SRD_AyB4n-0,43099
304
+ dstack/_internal/server/background/tasks/process_submitted_jobs.py,sha256=uEvvm1jx0NvvKRh7WB9PoXuQUvmJvV1dj8F36je2P7U,47326
303
305
  dstack/_internal/server/background/tasks/process_terminating_jobs.py,sha256=S7ZSDVMX-N0XMaMgwFa1QG_RAi48BP432s9AqHw4PMM,4066
304
306
  dstack/_internal/server/background/tasks/process_volumes.py,sha256=_fMmkwLYsyX-kpW9pDrZVJvFTZEOPp0gpjyKBMW-zw0,5204
305
307
  dstack/_internal/server/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
306
- dstack/_internal/server/migrations/env.py,sha256=RuhcN-CST86VzMatjqBMdYcG0fGGMZl_o1YgZTL-WDw,2831
308
+ dstack/_internal/server/migrations/env.py,sha256=-JLTYwXv1h8MRWEBapedSVi60HVmgMg3KXatgu4t8Cg,3735
307
309
  dstack/_internal/server/migrations/script.py.mako,sha256=Xi-IcoSN51tKWbAq1-nNVX7j6_89mf9AuX9DjnqUO_o,574
308
310
  dstack/_internal/server/migrations/versions/065588ec72b8_add_vultr_to_backendtype_enum.py,sha256=wSdI_HWGUFgczhOPyoP6BTPmDbN3KmjokHVpZJGsq4Q,2112
309
311
  dstack/_internal/server/migrations/versions/0e33559e16ed_update_instancestatus.py,sha256=PcGliOdzjGRzJY5dY_Jaxj6HSEoueBOY3sxwkSLFoAk,1657
@@ -348,6 +350,7 @@ dstack/_internal/server/migrations/versions/74a1f55209bd_store_enums_as_strings.
348
350
  dstack/_internal/server/migrations/versions/7b24b1c8eba7_add_instancemodel_last_processed_at.py,sha256=o1A8nzrmMFcivBzaIMemCtRfCZ9mq1IuBko1CJXoVOo,2124
349
351
  dstack/_internal/server/migrations/versions/7ba3b59d7ca6_add_runmodel_resubmission_attempt.py,sha256=FUvCRzOzkp8HjRYy0-kuOwvBGbwuCgyjXU7hD-AWRJs,1045
350
352
  dstack/_internal/server/migrations/versions/7bc2586e8b9e_make_instancemodel_pool_id_optional.py,sha256=ch6yqwMldIiA7hlQbU5TGjzMbLpRyhiAcXqfUHlj-EI,980
353
+ dstack/_internal/server/migrations/versions/7d1ec2b920ac_add_computegroupmodel.py,sha256=tn0_ZorMip5EW5dIwG-RESxpGfpnw9TWpabH9UHJ-50,3266
351
354
  dstack/_internal/server/migrations/versions/803c7e9ed85d_add_jobmodel_job_runtime_data.py,sha256=JRQL_aqCOBHw-iyL2-eYPkmC_i6dMh-ERfdgFi3SI9U,831
352
355
  dstack/_internal/server/migrations/versions/82b32a135ea2_.py,sha256=9Bb4V65dZS1hUH1tBJ17qmkmDFgHeWwTlsKwTsR-W6Q,1716
353
356
  dstack/_internal/server/migrations/versions/866ec1d67184_replace_retrypolicy_limit_with_.py,sha256=dExkOKVEytaQbUU_C2ITGg3PsweSWBOeiGwoiDy5IVY,2905
@@ -395,14 +398,14 @@ dstack/_internal/server/routers/gateways.py,sha256=ZZ77Qjv4sHVfsu63RLWf4mKRRSrdJ
395
398
  dstack/_internal/server/routers/gpus.py,sha256=1BUiV9A80-QralBWSzWiN6le3ywrbZ3uMjj7cgo8IYY,964
396
399
  dstack/_internal/server/routers/instances.py,sha256=VwhQ7vANbcluhgq10pPxm2RcR1OlDqUX6rP_OAZ20xU,2710
397
400
  dstack/_internal/server/routers/logs.py,sha256=qvlS_8fqyJe-vOEt420xYj4nc9eMb9ngzclmSiXk7Zs,1233
398
- dstack/_internal/server/routers/metrics.py,sha256=iXLbcJuwdi5F-lfkPhl9RzvC2m8FSp1EqaOwa-rb6YY,2426
401
+ dstack/_internal/server/routers/metrics.py,sha256=Hoa_cKF2-b8XNCVPa92YkFnNZhz1KHcriu2PpxwWRoU,2558
399
402
  dstack/_internal/server/routers/projects.py,sha256=qTwISp2O5L3zoysPyikH_IIqZSTkriUFOvrQPP_PCsQ,4915
400
403
  dstack/_internal/server/routers/prometheus.py,sha256=INRxPLYVJ6CTm2AwtSJ1z455RiCOpPJ3rbXMKGonGm8,1109
401
404
  dstack/_internal/server/routers/repos.py,sha256=4pTInkm0XaOVUJ2pRnbc8LqTyACkE3w_BrB6icT7EUw,4039
402
- dstack/_internal/server/routers/runs.py,sha256=m_IQMCeqh5Tp3OP7ulaBb1IND8b-ixqbVNiHgZtXrDo,6121
405
+ dstack/_internal/server/routers/runs.py,sha256=iiCzQiia_oTZGk1AXD24xDImHOeP1H8c3UUnvVS6ZaA,6725
403
406
  dstack/_internal/server/routers/secrets.py,sha256=wWYUQbYcfWenUVEA4qdb08J7_6H3zmW3AsTIg-UTJ4o,2566
404
407
  dstack/_internal/server/routers/server.py,sha256=MSOsOCyA0unv24nCs_OkJG_zHyuldQrONn2xaZjGOXo,474
405
- dstack/_internal/server/routers/users.py,sha256=AkpE5DZgk6uukhbtlQIj40Sg7_npD9HrMfU87SlMMsE,3935
408
+ dstack/_internal/server/routers/users.py,sha256=L3t6WWvcl6pd8EGC5P6gsZVTtygyEpxsIDfAOqCVhdo,4302
406
409
  dstack/_internal/server/routers/volumes.py,sha256=PHmayi432nUAdcOiGOu1j2bfbIxCFjc8u4XRTrBiHEI,3856
407
410
  dstack/_internal/server/schemas/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
408
411
  dstack/_internal/server/schemas/backends.py,sha256=KC6ZunAW71OCEIE_LnPO-wScJKVFXLgcVVocrLATMi0,365
@@ -425,16 +428,17 @@ dstack/_internal/server/schemas/health/dcgm.py,sha256=i6lisMNDcuXNJnKtTztSwjjjYt
425
428
  dstack/_internal/server/security/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
426
429
  dstack/_internal/server/security/permissions.py,sha256=7lWM9jiNt-6cMms6t5g9Fn0H3B3-MEJ7gDCtL7xZ9Lg,8187
427
430
  dstack/_internal/server/services/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
431
+ dstack/_internal/server/services/compute_groups.py,sha256=WX2S0FZng0nhWd58HheViIzgoyrms4CvWiIrOJ83YCc,890
428
432
  dstack/_internal/server/services/config.py,sha256=yo8njslwfS7_blhbPPhOtzCMyg8N_mmFSw5aPvirSzw,10691
429
433
  dstack/_internal/server/services/docker.py,sha256=DEEUFNYtyus4qDTBC33ujSZxl5wp8iKaKrpF2X-Bk88,5395
430
434
  dstack/_internal/server/services/files.py,sha256=LJYFRtIJwB-QL-FhIu1408oqVVfa2lPZZlaTuZMo6pw,2847
431
- dstack/_internal/server/services/fleets.py,sha256=B_LXk_inn0rIOwC6SejQuBgT8_C_e9QdCNN5pXH7Sx0,37095
435
+ dstack/_internal/server/services/fleets.py,sha256=tohzx1tyYmCHO2AUb-wChYBuxMgl3zbXccPLx4mXfyg,37183
432
436
  dstack/_internal/server/services/gpus.py,sha256=_CGqUsizWf_Bq-_JYcRkLg_yg4iKpsp-1_1m5MedBr0,14758
433
437
  dstack/_internal/server/services/instances.py,sha256=-3m2WOg0R5W2X0IcMivT5C6Qha6RXcXyqmHOQLTvt-o,24160
434
438
  dstack/_internal/server/services/locking.py,sha256=k00cS2SYUVekUIorsi6l5ofL-Q-Bnc5BnRZ1FAB6dDk,5239
435
439
  dstack/_internal/server/services/logging.py,sha256=IPyRg2c3gls_6KEJxus3hfFG8pgI4LqHM5b9F4VTI9g,816
436
440
  dstack/_internal/server/services/metrics.py,sha256=jKLy1jSCVR_crqVu_CmsOMbvMkucWBandI0SS1LDeRQ,6896
437
- dstack/_internal/server/services/offers.py,sha256=5T-qm8oB_4tdecP6JV84MkjbkFrfdAYgGlbA8eXQGsg,8469
441
+ dstack/_internal/server/services/offers.py,sha256=rv3f66jXku5yXZbfBz645OyW66bNAcDsmVlMj1rYxPU,8510
438
442
  dstack/_internal/server/services/permissions.py,sha256=l7Ngdelmn65vjw13NcOdaC6lBYMRuSw6FbHzYwdK3nE,1005
439
443
  dstack/_internal/server/services/placement.py,sha256=U-7z4kJ6ZyrCXzkDychWoOhniz19ooFwiNI2InoTLls,2420
440
444
  dstack/_internal/server/services/plugins.py,sha256=aOlqfTUiU2aZ5G4DUW2rY4959PqS2r9imo5pfU3NUww,3851
@@ -442,10 +446,10 @@ dstack/_internal/server/services/probes.py,sha256=pdgtkOvBuvneUo4Gysg8_afibTf1wu
442
446
  dstack/_internal/server/services/projects.py,sha256=PZdMCi1PVu68c_rYfwJRk7hgM6ddkekxlG_IU_957QI,25276
443
447
  dstack/_internal/server/services/repos.py,sha256=ECl1cbpdzhTv1P3Y9IQmoWyHHF8iXFyL4s2drfwRDvg,9352
444
448
  dstack/_internal/server/services/resources.py,sha256=VRFOih_cMJdc0c2m9nSGsX8vWAJQV3M6N87aqS_JXfw,699
445
- dstack/_internal/server/services/runs.py,sha256=v4CwgaRd8AK4KJ0D4qcHC56FFsRHKvwVP7GHOunQ_dM,48088
449
+ dstack/_internal/server/services/runs.py,sha256=aqtYoc8fLdkHPMmDdpxNk1lU0-M--qro_SxPhi7fuQw,48807
446
450
  dstack/_internal/server/services/secrets.py,sha256=M7RS4X1-DIL0f7m6BBb3PhsrAbxwKUD3_pZEWRfR3sM,5567
447
451
  dstack/_internal/server/services/ssh.py,sha256=DT7U_8ON8o30-53WlJwjd5kVrKyt4KPgKeN63NW3P8U,2883
448
- dstack/_internal/server/services/users.py,sha256=CFPACnLatZnqVU8Gdj_fMpeF8LTHB_30rv-LhYlDWAk,8663
452
+ dstack/_internal/server/services/users.py,sha256=JhlgG4n2CU3cO7zAaA78YCTzb2nzE7GIBZgJ_eXLnOA,8649
449
453
  dstack/_internal/server/services/volumes.py,sha256=DBGIUsysAO7sQ6vb4mjhzO9XLdyQvtNujucxhGnkSsU,16682
450
454
  dstack/_internal/server/services/backends/__init__.py,sha256=xWHI-A24u9RE7H5I4A3e_JQyuQtp5pdKbU--ZyizrnU,13420
451
455
  dstack/_internal/server/services/backends/handlers.py,sha256=Rz4QjqmmDGDzn6QbwxlJvV5oC6pE4PZN3FX0DVqnBHc,3539
@@ -458,9 +462,9 @@ dstack/_internal/server/services/gateways/__init__.py,sha256=ULqgi5yDkTJhSa8qfrD
458
462
  dstack/_internal/server/services/gateways/client.py,sha256=Os6V1zS_fxmchmhyoIkoB4whsYmgm3c-XX54hoERO1k,7726
459
463
  dstack/_internal/server/services/gateways/connection.py,sha256=31qellW-zc-l8cxb8se6AshX5yS_HZT8Nlvxy9JkOXQ,5630
460
464
  dstack/_internal/server/services/gateways/pool.py,sha256=0LclTl1tyx-doS78LeaAKjr-SMp98zuwh5f9s06JSd0,1914
461
- dstack/_internal/server/services/jobs/__init__.py,sha256=qB5Y2DdpQkShfBUDIqHWJis_oA75e6jfHy7KgjwvLL0,28351
465
+ dstack/_internal/server/services/jobs/__init__.py,sha256=ZE6EcYqxs_vz_mBz_ibdar_SDRgO7ge6Ew97JFaIuMA,28845
462
466
  dstack/_internal/server/services/jobs/configurators/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
463
- dstack/_internal/server/services/jobs/configurators/base.py,sha256=b-VI8bo5-glLR3ycio7OEC6ILTy6sap-bCH7N6Oq06w,15996
467
+ dstack/_internal/server/services/jobs/configurators/base.py,sha256=2uWnhbe2ZU8nUFlrgBpTLCa_vc6HZIe9ewSNEitj_9I,16079
464
468
  dstack/_internal/server/services/jobs/configurators/dev.py,sha256=6dEbuRYr83XAmgie63uyq6jE0Er2Vd1kTZKPy8kpvY4,2635
465
469
  dstack/_internal/server/services/jobs/configurators/service.py,sha256=Kbv9GycRX2FA09M5LcUCUzywTzYzjpLLDomwWT6IOG8,866
466
470
  dstack/_internal/server/services/jobs/configurators/task.py,sha256=K2Z1QzWmgs3uvBQOD6H-YkAlmqObeH1ImfwZSnNEAUE,1486
@@ -485,7 +489,7 @@ dstack/_internal/server/services/proxy/routers/service_proxy.py,sha256=5oB-SX8f_
485
489
  dstack/_internal/server/services/proxy/services/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
486
490
  dstack/_internal/server/services/proxy/services/service_proxy.py,sha256=4JrSxHqhBYqU1oENii89Db-bzkFWExYrOy-0mNEhWBs,4879
487
491
  dstack/_internal/server/services/requirements/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
488
- dstack/_internal/server/services/requirements/combine.py,sha256=VhmisgFX4iaD068NGbFn4lAASJoiHhC4b1utkhw1Fqg,8630
492
+ dstack/_internal/server/services/requirements/combine.py,sha256=0XDC-WG_7RyQoa1yGWD6SxpRsl-z3DVY7udKCHzAtp8,8712
489
493
  dstack/_internal/server/services/runner/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
490
494
  dstack/_internal/server/services/runner/client.py,sha256=Ukgs7hrrV4HRLY-as7pQlJdelU6qPfAP5Nepz31oWVs,17719
491
495
  dstack/_internal/server/services/runner/ssh.py,sha256=UdFdyNcFfCyGxMAJa2B1A206yfCplqAoXt31D7mG9c4,5056
@@ -521,11 +525,11 @@ dstack/_internal/server/statics/e467d7d60aae81ab198b.svg,sha256=_XHc9mfQZgGkcy4h
521
525
  dstack/_internal/server/statics/eb9b344b73818fe2b71a.png,sha256=2H14eOCQRyZhFGJ1Kn2LH1j70kTF1Qop4vH-tiKqyPI,85
522
526
  dstack/_internal/server/statics/f517dd626eb964120de0.png,sha256=4QQuNa8SqmcZ67HK6739OHCyjnAJseU1bkcn454KRQs,159
523
527
  dstack/_internal/server/statics/f958aecddee5d8e3222c.png,sha256=8CoZkVNgRfOAe62X1dU-AZDvwh_nESKaQblEmaX2Xrs,87
524
- dstack/_internal/server/statics/index.html,sha256=T9ZlkECfVpgoCT7hGM81NvPmAz32YSNSq2RfA2D5als,11155
528
+ dstack/_internal/server/statics/index.html,sha256=C32BsHh914F45DyJTQFyqimHuOtNzwlIgcHgzTzKAUg,11155
525
529
  dstack/_internal/server/statics/logo-notext.svg,sha256=Oth7XfcAeDJcaPdzNtDaqYuLU7mCB0JqNtxeyWb6Z3c,11231
526
530
  dstack/_internal/server/statics/main-720ce3a11140daa480cc.css,sha256=phgVgWaKKHEWgAux1if7DRn6sM_ykbdu9OPcuiflezg,1473211
527
- dstack/_internal/server/statics/main-97c7e184573ca23f9fe4.js,sha256=LdT0_PaR1s7SsP_0SIbzkaM42h4Cs_BHksQXiRq-4AQ,7111664
528
- dstack/_internal/server/statics/main-97c7e184573ca23f9fe4.js.map,sha256=-5MY6B04RIHgL-pufWYPqng9uYNyi_s64kRihkK6j6k,9461080
531
+ dstack/_internal/server/statics/main-e79754c136f1d8e4e7e6.js,sha256=bsms1CoIGR9qdGCGcJ1CqCdmFHPbjdB_mWjbWe-0i0I,7113855
532
+ dstack/_internal/server/statics/main-e79754c136f1d8e4e7e6.js.map,sha256=MFnr-QqmgFVQq5-8GN9t0uB_Yyzb9MLEH7gYG4LQgFc,9465506
529
533
  dstack/_internal/server/statics/manifest.json,sha256=430w2BoWVmYYVr14lDvUxx-ROPt3VjigzeMqfLeiSCM,340
530
534
  dstack/_internal/server/statics/robots.txt,sha256=kNJLw79pisHhc3OVAimMzKcq3x9WT6sF9IS4xI0crdI,67
531
535
  dstack/_internal/server/statics/assets/android-chrome-144x144.png,sha256=tB3V-95O-VVEoawN5V1XFoMQRSK0I6gthraV8bATGaw,23414
@@ -603,13 +607,13 @@ dstack/_internal/server/statics/static/media/logo.f602feeb138844eda97c8cb6414614
603
607
  dstack/_internal/server/statics/static/media/okta.12f178e6873a1100965f2a4dbd18fcec.svg,sha256=KqFI05gQM135zC1plF1WBRF2F7CyKL7km97WKsZjAHI,319
604
608
  dstack/_internal/server/statics/static/media/theme.3994c817bb7dda191c1c9640dee0bf42.svg,sha256=ZxFFBVZWuRLqmWH4zhwGLNtKjOzHj-5MGJRunFAtu1I,561
605
609
  dstack/_internal/server/testing/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
606
- dstack/_internal/server/testing/common.py,sha256=QwlSJJEXEFRu_SoiiZ9S84jfT-vwy2OwXwAqOUq5NWU,36016
610
+ dstack/_internal/server/testing/common.py,sha256=LPXiWQ2-4MEWl-hqm08RIf92GBAjd_C6GYOVGnQs4oM,37933
607
611
  dstack/_internal/server/testing/conf.py,sha256=-zhujfFjTHNfQDOK-hBck32By11c_kC0OeinB3esQGg,1902
608
612
  dstack/_internal/server/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
609
613
  dstack/_internal/server/utils/common.py,sha256=PbjXtqYy1taKXpyG5ys8cIrz9MXqc9dBAsR_9D1brrk,1414
610
614
  dstack/_internal/server/utils/logging.py,sha256=HqzSX151JIyE89bJ3aiELQdi1izr3F9SNwIZZMLXOSQ,1927
611
615
  dstack/_internal/server/utils/provisioning.py,sha256=FUqAGmCDQbw6EjW1hnOlFPuchbcyAr9j9qIB66w7M9Q,13392
612
- dstack/_internal/server/utils/routers.py,sha256=WFjcIlJETY7SAQ1eHRxaZuAAUsWYT8S_ATLHQ6a_MBs,5498
616
+ dstack/_internal/server/utils/routers.py,sha256=emEOGayN6kwoUHPoW1H2hurY2g8evp8zt7YQwx3BqZI,5333
613
617
  dstack/_internal/server/utils/sentry_utils.py,sha256=3vYP_CH4Q6Ju5BZ0js2Yw4Gg_gdD8XVIjNVUpOQYwX8,277
614
618
  dstack/_internal/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
615
619
  dstack/_internal/utils/common.py,sha256=9PtlJwE7B4F70nL_iP1J4ky33bUeW7r73Np7GYvrbmE,9548
@@ -632,13 +636,14 @@ dstack/_internal/utils/random_names.py,sha256=lVyzAmXhaSf2bAuvRFQ_ihLy42in1ydN4g
632
636
  dstack/_internal/utils/ssh.py,sha256=SE10JKbnUyocoAhMs0dsLIUDOQmUtQGArZEUAFIXBPQ,12852
633
637
  dstack/_internal/utils/tags.py,sha256=Gx4aZM85E_UUCGuFZbCEFxHB5DNgrtJP15_1tFFEd1c,1292
634
638
  dstack/_internal/utils/typing.py,sha256=tHrhtkr3G6jkk-_FZyobdjLYvP5_YIgXbKsN-13dfvg,386
639
+ dstack/_internal/utils/version.py,sha256=YUFtzD4Tkg8SlCKhEVPnEsNbwSuzQubzNtX1Jm9lx9c,699
635
640
  dstack/api/__init__.py,sha256=7qbG42qEHMyNDFRCz9FgfuimAKws3hV8eMXs6oRgh5c,1607
636
641
  dstack/api/utils.py,sha256=_la3CRk1vgrPGkInPI1SOr33e8Jvh8ziJC32fjvKnaU,4188
637
- dstack/api/_public/__init__.py,sha256=eb6mmLtoF-Zq-od0F1Nz3IsMQ6IHmZcv7lfvgyE8rho,3223
642
+ dstack/api/_public/__init__.py,sha256=TqSWVMoidDy1iL4OqF6mMIwhl55pHD2A5vJcV9O61S0,3227
638
643
  dstack/api/_public/backends.py,sha256=w_cIUVU3L1tN8VoPH6-ltq-oJewlfXWTiEFXfDvm-1Q,1056
639
644
  dstack/api/_public/repos.py,sha256=99tzFSFOQejLQIfMlzoGlR3ZzLRs42pIvpkzkgwkyhQ,7464
640
- dstack/api/_public/runs.py,sha256=z3dMCcN7Kpdk7lWjXF6PPkJWhGxLgYQ6WBKii0gIvt8,34784
641
- dstack/api/server/__init__.py,sha256=6hr2scrtZ1LsH_VQ7TRYlKoOykL1wsSnDb6ZzMZ1T_U,6712
645
+ dstack/api/_public/runs.py,sha256=KxEYnDGl_AuZUfaWWiberX_a72cAOp_Xwg3iX7wBjyU,34967
646
+ dstack/api/server/__init__.py,sha256=uiBK5vFnlPFBf5Dt15EBowhgnyMNg048zM-0Icewh2E,6831
642
647
  dstack/api/server/_backends.py,sha256=tSvJ4j-yp-S-4IYo7pKHluDaSsx6Xbwo08Ff6Do85fo,1639
643
648
  dstack/api/server/_files.py,sha256=iOBHm1CvJiG4TqNx3t5LYOf7w3jff9I15wxYpIAg-r4,780
644
649
  dstack/api/server/_fleets.py,sha256=6Duz5-SF1HI4qIkgdJr8OikzDosYtavJZOEyMwyDu_8,2882
@@ -663,8 +668,8 @@ dstack/plugins/builtin/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3
663
668
  dstack/plugins/builtin/rest_plugin/__init__.py,sha256=lgTsq8Z6Km2F2UhPRChVB4vDM5ZpWtdk1iB1aa20ypA,440
664
669
  dstack/plugins/builtin/rest_plugin/_models.py,sha256=9hgVuU6OGSxidar88XhQnNo9izYWeQvVH45ciErv-Es,1910
665
670
  dstack/plugins/builtin/rest_plugin/_plugin.py,sha256=h3r3Yc3h22i93fifPTgTm9Oojd1sN1O4DP7ZTV-kWpM,5386
666
- dstack-0.19.33.dist-info/METADATA,sha256=VjbOSIJ8_gtS7_uBG0v3m34l7ql13RGAoGgaSZ1Wuf0,20835
667
- dstack-0.19.33.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
668
- dstack-0.19.33.dist-info/entry_points.txt,sha256=GnLrMS8hx3rWAySQjA7tPNhtixV6a-brRkmal1PKoHc,58
669
- dstack-0.19.33.dist-info/licenses/LICENSE.md,sha256=qDABaRGjSKVOib1U8viw2P_96sIK7Puo426784oD9f8,15976
670
- dstack-0.19.33.dist-info/RECORD,,
671
+ dstack-0.19.35.dist-info/METADATA,sha256=SMTSuRif1pweSd2HEz2XOYb77squP2d7ZJCcXpwCpAg,20825
672
+ dstack-0.19.35.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
673
+ dstack-0.19.35.dist-info/entry_points.txt,sha256=GnLrMS8hx3rWAySQjA7tPNhtixV6a-brRkmal1PKoHc,58
674
+ dstack-0.19.35.dist-info/licenses/LICENSE.md,sha256=qDABaRGjSKVOib1U8viw2P_96sIK7Puo426784oD9f8,15976
675
+ dstack-0.19.35.dist-info/RECORD,,
@@ -1,49 +0,0 @@
1
- from collections.abc import Container
2
- from dataclasses import dataclass
3
- from typing import Optional
4
-
5
- from dstack._internal.core.models.instances import InstanceOffer
6
-
7
-
8
- @dataclass(frozen=True)
9
- class InfinibandFabric:
10
- name: str
11
- platform: str
12
- region: str
13
-
14
-
15
- # https://docs.nebius.com/compute/clusters/gpu#fabrics
16
- INFINIBAND_FABRICS = [
17
- InfinibandFabric("fabric-2", "gpu-h100-sxm", "eu-north1"),
18
- InfinibandFabric("fabric-3", "gpu-h100-sxm", "eu-north1"),
19
- InfinibandFabric("fabric-4", "gpu-h100-sxm", "eu-north1"),
20
- InfinibandFabric("fabric-5", "gpu-h200-sxm", "eu-west1"),
21
- InfinibandFabric("fabric-6", "gpu-h100-sxm", "eu-north1"),
22
- InfinibandFabric("fabric-7", "gpu-h200-sxm", "eu-north1"),
23
- InfinibandFabric("us-central1-a", "gpu-h200-sxm", "us-central1"),
24
- InfinibandFabric("us-central1-b", "gpu-b200-sxm", "us-central1"),
25
- ]
26
-
27
-
28
- def get_suitable_infiniband_fabrics(
29
- offer: InstanceOffer, allowed_fabrics: Optional[Container[str]]
30
- ) -> list[str]:
31
- if len(offer.instance.resources.gpus) < 8:
32
- # From the create VM page in the Nebius Console:
33
- # > Only virtual machines with at least 8 NVIDIA® Hopper® H100 or H200 GPUs
34
- # > can be added to the cluster
35
- return []
36
- platform, _ = offer.instance.name.split()
37
- return [
38
- f.name
39
- for f in INFINIBAND_FABRICS
40
- if (
41
- f.platform == platform
42
- and f.region == offer.region
43
- and (allowed_fabrics is None or f.name in allowed_fabrics)
44
- )
45
- ]
46
-
47
-
48
- def get_all_infiniband_fabrics() -> set[str]:
49
- return {f.name for f in INFINIBAND_FABRICS}