dstack 0.19.27__py3-none-any.whl → 0.19.29__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.
- dstack/_internal/cli/commands/__init__.py +11 -8
- dstack/_internal/cli/commands/apply.py +6 -3
- dstack/_internal/cli/commands/completion.py +3 -1
- dstack/_internal/cli/commands/config.py +1 -0
- dstack/_internal/cli/commands/init.py +2 -2
- dstack/_internal/cli/commands/offer.py +1 -1
- dstack/_internal/cli/commands/project.py +1 -0
- dstack/_internal/cli/commands/server.py +2 -2
- dstack/_internal/cli/main.py +1 -1
- dstack/_internal/cli/services/configurators/base.py +2 -4
- dstack/_internal/cli/services/configurators/fleet.py +4 -5
- dstack/_internal/cli/services/configurators/gateway.py +3 -5
- dstack/_internal/cli/services/configurators/run.py +51 -27
- dstack/_internal/cli/services/configurators/volume.py +3 -5
- dstack/_internal/core/backends/aws/compute.py +51 -36
- dstack/_internal/core/backends/azure/compute.py +10 -7
- dstack/_internal/core/backends/base/compute.py +96 -14
- dstack/_internal/core/backends/base/offers.py +34 -4
- dstack/_internal/core/backends/cloudrift/compute.py +5 -7
- dstack/_internal/core/backends/cudo/compute.py +4 -2
- dstack/_internal/core/backends/datacrunch/compute.py +13 -11
- dstack/_internal/core/backends/digitalocean_base/compute.py +4 -5
- dstack/_internal/core/backends/gcp/compute.py +12 -7
- dstack/_internal/core/backends/hotaisle/compute.py +4 -7
- dstack/_internal/core/backends/kubernetes/compute.py +6 -4
- dstack/_internal/core/backends/lambdalabs/compute.py +4 -5
- dstack/_internal/core/backends/local/compute.py +1 -3
- dstack/_internal/core/backends/nebius/compute.py +10 -7
- dstack/_internal/core/backends/oci/compute.py +10 -7
- dstack/_internal/core/backends/runpod/compute.py +15 -6
- dstack/_internal/core/backends/template/compute.py.jinja +3 -1
- dstack/_internal/core/backends/tensordock/compute.py +1 -3
- dstack/_internal/core/backends/tensordock/models.py +2 -0
- dstack/_internal/core/backends/vastai/compute.py +7 -3
- dstack/_internal/core/backends/vultr/compute.py +5 -5
- dstack/_internal/core/compatibility/runs.py +2 -0
- dstack/_internal/core/models/common.py +67 -43
- dstack/_internal/core/models/configurations.py +88 -62
- dstack/_internal/core/models/fleets.py +41 -24
- dstack/_internal/core/models/instances.py +5 -5
- dstack/_internal/core/models/profiles.py +66 -47
- dstack/_internal/core/models/projects.py +8 -0
- dstack/_internal/core/models/repos/remote.py +21 -16
- dstack/_internal/core/models/resources.py +69 -65
- dstack/_internal/core/models/runs.py +17 -9
- dstack/_internal/server/app.py +5 -0
- dstack/_internal/server/background/tasks/process_fleets.py +8 -0
- dstack/_internal/server/background/tasks/process_instances.py +3 -2
- dstack/_internal/server/background/tasks/process_submitted_jobs.py +97 -34
- dstack/_internal/server/models.py +6 -5
- dstack/_internal/server/schemas/gateways.py +10 -9
- dstack/_internal/server/services/backends/__init__.py +1 -1
- dstack/_internal/server/services/backends/handlers.py +2 -0
- dstack/_internal/server/services/docker.py +8 -7
- dstack/_internal/server/services/projects.py +63 -4
- dstack/_internal/server/services/runs.py +2 -0
- dstack/_internal/server/settings.py +46 -0
- dstack/_internal/server/statics/index.html +1 -1
- dstack/_internal/server/statics/main-56191fbfe77f49b251de.css +3 -0
- dstack/_internal/server/statics/{main-4eecc75fbe64067eb1bc.js → main-c51afa7f243e24d3e446.js} +61115 -49101
- dstack/_internal/server/statics/{main-4eecc75fbe64067eb1bc.js.map → main-c51afa7f243e24d3e446.js.map} +1 -1
- dstack/_internal/utils/env.py +85 -11
- dstack/version.py +1 -1
- {dstack-0.19.27.dist-info → dstack-0.19.29.dist-info}/METADATA +1 -1
- {dstack-0.19.27.dist-info → dstack-0.19.29.dist-info}/RECORD +68 -73
- dstack/_internal/core/backends/tensordock/__init__.py +0 -0
- dstack/_internal/core/backends/tensordock/api_client.py +0 -104
- dstack/_internal/core/backends/tensordock/backend.py +0 -16
- dstack/_internal/core/backends/tensordock/configurator.py +0 -74
- dstack/_internal/server/statics/main-56191c63d516fd0041c4.css +0 -3
- dstack/_internal/server/statics/static/media/github.1f7102513534c83a9d8d735d2b8c12a2.svg +0 -3
- {dstack-0.19.27.dist-info → dstack-0.19.29.dist-info}/WHEEL +0 -0
- {dstack-0.19.27.dist-info → dstack-0.19.29.dist-info}/entry_points.txt +0 -0
- {dstack-0.19.27.dist-info → dstack-0.19.29.dist-info}/licenses/LICENSE.md +0 -0
dstack/_internal/utils/env.py
CHANGED
|
@@ -1,14 +1,88 @@
|
|
|
1
1
|
import os
|
|
2
|
+
from collections.abc import Mapping
|
|
3
|
+
from enum import Enum
|
|
4
|
+
from typing import Optional, TypeVar, Union, overload
|
|
2
5
|
|
|
6
|
+
_Value = Union[str, int]
|
|
7
|
+
_T = TypeVar("_T", bound=Enum)
|
|
3
8
|
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
9
|
+
|
|
10
|
+
class Environ:
|
|
11
|
+
def __init__(self, environ: Mapping[str, str]):
|
|
12
|
+
self._environ = environ
|
|
13
|
+
|
|
14
|
+
@overload
|
|
15
|
+
def get_bool(self, name: str, *, default: None = None) -> Optional[bool]: ...
|
|
16
|
+
|
|
17
|
+
@overload
|
|
18
|
+
def get_bool(self, name: str, *, default: bool) -> bool: ...
|
|
19
|
+
|
|
20
|
+
def get_bool(self, name: str, *, default: Optional[bool] = None) -> Optional[bool]:
|
|
21
|
+
try:
|
|
22
|
+
raw_value = self._environ[name]
|
|
23
|
+
except KeyError:
|
|
24
|
+
return default
|
|
25
|
+
value = raw_value.lower()
|
|
26
|
+
if value in ["0", "false", "off"]:
|
|
27
|
+
return False
|
|
28
|
+
if value in ["1", "true", "on"]:
|
|
29
|
+
return True
|
|
30
|
+
raise ValueError(f"Invalid bool value: {name}={raw_value}")
|
|
31
|
+
|
|
32
|
+
@overload
|
|
33
|
+
def get_int(self, name: str, *, default: None = None) -> Optional[int]: ...
|
|
34
|
+
|
|
35
|
+
@overload
|
|
36
|
+
def get_int(self, name: str, *, default: int) -> int: ...
|
|
37
|
+
|
|
38
|
+
def get_int(self, name: str, *, default: Optional[int] = None) -> Optional[int]:
|
|
39
|
+
try:
|
|
40
|
+
raw_value = self._environ[name]
|
|
41
|
+
except KeyError:
|
|
42
|
+
return default
|
|
43
|
+
try:
|
|
44
|
+
return int(raw_value)
|
|
45
|
+
except ValueError as e:
|
|
46
|
+
raise ValueError(f"Invalid int value: {e}: {name}={raw_value}") from e
|
|
47
|
+
|
|
48
|
+
@overload
|
|
49
|
+
def get_enum(
|
|
50
|
+
self,
|
|
51
|
+
name: str,
|
|
52
|
+
enum_cls: type[_T],
|
|
53
|
+
*,
|
|
54
|
+
value_type: Optional[type[_Value]] = None,
|
|
55
|
+
default: None = None,
|
|
56
|
+
) -> Optional[_T]: ...
|
|
57
|
+
|
|
58
|
+
@overload
|
|
59
|
+
def get_enum(
|
|
60
|
+
self,
|
|
61
|
+
name: str,
|
|
62
|
+
enum_cls: type[_T],
|
|
63
|
+
*,
|
|
64
|
+
value_type: Optional[type[_Value]] = None,
|
|
65
|
+
default: _T,
|
|
66
|
+
) -> _T: ...
|
|
67
|
+
|
|
68
|
+
def get_enum(
|
|
69
|
+
self,
|
|
70
|
+
name: str,
|
|
71
|
+
enum_cls: type[_T],
|
|
72
|
+
*,
|
|
73
|
+
value_type: Optional[type[_Value]] = None,
|
|
74
|
+
default: Optional[_T] = None,
|
|
75
|
+
) -> Optional[_T]:
|
|
76
|
+
try:
|
|
77
|
+
raw_value = self._environ[name]
|
|
78
|
+
except KeyError:
|
|
79
|
+
return default
|
|
80
|
+
try:
|
|
81
|
+
if value_type is not None:
|
|
82
|
+
raw_value = value_type(raw_value)
|
|
83
|
+
return enum_cls(raw_value)
|
|
84
|
+
except (ValueError, TypeError) as e:
|
|
85
|
+
raise ValueError(f"Invalid {enum_cls.__name__} value: {e}: {name}={raw_value}") from e
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
environ = Environ(os.environ)
|
dstack/version.py
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: dstack
|
|
3
|
-
Version: 0.19.
|
|
3
|
+
Version: 0.19.29
|
|
4
4
|
Summary: dstack is an open-source orchestration engine for running AI workloads on any cloud or on-premises.
|
|
5
5
|
Project-URL: Homepage, https://dstack.ai
|
|
6
6
|
Project-URL: Source, https://github.com/dstackai/dstack
|
|
@@ -1,26 +1,26 @@
|
|
|
1
1
|
dstack/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
2
|
-
dstack/version.py,sha256=
|
|
2
|
+
dstack/version.py,sha256=YFaOhGPwo6LX5fJekfVb7R4HaBPGERtQmy7ytf9Rmq0,102
|
|
3
3
|
dstack/_internal/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
4
4
|
dstack/_internal/compat.py,sha256=bF9U9fTMfL8UVhCouedoUSTYFl7UAOiU0WXrnRoByxw,40
|
|
5
5
|
dstack/_internal/settings.py,sha256=FYtd7tRk17Oc62Kl_3O8NuT5JHb8TKhLThl1TsfjjVs,1390
|
|
6
6
|
dstack/_internal/cli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
7
|
-
dstack/_internal/cli/main.py,sha256=
|
|
8
|
-
dstack/_internal/cli/commands/__init__.py,sha256=
|
|
9
|
-
dstack/_internal/cli/commands/apply.py,sha256=
|
|
7
|
+
dstack/_internal/cli/main.py,sha256=AZ4TB025U5wpQq3qH5sk9KkOYZCpxMIKqfaLH_Mv0DU,3876
|
|
8
|
+
dstack/_internal/cli/commands/__init__.py,sha256=aZdSeBeL38BYl_kjkdTHNbsQZiFbpDAHxas01be9CG8,2269
|
|
9
|
+
dstack/_internal/cli/commands/apply.py,sha256=py0ysrUSo8EbwzpHRS3d_vbO3ALxpDFQmscieSoKkjE,3725
|
|
10
10
|
dstack/_internal/cli/commands/attach.py,sha256=75hojBqYRXj_65eQNvjypuyDy1G1HmajzOHSLe3pOIk,5148
|
|
11
|
-
dstack/_internal/cli/commands/completion.py,sha256=
|
|
12
|
-
dstack/_internal/cli/commands/config.py,sha256=
|
|
11
|
+
dstack/_internal/cli/commands/completion.py,sha256=2QVAj-CfyDTMmGEWw_rTOclcey6fHY4xWkeX2kc4juk,613
|
|
12
|
+
dstack/_internal/cli/commands/config.py,sha256=Nt_zCe2kLOMEq3xZo4epv9OyoylgqyEaBgcJHNgnq_s,3179
|
|
13
13
|
dstack/_internal/cli/commands/delete.py,sha256=D3CwQwOnu5mj0LT6Cs1y09YUT4JnVEWG6_U8MEbMBXs,1478
|
|
14
14
|
dstack/_internal/cli/commands/fleet.py,sha256=tJsYLCZrDJzno9Wfgo6ewWpGLaM7BbZ7qdtZ4FtYakA,4058
|
|
15
15
|
dstack/_internal/cli/commands/gateway.py,sha256=L7bcNrFzzw7w0cjbFszhH_u7dEAiK7Rf-XBDd4Ew6-Q,6135
|
|
16
|
-
dstack/_internal/cli/commands/init.py,sha256=
|
|
16
|
+
dstack/_internal/cli/commands/init.py,sha256=Q0jmftfa1e_n7NahDVVeC4PlaoRqfkQ98MF--Lax9ws,4228
|
|
17
17
|
dstack/_internal/cli/commands/logs.py,sha256=IOiRIvC9vpNORMQSOGzVbcXfrWfTq7LAPPSD7E_iK9U,1558
|
|
18
18
|
dstack/_internal/cli/commands/metrics.py,sha256=T-kXQgARIfWj01ROwiw5te5HeeE2trsPHWetQqhL_qA,5892
|
|
19
|
-
dstack/_internal/cli/commands/offer.py,sha256=
|
|
20
|
-
dstack/_internal/cli/commands/project.py,sha256=
|
|
19
|
+
dstack/_internal/cli/commands/offer.py,sha256=sXjhp3_OTafG7QqPcNCvS5AtkgxoQeO4tbsuUIMr95A,6241
|
|
20
|
+
dstack/_internal/cli/commands/project.py,sha256=EyDOg1aK6e1SFZHvURSp73XYFltTxFXXBgXeB_eCsOc,6161
|
|
21
21
|
dstack/_internal/cli/commands/ps.py,sha256=5RU4mcL4-FT4PcXktfKb4htCOPqia7mIuVGgfK7x9lY,1894
|
|
22
22
|
dstack/_internal/cli/commands/secrets.py,sha256=Qke4UEGeRP5MfbhKFg4-T07FJEU_3nuCmPIGzQz0nuA,3142
|
|
23
|
-
dstack/_internal/cli/commands/server.py,sha256=
|
|
23
|
+
dstack/_internal/cli/commands/server.py,sha256=zDHXEDN-9dKtWIIA_zTIlBeUcXR5aHbHuB8UsYfFk7Y,2845
|
|
24
24
|
dstack/_internal/cli/commands/stats.py,sha256=_CiJPQZuKHUzA1x7CHJP-leth3MmqiQ2-jwojq6G-e8,390
|
|
25
25
|
dstack/_internal/cli/commands/stop.py,sha256=mnM-x0SkvrYn5zNDnSgbl9-Q7W_zxR_5qOzRsE4phgk,1030
|
|
26
26
|
dstack/_internal/cli/commands/volume.py,sha256=IlgKXJ2FYNrm0-Jh9KW1Wy56UueHv710x1ZLgCl42iM,3244
|
|
@@ -30,11 +30,11 @@ dstack/_internal/cli/services/completion.py,sha256=gjR3i4SIm2AQHvSilOd3la5sWBxJ2
|
|
|
30
30
|
dstack/_internal/cli/services/profile.py,sha256=TiNMP_0Xbx9cD22zc8dTHHNIsZeIpavWL41UlT_tGgE,5850
|
|
31
31
|
dstack/_internal/cli/services/repos.py,sha256=wvb3nHI9yJ0fb-dWf2yihl6zdG1ZRVpKiC0CUz9qL7Y,2100
|
|
32
32
|
dstack/_internal/cli/services/configurators/__init__.py,sha256=AwbKV85_XH0V8IS8v2Zpgl8vnvVCLMLbMuPyvsZv3mQ,2971
|
|
33
|
-
dstack/_internal/cli/services/configurators/base.py,sha256=
|
|
34
|
-
dstack/_internal/cli/services/configurators/fleet.py,sha256=
|
|
35
|
-
dstack/_internal/cli/services/configurators/gateway.py,sha256=
|
|
36
|
-
dstack/_internal/cli/services/configurators/run.py,sha256=
|
|
37
|
-
dstack/_internal/cli/services/configurators/volume.py,sha256=
|
|
33
|
+
dstack/_internal/cli/services/configurators/base.py,sha256=9mabsRsKHY7xFl8yDRM__FOEQvtEYOn_4KeXKzO6-vA,3244
|
|
34
|
+
dstack/_internal/cli/services/configurators/fleet.py,sha256=pPfQmXBdqXHy8QAxGm9yY3Y3vKis-vaKirLrCO84zQA,18827
|
|
35
|
+
dstack/_internal/cli/services/configurators/gateway.py,sha256=B2aEoVhhRZGk25OekR7BT4eAvAgZGAyVOw7DlSuo2jg,8755
|
|
36
|
+
dstack/_internal/cli/services/configurators/run.py,sha256=lD14geWv8WtImrVDa5w9bXmA8JK8xIcTUawBTbbu6ZE,39543
|
|
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
|
|
40
40
|
dstack/_internal/cli/utils/fleet.py,sha256=qgyZnhKSsdx4nWVnzcU30vhwV7dtrwn8C0yNKMQ1H4g,4044
|
|
@@ -59,39 +59,39 @@ dstack/_internal/core/backends/amddevcloud/configurator.py,sha256=WF4e-Yh2jMuTKQ
|
|
|
59
59
|
dstack/_internal/core/backends/aws/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
60
60
|
dstack/_internal/core/backends/aws/auth.py,sha256=BAe3HAedoAO42Fbv7YhpODKWlyil8M0PuRJsL-_u_kw,978
|
|
61
61
|
dstack/_internal/core/backends/aws/backend.py,sha256=pjROH-S9pgrSMm-Eox_ocL7cTU6mIMRxvURq7Vi-2J8,876
|
|
62
|
-
dstack/_internal/core/backends/aws/compute.py,sha256=
|
|
62
|
+
dstack/_internal/core/backends/aws/compute.py,sha256=mxwNXg1sNjF1bGNxt42DfXj66bbEi-Yh92lKS6EMxkg,45224
|
|
63
63
|
dstack/_internal/core/backends/aws/configurator.py,sha256=X4CS-DnvsbdYCEVo6HBKLmH0YQ-zh5RucOjyhEcRca8,7634
|
|
64
64
|
dstack/_internal/core/backends/aws/models.py,sha256=EUCHXHmZnshe3rwI9UtjilwcUMu1Z7MO4Y4-nlZ_IcA,4404
|
|
65
65
|
dstack/_internal/core/backends/aws/resources.py,sha256=ccvdQd2H1DuUupdzMtqf86nkrenYPBJb1k3VgHu5Gp4,23610
|
|
66
66
|
dstack/_internal/core/backends/azure/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
67
67
|
dstack/_internal/core/backends/azure/auth.py,sha256=CHp3QRNx3tIwkhyOY_l8WU-ElY4Pxhavoy9JSdwr15g,1259
|
|
68
68
|
dstack/_internal/core/backends/azure/backend.py,sha256=XySTor8v_tLkZctDBryrFHrbVzQgNf_RUPkXQYplvwM,746
|
|
69
|
-
dstack/_internal/core/backends/azure/compute.py,sha256=
|
|
69
|
+
dstack/_internal/core/backends/azure/compute.py,sha256=cbR0nSQfSIiR1x2J35So9xJbDkSjfYTEcYGQ-_1pceo,24695
|
|
70
70
|
dstack/_internal/core/backends/azure/configurator.py,sha256=tKovBgMvyKmCogZ2OMxOJ-Sh_TCBqYXBvbBM-kgyeBI,18367
|
|
71
71
|
dstack/_internal/core/backends/azure/models.py,sha256=ap0WsYBSFdDCxY0G3W1sg2DBN2k0xknz6bp8Ypf6phs,3356
|
|
72
72
|
dstack/_internal/core/backends/azure/resources.py,sha256=cJWS2Yjxdg-XtjpdBxfVDZaX_gTbuoEpmdjTxdA9uIw,3431
|
|
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=
|
|
76
|
+
dstack/_internal/core/backends/base/compute.py,sha256=bK4whPes7mCQ698Fu1XtgOUGOpiBhx9EnhTI9KkG_R0,33666
|
|
77
77
|
dstack/_internal/core/backends/base/configurator.py,sha256=TKG5iJlOXxVT2agE_ruMW8JGt2dtwXY7ghmJN8bEWlw,4299
|
|
78
78
|
dstack/_internal/core/backends/base/models.py,sha256=Ij0osOl-T-ABsKLoVg2eY81DMkwdWkevAnjXj2QnLXI,532
|
|
79
|
-
dstack/_internal/core/backends/base/offers.py,sha256=
|
|
79
|
+
dstack/_internal/core/backends/base/offers.py,sha256=1688KlzBWgQWJFAEQMtqOud4Z8CwpvufNolX1zm1UTI,7487
|
|
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
|
|
83
|
-
dstack/_internal/core/backends/cloudrift/compute.py,sha256=
|
|
83
|
+
dstack/_internal/core/backends/cloudrift/compute.py,sha256=NoMreAUiYK8Pg0g0QrsIpz0ojTzgVlNMiSM1vUcvDRY,5063
|
|
84
84
|
dstack/_internal/core/backends/cloudrift/configurator.py,sha256=ZchmFjn49QDz7If-tbC1kFQeDvBbu6CiZJGESyt6tGE,2492
|
|
85
85
|
dstack/_internal/core/backends/cloudrift/models.py,sha256=tFpcG68OghznpzmspjdnlVEWY_GDvFPt_d41p9ceLrk,1119
|
|
86
86
|
dstack/_internal/core/backends/cudo/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
87
87
|
dstack/_internal/core/backends/cudo/api_client.py,sha256=ygq1Gx7ZvwKaifdXtvzDSw4xR4ZH6UWd5J47BjuaGh0,3685
|
|
88
88
|
dstack/_internal/core/backends/cudo/backend.py,sha256=i13YoAkUfIStc3Yyyt_3YmL30eVrKtrhwnE9_B1iBRI,546
|
|
89
|
-
dstack/_internal/core/backends/cudo/compute.py,sha256=
|
|
89
|
+
dstack/_internal/core/backends/cudo/compute.py,sha256=S5VYgwEvLQrAmqVcnPmWnYerSc2lC4RAnS9vE_z7bZ0,6753
|
|
90
90
|
dstack/_internal/core/backends/cudo/configurator.py,sha256=3wAegbWDI2DcWD_225PNSQEnT9FPpDIKrJQLlY8hMu0,2193
|
|
91
91
|
dstack/_internal/core/backends/cudo/models.py,sha256=6sfEqY2hvTpIACkyT4mhD3D8K5TsW_pupys9nqtrgoI,1055
|
|
92
92
|
dstack/_internal/core/backends/datacrunch/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
93
93
|
dstack/_internal/core/backends/datacrunch/backend.py,sha256=-wanJJ_K_wOXezxTSRgsK1MjsOuCl0MoVJREPj3SgM8,606
|
|
94
|
-
dstack/_internal/core/backends/datacrunch/compute.py,sha256=
|
|
94
|
+
dstack/_internal/core/backends/datacrunch/compute.py,sha256=uQTJfDdvNnpiS_BwaQxgiTtAVbNyBxifwOC9A1CMNhg,9367
|
|
95
95
|
dstack/_internal/core/backends/datacrunch/configurator.py,sha256=9eG3p9LIp5M45T7WH60q8YwH9cNlzz5l_DSRcugO45I,2564
|
|
96
96
|
dstack/_internal/core/backends/datacrunch/models.py,sha256=QeadH8qmcK3oDY9DfQKmX65fDGQo6FABLQAe9wQsHr8,1194
|
|
97
97
|
dstack/_internal/core/backends/digitalocean/__init__.py,sha256=BPjTlv6iNDgu2mcsaIh0FEi9T8iwCEEIVbJQYJAa0gY,34
|
|
@@ -101,7 +101,7 @@ dstack/_internal/core/backends/digitalocean/configurator.py,sha256=_4Tiei4ejehHd
|
|
|
101
101
|
dstack/_internal/core/backends/digitalocean_base/__init__.py,sha256=-7saeWMuPLmclPKi3VT-H5lwALbO9AABcaL248npyBc,84
|
|
102
102
|
dstack/_internal/core/backends/digitalocean_base/api_client.py,sha256=-QBAOs-Qj1E_4q3uM7oKPxsN86c-quwiZNqqYbTcs8I,3834
|
|
103
103
|
dstack/_internal/core/backends/digitalocean_base/backend.py,sha256=1xjjveUldj98sg8ELKAbf48a1KDm9DLh8-ymMvhWKXk,115
|
|
104
|
-
dstack/_internal/core/backends/digitalocean_base/compute.py,sha256=
|
|
104
|
+
dstack/_internal/core/backends/digitalocean_base/compute.py,sha256=2hEeOg6OEYq73rBIhN0XamdOfkhmYZmjJgEay-Zlcdc,6944
|
|
105
105
|
dstack/_internal/core/backends/digitalocean_base/configurator.py,sha256=piXOi4jtUprESLkHE_hSeo1ndxe-3pI5aYDPicNbyAQ,2141
|
|
106
106
|
dstack/_internal/core/backends/digitalocean_base/models.py,sha256=oyVnr_xaneudGeogfCr0BLZ22kzubUmGaNE5V8FI-6U,1334
|
|
107
107
|
dstack/_internal/core/backends/dstack/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -109,7 +109,7 @@ 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=
|
|
112
|
+
dstack/_internal/core/backends/gcp/compute.py,sha256=LycsCO9gCI1WEhsjUNnn-A4PrjciSU28BDsG3BEGNb4,43239
|
|
113
113
|
dstack/_internal/core/backends/gcp/configurator.py,sha256=eVPr6pD4g66ej5qxhFd94lb_R11CIBA-py9PQS9EOGE,6865
|
|
114
114
|
dstack/_internal/core/backends/gcp/models.py,sha256=biLA3rlFcoPatAZpKycuIl-8PdnNSAFiDCJjov65_zo,4612
|
|
115
115
|
dstack/_internal/core/backends/gcp/resources.py,sha256=2jpg24NH4Ov4J4Of1F3DPkwEWkRxEi-x4ZTx8XSNGIQ,16926
|
|
@@ -118,27 +118,27 @@ dstack/_internal/core/backends/gcp/features/tcpx.py,sha256=8bDR5kwF5qke5EWNdBscd
|
|
|
118
118
|
dstack/_internal/core/backends/hotaisle/__init__.py,sha256=CYMaS1jd9Km0Y6Jvg4ePjYOtfqL9swGsRo5kcXGFrFQ,30
|
|
119
119
|
dstack/_internal/core/backends/hotaisle/api_client.py,sha256=Fd1TOg4_orwQyJtoZ657zJweLeBhzj_9ObfL538S5uI,3640
|
|
120
120
|
dstack/_internal/core/backends/hotaisle/backend.py,sha256=o0cqLIKGcrXhvksHHGvjCpLShoQxT2IKdJy9sm0H9gE,586
|
|
121
|
-
dstack/_internal/core/backends/hotaisle/compute.py,sha256=
|
|
121
|
+
dstack/_internal/core/backends/hotaisle/compute.py,sha256=uMiz6UEa5bd03RWFb8bH82CV4tphO5v2Ly5F2LsIsEg,7483
|
|
122
122
|
dstack/_internal/core/backends/hotaisle/configurator.py,sha256=EJwdKFfC0ab0pe4lzeV65b80Ok21rR0OfupOmuqCp6c,2287
|
|
123
123
|
dstack/_internal/core/backends/hotaisle/models.py,sha256=CmJ20SbpKzFldX7rrR0CpVytSJSN2YWKQ3Ixnta_A1M,1334
|
|
124
124
|
dstack/_internal/core/backends/kubernetes/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
125
125
|
dstack/_internal/core/backends/kubernetes/backend.py,sha256=Jy0_Nwn6Oro8McJIo_QeNxxq4Pmwsd7JPd5_YE8Fz9U,606
|
|
126
|
-
dstack/_internal/core/backends/kubernetes/compute.py,sha256=
|
|
126
|
+
dstack/_internal/core/backends/kubernetes/compute.py,sha256=pc5FK1wmY8XRpupFZIpOkzLf4BtWJ8XEHkzYYFmmFPY,23132
|
|
127
127
|
dstack/_internal/core/backends/kubernetes/configurator.py,sha256=RK8_eznv1AFrcG3fM-KIxyolsaJ8UTBAO7c3P3RCBnw,2228
|
|
128
128
|
dstack/_internal/core/backends/kubernetes/models.py,sha256=YITTXi8f1-0FQ7qlC3nDV46m48w88bIiZ_weQJ9bQXU,2577
|
|
129
129
|
dstack/_internal/core/backends/kubernetes/utils.py,sha256=k0cmjqMoNfJ_pAe6W82exV4AywMcpZ5jf0QICVbVuFY,1218
|
|
130
130
|
dstack/_internal/core/backends/lambdalabs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
131
131
|
dstack/_internal/core/backends/lambdalabs/api_client.py,sha256=WaBO7VrPB4kbMQJDxjFxx0HEtAoSncQvH-cahWnVxx4,2688
|
|
132
132
|
dstack/_internal/core/backends/lambdalabs/backend.py,sha256=zVU_M2EBbP-9-snmh64GTKeYAX84-g5kwrZ9d7xETzs,610
|
|
133
|
-
dstack/_internal/core/backends/lambdalabs/compute.py,sha256=
|
|
133
|
+
dstack/_internal/core/backends/lambdalabs/compute.py,sha256=k9aTZVd7E_RLfF6vXvEIN1w87ghCGTgoROeuUHMJr-Q,8158
|
|
134
134
|
dstack/_internal/core/backends/lambdalabs/configurator.py,sha256=JL6n0nM42diqVyI1w-8uUY3WgQCbLouurZ4yA8QD69w,2276
|
|
135
135
|
dstack/_internal/core/backends/lambdalabs/models.py,sha256=c9dAYd0wjun2dvMLUZO4D09XvEskBRehjLDN_nwbSEU,1036
|
|
136
136
|
dstack/_internal/core/backends/local/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
137
137
|
dstack/_internal/core/backends/local/backend.py,sha256=KJuNXUXrg60NhLywnExD1EXH2gK0TL-kzNWUPRNZ_Zg,427
|
|
138
|
-
dstack/_internal/core/backends/local/compute.py,sha256
|
|
138
|
+
dstack/_internal/core/backends/local/compute.py,sha256=M5xCk7Yav_u6OtZUzLfmw36RfNwzl1SCs-I7mWYiyPY,3757
|
|
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=
|
|
141
|
+
dstack/_internal/core/backends/nebius/compute.py,sha256=9r0m0yqefZbnT9iP-9VtWCJNcNalk9Kut1KBy3OWEy0,14852
|
|
142
142
|
dstack/_internal/core/backends/nebius/configurator.py,sha256=PilZ5M0xj-koYz9PPew9L29rrHoF2JrW2bxgCqt27u4,3213
|
|
143
143
|
dstack/_internal/core/backends/nebius/fabrics.py,sha256=-X-nSPV2pUin2PAYDHGm-j14KPboIFRpLi93PKHUXTM,1616
|
|
144
144
|
dstack/_internal/core/backends/nebius/models.py,sha256=UudYX32p-ZY-GWR83VEtY5dpZBaWhKXQIfn2nrBCq-4,4245
|
|
@@ -146,7 +146,7 @@ dstack/_internal/core/backends/nebius/resources.py,sha256=ttgwdqokvXF8BH_IDPFZxW
|
|
|
146
146
|
dstack/_internal/core/backends/oci/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
147
147
|
dstack/_internal/core/backends/oci/auth.py,sha256=8Cr18y_LOsyRP-16yfFpT70Cofpm0clB3KawS_7aRl4,717
|
|
148
148
|
dstack/_internal/core/backends/oci/backend.py,sha256=yXjVCt7n6BVLH0byYFbNFf-P9J0FwlNfxsYbKGMdoI4,536
|
|
149
|
-
dstack/_internal/core/backends/oci/compute.py,sha256
|
|
149
|
+
dstack/_internal/core/backends/oci/compute.py,sha256=jB3A6s4Hxh-LYrqQR8wJYqYCxLt31cbeMxrEkBxRfys,7605
|
|
150
150
|
dstack/_internal/core/backends/oci/configurator.py,sha256=_mi093BzV8Xdfw81wkiqoY5d5x4CCCtni7J01CZeDCQ,5768
|
|
151
151
|
dstack/_internal/core/backends/oci/exceptions.py,sha256=GxlUf7itcAQgY3m-U2ul_ZXzfUOcEcPEmisWFaoWSkA,288
|
|
152
152
|
dstack/_internal/core/backends/oci/models.py,sha256=fDlY7-A0WDQeiwJzwrQl6D5ENOc-677Bz8LXyvBvF0c,2969
|
|
@@ -155,30 +155,26 @@ dstack/_internal/core/backends/oci/resources.py,sha256=VfTDuVTEO8MUvD3i2DFoe2du1
|
|
|
155
155
|
dstack/_internal/core/backends/runpod/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
156
156
|
dstack/_internal/core/backends/runpod/api_client.py,sha256=Oet7CwQTu3sE57unqh-JvuMCBDEDPruAbGB4GyM0dM4,13427
|
|
157
157
|
dstack/_internal/core/backends/runpod/backend.py,sha256=GcLbySsGY29ZGHXSqTXCxUUoTK9pxVScKly0_fkNr8c,566
|
|
158
|
-
dstack/_internal/core/backends/runpod/compute.py,sha256=
|
|
158
|
+
dstack/_internal/core/backends/runpod/compute.py,sha256=ryPUmZ50-iiYHxSvSexs1p3eJFzltrJqNksF4VYMrZo,11056
|
|
159
159
|
dstack/_internal/core/backends/runpod/configurator.py,sha256=ZcDKN5ulmFMjSy9TlnV-2qxqPwTZUpIwfVwtShZL5fU,2242
|
|
160
160
|
dstack/_internal/core/backends/runpod/models.py,sha256=W3nO4sjvvWtfKYDZDVJ8oBSsgeGdSR-Z_PD7OpfDBgY,1466
|
|
161
161
|
dstack/_internal/core/backends/template/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
162
162
|
dstack/_internal/core/backends/template/backend.py.jinja,sha256=jqSUr05lKHSuGq2MCk4tHob1TfGiSSsHox1GuEz30zU,704
|
|
163
|
-
dstack/_internal/core/backends/template/compute.py.jinja,sha256=
|
|
163
|
+
dstack/_internal/core/backends/template/compute.py.jinja,sha256=kJDJztC4VA-2tp9HdMwNn-8OpwChmhdtNmIZSmzrWwU,3368
|
|
164
164
|
dstack/_internal/core/backends/template/configurator.py.jinja,sha256=OeEjI36hpH62FdSm7tGDMuOwuRpnE6u5VmyeGmNJdgk,2665
|
|
165
165
|
dstack/_internal/core/backends/template/models.py.jinja,sha256=dhJd8uWoMvAHAsPpDMPNtdMKzJTIoXDtsGC0NCQ3Y08,2061
|
|
166
|
-
dstack/_internal/core/backends/tensordock/
|
|
167
|
-
dstack/_internal/core/backends/tensordock/
|
|
168
|
-
dstack/_internal/core/backends/tensordock/backend.py,sha256=KT5bRuD3KttEqiNNqQpW5f6nX7Qez-L74TBmYKy3puI,606
|
|
169
|
-
dstack/_internal/core/backends/tensordock/compute.py,sha256=GnW8eAeJXYU11_ukX9lBznbYaOQssBH6RltMOX6UYSU,4528
|
|
170
|
-
dstack/_internal/core/backends/tensordock/configurator.py,sha256=SlYFcdzgQ09-BJH7FdZFaJ1HWFmMbZzciTkmiQMcaks,2649
|
|
171
|
-
dstack/_internal/core/backends/tensordock/models.py,sha256=oxbSWRCsD0_j4-2lQYo4LpmhKL8Kgv2nmq_dfMaSCiU,1182
|
|
166
|
+
dstack/_internal/core/backends/tensordock/compute.py,sha256=yLV9lAYARlrKninbVJ7eoqbfSd8g6lvraQ-j9WiHZRQ,4497
|
|
167
|
+
dstack/_internal/core/backends/tensordock/models.py,sha256=Dov-XsJcgOWML8c_jPpzo47y3wGQkxk3o-hTaZfYrPE,1250
|
|
172
168
|
dstack/_internal/core/backends/vastai/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
173
169
|
dstack/_internal/core/backends/vastai/api_client.py,sha256=b-qgx352lnxhBXichJtURFGxR7Jd9JYx4WXaxYV-HH0,4940
|
|
174
170
|
dstack/_internal/core/backends/vastai/backend.py,sha256=NawGHNYVmgNwL8HruEA84rimnpeSyXccdJXr6Dr95UY,566
|
|
175
|
-
dstack/_internal/core/backends/vastai/compute.py,sha256=
|
|
171
|
+
dstack/_internal/core/backends/vastai/compute.py,sha256=X4nkJUCGB55W2FvqKpQcIPV73s22xviDSBREd4LmPCI,4991
|
|
176
172
|
dstack/_internal/core/backends/vastai/configurator.py,sha256=rFeUdlGiBw8PsB_zgBLm-p2pzHdyN8cSATHFLzeKhrg,2408
|
|
177
173
|
dstack/_internal/core/backends/vastai/models.py,sha256=2xpFE-ouYUBienxZXam2Mo4dy9enSv-FuVJXeYnjVLk,1036
|
|
178
174
|
dstack/_internal/core/backends/vultr/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
179
175
|
dstack/_internal/core/backends/vultr/api_client.py,sha256=isHbdBQr2hFRYTcnTsGxSlWIKYrpC1X_gjSZjGxUupE,4363
|
|
180
176
|
dstack/_internal/core/backends/vultr/backend.py,sha256=WkPmbUxm3Ysv3_wJjuktQqvvN_L_TX5g37CflGQWQFo,556
|
|
181
|
-
dstack/_internal/core/backends/vultr/compute.py,sha256=
|
|
177
|
+
dstack/_internal/core/backends/vultr/compute.py,sha256=7YUgbHOBInSVeYOVW5GtCkv5z2bbq1pk9TmY7D4bXYI,5850
|
|
182
178
|
dstack/_internal/core/backends/vultr/configurator.py,sha256=JMJ9itCGIRb4MJ8fjS6syd7xrO7wUra2OVoqLTrGRo4,2373
|
|
183
179
|
dstack/_internal/core/backends/vultr/models.py,sha256=TkqK_lW6w5k_7wsoFiKDb6NXuTrHL6ypVm59FoyaSFY,928
|
|
184
180
|
dstack/_internal/core/compatibility/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -186,25 +182,25 @@ dstack/_internal/core/compatibility/fleets.py,sha256=jg42A7OmprqATKKt6JpLL1qOQSZ
|
|
|
186
182
|
dstack/_internal/core/compatibility/gateways.py,sha256=4h_lfpN9KJFyLTFexq-wlu74Rwpk0anV67v38aJ-SnI,1463
|
|
187
183
|
dstack/_internal/core/compatibility/gpus.py,sha256=myWVUjaK2S1QuYgRZyMtD8-DPKQTjadSbsnECtfoHHs,575
|
|
188
184
|
dstack/_internal/core/compatibility/logs.py,sha256=keXt3OFKR0CjD_XMsetzRu8yQGCz7CWBwycuP267L_Q,629
|
|
189
|
-
dstack/_internal/core/compatibility/runs.py,sha256=
|
|
185
|
+
dstack/_internal/core/compatibility/runs.py,sha256=kdYvirgXWO2m9Uj_LOadzMUsJSWXtFY6yEdNadNypZs,8869
|
|
190
186
|
dstack/_internal/core/compatibility/volumes.py,sha256=ofjpVusuc-pq285bGrIh8PAqu0QlAd6NQgU3gfJQIc0,1546
|
|
191
187
|
dstack/_internal/core/models/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
192
|
-
dstack/_internal/core/models/common.py,sha256=
|
|
188
|
+
dstack/_internal/core/models/common.py,sha256=QKdZM7L2NepzOPavkkI_q3g6WYCauMTbtZSZwWZVYHE,4704
|
|
193
189
|
dstack/_internal/core/models/config.py,sha256=VYfgyWG2kfGhJxkC48vZDCbHahIEnO05mDDagJ5kA6s,787
|
|
194
|
-
dstack/_internal/core/models/configurations.py,sha256=
|
|
190
|
+
dstack/_internal/core/models/configurations.py,sha256=G0MO8iKR1uRQABWuB_biglZQTCqLBK3vhxIKwJKEsTg,30998
|
|
195
191
|
dstack/_internal/core/models/envs.py,sha256=yq84YRFBILOy4x3XnGcTgYpbZ69eFTCQPgBCr9Ndov4,4969
|
|
196
192
|
dstack/_internal/core/models/files.py,sha256=CI1AQN07ACot_6RVkG7qLml07Ro0co2hGsAfcTamn3Y,1977
|
|
197
|
-
dstack/_internal/core/models/fleets.py,sha256=
|
|
193
|
+
dstack/_internal/core/models/fleets.py,sha256=FXwILyyemijNrhUPgJvgwZlKpjsX7OGbPIHnjg_3iXk,15192
|
|
198
194
|
dstack/_internal/core/models/gateways.py,sha256=_O8EWwHWLdgNoWY4P4u71KM-uEr5DDp42LXfyv1qMDI,4054
|
|
199
195
|
dstack/_internal/core/models/health.py,sha256=Q0Z5pYbW-rD5wLn3-EDre2Q7X6tX7DFaglKz5SDv18U,570
|
|
200
|
-
dstack/_internal/core/models/instances.py,sha256=
|
|
196
|
+
dstack/_internal/core/models/instances.py,sha256=Gpv46fu3uWO-3f8w1A6rBzU5dYhmO_wWh9s8fvnd9iw,6872
|
|
201
197
|
dstack/_internal/core/models/logs.py,sha256=VOsgEsvUIRNNHivD6OZnPZNC52ioqafv7ccdnFQ1YI8,529
|
|
202
198
|
dstack/_internal/core/models/metrics.py,sha256=Xb8hCXUL-ncQ3PMsErIUAJTe9gwh5jyrQ4UQoZbibsc,269
|
|
203
199
|
dstack/_internal/core/models/placement.py,sha256=WJVq5ENJykyRarQzL2EeYQag_9_jV7VSAtR_xoFvPVM,720
|
|
204
|
-
dstack/_internal/core/models/profiles.py,sha256=
|
|
205
|
-
dstack/_internal/core/models/projects.py,sha256=
|
|
206
|
-
dstack/_internal/core/models/resources.py,sha256
|
|
207
|
-
dstack/_internal/core/models/runs.py,sha256=
|
|
200
|
+
dstack/_internal/core/models/profiles.py,sha256=_ZxSk-rMvzpiUYUZD0EQbrJDy3FVmRUmIUtEgzlVeHo,14217
|
|
201
|
+
dstack/_internal/core/models/projects.py,sha256=hOZoL85q-873vT_Aw7FhzpS6DGVt0Y3yT8kpElrLFto,833
|
|
202
|
+
dstack/_internal/core/models/resources.py,sha256=-dLupzud5BSqxNABBjLVYTCKekbr9_mhaNGD1ZWBjgM,14544
|
|
203
|
+
dstack/_internal/core/models/runs.py,sha256=ehGSyCSx5OAaEqCEd2YvCRiP_uewUeDOHbJGSocu6w0,22609
|
|
208
204
|
dstack/_internal/core/models/secrets.py,sha256=5T4B4eCeZmVQ8t22qYYlm4NUyX7VloiXCJuyDfE92QA,413
|
|
209
205
|
dstack/_internal/core/models/server.py,sha256=Hkc1v2s3KOiwslsWVmhUOAzcSeREoG-HD1SzSX9WUGg,152
|
|
210
206
|
dstack/_internal/core/models/services.py,sha256=2Hpi7j0Q1shaf_0wd0C0044AJAmuYi-D3qx3PH849oI,3076
|
|
@@ -216,7 +212,7 @@ dstack/_internal/core/models/backends/base.py,sha256=OVy1zqYVX9C_XZpo2g3SHfKAXOp
|
|
|
216
212
|
dstack/_internal/core/models/repos/__init__.py,sha256=7Qo1QgJ852LklUuM-mlCNFodp_XrQ4iqV7uRPiX_qm0,885
|
|
217
213
|
dstack/_internal/core/models/repos/base.py,sha256=nErlSR3AbG9fwDE5vuJK5DIrP8JB3fG8a7mXqosJ9gY,846
|
|
218
214
|
dstack/_internal/core/models/repos/local.py,sha256=zKnEOyN7hSDQ7EKn8q9aJ3uikiTTtGdGEN_3896HTTc,2913
|
|
219
|
-
dstack/_internal/core/models/repos/remote.py,sha256=
|
|
215
|
+
dstack/_internal/core/models/repos/remote.py,sha256=Ax1kXrHHyFlTy4nEbzBUQA9xQZEVb05U484ISJC_Gz4,11690
|
|
220
216
|
dstack/_internal/core/models/repos/virtual.py,sha256=8g4hGSQ6Z8oDKoF6cj2souJ2A5vRop5OyFCQ5z84rw4,2582
|
|
221
217
|
dstack/_internal/core/services/__init__.py,sha256=UVVcj26WYVgo7jHzD07sNRqSOO7zA3QzQv-9LnCDqR4,415
|
|
222
218
|
dstack/_internal/core/services/api_client.py,sha256=HTQ0fcZciUh-nmfV09hUt__Z4N2zq_R12xAiYXD0Jy0,650
|
|
@@ -284,26 +280,26 @@ dstack/_internal/proxy/lib/testing/auth.py,sha256=-firWTnis9Eogoi58BURv1S-te4Hf9
|
|
|
284
280
|
dstack/_internal/proxy/lib/testing/common.py,sha256=5e2VYboMqjBnUxkvidaWLoQ-uaBGh_hnURb_VJc38q4,1518
|
|
285
281
|
dstack/_internal/server/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
286
282
|
dstack/_internal/server/alembic.ini,sha256=rTauBJC8Jxlw76KUygW061OFAGV7GhwAStinlaxoYGY,3166
|
|
287
|
-
dstack/_internal/server/app.py,sha256
|
|
283
|
+
dstack/_internal/server/app.py,sha256=BdjpR_XsTMkNey85ZwTjKd9_KKbtlePnIqy7QQDQdq0,15364
|
|
288
284
|
dstack/_internal/server/db.py,sha256=NY0-K_7ok2OYLtPMeZ4EHlHK5N2a77uj4aJCVgWO2qE,3245
|
|
289
285
|
dstack/_internal/server/deps.py,sha256=31e8SU_ogPJWHIDLkgl7cuC_5V91xbJoLyAj17VanfM,670
|
|
290
286
|
dstack/_internal/server/main.py,sha256=kztKhCYNoHSDyJJQScWfZXE0naNleJOCQULW6dd8SGw,109
|
|
291
|
-
dstack/_internal/server/models.py,sha256=
|
|
292
|
-
dstack/_internal/server/settings.py,sha256=
|
|
287
|
+
dstack/_internal/server/models.py,sha256=mpQYS1hELiopZLlxF8rVMs4K5yF1zGBFnc1DHgE1BBQ,34213
|
|
288
|
+
dstack/_internal/server/settings.py,sha256=7SRzSlTnUPNNjlZH-vpgwbwj95gI-LLtQite8LQnaTU,7418
|
|
293
289
|
dstack/_internal/server/background/__init__.py,sha256=QftEjgQZffu83sY-F0WL65vRp28FbBEtezfowQYcTv4,5606
|
|
294
290
|
dstack/_internal/server/background/tasks/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
295
291
|
dstack/_internal/server/background/tasks/common.py,sha256=N7xSXbf2MoBWgbJ1e3AEzYBTf1Gn-pDXYND8Zr_YCJQ,970
|
|
296
|
-
dstack/_internal/server/background/tasks/process_fleets.py,sha256=
|
|
292
|
+
dstack/_internal/server/background/tasks/process_fleets.py,sha256=b0wECmweaetFv9vSjE1BiOJmlIPlk7O-fmntpdSiWgg,8590
|
|
297
293
|
dstack/_internal/server/background/tasks/process_gateways.py,sha256=FH9RY3Tfmtw_UctCdYZDIRb2rgtmHdxTg6Oc4IBiDBA,8356
|
|
298
294
|
dstack/_internal/server/background/tasks/process_idle_volumes.py,sha256=mqnl8wvWaKTYvJMbgFJbOP-bZMRQG2vrhUnaNcyBldE,5223
|
|
299
|
-
dstack/_internal/server/background/tasks/process_instances.py,sha256=
|
|
295
|
+
dstack/_internal/server/background/tasks/process_instances.py,sha256=5xYWqcxNnsZ4ZgGRE1m894N6BgsSMNRL49sg6Wc_zGI,44067
|
|
300
296
|
dstack/_internal/server/background/tasks/process_metrics.py,sha256=yKXe9J7m3oleK0C-oGJaYNkcPT8kqkz0nw-A7xqYbjE,6390
|
|
301
297
|
dstack/_internal/server/background/tasks/process_placement_groups.py,sha256=lgYIzjHG9EITK31yG6uQjlIcSwW5jsP9ZOBBZqW_eNs,4263
|
|
302
298
|
dstack/_internal/server/background/tasks/process_probes.py,sha256=dmug-_rmYiVLLF-imto-Ju1gPtENvHvCjHyilqgYuJw,6457
|
|
303
299
|
dstack/_internal/server/background/tasks/process_prometheus_metrics.py,sha256=_UZm37FVV4rhdd0So7HtcKbIgrSdAr5Vx-Uen_xizec,5459
|
|
304
300
|
dstack/_internal/server/background/tasks/process_running_jobs.py,sha256=ulDrWgwnhosbK0Mtt0yNS4E38QSKXSh6ermNt-3jUTs,44965
|
|
305
301
|
dstack/_internal/server/background/tasks/process_runs.py,sha256=Cx7Z1B7pZVlvCl-OsIaAiIMFG_aZDdn3nlZeha6k2x4,25041
|
|
306
|
-
dstack/_internal/server/background/tasks/process_submitted_jobs.py,sha256=
|
|
302
|
+
dstack/_internal/server/background/tasks/process_submitted_jobs.py,sha256=vcu1JRJ0-p_VB7HZfYkVf9d_yclazrcW1U7zHQltjcA,40935
|
|
307
303
|
dstack/_internal/server/background/tasks/process_terminating_jobs.py,sha256=S7ZSDVMX-N0XMaMgwFa1QG_RAi48BP432s9AqHw4PMM,4066
|
|
308
304
|
dstack/_internal/server/background/tasks/process_volumes.py,sha256=_fMmkwLYsyX-kpW9pDrZVJvFTZEOPp0gpjyKBMW-zw0,5204
|
|
309
305
|
dstack/_internal/server/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -412,7 +408,7 @@ dstack/_internal/server/schemas/backends.py,sha256=KC6ZunAW71OCEIE_LnPO-wScJKVFX
|
|
|
412
408
|
dstack/_internal/server/schemas/common.py,sha256=FCt3EwntxkykIK8ykKATmJM_gq3X3js-f8Z5tYqdQqA,230
|
|
413
409
|
dstack/_internal/server/schemas/files.py,sha256=3SW-aMv5eAL5Fs_N3isCSPc6xgjOkRQnA-Nf5UAplFE,120
|
|
414
410
|
dstack/_internal/server/schemas/fleets.py,sha256=9JcKe8VQM6p705lsgrp0xO08aTC32R88BJah7vZ-LgM,1101
|
|
415
|
-
dstack/_internal/server/schemas/gateways.py,sha256=
|
|
411
|
+
dstack/_internal/server/schemas/gateways.py,sha256=O6RSAcnNYw0t1NI8sQlWsvNfOmEKN2zwfoatbdj5oSA,1224
|
|
416
412
|
dstack/_internal/server/schemas/gpus.py,sha256=z3Oa5w0KBdTy2gvDIelfnrFz-iZq7qygzK62EKyw2xc,1872
|
|
417
413
|
dstack/_internal/server/schemas/instances.py,sha256=PQZ34rtCn2AVaoCuTcHOjENSbzVuVbucRPpDdNKoixA,1470
|
|
418
414
|
dstack/_internal/server/schemas/logs.py,sha256=I4KaPgXiaYLWtovBchUiqK0wk-b7py-yTHKzhPH8tYc,453
|
|
@@ -429,7 +425,7 @@ dstack/_internal/server/security/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRk
|
|
|
429
425
|
dstack/_internal/server/security/permissions.py,sha256=7lWM9jiNt-6cMms6t5g9Fn0H3B3-MEJ7gDCtL7xZ9Lg,8187
|
|
430
426
|
dstack/_internal/server/services/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
431
427
|
dstack/_internal/server/services/config.py,sha256=yo8njslwfS7_blhbPPhOtzCMyg8N_mmFSw5aPvirSzw,10691
|
|
432
|
-
dstack/_internal/server/services/docker.py,sha256=
|
|
428
|
+
dstack/_internal/server/services/docker.py,sha256=DEEUFNYtyus4qDTBC33ujSZxl5wp8iKaKrpF2X-Bk88,5395
|
|
433
429
|
dstack/_internal/server/services/files.py,sha256=LJYFRtIJwB-QL-FhIu1408oqVVfa2lPZZlaTuZMo6pw,2847
|
|
434
430
|
dstack/_internal/server/services/fleets.py,sha256=B_LXk_inn0rIOwC6SejQuBgT8_C_e9QdCNN5pXH7Sx0,37095
|
|
435
431
|
dstack/_internal/server/services/gpus.py,sha256=_CGqUsizWf_Bq-_JYcRkLg_yg4iKpsp-1_1m5MedBr0,14758
|
|
@@ -442,16 +438,16 @@ dstack/_internal/server/services/permissions.py,sha256=l7Ngdelmn65vjw13NcOdaC6lB
|
|
|
442
438
|
dstack/_internal/server/services/placement.py,sha256=U-7z4kJ6ZyrCXzkDychWoOhniz19ooFwiNI2InoTLls,2420
|
|
443
439
|
dstack/_internal/server/services/plugins.py,sha256=aOlqfTUiU2aZ5G4DUW2rY4959PqS2r9imo5pfU3NUww,3851
|
|
444
440
|
dstack/_internal/server/services/probes.py,sha256=pdgtkOvBuvneUo4Gysg8_afibTf1wuWnrrcuAnOGBE0,357
|
|
445
|
-
dstack/_internal/server/services/projects.py,sha256=
|
|
441
|
+
dstack/_internal/server/services/projects.py,sha256=PZdMCi1PVu68c_rYfwJRk7hgM6ddkekxlG_IU_957QI,25276
|
|
446
442
|
dstack/_internal/server/services/repos.py,sha256=ECl1cbpdzhTv1P3Y9IQmoWyHHF8iXFyL4s2drfwRDvg,9352
|
|
447
443
|
dstack/_internal/server/services/resources.py,sha256=VRFOih_cMJdc0c2m9nSGsX8vWAJQV3M6N87aqS_JXfw,699
|
|
448
|
-
dstack/_internal/server/services/runs.py,sha256
|
|
444
|
+
dstack/_internal/server/services/runs.py,sha256=cZPyGTR7_7l88XAbqXep-P7xcGOCHZhLrIj9ua4z1Bs,47818
|
|
449
445
|
dstack/_internal/server/services/secrets.py,sha256=M7RS4X1-DIL0f7m6BBb3PhsrAbxwKUD3_pZEWRfR3sM,5567
|
|
450
446
|
dstack/_internal/server/services/ssh.py,sha256=DT7U_8ON8o30-53WlJwjd5kVrKyt4KPgKeN63NW3P8U,2883
|
|
451
447
|
dstack/_internal/server/services/users.py,sha256=L-COF4RjtwYSfnkGQefrSiEU0haTv0o1P2OuUdvMK8E,7378
|
|
452
448
|
dstack/_internal/server/services/volumes.py,sha256=DBGIUsysAO7sQ6vb4mjhzO9XLdyQvtNujucxhGnkSsU,16682
|
|
453
|
-
dstack/_internal/server/services/backends/__init__.py,sha256=
|
|
454
|
-
dstack/_internal/server/services/backends/handlers.py,sha256=
|
|
449
|
+
dstack/_internal/server/services/backends/__init__.py,sha256=xWHI-A24u9RE7H5I4A3e_JQyuQtp5pdKbU--ZyizrnU,13420
|
|
450
|
+
dstack/_internal/server/services/backends/handlers.py,sha256=Rz4QjqmmDGDzn6QbwxlJvV5oC6pE4PZN3FX0DVqnBHc,3539
|
|
455
451
|
dstack/_internal/server/services/encryption/__init__.py,sha256=3kCw_cxC3-Un1OIofdW5Gqsm0ZCXXTlGz09cULBx_uc,3155
|
|
456
452
|
dstack/_internal/server/services/encryption/keys/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
457
453
|
dstack/_internal/server/services/encryption/keys/aes.py,sha256=2He1p2_Rg6hnCeLIGJo-Yfdsij7so_338oY49RXuL3Q,2276
|
|
@@ -524,11 +520,11 @@ dstack/_internal/server/statics/e467d7d60aae81ab198b.svg,sha256=_XHc9mfQZgGkcy4h
|
|
|
524
520
|
dstack/_internal/server/statics/eb9b344b73818fe2b71a.png,sha256=2H14eOCQRyZhFGJ1Kn2LH1j70kTF1Qop4vH-tiKqyPI,85
|
|
525
521
|
dstack/_internal/server/statics/f517dd626eb964120de0.png,sha256=4QQuNa8SqmcZ67HK6739OHCyjnAJseU1bkcn454KRQs,159
|
|
526
522
|
dstack/_internal/server/statics/f958aecddee5d8e3222c.png,sha256=8CoZkVNgRfOAe62X1dU-AZDvwh_nESKaQblEmaX2Xrs,87
|
|
527
|
-
dstack/_internal/server/statics/index.html,sha256=
|
|
523
|
+
dstack/_internal/server/statics/index.html,sha256=zv7wlS5mh2aAps7sEhXTlCwp0UOsiqhsMiIEOhLxt2Q,11155
|
|
528
524
|
dstack/_internal/server/statics/logo-notext.svg,sha256=Oth7XfcAeDJcaPdzNtDaqYuLU7mCB0JqNtxeyWb6Z3c,11231
|
|
529
|
-
dstack/_internal/server/statics/main-
|
|
530
|
-
dstack/_internal/server/statics/main-
|
|
531
|
-
dstack/_internal/server/statics/main-
|
|
525
|
+
dstack/_internal/server/statics/main-56191fbfe77f49b251de.css,sha256=1exsufAv8oyw_4fbdcDJ7CtyRdWFyf-Boxua8HiK81c,1456319
|
|
526
|
+
dstack/_internal/server/statics/main-c51afa7f243e24d3e446.js,sha256=StRTIpOyv0Wt1fPh6XtuUiRQx5dRsDsXDNrNCbp1PPg,6928035
|
|
527
|
+
dstack/_internal/server/statics/main-c51afa7f243e24d3e446.js.map,sha256=gKw2zgeA1icax9QkCOX5jfYFPGe60omyZDRZCrdPtgo,9190078
|
|
532
528
|
dstack/_internal/server/statics/manifest.json,sha256=430w2BoWVmYYVr14lDvUxx-ROPt3VjigzeMqfLeiSCM,340
|
|
533
529
|
dstack/_internal/server/statics/robots.txt,sha256=kNJLw79pisHhc3OVAimMzKcq3x9WT6sF9IS4xI0crdI,67
|
|
534
530
|
dstack/_internal/server/statics/assets/android-chrome-144x144.png,sha256=tB3V-95O-VVEoawN5V1XFoMQRSK0I6gthraV8bATGaw,23414
|
|
@@ -601,7 +597,6 @@ dstack/_internal/server/statics/assets/mstile-70x70.png,sha256=Uh-iXux5J5EkcBPRH
|
|
|
601
597
|
dstack/_internal/server/statics/assets/yandex-browser-50x50.png,sha256=GGaavXItFc_V5P2G2_MTLFtGDMatissn8YkdBMyGv54,5403
|
|
602
598
|
dstack/_internal/server/statics/assets/yandex-browser-manifest.json,sha256=wQcuGCfkNsSmCXGg2IwxcwdykLSIx7xL3Y_WtmYYLq0,147
|
|
603
599
|
dstack/_internal/server/statics/static/media/entraID.d65d1f3e9486a8e56d24fc07b3230885.svg,sha256=_v0ZwN0Yi2FB4XNlplXWZ-jjOtFIFabQTcC2gyPIRE4,1302
|
|
604
|
-
dstack/_internal/server/statics/static/media/github.1f7102513534c83a9d8d735d2b8c12a2.svg,sha256=mNW9cuKg4s5dYQv8ZMzPsYyLJgxUg4jYBTape-pIy8c,2179
|
|
605
600
|
dstack/_internal/server/statics/static/media/google.b194b06fafd0a52aeb566922160ea514.svg,sha256=ft4tBpFOIPNWj-EcXicLUNgDafxFNlIlhtnMy7Zm4Mw,743
|
|
606
601
|
dstack/_internal/server/statics/static/media/logo.f602feeb138844eda97c8cb641461448.svg,sha256=z1mS8Qo_NNRDObJ41uZfbZA0ZieZUVTnROuJjoiQabE,16373
|
|
607
602
|
dstack/_internal/server/statics/static/media/okta.12f178e6873a1100965f2a4dbd18fcec.svg,sha256=KqFI05gQM135zC1plF1WBRF2F7CyKL7km97WKsZjAHI,319
|
|
@@ -620,7 +615,7 @@ dstack/_internal/utils/common.py,sha256=9PtlJwE7B4F70nL_iP1J4ky33bUeW7r73Np7GYvr
|
|
|
620
615
|
dstack/_internal/utils/cron.py,sha256=_axJFBCuZwMXZN04YPSk_gMvrRv6gNiGqd5hITyIg9Y,127
|
|
621
616
|
dstack/_internal/utils/crypto.py,sha256=2RTSyzePuwwqc1X2HO6lwcSFyZ2kujnqluoICQ2DLJQ,1462
|
|
622
617
|
dstack/_internal/utils/dxf.py,sha256=wguK9s6-69kqSDZkxd1kFEr6VlH5ixvFRJxizyOuJ8I,3229
|
|
623
|
-
dstack/_internal/utils/env.py,sha256=
|
|
618
|
+
dstack/_internal/utils/env.py,sha256=mEtlkO0sBHL-YjnYrlR_jCGcNFehn4IESvDezKkQYYM,2455
|
|
624
619
|
dstack/_internal/utils/event_loop.py,sha256=DO2ADtWfH2z8F2hBbg_EADSWzleQYGVZ9D1XYDpH-tk,880
|
|
625
620
|
dstack/_internal/utils/files.py,sha256=3ILdDvPPv2_vSEHRhLI15PG0R03RnO2aq_sWXGWIvm0,2692
|
|
626
621
|
dstack/_internal/utils/gpu.py,sha256=ZeWpy1nRLVh-FwBZdxbMoVjjCF0DWJlWfNoVgFhGx2w,1776
|
|
@@ -667,8 +662,8 @@ dstack/plugins/builtin/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3
|
|
|
667
662
|
dstack/plugins/builtin/rest_plugin/__init__.py,sha256=lgTsq8Z6Km2F2UhPRChVB4vDM5ZpWtdk1iB1aa20ypA,440
|
|
668
663
|
dstack/plugins/builtin/rest_plugin/_models.py,sha256=9hgVuU6OGSxidar88XhQnNo9izYWeQvVH45ciErv-Es,1910
|
|
669
664
|
dstack/plugins/builtin/rest_plugin/_plugin.py,sha256=h3r3Yc3h22i93fifPTgTm9Oojd1sN1O4DP7ZTV-kWpM,5386
|
|
670
|
-
dstack-0.19.
|
|
671
|
-
dstack-0.19.
|
|
672
|
-
dstack-0.19.
|
|
673
|
-
dstack-0.19.
|
|
674
|
-
dstack-0.19.
|
|
665
|
+
dstack-0.19.29.dist-info/METADATA,sha256=HcciEQov78Oe3HcLD7vquMFJHimJXPOx_AANTEW33gM,20586
|
|
666
|
+
dstack-0.19.29.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
|
667
|
+
dstack-0.19.29.dist-info/entry_points.txt,sha256=GnLrMS8hx3rWAySQjA7tPNhtixV6a-brRkmal1PKoHc,58
|
|
668
|
+
dstack-0.19.29.dist-info/licenses/LICENSE.md,sha256=qDABaRGjSKVOib1U8viw2P_96sIK7Puo426784oD9f8,15976
|
|
669
|
+
dstack-0.19.29.dist-info/RECORD,,
|
|
File without changes
|
|
@@ -1,104 +0,0 @@
|
|
|
1
|
-
import uuid
|
|
2
|
-
|
|
3
|
-
import requests
|
|
4
|
-
import yaml
|
|
5
|
-
|
|
6
|
-
from dstack._internal.core.errors import BackendError
|
|
7
|
-
from dstack._internal.core.models.instances import InstanceType
|
|
8
|
-
from dstack._internal.utils.logging import get_logger
|
|
9
|
-
|
|
10
|
-
logger = get_logger(__name__)
|
|
11
|
-
REQUEST_TIMEOUT = 20
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
class TensorDockAPIClient:
|
|
15
|
-
def __init__(self, api_key: str, api_token: str):
|
|
16
|
-
self.api_url = "https://marketplace.tensordock.com/api/v0".rstrip("/")
|
|
17
|
-
self.api_key = api_key
|
|
18
|
-
self.api_token = api_token
|
|
19
|
-
self.s = requests.Session()
|
|
20
|
-
|
|
21
|
-
def auth_test(self) -> bool:
|
|
22
|
-
resp = self.s.post(
|
|
23
|
-
self._url("/auth/test"),
|
|
24
|
-
data={"api_key": self.api_key, "api_token": self.api_token},
|
|
25
|
-
timeout=REQUEST_TIMEOUT,
|
|
26
|
-
)
|
|
27
|
-
resp.raise_for_status()
|
|
28
|
-
return resp.json()["success"]
|
|
29
|
-
|
|
30
|
-
def get_hostnode(self, hostnode_id: str) -> dict:
|
|
31
|
-
logger.debug("Fetching hostnode %s", hostnode_id)
|
|
32
|
-
resp = self.s.get(
|
|
33
|
-
self._url(f"/client/deploy/hostnodes/{hostnode_id}"), timeout=REQUEST_TIMEOUT
|
|
34
|
-
)
|
|
35
|
-
resp.raise_for_status()
|
|
36
|
-
data = resp.json()
|
|
37
|
-
if not data["success"]:
|
|
38
|
-
raise requests.HTTPError(data)
|
|
39
|
-
return data["hostnode"]
|
|
40
|
-
|
|
41
|
-
def deploy_single(self, instance_name: str, instance: InstanceType, cloudinit: dict) -> dict:
|
|
42
|
-
hostnode = self.get_hostnode(instance.name)
|
|
43
|
-
gpu = instance.resources.gpus[0]
|
|
44
|
-
for gpu_model in hostnode["specs"]["gpu"].keys():
|
|
45
|
-
if gpu_model.endswith(f"-{gpu.memory_mib // 1024}gb"):
|
|
46
|
-
if gpu.name.lower() in gpu_model.lower():
|
|
47
|
-
break
|
|
48
|
-
else:
|
|
49
|
-
raise ValueError(f"Can't find GPU on the hostnode: {gpu.name}")
|
|
50
|
-
form = {
|
|
51
|
-
"api_key": self.api_key,
|
|
52
|
-
"api_token": self.api_token,
|
|
53
|
-
"password": uuid.uuid4().hex, # we disable the password auth, but it's required
|
|
54
|
-
"name": instance_name,
|
|
55
|
-
"gpu_count": len(instance.resources.gpus),
|
|
56
|
-
"gpu_model": gpu_model,
|
|
57
|
-
"vcpus": instance.resources.cpus,
|
|
58
|
-
"ram": instance.resources.memory_mib // 1024,
|
|
59
|
-
"external_ports": "{%s}"
|
|
60
|
-
% max(hostnode["networking"]["ports"]), # it's safer to use a higher port
|
|
61
|
-
"internal_ports": "{22}",
|
|
62
|
-
"hostnode": instance.name,
|
|
63
|
-
"storage": round(instance.resources.disk.size_mib / 1024),
|
|
64
|
-
"operating_system": "Ubuntu 22.04 LTS",
|
|
65
|
-
"cloudinit_script": yaml.dump(cloudinit).replace("\n", "\\n"),
|
|
66
|
-
}
|
|
67
|
-
logger.debug(
|
|
68
|
-
"Deploying instance hostnode=%s, cpus=%s, memory=%s, gpu=%sx %s",
|
|
69
|
-
form["hostnode"],
|
|
70
|
-
form["vcpus"],
|
|
71
|
-
form["ram"],
|
|
72
|
-
form["gpu_count"],
|
|
73
|
-
form["gpu_model"],
|
|
74
|
-
)
|
|
75
|
-
resp = self.s.post(self._url("/client/deploy/single"), data=form, timeout=REQUEST_TIMEOUT)
|
|
76
|
-
resp.raise_for_status()
|
|
77
|
-
data = resp.json()
|
|
78
|
-
if not data["success"]:
|
|
79
|
-
raise requests.HTTPError(data)
|
|
80
|
-
data["password"] = form["password"]
|
|
81
|
-
return data
|
|
82
|
-
|
|
83
|
-
def delete_single_if_exists(self, instance_id: str):
|
|
84
|
-
logger.debug("Deleting instance %s", instance_id)
|
|
85
|
-
resp = self.s.post(
|
|
86
|
-
self._url("/client/delete/single"),
|
|
87
|
-
data={
|
|
88
|
-
"api_key": self.api_key,
|
|
89
|
-
"api_token": self.api_token,
|
|
90
|
-
"server": instance_id,
|
|
91
|
-
},
|
|
92
|
-
timeout=REQUEST_TIMEOUT,
|
|
93
|
-
)
|
|
94
|
-
try:
|
|
95
|
-
data = resp.json()
|
|
96
|
-
if "already terminated" in data.get("error", ""):
|
|
97
|
-
return
|
|
98
|
-
if not data.get("success"):
|
|
99
|
-
raise BackendError(data)
|
|
100
|
-
except ValueError: # json parsing error
|
|
101
|
-
raise BackendError(resp.text)
|
|
102
|
-
|
|
103
|
-
def _url(self, path):
|
|
104
|
-
return f"{self.api_url}/{path.lstrip('/')}"
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
from dstack._internal.core.backends.base.backend import Backend
|
|
2
|
-
from dstack._internal.core.backends.tensordock.compute import TensorDockCompute
|
|
3
|
-
from dstack._internal.core.backends.tensordock.models import TensorDockConfig
|
|
4
|
-
from dstack._internal.core.models.backends.base import BackendType
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
class TensorDockBackend(Backend):
|
|
8
|
-
TYPE = BackendType.TENSORDOCK
|
|
9
|
-
COMPUTE_CLASS = TensorDockCompute
|
|
10
|
-
|
|
11
|
-
def __init__(self, config: TensorDockConfig):
|
|
12
|
-
self.config = config
|
|
13
|
-
self._compute = TensorDockCompute(self.config)
|
|
14
|
-
|
|
15
|
-
def compute(self) -> TensorDockCompute:
|
|
16
|
-
return self._compute
|