dstack 0.19.11rc1__py3-none-any.whl → 0.19.12__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/offer.py +2 -0
- dstack/_internal/cli/services/configurators/run.py +43 -42
- dstack/_internal/cli/utils/run.py +10 -26
- dstack/_internal/cli/utils/updates.py +13 -1
- dstack/_internal/core/backends/aws/compute.py +21 -9
- dstack/_internal/core/backends/base/compute.py +7 -3
- dstack/_internal/core/backends/gcp/compute.py +43 -20
- dstack/_internal/core/backends/gcp/resources.py +18 -2
- dstack/_internal/core/backends/local/compute.py +4 -2
- dstack/_internal/core/backends/template/configurator.py.jinja +1 -6
- dstack/_internal/core/backends/template/models.py.jinja +4 -0
- dstack/_internal/core/models/configurations.py +1 -1
- dstack/_internal/core/models/fleets.py +6 -1
- dstack/_internal/core/models/profiles.py +43 -3
- dstack/_internal/core/models/repos/local.py +19 -13
- dstack/_internal/core/models/runs.py +78 -45
- dstack/_internal/server/background/tasks/process_running_jobs.py +47 -12
- dstack/_internal/server/background/tasks/process_runs.py +14 -1
- dstack/_internal/server/background/tasks/process_submitted_jobs.py +3 -3
- dstack/_internal/server/routers/repos.py +9 -4
- dstack/_internal/server/services/fleets.py +2 -2
- dstack/_internal/server/services/gateways/__init__.py +1 -1
- dstack/_internal/server/services/jobs/__init__.py +4 -4
- dstack/_internal/server/services/plugins.py +64 -32
- dstack/_internal/server/services/runner/client.py +4 -1
- dstack/_internal/server/services/runs.py +2 -2
- dstack/_internal/server/services/volumes.py +1 -1
- dstack/_internal/server/statics/index.html +1 -1
- dstack/_internal/server/statics/{main-b4803049eac16aea9a49.js → main-b0e80f8e26a168c129e9.js} +72 -25
- dstack/_internal/server/statics/{main-b4803049eac16aea9a49.js.map → main-b0e80f8e26a168c129e9.js.map} +1 -1
- dstack/_internal/server/testing/common.py +2 -1
- dstack/_internal/utils/common.py +4 -0
- dstack/api/server/_fleets.py +5 -1
- dstack/api/server/_runs.py +8 -0
- dstack/plugins/builtin/__init__.py +0 -0
- dstack/plugins/builtin/rest_plugin/__init__.py +18 -0
- dstack/plugins/builtin/rest_plugin/_models.py +48 -0
- dstack/plugins/builtin/rest_plugin/_plugin.py +127 -0
- dstack/version.py +1 -1
- {dstack-0.19.11rc1.dist-info → dstack-0.19.12.dist-info}/METADATA +2 -2
- {dstack-0.19.11rc1.dist-info → dstack-0.19.12.dist-info}/RECORD +44 -41
- dstack/_internal/utils/ignore.py +0 -92
- {dstack-0.19.11rc1.dist-info → dstack-0.19.12.dist-info}/WHEEL +0 -0
- {dstack-0.19.11rc1.dist-info → dstack-0.19.12.dist-info}/entry_points.txt +0 -0
- {dstack-0.19.11rc1.dist-info → dstack-0.19.12.dist-info}/licenses/LICENSE.md +0 -0
|
@@ -308,12 +308,13 @@ async def create_job(
|
|
|
308
308
|
) -> JobModel:
|
|
309
309
|
run_spec = RunSpec.parse_raw(run.run_spec)
|
|
310
310
|
job_spec = (await get_job_specs_from_run_spec(run_spec, replica_num=replica_num))[0]
|
|
311
|
+
job_spec.job_num = job_num
|
|
311
312
|
job = JobModel(
|
|
312
313
|
project_id=run.project_id,
|
|
313
314
|
run_id=run.id,
|
|
314
315
|
run_name=run.run_name,
|
|
315
316
|
job_num=job_num,
|
|
316
|
-
job_name=run.run_name + f"-
|
|
317
|
+
job_name=run.run_name + f"-{job_num}-{replica_num}",
|
|
317
318
|
replica_num=replica_num,
|
|
318
319
|
submission_num=submission_num,
|
|
319
320
|
submitted_at=submitted_at,
|
dstack/_internal/utils/common.py
CHANGED
|
@@ -314,3 +314,7 @@ def make_proxy_url(server_url: str, proxy_url: str) -> str:
|
|
|
314
314
|
path=concat_url_path(server.path, proxy.path),
|
|
315
315
|
)
|
|
316
316
|
return proxy.geturl()
|
|
317
|
+
|
|
318
|
+
|
|
319
|
+
def list_enum_values_for_annotation(enum_class: type[enum.Enum]) -> str:
|
|
320
|
+
return ", ".join(f"`{e.value}`" for e in enum_class)
|
dstack/api/server/_fleets.py
CHANGED
|
@@ -83,7 +83,7 @@ def _get_apply_plan_excludes(plan_input: ApplyFleetPlanInput) -> Dict:
|
|
|
83
83
|
apply_plan_excludes = {}
|
|
84
84
|
spec_excludes = _get_fleet_spec_excludes(plan_input.spec)
|
|
85
85
|
if spec_excludes:
|
|
86
|
-
apply_plan_excludes["spec"] =
|
|
86
|
+
apply_plan_excludes["spec"] = spec_excludes
|
|
87
87
|
current_resource = plan_input.current_resource
|
|
88
88
|
if current_resource is not None:
|
|
89
89
|
current_resource_excludes = {}
|
|
@@ -126,6 +126,10 @@ def _get_fleet_spec_excludes(fleet_spec: FleetSpec) -> Optional[Dict]:
|
|
|
126
126
|
configuration_excludes["tags"] = True
|
|
127
127
|
if profile.tags is None:
|
|
128
128
|
profile_excludes.add("tags")
|
|
129
|
+
if profile.startup_order is None:
|
|
130
|
+
profile_excludes.add("startup_order")
|
|
131
|
+
if profile.stop_criteria is None:
|
|
132
|
+
profile_excludes.add("stop_criteria")
|
|
129
133
|
if configuration_excludes:
|
|
130
134
|
spec_excludes["configuration"] = configuration_excludes
|
|
131
135
|
if profile_excludes:
|
dstack/api/server/_runs.py
CHANGED
|
@@ -188,6 +188,14 @@ def _get_run_spec_excludes(run_spec: RunSpec) -> Optional[Dict]:
|
|
|
188
188
|
configuration_excludes["shell"] = True
|
|
189
189
|
if configuration.priority is None:
|
|
190
190
|
configuration_excludes["priority"] = True
|
|
191
|
+
if configuration.startup_order is None:
|
|
192
|
+
configuration_excludes["startup_order"] = True
|
|
193
|
+
if profile is not None and profile.startup_order is None:
|
|
194
|
+
profile_excludes.add("startup_order")
|
|
195
|
+
if configuration.stop_criteria is None:
|
|
196
|
+
configuration_excludes["stop_criteria"] = True
|
|
197
|
+
if profile is not None and profile.stop_criteria is None:
|
|
198
|
+
profile_excludes.add("stop_criteria")
|
|
191
199
|
|
|
192
200
|
if configuration_excludes:
|
|
193
201
|
spec_excludes["configuration"] = configuration_excludes
|
|
File without changes
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# ruff: noqa: F401
|
|
2
|
+
from dstack.plugins.builtin.rest_plugin._models import (
|
|
3
|
+
FleetSpecRequest,
|
|
4
|
+
FleetSpecResponse,
|
|
5
|
+
GatewaySpecRequest,
|
|
6
|
+
GatewaySpecResponse,
|
|
7
|
+
RunSpecRequest,
|
|
8
|
+
RunSpecResponse,
|
|
9
|
+
SpecApplyRequest,
|
|
10
|
+
SpecApplyResponse,
|
|
11
|
+
VolumeSpecRequest,
|
|
12
|
+
VolumeSpecResponse,
|
|
13
|
+
)
|
|
14
|
+
from dstack.plugins.builtin.rest_plugin._plugin import (
|
|
15
|
+
PLUGIN_SERVICE_URI_ENV_VAR_NAME,
|
|
16
|
+
CustomApplyPolicy,
|
|
17
|
+
RESTPlugin,
|
|
18
|
+
)
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
from typing import Generic, Optional, TypeVar
|
|
2
|
+
|
|
3
|
+
from pydantic import BaseModel, Field
|
|
4
|
+
from typing_extensions import Annotated
|
|
5
|
+
|
|
6
|
+
from dstack._internal.core.models.fleets import FleetSpec
|
|
7
|
+
from dstack._internal.core.models.gateways import GatewaySpec
|
|
8
|
+
from dstack._internal.core.models.runs import RunSpec
|
|
9
|
+
from dstack._internal.core.models.volumes import VolumeSpec
|
|
10
|
+
|
|
11
|
+
SpecType = TypeVar("SpecType", RunSpec, FleetSpec, VolumeSpec, GatewaySpec)
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
class SpecApplyRequest(BaseModel, Generic[SpecType]):
|
|
15
|
+
user: Annotated[str, Field(description="The name of the user making the apply request")]
|
|
16
|
+
project: Annotated[str, Field(description="The name of the project the request is for")]
|
|
17
|
+
spec: Annotated[SpecType, Field(description="The spec to be applied")]
|
|
18
|
+
|
|
19
|
+
# Override dict() to remove __orig_class__ attribute and avoid "TypeError: Object of type _GenericAlias is not JSON serializable"
|
|
20
|
+
# error. This issue doesn't happen though when running the code in pytest, only when running the server.
|
|
21
|
+
def dict(self, *args, **kwargs):
|
|
22
|
+
d = super().dict(*args, **kwargs)
|
|
23
|
+
d.pop("__orig_class__", None)
|
|
24
|
+
return d
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
RunSpecRequest = SpecApplyRequest[RunSpec]
|
|
28
|
+
FleetSpecRequest = SpecApplyRequest[FleetSpec]
|
|
29
|
+
VolumeSpecRequest = SpecApplyRequest[VolumeSpec]
|
|
30
|
+
GatewaySpecRequest = SpecApplyRequest[GatewaySpec]
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
class SpecApplyResponse(BaseModel, Generic[SpecType]):
|
|
34
|
+
spec: Annotated[
|
|
35
|
+
SpecType,
|
|
36
|
+
Field(
|
|
37
|
+
description="The spec to apply, original spec if error otherwise original or mutated by plugin service if approved"
|
|
38
|
+
),
|
|
39
|
+
]
|
|
40
|
+
error: Annotated[
|
|
41
|
+
Optional[str], Field(description="Error message if request is rejected", min_length=1)
|
|
42
|
+
] = None
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
RunSpecResponse = SpecApplyResponse[RunSpec]
|
|
46
|
+
FleetSpecResponse = SpecApplyResponse[FleetSpec]
|
|
47
|
+
VolumeSpecResponse = SpecApplyResponse[VolumeSpec]
|
|
48
|
+
GatewaySpecResponse = SpecApplyResponse[GatewaySpec]
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
import json
|
|
2
|
+
import os
|
|
3
|
+
from typing import Type
|
|
4
|
+
|
|
5
|
+
import requests
|
|
6
|
+
from pydantic import ValidationError
|
|
7
|
+
|
|
8
|
+
from dstack._internal.core.errors import ServerClientError
|
|
9
|
+
from dstack._internal.core.models.fleets import FleetSpec
|
|
10
|
+
from dstack._internal.core.models.gateways import GatewaySpec
|
|
11
|
+
from dstack._internal.core.models.volumes import VolumeSpec
|
|
12
|
+
from dstack.plugins import ApplyPolicy, ApplySpec, Plugin, RunSpec, get_plugin_logger
|
|
13
|
+
from dstack.plugins.builtin.rest_plugin import (
|
|
14
|
+
FleetSpecRequest,
|
|
15
|
+
FleetSpecResponse,
|
|
16
|
+
GatewaySpecRequest,
|
|
17
|
+
GatewaySpecResponse,
|
|
18
|
+
RunSpecRequest,
|
|
19
|
+
RunSpecResponse,
|
|
20
|
+
SpecApplyRequest,
|
|
21
|
+
SpecApplyResponse,
|
|
22
|
+
VolumeSpecRequest,
|
|
23
|
+
VolumeSpecResponse,
|
|
24
|
+
)
|
|
25
|
+
|
|
26
|
+
logger = get_plugin_logger(__name__)
|
|
27
|
+
|
|
28
|
+
PLUGIN_SERVICE_URI_ENV_VAR_NAME = "DSTACK_PLUGIN_SERVICE_URI"
|
|
29
|
+
PLUGIN_REQUEST_TIMEOUT_SEC = 8
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
class CustomApplyPolicy(ApplyPolicy):
|
|
33
|
+
def __init__(self):
|
|
34
|
+
self._plugin_service_uri = os.getenv(PLUGIN_SERVICE_URI_ENV_VAR_NAME)
|
|
35
|
+
logger.info(f"Found plugin service at {self._plugin_service_uri}")
|
|
36
|
+
if not self._plugin_service_uri:
|
|
37
|
+
logger.error(
|
|
38
|
+
f"Cannot create policy because {PLUGIN_SERVICE_URI_ENV_VAR_NAME} is not set"
|
|
39
|
+
)
|
|
40
|
+
raise ServerClientError(f"{PLUGIN_SERVICE_URI_ENV_VAR_NAME} is not set")
|
|
41
|
+
|
|
42
|
+
def _check_request_rejected(self, response: SpecApplyResponse):
|
|
43
|
+
if response.error is not None:
|
|
44
|
+
logger.error(f"Plugin service rejected apply request: {response.error}")
|
|
45
|
+
raise ServerClientError(f"Apply request rejected: {response.error}")
|
|
46
|
+
|
|
47
|
+
def _call_plugin_service(self, spec_request: SpecApplyRequest, endpoint: str) -> ApplySpec:
|
|
48
|
+
response = None
|
|
49
|
+
try:
|
|
50
|
+
response = requests.post(
|
|
51
|
+
f"{self._plugin_service_uri}{endpoint}",
|
|
52
|
+
json=spec_request.dict(),
|
|
53
|
+
headers={"accept": "application/json", "Content-Type": "application/json"},
|
|
54
|
+
timeout=PLUGIN_REQUEST_TIMEOUT_SEC,
|
|
55
|
+
)
|
|
56
|
+
response.raise_for_status()
|
|
57
|
+
spec_json = json.loads(response.text)
|
|
58
|
+
return spec_json
|
|
59
|
+
except requests.exceptions.ConnectionError as e:
|
|
60
|
+
logger.error(
|
|
61
|
+
f"Could not connect to plugin service at {self._plugin_service_uri}: %s", e
|
|
62
|
+
)
|
|
63
|
+
raise ServerClientError(
|
|
64
|
+
f"Could not connect to plugin service at {self._plugin_service_uri}"
|
|
65
|
+
)
|
|
66
|
+
except requests.RequestException as e:
|
|
67
|
+
logger.error("Request to the plugin service failed: %s", e)
|
|
68
|
+
raise ServerClientError("Request to the plugin service failed")
|
|
69
|
+
|
|
70
|
+
def _on_apply(
|
|
71
|
+
self,
|
|
72
|
+
request_cls: Type[SpecApplyRequest],
|
|
73
|
+
response_cls: Type[SpecApplyResponse],
|
|
74
|
+
endpoint: str,
|
|
75
|
+
user: str,
|
|
76
|
+
project: str,
|
|
77
|
+
spec: ApplySpec,
|
|
78
|
+
) -> ApplySpec:
|
|
79
|
+
try:
|
|
80
|
+
spec_request = request_cls(user=user, project=project, spec=spec)
|
|
81
|
+
spec_json = self._call_plugin_service(spec_request, endpoint)
|
|
82
|
+
response = response_cls(**spec_json)
|
|
83
|
+
self._check_request_rejected(response)
|
|
84
|
+
return response.spec
|
|
85
|
+
except ValidationError:
|
|
86
|
+
logger.error(f"Plugin service returned invalid response:\n{spec_json}")
|
|
87
|
+
raise ServerClientError("Plugin service returned an invalid response")
|
|
88
|
+
|
|
89
|
+
def on_run_apply(self, user: str, project: str, spec: RunSpec) -> RunSpec:
|
|
90
|
+
return self._on_apply(
|
|
91
|
+
RunSpecRequest, RunSpecResponse, "/apply_policies/on_run_apply", user, project, spec
|
|
92
|
+
)
|
|
93
|
+
|
|
94
|
+
def on_fleet_apply(self, user: str, project: str, spec: FleetSpec) -> FleetSpec:
|
|
95
|
+
return self._on_apply(
|
|
96
|
+
FleetSpecRequest,
|
|
97
|
+
FleetSpecResponse,
|
|
98
|
+
"/apply_policies/on_fleet_apply",
|
|
99
|
+
user,
|
|
100
|
+
project,
|
|
101
|
+
spec,
|
|
102
|
+
)
|
|
103
|
+
|
|
104
|
+
def on_volume_apply(self, user: str, project: str, spec: VolumeSpec) -> VolumeSpec:
|
|
105
|
+
return self._on_apply(
|
|
106
|
+
VolumeSpecRequest,
|
|
107
|
+
VolumeSpecResponse,
|
|
108
|
+
"/apply_policies/on_volume_apply",
|
|
109
|
+
user,
|
|
110
|
+
project,
|
|
111
|
+
spec,
|
|
112
|
+
)
|
|
113
|
+
|
|
114
|
+
def on_gateway_apply(self, user: str, project: str, spec: GatewaySpec) -> GatewaySpec:
|
|
115
|
+
return self._on_apply(
|
|
116
|
+
GatewaySpecRequest,
|
|
117
|
+
GatewaySpecResponse,
|
|
118
|
+
"/apply_policies/on_gateway_apply",
|
|
119
|
+
user,
|
|
120
|
+
project,
|
|
121
|
+
spec,
|
|
122
|
+
)
|
|
123
|
+
|
|
124
|
+
|
|
125
|
+
class RESTPlugin(Plugin):
|
|
126
|
+
def get_apply_policies(self) -> list[ApplyPolicy]:
|
|
127
|
+
return [CustomApplyPolicy()]
|
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.12
|
|
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
|
|
@@ -22,7 +22,7 @@ Requires-Dist: cursor
|
|
|
22
22
|
Requires-Dist: filelock
|
|
23
23
|
Requires-Dist: gitpython
|
|
24
24
|
Requires-Dist: gpuhunt==0.1.6
|
|
25
|
-
Requires-Dist:
|
|
25
|
+
Requires-Dist: ignore-python>=0.2.0
|
|
26
26
|
Requires-Dist: jsonschema
|
|
27
27
|
Requires-Dist: packaging
|
|
28
28
|
Requires-Dist: paramiko>=3.2.0
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
dstack/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
2
|
-
dstack/version.py,sha256=
|
|
2
|
+
dstack/version.py,sha256=eZrGQsCvpqosKeZL0aLtMA0YuPk3m-HVoj8LhGs7QMs,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=GOqfcLEONWC1hGU36IYPuOhJXP_qC3Y6d2SQge_NdpY,953
|
|
@@ -16,7 +16,7 @@ dstack/_internal/cli/commands/gateway.py,sha256=DcD6P_MvXbSL9aXkLX9hgGYSAzARjgY6
|
|
|
16
16
|
dstack/_internal/cli/commands/init.py,sha256=bLhSlViNWtjflB6xNq_PuCR2o2A06h222luh1NeUgVA,1169
|
|
17
17
|
dstack/_internal/cli/commands/logs.py,sha256=o8ehPAKM12Xn9thg2jjnYdr7_wKqF-00ziVry8IVVwE,1528
|
|
18
18
|
dstack/_internal/cli/commands/metrics.py,sha256=ZS_dHD4_YK135J09xKpVTY_3CXzhj8QhDo18Ail9Pas,5862
|
|
19
|
-
dstack/_internal/cli/commands/offer.py,sha256=
|
|
19
|
+
dstack/_internal/cli/commands/offer.py,sha256=6gem4Wz6WJmHur9-eiC65JwqObrGIAybROCAp5pr59k,4221
|
|
20
20
|
dstack/_internal/cli/commands/project.py,sha256=V8gJwQWQGvGKQJPUyce_M7Ij_B7bOxYzo2IQgkLLHFE,6151
|
|
21
21
|
dstack/_internal/cli/commands/ps.py,sha256=5RU4mcL4-FT4PcXktfKb4htCOPqia7mIuVGgfK7x9lY,1894
|
|
22
22
|
dstack/_internal/cli/commands/server.py,sha256=4K0tp_tIUStCEMpWrUkRLwe27IgAt99RPpk2H1AWnXk,2817
|
|
@@ -32,15 +32,15 @@ dstack/_internal/cli/services/configurators/__init__.py,sha256=z94VPBFqybP8Zpwy3
|
|
|
32
32
|
dstack/_internal/cli/services/configurators/base.py,sha256=bGfde2zoma28lLE8MUACO4-NKT1CdJJQJoXrzjpz0mQ,3360
|
|
33
33
|
dstack/_internal/cli/services/configurators/fleet.py,sha256=jm4tNH6QQVplLdboCTlvRYUee3nZ0UYb_qLTrvtYVYM,14049
|
|
34
34
|
dstack/_internal/cli/services/configurators/gateway.py,sha256=czB2s89s7IowOmWnpDwWErPAUlW3FvFMizImhrkQiBM,8927
|
|
35
|
-
dstack/_internal/cli/services/configurators/run.py,sha256=
|
|
35
|
+
dstack/_internal/cli/services/configurators/run.py,sha256=oNjxxUeVzvuuEwot7WVjDbQqGxVfO6BoB7z6K-jKA2E,25248
|
|
36
36
|
dstack/_internal/cli/services/configurators/volume.py,sha256=riMXLQbgvHIIFwLKdHfad-_0iE9wE3G_rUmXU5P3ZS8,8519
|
|
37
37
|
dstack/_internal/cli/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
38
38
|
dstack/_internal/cli/utils/common.py,sha256=rfmzqrsgR3rXW3wj0vxDdvrhUUg2aIy4A6E9MZbd55g,1763
|
|
39
39
|
dstack/_internal/cli/utils/fleet.py,sha256=ch-LN1X9boSm-rFLW4mAJRmz0XliLhH0LvKD2DqSt2g,3942
|
|
40
40
|
dstack/_internal/cli/utils/gateway.py,sha256=qMYa1NTAT_O98x2_mSyWDRbiHj5fqt6xUXFh9NIUwAM,1502
|
|
41
41
|
dstack/_internal/cli/utils/rich.py,sha256=Gx1MJU929kMKsbdo9qF7XHARNta2426Ssb-xMLVhwbQ,5710
|
|
42
|
-
dstack/_internal/cli/utils/run.py,sha256=
|
|
43
|
-
dstack/_internal/cli/utils/updates.py,sha256=
|
|
42
|
+
dstack/_internal/cli/utils/run.py,sha256=X518VI3gjBkAfZt-1ErhuzQpCLATkZm8r_cf9L_Y6IE,8800
|
|
43
|
+
dstack/_internal/cli/utils/updates.py,sha256=pGr5keEmHojnbY0ayjWL4GWTz4ParY6fP85tHpJ11pI,3043
|
|
44
44
|
dstack/_internal/cli/utils/volume.py,sha256=mU9I06dVMFbpjfkefxrZNoSWadKLoib3U14rHudNQN4,1975
|
|
45
45
|
dstack/_internal/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
46
46
|
dstack/_internal/core/consts.py,sha256=c1Yd5UY6Qx7KeuYgloXWncWhMsYj6TqwlElda7NtB98,254
|
|
@@ -51,7 +51,7 @@ dstack/_internal/core/backends/models.py,sha256=aKQOrDEStouuwY4MacSen7SkoyAa6HR6
|
|
|
51
51
|
dstack/_internal/core/backends/aws/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
52
52
|
dstack/_internal/core/backends/aws/auth.py,sha256=BAe3HAedoAO42Fbv7YhpODKWlyil8M0PuRJsL-_u_kw,978
|
|
53
53
|
dstack/_internal/core/backends/aws/backend.py,sha256=pjROH-S9pgrSMm-Eox_ocL7cTU6mIMRxvURq7Vi-2J8,876
|
|
54
|
-
dstack/_internal/core/backends/aws/compute.py,sha256=
|
|
54
|
+
dstack/_internal/core/backends/aws/compute.py,sha256=GKxwfoDA_qVE1znwRGfvkPhvrl3XUDL9tAlFidB4SYs,36040
|
|
55
55
|
dstack/_internal/core/backends/aws/configurator.py,sha256=gGynfTQW89hUt7acAjVnZnRtCbzhno7l4baCKnBEuQI,7499
|
|
56
56
|
dstack/_internal/core/backends/aws/models.py,sha256=EUCHXHmZnshe3rwI9UtjilwcUMu1Z7MO4Y4-nlZ_IcA,4404
|
|
57
57
|
dstack/_internal/core/backends/aws/resources.py,sha256=Wht_USG8ps9HQBhAYfxDxjaob9kUnr7_WDCaXNzCeE0,22837
|
|
@@ -65,7 +65,7 @@ dstack/_internal/core/backends/azure/resources.py,sha256=cJWS2Yjxdg-XtjpdBxfVDZa
|
|
|
65
65
|
dstack/_internal/core/backends/azure/utils.py,sha256=taHMJq6UHRzUXLUcO2P5VCKy3wJaye2bG-6QdkEPNdY,1741
|
|
66
66
|
dstack/_internal/core/backends/base/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
67
67
|
dstack/_internal/core/backends/base/backend.py,sha256=hdFMHED1RMV9GVfLSU0yGhGE-cXlbLvt1coDA885PMM,505
|
|
68
|
-
dstack/_internal/core/backends/base/compute.py,sha256=
|
|
68
|
+
dstack/_internal/core/backends/base/compute.py,sha256=D4rRxUHUZOkUfAhmDE6MaS4AyHEPdRVcnS4LxQ-DF9E,28719
|
|
69
69
|
dstack/_internal/core/backends/base/configurator.py,sha256=OCv8N2oxcxy3In2zS1PKiCJ0a-COZwxGjBz2FYkQnfg,3807
|
|
70
70
|
dstack/_internal/core/backends/base/models.py,sha256=Ij0osOl-T-ABsKLoVg2eY81DMkwdWkevAnjXj2QnLXI,532
|
|
71
71
|
dstack/_internal/core/backends/base/offers.py,sha256=AzAAx5eSTaHv8CbWuGERTHS151x4oJuQn3tr_Bz9HKQ,6282
|
|
@@ -85,10 +85,10 @@ dstack/_internal/core/backends/dstack/models.py,sha256=Jbe0Syez43N5i97TlIc8l-5Vn
|
|
|
85
85
|
dstack/_internal/core/backends/gcp/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
86
86
|
dstack/_internal/core/backends/gcp/auth.py,sha256=VWCn34hapaZ3E0OHCoiAVL97o3s64RF9w85CZ6xdtmk,2235
|
|
87
87
|
dstack/_internal/core/backends/gcp/backend.py,sha256=OvTv1c7j4LTPCIEtkwD3-q6Eo1QET8xlM8CzbY0hLmI,572
|
|
88
|
-
dstack/_internal/core/backends/gcp/compute.py,sha256=
|
|
88
|
+
dstack/_internal/core/backends/gcp/compute.py,sha256=OObZgsOyQC-FvcA75xdO7MIoiFr9ncl5-Av6TtCOxdQ,42218
|
|
89
89
|
dstack/_internal/core/backends/gcp/configurator.py,sha256=mvI7WMz8cC1YnN-0KFIIEqkfcEBehRJI0WgKnqILjv0,6730
|
|
90
90
|
dstack/_internal/core/backends/gcp/models.py,sha256=biLA3rlFcoPatAZpKycuIl-8PdnNSAFiDCJjov65_zo,4612
|
|
91
|
-
dstack/_internal/core/backends/gcp/resources.py,sha256=
|
|
91
|
+
dstack/_internal/core/backends/gcp/resources.py,sha256=2jpg24NH4Ov4J4Of1F3DPkwEWkRxEi-x4ZTx8XSNGIQ,16926
|
|
92
92
|
dstack/_internal/core/backends/gcp/features/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
93
93
|
dstack/_internal/core/backends/gcp/features/tcpx.py,sha256=8bDR5kwF5qke5EWNdBscdbZQnC7oVXKSls3WPcoXgZI,2902
|
|
94
94
|
dstack/_internal/core/backends/kubernetes/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -105,7 +105,7 @@ dstack/_internal/core/backends/lambdalabs/configurator.py,sha256=JYtAFemQRi6tXTt
|
|
|
105
105
|
dstack/_internal/core/backends/lambdalabs/models.py,sha256=c9dAYd0wjun2dvMLUZO4D09XvEskBRehjLDN_nwbSEU,1036
|
|
106
106
|
dstack/_internal/core/backends/local/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
107
107
|
dstack/_internal/core/backends/local/backend.py,sha256=KJuNXUXrg60NhLywnExD1EXH2gK0TL-kzNWUPRNZ_Zg,427
|
|
108
|
-
dstack/_internal/core/backends/local/compute.py,sha256
|
|
108
|
+
dstack/_internal/core/backends/local/compute.py,sha256=-FUD8Ii5VTBtygAV1U3k1j10MFdK1whGvrSeRwTk29Y,3788
|
|
109
109
|
dstack/_internal/core/backends/nebius/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
110
110
|
dstack/_internal/core/backends/nebius/backend.py,sha256=2XqZIbSR8VzlfOnuVklXlDxNmwAkQj7txQN8VXF1j2E,566
|
|
111
111
|
dstack/_internal/core/backends/nebius/compute.py,sha256=OUNvDk9rU13NR0CADFqn7nQL8kxgSvL7kbNEV4cLzyQ,14761
|
|
@@ -133,8 +133,8 @@ dstack/_internal/core/backends/runpod/models.py,sha256=W3nO4sjvvWtfKYDZDVJ8oBSsg
|
|
|
133
133
|
dstack/_internal/core/backends/template/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
134
134
|
dstack/_internal/core/backends/template/backend.py.jinja,sha256=jqSUr05lKHSuGq2MCk4tHob1TfGiSSsHox1GuEz30zU,704
|
|
135
135
|
dstack/_internal/core/backends/template/compute.py.jinja,sha256=jLFZ_EMEjlgu6y3VJtvXs4qNXZmytZhl5JzJVM04lIc,3319
|
|
136
|
-
dstack/_internal/core/backends/template/configurator.py.jinja,sha256=
|
|
137
|
-
dstack/_internal/core/backends/template/models.py.jinja,sha256=
|
|
136
|
+
dstack/_internal/core/backends/template/configurator.py.jinja,sha256=W2Ycp__DZoWW-CligjQTJL6iuEQdT6mXmrb7Mi3jYfw,2500
|
|
137
|
+
dstack/_internal/core/backends/template/models.py.jinja,sha256=dhJd8uWoMvAHAsPpDMPNtdMKzJTIoXDtsGC0NCQ3Y08,2061
|
|
138
138
|
dstack/_internal/core/backends/tensordock/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
139
139
|
dstack/_internal/core/backends/tensordock/api_client.py,sha256=NUEKgu6JY6kqQXRqsghT-aBf7sNstHQo7J1WmqL-Qfs,3872
|
|
140
140
|
dstack/_internal/core/backends/tensordock/backend.py,sha256=KT5bRuD3KttEqiNNqQpW5f6nX7Qez-L74TBmYKy3puI,606
|
|
@@ -156,18 +156,18 @@ dstack/_internal/core/backends/vultr/models.py,sha256=TkqK_lW6w5k_7wsoFiKDb6NXuT
|
|
|
156
156
|
dstack/_internal/core/models/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
157
157
|
dstack/_internal/core/models/common.py,sha256=XWd79dmFGMrdpTcStH5fVmNXCKE0s7FsIorPL0saQ8w,2138
|
|
158
158
|
dstack/_internal/core/models/config.py,sha256=JJ7rT7dztzTWCY5TkoyxXxTvG5D4IFYhGe7EzwkLOWQ,581
|
|
159
|
-
dstack/_internal/core/models/configurations.py,sha256=
|
|
159
|
+
dstack/_internal/core/models/configurations.py,sha256=PA_u1gdTBCwKKIiGo7tH95Wv_ZZYX89mTCBOKs5cYko,19069
|
|
160
160
|
dstack/_internal/core/models/envs.py,sha256=yq84YRFBILOy4x3XnGcTgYpbZ69eFTCQPgBCr9Ndov4,4969
|
|
161
|
-
dstack/_internal/core/models/fleets.py,sha256=
|
|
161
|
+
dstack/_internal/core/models/fleets.py,sha256=aqDVlZMc71NjLrzwBF3qz-dHzocQT5Qip7QWl8ZbKuA,12263
|
|
162
162
|
dstack/_internal/core/models/gateways.py,sha256=_O8EWwHWLdgNoWY4P4u71KM-uEr5DDp42LXfyv1qMDI,4054
|
|
163
163
|
dstack/_internal/core/models/instances.py,sha256=Qh4QFZYQZxxn2HokafZiQyTiiwjiYuL9atxGlw6K980,5451
|
|
164
164
|
dstack/_internal/core/models/logs.py,sha256=Lsmtd_NrnChMjBJahUZpFb1j8Xobix9FHWf1L47FOGs,443
|
|
165
165
|
dstack/_internal/core/models/metrics.py,sha256=Xb8hCXUL-ncQ3PMsErIUAJTe9gwh5jyrQ4UQoZbibsc,269
|
|
166
166
|
dstack/_internal/core/models/placement.py,sha256=WJVq5ENJykyRarQzL2EeYQag_9_jV7VSAtR_xoFvPVM,720
|
|
167
|
-
dstack/_internal/core/models/profiles.py,sha256=
|
|
167
|
+
dstack/_internal/core/models/profiles.py,sha256=SSbslQfKoa6Sg8A_Z26xDNTujGZc51we11G5rlqfBpY,11659
|
|
168
168
|
dstack/_internal/core/models/projects.py,sha256=H5ZZRiyUEKifpTFAhl45KBi5ly7ooE0WmI329myK360,643
|
|
169
169
|
dstack/_internal/core/models/resources.py,sha256=rsf6hAhi5bfSb_Z9VcS3UoEG0G8Ohl6ekyrOStLOAqw,14114
|
|
170
|
-
dstack/_internal/core/models/runs.py,sha256=
|
|
170
|
+
dstack/_internal/core/models/runs.py,sha256=rOse2_uXcZL1poRI6OKegzC7N52OogpQ4r_pgByQ7J0,20796
|
|
171
171
|
dstack/_internal/core/models/secrets.py,sha256=IQyemsNpSzqOCB-VlVTuc4gyPFmXXO4mhko0Ur0ey3I,221
|
|
172
172
|
dstack/_internal/core/models/server.py,sha256=Hkc1v2s3KOiwslsWVmhUOAzcSeREoG-HD1SzSX9WUGg,152
|
|
173
173
|
dstack/_internal/core/models/services.py,sha256=2Hpi7j0Q1shaf_0wd0C0044AJAmuYi-D3qx3PH849oI,3076
|
|
@@ -178,7 +178,7 @@ dstack/_internal/core/models/backends/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCe
|
|
|
178
178
|
dstack/_internal/core/models/backends/base.py,sha256=Fbhs90NBMceXhjORwj7c2_pVriapCGSUMBFwuR-wRIg,1091
|
|
179
179
|
dstack/_internal/core/models/repos/__init__.py,sha256=7Qo1QgJ852LklUuM-mlCNFodp_XrQ4iqV7uRPiX_qm0,885
|
|
180
180
|
dstack/_internal/core/models/repos/base.py,sha256=nErlSR3AbG9fwDE5vuJK5DIrP8JB3fG8a7mXqosJ9gY,846
|
|
181
|
-
dstack/_internal/core/models/repos/local.py,sha256=
|
|
181
|
+
dstack/_internal/core/models/repos/local.py,sha256=zKnEOyN7hSDQ7EKn8q9aJ3uikiTTtGdGEN_3896HTTc,2913
|
|
182
182
|
dstack/_internal/core/models/repos/remote.py,sha256=r50v39KHhoVMfdnIHe58VJEi2Abm-37Y1ttXigdjc9o,11553
|
|
183
183
|
dstack/_internal/core/models/repos/virtual.py,sha256=8g4hGSQ6Z8oDKoF6cj2souJ2A5vRop5OyFCQ5z84rw4,2582
|
|
184
184
|
dstack/_internal/core/services/__init__.py,sha256=UVVcj26WYVgo7jHzD07sNRqSOO7zA3QzQv-9LnCDqR4,415
|
|
@@ -262,9 +262,9 @@ dstack/_internal/server/background/tasks/process_instances.py,sha256=E1NLac4ubiF
|
|
|
262
262
|
dstack/_internal/server/background/tasks/process_metrics.py,sha256=aJPHnmKQE19JVxJVwGFyyK7buUcbp9Smw9CkFO2DPAk,6135
|
|
263
263
|
dstack/_internal/server/background/tasks/process_placement_groups.py,sha256=gJ8Um3Vx-brazHVWdtVXPnov4rwvDr-0Vn1Voq1cYBQ,4108
|
|
264
264
|
dstack/_internal/server/background/tasks/process_prometheus_metrics.py,sha256=9VoGFqdiXcVkCi_NV1VqQdqllDkB0bHIqOHKMIZK1Fg,5183
|
|
265
|
-
dstack/_internal/server/background/tasks/process_running_jobs.py,sha256=
|
|
266
|
-
dstack/_internal/server/background/tasks/process_runs.py,sha256=
|
|
267
|
-
dstack/_internal/server/background/tasks/process_submitted_jobs.py,sha256=
|
|
265
|
+
dstack/_internal/server/background/tasks/process_running_jobs.py,sha256=8nzH9H2Kuaa1g7-SBCdhUWqDztlaQmnECyWqK0S9OaE,37636
|
|
266
|
+
dstack/_internal/server/background/tasks/process_runs.py,sha256=Sz_DQdi9Vd4VDbIzOC3lSExopxdnW5kcrDXOeqOR-2o,18522
|
|
267
|
+
dstack/_internal/server/background/tasks/process_submitted_jobs.py,sha256=tLLpdtLHN2xC6Ohc6f0we3oevw3pBt0_XrsufaFtIvE,27383
|
|
268
268
|
dstack/_internal/server/background/tasks/process_terminating_jobs.py,sha256=0Z3Q409RwSxOL_pgK8JktBthjtESEUH3ahwTLsTdYPk,3800
|
|
269
269
|
dstack/_internal/server/background/tasks/process_volumes.py,sha256=206rbT4ICeZtEmqh_94Rry_fgHfFLLaSEX9W-svwFk4,5089
|
|
270
270
|
dstack/_internal/server/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -347,7 +347,7 @@ dstack/_internal/server/routers/logs.py,sha256=_Euk283LbhlwHibJTKM-7YcpbeQFtWBqM
|
|
|
347
347
|
dstack/_internal/server/routers/metrics.py,sha256=VFgWhkOvxVFDLlRM_kXHYFylLcfCD6UjXInvcd7H4dY,2314
|
|
348
348
|
dstack/_internal/server/routers/projects.py,sha256=0R-w_6WXUbNo6fREAexFUQ3RoOJF2D_Iz35elKjym14,2717
|
|
349
349
|
dstack/_internal/server/routers/prometheus.py,sha256=UAcOE8dpGZe4Wd0EOIlFPMbjaNjzX8A7iHlooeRvsfo,944
|
|
350
|
-
dstack/_internal/server/routers/repos.py,sha256=
|
|
350
|
+
dstack/_internal/server/routers/repos.py,sha256=Si27qslFefmvRBuR2khvuFyjpd88-Hys-pvIbi9YJK0,3943
|
|
351
351
|
dstack/_internal/server/routers/runs.py,sha256=p44c_0bqwG1v5S_qX-HKbap1nmk1F2JVqaIXihjiUfY,5388
|
|
352
352
|
dstack/_internal/server/routers/secrets.py,sha256=50_qJCTYRpnGSlLyS93gqoV17wWewOVmM65PcG1bT_Y,856
|
|
353
353
|
dstack/_internal/server/routers/server.py,sha256=8pQmfyZj0nbebeOK9JuKhw9JmYuIYfJnY0LuYynWnGY,346
|
|
@@ -372,7 +372,7 @@ dstack/_internal/server/security/permissions.py,sha256=FJ_8YPhjmebA4jQjtQoAGEaj1
|
|
|
372
372
|
dstack/_internal/server/services/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
373
373
|
dstack/_internal/server/services/config.py,sha256=yo8njslwfS7_blhbPPhOtzCMyg8N_mmFSw5aPvirSzw,10691
|
|
374
374
|
dstack/_internal/server/services/docker.py,sha256=zAvjFHxIP03Td92NzbGEScz0piLjloE60tQ7vz0AeCA,5328
|
|
375
|
-
dstack/_internal/server/services/fleets.py,sha256=
|
|
375
|
+
dstack/_internal/server/services/fleets.py,sha256=9UL9mHo0IJhYrxiFHQUaLUA61PAQQ8gGwYNHpknlVqU,26599
|
|
376
376
|
dstack/_internal/server/services/instances.py,sha256=4feu9RfixOIVsLoFPHiYYUe0L6sf3v3h1asTBSF5cyc,18686
|
|
377
377
|
dstack/_internal/server/services/locking.py,sha256=7JUgNSplKRx7dxC4LIpmWw81agUtslEDTeDiNMPbAVg,3013
|
|
378
378
|
dstack/_internal/server/services/logging.py,sha256=Nu1628kW2hqB__N0Eyr07wGWjVWxfyJnczonTJ72kSM,417
|
|
@@ -380,15 +380,15 @@ dstack/_internal/server/services/metrics.py,sha256=jKLy1jSCVR_crqVu_CmsOMbvMkucW
|
|
|
380
380
|
dstack/_internal/server/services/offers.py,sha256=4hhqLzmo14_IY84FSDG59Sib1DrmTAOk-_q8M4aYoLU,7737
|
|
381
381
|
dstack/_internal/server/services/permissions.py,sha256=l7Ngdelmn65vjw13NcOdaC6lBYMRuSw6FbHzYwdK3nE,1005
|
|
382
382
|
dstack/_internal/server/services/placement.py,sha256=U-7z4kJ6ZyrCXzkDychWoOhniz19ooFwiNI2InoTLls,2420
|
|
383
|
-
dstack/_internal/server/services/plugins.py,sha256=
|
|
383
|
+
dstack/_internal/server/services/plugins.py,sha256=KgBqBUqxjQirRcYNuXVetE4OQj0EPkdC7ccbrNV1WQE,3825
|
|
384
384
|
dstack/_internal/server/services/projects.py,sha256=Je1iWZ-ArmyFxK1yMUzod5WRXyiIDxtuVp6pHcdctTQ,14988
|
|
385
385
|
dstack/_internal/server/services/prometheus.py,sha256=xq5G-Q2BJup9lS2F6__0wUVTs-k1Gr3dYclGzo2WoWo,12474
|
|
386
386
|
dstack/_internal/server/services/repos.py,sha256=f9ztN7jz_2gvD9hXF5sJwWDVyG2-NHRfjIdSukowPh8,9342
|
|
387
387
|
dstack/_internal/server/services/resources.py,sha256=VRFOih_cMJdc0c2m9nSGsX8vWAJQV3M6N87aqS_JXfw,699
|
|
388
|
-
dstack/_internal/server/services/runs.py,sha256=
|
|
388
|
+
dstack/_internal/server/services/runs.py,sha256=7nj4iQ6CZT3SEW9h3Vb8CBV65MUSSeQfZwgP_J4YlMo,39179
|
|
389
389
|
dstack/_internal/server/services/storage.py,sha256=6I0xI_3_RpJNbKZwHjDnjrEwXGdHfiaeb5li15T-M1I,1884
|
|
390
390
|
dstack/_internal/server/services/users.py,sha256=W-5xL7zsHNjeG7BBK54RWGvIrBOrw-FF0NcG_z9qhoE,7466
|
|
391
|
-
dstack/_internal/server/services/volumes.py,sha256=
|
|
391
|
+
dstack/_internal/server/services/volumes.py,sha256=vxjFn3ijrvwi9-aXipT0iQgNjgebdwcBRn1mKFL9zAQ,16244
|
|
392
392
|
dstack/_internal/server/services/backends/__init__.py,sha256=Aqo1GoqhZ_FsLEkCcBrvReKSq6E5w4QbBLrDXfGjiKU,13154
|
|
393
393
|
dstack/_internal/server/services/backends/handlers.py,sha256=j-MhBxrpdepoDG7f2tApjFnE23RVO5I15-hxHyOWnew,3251
|
|
394
394
|
dstack/_internal/server/services/encryption/__init__.py,sha256=3kCw_cxC3-Un1OIofdW5Gqsm0ZCXXTlGz09cULBx_uc,3155
|
|
@@ -396,11 +396,11 @@ dstack/_internal/server/services/encryption/keys/__init__.py,sha256=47DEQpj8HBSa
|
|
|
396
396
|
dstack/_internal/server/services/encryption/keys/aes.py,sha256=2He1p2_Rg6hnCeLIGJo-Yfdsij7so_338oY49RXuL3Q,2276
|
|
397
397
|
dstack/_internal/server/services/encryption/keys/base.py,sha256=mqumJiidoexUPoqxhQG6J_SpC1WGYwkdjKm1MUWnXo8,352
|
|
398
398
|
dstack/_internal/server/services/encryption/keys/identity.py,sha256=ryb_YSV6u4c7W1OsVfEpzJvZCrR4zZYlzLw_GpjpD2Q,741
|
|
399
|
-
dstack/_internal/server/services/gateways/__init__.py,sha256=
|
|
399
|
+
dstack/_internal/server/services/gateways/__init__.py,sha256=aDTpr45rkaQ2zBHnDQycwEDSQSno7bQ0buRPqTEDRxg,21536
|
|
400
400
|
dstack/_internal/server/services/gateways/client.py,sha256=XIJX3fGBbZ_AG8qZMTSE8KAB_ojq5YJFa0OXoD_dofg,7493
|
|
401
401
|
dstack/_internal/server/services/gateways/connection.py,sha256=ot3lV85XdmCT45vBWeyj57nLPcLPNm316zu3jMyeWjA,5625
|
|
402
402
|
dstack/_internal/server/services/gateways/pool.py,sha256=0LclTl1tyx-doS78LeaAKjr-SMp98zuwh5f9s06JSd0,1914
|
|
403
|
-
dstack/_internal/server/services/jobs/__init__.py,sha256=
|
|
403
|
+
dstack/_internal/server/services/jobs/__init__.py,sha256=hoQsjkUWdJ8xsO03WRwKOX-sHJuhVfsX-1rl26nQwR0,25554
|
|
404
404
|
dstack/_internal/server/services/jobs/configurators/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
405
405
|
dstack/_internal/server/services/jobs/configurators/base.py,sha256=WLRIBM50P8mfvpotzYjK3Gtf5ScQsuijGieH_zaYqCg,11984
|
|
406
406
|
dstack/_internal/server/services/jobs/configurators/dev.py,sha256=ufN6Sd8TwIsjQYNZE32fkAqJI7o2zjgoZThbrP-bd7U,2378
|
|
@@ -424,7 +424,7 @@ dstack/_internal/server/services/proxy/routers/service_proxy.py,sha256=5oB-SX8f_
|
|
|
424
424
|
dstack/_internal/server/services/proxy/services/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
425
425
|
dstack/_internal/server/services/proxy/services/service_proxy.py,sha256=4JrSxHqhBYqU1oENii89Db-bzkFWExYrOy-0mNEhWBs,4879
|
|
426
426
|
dstack/_internal/server/services/runner/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
427
|
-
dstack/_internal/server/services/runner/client.py,sha256=
|
|
427
|
+
dstack/_internal/server/services/runner/client.py,sha256=8xcZNdnQPHtXCVS2RdVS2_KDcrCUa1K6cnqcDZsisBU,15653
|
|
428
428
|
dstack/_internal/server/services/runner/ssh.py,sha256=H-X0015ZPwYq5tc31ytFF1uNaUAr9itAsABI2oPJWrk,5017
|
|
429
429
|
dstack/_internal/server/services/services/__init__.py,sha256=HQz72SNN8W9gUQ5INyO_Wd8TR9j3V6qoHFGEDEI920w,10862
|
|
430
430
|
dstack/_internal/server/services/services/autoscalers.py,sha256=0o_w9La-ex_P3VKG88w_XN3hkLkzryv5l1cH3pkZyAE,4315
|
|
@@ -454,10 +454,10 @@ dstack/_internal/server/statics/e467d7d60aae81ab198b.svg,sha256=_XHc9mfQZgGkcy4h
|
|
|
454
454
|
dstack/_internal/server/statics/eb9b344b73818fe2b71a.png,sha256=2H14eOCQRyZhFGJ1Kn2LH1j70kTF1Qop4vH-tiKqyPI,85
|
|
455
455
|
dstack/_internal/server/statics/f517dd626eb964120de0.png,sha256=4QQuNa8SqmcZ67HK6739OHCyjnAJseU1bkcn454KRQs,159
|
|
456
456
|
dstack/_internal/server/statics/f958aecddee5d8e3222c.png,sha256=8CoZkVNgRfOAe62X1dU-AZDvwh_nESKaQblEmaX2Xrs,87
|
|
457
|
-
dstack/_internal/server/statics/index.html,sha256=
|
|
457
|
+
dstack/_internal/server/statics/index.html,sha256=0WVNSeT_erId8atQuddi8_KDU9CkPZ-sSgKKYKpT1RM,10468
|
|
458
458
|
dstack/_internal/server/statics/main-8f9c66f404e9c7e7e020.css,sha256=RC2sAxRMpIK3myvsxKEhLk4OsxTOt7DgWunCwyn-B34,1336694
|
|
459
|
-
dstack/_internal/server/statics/main-
|
|
460
|
-
dstack/_internal/server/statics/main-
|
|
459
|
+
dstack/_internal/server/statics/main-b0e80f8e26a168c129e9.js,sha256=3gD82dvSvrkE0XhV35ENT8jfDemHl5uh_PWkS9F6LzE,6527495
|
|
460
|
+
dstack/_internal/server/statics/main-b0e80f8e26a168c129e9.js.map,sha256=aajRK86uIUop4KlWzHkMCQ1eHR4-pMe86iw8hXxffaU,8567969
|
|
461
461
|
dstack/_internal/server/statics/manifest.json,sha256=430w2BoWVmYYVr14lDvUxx-ROPt3VjigzeMqfLeiSCM,340
|
|
462
462
|
dstack/_internal/server/statics/robots.txt,sha256=kNJLw79pisHhc3OVAimMzKcq3x9WT6sF9IS4xI0crdI,67
|
|
463
463
|
dstack/_internal/server/statics/assets/android-chrome-144x144.png,sha256=tB3V-95O-VVEoawN5V1XFoMQRSK0I6gthraV8bATGaw,23414
|
|
@@ -535,21 +535,20 @@ dstack/_internal/server/statics/static/media/logo.f602feeb138844eda97c8cb6414614
|
|
|
535
535
|
dstack/_internal/server/statics/static/media/okta.12f178e6873a1100965f2a4dbd18fcec.svg,sha256=KqFI05gQM135zC1plF1WBRF2F7CyKL7km97WKsZjAHI,319
|
|
536
536
|
dstack/_internal/server/statics/static/media/theme.3994c817bb7dda191c1c9640dee0bf42.svg,sha256=ZxFFBVZWuRLqmWH4zhwGLNtKjOzHj-5MGJRunFAtu1I,561
|
|
537
537
|
dstack/_internal/server/testing/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
538
|
-
dstack/_internal/server/testing/common.py,sha256=
|
|
538
|
+
dstack/_internal/server/testing/common.py,sha256=kFVgsk_dl3akkh5rZ8kSJcKT0-K44nxRENkj2cGPvXU,31569
|
|
539
539
|
dstack/_internal/server/testing/conf.py,sha256=-zhujfFjTHNfQDOK-hBck32By11c_kC0OeinB3esQGg,1902
|
|
540
540
|
dstack/_internal/server/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
541
541
|
dstack/_internal/server/utils/common.py,sha256=PbjXtqYy1taKXpyG5ys8cIrz9MXqc9dBAsR_9D1brrk,1414
|
|
542
542
|
dstack/_internal/server/utils/logging.py,sha256=bxUS2uWG5snypNRfL0d5sMLCDytyOZac81PSQlb7_rs,1907
|
|
543
543
|
dstack/_internal/server/utils/routers.py,sha256=ZuoQEpWjtv4WhXCJmd0ZvwBPZ8eKplO7Bb7leT9e8Ho,4630
|
|
544
544
|
dstack/_internal/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
545
|
-
dstack/_internal/utils/common.py,sha256=
|
|
545
|
+
dstack/_internal/utils/common.py,sha256=W91g_g63X50a5vPCYl7ntW528QBMViaN1owqKc9VHeo,9383
|
|
546
546
|
dstack/_internal/utils/crypto.py,sha256=2RTSyzePuwwqc1X2HO6lwcSFyZ2kujnqluoICQ2DLJQ,1462
|
|
547
547
|
dstack/_internal/utils/dxf.py,sha256=wguK9s6-69kqSDZkxd1kFEr6VlH5ixvFRJxizyOuJ8I,3229
|
|
548
548
|
dstack/_internal/utils/env.py,sha256=HRbIspHpKHh05fMZeV23-hrZoV6vVMuniefD08u6ey0,357
|
|
549
549
|
dstack/_internal/utils/event_loop.py,sha256=DO2ADtWfH2z8F2hBbg_EADSWzleQYGVZ9D1XYDpH-tk,880
|
|
550
550
|
dstack/_internal/utils/gpu.py,sha256=ZeWpy1nRLVh-FwBZdxbMoVjjCF0DWJlWfNoVgFhGx2w,1776
|
|
551
551
|
dstack/_internal/utils/hash.py,sha256=mCERRtj9QwbpoP3vveBqbniSJiNMHG0vPSzp4fxmKv0,920
|
|
552
|
-
dstack/_internal/utils/ignore.py,sha256=Lb5l_qTxOApHGPRu_YHkpTB9e5P0KIOFibMm8vTs_eQ,3138
|
|
553
552
|
dstack/_internal/utils/interpolator.py,sha256=kLRm_DagGcjnkLPtMC9NaHioegsUvg8uk4lom38eV3I,2922
|
|
554
553
|
dstack/_internal/utils/json_schema.py,sha256=oh23z6jdl_wx3qkojk_2egyKZbdmYWZs12Gd9Bk46M8,371
|
|
555
554
|
dstack/_internal/utils/logging.py,sha256=j37rgL-fQh2_E3ec_RqDy6Ora-Aa79ZVV-BAgZJViME,97
|
|
@@ -567,14 +566,14 @@ dstack/api/_public/runs.py,sha256=e_-CqkzHJqeUvO_yXbLnmO8ADZEcgRtagZoL5fr2wmU,28
|
|
|
567
566
|
dstack/api/huggingface/__init__.py,sha256=oIrEij3wttLZ1yrywEGvCMd6zswMQrX5pPjrqdSi0UA,2201
|
|
568
567
|
dstack/api/server/__init__.py,sha256=Zyl1M51tifn4pB150yIsh39N96qUgMjg5XplcElHDxg,6097
|
|
569
568
|
dstack/api/server/_backends.py,sha256=tSvJ4j-yp-S-4IYo7pKHluDaSsx6Xbwo08Ff6Do85fo,1639
|
|
570
|
-
dstack/api/server/_fleets.py,sha256=
|
|
569
|
+
dstack/api/server/_fleets.py,sha256=fc5NQpm1xrQ0L8IerqtnPdNb-F_7AiCfk1EDLR2CZkk,5322
|
|
571
570
|
dstack/api/server/_gateways.py,sha256=FAjSi1l6dj1H0mHuFwcCH-QbRxAxVzPI8xE2cmcvWqo,2688
|
|
572
571
|
dstack/api/server/_group.py,sha256=f9a_YvwZ7s1vDTQhOWHLwm3kO84C5R_zXToD4cxAnvY,432
|
|
573
572
|
dstack/api/server/_logs.py,sha256=ng8QvFAIaoVOVChTK6Wuu5BeM6y7gAdx30KEYRsn9xA,500
|
|
574
573
|
dstack/api/server/_metrics.py,sha256=OPb8sLhI_U605sHOPrELgy0_6cNFLJVfpvr-qkEukRM,670
|
|
575
574
|
dstack/api/server/_projects.py,sha256=g6kNSU6jer8u7Kaut1I0Ft4wRMLBBCQShJf3fOB63hQ,1440
|
|
576
575
|
dstack/api/server/_repos.py,sha256=bqsKuZWyiNLE8UAdSZrYNtk1J3Gu5MXXnTMIoM9jxpI,1770
|
|
577
|
-
dstack/api/server/_runs.py,sha256
|
|
576
|
+
dstack/api/server/_runs.py,sha256=-19KLwzv_Gql-Qp7w3gauf7yXHQLQPMI4_mlB_uDTwc,8417
|
|
578
577
|
dstack/api/server/_secrets.py,sha256=VqLfrIcmBJtPxNDRkXTG44H5SWoY788YJapScUukvdY,1576
|
|
579
578
|
dstack/api/server/_users.py,sha256=XzhgGKc5Tsr0-xkz3T6rGyWZ1tO7aYNhLux2eE7dAoY,1738
|
|
580
579
|
dstack/api/server/_volumes.py,sha256=xxOt8o5G-bhMh6wSvF4BDFNoqVEhlM4BXQr2KvX0pN0,1937
|
|
@@ -584,8 +583,12 @@ dstack/plugins/__init__.py,sha256=buT1pcyORLgVbl89ATkRWJPhvejriVz7sNBjvuZRCRE,40
|
|
|
584
583
|
dstack/plugins/_base.py,sha256=-etiB-EozaJCg2wtmONfj8ic-K03qXvXyl_TIDp-kNE,2662
|
|
585
584
|
dstack/plugins/_models.py,sha256=1Gw--mDQ1_0FFr9Zur9LE8UbMoWESUpTdHHt12AyIZo,341
|
|
586
585
|
dstack/plugins/_utils.py,sha256=FqeWYb7zOrgZkO9Bd8caL5I81_TUEsysIzvxsULrmzk,392
|
|
587
|
-
dstack
|
|
588
|
-
dstack
|
|
589
|
-
dstack
|
|
590
|
-
dstack
|
|
591
|
-
dstack-0.19.
|
|
586
|
+
dstack/plugins/builtin/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
587
|
+
dstack/plugins/builtin/rest_plugin/__init__.py,sha256=lgTsq8Z6Km2F2UhPRChVB4vDM5ZpWtdk1iB1aa20ypA,440
|
|
588
|
+
dstack/plugins/builtin/rest_plugin/_models.py,sha256=9hgVuU6OGSxidar88XhQnNo9izYWeQvVH45ciErv-Es,1910
|
|
589
|
+
dstack/plugins/builtin/rest_plugin/_plugin.py,sha256=LbtjnXqd-51pR19Cr5rYxoIyDKjSOG4hIpXmv1Mpfnc,4615
|
|
590
|
+
dstack-0.19.12.dist-info/METADATA,sha256=R0LNdikrlXFe0hhYPGnF1nTHOnRtyp0pe5Kmn18W_Bg,20513
|
|
591
|
+
dstack-0.19.12.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
|
592
|
+
dstack-0.19.12.dist-info/entry_points.txt,sha256=GnLrMS8hx3rWAySQjA7tPNhtixV6a-brRkmal1PKoHc,58
|
|
593
|
+
dstack-0.19.12.dist-info/licenses/LICENSE.md,sha256=qDABaRGjSKVOib1U8viw2P_96sIK7Puo426784oD9f8,15976
|
|
594
|
+
dstack-0.19.12.dist-info/RECORD,,
|