dstack 0.18.43__py3-none-any.whl → 0.19.0__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.
- dstack/_internal/cli/commands/gateway.py +15 -3
- dstack/_internal/cli/commands/logs.py +0 -22
- dstack/_internal/cli/commands/stats.py +8 -17
- dstack/_internal/cli/main.py +1 -5
- dstack/_internal/cli/services/configurators/fleet.py +4 -39
- dstack/_internal/cli/services/configurators/run.py +22 -20
- dstack/_internal/cli/services/profile.py +34 -83
- dstack/_internal/cli/utils/gateway.py +1 -1
- dstack/_internal/cli/utils/run.py +11 -0
- dstack/_internal/core/backends/__init__.py +56 -39
- dstack/_internal/core/backends/aws/__init__.py +0 -25
- dstack/_internal/core/backends/aws/auth.py +1 -10
- dstack/_internal/core/backends/aws/backend.py +26 -0
- dstack/_internal/core/backends/aws/compute.py +21 -45
- dstack/_internal/{server/services/backends/configurators/aws.py → core/backends/aws/configurator.py} +46 -85
- dstack/_internal/core/backends/aws/models.py +135 -0
- dstack/_internal/core/backends/aws/resources.py +1 -1
- dstack/_internal/core/backends/azure/__init__.py +0 -20
- dstack/_internal/core/backends/azure/auth.py +2 -11
- dstack/_internal/core/backends/azure/backend.py +21 -0
- dstack/_internal/core/backends/azure/compute.py +14 -28
- dstack/_internal/{server/services/backends/configurators/azure.py → core/backends/azure/configurator.py} +141 -210
- dstack/_internal/core/backends/azure/models.py +89 -0
- dstack/_internal/core/backends/base/__init__.py +0 -12
- dstack/_internal/core/backends/base/backend.py +18 -0
- dstack/_internal/core/backends/base/compute.py +153 -33
- dstack/_internal/core/backends/base/configurator.py +105 -0
- dstack/_internal/core/backends/base/models.py +14 -0
- dstack/_internal/core/backends/configurators.py +138 -0
- dstack/_internal/core/backends/cudo/__init__.py +0 -15
- dstack/_internal/core/backends/cudo/backend.py +16 -0
- dstack/_internal/core/backends/cudo/compute.py +8 -26
- dstack/_internal/core/backends/cudo/configurator.py +72 -0
- dstack/_internal/core/backends/cudo/models.py +37 -0
- dstack/_internal/core/backends/datacrunch/__init__.py +0 -15
- dstack/_internal/core/backends/datacrunch/backend.py +16 -0
- dstack/_internal/core/backends/datacrunch/compute.py +8 -25
- dstack/_internal/core/backends/datacrunch/configurator.py +66 -0
- dstack/_internal/core/backends/datacrunch/models.py +38 -0
- dstack/_internal/core/{models/backends/dstack.py → backends/dstack/models.py} +7 -7
- dstack/_internal/core/backends/gcp/__init__.py +0 -16
- dstack/_internal/core/backends/gcp/auth.py +2 -11
- dstack/_internal/core/backends/gcp/backend.py +17 -0
- dstack/_internal/core/backends/gcp/compute.py +14 -44
- dstack/_internal/{server/services/backends/configurators/gcp.py → core/backends/gcp/configurator.py} +46 -103
- dstack/_internal/core/backends/gcp/models.py +125 -0
- dstack/_internal/core/backends/kubernetes/__init__.py +0 -15
- dstack/_internal/core/backends/kubernetes/backend.py +16 -0
- dstack/_internal/core/backends/kubernetes/compute.py +16 -5
- dstack/_internal/core/backends/kubernetes/configurator.py +55 -0
- dstack/_internal/core/backends/kubernetes/models.py +72 -0
- dstack/_internal/core/backends/lambdalabs/__init__.py +0 -16
- dstack/_internal/core/backends/lambdalabs/backend.py +17 -0
- dstack/_internal/core/backends/lambdalabs/compute.py +7 -28
- dstack/_internal/core/backends/lambdalabs/configurator.py +82 -0
- dstack/_internal/core/backends/lambdalabs/models.py +37 -0
- dstack/_internal/core/backends/local/__init__.py +0 -13
- dstack/_internal/core/backends/local/backend.py +14 -0
- dstack/_internal/core/backends/local/compute.py +16 -2
- dstack/_internal/core/backends/models.py +128 -0
- dstack/_internal/core/backends/oci/__init__.py +0 -15
- dstack/_internal/core/backends/oci/auth.py +1 -5
- dstack/_internal/core/backends/oci/backend.py +16 -0
- dstack/_internal/core/backends/oci/compute.py +9 -23
- dstack/_internal/{server/services/backends/configurators/oci.py → core/backends/oci/configurator.py} +40 -85
- dstack/_internal/core/{models/backends/oci.py → backends/oci/models.py} +24 -25
- dstack/_internal/core/backends/oci/region.py +1 -1
- dstack/_internal/core/backends/runpod/__init__.py +0 -15
- dstack/_internal/core/backends/runpod/backend.py +16 -0
- dstack/_internal/core/backends/runpod/compute.py +28 -6
- dstack/_internal/core/backends/runpod/configurator.py +59 -0
- dstack/_internal/core/backends/runpod/models.py +54 -0
- dstack/_internal/core/backends/template/__init__.py +0 -0
- dstack/_internal/core/backends/tensordock/__init__.py +0 -15
- dstack/_internal/core/backends/tensordock/backend.py +16 -0
- dstack/_internal/core/backends/tensordock/compute.py +8 -27
- dstack/_internal/core/backends/tensordock/configurator.py +68 -0
- dstack/_internal/core/backends/tensordock/models.py +38 -0
- dstack/_internal/core/backends/vastai/__init__.py +0 -15
- dstack/_internal/core/backends/vastai/backend.py +16 -0
- dstack/_internal/core/backends/vastai/compute.py +2 -2
- dstack/_internal/core/backends/vastai/configurator.py +66 -0
- dstack/_internal/core/backends/vastai/models.py +37 -0
- dstack/_internal/core/backends/vultr/__init__.py +0 -15
- dstack/_internal/core/backends/vultr/backend.py +16 -0
- dstack/_internal/core/backends/vultr/compute.py +10 -24
- dstack/_internal/core/backends/vultr/configurator.py +64 -0
- dstack/_internal/core/backends/vultr/models.py +34 -0
- dstack/_internal/core/models/backends/__init__.py +0 -184
- dstack/_internal/core/models/backends/base.py +0 -19
- dstack/_internal/core/models/configurations.py +22 -16
- dstack/_internal/core/models/envs.py +4 -3
- dstack/_internal/core/models/fleets.py +17 -22
- dstack/_internal/core/models/gateways.py +3 -3
- dstack/_internal/core/models/instances.py +24 -0
- dstack/_internal/core/models/profiles.py +85 -45
- dstack/_internal/core/models/projects.py +1 -1
- dstack/_internal/core/models/repos/base.py +0 -5
- dstack/_internal/core/models/repos/local.py +3 -3
- dstack/_internal/core/models/repos/remote.py +26 -12
- dstack/_internal/core/models/repos/virtual.py +1 -1
- dstack/_internal/core/models/resources.py +45 -76
- dstack/_internal/core/models/runs.py +21 -19
- dstack/_internal/core/models/volumes.py +1 -3
- dstack/_internal/core/services/profiles.py +7 -16
- dstack/_internal/core/services/repos.py +0 -4
- dstack/_internal/server/app.py +11 -4
- dstack/_internal/server/background/__init__.py +10 -0
- dstack/_internal/server/background/tasks/process_gateways.py +4 -8
- dstack/_internal/server/background/tasks/process_instances.py +14 -9
- dstack/_internal/server/background/tasks/process_metrics.py +1 -1
- dstack/_internal/server/background/tasks/process_placement_groups.py +5 -1
- dstack/_internal/server/background/tasks/process_prometheus_metrics.py +135 -0
- dstack/_internal/server/background/tasks/process_running_jobs.py +80 -24
- dstack/_internal/server/background/tasks/process_runs.py +1 -0
- dstack/_internal/server/background/tasks/process_submitted_jobs.py +20 -38
- dstack/_internal/server/background/tasks/process_volumes.py +5 -2
- dstack/_internal/server/migrations/versions/60e444118b6d_add_jobprometheusmetrics.py +40 -0
- dstack/_internal/server/migrations/versions/7bc2586e8b9e_make_instancemodel_pool_id_optional.py +36 -0
- dstack/_internal/server/migrations/versions/98d1b92988bc_add_jobterminationreason_terminated_due_.py +140 -0
- dstack/_internal/server/migrations/versions/bc8ca4a505c6_store_backendtype_as_string.py +171 -0
- dstack/_internal/server/models.py +59 -9
- dstack/_internal/server/routers/backends.py +14 -23
- dstack/_internal/server/routers/instances.py +3 -4
- dstack/_internal/server/routers/metrics.py +31 -10
- dstack/_internal/server/routers/prometheus.py +36 -0
- dstack/_internal/server/routers/repos.py +1 -2
- dstack/_internal/server/routers/runs.py +13 -59
- dstack/_internal/server/schemas/gateways.py +14 -23
- dstack/_internal/server/schemas/projects.py +7 -2
- dstack/_internal/server/schemas/repos.py +2 -38
- dstack/_internal/server/schemas/runner.py +1 -0
- dstack/_internal/server/schemas/runs.py +1 -24
- dstack/_internal/server/security/permissions.py +1 -1
- dstack/_internal/server/services/backends/__init__.py +85 -158
- dstack/_internal/server/services/config.py +53 -567
- dstack/_internal/server/services/fleets.py +9 -103
- dstack/_internal/server/services/gateways/__init__.py +13 -4
- dstack/_internal/server/services/{pools.py → instances.py} +22 -329
- dstack/_internal/server/services/jobs/__init__.py +9 -6
- dstack/_internal/server/services/jobs/configurators/base.py +25 -1
- dstack/_internal/server/services/jobs/configurators/dev.py +9 -1
- dstack/_internal/server/services/jobs/configurators/extensions/cursor.py +42 -0
- dstack/_internal/server/services/metrics.py +131 -72
- dstack/_internal/server/services/offers.py +1 -1
- dstack/_internal/server/services/projects.py +23 -14
- dstack/_internal/server/services/prometheus.py +245 -0
- dstack/_internal/server/services/runner/client.py +14 -3
- dstack/_internal/server/services/runs.py +67 -31
- dstack/_internal/server/services/volumes.py +9 -4
- dstack/_internal/server/settings.py +3 -0
- dstack/_internal/server/statics/index.html +1 -1
- dstack/_internal/server/statics/{main-fe8fd9db55df8d10e648.js → main-4a0fe83e84574654e397.js} +76 -19
- dstack/_internal/server/statics/{main-fe8fd9db55df8d10e648.js.map → main-4a0fe83e84574654e397.js.map} +1 -1
- dstack/_internal/server/statics/{main-7510e71dfa9749a4e70e.css → main-da9f8c06a69c20dac23e.css} +1 -1
- dstack/_internal/server/statics/static/media/entraID.d65d1f3e9486a8e56d24fc07b3230885.svg +9 -0
- dstack/_internal/server/testing/common.py +75 -32
- dstack/_internal/utils/json_schema.py +6 -0
- dstack/_internal/utils/ssh.py +2 -1
- dstack/api/__init__.py +4 -0
- dstack/api/_public/__init__.py +16 -20
- dstack/api/_public/backends.py +1 -1
- dstack/api/_public/repos.py +36 -36
- dstack/api/_public/runs.py +170 -83
- dstack/api/server/__init__.py +11 -13
- dstack/api/server/_backends.py +12 -16
- dstack/api/server/_fleets.py +15 -55
- dstack/api/server/_gateways.py +3 -14
- dstack/api/server/_repos.py +1 -4
- dstack/api/server/_runs.py +21 -96
- dstack/api/server/_volumes.py +10 -5
- dstack/api/utils.py +3 -0
- dstack/version.py +1 -1
- {dstack-0.18.43.dist-info → dstack-0.19.0.dist-info}/METADATA +10 -1
- {dstack-0.18.43.dist-info → dstack-0.19.0.dist-info}/RECORD +229 -206
- tests/_internal/cli/services/configurators/test_profile.py +6 -6
- tests/_internal/core/backends/aws/test_configurator.py +35 -0
- tests/_internal/core/backends/aws/test_resources.py +1 -1
- tests/_internal/core/backends/azure/test_configurator.py +61 -0
- tests/_internal/core/backends/cudo/__init__.py +0 -0
- tests/_internal/core/backends/cudo/test_configurator.py +37 -0
- tests/_internal/core/backends/datacrunch/__init__.py +0 -0
- tests/_internal/core/backends/datacrunch/test_configurator.py +17 -0
- tests/_internal/core/backends/gcp/test_configurator.py +42 -0
- tests/_internal/core/backends/kubernetes/test_configurator.py +43 -0
- tests/_internal/core/backends/lambdalabs/__init__.py +0 -0
- tests/_internal/core/backends/lambdalabs/test_configurator.py +38 -0
- tests/_internal/core/backends/oci/test_configurator.py +55 -0
- tests/_internal/core/backends/runpod/__init__.py +0 -0
- tests/_internal/core/backends/runpod/test_configurator.py +33 -0
- tests/_internal/core/backends/tensordock/__init__.py +0 -0
- tests/_internal/core/backends/tensordock/test_configurator.py +38 -0
- tests/_internal/core/backends/vastai/__init__.py +0 -0
- tests/_internal/core/backends/vastai/test_configurator.py +33 -0
- tests/_internal/core/backends/vultr/__init__.py +0 -0
- tests/_internal/core/backends/vultr/test_configurator.py +33 -0
- tests/_internal/server/background/tasks/test_process_gateways.py +4 -0
- tests/_internal/server/background/tasks/test_process_instances.py +49 -48
- tests/_internal/server/background/tasks/test_process_metrics.py +0 -3
- tests/_internal/server/background/tasks/test_process_placement_groups.py +2 -0
- tests/_internal/server/background/tasks/test_process_prometheus_metrics.py +186 -0
- tests/_internal/server/background/tasks/test_process_running_jobs.py +123 -19
- tests/_internal/server/background/tasks/test_process_runs.py +8 -22
- tests/_internal/server/background/tasks/test_process_submitted_jobs.py +3 -40
- tests/_internal/server/background/tasks/test_process_submitted_volumes.py +2 -0
- tests/_internal/server/background/tasks/test_process_terminating_jobs.py +10 -15
- tests/_internal/server/routers/test_backends.py +6 -764
- tests/_internal/server/routers/test_fleets.py +2 -26
- tests/_internal/server/routers/test_gateways.py +27 -3
- tests/_internal/server/routers/test_instances.py +0 -10
- tests/_internal/server/routers/test_metrics.py +42 -0
- tests/_internal/server/routers/test_projects.py +56 -0
- tests/_internal/server/routers/test_prometheus.py +333 -0
- tests/_internal/server/routers/test_repos.py +0 -15
- tests/_internal/server/routers/test_runs.py +83 -275
- tests/_internal/server/routers/test_volumes.py +2 -3
- tests/_internal/server/services/backends/__init__.py +0 -0
- tests/_internal/server/services/jobs/configurators/test_task.py +35 -0
- tests/_internal/server/services/test_config.py +7 -4
- tests/_internal/server/services/test_fleets.py +1 -4
- tests/_internal/server/services/{test_pools.py → test_instances.py} +11 -49
- tests/_internal/server/services/test_metrics.py +167 -0
- tests/_internal/server/services/test_repos.py +1 -14
- tests/_internal/server/services/test_runs.py +0 -4
- dstack/_internal/cli/commands/pool.py +0 -581
- dstack/_internal/cli/commands/run.py +0 -75
- dstack/_internal/core/backends/aws/config.py +0 -18
- dstack/_internal/core/backends/azure/config.py +0 -12
- dstack/_internal/core/backends/base/config.py +0 -5
- dstack/_internal/core/backends/cudo/config.py +0 -9
- dstack/_internal/core/backends/datacrunch/config.py +0 -9
- dstack/_internal/core/backends/gcp/config.py +0 -22
- dstack/_internal/core/backends/kubernetes/config.py +0 -6
- dstack/_internal/core/backends/lambdalabs/config.py +0 -9
- dstack/_internal/core/backends/nebius/__init__.py +0 -15
- dstack/_internal/core/backends/nebius/api_client.py +0 -319
- dstack/_internal/core/backends/nebius/compute.py +0 -220
- dstack/_internal/core/backends/nebius/config.py +0 -6
- dstack/_internal/core/backends/nebius/types.py +0 -37
- dstack/_internal/core/backends/oci/config.py +0 -6
- dstack/_internal/core/backends/runpod/config.py +0 -9
- dstack/_internal/core/backends/tensordock/config.py +0 -9
- dstack/_internal/core/backends/vastai/config.py +0 -6
- dstack/_internal/core/backends/vultr/config.py +0 -9
- dstack/_internal/core/models/backends/aws.py +0 -86
- dstack/_internal/core/models/backends/azure.py +0 -68
- dstack/_internal/core/models/backends/cudo.py +0 -43
- dstack/_internal/core/models/backends/datacrunch.py +0 -44
- dstack/_internal/core/models/backends/gcp.py +0 -67
- dstack/_internal/core/models/backends/kubernetes.py +0 -40
- dstack/_internal/core/models/backends/lambdalabs.py +0 -43
- dstack/_internal/core/models/backends/nebius.py +0 -54
- dstack/_internal/core/models/backends/runpod.py +0 -40
- dstack/_internal/core/models/backends/tensordock.py +0 -44
- dstack/_internal/core/models/backends/vastai.py +0 -43
- dstack/_internal/core/models/backends/vultr.py +0 -40
- dstack/_internal/core/models/pools.py +0 -43
- dstack/_internal/server/routers/pools.py +0 -142
- dstack/_internal/server/schemas/pools.py +0 -38
- dstack/_internal/server/services/backends/configurators/base.py +0 -72
- dstack/_internal/server/services/backends/configurators/cudo.py +0 -87
- dstack/_internal/server/services/backends/configurators/datacrunch.py +0 -79
- dstack/_internal/server/services/backends/configurators/kubernetes.py +0 -63
- dstack/_internal/server/services/backends/configurators/lambdalabs.py +0 -98
- dstack/_internal/server/services/backends/configurators/nebius.py +0 -85
- dstack/_internal/server/services/backends/configurators/runpod.py +0 -97
- dstack/_internal/server/services/backends/configurators/tensordock.py +0 -82
- dstack/_internal/server/services/backends/configurators/vastai.py +0 -80
- dstack/_internal/server/services/backends/configurators/vultr.py +0 -80
- dstack/api/_public/pools.py +0 -41
- dstack/api/_public/resources.py +0 -105
- dstack/api/server/_pools.py +0 -63
- tests/_internal/server/routers/test_pools.py +0 -612
- /dstack/_internal/{server/services/backends/configurators → core/backends/dstack}/__init__.py +0 -0
- {dstack-0.18.43.dist-info → dstack-0.19.0.dist-info}/LICENSE.md +0 -0
- {dstack-0.18.43.dist-info → dstack-0.19.0.dist-info}/WHEEL +0 -0
- {dstack-0.18.43.dist-info → dstack-0.19.0.dist-info}/entry_points.txt +0 -0
- {dstack-0.18.43.dist-info → dstack-0.19.0.dist-info}/top_level.txt +0 -0
|
@@ -1,86 +0,0 @@
|
|
|
1
|
-
from typing import Dict
|
|
2
|
-
|
|
3
|
-
from pydantic import Field
|
|
4
|
-
from typing_extensions import Annotated, List, Literal, Optional, Union
|
|
5
|
-
|
|
6
|
-
from dstack._internal.core.models.backends.base import ConfigMultiElement
|
|
7
|
-
from dstack._internal.core.models.common import CoreModel
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
class AWSOSImage(CoreModel):
|
|
11
|
-
name: Annotated[str, Field(description="The AMI name")]
|
|
12
|
-
owner: Annotated[
|
|
13
|
-
str,
|
|
14
|
-
Field(regex=r"^(\d{12}|self)$", description="The AMI owner, account ID or `self`"),
|
|
15
|
-
] = "self"
|
|
16
|
-
user: Annotated[str, Field(description="The OS user for provisioning")]
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
class AWSOSImageConfig(CoreModel):
|
|
20
|
-
cpu: Annotated[Optional[AWSOSImage], Field(description="The AMI used for CPU instances")] = (
|
|
21
|
-
None
|
|
22
|
-
)
|
|
23
|
-
nvidia: Annotated[
|
|
24
|
-
Optional[AWSOSImage], Field(description="The AMI used for NVIDIA GPU instances")
|
|
25
|
-
] = None
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
class AWSConfigInfo(CoreModel):
|
|
29
|
-
type: Literal["aws"] = "aws"
|
|
30
|
-
regions: Optional[List[str]] = None
|
|
31
|
-
vpc_name: Optional[str] = None
|
|
32
|
-
vpc_ids: Optional[Dict[str, str]] = None
|
|
33
|
-
default_vpcs: Optional[bool] = None
|
|
34
|
-
public_ips: Optional[bool] = None
|
|
35
|
-
iam_instance_profile: Optional[str] = None
|
|
36
|
-
tags: Optional[Dict[str, str]] = None
|
|
37
|
-
os_images: Optional[AWSOSImageConfig] = None
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
class AWSAccessKeyCreds(CoreModel):
|
|
41
|
-
type: Annotated[Literal["access_key"], Field(description="The type of credentials")] = (
|
|
42
|
-
"access_key"
|
|
43
|
-
)
|
|
44
|
-
access_key: Annotated[str, Field(description="The access key")]
|
|
45
|
-
secret_key: Annotated[str, Field(description="The secret key")]
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
class AWSDefaultCreds(CoreModel):
|
|
49
|
-
type: Annotated[Literal["default"], Field(description="The type of credentials")] = "default"
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
AnyAWSCreds = Union[AWSAccessKeyCreds, AWSDefaultCreds]
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
class AWSCreds(CoreModel):
|
|
56
|
-
__root__: AnyAWSCreds = Field(..., discriminator="type")
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
class AWSConfigInfoWithCreds(AWSConfigInfo):
|
|
60
|
-
creds: AnyAWSCreds
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
AnyAWSConfigInfo = Union[AWSConfigInfo, AWSConfigInfoWithCreds]
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
class AWSConfigInfoWithCredsPartial(CoreModel):
|
|
67
|
-
type: Literal["aws"] = "aws"
|
|
68
|
-
creds: Optional[AnyAWSCreds]
|
|
69
|
-
regions: Optional[List[str]]
|
|
70
|
-
vpc_name: Optional[str]
|
|
71
|
-
vpc_ids: Optional[Dict[str, str]]
|
|
72
|
-
default_vpcs: Optional[bool]
|
|
73
|
-
public_ips: Optional[bool]
|
|
74
|
-
iam_instance_profile: Optional[str]
|
|
75
|
-
tags: Optional[Dict[str, str]]
|
|
76
|
-
os_images: Optional["AWSOSImageConfig"]
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
class AWSConfigValues(CoreModel):
|
|
80
|
-
type: Literal["aws"] = "aws"
|
|
81
|
-
default_creds: bool = False
|
|
82
|
-
regions: Optional[ConfigMultiElement]
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
class AWSStoredConfig(AWSConfigInfo):
|
|
86
|
-
pass
|
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
from typing import Dict
|
|
2
|
-
|
|
3
|
-
from pydantic import Field
|
|
4
|
-
from typing_extensions import Annotated, List, Literal, Optional, Union
|
|
5
|
-
|
|
6
|
-
from dstack._internal.core.models.backends.base import ConfigElement, ConfigMultiElement
|
|
7
|
-
from dstack._internal.core.models.common import CoreModel
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
class AzureConfigInfo(CoreModel):
|
|
11
|
-
type: Literal["azure"] = "azure"
|
|
12
|
-
tenant_id: str
|
|
13
|
-
subscription_id: str
|
|
14
|
-
resource_group: Optional[str] = None
|
|
15
|
-
locations: Optional[List[str]] = None
|
|
16
|
-
vpc_ids: Optional[Dict[str, str]] = None
|
|
17
|
-
public_ips: Optional[bool] = None
|
|
18
|
-
tags: Optional[Dict[str, str]] = None
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
class AzureClientCreds(CoreModel):
|
|
22
|
-
type: Annotated[Literal["client"], Field(description="The type of credentials")] = "client"
|
|
23
|
-
client_id: Annotated[str, Field(description="The client ID")]
|
|
24
|
-
client_secret: Annotated[str, Field(description="The client secret")]
|
|
25
|
-
# if tenant_id is missing, it will be populated from config info
|
|
26
|
-
tenant_id: Optional[str]
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
class AzureDefaultCreds(CoreModel):
|
|
30
|
-
type: Annotated[Literal["default"], Field(description="The type of credentials")] = "default"
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
AnyAzureCreds = Union[AzureClientCreds, AzureDefaultCreds]
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
class AzureCreds(CoreModel):
|
|
37
|
-
__root__: AnyAzureCreds = Field(..., discriminator="type")
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
class AzureConfigInfoWithCreds(AzureConfigInfo):
|
|
41
|
-
creds: AnyAzureCreds
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
AnyAzureConfigInfo = Union[AzureConfigInfo, AzureConfigInfoWithCreds]
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
class AzureConfigInfoWithCredsPartial(CoreModel):
|
|
48
|
-
type: Literal["azure"] = "azure"
|
|
49
|
-
creds: Optional[AnyAzureCreds]
|
|
50
|
-
tenant_id: Optional[str]
|
|
51
|
-
subscription_id: Optional[str]
|
|
52
|
-
resource_group: Optional[str]
|
|
53
|
-
locations: Optional[List[str]]
|
|
54
|
-
vpc_ids: Optional[Dict[str, str]]
|
|
55
|
-
public_ips: Optional[bool]
|
|
56
|
-
tags: Optional[Dict[str, str]]
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
class AzureConfigValues(CoreModel):
|
|
60
|
-
type: Literal["azure"] = "azure"
|
|
61
|
-
default_creds: bool = False
|
|
62
|
-
tenant_id: Optional[ConfigElement]
|
|
63
|
-
subscription_id: Optional[ConfigElement]
|
|
64
|
-
locations: Optional[ConfigMultiElement]
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
class AzureStoredConfig(AzureConfigInfo):
|
|
68
|
-
resource_group: str = ""
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
from typing import List, Optional
|
|
2
|
-
|
|
3
|
-
from pydantic.fields import Field
|
|
4
|
-
from typing_extensions import Annotated, Literal
|
|
5
|
-
|
|
6
|
-
from dstack._internal.core.models.backends.base import ConfigElement, ConfigMultiElement
|
|
7
|
-
from dstack._internal.core.models.common import CoreModel
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
class CudoConfigInfo(CoreModel):
|
|
11
|
-
type: Literal["cudo"] = "cudo"
|
|
12
|
-
project_id: str
|
|
13
|
-
regions: Optional[List[str]] = None
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
class CudoStoredConfig(CudoConfigInfo):
|
|
17
|
-
pass
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
class CudoAPIKeyCreds(CoreModel):
|
|
21
|
-
type: Annotated[Literal["api_key"], Field(description="The type of credentials")] = "api_key"
|
|
22
|
-
api_key: Annotated[str, Field(description="The API key")]
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
AnyCudoCreds = CudoAPIKeyCreds
|
|
26
|
-
CudoCreds = AnyCudoCreds
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
class CudoConfigInfoWithCreds(CudoConfigInfo):
|
|
30
|
-
creds: AnyCudoCreds
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
class CudoConfigInfoWithCredsPartial(CoreModel):
|
|
34
|
-
type: Literal["cudo"] = "cudo"
|
|
35
|
-
creds: Optional[AnyCudoCreds]
|
|
36
|
-
project_id: Optional[str]
|
|
37
|
-
regions: Optional[List[str]]
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
class CudoConfigValues(CoreModel):
|
|
41
|
-
type: Literal["cudo"] = "cudo"
|
|
42
|
-
regions: Optional[ConfigMultiElement]
|
|
43
|
-
project_id: Optional[ConfigElement]
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
from pydantic.fields import Field
|
|
2
|
-
from typing_extensions import Annotated, List, Literal, Optional, Union
|
|
3
|
-
|
|
4
|
-
from dstack._internal.core.models.backends.base import ConfigMultiElement
|
|
5
|
-
from dstack._internal.core.models.common import CoreModel
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
class DataCrunchConfigInfo(CoreModel):
|
|
9
|
-
type: Literal["datacrunch"] = "datacrunch"
|
|
10
|
-
regions: Optional[List[str]] = None
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
class DataCrunchAPIKeyCreds(CoreModel):
|
|
14
|
-
type: Annotated[Literal["api_key"], Field(description="The type of credentials")] = "api_key"
|
|
15
|
-
client_id: Annotated[str, Field(description="The client ID")]
|
|
16
|
-
client_secret: Annotated[str, Field(description="The client secret")]
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
AnyDataCrunchCreds = DataCrunchAPIKeyCreds
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
DataCrunchCreds = AnyDataCrunchCreds
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
class DataCrunchConfigInfoWithCreds(DataCrunchConfigInfo):
|
|
26
|
-
creds: AnyDataCrunchCreds
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
AnyDataCrunchConfigInfo = Union[DataCrunchConfigInfo, DataCrunchConfigInfoWithCreds]
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
class DataCrunchConfigInfoWithCredsPartial(CoreModel):
|
|
33
|
-
type: Literal["datacrunch"] = "datacrunch"
|
|
34
|
-
creds: Optional[AnyDataCrunchCreds]
|
|
35
|
-
regions: Optional[List[str]]
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
class DataCrunchConfigValues(CoreModel):
|
|
39
|
-
type: Literal["datacrunch"] = "datacrunch"
|
|
40
|
-
regions: Optional[ConfigMultiElement]
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
class DataCrunchStoredConfig(DataCrunchConfigInfo):
|
|
44
|
-
pass
|
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
from typing import Dict, List, Optional, Union
|
|
2
|
-
|
|
3
|
-
from pydantic import Field
|
|
4
|
-
from typing_extensions import Literal
|
|
5
|
-
|
|
6
|
-
from dstack._internal.core.models.backends.base import ConfigElement, ConfigMultiElement
|
|
7
|
-
from dstack._internal.core.models.common import CoreModel
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
class GCPConfigInfo(CoreModel):
|
|
11
|
-
type: Literal["gcp"] = "gcp"
|
|
12
|
-
project_id: str
|
|
13
|
-
regions: Optional[List[str]] = None
|
|
14
|
-
vpc_name: Optional[str] = None
|
|
15
|
-
vpc_project_id: Optional[str] = None
|
|
16
|
-
public_ips: Optional[bool] = None
|
|
17
|
-
nat_check: Optional[bool] = None
|
|
18
|
-
vm_service_account: Optional[str] = None
|
|
19
|
-
tags: Optional[Dict[str, str]] = None
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
class GCPServiceAccountCreds(CoreModel):
|
|
23
|
-
type: Literal["service_account"] = "service_account"
|
|
24
|
-
filename: str
|
|
25
|
-
data: str
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
class GCPDefaultCreds(CoreModel):
|
|
29
|
-
type: Literal["default"] = "default"
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
AnyGCPCreds = Union[GCPServiceAccountCreds, GCPDefaultCreds]
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
class GCPCreds(CoreModel):
|
|
36
|
-
__root__: AnyGCPCreds = Field(..., discriminator="type")
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
class GCPConfigInfoWithCreds(GCPConfigInfo):
|
|
40
|
-
creds: AnyGCPCreds
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
AnyGCPConfigInfo = Union[GCPConfigInfo, GCPConfigInfoWithCreds]
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
class GCPConfigInfoWithCredsPartial(CoreModel):
|
|
47
|
-
type: Literal["gcp"] = "gcp"
|
|
48
|
-
creds: Optional[AnyGCPCreds]
|
|
49
|
-
project_id: Optional[str]
|
|
50
|
-
regions: Optional[List[str]]
|
|
51
|
-
vpc_name: Optional[str] = None
|
|
52
|
-
vpc_project_id: Optional[str] = None
|
|
53
|
-
public_ips: Optional[bool]
|
|
54
|
-
nat_check: Optional[bool] = None
|
|
55
|
-
vm_service_account: Optional[str] = None
|
|
56
|
-
tags: Optional[Dict[str, str]] = None
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
class GCPConfigValues(CoreModel):
|
|
60
|
-
type: Literal["gcp"] = "gcp"
|
|
61
|
-
default_creds: bool = False
|
|
62
|
-
project_id: Optional[ConfigElement]
|
|
63
|
-
regions: Optional[ConfigMultiElement]
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
class GCPStoredConfig(GCPConfigInfo):
|
|
67
|
-
pass
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
from pydantic.fields import Field
|
|
2
|
-
from typing_extensions import Annotated, Literal, Optional, Union
|
|
3
|
-
|
|
4
|
-
from dstack._internal.core.models.common import CoreModel
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
class KubernetesNetworkingConfig(CoreModel):
|
|
8
|
-
ssh_host: Annotated[Optional[str], Field(description="The external IP address of any node")]
|
|
9
|
-
ssh_port: Annotated[
|
|
10
|
-
Optional[int], Field(description="Any port accessible outside of the cluster")
|
|
11
|
-
]
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
class KubernetesConfigInfo(CoreModel):
|
|
15
|
-
type: Literal["kubernetes"] = "kubernetes"
|
|
16
|
-
networking: KubernetesNetworkingConfig
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
class KubeconfigConfig(CoreModel):
|
|
20
|
-
filename: str
|
|
21
|
-
data: str
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
class KubernetesConfigInfoWithCreds(KubernetesConfigInfo):
|
|
25
|
-
kubeconfig: KubeconfigConfig
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
AnyKubernetesConfigInfo = Union[KubernetesConfigInfo, KubernetesConfigInfoWithCreds]
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
class KubernetesConfigInfoWithCredsPartial(KubernetesConfigInfoWithCreds):
|
|
32
|
-
pass
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
class KubernetesConfigValues(CoreModel):
|
|
36
|
-
type: Literal["kubernetes"] = "kubernetes"
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
class KubernetesStoredConfig(KubernetesConfigInfoWithCreds):
|
|
40
|
-
pass
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
from pydantic.fields import Field
|
|
2
|
-
from typing_extensions import Annotated, List, Literal, Optional, Union
|
|
3
|
-
|
|
4
|
-
from dstack._internal.core.models.backends.base import ConfigMultiElement
|
|
5
|
-
from dstack._internal.core.models.common import CoreModel
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
class LambdaConfigInfo(CoreModel):
|
|
9
|
-
type: Literal["lambda"] = "lambda"
|
|
10
|
-
regions: Optional[List[str]] = None
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
class LambdaAPIKeyCreds(CoreModel):
|
|
14
|
-
type: Annotated[Literal["api_key"], Field(description="The type of credentials")] = "api_key"
|
|
15
|
-
api_key: Annotated[str, Field(description="The API key")]
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
AnyLambdaCreds = LambdaAPIKeyCreds
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
LambdaCreds = AnyLambdaCreds
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
class LambdaConfigInfoWithCreds(LambdaConfigInfo):
|
|
25
|
-
creds: AnyLambdaCreds
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
AnyLambdaConfigInfo = Union[LambdaConfigInfo, LambdaConfigInfoWithCreds]
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
class LambdaConfigInfoWithCredsPartial(CoreModel):
|
|
32
|
-
type: Literal["lambda"] = "lambda"
|
|
33
|
-
creds: Optional[AnyLambdaCreds]
|
|
34
|
-
regions: Optional[List[str]]
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
class LambdaConfigValues(CoreModel):
|
|
38
|
-
type: Literal["lambda"] = "lambda"
|
|
39
|
-
regions: Optional[ConfigMultiElement]
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
class LambdaStoredConfig(LambdaConfigInfo):
|
|
43
|
-
pass
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
from typing import List, Optional, Union
|
|
2
|
-
|
|
3
|
-
from typing_extensions import Literal
|
|
4
|
-
|
|
5
|
-
from dstack._internal.core.models.backends.base import ConfigElement, ConfigMultiElement
|
|
6
|
-
from dstack._internal.core.models.common import CoreModel
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
class NebiusConfigInfo(CoreModel):
|
|
10
|
-
type: Literal["nebius"] = "nebius"
|
|
11
|
-
cloud_id: str
|
|
12
|
-
folder_id: str
|
|
13
|
-
network_id: str
|
|
14
|
-
regions: Optional[List[str]] = None
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
class NebiusServiceAccountCreds(CoreModel):
|
|
18
|
-
type: Literal["service_account"] = "service_account"
|
|
19
|
-
filename: str
|
|
20
|
-
data: str
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
AnyNebiusCreds = NebiusServiceAccountCreds
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
NebiusCreds = AnyNebiusCreds
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
class NebiusConfigInfoWithCreds(NebiusConfigInfo):
|
|
30
|
-
creds: AnyNebiusCreds
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
AnyNebiusConfigInfo = Union[NebiusConfigInfo, NebiusConfigInfoWithCreds]
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
class NebiusConfigInfoWithCredsPartial(CoreModel):
|
|
37
|
-
type: Literal["nebius"] = "nebius"
|
|
38
|
-
creds: Optional[AnyNebiusCreds]
|
|
39
|
-
cloud_id: Optional[str]
|
|
40
|
-
folder_id: Optional[str]
|
|
41
|
-
network_id: Optional[str]
|
|
42
|
-
regions: Optional[List[str]]
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
class NebiusConfigValues(CoreModel):
|
|
46
|
-
type: Literal["nebius"] = "nebius"
|
|
47
|
-
cloud_id: Optional[ConfigElement]
|
|
48
|
-
folder_id: Optional[ConfigElement]
|
|
49
|
-
network_id: Optional[ConfigElement]
|
|
50
|
-
regions: Optional[ConfigMultiElement]
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
class NebiusStoredConfig(NebiusConfigInfo):
|
|
54
|
-
pass
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
from typing import Annotated, List, Optional
|
|
2
|
-
|
|
3
|
-
from pydantic import Field
|
|
4
|
-
from typing_extensions import Literal
|
|
5
|
-
|
|
6
|
-
from dstack._internal.core.models.backends.base import ConfigMultiElement
|
|
7
|
-
from dstack._internal.core.models.common import CoreModel
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
class RunpodConfigInfo(CoreModel):
|
|
11
|
-
type: Literal["runpod"] = "runpod"
|
|
12
|
-
regions: Optional[List[str]] = None
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
class RunpodStoredConfig(RunpodConfigInfo):
|
|
16
|
-
pass
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
class RunpodAPIKeyCreds(CoreModel):
|
|
20
|
-
type: Literal["api_key"] = "api_key"
|
|
21
|
-
api_key: Annotated[str, Field(description="The API key")]
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
AnyRunpodCreds = RunpodAPIKeyCreds
|
|
25
|
-
RunpodCreds = AnyRunpodCreds
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
class RunpodConfigInfoWithCreds(RunpodConfigInfo):
|
|
29
|
-
creds: AnyRunpodCreds
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
class RunpodConfigInfoWithCredsPartial(CoreModel):
|
|
33
|
-
type: Literal["runpod"] = "runpod"
|
|
34
|
-
creds: Optional[AnyRunpodCreds]
|
|
35
|
-
regions: Optional[List[str]]
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
class RunpodConfigValues(CoreModel):
|
|
39
|
-
type: Literal["runpod"] = "runpod"
|
|
40
|
-
regions: Optional[ConfigMultiElement]
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
from pydantic.fields import Field
|
|
2
|
-
from typing_extensions import Annotated, List, Literal, Optional, Union
|
|
3
|
-
|
|
4
|
-
from dstack._internal.core.models.backends.base import ConfigMultiElement
|
|
5
|
-
from dstack._internal.core.models.common import CoreModel
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
class TensorDockConfigInfo(CoreModel):
|
|
9
|
-
type: Literal["tensordock"] = "tensordock"
|
|
10
|
-
regions: Optional[List[str]] = None
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
class TensorDockAPIKeyCreds(CoreModel):
|
|
14
|
-
type: Annotated[Literal["api_key"], Field(description="The type of credentials")] = "api_key"
|
|
15
|
-
api_key: Annotated[str, Field(description="The API key")]
|
|
16
|
-
api_token: Annotated[str, Field(description="The API token")]
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
AnyTensorDockCreds = TensorDockAPIKeyCreds
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
TensorDockCreds = AnyTensorDockCreds
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
class TensorDockConfigInfoWithCreds(TensorDockConfigInfo):
|
|
26
|
-
creds: AnyTensorDockCreds
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
AnyTensorDockConfigInfo = Union[TensorDockConfigInfo, TensorDockConfigInfoWithCreds]
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
class TensorDockConfigInfoWithCredsPartial(CoreModel):
|
|
33
|
-
type: Literal["tensordock"] = "tensordock"
|
|
34
|
-
creds: Optional[AnyTensorDockCreds]
|
|
35
|
-
regions: Optional[List[str]]
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
class TensorDockConfigValues(CoreModel):
|
|
39
|
-
type: Literal["tensordock"] = "tensordock"
|
|
40
|
-
regions: Optional[ConfigMultiElement]
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
class TensorDockStoredConfig(TensorDockConfigInfo):
|
|
44
|
-
pass
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
from pydantic.fields import Field
|
|
2
|
-
from typing_extensions import Annotated, List, Literal, Optional, Union
|
|
3
|
-
|
|
4
|
-
from dstack._internal.core.models.backends.base import ConfigMultiElement
|
|
5
|
-
from dstack._internal.core.models.common import CoreModel
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
class VastAIConfigInfo(CoreModel):
|
|
9
|
-
type: Literal["vastai"] = "vastai"
|
|
10
|
-
regions: Optional[List[str]] = None
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
class VastAIAPIKeyCreds(CoreModel):
|
|
14
|
-
type: Annotated[Literal["api_key"], Field(description="The type of credentials")] = "api_key"
|
|
15
|
-
api_key: Annotated[str, Field(description="The API key")]
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
AnyVastAICreds = VastAIAPIKeyCreds
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
VastAICreds = AnyVastAICreds
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
class VastAIConfigInfoWithCreds(VastAIConfigInfo):
|
|
25
|
-
creds: AnyVastAICreds
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
AnyVastAIConfigInfo = Union[VastAIConfigInfo, VastAIConfigInfoWithCreds]
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
class VastAIConfigInfoWithCredsPartial(CoreModel):
|
|
32
|
-
type: Literal["vastai"] = "vastai"
|
|
33
|
-
creds: Optional[AnyVastAICreds]
|
|
34
|
-
regions: Optional[List[str]]
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
class VastAIConfigValues(CoreModel):
|
|
38
|
-
type: Literal["vastai"] = "vastai"
|
|
39
|
-
regions: Optional[ConfigMultiElement]
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
class VastAIStoredConfig(VastAIConfigInfo):
|
|
43
|
-
pass
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
from typing import List, Optional
|
|
2
|
-
|
|
3
|
-
from pydantic.fields import Field
|
|
4
|
-
from typing_extensions import Annotated, Literal
|
|
5
|
-
|
|
6
|
-
from dstack._internal.core.models.backends.base import ConfigMultiElement
|
|
7
|
-
from dstack._internal.core.models.common import CoreModel
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
class VultrConfigInfo(CoreModel):
|
|
11
|
-
type: Literal["vultr"] = "vultr"
|
|
12
|
-
regions: Optional[List[str]] = None
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
class VultrStoredConfig(VultrConfigInfo):
|
|
16
|
-
pass
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
class VultrAPIKeyCreds(CoreModel):
|
|
20
|
-
type: Annotated[Literal["api_key"], Field(description="The type of credentials")] = "api_key"
|
|
21
|
-
api_key: Annotated[str, Field(description="The API key")]
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
AnyVultrCreds = VultrAPIKeyCreds
|
|
25
|
-
VultrCreds = AnyVultrCreds
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
class VultrConfigInfoWithCreds(VultrConfigInfo):
|
|
29
|
-
creds: AnyVultrCreds
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
class VultrConfigInfoWithCredsPartial(CoreModel):
|
|
33
|
-
type: Literal["vultr"] = "vultr"
|
|
34
|
-
creds: Optional[AnyVultrCreds]
|
|
35
|
-
regions: Optional[List[str]]
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
class VultrConfigValues(CoreModel):
|
|
39
|
-
type: Literal["vultr"] = "vultr"
|
|
40
|
-
regions: Optional[ConfigMultiElement]
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
import datetime
|
|
2
|
-
from typing import List, Optional
|
|
3
|
-
from uuid import UUID
|
|
4
|
-
|
|
5
|
-
from dstack._internal.core.models.backends.base import BackendType
|
|
6
|
-
from dstack._internal.core.models.common import CoreModel
|
|
7
|
-
from dstack._internal.core.models.instances import InstanceStatus, InstanceType
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
class Pool(CoreModel):
|
|
11
|
-
name: str
|
|
12
|
-
default: bool
|
|
13
|
-
created_at: datetime.datetime
|
|
14
|
-
total_instances: int
|
|
15
|
-
available_instances: int
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
class Instance(CoreModel):
|
|
19
|
-
id: UUID
|
|
20
|
-
project_name: str
|
|
21
|
-
backend: Optional[BackendType] = None
|
|
22
|
-
instance_type: Optional[InstanceType] = None
|
|
23
|
-
name: str
|
|
24
|
-
fleet_id: Optional[UUID] = None
|
|
25
|
-
fleet_name: Optional[str] = None
|
|
26
|
-
instance_num: int
|
|
27
|
-
pool_name: Optional[str] = None
|
|
28
|
-
job_name: Optional[str] = None # deprecated, always None (instance can have more than one job)
|
|
29
|
-
hostname: Optional[str] = None
|
|
30
|
-
status: InstanceStatus
|
|
31
|
-
unreachable: bool = False
|
|
32
|
-
termination_reason: Optional[str] = None
|
|
33
|
-
created: datetime.datetime
|
|
34
|
-
region: Optional[str] = None
|
|
35
|
-
availability_zone: Optional[str] = None
|
|
36
|
-
price: Optional[float] = None
|
|
37
|
-
total_blocks: Optional[int] = None
|
|
38
|
-
busy_blocks: int = 0
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
class PoolInstances(CoreModel):
|
|
42
|
-
name: str
|
|
43
|
-
instances: List[Instance]
|