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
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
import json
|
|
2
|
-
|
|
3
|
-
from dstack._internal.core.backends.base.configurator import (
|
|
4
|
-
BackendRecord,
|
|
5
|
-
Configurator,
|
|
6
|
-
raise_invalid_credentials_error,
|
|
7
|
-
)
|
|
8
|
-
from dstack._internal.core.backends.tensordock import api_client
|
|
9
|
-
from dstack._internal.core.backends.tensordock.backend import TensorDockBackend
|
|
10
|
-
from dstack._internal.core.backends.tensordock.models import (
|
|
11
|
-
TensorDockBackendConfig,
|
|
12
|
-
TensorDockBackendConfigWithCreds,
|
|
13
|
-
TensorDockConfig,
|
|
14
|
-
TensorDockCreds,
|
|
15
|
-
TensorDockStoredConfig,
|
|
16
|
-
)
|
|
17
|
-
from dstack._internal.core.models.backends.base import (
|
|
18
|
-
BackendType,
|
|
19
|
-
)
|
|
20
|
-
|
|
21
|
-
# TensorDock regions are dynamic, currently we don't offer any filtering
|
|
22
|
-
REGIONS = []
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
class TensorDockConfigurator(
|
|
26
|
-
Configurator[
|
|
27
|
-
TensorDockBackendConfig,
|
|
28
|
-
TensorDockBackendConfigWithCreds,
|
|
29
|
-
]
|
|
30
|
-
):
|
|
31
|
-
TYPE = BackendType.TENSORDOCK
|
|
32
|
-
BACKEND_CLASS = TensorDockBackend
|
|
33
|
-
|
|
34
|
-
def validate_config(
|
|
35
|
-
self, config: TensorDockBackendConfigWithCreds, default_creds_enabled: bool
|
|
36
|
-
):
|
|
37
|
-
self._validate_tensordock_creds(config.creds.api_key, config.creds.api_token)
|
|
38
|
-
|
|
39
|
-
def create_backend(
|
|
40
|
-
self, project_name: str, config: TensorDockBackendConfigWithCreds
|
|
41
|
-
) -> BackendRecord:
|
|
42
|
-
if config.regions is None:
|
|
43
|
-
config.regions = REGIONS
|
|
44
|
-
return BackendRecord(
|
|
45
|
-
config=TensorDockStoredConfig(
|
|
46
|
-
**TensorDockBackendConfig.__response__.parse_obj(config).dict()
|
|
47
|
-
).json(),
|
|
48
|
-
auth=TensorDockCreds.parse_obj(config.creds).json(),
|
|
49
|
-
)
|
|
50
|
-
|
|
51
|
-
def get_backend_config_with_creds(
|
|
52
|
-
self, record: BackendRecord
|
|
53
|
-
) -> TensorDockBackendConfigWithCreds:
|
|
54
|
-
config = self._get_config(record)
|
|
55
|
-
return TensorDockBackendConfigWithCreds.__response__.parse_obj(config)
|
|
56
|
-
|
|
57
|
-
def get_backend_config_without_creds(self, record: BackendRecord) -> TensorDockBackendConfig:
|
|
58
|
-
config = self._get_config(record)
|
|
59
|
-
return TensorDockBackendConfig.__response__.parse_obj(config)
|
|
60
|
-
|
|
61
|
-
def get_backend(self, record: BackendRecord) -> TensorDockBackend:
|
|
62
|
-
config = self._get_config(record)
|
|
63
|
-
return TensorDockBackend(config=config)
|
|
64
|
-
|
|
65
|
-
def _get_config(self, record: BackendRecord) -> TensorDockConfig:
|
|
66
|
-
return TensorDockConfig.__response__(
|
|
67
|
-
**json.loads(record.config),
|
|
68
|
-
creds=TensorDockCreds.parse_raw(record.auth),
|
|
69
|
-
)
|
|
70
|
-
|
|
71
|
-
def _validate_tensordock_creds(self, api_key: str, api_token: str):
|
|
72
|
-
client = api_client.TensorDockAPIClient(api_key=api_key, api_token=api_token)
|
|
73
|
-
if not client.auth_test():
|
|
74
|
-
raise_invalid_credentials_error(fields=[["creds", "api_key"], ["creds", "api_token"]])
|