lightning-sdk 0.1.31__py3-none-any.whl → 0.1.33__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- lightning_sdk/__init__.py +3 -1
- lightning_sdk/ai_hub.py +110 -0
- lightning_sdk/api/__init__.py +2 -0
- lightning_sdk/api/ai_hub_api.py +61 -0
- lightning_sdk/api/studio_api.py +15 -8
- lightning_sdk/api/user_api.py +8 -2
- lightning_sdk/api/utils.py +8 -1
- lightning_sdk/cli/upload.py +10 -6
- lightning_sdk/lightning_cloud/openapi/__init__.py +26 -0
- lightning_sdk/lightning_cloud/openapi/api/__init__.py +1 -0
- lightning_sdk/lightning_cloud/openapi/api/cloud_space_service_api.py +101 -0
- lightning_sdk/lightning_cloud/openapi/api/file_system_service_api.py +674 -0
- lightning_sdk/lightning_cloud/openapi/api/lit_logger_service_api.py +396 -0
- lightning_sdk/lightning_cloud/openapi/api/models_store_api.py +1 -0
- lightning_sdk/lightning_cloud/openapi/models/__init__.py +25 -0
- lightning_sdk/lightning_cloud/openapi/models/create.py +79 -1
- lightning_sdk/lightning_cloud/openapi/models/create_deployment_request_defines_a_spec_for_the_job_that_allows_for_autoscaling_jobs.py +27 -1
- lightning_sdk/lightning_cloud/openapi/models/deployments_id_body.py +27 -1
- lightning_sdk/lightning_cloud/openapi/models/deploymenttemplates_id_body.py +79 -1
- lightning_sdk/lightning_cloud/openapi/models/litloggermetrics_id_body.py +175 -0
- lightning_sdk/lightning_cloud/openapi/models/update.py +105 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_affiliate_link.py +79 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_app_type.py +104 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_cluster_accelerator.py +27 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_create_deployment_template_request.py +79 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_create_shared_metrics_stream_request.py +201 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_create_shared_metrics_stream_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_data_connection.py +79 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_data_path.py +175 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_delete_shared_metrics_stream_response.py +97 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_deployment.py +27 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_deployment_metrics.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_deployment_template.py +79 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_deployment_template_parameter.py +69 -17
- lightning_sdk/lightning_cloud/openapi/models/v1_deployment_template_parameter_type.py +1 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_deployment_template_summary.py +27 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_efs_folder_data_connection.py +201 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_filesystem_app.py +227 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_filesystem_cloud_space.py +149 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_filesystem_dataset.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_filesystem_job.py +175 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_filesystem_slurm_job.py +149 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_filesystem_snowflake_connection.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_filesystem_work.py +149 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_gcs_folder_data_connection.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_input.py +29 -3
- lightning_sdk/lightning_cloud/openapi/models/v1_job_spec.py +27 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_lightningwork_spec.py +27 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_list_cloud_space_python_versions_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_list_filesystem_apps_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_list_filesystem_cloud_spaces_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_list_filesystem_datasets_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_list_filesystem_jobs_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_list_filesystem_slurm_jobs_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_list_filesystem_snowflake_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_model.py +6 -6
- lightning_sdk/lightning_cloud/openapi/models/v1_model_version_archive.py +53 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_s3_folder_data_connection.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_transaction.py +27 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_update_shared_metrics_stream_response.py +97 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_user_features.py +53 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_validate_data_connection_response.py +81 -3
- lightning_sdk/lightning_cloud/openapi/models/validate.py +81 -3
- lightning_sdk/lightning_cloud/rest_client.py +2 -0
- lightning_sdk/studio.py +6 -5
- {lightning_sdk-0.1.31.dist-info → lightning_sdk-0.1.33.dist-info}/METADATA +1 -1
- {lightning_sdk-0.1.31.dist-info → lightning_sdk-0.1.33.dist-info}/RECORD +71 -43
- {lightning_sdk-0.1.31.dist-info → lightning_sdk-0.1.33.dist-info}/LICENSE +0 -0
- {lightning_sdk-0.1.31.dist-info → lightning_sdk-0.1.33.dist-info}/WHEEL +0 -0
- {lightning_sdk-0.1.31.dist-info → lightning_sdk-0.1.33.dist-info}/entry_points.txt +0 -0
- {lightning_sdk-0.1.31.dist-info → lightning_sdk-0.1.33.dist-info}/top_level.txt +0 -0
lightning_sdk/__init__.py
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
from lightning_sdk.agents import Agent
|
|
2
|
+
from lightning_sdk.ai_hub import AIHub
|
|
2
3
|
from lightning_sdk.constants import __GLOBAL_LIGHTNING_UNIQUE_IDS_STORE__ # noqa: F401
|
|
3
4
|
from lightning_sdk.helpers import _check_version_and_prompt_upgrade
|
|
4
5
|
from lightning_sdk.job import Job
|
|
@@ -23,7 +24,8 @@ __all__ = [
|
|
|
23
24
|
"Teamspace",
|
|
24
25
|
"User",
|
|
25
26
|
"Agent",
|
|
27
|
+
"AIHub",
|
|
26
28
|
]
|
|
27
29
|
|
|
28
|
-
__version__ = "0.1.
|
|
30
|
+
__version__ = "0.1.33"
|
|
29
31
|
_check_version_and_prompt_upgrade(__version__)
|
lightning_sdk/ai_hub.py
ADDED
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
from typing import TYPE_CHECKING, Any, Dict, List, Optional, Union
|
|
2
|
+
|
|
3
|
+
from lightning_sdk.api import AIHubApi, UserApi
|
|
4
|
+
from lightning_sdk.lightning_cloud import login
|
|
5
|
+
from lightning_sdk.user import User
|
|
6
|
+
from lightning_sdk.utils.resolve import _resolve_org, _resolve_teamspace
|
|
7
|
+
|
|
8
|
+
if TYPE_CHECKING:
|
|
9
|
+
from lightning_sdk import Organization, Teamspace
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class AIHub:
|
|
13
|
+
"""An interface to interact with the AI Hub.
|
|
14
|
+
|
|
15
|
+
Example:
|
|
16
|
+
ai_hub = AIHub()
|
|
17
|
+
api_list = ai_hub.list_apis()
|
|
18
|
+
"""
|
|
19
|
+
|
|
20
|
+
def __init__(self) -> None:
|
|
21
|
+
self._api = AIHubApi()
|
|
22
|
+
self._auth = None
|
|
23
|
+
|
|
24
|
+
def list_apis(self, search: Optional[str] = None) -> List[Dict[str, str]]:
|
|
25
|
+
"""Get a list of AI Hub API templates.
|
|
26
|
+
|
|
27
|
+
Example:
|
|
28
|
+
api_hub = AIHub()
|
|
29
|
+
api_list = api_hub.list_apis(search="Llama")
|
|
30
|
+
"""
|
|
31
|
+
search_query = search or ""
|
|
32
|
+
api_templates = self._api.list_apis(search_query=search_query)
|
|
33
|
+
results = []
|
|
34
|
+
for template in api_templates:
|
|
35
|
+
result = {
|
|
36
|
+
"id": template.id,
|
|
37
|
+
"name": template.name,
|
|
38
|
+
"description": template.description,
|
|
39
|
+
"creator_username": template.creator_username,
|
|
40
|
+
"created_on": template.creation_timestamp.strftime("%Y-%m-%d %H:%M:%S")
|
|
41
|
+
if template.creation_timestamp
|
|
42
|
+
else None,
|
|
43
|
+
}
|
|
44
|
+
results.append(result)
|
|
45
|
+
return results
|
|
46
|
+
|
|
47
|
+
def _authenticate(
|
|
48
|
+
self,
|
|
49
|
+
teamspace: Optional[Union[str, "Teamspace"]] = None,
|
|
50
|
+
org: Optional[Union[str, "Organization"]] = None,
|
|
51
|
+
user: Optional[Union[str, "User"]] = None,
|
|
52
|
+
) -> "Teamspace":
|
|
53
|
+
if self._auth is None:
|
|
54
|
+
self._auth = login.Auth()
|
|
55
|
+
try:
|
|
56
|
+
self._auth.authenticate()
|
|
57
|
+
user = User(name=UserApi()._get_user_by_id(self._auth.user_id).username)
|
|
58
|
+
except ConnectionError as e:
|
|
59
|
+
raise e
|
|
60
|
+
|
|
61
|
+
org = _resolve_org(org)
|
|
62
|
+
teamspace = _resolve_teamspace(teamspace=teamspace, org=org, user=user if org is None else None)
|
|
63
|
+
if teamspace is None:
|
|
64
|
+
raise ValueError("You need to pass a teamspace or an org for your deployment.")
|
|
65
|
+
return teamspace
|
|
66
|
+
|
|
67
|
+
def deploy(
|
|
68
|
+
self,
|
|
69
|
+
api_id: str,
|
|
70
|
+
cluster: Optional[str] = None,
|
|
71
|
+
name: Optional[str] = None,
|
|
72
|
+
teamspace: Optional[Union[str, "Teamspace"]] = None,
|
|
73
|
+
org: Optional[Union[str, "Organization"]] = None,
|
|
74
|
+
**kwargs: Dict[str, Any],
|
|
75
|
+
) -> Dict[str, Union[str, bool]]:
|
|
76
|
+
"""Deploy an API from the AI Hub.
|
|
77
|
+
|
|
78
|
+
Example:
|
|
79
|
+
from lightning_sdk import AIHub
|
|
80
|
+
ai_hub = AIHub()
|
|
81
|
+
deployment = ai_hub.deploy("temp_01jc37n6qpqkdptjpyep0z06hy", batch_size=10)
|
|
82
|
+
|
|
83
|
+
Args:
|
|
84
|
+
api_id: The ID of the API you want to deploy.
|
|
85
|
+
cluster: The cluster where you want to deploy the API, such as "lightning-public-prod".
|
|
86
|
+
name: Name for the deployed API. Defaults to None.
|
|
87
|
+
teamspace: The team or group for deployment. Defaults to None.
|
|
88
|
+
org: The organization for deployment. Defaults to None.
|
|
89
|
+
**kwargs: Additional keyword arguments for deployment.
|
|
90
|
+
|
|
91
|
+
Returns:
|
|
92
|
+
A dictionary containing the name of the deployed API,
|
|
93
|
+
the URL to access it, and whether it is interruptible.
|
|
94
|
+
|
|
95
|
+
Raises:
|
|
96
|
+
ValueError: If a teamspace or organization is not provided.
|
|
97
|
+
ConnectionError: If there is an issue with logging in.
|
|
98
|
+
"""
|
|
99
|
+
teamspace = self._authenticate(teamspace, org)
|
|
100
|
+
teamspace_id = teamspace.id
|
|
101
|
+
|
|
102
|
+
deployment = self._api.deploy_api(
|
|
103
|
+
template_id=api_id, cluster_id=cluster, project_id=teamspace_id, name=name, **kwargs
|
|
104
|
+
)
|
|
105
|
+
return {
|
|
106
|
+
"id": deployment.id,
|
|
107
|
+
"name": deployment.name,
|
|
108
|
+
"base_url": deployment.status.urls[0],
|
|
109
|
+
"interruptible": deployment.spec.spot,
|
|
110
|
+
}
|
lightning_sdk/api/__init__.py
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
from lightning_sdk.api.agents_api import AgentApi
|
|
2
|
+
from lightning_sdk.api.ai_hub_api import AIHubApi
|
|
2
3
|
from lightning_sdk.api.org_api import OrgApi
|
|
3
4
|
from lightning_sdk.api.studio_api import StudioApi
|
|
4
5
|
from lightning_sdk.api.teamspace_api import TeamspaceApi
|
|
@@ -10,4 +11,5 @@ __all__ = [
|
|
|
10
11
|
"TeamspaceApi",
|
|
11
12
|
"UserApi",
|
|
12
13
|
"AgentApi",
|
|
14
|
+
"AIHubApi",
|
|
13
15
|
]
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import re
|
|
2
|
+
from typing import List, Optional
|
|
3
|
+
|
|
4
|
+
from lightning_sdk.lightning_cloud.openapi.models import (
|
|
5
|
+
CreateDeploymentRequestDefinesASpecForTheJobThatAllowsForAutoscalingJobs,
|
|
6
|
+
V1Deployment,
|
|
7
|
+
V1ParameterizationSpec,
|
|
8
|
+
)
|
|
9
|
+
from lightning_sdk.lightning_cloud.openapi.models.v1_deployment_template_gallery_response import (
|
|
10
|
+
V1DeploymentTemplateGalleryResponse,
|
|
11
|
+
)
|
|
12
|
+
from lightning_sdk.lightning_cloud.rest_client import LightningClient
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
class AIHubApi:
|
|
16
|
+
def __init__(self) -> None:
|
|
17
|
+
self._client = LightningClient(max_tries=3)
|
|
18
|
+
|
|
19
|
+
def list_apis(self, search_query: str) -> List[V1DeploymentTemplateGalleryResponse]:
|
|
20
|
+
kwargs = {"show_globally_visible": True}
|
|
21
|
+
return self._client.deployment_templates_service_list_published_deployment_templates(
|
|
22
|
+
search_query=search_query, **kwargs
|
|
23
|
+
).templates
|
|
24
|
+
|
|
25
|
+
@staticmethod
|
|
26
|
+
def _parse_and_update_args(cmd: str, **kwargs: dict) -> list:
|
|
27
|
+
"""Parse the command and update the arguments with the provided kwargs.
|
|
28
|
+
|
|
29
|
+
>>> _parse_and_update_args("--arg1 1 --arg2=2", arg1=3)
|
|
30
|
+
['--arg1 3']
|
|
31
|
+
"""
|
|
32
|
+
keys = [key.lstrip("-") for key in re.findall(r"--\w+", cmd)]
|
|
33
|
+
arguments = {}
|
|
34
|
+
for key in keys:
|
|
35
|
+
if key in kwargs:
|
|
36
|
+
arguments[key] = kwargs[key]
|
|
37
|
+
return [f"--{k} {v}" for k, v in arguments.items()]
|
|
38
|
+
|
|
39
|
+
@staticmethod
|
|
40
|
+
def _resolve_api_arguments(parameter_spec: "V1ParameterizationSpec", **kwargs: dict) -> str:
|
|
41
|
+
return " ".join(AIHubApi._parse_and_update_args(parameter_spec.command, **kwargs))
|
|
42
|
+
|
|
43
|
+
def deploy_api(
|
|
44
|
+
self, template_id: str, project_id: str, cluster_id: str, name: Optional[str], **kwargs: dict
|
|
45
|
+
) -> V1Deployment:
|
|
46
|
+
template = self._client.deployment_templates_service_get_deployment_template(template_id)
|
|
47
|
+
name = name or template.name
|
|
48
|
+
template.spec_v2.endpoint.id = None
|
|
49
|
+
command = self._resolve_api_arguments(template.parameter_spec, **kwargs)
|
|
50
|
+
template.spec_v2.job.command = command
|
|
51
|
+
return self._client.jobs_service_create_deployment(
|
|
52
|
+
project_id=project_id,
|
|
53
|
+
body=CreateDeploymentRequestDefinesASpecForTheJobThatAllowsForAutoscalingJobs(
|
|
54
|
+
autoscaling=template.spec_v2.autoscaling,
|
|
55
|
+
cluster_id=cluster_id,
|
|
56
|
+
endpoint=template.spec_v2.endpoint,
|
|
57
|
+
name=name,
|
|
58
|
+
replicas=0,
|
|
59
|
+
spec=template.spec_v2.job,
|
|
60
|
+
),
|
|
61
|
+
)
|
lightning_sdk/api/studio_api.py
CHANGED
|
@@ -5,7 +5,7 @@ import time
|
|
|
5
5
|
import warnings
|
|
6
6
|
import zipfile
|
|
7
7
|
from threading import Event, Thread
|
|
8
|
-
from typing import Any, Dict, Mapping, Optional, Tuple
|
|
8
|
+
from typing import Any, Dict, Mapping, Optional, Tuple, Union
|
|
9
9
|
|
|
10
10
|
import backoff
|
|
11
11
|
import requests
|
|
@@ -18,6 +18,7 @@ from lightning_sdk.api.utils import (
|
|
|
18
18
|
_DummyBody,
|
|
19
19
|
_DummyResponse,
|
|
20
20
|
_FileUploader,
|
|
21
|
+
_machine_to_compute_name,
|
|
21
22
|
_sanitize_studio_remote_path,
|
|
22
23
|
)
|
|
23
24
|
from lightning_sdk.api.utils import (
|
|
@@ -146,9 +147,11 @@ class StudioApi:
|
|
|
146
147
|
"""Retries checking the sync_in_progress value of the code status when there's an AttributeError."""
|
|
147
148
|
return self.get_studio_status(studio_id, teamspace_id).in_use.sync_in_progress
|
|
148
149
|
|
|
149
|
-
def start_studio(
|
|
150
|
+
def start_studio(
|
|
151
|
+
self, studio_id: str, teamspace_id: str, machine: Union[Machine, str], interruptible: False
|
|
152
|
+
) -> None:
|
|
150
153
|
"""Start an existing Studio."""
|
|
151
|
-
if machine == Machine.CPU_SMALL:
|
|
154
|
+
if _machine_to_compute_name(machine) == _machine_to_compute_name(Machine.CPU_SMALL):
|
|
152
155
|
warnings.warn(
|
|
153
156
|
f"{Machine.CPU_SMALL} is not a valid machine for starting a Studio. "
|
|
154
157
|
"It is reserved for running jobs only. "
|
|
@@ -158,7 +161,7 @@ class StudioApi:
|
|
|
158
161
|
|
|
159
162
|
self._client.cloud_space_service_start_cloud_space_instance(
|
|
160
163
|
IdStartBody(
|
|
161
|
-
compute_config=V1UserRequestedComputeConfig(name=
|
|
164
|
+
compute_config=V1UserRequestedComputeConfig(name=_machine_to_compute_name(machine), spot=interruptible)
|
|
162
165
|
),
|
|
163
166
|
teamspace_id,
|
|
164
167
|
studio_id,
|
|
@@ -204,9 +207,11 @@ class StudioApi:
|
|
|
204
207
|
def _get_studio_instance_status_from_object(self, studio: V1CloudSpace) -> Optional[str]:
|
|
205
208
|
return getattr(getattr(studio.code_status, "in_use", None), "phase", None)
|
|
206
209
|
|
|
207
|
-
def _request_switch(
|
|
210
|
+
def _request_switch(
|
|
211
|
+
self, studio_id: str, teamspace_id: str, machine: Union[Machine, str], interruptible: bool
|
|
212
|
+
) -> None:
|
|
208
213
|
"""Switches given Studio to a new machine type."""
|
|
209
|
-
if machine == Machine.CPU_SMALL:
|
|
214
|
+
if _machine_to_compute_name(machine) == _machine_to_compute_name(Machine.CPU_SMALL):
|
|
210
215
|
warnings.warn(
|
|
211
216
|
f"{Machine.CPU_SMALL} is not a valid machine for switching a Studio. "
|
|
212
217
|
"It is reserved for running jobs only. "
|
|
@@ -214,7 +219,7 @@ class StudioApi:
|
|
|
214
219
|
)
|
|
215
220
|
machine = Machine.CPU
|
|
216
221
|
|
|
217
|
-
compute_name =
|
|
222
|
+
compute_name = _machine_to_compute_name(machine)
|
|
218
223
|
# TODO: UI sends disk size here, maybe we need to also?
|
|
219
224
|
body = IdCodeconfigBody(compute_config=V1UserRequestedComputeConfig(name=compute_name, spot=interruptible))
|
|
220
225
|
self._client.cloud_space_service_update_cloud_space_instance_config(
|
|
@@ -223,7 +228,9 @@ class StudioApi:
|
|
|
223
228
|
body=body,
|
|
224
229
|
)
|
|
225
230
|
|
|
226
|
-
def switch_studio_machine(
|
|
231
|
+
def switch_studio_machine(
|
|
232
|
+
self, studio_id: str, teamspace_id: str, machine: Union[Machine, str], interruptible: bool
|
|
233
|
+
) -> None:
|
|
227
234
|
"""Switches given Studio to a new machine type."""
|
|
228
235
|
self._request_switch(
|
|
229
236
|
studio_id=studio_id, teamspace_id=teamspace_id, machine=machine, interruptible=interruptible
|
lightning_sdk/api/user_api.py
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
from typing import List
|
|
1
|
+
from typing import List, Union
|
|
2
2
|
|
|
3
3
|
from lightning_sdk.lightning_cloud.login import Auth
|
|
4
4
|
from lightning_sdk.lightning_cloud.openapi import (
|
|
@@ -19,8 +19,14 @@ class UserApi:
|
|
|
19
19
|
def __init__(self) -> None:
|
|
20
20
|
self._client = LightningClient(max_tries=7)
|
|
21
21
|
|
|
22
|
-
def get_user(self, name: str) -> V1SearchUser:
|
|
22
|
+
def get_user(self, name: str) -> Union[V1SearchUser, V1GetUserResponse]:
|
|
23
23
|
"""Gets user by name."""
|
|
24
|
+
authed_user = self._client.auth_service_get_user()
|
|
25
|
+
if authed_user.username == name:
|
|
26
|
+
return authed_user
|
|
27
|
+
|
|
28
|
+
# if it's not the authed user, lookup by name
|
|
29
|
+
# TODO: This API won't necesarily return the correct thing
|
|
24
30
|
response = self._client.user_service_search_users(query=name)
|
|
25
31
|
|
|
26
32
|
users = [u for u in response.users if u.username == name]
|
lightning_sdk/api/utils.py
CHANGED
|
@@ -4,7 +4,7 @@ import os
|
|
|
4
4
|
from concurrent.futures import ThreadPoolExecutor
|
|
5
5
|
from functools import partial
|
|
6
6
|
from pathlib import Path
|
|
7
|
-
from typing import Any, Dict, List, Optional, Tuple
|
|
7
|
+
from typing import Any, Dict, List, Optional, Tuple, Union
|
|
8
8
|
|
|
9
9
|
import backoff
|
|
10
10
|
import requests
|
|
@@ -340,6 +340,13 @@ _MACHINE_TO_COMPUTE_NAME: Dict[Machine, str] = {
|
|
|
340
340
|
Machine.H200_X_8: "p5e.48xlarge",
|
|
341
341
|
}
|
|
342
342
|
|
|
343
|
+
|
|
344
|
+
def _machine_to_compute_name(machine: Union[Machine, str]) -> str:
|
|
345
|
+
if isinstance(machine, Machine):
|
|
346
|
+
return _MACHINE_TO_COMPUTE_NAME[machine]
|
|
347
|
+
return machine
|
|
348
|
+
|
|
349
|
+
|
|
343
350
|
_COMPUTE_NAME_TO_MACHINE: Dict[str, Machine] = {v: k for k, v in _MACHINE_TO_COMPUTE_NAME.items()}
|
|
344
351
|
|
|
345
352
|
_DEFAULT_CLOUD_URL = "https://lightning.ai:443"
|
lightning_sdk/cli/upload.py
CHANGED
|
@@ -76,13 +76,14 @@ class _Uploads(_StudiosMenu):
|
|
|
76
76
|
if remote_path is None:
|
|
77
77
|
remote_path = os.path.basename(path)
|
|
78
78
|
|
|
79
|
+
if not Path(path).exists():
|
|
80
|
+
raise FileNotFoundError(f"The provided path does not exist: {path}.")
|
|
81
|
+
if not Path(path).is_dir():
|
|
82
|
+
raise StudioCliError(f"The provided path is not a folder: {path}. Use `lightning upload file` instead.")
|
|
83
|
+
|
|
79
84
|
selected_studio = self._resolve_studio(studio)
|
|
80
85
|
|
|
81
86
|
print(f"Uploading to {selected_studio.teamspace.name}/{selected_studio.name}")
|
|
82
|
-
if not Path(path).exists:
|
|
83
|
-
raise FileNotFoundError(f"The provided path does not exist: {path}.")
|
|
84
|
-
if not Path(path).is_dir:
|
|
85
|
-
raise StudioCliError(f"The provided path is not a folder: {path}. Use `lightning upload file` instead.")
|
|
86
87
|
|
|
87
88
|
pairs = {}
|
|
88
89
|
for root, _, files in os.walk(path):
|
|
@@ -130,11 +131,14 @@ class _Uploads(_StudiosMenu):
|
|
|
130
131
|
if remote_path is None:
|
|
131
132
|
remote_path = os.path.basename(path)
|
|
132
133
|
|
|
134
|
+
if Path(path).is_dir():
|
|
135
|
+
raise StudioCliError(f"The provided path is a folder: {path}. Use `lightning upload folder` instead.")
|
|
136
|
+
if not Path(path).exists():
|
|
137
|
+
raise FileNotFoundError(f"The provided path does not exist: {path}.")
|
|
138
|
+
|
|
133
139
|
selected_studio = self._resolve_studio(studio)
|
|
134
140
|
|
|
135
141
|
print(f"Uploading to {selected_studio.teamspace.name}/{selected_studio.name}")
|
|
136
|
-
if Path(path).is_dir:
|
|
137
|
-
raise StudioCliError(f"The provided path is a folder: {path}. Use `lightning upload folder` instead.")
|
|
138
142
|
|
|
139
143
|
self._single_file_upload(selected_studio, path, remote_path, True)
|
|
140
144
|
|
|
@@ -34,6 +34,7 @@ from lightning_sdk.lightning_cloud.openapi.api.dataset_service_api import Datase
|
|
|
34
34
|
from lightning_sdk.lightning_cloud.openapi.api.deployment_templates_service_api import DeploymentTemplatesServiceApi
|
|
35
35
|
from lightning_sdk.lightning_cloud.openapi.api.endpoint_service_api import EndpointServiceApi
|
|
36
36
|
from lightning_sdk.lightning_cloud.openapi.api.experiments_service_api import ExperimentsServiceApi
|
|
37
|
+
from lightning_sdk.lightning_cloud.openapi.api.file_system_service_api import FileSystemServiceApi
|
|
37
38
|
from lightning_sdk.lightning_cloud.openapi.api.jobs_service_api import JobsServiceApi
|
|
38
39
|
from lightning_sdk.lightning_cloud.openapi.api.lightningapp_instance_service_api import LightningappInstanceServiceApi
|
|
39
40
|
from lightning_sdk.lightning_cloud.openapi.api.lightningapp_v2_service_api import LightningappV2ServiceApi
|
|
@@ -128,6 +129,7 @@ from lightning_sdk.lightning_cloud.openapi.models.jobs_id_body import JobsIdBody
|
|
|
128
129
|
from lightning_sdk.lightning_cloud.openapi.models.jobs_id_body1 import JobsIdBody1
|
|
129
130
|
from lightning_sdk.lightning_cloud.openapi.models.jobs_id_body2 import JobsIdBody2
|
|
130
131
|
from lightning_sdk.lightning_cloud.openapi.models.jobs_id_body3 import JobsIdBody3
|
|
132
|
+
from lightning_sdk.lightning_cloud.openapi.models.litloggermetrics_id_body import LitloggermetricsIdBody
|
|
131
133
|
from lightning_sdk.lightning_cloud.openapi.models.litpages_id_body import LitpagesIdBody
|
|
132
134
|
from lightning_sdk.lightning_cloud.openapi.models.loggermetrics_id_body import LoggermetricsIdBody
|
|
133
135
|
from lightning_sdk.lightning_cloud.openapi.models.metrics_stream_id_loggerartifacts_body import MetricsStreamIdLoggerartifactsBody
|
|
@@ -198,6 +200,7 @@ from lightning_sdk.lightning_cloud.openapi.models.v1_agent_job import V1AgentJob
|
|
|
198
200
|
from lightning_sdk.lightning_cloud.openapi.models.v1_agent_job_artifact import V1AgentJobArtifact
|
|
199
201
|
from lightning_sdk.lightning_cloud.openapi.models.v1_agent_upload_multipart_url import V1AgentUploadMultipartUrl
|
|
200
202
|
from lightning_sdk.lightning_cloud.openapi.models.v1_agent_upload_part_response import V1AgentUploadPartResponse
|
|
203
|
+
from lightning_sdk.lightning_cloud.openapi.models.v1_app_type import V1AppType
|
|
201
204
|
from lightning_sdk.lightning_cloud.openapi.models.v1_append_logger_metrics_response import V1AppendLoggerMetricsResponse
|
|
202
205
|
from lightning_sdk.lightning_cloud.openapi.models.v1_approve_auto_join_domain_response import V1ApproveAutoJoinDomainResponse
|
|
203
206
|
from lightning_sdk.lightning_cloud.openapi.models.v1_artifact import V1Artifact
|
|
@@ -291,6 +294,8 @@ from lightning_sdk.lightning_cloud.openapi.models.v1_create_multi_part_upload_re
|
|
|
291
294
|
from lightning_sdk.lightning_cloud.openapi.models.v1_create_organization_request import V1CreateOrganizationRequest
|
|
292
295
|
from lightning_sdk.lightning_cloud.openapi.models.v1_create_project_request import V1CreateProjectRequest
|
|
293
296
|
from lightning_sdk.lightning_cloud.openapi.models.v1_create_ssh_public_key_request import V1CreateSSHPublicKeyRequest
|
|
297
|
+
from lightning_sdk.lightning_cloud.openapi.models.v1_create_shared_metrics_stream_request import V1CreateSharedMetricsStreamRequest
|
|
298
|
+
from lightning_sdk.lightning_cloud.openapi.models.v1_create_shared_metrics_stream_response import V1CreateSharedMetricsStreamResponse
|
|
294
299
|
from lightning_sdk.lightning_cloud.openapi.models.v1_create_snowflake_connection_response import V1CreateSnowflakeConnectionResponse
|
|
295
300
|
from lightning_sdk.lightning_cloud.openapi.models.v1_create_subscription_checkout_session_request import V1CreateSubscriptionCheckoutSessionRequest
|
|
296
301
|
from lightning_sdk.lightning_cloud.openapi.models.v1_create_subscription_checkout_session_response import V1CreateSubscriptionCheckoutSessionResponse
|
|
@@ -300,6 +305,7 @@ from lightning_sdk.lightning_cloud.openapi.models.v1_data_connection import V1Da
|
|
|
300
305
|
from lightning_sdk.lightning_cloud.openapi.models.v1_data_connection_artifact import V1DataConnectionArtifact
|
|
301
306
|
from lightning_sdk.lightning_cloud.openapi.models.v1_data_connection_mount import V1DataConnectionMount
|
|
302
307
|
from lightning_sdk.lightning_cloud.openapi.models.v1_data_connection_state import V1DataConnectionState
|
|
308
|
+
from lightning_sdk.lightning_cloud.openapi.models.v1_data_path import V1DataPath
|
|
303
309
|
from lightning_sdk.lightning_cloud.openapi.models.v1_dataset import V1Dataset
|
|
304
310
|
from lightning_sdk.lightning_cloud.openapi.models.v1_dataset_type import V1DatasetType
|
|
305
311
|
from lightning_sdk.lightning_cloud.openapi.models.v1_delete_affiliate_link_response import V1DeleteAffiliateLinkResponse
|
|
@@ -348,6 +354,7 @@ from lightning_sdk.lightning_cloud.openapi.models.v1_delete_project_role_respons
|
|
|
348
354
|
from lightning_sdk.lightning_cloud.openapi.models.v1_delete_ssh_public_key_response import V1DeleteSSHPublicKeyResponse
|
|
349
355
|
from lightning_sdk.lightning_cloud.openapi.models.v1_delete_secret_response import V1DeleteSecretResponse
|
|
350
356
|
from lightning_sdk.lightning_cloud.openapi.models.v1_delete_service_execution_response import V1DeleteServiceExecutionResponse
|
|
357
|
+
from lightning_sdk.lightning_cloud.openapi.models.v1_delete_shared_metrics_stream_response import V1DeleteSharedMetricsStreamResponse
|
|
351
358
|
from lightning_sdk.lightning_cloud.openapi.models.v1_delete_studio_job_response import V1DeleteStudioJobResponse
|
|
352
359
|
from lightning_sdk.lightning_cloud.openapi.models.v1_delete_user_slurm_job_response import V1DeleteUserSLURMJobResponse
|
|
353
360
|
from lightning_sdk.lightning_cloud.openapi.models.v1_dependency_cache_state import V1DependencyCacheState
|
|
@@ -355,6 +362,7 @@ from lightning_sdk.lightning_cloud.openapi.models.v1_dependency_file_info import
|
|
|
355
362
|
from lightning_sdk.lightning_cloud.openapi.models.v1_deployment import V1Deployment
|
|
356
363
|
from lightning_sdk.lightning_cloud.openapi.models.v1_deployment_event import V1DeploymentEvent
|
|
357
364
|
from lightning_sdk.lightning_cloud.openapi.models.v1_deployment_event_type import V1DeploymentEventType
|
|
365
|
+
from lightning_sdk.lightning_cloud.openapi.models.v1_deployment_metrics import V1DeploymentMetrics
|
|
358
366
|
from lightning_sdk.lightning_cloud.openapi.models.v1_deployment_release import V1DeploymentRelease
|
|
359
367
|
from lightning_sdk.lightning_cloud.openapi.models.v1_deployment_spec import V1DeploymentSpec
|
|
360
368
|
from lightning_sdk.lightning_cloud.openapi.models.v1_deployment_state import V1DeploymentState
|
|
@@ -379,6 +387,7 @@ from lightning_sdk.lightning_cloud.openapi.models.v1_drive_status import V1Drive
|
|
|
379
387
|
from lightning_sdk.lightning_cloud.openapi.models.v1_drive_type import V1DriveType
|
|
380
388
|
from lightning_sdk.lightning_cloud.openapi.models.v1_drive_type_spec import V1DriveTypeSpec
|
|
381
389
|
from lightning_sdk.lightning_cloud.openapi.models.v1_drive_type_status import V1DriveTypeStatus
|
|
390
|
+
from lightning_sdk.lightning_cloud.openapi.models.v1_efs_folder_data_connection import V1EFSFolderDataConnection
|
|
382
391
|
from lightning_sdk.lightning_cloud.openapi.models.v1_ebs import V1Ebs
|
|
383
392
|
from lightning_sdk.lightning_cloud.openapi.models.v1_efs_data_connection import V1EfsDataConnection
|
|
384
393
|
from lightning_sdk.lightning_cloud.openapi.models.v1_endpoint import V1Endpoint
|
|
@@ -393,9 +402,17 @@ from lightning_sdk.lightning_cloud.openapi.models.v1_experiment import V1Experim
|
|
|
393
402
|
from lightning_sdk.lightning_cloud.openapi.models.v1_export_snowflake_query_response import V1ExportSnowflakeQueryResponse
|
|
394
403
|
from lightning_sdk.lightning_cloud.openapi.models.v1_external_search_user import V1ExternalSearchUser
|
|
395
404
|
from lightning_sdk.lightning_cloud.openapi.models.v1_file_endpoint import V1FileEndpoint
|
|
405
|
+
from lightning_sdk.lightning_cloud.openapi.models.v1_filesystem_app import V1FilesystemApp
|
|
406
|
+
from lightning_sdk.lightning_cloud.openapi.models.v1_filesystem_cloud_space import V1FilesystemCloudSpace
|
|
407
|
+
from lightning_sdk.lightning_cloud.openapi.models.v1_filesystem_dataset import V1FilesystemDataset
|
|
408
|
+
from lightning_sdk.lightning_cloud.openapi.models.v1_filesystem_job import V1FilesystemJob
|
|
409
|
+
from lightning_sdk.lightning_cloud.openapi.models.v1_filesystem_slurm_job import V1FilesystemSlurmJob
|
|
410
|
+
from lightning_sdk.lightning_cloud.openapi.models.v1_filesystem_snowflake_connection import V1FilesystemSnowflakeConnection
|
|
411
|
+
from lightning_sdk.lightning_cloud.openapi.models.v1_filesystem_work import V1FilesystemWork
|
|
396
412
|
from lightning_sdk.lightning_cloud.openapi.models.v1_find_capacity_block_offering_response import V1FindCapacityBlockOfferingResponse
|
|
397
413
|
from lightning_sdk.lightning_cloud.openapi.models.v1_flowserver import V1Flowserver
|
|
398
414
|
from lightning_sdk.lightning_cloud.openapi.models.v1_folder_index_status import V1FolderIndexStatus
|
|
415
|
+
from lightning_sdk.lightning_cloud.openapi.models.v1_gcs_folder_data_connection import V1GCSFolderDataConnection
|
|
399
416
|
from lightning_sdk.lightning_cloud.openapi.models.v1_gpu_system_metrics import V1GPUSystemMetrics
|
|
400
417
|
from lightning_sdk.lightning_cloud.openapi.models.v1_gallery_app import V1GalleryApp
|
|
401
418
|
from lightning_sdk.lightning_cloud.openapi.models.v1_gallery_component import V1GalleryComponent
|
|
@@ -485,6 +502,7 @@ from lightning_sdk.lightning_cloud.openapi.models.v1_list_assistants_response im
|
|
|
485
502
|
from lightning_sdk.lightning_cloud.openapi.models.v1_list_cloud_space_apps_response import V1ListCloudSpaceAppsResponse
|
|
486
503
|
from lightning_sdk.lightning_cloud.openapi.models.v1_list_cloud_space_instances_response import V1ListCloudSpaceInstancesResponse
|
|
487
504
|
from lightning_sdk.lightning_cloud.openapi.models.v1_list_cloud_space_publications_response import V1ListCloudSpacePublicationsResponse
|
|
505
|
+
from lightning_sdk.lightning_cloud.openapi.models.v1_list_cloud_space_python_versions_response import V1ListCloudSpacePythonVersionsResponse
|
|
488
506
|
from lightning_sdk.lightning_cloud.openapi.models.v1_list_cloud_space_sessions_response import V1ListCloudSpaceSessionsResponse
|
|
489
507
|
from lightning_sdk.lightning_cloud.openapi.models.v1_list_cloud_space_tags_response import V1ListCloudSpaceTagsResponse
|
|
490
508
|
from lightning_sdk.lightning_cloud.openapi.models.v1_list_cloud_space_version_publications_response import V1ListCloudSpaceVersionPublicationsResponse
|
|
@@ -508,6 +526,12 @@ from lightning_sdk.lightning_cloud.openapi.models.v1_list_deployments_response i
|
|
|
508
526
|
from lightning_sdk.lightning_cloud.openapi.models.v1_list_endpoints_response import V1ListEndpointsResponse
|
|
509
527
|
from lightning_sdk.lightning_cloud.openapi.models.v1_list_experiments_response import V1ListExperimentsResponse
|
|
510
528
|
from lightning_sdk.lightning_cloud.openapi.models.v1_list_file_endpoints_response import V1ListFileEndpointsResponse
|
|
529
|
+
from lightning_sdk.lightning_cloud.openapi.models.v1_list_filesystem_apps_response import V1ListFilesystemAppsResponse
|
|
530
|
+
from lightning_sdk.lightning_cloud.openapi.models.v1_list_filesystem_cloud_spaces_response import V1ListFilesystemCloudSpacesResponse
|
|
531
|
+
from lightning_sdk.lightning_cloud.openapi.models.v1_list_filesystem_datasets_response import V1ListFilesystemDatasetsResponse
|
|
532
|
+
from lightning_sdk.lightning_cloud.openapi.models.v1_list_filesystem_jobs_response import V1ListFilesystemJobsResponse
|
|
533
|
+
from lightning_sdk.lightning_cloud.openapi.models.v1_list_filesystem_slurm_jobs_response import V1ListFilesystemSlurmJobsResponse
|
|
534
|
+
from lightning_sdk.lightning_cloud.openapi.models.v1_list_filesystem_snowflake_response import V1ListFilesystemSnowflakeResponse
|
|
511
535
|
from lightning_sdk.lightning_cloud.openapi.models.v1_list_gallery_components_response import V1ListGalleryComponentsResponse
|
|
512
536
|
from lightning_sdk.lightning_cloud.openapi.models.v1_list_gallery_lightningapps_response import V1ListGalleryLightningappsResponse
|
|
513
537
|
from lightning_sdk.lightning_cloud.openapi.models.v1_list_job_files_response import V1ListJobFilesResponse
|
|
@@ -647,6 +671,7 @@ from lightning_sdk.lightning_cloud.openapi.models.v1_rule_action import V1RuleAc
|
|
|
647
671
|
from lightning_sdk.lightning_cloud.openapi.models.v1_rule_condition import V1RuleCondition
|
|
648
672
|
from lightning_sdk.lightning_cloud.openapi.models.v1_rule_effect import V1RuleEffect
|
|
649
673
|
from lightning_sdk.lightning_cloud.openapi.models.v1_rule_resource import V1RuleResource
|
|
674
|
+
from lightning_sdk.lightning_cloud.openapi.models.v1_s3_folder_data_connection import V1S3FolderDataConnection
|
|
650
675
|
from lightning_sdk.lightning_cloud.openapi.models.v1_slurm_job import V1SLURMJob
|
|
651
676
|
from lightning_sdk.lightning_cloud.openapi.models.v1_ssh_key_pair import V1SSHKeyPair
|
|
652
677
|
from lightning_sdk.lightning_cloud.openapi.models.v1_ssh_public_key import V1SSHPublicKey
|
|
@@ -700,6 +725,7 @@ from lightning_sdk.lightning_cloud.openapi.models.v1_update_cluster_availability
|
|
|
700
725
|
from lightning_sdk.lightning_cloud.openapi.models.v1_update_index_response import V1UpdateIndexResponse
|
|
701
726
|
from lightning_sdk.lightning_cloud.openapi.models.v1_update_lit_page_response import V1UpdateLitPageResponse
|
|
702
727
|
from lightning_sdk.lightning_cloud.openapi.models.v1_update_project_cluster_accelerators_response import V1UpdateProjectClusterAcceleratorsResponse
|
|
728
|
+
from lightning_sdk.lightning_cloud.openapi.models.v1_update_shared_metrics_stream_response import V1UpdateSharedMetricsStreamResponse
|
|
703
729
|
from lightning_sdk.lightning_cloud.openapi.models.v1_update_snowflake_query_response import V1UpdateSnowflakeQueryResponse
|
|
704
730
|
from lightning_sdk.lightning_cloud.openapi.models.v1_update_user_request import V1UpdateUserRequest
|
|
705
731
|
from lightning_sdk.lightning_cloud.openapi.models.v1_update_user_viewed_new_features_request import V1UpdateUserViewedNewFeaturesRequest
|
|
@@ -15,6 +15,7 @@ from lightning_sdk.lightning_cloud.openapi.api.dataset_service_api import Datase
|
|
|
15
15
|
from lightning_sdk.lightning_cloud.openapi.api.deployment_templates_service_api import DeploymentTemplatesServiceApi
|
|
16
16
|
from lightning_sdk.lightning_cloud.openapi.api.endpoint_service_api import EndpointServiceApi
|
|
17
17
|
from lightning_sdk.lightning_cloud.openapi.api.experiments_service_api import ExperimentsServiceApi
|
|
18
|
+
from lightning_sdk.lightning_cloud.openapi.api.file_system_service_api import FileSystemServiceApi
|
|
18
19
|
from lightning_sdk.lightning_cloud.openapi.api.jobs_service_api import JobsServiceApi
|
|
19
20
|
from lightning_sdk.lightning_cloud.openapi.api.lightningapp_instance_service_api import LightningappInstanceServiceApi
|
|
20
21
|
from lightning_sdk.lightning_cloud.openapi.api.lightningapp_v2_service_api import LightningappV2ServiceApi
|
|
@@ -5209,6 +5209,107 @@ class CloudSpaceServiceApi(object):
|
|
|
5209
5209
|
_request_timeout=params.get('_request_timeout'),
|
|
5210
5210
|
collection_formats=collection_formats)
|
|
5211
5211
|
|
|
5212
|
+
def cloud_space_service_list_cloud_space_python_versions(self, project_id: 'str', cloudspace_id: 'str', **kwargs) -> 'V1ListCloudSpacePythonVersionsResponse': # noqa: E501
|
|
5213
|
+
"""cloud_space_service_list_cloud_space_python_versions # noqa: E501
|
|
5214
|
+
|
|
5215
|
+
This method makes a synchronous HTTP request by default. To make an
|
|
5216
|
+
asynchronous HTTP request, please pass async_req=True
|
|
5217
|
+
>>> thread = api.cloud_space_service_list_cloud_space_python_versions(project_id, cloudspace_id, async_req=True)
|
|
5218
|
+
>>> result = thread.get()
|
|
5219
|
+
|
|
5220
|
+
:param async_req bool
|
|
5221
|
+
:param str project_id: (required)
|
|
5222
|
+
:param str cloudspace_id: (required)
|
|
5223
|
+
:return: V1ListCloudSpacePythonVersionsResponse
|
|
5224
|
+
If the method is called asynchronously,
|
|
5225
|
+
returns the request thread.
|
|
5226
|
+
"""
|
|
5227
|
+
kwargs['_return_http_data_only'] = True
|
|
5228
|
+
if kwargs.get('async_req'):
|
|
5229
|
+
return self.cloud_space_service_list_cloud_space_python_versions_with_http_info(project_id, cloudspace_id, **kwargs) # noqa: E501
|
|
5230
|
+
else:
|
|
5231
|
+
(data) = self.cloud_space_service_list_cloud_space_python_versions_with_http_info(project_id, cloudspace_id, **kwargs) # noqa: E501
|
|
5232
|
+
return data
|
|
5233
|
+
|
|
5234
|
+
def cloud_space_service_list_cloud_space_python_versions_with_http_info(self, project_id: 'str', cloudspace_id: 'str', **kwargs) -> 'V1ListCloudSpacePythonVersionsResponse': # noqa: E501
|
|
5235
|
+
"""cloud_space_service_list_cloud_space_python_versions # noqa: E501
|
|
5236
|
+
|
|
5237
|
+
This method makes a synchronous HTTP request by default. To make an
|
|
5238
|
+
asynchronous HTTP request, please pass async_req=True
|
|
5239
|
+
>>> thread = api.cloud_space_service_list_cloud_space_python_versions_with_http_info(project_id, cloudspace_id, async_req=True)
|
|
5240
|
+
>>> result = thread.get()
|
|
5241
|
+
|
|
5242
|
+
:param async_req bool
|
|
5243
|
+
:param str project_id: (required)
|
|
5244
|
+
:param str cloudspace_id: (required)
|
|
5245
|
+
:return: V1ListCloudSpacePythonVersionsResponse
|
|
5246
|
+
If the method is called asynchronously,
|
|
5247
|
+
returns the request thread.
|
|
5248
|
+
"""
|
|
5249
|
+
|
|
5250
|
+
all_params = ['project_id', 'cloudspace_id'] # noqa: E501
|
|
5251
|
+
all_params.append('async_req')
|
|
5252
|
+
all_params.append('_return_http_data_only')
|
|
5253
|
+
all_params.append('_preload_content')
|
|
5254
|
+
all_params.append('_request_timeout')
|
|
5255
|
+
|
|
5256
|
+
params = locals()
|
|
5257
|
+
for key, val in six.iteritems(params['kwargs']):
|
|
5258
|
+
if key not in all_params:
|
|
5259
|
+
raise TypeError(
|
|
5260
|
+
"Got an unexpected keyword argument '%s'"
|
|
5261
|
+
" to method cloud_space_service_list_cloud_space_python_versions" % key
|
|
5262
|
+
)
|
|
5263
|
+
params[key] = val
|
|
5264
|
+
del params['kwargs']
|
|
5265
|
+
# verify the required parameter 'project_id' is set
|
|
5266
|
+
if ('project_id' not in params or
|
|
5267
|
+
params['project_id'] is None):
|
|
5268
|
+
raise ValueError("Missing the required parameter `project_id` when calling `cloud_space_service_list_cloud_space_python_versions`") # noqa: E501
|
|
5269
|
+
# verify the required parameter 'cloudspace_id' is set
|
|
5270
|
+
if ('cloudspace_id' not in params or
|
|
5271
|
+
params['cloudspace_id'] is None):
|
|
5272
|
+
raise ValueError("Missing the required parameter `cloudspace_id` when calling `cloud_space_service_list_cloud_space_python_versions`") # noqa: E501
|
|
5273
|
+
|
|
5274
|
+
collection_formats = {}
|
|
5275
|
+
|
|
5276
|
+
path_params = {}
|
|
5277
|
+
if 'project_id' in params:
|
|
5278
|
+
path_params['projectId'] = params['project_id'] # noqa: E501
|
|
5279
|
+
if 'cloudspace_id' in params:
|
|
5280
|
+
path_params['cloudspaceId'] = params['cloudspace_id'] # noqa: E501
|
|
5281
|
+
|
|
5282
|
+
query_params = []
|
|
5283
|
+
|
|
5284
|
+
header_params = {}
|
|
5285
|
+
|
|
5286
|
+
form_params = []
|
|
5287
|
+
local_var_files = {}
|
|
5288
|
+
|
|
5289
|
+
body_params = None
|
|
5290
|
+
# HTTP header `Accept`
|
|
5291
|
+
header_params['Accept'] = self.api_client.select_header_accept(
|
|
5292
|
+
['application/json']) # noqa: E501
|
|
5293
|
+
|
|
5294
|
+
# Authentication setting
|
|
5295
|
+
auth_settings = [] # noqa: E501
|
|
5296
|
+
|
|
5297
|
+
return self.api_client.call_api(
|
|
5298
|
+
'/v1/projects/{projectId}/cloudspaces/{cloudspaceId}/python-versions', 'GET',
|
|
5299
|
+
path_params,
|
|
5300
|
+
query_params,
|
|
5301
|
+
header_params,
|
|
5302
|
+
body=body_params,
|
|
5303
|
+
post_params=form_params,
|
|
5304
|
+
files=local_var_files,
|
|
5305
|
+
response_type='V1ListCloudSpacePythonVersionsResponse', # noqa: E501
|
|
5306
|
+
auth_settings=auth_settings,
|
|
5307
|
+
async_req=params.get('async_req'),
|
|
5308
|
+
_return_http_data_only=params.get('_return_http_data_only'),
|
|
5309
|
+
_preload_content=params.get('_preload_content', True),
|
|
5310
|
+
_request_timeout=params.get('_request_timeout'),
|
|
5311
|
+
collection_formats=collection_formats)
|
|
5312
|
+
|
|
5212
5313
|
def cloud_space_service_list_cloud_space_sessions(self, project_id: 'str', cloudspace_id: 'str', **kwargs) -> 'V1ListCloudSpaceSessionsResponse': # noqa: E501
|
|
5213
5314
|
"""Session endpoints # noqa: E501
|
|
5214
5315
|
|