lightning-sdk 2025.12.9__py3-none-any.whl → 2025.12.17__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.
- lightning_sdk/__version__.py +1 -1
- lightning_sdk/api/job_api.py +16 -0
- lightning_sdk/api/org_api.py +7 -0
- lightning_sdk/api/studio_api.py +28 -3
- lightning_sdk/api/teamspace_api.py +42 -5
- lightning_sdk/api/user_api.py +5 -0
- lightning_sdk/cli/legacy/download.py +2 -1
- lightning_sdk/cli/legacy/studios_menu.py +8 -1
- lightning_sdk/job/base.py +26 -4
- lightning_sdk/job/job.py +16 -5
- lightning_sdk/job/v1.py +7 -2
- lightning_sdk/job/v2.py +41 -1
- lightning_sdk/lightning_cloud/openapi/__init__.py +26 -1
- lightning_sdk/lightning_cloud/openapi/api/__init__.py +1 -0
- lightning_sdk/lightning_cloud/openapi/api/cloud_space_service_api.py +5 -1
- lightning_sdk/lightning_cloud/openapi/api/cluster_service_api.py +517 -0
- lightning_sdk/lightning_cloud/openapi/api/data_connection_service_api.py +5 -1
- lightning_sdk/lightning_cloud/openapi/api/file_system_service_api.py +11 -11
- lightning_sdk/lightning_cloud/openapi/api/kubernetes_virtual_machine_service_api.py +557 -0
- lightning_sdk/lightning_cloud/openapi/api/storage_service_api.py +5 -1
- lightning_sdk/lightning_cloud/openapi/models/__init__.py +25 -1
- lightning_sdk/lightning_cloud/openapi/models/cloud_space_environment_template_service_update_cloud_space_environment_template_body.py +27 -1
- lightning_sdk/lightning_cloud/openapi/models/cluster_service_add_container_registry_body.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/cluster_service_create_machine_body.py +27 -1
- lightning_sdk/lightning_cloud/openapi/models/cluster_service_refresh_container_registry_credentials_body.py +97 -0
- lightning_sdk/lightning_cloud/openapi/models/cluster_service_validate_container_registry_body.py +97 -0
- lightning_sdk/lightning_cloud/openapi/models/kubernetes_virtual_machine_service_create_kubernetes_virtual_machine_body.py +513 -0
- lightning_sdk/lightning_cloud/openapi/models/kubernetes_virtual_machine_service_update_kubernetes_virtual_machine_body.py +97 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_add_container_registry_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_cloud_space_environment_template_config.py +27 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_cloud_space_specialized_view.py +1 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_container_registry.py +253 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_container_registry_info.py +281 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_container_registry_integration.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_container_registry_status.py +105 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_create_cloud_space_environment_template_request.py +27 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_delete_container_registry_response.py +97 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_delete_kubernetes_virtual_machine_response.py +97 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_ecr_registry_config.py +175 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_ecr_registry_config_input.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_ecr_registry_details.py +201 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_get_artifacts_page_response.py +29 -3
- lightning_sdk/lightning_cloud/openapi/models/v1_get_user_response.py +27 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_kubernetes_direct_v1.py +53 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_kubernetes_virtual_machine.py +383 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_kubevirt_config.py +305 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_kubevirt_provider_configuration.py +227 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_kubevirt_vm_configuration.py +149 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_kubevirt_vm_resources.py +201 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_list_container_registries_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_list_kubernetes_virtual_machines_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_machine.py +27 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_node_metrics.py +27 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_refresh_container_registry_credentials_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_search_user.py +27 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_user_features.py +79 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_validate_container_registry_response.py +149 -0
- lightning_sdk/lightning_cloud/openapi/rest.py +2 -2
- lightning_sdk/machine.py +1 -0
- lightning_sdk/mmt/base.py +26 -7
- lightning_sdk/mmt/mmt.py +11 -6
- lightning_sdk/mmt/v1.py +5 -2
- lightning_sdk/mmt/v2.py +5 -2
- lightning_sdk/organization.py +10 -1
- lightning_sdk/owner.py +4 -0
- lightning_sdk/pipeline/steps.py +3 -0
- lightning_sdk/plugin.py +2 -2
- lightning_sdk/studio.py +33 -2
- lightning_sdk/teamspace.py +44 -4
- lightning_sdk/user.py +22 -2
- lightning_sdk/utils/resolve.py +9 -7
- {lightning_sdk-2025.12.9.dist-info → lightning_sdk-2025.12.17.dist-info}/METADATA +1 -1
- {lightning_sdk-2025.12.9.dist-info → lightning_sdk-2025.12.17.dist-info}/RECORD +78 -53
- /lightning_sdk/lightning_cloud/openapi/models/{v1_list_filesystem_mm_ts_response.py → v1_list_filesystem_mmts_response.py} +0 -0
- {lightning_sdk-2025.12.9.dist-info → lightning_sdk-2025.12.17.dist-info}/LICENSE +0 -0
- {lightning_sdk-2025.12.9.dist-info → lightning_sdk-2025.12.17.dist-info}/WHEEL +0 -0
- {lightning_sdk-2025.12.9.dist-info → lightning_sdk-2025.12.17.dist-info}/entry_points.txt +0 -0
- {lightning_sdk-2025.12.9.dist-info → lightning_sdk-2025.12.17.dist-info}/top_level.txt +0 -0
lightning_sdk/__version__.py
CHANGED
lightning_sdk/api/job_api.py
CHANGED
|
@@ -30,6 +30,7 @@ from lightning_sdk.lightning_cloud.openapi import (
|
|
|
30
30
|
V1LightningworkState,
|
|
31
31
|
V1ListLightningworkResponse,
|
|
32
32
|
V1UserRequestedComputeConfig,
|
|
33
|
+
V1Volume,
|
|
33
34
|
)
|
|
34
35
|
from lightning_sdk.lightning_cloud.rest_client import LightningClient
|
|
35
36
|
from lightning_sdk.machine import Machine
|
|
@@ -253,7 +254,16 @@ class JobApiV2:
|
|
|
253
254
|
artifacts_remote: Optional[str], # deprecated in favor of path_mappings
|
|
254
255
|
max_runtime: Optional[int] = None,
|
|
255
256
|
reuse_snapshot: bool = True,
|
|
257
|
+
scratch_disks: Optional[Dict[str, int]] = None,
|
|
256
258
|
) -> V1Job:
|
|
259
|
+
if scratch_disks is not None:
|
|
260
|
+
sanitized_scratch_disks = {}
|
|
261
|
+
for k, v in scratch_disks.items():
|
|
262
|
+
sanitized_k = k if k.startswith("/teamspace/scratch/") else f"/teamspace/scratch/{k}"
|
|
263
|
+
sanitized_scratch_disks[sanitized_k] = v
|
|
264
|
+
else:
|
|
265
|
+
sanitized_scratch_disks = None
|
|
266
|
+
|
|
257
267
|
body = self._create_job_body(
|
|
258
268
|
name=name,
|
|
259
269
|
command=command,
|
|
@@ -271,6 +281,7 @@ class JobApiV2:
|
|
|
271
281
|
artifacts_remote=artifacts_remote,
|
|
272
282
|
max_runtime=max_runtime,
|
|
273
283
|
reuse_snapshot=reuse_snapshot,
|
|
284
|
+
scratch_disks=sanitized_scratch_disks,
|
|
274
285
|
)
|
|
275
286
|
|
|
276
287
|
job: V1Job = self._client.jobs_service_create_job(project_id=teamspace_id, body=body)
|
|
@@ -295,6 +306,7 @@ class JobApiV2:
|
|
|
295
306
|
reuse_snapshot: bool,
|
|
296
307
|
max_runtime: Optional[int] = None,
|
|
297
308
|
machine_image_version: Optional[str] = None,
|
|
309
|
+
scratch_disks: Optional[Dict[str, int]] = None,
|
|
298
310
|
) -> JobsServiceCreateJobBody:
|
|
299
311
|
env_vars = []
|
|
300
312
|
if env is not None:
|
|
@@ -316,6 +328,9 @@ class JobApiV2:
|
|
|
316
328
|
if max_runtime:
|
|
317
329
|
optional_spec_kwargs["requested_run_duration_seconds"] = str(max_runtime)
|
|
318
330
|
|
|
331
|
+
# don't do default dicts, as they'll be mutable. Create a fresh one here
|
|
332
|
+
scratch_disks = scratch_disks or {}
|
|
333
|
+
|
|
319
334
|
spec = V1JobSpec(
|
|
320
335
|
cloudspace_id=studio_id or "",
|
|
321
336
|
cluster_id=cloud_account or "",
|
|
@@ -330,6 +345,7 @@ class JobApiV2:
|
|
|
330
345
|
image_secret_ref=image_credentials or "",
|
|
331
346
|
path_mappings=path_mappings_list,
|
|
332
347
|
machine_image_version=machine_image_version,
|
|
348
|
+
volumes=[V1Volume(path=k, size_gb=v, ephemeral=True) for k, v in scratch_disks.items()],
|
|
333
349
|
**optional_spec_kwargs,
|
|
334
350
|
)
|
|
335
351
|
return JobsServiceCreateJobBody(name=name, spec=spec)
|
lightning_sdk/api/org_api.py
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
from lightning_sdk.lightning_cloud.openapi import (
|
|
2
|
+
V1CreateProjectRequest,
|
|
2
3
|
V1Organization,
|
|
3
4
|
)
|
|
4
5
|
from lightning_sdk.lightning_cloud.rest_client import LightningClient
|
|
@@ -20,3 +21,9 @@ class OrgApi:
|
|
|
20
21
|
def _get_org_by_id(self, org_id: str) -> V1Organization:
|
|
21
22
|
"""Gets the organization from the given ID."""
|
|
22
23
|
return self._client.organizations_service_get_organization(id=org_id)
|
|
24
|
+
|
|
25
|
+
def create_teamspace(self, name: str, organization_id: str) -> None:
|
|
26
|
+
"""Creates a new teamspace."""
|
|
27
|
+
self._client.projects_service_create_project(
|
|
28
|
+
body=V1CreateProjectRequest(name=name, organization_id=organization_id, display_name=name)
|
|
29
|
+
)
|
lightning_sdk/api/studio_api.py
CHANGED
|
@@ -962,9 +962,9 @@ class StudioApi:
|
|
|
962
962
|
interruptible=interruptible,
|
|
963
963
|
)
|
|
964
964
|
|
|
965
|
-
def
|
|
965
|
+
def add_port(self, teamspace_id: str, studio_id: str, name: str, port: int, auto_start: bool = False) -> V1Endpoint:
|
|
966
966
|
"""Starts a new port to the given Studio."""
|
|
967
|
-
|
|
967
|
+
return self._client.endpoint_service_create_endpoint(
|
|
968
968
|
project_id=teamspace_id,
|
|
969
969
|
body=EndpointServiceCreateEndpointBody(
|
|
970
970
|
name=name,
|
|
@@ -974,7 +974,32 @@ class StudioApi:
|
|
|
974
974
|
),
|
|
975
975
|
),
|
|
976
976
|
)
|
|
977
|
-
|
|
977
|
+
|
|
978
|
+
def get_port_url(
|
|
979
|
+
self, teamspace_id: str, studio_id: str, port: Optional[int] = None, name: Optional[str] = None
|
|
980
|
+
) -> str:
|
|
981
|
+
if port is None and name is None:
|
|
982
|
+
raise ValueError("Either 'port' or 'name' must be provided")
|
|
983
|
+
|
|
984
|
+
endpoints = self.list_ports(teamspace_id=teamspace_id, studio_id=studio_id)
|
|
985
|
+
|
|
986
|
+
for endpoint in endpoints:
|
|
987
|
+
if port is not None and port in endpoint.ports:
|
|
988
|
+
idx = endpoint.ports.index(port)
|
|
989
|
+
return endpoint.urls[idx]
|
|
990
|
+
|
|
991
|
+
if name is not None and endpoint.name == name:
|
|
992
|
+
return endpoint.urls[0] if endpoint.urls else None
|
|
993
|
+
|
|
994
|
+
identifier = f"port {port}" if port else f"name '{name}'"
|
|
995
|
+
raise ValueError(f"Endpoint with {identifier} not found")
|
|
996
|
+
|
|
997
|
+
def list_ports(self, teamspace_id: str, studio_id: str) -> List[V1Endpoint]:
|
|
998
|
+
"""List ports that are exposed in the Studio."""
|
|
999
|
+
return self._client.endpoint_service_list_endpoints(
|
|
1000
|
+
project_id=teamspace_id,
|
|
1001
|
+
cloudspace_id=studio_id,
|
|
1002
|
+
).endpoints
|
|
978
1003
|
|
|
979
1004
|
def create_assistant(self, studio_id: str, teamspace_id: str, port: int, assistant_name: str) -> V1Assistant:
|
|
980
1005
|
target_teamspace = self._client.projects_service_get_project(teamspace_id)
|
|
@@ -47,6 +47,7 @@ from lightning_sdk.lightning_cloud.openapi import (
|
|
|
47
47
|
V1UpstreamOpenAI,
|
|
48
48
|
)
|
|
49
49
|
from lightning_sdk.lightning_cloud.rest_client import LightningClient
|
|
50
|
+
from lightning_sdk.machine import Machine
|
|
50
51
|
|
|
51
52
|
__all__ = ["TeamspaceApi"]
|
|
52
53
|
|
|
@@ -323,11 +324,47 @@ class TeamspaceApi:
|
|
|
323
324
|
jobs = self._client.jobs_service_list_multi_machine_jobs(project_id=teamspace_id).multi_machine_jobs
|
|
324
325
|
return apps, jobs
|
|
325
326
|
|
|
326
|
-
def list_machines(
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
327
|
+
def list_machines(
|
|
328
|
+
self,
|
|
329
|
+
teamspace_id: str,
|
|
330
|
+
cloud_accounts: List[str],
|
|
331
|
+
machine: Optional[Machine] = None,
|
|
332
|
+
org_id: Optional[str] = None,
|
|
333
|
+
) -> List[V1ClusterAccelerator]:
|
|
334
|
+
from lightning_sdk.api.cloud_account_api import CloudAccountApi
|
|
335
|
+
|
|
336
|
+
cloud_account_api = CloudAccountApi()
|
|
337
|
+
matched_accelerators = []
|
|
338
|
+
for ca in cloud_accounts:
|
|
339
|
+
try:
|
|
340
|
+
accelerators = cloud_account_api.list_cloud_account_accelerators(
|
|
341
|
+
teamspace_id=teamspace_id,
|
|
342
|
+
cloud_account_id=ca,
|
|
343
|
+
org_id=org_id,
|
|
344
|
+
)
|
|
345
|
+
if not accelerators.accelerator:
|
|
346
|
+
continue
|
|
347
|
+
|
|
348
|
+
if accelerators.accelerator:
|
|
349
|
+
for cluster_machine in accelerators.accelerator:
|
|
350
|
+
if not machine:
|
|
351
|
+
matched_accelerators.append(cluster_machine)
|
|
352
|
+
continue
|
|
353
|
+
if (
|
|
354
|
+
cluster_machine.resources.gpu == machine.accelerator_count
|
|
355
|
+
or cluster_machine.resources.cpu == machine.accelerator_count
|
|
356
|
+
) and any(
|
|
357
|
+
machine.family.lower() in s
|
|
358
|
+
for s in (
|
|
359
|
+
cluster_machine.slug,
|
|
360
|
+
cluster_machine.slug_multi_cloud,
|
|
361
|
+
cluster_machine.instance_id,
|
|
362
|
+
)
|
|
363
|
+
):
|
|
364
|
+
matched_accelerators.append(cluster_machine)
|
|
365
|
+
except Exception:
|
|
366
|
+
pass
|
|
367
|
+
return matched_accelerators
|
|
331
368
|
|
|
332
369
|
def get_model(self, teamspace_id: str, model_id: Optional[str] = None, model_name: Optional[str] = None) -> V1Model:
|
|
333
370
|
if model_id:
|
lightning_sdk/api/user_api.py
CHANGED
|
@@ -5,6 +5,7 @@ from lightning_sdk.lightning_cloud.login import Auth
|
|
|
5
5
|
from lightning_sdk.lightning_cloud.openapi import (
|
|
6
6
|
SecretServiceUpdateUserSecretBody,
|
|
7
7
|
V1CloudSpace,
|
|
8
|
+
V1CreateProjectRequest,
|
|
8
9
|
V1CreateUserSecretRequest,
|
|
9
10
|
V1GetUserResponse,
|
|
10
11
|
V1ListCloudSpacesResponse,
|
|
@@ -123,3 +124,7 @@ class UserApi:
|
|
|
123
124
|
"""
|
|
124
125
|
pattern = r"^[A-Za-z_][A-Za-z0-9_]*$"
|
|
125
126
|
return re.match(pattern, name) is not None
|
|
127
|
+
|
|
128
|
+
def create_teamspace(self, name: str) -> None:
|
|
129
|
+
"""Creates a new teamspace."""
|
|
130
|
+
self._client.projects_service_create_project(body=V1CreateProjectRequest(name=name, display_name=name))
|
|
@@ -242,7 +242,8 @@ def _resolve_studio(studio: Optional[str]) -> Studio:
|
|
|
242
242
|
and (re.match(studio_name, st["name"]) or studio_name in st["name"]),
|
|
243
243
|
possible_studios,
|
|
244
244
|
)
|
|
245
|
-
|
|
245
|
+
possible_studios = list(possible_studios)
|
|
246
|
+
if len(possible_studios) == 0:
|
|
246
247
|
raise ValueError(
|
|
247
248
|
f"Could not find Studio like '{studio}', please consider update your filtering pattern."
|
|
248
249
|
)
|
|
@@ -31,7 +31,14 @@ class _StudiosMenu:
|
|
|
31
31
|
title = "Please select a Studio of the following studios:"
|
|
32
32
|
|
|
33
33
|
return TerminalMenu(
|
|
34
|
-
[
|
|
34
|
+
[
|
|
35
|
+
f"{s['org']}/{s['teamspace']}/{s['name']}"
|
|
36
|
+
if s.get("org") is not None
|
|
37
|
+
else f"{s['teamspace']}/{s['name']}"
|
|
38
|
+
for s in possible_studios
|
|
39
|
+
],
|
|
40
|
+
title=title,
|
|
41
|
+
clear_menu_on_exit=True,
|
|
35
42
|
)
|
|
36
43
|
|
|
37
44
|
@staticmethod
|
lightning_sdk/job/base.py
CHANGED
|
@@ -87,11 +87,12 @@ class _BaseJob(ABC, metaclass=TrackCallsABCMeta):
|
|
|
87
87
|
cloud_account_auth: bool = False,
|
|
88
88
|
artifacts_local: Optional[str] = None,
|
|
89
89
|
artifacts_remote: Optional[str] = None,
|
|
90
|
-
entrypoint: str =
|
|
90
|
+
entrypoint: Optional[str] = None,
|
|
91
91
|
path_mappings: Optional[Dict[str, str]] = None,
|
|
92
92
|
max_runtime: Optional[int] = None,
|
|
93
93
|
cluster: Optional[str] = None, # deprecated in favor of cloud_account
|
|
94
94
|
reuse_snapshot: bool = True,
|
|
95
|
+
scratch_disks: Optional[Dict[str, int]] = None,
|
|
95
96
|
) -> "_BaseJob":
|
|
96
97
|
"""Run async workloads using a docker image or a compute environment from your studio.
|
|
97
98
|
|
|
@@ -192,7 +193,7 @@ class _BaseJob(ABC, metaclass=TrackCallsABCMeta):
|
|
|
192
193
|
"Other jobs will automatically persist artifacts to the teamspace distributed filesystem."
|
|
193
194
|
)
|
|
194
195
|
|
|
195
|
-
if entrypoint
|
|
196
|
+
if entrypoint is not None:
|
|
196
197
|
raise ValueError("Specifying the entrypoint has no effect for jobs with Studio envs.")
|
|
197
198
|
|
|
198
199
|
else:
|
|
@@ -218,6 +219,20 @@ class _BaseJob(ABC, metaclass=TrackCallsABCMeta):
|
|
|
218
219
|
f"<CONNECTION_TYPE>:<CONNECTION_NAME>:<PATH_WITHIN_CONNECTION>, got {artifacts_local}"
|
|
219
220
|
)
|
|
220
221
|
|
|
222
|
+
# command specified, so use the default entrypoint of sh -c
|
|
223
|
+
if command is not None and entrypoint is None:
|
|
224
|
+
entrypoint = "sh -c"
|
|
225
|
+
|
|
226
|
+
# entrypoint specifically set to empty string, so set to None here to fall back to the image entrypoint
|
|
227
|
+
elif entrypoint == "": # noqa: SIM114
|
|
228
|
+
entrypoint = None
|
|
229
|
+
|
|
230
|
+
# entrypoint not specified, but also no command specified, so use the image entrypoint
|
|
231
|
+
elif entrypoint is None:
|
|
232
|
+
entrypoint = None
|
|
233
|
+
|
|
234
|
+
# all other cases, the entrypoint has been specifically set, so use it as is
|
|
235
|
+
|
|
221
236
|
inst = cls(name=name, teamspace=teamspace, org=org, user=user, _fetch_job=False)
|
|
222
237
|
return inst._submit(
|
|
223
238
|
machine=machine,
|
|
@@ -236,6 +251,7 @@ class _BaseJob(ABC, metaclass=TrackCallsABCMeta):
|
|
|
236
251
|
path_mappings=path_mappings,
|
|
237
252
|
max_runtime=max_runtime,
|
|
238
253
|
reuse_snapshot=reuse_snapshot,
|
|
254
|
+
scratch_disks=scratch_disks,
|
|
239
255
|
)
|
|
240
256
|
|
|
241
257
|
@abstractmethod
|
|
@@ -253,10 +269,11 @@ class _BaseJob(ABC, metaclass=TrackCallsABCMeta):
|
|
|
253
269
|
cloud_account_auth: bool = False,
|
|
254
270
|
artifacts_local: Optional[str] = None,
|
|
255
271
|
artifacts_remote: Optional[str] = None,
|
|
256
|
-
entrypoint: str =
|
|
272
|
+
entrypoint: Optional[str] = None,
|
|
257
273
|
path_mappings: Optional[Dict[str, str]] = None,
|
|
258
274
|
max_runtime: Optional[int] = None,
|
|
259
275
|
reuse_snapshot: bool = True,
|
|
276
|
+
scratch_disks: Optional[Dict[str, int]] = None,
|
|
260
277
|
) -> "_BaseJob":
|
|
261
278
|
"""Submit a new job to the Lightning AI platform.
|
|
262
279
|
|
|
@@ -289,7 +306,12 @@ class _BaseJob(ABC, metaclass=TrackCallsABCMeta):
|
|
|
289
306
|
within it.
|
|
290
307
|
Note that the connection needs to be added to the teamspace already in order for it to be found.
|
|
291
308
|
Only supported for jobs with a docker image compute environment.
|
|
292
|
-
entrypoint: The entrypoint of your docker container. Defaults to sh -c
|
|
309
|
+
entrypoint: The entrypoint of your docker container. Defaults to `sh -c` which
|
|
310
|
+
just runs the provided command in a standard shell if a command is provided.
|
|
311
|
+
If no command is provided, it will run the pre-defined entrypoint of the provided image.
|
|
312
|
+
To use the pre-defined entrypoint of the provided image with a specified command,
|
|
313
|
+
set this to an empty string.
|
|
314
|
+
Only applicable when submitting docker jobs.
|
|
293
315
|
To use the pre-defined entrypoint of the provided image, set this to an empty string.
|
|
294
316
|
Only applicable when submitting docker jobs.
|
|
295
317
|
max_runtime: the duration (in seconds) for which to allocate the machine.
|
lightning_sdk/job/job.py
CHANGED
|
@@ -97,13 +97,14 @@ class Job(_BaseJob):
|
|
|
97
97
|
interruptible: bool = False,
|
|
98
98
|
image_credentials: Optional[str] = None,
|
|
99
99
|
cloud_account_auth: bool = False,
|
|
100
|
-
entrypoint: str =
|
|
100
|
+
entrypoint: Optional[str] = None,
|
|
101
101
|
path_mappings: Optional[Dict[str, str]] = None,
|
|
102
102
|
max_runtime: Optional[int] = None,
|
|
103
103
|
artifacts_local: Optional[str] = None, # deprecated in terms of path_mappings
|
|
104
104
|
artifacts_remote: Optional[str] = None, # deprecated in terms of path_mappings
|
|
105
105
|
cluster: Optional[str] = None, # deprecated in favor of cloud_account
|
|
106
106
|
reuse_snapshot: bool = True,
|
|
107
|
+
scratch_disks: Optional[Dict[str, int]] = None,
|
|
107
108
|
) -> "Job":
|
|
108
109
|
"""Run async workloads using a docker image or a compute environment from your studio.
|
|
109
110
|
|
|
@@ -131,8 +132,10 @@ class Job(_BaseJob):
|
|
|
131
132
|
cloud_account_auth: Whether to authenticate with the cloud account to pull the image.
|
|
132
133
|
Required if the registry is part of a cloud provider (e.g. ECR).
|
|
133
134
|
entrypoint: The entrypoint of your docker container. Defaults to `sh -c` which
|
|
134
|
-
just runs the provided command in a standard shell.
|
|
135
|
-
|
|
135
|
+
just runs the provided command in a standard shell if a command is provided.
|
|
136
|
+
If no command is provided, it will run the pre-defined entrypoint of the provided image.
|
|
137
|
+
To use the pre-defined entrypoint of the provided image with a specified command,
|
|
138
|
+
set this to an empty string.
|
|
136
139
|
Only applicable when submitting docker jobs.
|
|
137
140
|
path_mappings: Dictionary of path mappings. The keys are the path inside the container whereas the value
|
|
138
141
|
represents the data-connection name and the path inside that connection.
|
|
@@ -172,6 +175,7 @@ class Job(_BaseJob):
|
|
|
172
175
|
max_runtime=max_runtime,
|
|
173
176
|
cluster=cluster,
|
|
174
177
|
reuse_snapshot=reuse_snapshot,
|
|
178
|
+
scratch_disks=scratch_disks,
|
|
175
179
|
)
|
|
176
180
|
# required for typing with "Job"
|
|
177
181
|
assert isinstance(ret_val, cls)
|
|
@@ -191,12 +195,13 @@ class Job(_BaseJob):
|
|
|
191
195
|
cloud_provider: Optional[Union["CloudProvider", str]] = None,
|
|
192
196
|
image_credentials: Optional[str] = None,
|
|
193
197
|
cloud_account_auth: bool = False,
|
|
194
|
-
entrypoint: str =
|
|
198
|
+
entrypoint: Optional[str] = None,
|
|
195
199
|
path_mappings: Optional[Dict[str, str]] = None,
|
|
196
200
|
artifacts_local: Optional[str] = None, # deprecated in terms of path_mappings
|
|
197
201
|
artifacts_remote: Optional[str] = None, # deprecated in terms of path_mappings
|
|
198
202
|
max_runtime: Optional[int] = None,
|
|
199
203
|
reuse_snapshot: bool = True,
|
|
204
|
+
scratch_disks: Optional[Dict[str, int]] = None,
|
|
200
205
|
) -> "Job":
|
|
201
206
|
"""Submit a new job to the Lightning AI platform.
|
|
202
207
|
|
|
@@ -219,7 +224,12 @@ class Job(_BaseJob):
|
|
|
219
224
|
This should be the name of the respective credentials secret created on the Lightning AI platform.
|
|
220
225
|
cloud_account_auth: Whether to authenticate with the cloud account to pull the image.
|
|
221
226
|
Required if the registry is part of a cloud provider (e.g. ECR).
|
|
222
|
-
entrypoint: The entrypoint of your docker container. Defaults to sh -c
|
|
227
|
+
entrypoint: The entrypoint of your docker container. Defaults to `sh -c` which
|
|
228
|
+
just runs the provided command in a standard shell if a command is provided.
|
|
229
|
+
If no command is provided, it will run the pre-defined entrypoint of the provided image.
|
|
230
|
+
To use the pre-defined entrypoint of the provided image with a specified command,
|
|
231
|
+
set this to an empty string.
|
|
232
|
+
Only applicable when submitting docker jobs.
|
|
223
233
|
To use the pre-defined entrypoint of the provided image, set this to an empty string.
|
|
224
234
|
Only applicable when submitting docker jobs.
|
|
225
235
|
path_mappings: Dictionary of path mappings. The keys are the path inside the container whereas the value
|
|
@@ -255,6 +265,7 @@ class Job(_BaseJob):
|
|
|
255
265
|
artifacts_remote=artifacts_remote,
|
|
256
266
|
max_runtime=max_runtime,
|
|
257
267
|
reuse_snapshot=reuse_snapshot,
|
|
268
|
+
scratch_disks=scratch_disks,
|
|
258
269
|
)
|
|
259
270
|
return self
|
|
260
271
|
|
lightning_sdk/job/v1.py
CHANGED
|
@@ -55,6 +55,7 @@ class _JobV1(_BaseJob):
|
|
|
55
55
|
interruptible: bool = False,
|
|
56
56
|
cluster: Optional[str] = None, # deprecated in favor of cloud_account
|
|
57
57
|
reuse_snapshot: bool = True,
|
|
58
|
+
scratch_disks: Optional[Dict[str, int]] = None,
|
|
58
59
|
) -> "_BaseJob":
|
|
59
60
|
"""Start a new async workload from your studio.
|
|
60
61
|
|
|
@@ -107,10 +108,11 @@ class _JobV1(_BaseJob):
|
|
|
107
108
|
cloud_account_auth: bool = False,
|
|
108
109
|
artifacts_local: Optional[str] = None,
|
|
109
110
|
artifacts_remote: Optional[str] = None,
|
|
110
|
-
entrypoint: str =
|
|
111
|
+
entrypoint: Optional[str] = None,
|
|
111
112
|
path_mappings: Optional[Dict[str, str]] = None,
|
|
112
113
|
max_runtime: Optional[int] = None,
|
|
113
114
|
reuse_snapshot: bool = True,
|
|
115
|
+
scratch_disks: Optional[Dict[str, int]] = None,
|
|
114
116
|
) -> "_JobV1":
|
|
115
117
|
"""Submit a job to run on a machine.
|
|
116
118
|
|
|
@@ -125,7 +127,10 @@ class _JobV1(_BaseJob):
|
|
|
125
127
|
image_credentials: The image credentials for the job (not supported).
|
|
126
128
|
cloud_account_auth: Whether to use cloud account authentication for the job (not supported).
|
|
127
129
|
entrypoint: The entrypoint of your docker container (not supported).
|
|
128
|
-
Defaults to `sh -c` which just runs the provided command in a standard shell.
|
|
130
|
+
Defaults to `sh -c` which just runs the provided command in a standard shell if a command is provided.
|
|
131
|
+
If no command is provided, it will run the pre-defined entrypoint of the provided image.
|
|
132
|
+
To use the pre-defined entrypoint of the provided image with a specified command,
|
|
133
|
+
set this to an empty string.
|
|
129
134
|
To use the pre-defined entrypoint of the provided image, set this to an empty string.
|
|
130
135
|
Only applicable when submitting docker jobs.
|
|
131
136
|
path_mappings: The mappings from data connection inside your container (not supported)
|
lightning_sdk/job/v2.py
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
from pathlib import PurePath
|
|
1
2
|
from typing import TYPE_CHECKING, Dict, Optional, Union
|
|
2
3
|
|
|
3
4
|
from lightning_sdk.api.job_api import JobApiV2
|
|
@@ -48,12 +49,13 @@ class _JobV2(_BaseJob):
|
|
|
48
49
|
cloud_provider: Optional[Union["CloudProvider", str]] = None,
|
|
49
50
|
image_credentials: Optional[str] = None,
|
|
50
51
|
cloud_account_auth: bool = False,
|
|
51
|
-
entrypoint: str =
|
|
52
|
+
entrypoint: Optional[str] = None,
|
|
52
53
|
path_mappings: Optional[Dict[str, str]] = None,
|
|
53
54
|
max_runtime: Optional[int] = None,
|
|
54
55
|
artifacts_local: Optional[str] = None, # deprecated in favor of path_mappings
|
|
55
56
|
artifacts_remote: Optional[str] = None, # deprecated in favor of path_mappings
|
|
56
57
|
reuse_snapshot: bool = True,
|
|
58
|
+
scratch_disks: Optional[Dict[str, int]] = None,
|
|
57
59
|
) -> "_JobV2":
|
|
58
60
|
"""Submit a new job to the Lightning AI platform.
|
|
59
61
|
|
|
@@ -72,6 +74,14 @@ class _JobV2(_BaseJob):
|
|
|
72
74
|
This should be the name of the respective credentials secret created on the Lightning AI platform.
|
|
73
75
|
cloud_account_auth: Whether to authenticate with the cloud account to pull the image.
|
|
74
76
|
Required if the registry is part of a cloud provider (e.g. ECR).
|
|
77
|
+
entrypoint: The entrypoint of your docker container. Defaults to `sh -c` which
|
|
78
|
+
just runs the provided command in a standard shell if a command is provided.
|
|
79
|
+
If no command is provided, it will run the pre-defined entrypoint of the provided image.
|
|
80
|
+
To use the pre-defined entrypoint of the provided image with a specified command,
|
|
81
|
+
set this to an empty string.
|
|
82
|
+
Only applicable when submitting docker jobs.
|
|
83
|
+
To use the pre-defined entrypoint of the provided image, set this to an empty string.
|
|
84
|
+
Only applicable when submitting docker jobs.
|
|
75
85
|
artifacts_local: The path of inside the docker container, you want to persist images from.
|
|
76
86
|
CAUTION: When setting this to "/", it will effectively erase your container.
|
|
77
87
|
Only supported for jobs with a docker image compute environment.
|
|
@@ -90,6 +100,11 @@ class _JobV2(_BaseJob):
|
|
|
90
100
|
Defaults to 3h
|
|
91
101
|
reuse_snapshot: Whether the job should reuse a Studio snapshot when multiple jobs for the same Studio are
|
|
92
102
|
submitted. Turning this off may result in longer job startup times. Defaults to True.
|
|
103
|
+
scratch_disks: Dictionary of scratch disks to add to the job. The keys are the path that the disk
|
|
104
|
+
will be mounted to, relative to the /teamspace/scratch directory. The values are the size of
|
|
105
|
+
the volume in GiB. For example, { "data": 100 } will add a 100GiB volume available under
|
|
106
|
+
/teamspace/scratch/data.
|
|
107
|
+
|
|
93
108
|
"""
|
|
94
109
|
# Command is required if Studio is provided to know what to run
|
|
95
110
|
# Image is mutually exclusive with Studio
|
|
@@ -115,6 +130,30 @@ class _JobV2(_BaseJob):
|
|
|
115
130
|
default_cloud_account=self._teamspace.default_cloud_account,
|
|
116
131
|
)
|
|
117
132
|
|
|
133
|
+
if scratch_disks is not None and len(scratch_disks) > 0:
|
|
134
|
+
if studio is None:
|
|
135
|
+
raise ValueError("scratch_disks are only supported within a studio job")
|
|
136
|
+
|
|
137
|
+
if len(scratch_disks) > 5:
|
|
138
|
+
raise ValueError("scratch_disk may only contain up to 5 elements")
|
|
139
|
+
|
|
140
|
+
for path, size in scratch_disks.items():
|
|
141
|
+
if size > 50000:
|
|
142
|
+
raise ValueError("scratch_disk size cannot exceed 50TiB")
|
|
143
|
+
|
|
144
|
+
path = PurePath(path)
|
|
145
|
+
|
|
146
|
+
if path.is_absolute():
|
|
147
|
+
# For compatibility with Python 3.8, which doesn't provide
|
|
148
|
+
# pathlib.PurePath.is_relative_to.
|
|
149
|
+
try:
|
|
150
|
+
path.relative_to("/teamspace/scratch")
|
|
151
|
+
except ValueError:
|
|
152
|
+
raise ValueError("scratch_disk paths must be relative to /teamspace/scratch") from None
|
|
153
|
+
|
|
154
|
+
if ".." in path.parts:
|
|
155
|
+
raise ValueError("scratch_disk path cannot contain '..'")
|
|
156
|
+
|
|
118
157
|
submitted = self._job_api.submit_job(
|
|
119
158
|
name=self.name,
|
|
120
159
|
command=command,
|
|
@@ -133,6 +172,7 @@ class _JobV2(_BaseJob):
|
|
|
133
172
|
path_mappings=path_mappings,
|
|
134
173
|
max_runtime=max_runtime,
|
|
135
174
|
reuse_snapshot=reuse_snapshot,
|
|
175
|
+
scratch_disks=scratch_disks,
|
|
136
176
|
)
|
|
137
177
|
self._job = submitted
|
|
138
178
|
self._name = submitted.name
|
|
@@ -42,6 +42,7 @@ from lightning_sdk.lightning_cloud.openapi.api.git_credentials_service_api impor
|
|
|
42
42
|
from lightning_sdk.lightning_cloud.openapi.api.incidents_service_api import IncidentsServiceApi
|
|
43
43
|
from lightning_sdk.lightning_cloud.openapi.api.jobs_service_api import JobsServiceApi
|
|
44
44
|
from lightning_sdk.lightning_cloud.openapi.api.k8_s_cluster_service_api import K8SClusterServiceApi
|
|
45
|
+
from lightning_sdk.lightning_cloud.openapi.api.kubernetes_virtual_machine_service_api import KubernetesVirtualMachineServiceApi
|
|
45
46
|
from lightning_sdk.lightning_cloud.openapi.api.lightningapp_instance_service_api import LightningappInstanceServiceApi
|
|
46
47
|
from lightning_sdk.lightning_cloud.openapi.api.lightningapp_v2_service_api import LightningappV2ServiceApi
|
|
47
48
|
from lightning_sdk.lightning_cloud.openapi.api.lightningwork_service_api import LightningworkServiceApi
|
|
@@ -132,6 +133,7 @@ from lightning_sdk.lightning_cloud.openapi.models.cloud_space_service_update_clo
|
|
|
132
133
|
from lightning_sdk.lightning_cloud.openapi.models.cloud_space_service_update_cloud_space_version_publication_body import CloudSpaceServiceUpdateCloudSpaceVersionPublicationBody
|
|
133
134
|
from lightning_sdk.lightning_cloud.openapi.models.cloud_space_service_update_cloud_space_visibility_body import CloudSpaceServiceUpdateCloudSpaceVisibilityBody
|
|
134
135
|
from lightning_sdk.lightning_cloud.openapi.models.cloudy_service_update_user_cloudy_settings_body import CloudyServiceUpdateUserCloudySettingsBody
|
|
136
|
+
from lightning_sdk.lightning_cloud.openapi.models.cluster_service_add_container_registry_body import ClusterServiceAddContainerRegistryBody
|
|
135
137
|
from lightning_sdk.lightning_cloud.openapi.models.cluster_service_create_cluster_capacity_reservation_body import ClusterServiceCreateClusterCapacityReservationBody
|
|
136
138
|
from lightning_sdk.lightning_cloud.openapi.models.cluster_service_create_cluster_proxy_body import ClusterServiceCreateClusterProxyBody
|
|
137
139
|
from lightning_sdk.lightning_cloud.openapi.models.cluster_service_create_cluster_usage_restriction_body import ClusterServiceCreateClusterUsageRestrictionBody
|
|
@@ -140,11 +142,13 @@ from lightning_sdk.lightning_cloud.openapi.models.cluster_service_create_project
|
|
|
140
142
|
from lightning_sdk.lightning_cloud.openapi.models.cluster_service_create_server_alert_body import ClusterServiceCreateServerAlertBody
|
|
141
143
|
from lightning_sdk.lightning_cloud.openapi.models.cluster_service_interrupt_server_body import ClusterServiceInterruptServerBody
|
|
142
144
|
from lightning_sdk.lightning_cloud.openapi.models.cluster_service_purchase_capacity_block_body import ClusterServicePurchaseCapacityBlockBody
|
|
145
|
+
from lightning_sdk.lightning_cloud.openapi.models.cluster_service_refresh_container_registry_credentials_body import ClusterServiceRefreshContainerRegistryCredentialsBody
|
|
143
146
|
from lightning_sdk.lightning_cloud.openapi.models.cluster_service_server_check_in_body import ClusterServiceServerCheckInBody
|
|
144
147
|
from lightning_sdk.lightning_cloud.openapi.models.cluster_service_sleep_server_body import ClusterServiceSleepServerBody
|
|
145
148
|
from lightning_sdk.lightning_cloud.openapi.models.cluster_service_update_cluster_body import ClusterServiceUpdateClusterBody
|
|
146
149
|
from lightning_sdk.lightning_cloud.openapi.models.cluster_service_update_cluster_usage_restriction_body import ClusterServiceUpdateClusterUsageRestrictionBody
|
|
147
150
|
from lightning_sdk.lightning_cloud.openapi.models.cluster_service_update_project_cluster_body import ClusterServiceUpdateProjectClusterBody
|
|
151
|
+
from lightning_sdk.lightning_cloud.openapi.models.cluster_service_validate_container_registry_body import ClusterServiceValidateContainerRegistryBody
|
|
148
152
|
from lightning_sdk.lightning_cloud.openapi.models.create_checkout_session_request_wallet_type import CreateCheckoutSessionRequestWalletType
|
|
149
153
|
from lightning_sdk.lightning_cloud.openapi.models.data_connection_mount_data_connection_mount_copy_status import DataConnectionMountDataConnectionMountCopyStatus
|
|
150
154
|
from lightning_sdk.lightning_cloud.openapi.models.data_connection_service_create_data_connection_body import DataConnectionServiceCreateDataConnectionBody
|
|
@@ -191,6 +195,8 @@ from lightning_sdk.lightning_cloud.openapi.models.k8_s_cluster_service_create_ku
|
|
|
191
195
|
from lightning_sdk.lightning_cloud.openapi.models.k8_s_cluster_service_render_kubernetes_template_body import K8SClusterServiceRenderKubernetesTemplateBody
|
|
192
196
|
from lightning_sdk.lightning_cloud.openapi.models.k8_s_cluster_service_report_k8_s_cluster_metrics_body import K8SClusterServiceReportK8SClusterMetricsBody
|
|
193
197
|
from lightning_sdk.lightning_cloud.openapi.models.k8_s_cluster_service_update_kubernetes_template_body import K8SClusterServiceUpdateKubernetesTemplateBody
|
|
198
|
+
from lightning_sdk.lightning_cloud.openapi.models.kubernetes_virtual_machine_service_create_kubernetes_virtual_machine_body import KubernetesVirtualMachineServiceCreateKubernetesVirtualMachineBody
|
|
199
|
+
from lightning_sdk.lightning_cloud.openapi.models.kubernetes_virtual_machine_service_update_kubernetes_virtual_machine_body import KubernetesVirtualMachineServiceUpdateKubernetesVirtualMachineBody
|
|
194
200
|
from lightning_sdk.lightning_cloud.openapi.models.lightningapp_instance_service_update_lightningapp_instance_body import LightningappInstanceServiceUpdateLightningappInstanceBody
|
|
195
201
|
from lightning_sdk.lightning_cloud.openapi.models.lightningapp_instance_service_update_lightningapp_instance_release_body import LightningappInstanceServiceUpdateLightningappInstanceReleaseBody
|
|
196
202
|
from lightning_sdk.lightning_cloud.openapi.models.lightningapp_instance_service_upload_lightningapp_instance_artifact_body import LightningappInstanceServiceUploadLightningappInstanceArtifactBody
|
|
@@ -295,6 +301,7 @@ from lightning_sdk.lightning_cloud.openapi.models.v1_aws_direct_v1_status import
|
|
|
295
301
|
from lightning_sdk.lightning_cloud.openapi.models.v1_abort_storage_transfer_response import V1AbortStorageTransferResponse
|
|
296
302
|
from lightning_sdk.lightning_cloud.openapi.models.v1_accelerator_quota_info import V1AcceleratorQuotaInfo
|
|
297
303
|
from lightning_sdk.lightning_cloud.openapi.models.v1_ack_user_storage_violation_response import V1AckUserStorageViolationResponse
|
|
304
|
+
from lightning_sdk.lightning_cloud.openapi.models.v1_add_container_registry_response import V1AddContainerRegistryResponse
|
|
298
305
|
from lightning_sdk.lightning_cloud.openapi.models.v1_add_job_timing_response import V1AddJobTimingResponse
|
|
299
306
|
from lightning_sdk.lightning_cloud.openapi.models.v1_affiliate_link import V1AffiliateLink
|
|
300
307
|
from lightning_sdk.lightning_cloud.openapi.models.v1_agent_complete_part_response import V1AgentCompletePartResponse
|
|
@@ -412,6 +419,10 @@ from lightning_sdk.lightning_cloud.openapi.models.v1_compute_config import V1Com
|
|
|
412
419
|
from lightning_sdk.lightning_cloud.openapi.models.v1_contact_assistant_owner_reason import V1ContactAssistantOwnerReason
|
|
413
420
|
from lightning_sdk.lightning_cloud.openapi.models.v1_contact_assistant_owner_response import V1ContactAssistantOwnerResponse
|
|
414
421
|
from lightning_sdk.lightning_cloud.openapi.models.v1_container_metrics import V1ContainerMetrics
|
|
422
|
+
from lightning_sdk.lightning_cloud.openapi.models.v1_container_registry import V1ContainerRegistry
|
|
423
|
+
from lightning_sdk.lightning_cloud.openapi.models.v1_container_registry_info import V1ContainerRegistryInfo
|
|
424
|
+
from lightning_sdk.lightning_cloud.openapi.models.v1_container_registry_integration import V1ContainerRegistryIntegration
|
|
425
|
+
from lightning_sdk.lightning_cloud.openapi.models.v1_container_registry_status import V1ContainerRegistryStatus
|
|
415
426
|
from lightning_sdk.lightning_cloud.openapi.models.v1_conversation import V1Conversation
|
|
416
427
|
from lightning_sdk.lightning_cloud.openapi.models.v1_conversation_response_chunk import V1ConversationResponseChunk
|
|
417
428
|
from lightning_sdk.lightning_cloud.openapi.models.v1_count_metrics_streams_response import V1CountMetricsStreamsResponse
|
|
@@ -481,6 +492,7 @@ from lightning_sdk.lightning_cloud.openapi.models.v1_delete_cluster_encryption_k
|
|
|
481
492
|
from lightning_sdk.lightning_cloud.openapi.models.v1_delete_cluster_proxy_response import V1DeleteClusterProxyResponse
|
|
482
493
|
from lightning_sdk.lightning_cloud.openapi.models.v1_delete_cluster_response import V1DeleteClusterResponse
|
|
483
494
|
from lightning_sdk.lightning_cloud.openapi.models.v1_delete_cluster_usage_restriction_response import V1DeleteClusterUsageRestrictionResponse
|
|
495
|
+
from lightning_sdk.lightning_cloud.openapi.models.v1_delete_container_registry_response import V1DeleteContainerRegistryResponse
|
|
484
496
|
from lightning_sdk.lightning_cloud.openapi.models.v1_delete_conversation_response import V1DeleteConversationResponse
|
|
485
497
|
from lightning_sdk.lightning_cloud.openapi.models.v1_delete_data_connection_response import V1DeleteDataConnectionResponse
|
|
486
498
|
from lightning_sdk.lightning_cloud.openapi.models.v1_delete_dataset_response import V1DeleteDatasetResponse
|
|
@@ -494,6 +506,7 @@ from lightning_sdk.lightning_cloud.openapi.models.v1_delete_incident_response im
|
|
|
494
506
|
from lightning_sdk.lightning_cloud.openapi.models.v1_delete_index_response import V1DeleteIndexResponse
|
|
495
507
|
from lightning_sdk.lightning_cloud.openapi.models.v1_delete_job_response import V1DeleteJobResponse
|
|
496
508
|
from lightning_sdk.lightning_cloud.openapi.models.v1_delete_kubernetes_template_response import V1DeleteKubernetesTemplateResponse
|
|
509
|
+
from lightning_sdk.lightning_cloud.openapi.models.v1_delete_kubernetes_virtual_machine_response import V1DeleteKubernetesVirtualMachineResponse
|
|
497
510
|
from lightning_sdk.lightning_cloud.openapi.models.v1_delete_license_response import V1DeleteLicenseResponse
|
|
498
511
|
from lightning_sdk.lightning_cloud.openapi.models.v1_delete_lightning_run_response import V1DeleteLightningRunResponse
|
|
499
512
|
from lightning_sdk.lightning_cloud.openapi.models.v1_delete_lightningapp_instance_artifact_response import V1DeleteLightningappInstanceArtifactResponse
|
|
@@ -569,6 +582,9 @@ from lightning_sdk.lightning_cloud.openapi.models.v1_drive_status import V1Drive
|
|
|
569
582
|
from lightning_sdk.lightning_cloud.openapi.models.v1_drive_type import V1DriveType
|
|
570
583
|
from lightning_sdk.lightning_cloud.openapi.models.v1_drive_type_spec import V1DriveTypeSpec
|
|
571
584
|
from lightning_sdk.lightning_cloud.openapi.models.v1_drive_type_status import V1DriveTypeStatus
|
|
585
|
+
from lightning_sdk.lightning_cloud.openapi.models.v1_ecr_registry_config import V1ECRRegistryConfig
|
|
586
|
+
from lightning_sdk.lightning_cloud.openapi.models.v1_ecr_registry_config_input import V1ECRRegistryConfigInput
|
|
587
|
+
from lightning_sdk.lightning_cloud.openapi.models.v1_ecr_registry_details import V1ECRRegistryDetails
|
|
572
588
|
from lightning_sdk.lightning_cloud.openapi.models.v1_efs_config import V1EfsConfig
|
|
573
589
|
from lightning_sdk.lightning_cloud.openapi.models.v1_endpoint import V1Endpoint
|
|
574
590
|
from lightning_sdk.lightning_cloud.openapi.models.v1_endpoint_auth import V1EndpointAuth
|
|
@@ -712,6 +728,11 @@ from lightning_sdk.lightning_cloud.openapi.models.v1_kubernetes_direct_v1_status
|
|
|
712
728
|
from lightning_sdk.lightning_cloud.openapi.models.v1_kubernetes_pod import V1KubernetesPod
|
|
713
729
|
from lightning_sdk.lightning_cloud.openapi.models.v1_kubernetes_template import V1KubernetesTemplate
|
|
714
730
|
from lightning_sdk.lightning_cloud.openapi.models.v1_kubernetes_template_property import V1KubernetesTemplateProperty
|
|
731
|
+
from lightning_sdk.lightning_cloud.openapi.models.v1_kubernetes_virtual_machine import V1KubernetesVirtualMachine
|
|
732
|
+
from lightning_sdk.lightning_cloud.openapi.models.v1_kubevirt_config import V1KubevirtConfig
|
|
733
|
+
from lightning_sdk.lightning_cloud.openapi.models.v1_kubevirt_provider_configuration import V1KubevirtProviderConfiguration
|
|
734
|
+
from lightning_sdk.lightning_cloud.openapi.models.v1_kubevirt_vm_configuration import V1KubevirtVmConfiguration
|
|
735
|
+
from lightning_sdk.lightning_cloud.openapi.models.v1_kubevirt_vm_resources import V1KubevirtVmResources
|
|
715
736
|
from lightning_sdk.lightning_cloud.openapi.models.v1_lambda_labs_direct_v1 import V1LambdaLabsDirectV1
|
|
716
737
|
from lightning_sdk.lightning_cloud.openapi.models.v1_license import V1License
|
|
717
738
|
from lightning_sdk.lightning_cloud.openapi.models.v1_lightning_app_user import V1LightningAppUser
|
|
@@ -764,6 +785,7 @@ from lightning_sdk.lightning_cloud.openapi.models.v1_list_cluster_proxies_respon
|
|
|
764
785
|
from lightning_sdk.lightning_cloud.openapi.models.v1_list_cluster_usage_restrictions_response import V1ListClusterUsageRestrictionsResponse
|
|
765
786
|
from lightning_sdk.lightning_cloud.openapi.models.v1_list_clusters_response import V1ListClustersResponse
|
|
766
787
|
from lightning_sdk.lightning_cloud.openapi.models.v1_list_container_metrics_response import V1ListContainerMetricsResponse
|
|
788
|
+
from lightning_sdk.lightning_cloud.openapi.models.v1_list_container_registries_response import V1ListContainerRegistriesResponse
|
|
767
789
|
from lightning_sdk.lightning_cloud.openapi.models.v1_list_conversation_message_actions_response import V1ListConversationMessageActionsResponse
|
|
768
790
|
from lightning_sdk.lightning_cloud.openapi.models.v1_list_conversations_response import V1ListConversationsResponse
|
|
769
791
|
from lightning_sdk.lightning_cloud.openapi.models.v1_list_data_connection_artifacts_response import V1ListDataConnectionArtifactsResponse
|
|
@@ -783,7 +805,7 @@ from lightning_sdk.lightning_cloud.openapi.models.v1_list_filesystem_apps_respon
|
|
|
783
805
|
from lightning_sdk.lightning_cloud.openapi.models.v1_list_filesystem_cloud_spaces_response import V1ListFilesystemCloudSpacesResponse
|
|
784
806
|
from lightning_sdk.lightning_cloud.openapi.models.v1_list_filesystem_datasets_response import V1ListFilesystemDatasetsResponse
|
|
785
807
|
from lightning_sdk.lightning_cloud.openapi.models.v1_list_filesystem_jobs_response import V1ListFilesystemJobsResponse
|
|
786
|
-
from lightning_sdk.lightning_cloud.openapi.models.
|
|
808
|
+
from lightning_sdk.lightning_cloud.openapi.models.v1_list_filesystem_mmts_response import V1ListFilesystemMMTsResponse
|
|
787
809
|
from lightning_sdk.lightning_cloud.openapi.models.v1_list_filesystem_metrics_response import V1ListFilesystemMetricsResponse
|
|
788
810
|
from lightning_sdk.lightning_cloud.openapi.models.v1_list_filesystem_slurm_jobs_response import V1ListFilesystemSlurmJobsResponse
|
|
789
811
|
from lightning_sdk.lightning_cloud.openapi.models.v1_list_filesystem_snowflake_response import V1ListFilesystemSnowflakeResponse
|
|
@@ -803,6 +825,7 @@ from lightning_sdk.lightning_cloud.openapi.models.v1_list_joinable_organizations
|
|
|
803
825
|
from lightning_sdk.lightning_cloud.openapi.models.v1_list_kai_scheduler_queues_metrics_response import V1ListKaiSchedulerQueuesMetricsResponse
|
|
804
826
|
from lightning_sdk.lightning_cloud.openapi.models.v1_list_kubernetes_pods_response import V1ListKubernetesPodsResponse
|
|
805
827
|
from lightning_sdk.lightning_cloud.openapi.models.v1_list_kubernetes_templates_response import V1ListKubernetesTemplatesResponse
|
|
828
|
+
from lightning_sdk.lightning_cloud.openapi.models.v1_list_kubernetes_virtual_machines_response import V1ListKubernetesVirtualMachinesResponse
|
|
806
829
|
from lightning_sdk.lightning_cloud.openapi.models.v1_list_license_response import V1ListLicenseResponse
|
|
807
830
|
from lightning_sdk.lightning_cloud.openapi.models.v1_list_lightning_run_response import V1ListLightningRunResponse
|
|
808
831
|
from lightning_sdk.lightning_cloud.openapi.models.v1_list_lightningapp_instance_artifacts_response import V1ListLightningappInstanceArtifactsResponse
|
|
@@ -981,6 +1004,7 @@ from lightning_sdk.lightning_cloud.openapi.models.v1_quotas import V1Quotas
|
|
|
981
1004
|
from lightning_sdk.lightning_cloud.openapi.models.v1_quote_annual_upsell_response import V1QuoteAnnualUpsellResponse
|
|
982
1005
|
from lightning_sdk.lightning_cloud.openapi.models.v1_quote_subscription_response import V1QuoteSubscriptionResponse
|
|
983
1006
|
from lightning_sdk.lightning_cloud.openapi.models.v1_r2_data_connection import V1R2DataConnection
|
|
1007
|
+
from lightning_sdk.lightning_cloud.openapi.models.v1_refresh_container_registry_credentials_response import V1RefreshContainerRegistryCredentialsResponse
|
|
984
1008
|
from lightning_sdk.lightning_cloud.openapi.models.v1_refresh_index_response import V1RefreshIndexResponse
|
|
985
1009
|
from lightning_sdk.lightning_cloud.openapi.models.v1_refresh_path_response import V1RefreshPathResponse
|
|
986
1010
|
from lightning_sdk.lightning_cloud.openapi.models.v1_refresh_request import V1RefreshRequest
|
|
@@ -1141,6 +1165,7 @@ from lightning_sdk.lightning_cloud.openapi.models.v1_user_requested_flow_compute
|
|
|
1141
1165
|
from lightning_sdk.lightning_cloud.openapi.models.v1_user_slurm_job_action_response import V1UserSLURMJobActionResponse
|
|
1142
1166
|
from lightning_sdk.lightning_cloud.openapi.models.v1_validate_assistant_status_response import V1ValidateAssistantStatusResponse
|
|
1143
1167
|
from lightning_sdk.lightning_cloud.openapi.models.v1_validate_auto_join_domain_response import V1ValidateAutoJoinDomainResponse
|
|
1168
|
+
from lightning_sdk.lightning_cloud.openapi.models.v1_validate_container_registry_response import V1ValidateContainerRegistryResponse
|
|
1144
1169
|
from lightning_sdk.lightning_cloud.openapi.models.v1_validate_data_connection_response import V1ValidateDataConnectionResponse
|
|
1145
1170
|
from lightning_sdk.lightning_cloud.openapi.models.v1_validate_deployment_image_request import V1ValidateDeploymentImageRequest
|
|
1146
1171
|
from lightning_sdk.lightning_cloud.openapi.models.v1_validate_deployment_image_response import V1ValidateDeploymentImageResponse
|