dstack 0.19.32__py3-none-any.whl → 0.19.33__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 +1 -1
- dstack/_internal/cli/services/configurators/run.py +1 -5
- dstack/_internal/core/backends/aws/compute.py +8 -5
- dstack/_internal/core/backends/azure/compute.py +9 -6
- dstack/_internal/core/backends/base/compute.py +40 -17
- dstack/_internal/core/backends/base/offers.py +5 -1
- dstack/_internal/core/backends/datacrunch/compute.py +9 -6
- dstack/_internal/core/backends/gcp/compute.py +137 -7
- dstack/_internal/core/backends/gcp/models.py +7 -0
- dstack/_internal/core/backends/gcp/resources.py +87 -5
- dstack/_internal/core/backends/hotaisle/compute.py +11 -1
- dstack/_internal/core/backends/kubernetes/compute.py +161 -83
- dstack/_internal/core/backends/kubernetes/models.py +4 -2
- dstack/_internal/core/backends/nebius/compute.py +9 -6
- dstack/_internal/core/backends/oci/compute.py +9 -6
- dstack/_internal/core/backends/runpod/compute.py +10 -6
- dstack/_internal/core/backends/vastai/compute.py +3 -1
- dstack/_internal/core/backends/vastai/configurator.py +0 -1
- dstack/_internal/core/models/fleets.py +1 -1
- dstack/_internal/core/models/profiles.py +1 -1
- dstack/_internal/core/models/runs.py +3 -2
- dstack/_internal/core/models/users.py +10 -0
- dstack/_internal/core/services/configs/__init__.py +1 -0
- dstack/_internal/server/background/tasks/process_instances.py +5 -1
- dstack/_internal/server/background/tasks/process_running_jobs.py +1 -0
- dstack/_internal/server/migrations/versions/ff1d94f65b08_user_ssh_key.py +34 -0
- dstack/_internal/server/models.py +3 -0
- dstack/_internal/server/routers/runs.py +5 -1
- dstack/_internal/server/routers/users.py +14 -2
- dstack/_internal/server/services/runs.py +9 -4
- dstack/_internal/server/services/users.py +35 -2
- dstack/_internal/server/statics/index.html +1 -1
- dstack/_internal/server/statics/main-720ce3a11140daa480cc.css +3 -0
- dstack/_internal/server/statics/{main-c51afa7f243e24d3e446.js → main-97c7e184573ca23f9fe4.js} +12218 -7625
- dstack/_internal/server/statics/{main-c51afa7f243e24d3e446.js.map → main-97c7e184573ca23f9fe4.js.map} +1 -1
- dstack/api/_public/__init__.py +9 -12
- dstack/api/_public/repos.py +0 -21
- dstack/api/_public/runs.py +64 -9
- dstack/api/server/_users.py +17 -2
- dstack/version.py +2 -2
- {dstack-0.19.32.dist-info → dstack-0.19.33.dist-info}/METADATA +2 -2
- {dstack-0.19.32.dist-info → dstack-0.19.33.dist-info}/RECORD +45 -44
- dstack/_internal/server/statics/main-56191fbfe77f49b251de.css +0 -3
- {dstack-0.19.32.dist-info → dstack-0.19.33.dist-info}/WHEEL +0 -0
- {dstack-0.19.32.dist-info → dstack-0.19.33.dist-info}/entry_points.txt +0 -0
- {dstack-0.19.32.dist-info → dstack-0.19.33.dist-info}/licenses/LICENSE.md +0 -0
dstack/api/_public/__init__.py
CHANGED
|
@@ -2,12 +2,11 @@ from typing import Optional
|
|
|
2
2
|
|
|
3
3
|
import dstack._internal.core.services.api_client as api_client_service
|
|
4
4
|
from dstack._internal.core.errors import ConfigurationError
|
|
5
|
-
from dstack._internal.core.services.configs import ConfigManager
|
|
6
5
|
from dstack._internal.utils.logging import get_logger
|
|
7
|
-
from dstack._internal.utils.path import PathLike
|
|
6
|
+
from dstack._internal.utils.path import PathLike as PathLike
|
|
8
7
|
from dstack.api._public.backends import BackendCollection
|
|
9
|
-
from dstack.api._public.repos import RepoCollection
|
|
10
|
-
from dstack.api._public.runs import RunCollection
|
|
8
|
+
from dstack.api._public.repos import RepoCollection
|
|
9
|
+
from dstack.api._public.runs import RunCollection, warn
|
|
11
10
|
from dstack.api.server import APIClient
|
|
12
11
|
|
|
13
12
|
logger = get_logger(__name__)
|
|
@@ -35,24 +34,24 @@ class Client:
|
|
|
35
34
|
# Args:
|
|
36
35
|
# api_client: low-level server API client
|
|
37
36
|
# project_name: project name used for runs
|
|
38
|
-
# ssh_identity_file:
|
|
37
|
+
# ssh_identity_file: deprecated and will be removed in 0.19.40
|
|
39
38
|
# """
|
|
40
39
|
self._client = api_client
|
|
41
40
|
self._project = project_name
|
|
42
41
|
self._repos = RepoCollection(api_client, project_name)
|
|
43
42
|
self._backends = BackendCollection(api_client, project_name)
|
|
44
43
|
self._runs = RunCollection(api_client, project_name, self)
|
|
45
|
-
if ssh_identity_file:
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
44
|
+
if ssh_identity_file is not None:
|
|
45
|
+
warn(
|
|
46
|
+
"[code]ssh_identity_file[/code] in [code]Client[/code] is deprecated and ignored; will be removed"
|
|
47
|
+
" since 0.19.40"
|
|
48
|
+
)
|
|
49
49
|
|
|
50
50
|
@staticmethod
|
|
51
51
|
def from_config(
|
|
52
52
|
project_name: Optional[str] = None,
|
|
53
53
|
server_url: Optional[str] = None,
|
|
54
54
|
user_token: Optional[str] = None,
|
|
55
|
-
ssh_identity_file: Optional[PathLike] = None,
|
|
56
55
|
) -> "Client":
|
|
57
56
|
"""
|
|
58
57
|
Creates a Client using the default configuration from `~/.dstack/config.yml` if it exists.
|
|
@@ -61,7 +60,6 @@ class Client:
|
|
|
61
60
|
project_name: The name of the project. required if `server_url` and `user_token` are specified.
|
|
62
61
|
server_url: The dstack server URL (e.g. `http://localhost:3000/` or `https://sky.dstack.ai`).
|
|
63
62
|
user_token: The dstack user token.
|
|
64
|
-
ssh_identity_file: The private SSH key path for SSH tunneling.
|
|
65
63
|
|
|
66
64
|
Returns:
|
|
67
65
|
A client instance.
|
|
@@ -75,7 +73,6 @@ class Client:
|
|
|
75
73
|
return Client(
|
|
76
74
|
api_client=api_client,
|
|
77
75
|
project_name=project_name,
|
|
78
|
-
ssh_identity_file=ssh_identity_file,
|
|
79
76
|
)
|
|
80
77
|
|
|
81
78
|
@property
|
dstack/api/_public/repos.py
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
from pathlib import Path
|
|
2
1
|
from typing import Literal, Optional, Union, overload
|
|
3
2
|
|
|
4
3
|
from git import InvalidGitRepositoryError
|
|
@@ -18,7 +17,6 @@ from dstack._internal.core.services.repos import (
|
|
|
18
17
|
get_repo_creds_and_default_branch,
|
|
19
18
|
load_repo,
|
|
20
19
|
)
|
|
21
|
-
from dstack._internal.utils.crypto import generate_rsa_key_pair
|
|
22
20
|
from dstack._internal.utils.logging import get_logger
|
|
23
21
|
from dstack._internal.utils.path import PathLike
|
|
24
22
|
from dstack.api.server import APIClient
|
|
@@ -209,22 +207,3 @@ class RepoCollection:
|
|
|
209
207
|
return method(self._project, repo_id)
|
|
210
208
|
except ResourceNotExistsError:
|
|
211
209
|
return None
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
def get_ssh_keypair(key_path: Optional[PathLike], dstack_key_path: Path) -> str:
|
|
215
|
-
"""Returns a path to the private key"""
|
|
216
|
-
if key_path is not None:
|
|
217
|
-
key_path = Path(key_path).expanduser().resolve()
|
|
218
|
-
pub_key = (
|
|
219
|
-
key_path
|
|
220
|
-
if key_path.suffix == ".pub"
|
|
221
|
-
else key_path.with_suffix(key_path.suffix + ".pub")
|
|
222
|
-
)
|
|
223
|
-
private_key = pub_key.with_suffix("")
|
|
224
|
-
if pub_key.exists() and private_key.exists():
|
|
225
|
-
return str(private_key)
|
|
226
|
-
raise ConfigurationError(f"Make sure valid keypair exists: {private_key}(.pub)")
|
|
227
|
-
|
|
228
|
-
if not dstack_key_path.exists():
|
|
229
|
-
generate_rsa_key_pair(private_key_path=dstack_key_path)
|
|
230
|
-
return str(dstack_key_path)
|
dstack/api/_public/runs.py
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import base64
|
|
2
|
+
import hashlib
|
|
3
|
+
import os
|
|
2
4
|
import queue
|
|
3
5
|
import tempfile
|
|
4
6
|
import threading
|
|
@@ -15,6 +17,7 @@ from urllib.parse import urlparse
|
|
|
15
17
|
from websocket import WebSocketApp
|
|
16
18
|
|
|
17
19
|
import dstack.api as api
|
|
20
|
+
from dstack._internal.cli.utils.common import warn
|
|
18
21
|
from dstack._internal.core.consts import DSTACK_RUNNER_HTTP_PORT, DSTACK_RUNNER_SSH_PORT
|
|
19
22
|
from dstack._internal.core.errors import ClientError, ConfigurationError, ResourceNotExistsError
|
|
20
23
|
from dstack._internal.core.models.backends.base import BackendType
|
|
@@ -45,11 +48,14 @@ from dstack._internal.core.models.runs import (
|
|
|
45
48
|
get_service_port,
|
|
46
49
|
)
|
|
47
50
|
from dstack._internal.core.models.runs import Run as RunModel
|
|
51
|
+
from dstack._internal.core.models.users import UserWithCreds
|
|
52
|
+
from dstack._internal.core.services.configs import ConfigManager
|
|
48
53
|
from dstack._internal.core.services.logs import URLReplacer
|
|
49
54
|
from dstack._internal.core.services.ssh.attach import SSHAttach
|
|
50
55
|
from dstack._internal.core.services.ssh.ports import PortsLock
|
|
51
56
|
from dstack._internal.server.schemas.logs import PollLogsRequest
|
|
52
57
|
from dstack._internal.utils.common import get_or_error, make_proxy_url
|
|
58
|
+
from dstack._internal.utils.crypto import generate_rsa_key_pair
|
|
53
59
|
from dstack._internal.utils.files import create_file_archive
|
|
54
60
|
from dstack._internal.utils.logging import get_logger
|
|
55
61
|
from dstack._internal.utils.path import PathLike, path_in_dir
|
|
@@ -72,16 +78,20 @@ class Run(ABC):
|
|
|
72
78
|
self,
|
|
73
79
|
api_client: APIClient,
|
|
74
80
|
project: str,
|
|
75
|
-
ssh_identity_file: Optional[PathLike],
|
|
76
81
|
run: RunModel,
|
|
77
82
|
ports_lock: Optional[PortsLock] = None,
|
|
83
|
+
ssh_identity_file: Optional[PathLike] = None,
|
|
78
84
|
):
|
|
79
85
|
self._api_client = api_client
|
|
80
86
|
self._project = project
|
|
81
|
-
self._ssh_identity_file = ssh_identity_file
|
|
82
87
|
self._run = run
|
|
83
88
|
self._ports_lock: Optional[PortsLock] = ports_lock
|
|
84
89
|
self._ssh_attach: Optional[SSHAttach] = None
|
|
90
|
+
if ssh_identity_file is not None:
|
|
91
|
+
warn(
|
|
92
|
+
"[code]ssh_identity_file[/code] in [code]Run[/code] is deprecated and ignored; will be removed"
|
|
93
|
+
" since 0.19.40"
|
|
94
|
+
)
|
|
85
95
|
|
|
86
96
|
@property
|
|
87
97
|
def name(self) -> str:
|
|
@@ -270,9 +280,33 @@ class Run(ABC):
|
|
|
270
280
|
Raises:
|
|
271
281
|
dstack.api.PortUsedError: If ports are in use or the run is attached by another process.
|
|
272
282
|
"""
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
283
|
+
if not ssh_identity_file:
|
|
284
|
+
user = self._api_client.users.get_my_user()
|
|
285
|
+
run_ssh_key_pub = self._run.run_spec.ssh_key_pub
|
|
286
|
+
config_manager = ConfigManager()
|
|
287
|
+
if isinstance(user, UserWithCreds) and user.ssh_public_key == run_ssh_key_pub:
|
|
288
|
+
token_hash = hashlib.sha1(user.creds.token.encode()).hexdigest()[:8]
|
|
289
|
+
config_manager.dstack_ssh_dir.mkdir(parents=True, exist_ok=True)
|
|
290
|
+
ssh_identity_file = config_manager.dstack_ssh_dir / token_hash
|
|
291
|
+
|
|
292
|
+
def key_opener(path, flags):
|
|
293
|
+
return os.open(path, flags, 0o600)
|
|
294
|
+
|
|
295
|
+
with open(ssh_identity_file, "wb", opener=key_opener) as f:
|
|
296
|
+
assert user.ssh_private_key
|
|
297
|
+
f.write(user.ssh_private_key.encode())
|
|
298
|
+
else:
|
|
299
|
+
if config_manager.dstack_key_path.exists():
|
|
300
|
+
# TODO: Remove since 0.19.40
|
|
301
|
+
warn(
|
|
302
|
+
f"Using legacy [code]{config_manager.dstack_key_path}[/code]."
|
|
303
|
+
" Future versions will use the user SSH key from the server.",
|
|
304
|
+
)
|
|
305
|
+
ssh_identity_file = config_manager.dstack_key_path
|
|
306
|
+
else:
|
|
307
|
+
raise ConfigurationError(
|
|
308
|
+
f"User SSH key doen't match; default SSH key ({config_manager.dstack_key_path}) doesn't exist"
|
|
309
|
+
)
|
|
276
310
|
ssh_identity_file = str(ssh_identity_file)
|
|
277
311
|
|
|
278
312
|
job = self._find_job(replica_num=replica_num, job_num=job_num)
|
|
@@ -434,6 +468,7 @@ class RunCollection:
|
|
|
434
468
|
profile: Optional[Profile] = None,
|
|
435
469
|
configuration_path: Optional[str] = None,
|
|
436
470
|
repo_dir: Optional[str] = None,
|
|
471
|
+
ssh_identity_file: Optional[PathLike] = None,
|
|
437
472
|
) -> RunPlan:
|
|
438
473
|
"""
|
|
439
474
|
Get a run plan.
|
|
@@ -465,6 +500,19 @@ class RunCollection:
|
|
|
465
500
|
if repo_dir is None and configuration.repos:
|
|
466
501
|
repo_dir = configuration.repos[0].path
|
|
467
502
|
|
|
503
|
+
if ssh_identity_file:
|
|
504
|
+
ssh_key_pub = Path(ssh_identity_file).with_suffix(".pub").read_text()
|
|
505
|
+
else:
|
|
506
|
+
config_manager = ConfigManager()
|
|
507
|
+
if not config_manager.dstack_key_path.exists():
|
|
508
|
+
generate_rsa_key_pair(private_key_path=config_manager.dstack_key_path)
|
|
509
|
+
warn(
|
|
510
|
+
f"Using legacy [code]{config_manager.dstack_key_path.with_suffix('.pub')}[/code]."
|
|
511
|
+
" Future versions will use the user SSH key from the server.",
|
|
512
|
+
)
|
|
513
|
+
ssh_key_pub = config_manager.dstack_key_path.with_suffix(".pub").read_text()
|
|
514
|
+
# TODO: Uncomment after 0.19.40
|
|
515
|
+
# ssh_key_pub = None
|
|
468
516
|
run_spec = RunSpec(
|
|
469
517
|
run_name=configuration.name,
|
|
470
518
|
repo_id=repo.repo_id,
|
|
@@ -477,7 +525,7 @@ class RunCollection:
|
|
|
477
525
|
configuration_path=configuration_path,
|
|
478
526
|
configuration=configuration,
|
|
479
527
|
profile=profile,
|
|
480
|
-
ssh_key_pub=
|
|
528
|
+
ssh_key_pub=ssh_key_pub,
|
|
481
529
|
)
|
|
482
530
|
logger.debug("Getting run plan")
|
|
483
531
|
run_plan = self._api_client.runs.get_plan(self._project, run_spec)
|
|
@@ -546,6 +594,7 @@ class RunCollection:
|
|
|
546
594
|
profile: Optional[Profile] = None,
|
|
547
595
|
configuration_path: Optional[str] = None,
|
|
548
596
|
reserve_ports: bool = True,
|
|
597
|
+
ssh_identity_file: Optional[PathLike] = None,
|
|
549
598
|
) -> Run:
|
|
550
599
|
"""
|
|
551
600
|
Apply the run configuration.
|
|
@@ -567,6 +616,7 @@ class RunCollection:
|
|
|
567
616
|
repo=repo,
|
|
568
617
|
profile=profile,
|
|
569
618
|
configuration_path=configuration_path,
|
|
619
|
+
ssh_identity_file=ssh_identity_file,
|
|
570
620
|
)
|
|
571
621
|
run = self.apply_plan(
|
|
572
622
|
run_plan=run_plan,
|
|
@@ -709,6 +759,13 @@ class RunCollection:
|
|
|
709
759
|
creation_policy=creation_policy,
|
|
710
760
|
idle_duration=idle_duration, # type: ignore[assignment]
|
|
711
761
|
)
|
|
762
|
+
config_manager = ConfigManager()
|
|
763
|
+
if not config_manager.dstack_key_path.exists():
|
|
764
|
+
generate_rsa_key_pair(private_key_path=config_manager.dstack_key_path)
|
|
765
|
+
warn(
|
|
766
|
+
f"Using legacy [code]{config_manager.dstack_key_path.with_suffix('.pub')}[/code]."
|
|
767
|
+
" Future versions will use the user SSH key from the server.",
|
|
768
|
+
)
|
|
712
769
|
run_spec = RunSpec(
|
|
713
770
|
run_name=run_name,
|
|
714
771
|
repo_id=repo.repo_id,
|
|
@@ -718,7 +775,7 @@ class RunCollection:
|
|
|
718
775
|
configuration_path=configuration_path,
|
|
719
776
|
configuration=configuration,
|
|
720
777
|
profile=profile,
|
|
721
|
-
ssh_key_pub=
|
|
778
|
+
ssh_key_pub=config_manager.dstack_key_path.with_suffix(".pub").read_text(),
|
|
722
779
|
)
|
|
723
780
|
logger.debug("Getting run plan")
|
|
724
781
|
run_plan = self._api_client.runs.get_plan(self._project, run_spec)
|
|
@@ -800,7 +857,6 @@ class RunCollection:
|
|
|
800
857
|
return Run(
|
|
801
858
|
self._api_client,
|
|
802
859
|
self._project,
|
|
803
|
-
self._client.ssh_identity_file,
|
|
804
860
|
run,
|
|
805
861
|
)
|
|
806
862
|
|
|
@@ -808,7 +864,6 @@ class RunCollection:
|
|
|
808
864
|
return Run(
|
|
809
865
|
self._api_client,
|
|
810
866
|
self._project,
|
|
811
|
-
self._client.ssh_identity_file,
|
|
812
867
|
run,
|
|
813
868
|
ports_lock,
|
|
814
869
|
)
|
dstack/api/server/_users.py
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
from typing import List
|
|
2
2
|
|
|
3
|
-
from pydantic import parse_obj_as
|
|
3
|
+
from pydantic import ValidationError, parse_obj_as
|
|
4
4
|
|
|
5
5
|
from dstack._internal.core.models.users import GlobalRole, User, UserWithCreds
|
|
6
6
|
from dstack._internal.server.schemas.users import (
|
|
@@ -18,8 +18,23 @@ class UsersAPIClient(APIClientGroup):
|
|
|
18
18
|
return parse_obj_as(List[User.__response__], resp.json())
|
|
19
19
|
|
|
20
20
|
def get_my_user(self) -> User:
|
|
21
|
+
"""
|
|
22
|
+
Returns `User` with pre-0.19.33 servers, or `UserWithCreds` with newer servers.
|
|
23
|
+
"""
|
|
24
|
+
|
|
21
25
|
resp = self._request("/api/users/get_my_user")
|
|
22
|
-
|
|
26
|
+
try:
|
|
27
|
+
return parse_obj_as(UserWithCreds.__response__, resp.json())
|
|
28
|
+
except ValidationError as e:
|
|
29
|
+
# Compatibility with pre-0.19.33 server
|
|
30
|
+
if (
|
|
31
|
+
len(e.errors()) == 1
|
|
32
|
+
and e.errors()[0]["loc"] == ("__root__", "creds")
|
|
33
|
+
and e.errors()[0]["type"] == "value_error.missing"
|
|
34
|
+
):
|
|
35
|
+
return parse_obj_as(User.__response__, resp.json())
|
|
36
|
+
else:
|
|
37
|
+
raise
|
|
23
38
|
|
|
24
39
|
def get_user(self, username: str) -> User:
|
|
25
40
|
body = GetUserRequest(username=username)
|
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.33
|
|
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: cryptography
|
|
|
22
22
|
Requires-Dist: cursor
|
|
23
23
|
Requires-Dist: filelock
|
|
24
24
|
Requires-Dist: gitpython
|
|
25
|
-
Requires-Dist: gpuhunt==0.1.
|
|
25
|
+
Requires-Dist: gpuhunt==0.1.10
|
|
26
26
|
Requires-Dist: ignore-python>=0.2.0
|
|
27
27
|
Requires-Dist: jsonschema
|
|
28
28
|
Requires-Dist: orjson
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
dstack/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
2
|
-
dstack/version.py,sha256=
|
|
2
|
+
dstack/version.py,sha256=_FEUL4dv2EnNUXCWAEH2UsClkAJ5_z4QOZGhqRl7P-Q,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
|
|
@@ -16,7 +16,7 @@ dstack/_internal/cli/commands/gateway.py,sha256=L7bcNrFzzw7w0cjbFszhH_u7dEAiK7Rf
|
|
|
16
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=
|
|
19
|
+
dstack/_internal/cli/commands/offer.py,sha256=ZYMO8adIfgcPIzhZtO89SruJ2tIGLkNHIDrli7X95XE,6271
|
|
20
20
|
dstack/_internal/cli/commands/project.py,sha256=MFXjGklTOYa149h4pveTIr2jay0nDa1DXlDdxAEPj6Q,6576
|
|
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
|
|
@@ -33,7 +33,7 @@ dstack/_internal/cli/services/configurators/__init__.py,sha256=AwbKV85_XH0V8IS8v
|
|
|
33
33
|
dstack/_internal/cli/services/configurators/base.py,sha256=9mabsRsKHY7xFl8yDRM__FOEQvtEYOn_4KeXKzO6-vA,3244
|
|
34
34
|
dstack/_internal/cli/services/configurators/fleet.py,sha256=xchLFqHkm0zVs3tEVMlYXd4lGjP_OWzdp3nzqNg7b8k,19374
|
|
35
35
|
dstack/_internal/cli/services/configurators/gateway.py,sha256=B2aEoVhhRZGk25OekR7BT4eAvAgZGAyVOw7DlSuo2jg,8755
|
|
36
|
-
dstack/_internal/cli/services/configurators/run.py,sha256=
|
|
36
|
+
dstack/_internal/cli/services/configurators/run.py,sha256=HGE3LBO6WfWis9ykXsH-3xVBdGk4e5SdIVWmblKQV_k,39404
|
|
37
37
|
dstack/_internal/cli/services/configurators/volume.py,sha256=ZeESHttKFERBFysJvSGFC4UXUOLghKlzcilXbL48s-c,8346
|
|
38
38
|
dstack/_internal/cli/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
39
39
|
dstack/_internal/cli/utils/common.py,sha256=xgq2Rdx6wGS1NLx8FlmkjKrGaNYD428oeBB4VMjvJ5c,3447
|
|
@@ -59,24 +59,24 @@ 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=8fy6B3BcoFCti3dWO0E6n0I5hXU61nnTe5ZgA5swu1o,45511
|
|
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=vwfy2lz9E0RVl3Lhs8dsuWMhhJOjv1NDckqSNucs7f0,24025
|
|
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=v9rTelZWTjJ6BTfZidiAGA12jWIuDmak1LDjwVlPvIs,25429
|
|
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=MEglNP0H9iLi0a88ElRUxVcs1-qtpGEuWkxnrBp4KoA,36018
|
|
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=87I7f2Perkc3Gt9tJ4stWvPAP3ZklJNk8XHKAXYaVmg,7555
|
|
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
|
|
@@ -91,7 +91,7 @@ dstack/_internal/core/backends/cudo/configurator.py,sha256=3wAegbWDI2DcWD_225PNS
|
|
|
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=aGZjgyGyuOAfNKt93yRYCuCYYfuKC-71ULh4CdIowEs,9424
|
|
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
|
|
@@ -109,23 +109,23 @@ 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=ebax_Yqs0zlDYeYwRtz1tlL0sNZKWM0ieyQNFBA7nbg,51364
|
|
113
113
|
dstack/_internal/core/backends/gcp/configurator.py,sha256=pA3o5--gKBMLXvlAUIgBL30ayeUBWsLS-xqMljIlzAM,6887
|
|
114
|
-
dstack/_internal/core/backends/gcp/models.py,sha256=
|
|
115
|
-
dstack/_internal/core/backends/gcp/resources.py,sha256=
|
|
114
|
+
dstack/_internal/core/backends/gcp/models.py,sha256=1g3U1zktb6RkWag7EPcAoSZejkf5lUrMlpos0_WUEus,5489
|
|
115
|
+
dstack/_internal/core/backends/gcp/resources.py,sha256=a_WlJkDIIlyKd9eSbeHNaAwAo1ZxLHkDUYn4-K_3u_Q,21077
|
|
116
116
|
dstack/_internal/core/backends/gcp/features/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
117
117
|
dstack/_internal/core/backends/gcp/features/tcpx.py,sha256=8bDR5kwF5qke5EWNdBscdbZQnC7oVXKSls3WPcoXgZI,2902
|
|
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=uVzNuSBaXe3ieG5pWTcKzDv5gAr2_g7oKczkiVL_06c,8561
|
|
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=oFO_RSbxTTajTrDhEgcOqjqmyGmhplKssqIe-mdeTgA,38259
|
|
127
127
|
dstack/_internal/core/backends/kubernetes/configurator.py,sha256=RK8_eznv1AFrcG3fM-KIxyolsaJ8UTBAO7c3P3RCBnw,2228
|
|
128
|
-
dstack/_internal/core/backends/kubernetes/models.py,sha256=
|
|
128
|
+
dstack/_internal/core/backends/kubernetes/models.py,sha256=wsUfBfQaTSq79KwkNmkzS1E4wVA4fO0k_xxlAYxIxBc,2466
|
|
129
129
|
dstack/_internal/core/backends/kubernetes/utils.py,sha256=1DkkL_VWShFFqN-Crh0ddebRyXXyL435FyrjVkFLR1Q,6286
|
|
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
|
|
@@ -138,7 +138,7 @@ dstack/_internal/core/backends/local/backend.py,sha256=KJuNXUXrg60NhLywnExD1EXH2
|
|
|
138
138
|
dstack/_internal/core/backends/local/compute.py,sha256=tWNsKGKYlPx9yeqwlpAL_XExOYMPLcb6AsGAji3YO3M,3825
|
|
139
139
|
dstack/_internal/core/backends/nebius/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
140
140
|
dstack/_internal/core/backends/nebius/backend.py,sha256=2XqZIbSR8VzlfOnuVklXlDxNmwAkQj7txQN8VXF1j2E,566
|
|
141
|
-
dstack/_internal/core/backends/nebius/compute.py,sha256=
|
|
141
|
+
dstack/_internal/core/backends/nebius/compute.py,sha256=CzcNNbBsrIA15_Dpb0ubBBEk8r_RONubSLHw5CGxEU4,15443
|
|
142
142
|
dstack/_internal/core/backends/nebius/configurator.py,sha256=eybolJi5rlEeU8GBXC7pdOU7To32ASQGHDAiE2cNeFo,3794
|
|
143
143
|
dstack/_internal/core/backends/nebius/fabrics.py,sha256=-X-nSPV2pUin2PAYDHGm-j14KPboIFRpLi93PKHUXTM,1616
|
|
144
144
|
dstack/_internal/core/backends/nebius/models.py,sha256=OSiUANBf893Xdm7-4WDoPfmd3YFk5-oRjdXiWUjvDdk,6194
|
|
@@ -146,7 +146,7 @@ dstack/_internal/core/backends/nebius/resources.py,sha256=MVyMaS0-mZu2g-tJ4HF7Gi
|
|
|
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=4uf5myQoLe_z6gK59rY2YJXqUga9J1ZxrGayp_ZufWo,7790
|
|
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,7 +155,7 @@ dstack/_internal/core/backends/oci/resources.py,sha256=-47u2vWvRnpNQmgz3A12vu1hS
|
|
|
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=0KwqTfvjNxZXkHS_Y8fYDMHMzL_vo-bxXg00djUIJRo,11097
|
|
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
|
|
@@ -168,8 +168,8 @@ dstack/_internal/core/backends/tensordock/models.py,sha256=Dov-XsJcgOWML8c_jPpzo
|
|
|
168
168
|
dstack/_internal/core/backends/vastai/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
169
169
|
dstack/_internal/core/backends/vastai/api_client.py,sha256=b-qgx352lnxhBXichJtURFGxR7Jd9JYx4WXaxYV-HH0,4940
|
|
170
170
|
dstack/_internal/core/backends/vastai/backend.py,sha256=NawGHNYVmgNwL8HruEA84rimnpeSyXccdJXr6Dr95UY,566
|
|
171
|
-
dstack/_internal/core/backends/vastai/compute.py,sha256=
|
|
172
|
-
dstack/_internal/core/backends/vastai/configurator.py,sha256=
|
|
171
|
+
dstack/_internal/core/backends/vastai/compute.py,sha256=QTmkIQHUDCatvOHn_iHQV_3CQqcTIkuYYz0s7p_0kpc,5094
|
|
172
|
+
dstack/_internal/core/backends/vastai/configurator.py,sha256=p2Np34TtkhgGZX6e-jLPg6tP8Za-rO9UpgOzp3YGlOA,2339
|
|
173
173
|
dstack/_internal/core/backends/vastai/models.py,sha256=2xpFE-ouYUBienxZXam2Mo4dy9enSv-FuVJXeYnjVLk,1036
|
|
174
174
|
dstack/_internal/core/backends/vultr/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
175
175
|
dstack/_internal/core/backends/vultr/api_client.py,sha256=isHbdBQr2hFRYTcnTsGxSlWIKYrpC1X_gjSZjGxUupE,4363
|
|
@@ -190,22 +190,22 @@ dstack/_internal/core/models/config.py,sha256=VYfgyWG2kfGhJxkC48vZDCbHahIEnO05mD
|
|
|
190
190
|
dstack/_internal/core/models/configurations.py,sha256=G0MO8iKR1uRQABWuB_biglZQTCqLBK3vhxIKwJKEsTg,30998
|
|
191
191
|
dstack/_internal/core/models/envs.py,sha256=yq84YRFBILOy4x3XnGcTgYpbZ69eFTCQPgBCr9Ndov4,4969
|
|
192
192
|
dstack/_internal/core/models/files.py,sha256=CI1AQN07ACot_6RVkG7qLml07Ro0co2hGsAfcTamn3Y,1977
|
|
193
|
-
dstack/_internal/core/models/fleets.py,sha256=
|
|
193
|
+
dstack/_internal/core/models/fleets.py,sha256=Ux-RSdoJUFF4lSDPH70MJKoav_xYv0w9Ou_BwOJevq0,15215
|
|
194
194
|
dstack/_internal/core/models/gateways.py,sha256=_O8EWwHWLdgNoWY4P4u71KM-uEr5DDp42LXfyv1qMDI,4054
|
|
195
195
|
dstack/_internal/core/models/health.py,sha256=Q0Z5pYbW-rD5wLn3-EDre2Q7X6tX7DFaglKz5SDv18U,570
|
|
196
196
|
dstack/_internal/core/models/instances.py,sha256=Gpv46fu3uWO-3f8w1A6rBzU5dYhmO_wWh9s8fvnd9iw,6872
|
|
197
197
|
dstack/_internal/core/models/logs.py,sha256=VOsgEsvUIRNNHivD6OZnPZNC52ioqafv7ccdnFQ1YI8,529
|
|
198
198
|
dstack/_internal/core/models/metrics.py,sha256=Xb8hCXUL-ncQ3PMsErIUAJTe9gwh5jyrQ4UQoZbibsc,269
|
|
199
199
|
dstack/_internal/core/models/placement.py,sha256=WJVq5ENJykyRarQzL2EeYQag_9_jV7VSAtR_xoFvPVM,720
|
|
200
|
-
dstack/_internal/core/models/profiles.py,sha256=
|
|
200
|
+
dstack/_internal/core/models/profiles.py,sha256=vzGQllBGepTcFotgpot6OksyBIM03IJWtW3kZEfkro4,14524
|
|
201
201
|
dstack/_internal/core/models/projects.py,sha256=hOZoL85q-873vT_Aw7FhzpS6DGVt0Y3yT8kpElrLFto,833
|
|
202
202
|
dstack/_internal/core/models/resources.py,sha256=-dLupzud5BSqxNABBjLVYTCKekbr9_mhaNGD1ZWBjgM,14544
|
|
203
|
-
dstack/_internal/core/models/runs.py,sha256=
|
|
203
|
+
dstack/_internal/core/models/runs.py,sha256=UZd2iJNgeRBrX6eHleHXjgpEzvCCxzfZKECAA5M_Vrk,22688
|
|
204
204
|
dstack/_internal/core/models/secrets.py,sha256=5T4B4eCeZmVQ8t22qYYlm4NUyX7VloiXCJuyDfE92QA,413
|
|
205
205
|
dstack/_internal/core/models/server.py,sha256=Hkc1v2s3KOiwslsWVmhUOAzcSeREoG-HD1SzSX9WUGg,152
|
|
206
206
|
dstack/_internal/core/models/services.py,sha256=2Hpi7j0Q1shaf_0wd0C0044AJAmuYi-D3qx3PH849oI,3076
|
|
207
207
|
dstack/_internal/core/models/unix.py,sha256=KxnSQELnkAjjuUgYcQKVkf-UAbYREBD8WCWDvHfOkuA,1915
|
|
208
|
-
dstack/_internal/core/models/users.py,sha256=
|
|
208
|
+
dstack/_internal/core/models/users.py,sha256=uG1NUUT51uUYl_YIMi_QVpSdFXgUaGmplk-h2FEgleA,942
|
|
209
209
|
dstack/_internal/core/models/volumes.py,sha256=PeEHM71aG8SMgMaCM8NyvIBKiufHYyb7CzIRGNgK_HY,7289
|
|
210
210
|
dstack/_internal/core/models/backends/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
211
211
|
dstack/_internal/core/models/backends/base.py,sha256=OVy1zqYVX9C_XZpo2g3SHfKAXOpDzUf6ktxZb34TdLM,1400
|
|
@@ -220,7 +220,7 @@ dstack/_internal/core/services/diff.py,sha256=xtJzlSLIw9pnECpMQTy-a2zcfnSd4Q9qi_
|
|
|
220
220
|
dstack/_internal/core/services/logs.py,sha256=7_eJdH4MD-3rVb4A6rIJfjj_p4jzUOCmjRVlPD-UDsg,2166
|
|
221
221
|
dstack/_internal/core/services/profiles.py,sha256=ZFY6VILW6urm6l3u6xpORJ2z48eGJ2jcmRgjVrxr2tw,1612
|
|
222
222
|
dstack/_internal/core/services/repos.py,sha256=Lw-4MXFBaE_BogRgtYra1H3KPkRGeVWoIfU8hTyJ7GM,10552
|
|
223
|
-
dstack/_internal/core/services/configs/__init__.py,sha256=
|
|
223
|
+
dstack/_internal/core/services/configs/__init__.py,sha256=FW_A4TprMuY1PA_nOoAJNQpkoq3_hKPpORdic2NzCHM,5682
|
|
224
224
|
dstack/_internal/core/services/ssh/__init__.py,sha256=UhgC3Lv3CPSGqSPEQZIKOfLKUlCFnaB0uqPQhfKCFt0,878
|
|
225
225
|
dstack/_internal/core/services/ssh/attach.py,sha256=6YZ_HaimKrjdLzcDLksGi0_9rlVyLeBgPmmWHC7dYxo,9096
|
|
226
226
|
dstack/_internal/core/services/ssh/client.py,sha256=FUg74jNOagYR3OKuWMBwNgJWIDwHfYrIMSER8xn92D8,4102
|
|
@@ -284,7 +284,7 @@ dstack/_internal/server/app.py,sha256=BdjpR_XsTMkNey85ZwTjKd9_KKbtlePnIqy7QQDQdq
|
|
|
284
284
|
dstack/_internal/server/db.py,sha256=NY0-K_7ok2OYLtPMeZ4EHlHK5N2a77uj4aJCVgWO2qE,3245
|
|
285
285
|
dstack/_internal/server/deps.py,sha256=31e8SU_ogPJWHIDLkgl7cuC_5V91xbJoLyAj17VanfM,670
|
|
286
286
|
dstack/_internal/server/main.py,sha256=kztKhCYNoHSDyJJQScWfZXE0naNleJOCQULW6dd8SGw,109
|
|
287
|
-
dstack/_internal/server/models.py,sha256=
|
|
287
|
+
dstack/_internal/server/models.py,sha256=SXqbr4TRmGbr5WDR-MRza-sxkTvDnfh4i2uTg2y_Pcs,34373
|
|
288
288
|
dstack/_internal/server/settings.py,sha256=7SRzSlTnUPNNjlZH-vpgwbwj95gI-LLtQite8LQnaTU,7418
|
|
289
289
|
dstack/_internal/server/background/__init__.py,sha256=QftEjgQZffu83sY-F0WL65vRp28FbBEtezfowQYcTv4,5606
|
|
290
290
|
dstack/_internal/server/background/tasks/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -292,12 +292,12 @@ dstack/_internal/server/background/tasks/common.py,sha256=n87hFjDNtS2x8mYbBnKLqh
|
|
|
292
292
|
dstack/_internal/server/background/tasks/process_fleets.py,sha256=0i_S3HCZp4AjQjER7j_pvIm22eYbrBwZnt9-0kgsq3E,11547
|
|
293
293
|
dstack/_internal/server/background/tasks/process_gateways.py,sha256=FH9RY3Tfmtw_UctCdYZDIRb2rgtmHdxTg6Oc4IBiDBA,8356
|
|
294
294
|
dstack/_internal/server/background/tasks/process_idle_volumes.py,sha256=mqnl8wvWaKTYvJMbgFJbOP-bZMRQG2vrhUnaNcyBldE,5223
|
|
295
|
-
dstack/_internal/server/background/tasks/process_instances.py,sha256=
|
|
295
|
+
dstack/_internal/server/background/tasks/process_instances.py,sha256=kDqtfqWoSS91qW0NpVftxrr8Z2tDv6Fj2cfbjvgHY3o,44196
|
|
296
296
|
dstack/_internal/server/background/tasks/process_metrics.py,sha256=yKXe9J7m3oleK0C-oGJaYNkcPT8kqkz0nw-A7xqYbjE,6390
|
|
297
297
|
dstack/_internal/server/background/tasks/process_placement_groups.py,sha256=lgYIzjHG9EITK31yG6uQjlIcSwW5jsP9ZOBBZqW_eNs,4263
|
|
298
298
|
dstack/_internal/server/background/tasks/process_probes.py,sha256=dmug-_rmYiVLLF-imto-Ju1gPtENvHvCjHyilqgYuJw,6457
|
|
299
299
|
dstack/_internal/server/background/tasks/process_prometheus_metrics.py,sha256=_UZm37FVV4rhdd0So7HtcKbIgrSdAr5Vx-Uen_xizec,5459
|
|
300
|
-
dstack/_internal/server/background/tasks/process_running_jobs.py,sha256=
|
|
300
|
+
dstack/_internal/server/background/tasks/process_running_jobs.py,sha256=ZSx8hQX3XFHetaJT78A9W0mSzTIsY5NgMrSD6gb0Mmw,45029
|
|
301
301
|
dstack/_internal/server/background/tasks/process_runs.py,sha256=K4km4XT0JYUf6JYbpKbEAyumUDBT21lqcMFTQ7pIsoY,25200
|
|
302
302
|
dstack/_internal/server/background/tasks/process_submitted_jobs.py,sha256=fDuLfnSJqWDL2oPrxXQMkaqKgplMdKT0SRD_AyB4n-0,43099
|
|
303
303
|
dstack/_internal/server/background/tasks/process_terminating_jobs.py,sha256=S7ZSDVMX-N0XMaMgwFa1QG_RAi48BP432s9AqHw4PMM,4066
|
|
@@ -385,6 +385,7 @@ dstack/_internal/server/migrations/versions/ea60480f82bb_add_membermodel_member_
|
|
|
385
385
|
dstack/_internal/server/migrations/versions/ec02a26a256c_add_runmodel_next_triggered_at.py,sha256=YeEeTHYqh5i5ycO3ExZhCWc16iC--JuRtVcDRu2RJ9Q,962
|
|
386
386
|
dstack/_internal/server/migrations/versions/ed0ca30e13bb_migrate_instancestatus_provisioning.py,sha256=YhXQ9ApeMB8grDjNcbnXQKHYPlIJB7QlvE1R1nM5_6k,689
|
|
387
387
|
dstack/_internal/server/migrations/versions/fe72c4de8376_add_gateways.py,sha256=1-0e060NDpgYQhoKDmHWednANk1cZzMdVns7sEo5Lwo,2730
|
|
388
|
+
dstack/_internal/server/migrations/versions/ff1d94f65b08_user_ssh_key.py,sha256=5KMHvhQ95OciKRqygHd4ylVwJJaZZynPOwWRrava5is,944
|
|
388
389
|
dstack/_internal/server/migrations/versions/ffa99edd1988_add_jobterminationreason_max_duration_.py,sha256=1wBIisgN25doZfAErnqyshoSSzoDHPt4nZfC2MmSWak,2324
|
|
389
390
|
dstack/_internal/server/routers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
390
391
|
dstack/_internal/server/routers/backends.py,sha256=MgAZJV7QezgmoB0UqnEJIUrqYWqOFwMFGImFkHHrjoI,4922
|
|
@@ -398,10 +399,10 @@ dstack/_internal/server/routers/metrics.py,sha256=iXLbcJuwdi5F-lfkPhl9RzvC2m8FSp
|
|
|
398
399
|
dstack/_internal/server/routers/projects.py,sha256=qTwISp2O5L3zoysPyikH_IIqZSTkriUFOvrQPP_PCsQ,4915
|
|
399
400
|
dstack/_internal/server/routers/prometheus.py,sha256=INRxPLYVJ6CTm2AwtSJ1z455RiCOpPJ3rbXMKGonGm8,1109
|
|
400
401
|
dstack/_internal/server/routers/repos.py,sha256=4pTInkm0XaOVUJ2pRnbc8LqTyACkE3w_BrB6icT7EUw,4039
|
|
401
|
-
dstack/_internal/server/routers/runs.py,sha256=
|
|
402
|
+
dstack/_internal/server/routers/runs.py,sha256=m_IQMCeqh5Tp3OP7ulaBb1IND8b-ixqbVNiHgZtXrDo,6121
|
|
402
403
|
dstack/_internal/server/routers/secrets.py,sha256=wWYUQbYcfWenUVEA4qdb08J7_6H3zmW3AsTIg-UTJ4o,2566
|
|
403
404
|
dstack/_internal/server/routers/server.py,sha256=MSOsOCyA0unv24nCs_OkJG_zHyuldQrONn2xaZjGOXo,474
|
|
404
|
-
dstack/_internal/server/routers/users.py,sha256=
|
|
405
|
+
dstack/_internal/server/routers/users.py,sha256=AkpE5DZgk6uukhbtlQIj40Sg7_npD9HrMfU87SlMMsE,3935
|
|
405
406
|
dstack/_internal/server/routers/volumes.py,sha256=PHmayi432nUAdcOiGOu1j2bfbIxCFjc8u4XRTrBiHEI,3856
|
|
406
407
|
dstack/_internal/server/schemas/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
407
408
|
dstack/_internal/server/schemas/backends.py,sha256=KC6ZunAW71OCEIE_LnPO-wScJKVFXLgcVVocrLATMi0,365
|
|
@@ -441,10 +442,10 @@ dstack/_internal/server/services/probes.py,sha256=pdgtkOvBuvneUo4Gysg8_afibTf1wu
|
|
|
441
442
|
dstack/_internal/server/services/projects.py,sha256=PZdMCi1PVu68c_rYfwJRk7hgM6ddkekxlG_IU_957QI,25276
|
|
442
443
|
dstack/_internal/server/services/repos.py,sha256=ECl1cbpdzhTv1P3Y9IQmoWyHHF8iXFyL4s2drfwRDvg,9352
|
|
443
444
|
dstack/_internal/server/services/resources.py,sha256=VRFOih_cMJdc0c2m9nSGsX8vWAJQV3M6N87aqS_JXfw,699
|
|
444
|
-
dstack/_internal/server/services/runs.py,sha256=
|
|
445
|
+
dstack/_internal/server/services/runs.py,sha256=v4CwgaRd8AK4KJ0D4qcHC56FFsRHKvwVP7GHOunQ_dM,48088
|
|
445
446
|
dstack/_internal/server/services/secrets.py,sha256=M7RS4X1-DIL0f7m6BBb3PhsrAbxwKUD3_pZEWRfR3sM,5567
|
|
446
447
|
dstack/_internal/server/services/ssh.py,sha256=DT7U_8ON8o30-53WlJwjd5kVrKyt4KPgKeN63NW3P8U,2883
|
|
447
|
-
dstack/_internal/server/services/users.py,sha256=
|
|
448
|
+
dstack/_internal/server/services/users.py,sha256=CFPACnLatZnqVU8Gdj_fMpeF8LTHB_30rv-LhYlDWAk,8663
|
|
448
449
|
dstack/_internal/server/services/volumes.py,sha256=DBGIUsysAO7sQ6vb4mjhzO9XLdyQvtNujucxhGnkSsU,16682
|
|
449
450
|
dstack/_internal/server/services/backends/__init__.py,sha256=xWHI-A24u9RE7H5I4A3e_JQyuQtp5pdKbU--ZyizrnU,13420
|
|
450
451
|
dstack/_internal/server/services/backends/handlers.py,sha256=Rz4QjqmmDGDzn6QbwxlJvV5oC6pE4PZN3FX0DVqnBHc,3539
|
|
@@ -520,11 +521,11 @@ dstack/_internal/server/statics/e467d7d60aae81ab198b.svg,sha256=_XHc9mfQZgGkcy4h
|
|
|
520
521
|
dstack/_internal/server/statics/eb9b344b73818fe2b71a.png,sha256=2H14eOCQRyZhFGJ1Kn2LH1j70kTF1Qop4vH-tiKqyPI,85
|
|
521
522
|
dstack/_internal/server/statics/f517dd626eb964120de0.png,sha256=4QQuNa8SqmcZ67HK6739OHCyjnAJseU1bkcn454KRQs,159
|
|
522
523
|
dstack/_internal/server/statics/f958aecddee5d8e3222c.png,sha256=8CoZkVNgRfOAe62X1dU-AZDvwh_nESKaQblEmaX2Xrs,87
|
|
523
|
-
dstack/_internal/server/statics/index.html,sha256=
|
|
524
|
+
dstack/_internal/server/statics/index.html,sha256=T9ZlkECfVpgoCT7hGM81NvPmAz32YSNSq2RfA2D5als,11155
|
|
524
525
|
dstack/_internal/server/statics/logo-notext.svg,sha256=Oth7XfcAeDJcaPdzNtDaqYuLU7mCB0JqNtxeyWb6Z3c,11231
|
|
525
|
-
dstack/_internal/server/statics/main-
|
|
526
|
-
dstack/_internal/server/statics/main-
|
|
527
|
-
dstack/_internal/server/statics/main-
|
|
526
|
+
dstack/_internal/server/statics/main-720ce3a11140daa480cc.css,sha256=phgVgWaKKHEWgAux1if7DRn6sM_ykbdu9OPcuiflezg,1473211
|
|
527
|
+
dstack/_internal/server/statics/main-97c7e184573ca23f9fe4.js,sha256=LdT0_PaR1s7SsP_0SIbzkaM42h4Cs_BHksQXiRq-4AQ,7111664
|
|
528
|
+
dstack/_internal/server/statics/main-97c7e184573ca23f9fe4.js.map,sha256=-5MY6B04RIHgL-pufWYPqng9uYNyi_s64kRihkK6j6k,9461080
|
|
528
529
|
dstack/_internal/server/statics/manifest.json,sha256=430w2BoWVmYYVr14lDvUxx-ROPt3VjigzeMqfLeiSCM,340
|
|
529
530
|
dstack/_internal/server/statics/robots.txt,sha256=kNJLw79pisHhc3OVAimMzKcq3x9WT6sF9IS4xI0crdI,67
|
|
530
531
|
dstack/_internal/server/statics/assets/android-chrome-144x144.png,sha256=tB3V-95O-VVEoawN5V1XFoMQRSK0I6gthraV8bATGaw,23414
|
|
@@ -633,10 +634,10 @@ dstack/_internal/utils/tags.py,sha256=Gx4aZM85E_UUCGuFZbCEFxHB5DNgrtJP15_1tFFEd1
|
|
|
633
634
|
dstack/_internal/utils/typing.py,sha256=tHrhtkr3G6jkk-_FZyobdjLYvP5_YIgXbKsN-13dfvg,386
|
|
634
635
|
dstack/api/__init__.py,sha256=7qbG42qEHMyNDFRCz9FgfuimAKws3hV8eMXs6oRgh5c,1607
|
|
635
636
|
dstack/api/utils.py,sha256=_la3CRk1vgrPGkInPI1SOr33e8Jvh8ziJC32fjvKnaU,4188
|
|
636
|
-
dstack/api/_public/__init__.py,sha256=
|
|
637
|
+
dstack/api/_public/__init__.py,sha256=eb6mmLtoF-Zq-od0F1Nz3IsMQ6IHmZcv7lfvgyE8rho,3223
|
|
637
638
|
dstack/api/_public/backends.py,sha256=w_cIUVU3L1tN8VoPH6-ltq-oJewlfXWTiEFXfDvm-1Q,1056
|
|
638
|
-
dstack/api/_public/repos.py,sha256=
|
|
639
|
-
dstack/api/_public/runs.py,sha256=
|
|
639
|
+
dstack/api/_public/repos.py,sha256=99tzFSFOQejLQIfMlzoGlR3ZzLRs42pIvpkzkgwkyhQ,7464
|
|
640
|
+
dstack/api/_public/runs.py,sha256=z3dMCcN7Kpdk7lWjXF6PPkJWhGxLgYQ6WBKii0gIvt8,34784
|
|
640
641
|
dstack/api/server/__init__.py,sha256=6hr2scrtZ1LsH_VQ7TRYlKoOykL1wsSnDb6ZzMZ1T_U,6712
|
|
641
642
|
dstack/api/server/_backends.py,sha256=tSvJ4j-yp-S-4IYo7pKHluDaSsx6Xbwo08Ff6Do85fo,1639
|
|
642
643
|
dstack/api/server/_files.py,sha256=iOBHm1CvJiG4TqNx3t5LYOf7w3jff9I15wxYpIAg-r4,780
|
|
@@ -650,7 +651,7 @@ dstack/api/server/_projects.py,sha256=1nlsm7CRaTKqaUX93un8BY845YWEuxXFGrwg3IJvGN
|
|
|
650
651
|
dstack/api/server/_repos.py,sha256=wL2hXLid6ktF3OPyGDomXXfKg8OE_bnbnJVhMeI77z8,2425
|
|
651
652
|
dstack/api/server/_runs.py,sha256=cOAk4Y3YALTgV-PumGbHTylTaOjwD-JpnEcT7CrmQHY,3369
|
|
652
653
|
dstack/api/server/_secrets.py,sha256=YN6smkAb1vj8jG5KKeEEEjAM1KL880bfBLlrTzGcUu4,1366
|
|
653
|
-
dstack/api/server/_users.py,sha256=
|
|
654
|
+
dstack/api/server/_users.py,sha256=0BYysRfZSyds2qE93KqkWSPOiSv9BbbeGVAVd4hZDyQ,2293
|
|
654
655
|
dstack/api/server/_volumes.py,sha256=dL_DS0edjdXnW8vIjdDpxHhRMBdHAjjnyUhRFvQd0sE,1523
|
|
655
656
|
dstack/api/server/utils.py,sha256=i1KX4CNXVeDj9CnytdzsJz0bxjvvfLRTb7xw8oqtEtQ,1040
|
|
656
657
|
dstack/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -662,8 +663,8 @@ dstack/plugins/builtin/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3
|
|
|
662
663
|
dstack/plugins/builtin/rest_plugin/__init__.py,sha256=lgTsq8Z6Km2F2UhPRChVB4vDM5ZpWtdk1iB1aa20ypA,440
|
|
663
664
|
dstack/plugins/builtin/rest_plugin/_models.py,sha256=9hgVuU6OGSxidar88XhQnNo9izYWeQvVH45ciErv-Es,1910
|
|
664
665
|
dstack/plugins/builtin/rest_plugin/_plugin.py,sha256=h3r3Yc3h22i93fifPTgTm9Oojd1sN1O4DP7ZTV-kWpM,5386
|
|
665
|
-
dstack-0.19.
|
|
666
|
-
dstack-0.19.
|
|
667
|
-
dstack-0.19.
|
|
668
|
-
dstack-0.19.
|
|
669
|
-
dstack-0.19.
|
|
666
|
+
dstack-0.19.33.dist-info/METADATA,sha256=VjbOSIJ8_gtS7_uBG0v3m34l7ql13RGAoGgaSZ1Wuf0,20835
|
|
667
|
+
dstack-0.19.33.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
|
668
|
+
dstack-0.19.33.dist-info/entry_points.txt,sha256=GnLrMS8hx3rWAySQjA7tPNhtixV6a-brRkmal1PKoHc,58
|
|
669
|
+
dstack-0.19.33.dist-info/licenses/LICENSE.md,sha256=qDABaRGjSKVOib1U8viw2P_96sIK7Puo426784oD9f8,15976
|
|
670
|
+
dstack-0.19.33.dist-info/RECORD,,
|