lightning-sdk 0.2.19__py3-none-any.whl → 0.2.20__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.
Files changed (41) hide show
  1. lightning_sdk/__init__.py +1 -1
  2. lightning_sdk/api/license_api.py +28 -6
  3. lightning_sdk/cli/deploy/_auth.py +11 -19
  4. lightning_sdk/cli/entrypoint.py +20 -2
  5. lightning_sdk/lightning_cloud/login.py +2 -2
  6. lightning_sdk/lightning_cloud/openapi/__init__.py +2 -2
  7. lightning_sdk/lightning_cloud/openapi/api/jobs_service_api.py +121 -0
  8. lightning_sdk/lightning_cloud/openapi/models/__init__.py +2 -2
  9. lightning_sdk/lightning_cloud/openapi/models/alertingevents_id_body.py +409 -0
  10. lightning_sdk/lightning_cloud/openapi/models/id_codeconfig_body.py +29 -3
  11. lightning_sdk/lightning_cloud/openapi/models/update.py +27 -1
  12. lightning_sdk/lightning_cloud/openapi/models/v1_author.py +201 -0
  13. lightning_sdk/lightning_cloud/openapi/models/v1_blog_post.py +53 -1
  14. lightning_sdk/lightning_cloud/openapi/models/v1_cloud_space.py +27 -1
  15. lightning_sdk/lightning_cloud/openapi/models/v1_create_cloud_space_environment_template_request.py +27 -1
  16. lightning_sdk/lightning_cloud/openapi/models/v1_data_connection.py +79 -1
  17. lightning_sdk/lightning_cloud/openapi/models/v1_deployment_alerting_policy_type.py +1 -0
  18. lightning_sdk/lightning_cloud/openapi/models/v1_get_organization_storage_metadata_response.py +79 -1
  19. lightning_sdk/lightning_cloud/openapi/models/v1_get_project_storage_metadata_response.py +105 -1
  20. lightning_sdk/lightning_cloud/openapi/models/v1_get_user_storage_breakdown_response.py +27 -1
  21. lightning_sdk/lightning_cloud/openapi/models/v1_membership.py +27 -1
  22. lightning_sdk/lightning_cloud/openapi/models/v1_notification_type.py +1 -0
  23. lightning_sdk/lightning_cloud/openapi/models/v1_organization.py +105 -1
  24. lightning_sdk/lightning_cloud/openapi/models/v1_project_storage.py +131 -1
  25. lightning_sdk/lightning_cloud/openapi/models/v1_storage_asset.py +27 -1
  26. lightning_sdk/lightning_cloud/openapi/models/v1_storage_asset_type.py +2 -0
  27. lightning_sdk/lightning_cloud/openapi/models/v1_transaction.py +27 -1
  28. lightning_sdk/lightning_cloud/openapi/models/v1_usage.py +27 -27
  29. lightning_sdk/lightning_cloud/openapi/models/v1_user_features.py +53 -79
  30. lightning_sdk/lightning_cloud/openapi/models/v1_volume.py +499 -31
  31. lightning_sdk/lightning_cloud/rest_client.py +13 -11
  32. lightning_sdk/lightning_cloud/source_code/logs_socket_api.py +8 -3
  33. lightning_sdk/services/license.py +78 -22
  34. {lightning_sdk-0.2.19.dist-info → lightning_sdk-0.2.20.dist-info}/METADATA +1 -1
  35. {lightning_sdk-0.2.19.dist-info → lightning_sdk-0.2.20.dist-info}/RECORD +39 -39
  36. lightning_sdk/lightning_cloud/openapi/models/v1_ebs.py +0 -279
  37. lightning_sdk/lightning_cloud/openapi/models/v1_reservation_billing_session.py +0 -279
  38. {lightning_sdk-0.2.19.dist-info → lightning_sdk-0.2.20.dist-info}/LICENSE +0 -0
  39. {lightning_sdk-0.2.19.dist-info → lightning_sdk-0.2.20.dist-info}/WHEEL +0 -0
  40. {lightning_sdk-0.2.19.dist-info → lightning_sdk-0.2.20.dist-info}/entry_points.txt +0 -0
  41. {lightning_sdk-0.2.19.dist-info → lightning_sdk-0.2.20.dist-info}/top_level.txt +0 -0
lightning_sdk/__init__.py CHANGED
@@ -31,6 +31,6 @@ __all__ = [
31
31
  "User",
32
32
  ]
33
33
 
34
- __version__ = "0.2.19"
34
+ __version__ = "0.2.20"
35
35
  _check_version_and_prompt_upgrade(__version__)
36
36
  _set_tqdm_envvars_noninteractive()
@@ -1,11 +1,35 @@
1
+ import os
1
2
  from typing import Optional
3
+ from urllib.parse import urlencode
2
4
 
5
+ from lightning_sdk.lightning_cloud import env
3
6
  from lightning_sdk.lightning_cloud.rest_client import LightningClient
4
7
 
8
+ LICENSE_CODE = os.environ.get("LICENSE_CODE", "we843fiji89")
9
+ # https://lightning.ai/home?settings=licenses
10
+ LICENSE_SIGNING_URL = f"{env.LIGHTNING_CLOUD_URL}/ai-hub?settings=licenses"
11
+
12
+
13
+ def generate_url_user_settings(redirect_to: str = LICENSE_SIGNING_URL) -> str:
14
+ params = urlencode({"redirectTo": redirect_to, "mode": "licenses", "okbhrt": LICENSE_CODE})
15
+ return f"{env.LIGHTNING_CLOUD_URL}/sign-in?{params}"
16
+
5
17
 
6
18
  class LicenseApi:
7
- def __init__(self) -> None:
8
- self._client = LightningClient(retry=False, max_tries=0)
19
+ _client_authenticated: LightningClient = None
20
+ _client_public: LightningClient = None
21
+
22
+ @property
23
+ def client_public(self) -> LightningClient:
24
+ if not self._client_public:
25
+ self._client_public = LightningClient(retry=False, max_tries=0, with_auth=False)
26
+ return self._client_public
27
+
28
+ @property
29
+ def client_authenticated(self) -> LightningClient:
30
+ if not self._client_authenticated:
31
+ self._client_authenticated = LightningClient(retry=True, max_tries=3, with_auth=True)
32
+ return self._client_authenticated
9
33
 
10
34
  def valid_license(
11
35
  self,
@@ -25,14 +49,12 @@ class LicenseApi:
25
49
  Returns:
26
50
  True if the license key is valid, False otherwise.
27
51
  """
28
- response, code, _ = self._client.product_license_service_validate_product_license_with_http_info(
52
+ response = self.client_public.product_license_service_validate_product_license(
29
53
  license_key=license_key,
30
54
  product_name=product_name,
31
55
  product_version=product_version,
32
56
  product_type=product_type,
33
57
  )
34
- if code != 200:
35
- raise ConnectionError(f"Failed to validate license key: {code} - {response}")
36
58
  return response.valid
37
59
 
38
60
  def list_user_licenses(self, user_id: str) -> list:
@@ -44,5 +66,5 @@ class LicenseApi:
44
66
  Returns:
45
67
  A list of licenses for the user.
46
68
  """
47
- response = self._client.product_license_service_list_user_licenses(user_id=user_id)
69
+ response = self.client_authenticated.product_license_service_list_user_licenses(user_id=user_id)
48
70
  return response.licenses
@@ -2,8 +2,7 @@ import os
2
2
  import time
3
3
  from datetime import datetime
4
4
  from enum import Enum
5
- from typing import Any, List, Optional, TypedDict
6
- from urllib.parse import urlencode
5
+ from typing import List, Optional, TypedDict
7
6
 
8
7
  from rich.console import Console
9
8
  from rich.prompt import Confirm
@@ -11,7 +10,6 @@ from rich.prompt import Confirm
11
10
  from lightning_sdk import Teamspace
12
11
  from lightning_sdk.api import UserApi
13
12
  from lightning_sdk.cli.teamspace_menu import _TeamspacesMenu
14
- from lightning_sdk.lightning_cloud import env
15
13
  from lightning_sdk.lightning_cloud.login import Auth, AuthServer
16
14
  from lightning_sdk.lightning_cloud.openapi import V1CloudSpace
17
15
  from lightning_sdk.lightning_cloud.rest_client import LightningClient
@@ -26,18 +24,7 @@ class _AuthMode(Enum):
26
24
  DEPLOY = "deploy"
27
25
 
28
26
 
29
- class _AuthServer(AuthServer):
30
- def __init__(self, mode: _AuthMode, *args: Any, **kwargs: Any) -> None:
31
- self._mode = mode
32
- super().__init__(*args, **kwargs)
33
-
34
- def get_auth_url(self, port: int) -> str:
35
- redirect_uri = f"http://localhost:{port}/login-complete"
36
- params = urlencode({"redirectTo": redirect_uri, "mode": self._mode.value, "okbhrt": LITSERVE_CODE})
37
- return f"{env.LIGHTNING_CLOUD_URL}/sign-in?{params}"
38
-
39
-
40
- class _Auth(Auth):
27
+ class _AuthLitServe(Auth):
41
28
  def __init__(self, mode: _AuthMode, shall_confirm: bool = False) -> None:
42
29
  super().__init__()
43
30
  self._mode = mode
@@ -51,15 +38,20 @@ class _Auth(Auth):
51
38
  if not proceed:
52
39
  raise RuntimeError(
53
40
  "Login cancelled. Please login to Lightning AI to deploy the API. Run `lightning login` to login."
54
- ) from None
41
+ )
55
42
  print("Opening browser for authentication...")
56
43
  print("Please come back to the terminal after logging in.")
57
44
  time.sleep(3)
58
- _AuthServer(self._mode).login_with_browser(self)
45
+ AuthServer({"mode": self._mode, "okbhrt": LITSERVE_CODE}).login_with_browser(self)
59
46
 
60
47
 
61
48
  def authenticate(mode: _AuthMode, shall_confirm: bool = True) -> None:
62
- auth = _Auth(mode, shall_confirm)
49
+ """Authenticate with Lightning AI.
50
+
51
+ This will open a browser window for authentication.
52
+ If `shall_confirm` is True, it will ask for confirmation before proceeding.
53
+ """
54
+ auth = _AuthLitServe(mode, shall_confirm)
63
55
  auth.authenticate()
64
56
 
65
57
 
@@ -87,7 +79,7 @@ def poll_verified_status(timeout: int = _POLL_TIMEOUT) -> _UserStatus:
87
79
  user_api = UserApi()
88
80
  user = _get_authed_user()
89
81
  start_time = datetime.now()
90
- result = {"onboarded": False, "verified": False}
82
+ result = _UserStatus(onboarded=False, verified=False)
91
83
  while True:
92
84
  user_resp = user_api.get_user(name=user.name)
93
85
  result["onboarded"] = user_resp.status.completed_project_onboarding
@@ -1,10 +1,12 @@
1
1
  import sys
2
+ import traceback
2
3
  from types import TracebackType
3
4
  from typing import Type
4
5
 
5
6
  import click
6
7
  from rich.console import Console
7
8
  from rich.panel import Panel
9
+ from rich.text import Text
8
10
 
9
11
  from lightning_sdk import __version__
10
12
  from lightning_sdk.api.studio_api import _cloud_url
@@ -26,13 +28,29 @@ from lightning_sdk.cli.start import start
26
28
  from lightning_sdk.cli.stop import stop
27
29
  from lightning_sdk.cli.switch import switch
28
30
  from lightning_sdk.cli.upload import upload
31
+ from lightning_sdk.constants import _LIGHTNING_DEBUG
29
32
  from lightning_sdk.lightning_cloud.login import Auth
30
33
 
31
34
 
32
- def _notify_exception(exception_type: Type[BaseException], value: BaseException, tb: TracebackType) -> None: # No
35
+ def _notify_exception(exception_type: Type[BaseException], value: BaseException, tb: TracebackType) -> None:
33
36
  """CLI won't show tracebacks, just print the exception message."""
37
+ # if debug mode, print the traceback using rich
34
38
  console = Console()
35
- console.print(Panel(value))
39
+ if value.args:
40
+ message = str(value.args[0]) if value.args[0] else str(value)
41
+ else:
42
+ message = str(value) or "An unknown error occurred"
43
+
44
+ error_content = Text()
45
+ error_content.append(f"{exception_type.__name__}: ", style="bold red")
46
+ error_content.append(message, style="white")
47
+
48
+ if _LIGHTNING_DEBUG:
49
+ error_content.append("\n\nFull traceback:\n", style="bold yellow")
50
+ tb_lines = traceback.format_exception(exception_type, value, tb)
51
+ error_content.append("".join(tb_lines), style="dim white")
52
+
53
+ console.print(Panel(error_content, title="⚡ Lightning CLI Error", border_style="red"))
36
54
 
37
55
 
38
56
  @click.group(name="lightning", help="Command line interface (CLI) to interact with/manage Lightning AI Studios.")
@@ -43,8 +43,8 @@ class Auth:
43
43
  for key in Keys:
44
44
  setattr(self, key.suffix, os.environ.get(key.value, None))
45
45
 
46
- self._with_env_var = bool(
47
- self.user_id and self.api_key) # used by authenticate method
46
+ # used by authenticate method
47
+ self._with_env_var = bool(self.user_id and self.api_key)
48
48
  if self.api_key and not self.user_id:
49
49
  raise ValueError(
50
50
  f"{Keys.USER_ID.value} is missing from env variables. "
@@ -69,6 +69,7 @@ from lightning_sdk.lightning_cloud.openapi.configuration import Configuration
69
69
  from lightning_sdk.lightning_cloud.openapi.models.affiliatelinks_id_body import AffiliatelinksIdBody
70
70
  from lightning_sdk.lightning_cloud.openapi.models.agentmanagedendpoints_id_body import AgentmanagedendpointsIdBody
71
71
  from lightning_sdk.lightning_cloud.openapi.models.agents_id_body import AgentsIdBody
72
+ from lightning_sdk.lightning_cloud.openapi.models.alertingevents_id_body import AlertingeventsIdBody
72
73
  from lightning_sdk.lightning_cloud.openapi.models.alerts_config_billing import AlertsConfigBilling
73
74
  from lightning_sdk.lightning_cloud.openapi.models.alerts_config_studios import AlertsConfigStudios
74
75
  from lightning_sdk.lightning_cloud.openapi.models.app_id_works_body import AppIdWorksBody
@@ -256,6 +257,7 @@ from lightning_sdk.lightning_cloud.openapi.models.v1_assistant import V1Assistan
256
257
  from lightning_sdk.lightning_cloud.openapi.models.v1_assistant_knowledge_item_status import V1AssistantKnowledgeItemStatus
257
258
  from lightning_sdk.lightning_cloud.openapi.models.v1_assistant_knowledge_status import V1AssistantKnowledgeStatus
258
259
  from lightning_sdk.lightning_cloud.openapi.models.v1_assistant_model_status import V1AssistantModelStatus
260
+ from lightning_sdk.lightning_cloud.openapi.models.v1_author import V1Author
259
261
  from lightning_sdk.lightning_cloud.openapi.models.v1_auto_join_domain_validation import V1AutoJoinDomainValidation
260
262
  from lightning_sdk.lightning_cloud.openapi.models.v1_auto_join_org_response import V1AutoJoinOrgResponse
261
263
  from lightning_sdk.lightning_cloud.openapi.models.v1_autoscaling_spec import V1AutoscalingSpec
@@ -485,7 +487,6 @@ from lightning_sdk.lightning_cloud.openapi.models.v1_drive_status import V1Drive
485
487
  from lightning_sdk.lightning_cloud.openapi.models.v1_drive_type import V1DriveType
486
488
  from lightning_sdk.lightning_cloud.openapi.models.v1_drive_type_spec import V1DriveTypeSpec
487
489
  from lightning_sdk.lightning_cloud.openapi.models.v1_drive_type_status import V1DriveTypeStatus
488
- from lightning_sdk.lightning_cloud.openapi.models.v1_ebs import V1Ebs
489
490
  from lightning_sdk.lightning_cloud.openapi.models.v1_efs_config import V1EfsConfig
490
491
  from lightning_sdk.lightning_cloud.openapi.models.v1_endpoint import V1Endpoint
491
492
  from lightning_sdk.lightning_cloud.openapi.models.v1_endpoint_auth import V1EndpointAuth
@@ -831,7 +832,6 @@ from lightning_sdk.lightning_cloud.openapi.models.v1_report_restart_timings_resp
831
832
  from lightning_sdk.lightning_cloud.openapi.models.v1_request_cluster_access_request import V1RequestClusterAccessRequest
832
833
  from lightning_sdk.lightning_cloud.openapi.models.v1_request_cluster_access_response import V1RequestClusterAccessResponse
833
834
  from lightning_sdk.lightning_cloud.openapi.models.v1_request_verification_code_response import V1RequestVerificationCodeResponse
834
- from lightning_sdk.lightning_cloud.openapi.models.v1_reservation_billing_session import V1ReservationBillingSession
835
835
  from lightning_sdk.lightning_cloud.openapi.models.v1_reservation_details import V1ReservationDetails
836
836
  from lightning_sdk.lightning_cloud.openapi.models.v1_resource_tag import V1ResourceTag
837
837
  from lightning_sdk.lightning_cloud.openapi.models.v1_resource_visibility import V1ResourceVisibility
@@ -4639,6 +4639,127 @@ class JobsServiceApi(object):
4639
4639
  _request_timeout=params.get('_request_timeout'),
4640
4640
  collection_formats=collection_formats)
4641
4641
 
4642
+ def jobs_service_update_deployment_alerting_event(self, body: 'AlertingeventsIdBody', project_id: 'str', deployment_id: 'str', id: 'str', **kwargs) -> 'V1DeploymentAlertingEvent': # noqa: E501
4643
+ """UpdateDeploymentAlertingEvent lists the deployment alert events # noqa: E501
4644
+
4645
+ This method makes a synchronous HTTP request by default. To make an
4646
+ asynchronous HTTP request, please pass async_req=True
4647
+ >>> thread = api.jobs_service_update_deployment_alerting_event(body, project_id, deployment_id, id, async_req=True)
4648
+ >>> result = thread.get()
4649
+
4650
+ :param async_req bool
4651
+ :param AlertingeventsIdBody body: (required)
4652
+ :param str project_id: (required)
4653
+ :param str deployment_id: (required)
4654
+ :param str id: (required)
4655
+ :return: V1DeploymentAlertingEvent
4656
+ If the method is called asynchronously,
4657
+ returns the request thread.
4658
+ """
4659
+ kwargs['_return_http_data_only'] = True
4660
+ if kwargs.get('async_req'):
4661
+ return self.jobs_service_update_deployment_alerting_event_with_http_info(body, project_id, deployment_id, id, **kwargs) # noqa: E501
4662
+ else:
4663
+ (data) = self.jobs_service_update_deployment_alerting_event_with_http_info(body, project_id, deployment_id, id, **kwargs) # noqa: E501
4664
+ return data
4665
+
4666
+ def jobs_service_update_deployment_alerting_event_with_http_info(self, body: 'AlertingeventsIdBody', project_id: 'str', deployment_id: 'str', id: 'str', **kwargs) -> 'V1DeploymentAlertingEvent': # noqa: E501
4667
+ """UpdateDeploymentAlertingEvent lists the deployment alert events # noqa: E501
4668
+
4669
+ This method makes a synchronous HTTP request by default. To make an
4670
+ asynchronous HTTP request, please pass async_req=True
4671
+ >>> thread = api.jobs_service_update_deployment_alerting_event_with_http_info(body, project_id, deployment_id, id, async_req=True)
4672
+ >>> result = thread.get()
4673
+
4674
+ :param async_req bool
4675
+ :param AlertingeventsIdBody body: (required)
4676
+ :param str project_id: (required)
4677
+ :param str deployment_id: (required)
4678
+ :param str id: (required)
4679
+ :return: V1DeploymentAlertingEvent
4680
+ If the method is called asynchronously,
4681
+ returns the request thread.
4682
+ """
4683
+
4684
+ all_params = ['body', 'project_id', 'deployment_id', 'id'] # noqa: E501
4685
+ all_params.append('async_req')
4686
+ all_params.append('_return_http_data_only')
4687
+ all_params.append('_preload_content')
4688
+ all_params.append('_request_timeout')
4689
+
4690
+ params = locals()
4691
+ for key, val in six.iteritems(params['kwargs']):
4692
+ if key not in all_params:
4693
+ raise TypeError(
4694
+ "Got an unexpected keyword argument '%s'"
4695
+ " to method jobs_service_update_deployment_alerting_event" % key
4696
+ )
4697
+ params[key] = val
4698
+ del params['kwargs']
4699
+ # verify the required parameter 'body' is set
4700
+ if ('body' not in params or
4701
+ params['body'] is None):
4702
+ raise ValueError("Missing the required parameter `body` when calling `jobs_service_update_deployment_alerting_event`") # noqa: E501
4703
+ # verify the required parameter 'project_id' is set
4704
+ if ('project_id' not in params or
4705
+ params['project_id'] is None):
4706
+ raise ValueError("Missing the required parameter `project_id` when calling `jobs_service_update_deployment_alerting_event`") # noqa: E501
4707
+ # verify the required parameter 'deployment_id' is set
4708
+ if ('deployment_id' not in params or
4709
+ params['deployment_id'] is None):
4710
+ raise ValueError("Missing the required parameter `deployment_id` when calling `jobs_service_update_deployment_alerting_event`") # noqa: E501
4711
+ # verify the required parameter 'id' is set
4712
+ if ('id' not in params or
4713
+ params['id'] is None):
4714
+ raise ValueError("Missing the required parameter `id` when calling `jobs_service_update_deployment_alerting_event`") # noqa: E501
4715
+
4716
+ collection_formats = {}
4717
+
4718
+ path_params = {}
4719
+ if 'project_id' in params:
4720
+ path_params['projectId'] = params['project_id'] # noqa: E501
4721
+ if 'deployment_id' in params:
4722
+ path_params['deploymentId'] = params['deployment_id'] # noqa: E501
4723
+ if 'id' in params:
4724
+ path_params['id'] = params['id'] # noqa: E501
4725
+
4726
+ query_params = []
4727
+
4728
+ header_params = {}
4729
+
4730
+ form_params = []
4731
+ local_var_files = {}
4732
+
4733
+ body_params = None
4734
+ if 'body' in params:
4735
+ body_params = params['body']
4736
+ # HTTP header `Accept`
4737
+ header_params['Accept'] = self.api_client.select_header_accept(
4738
+ ['application/json']) # noqa: E501
4739
+
4740
+ # HTTP header `Content-Type`
4741
+ header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501
4742
+ ['application/json']) # noqa: E501
4743
+
4744
+ # Authentication setting
4745
+ auth_settings = [] # noqa: E501
4746
+
4747
+ return self.api_client.call_api(
4748
+ '/v1/projects/{projectId}/deployments/{deploymentId}/alerting-events/{id}', 'PUT',
4749
+ path_params,
4750
+ query_params,
4751
+ header_params,
4752
+ body=body_params,
4753
+ post_params=form_params,
4754
+ files=local_var_files,
4755
+ response_type='V1DeploymentAlertingEvent', # noqa: E501
4756
+ auth_settings=auth_settings,
4757
+ async_req=params.get('async_req'),
4758
+ _return_http_data_only=params.get('_return_http_data_only'),
4759
+ _preload_content=params.get('_preload_content', True),
4760
+ _request_timeout=params.get('_request_timeout'),
4761
+ collection_formats=collection_formats)
4762
+
4642
4763
  def jobs_service_update_deployment_alerting_policy(self, body: 'DeploymentIdAlertingpoliciesBody', project_id: 'str', deployment_id: 'str', **kwargs) -> 'V1DeploymentAlertingPolicy': # noqa: E501
4643
4764
  """jobs_service_update_deployment_alerting_policy # noqa: E501
4644
4765
 
@@ -24,6 +24,7 @@ from __future__ import absolute_import
24
24
  from lightning_sdk.lightning_cloud.openapi.models.affiliatelinks_id_body import AffiliatelinksIdBody
25
25
  from lightning_sdk.lightning_cloud.openapi.models.agentmanagedendpoints_id_body import AgentmanagedendpointsIdBody
26
26
  from lightning_sdk.lightning_cloud.openapi.models.agents_id_body import AgentsIdBody
27
+ from lightning_sdk.lightning_cloud.openapi.models.alertingevents_id_body import AlertingeventsIdBody
27
28
  from lightning_sdk.lightning_cloud.openapi.models.alerts_config_billing import AlertsConfigBilling
28
29
  from lightning_sdk.lightning_cloud.openapi.models.alerts_config_studios import AlertsConfigStudios
29
30
  from lightning_sdk.lightning_cloud.openapi.models.app_id_works_body import AppIdWorksBody
@@ -211,6 +212,7 @@ from lightning_sdk.lightning_cloud.openapi.models.v1_assistant import V1Assistan
211
212
  from lightning_sdk.lightning_cloud.openapi.models.v1_assistant_knowledge_item_status import V1AssistantKnowledgeItemStatus
212
213
  from lightning_sdk.lightning_cloud.openapi.models.v1_assistant_knowledge_status import V1AssistantKnowledgeStatus
213
214
  from lightning_sdk.lightning_cloud.openapi.models.v1_assistant_model_status import V1AssistantModelStatus
215
+ from lightning_sdk.lightning_cloud.openapi.models.v1_author import V1Author
214
216
  from lightning_sdk.lightning_cloud.openapi.models.v1_auto_join_domain_validation import V1AutoJoinDomainValidation
215
217
  from lightning_sdk.lightning_cloud.openapi.models.v1_auto_join_org_response import V1AutoJoinOrgResponse
216
218
  from lightning_sdk.lightning_cloud.openapi.models.v1_autoscaling_spec import V1AutoscalingSpec
@@ -440,7 +442,6 @@ from lightning_sdk.lightning_cloud.openapi.models.v1_drive_status import V1Drive
440
442
  from lightning_sdk.lightning_cloud.openapi.models.v1_drive_type import V1DriveType
441
443
  from lightning_sdk.lightning_cloud.openapi.models.v1_drive_type_spec import V1DriveTypeSpec
442
444
  from lightning_sdk.lightning_cloud.openapi.models.v1_drive_type_status import V1DriveTypeStatus
443
- from lightning_sdk.lightning_cloud.openapi.models.v1_ebs import V1Ebs
444
445
  from lightning_sdk.lightning_cloud.openapi.models.v1_efs_config import V1EfsConfig
445
446
  from lightning_sdk.lightning_cloud.openapi.models.v1_endpoint import V1Endpoint
446
447
  from lightning_sdk.lightning_cloud.openapi.models.v1_endpoint_auth import V1EndpointAuth
@@ -786,7 +787,6 @@ from lightning_sdk.lightning_cloud.openapi.models.v1_report_restart_timings_resp
786
787
  from lightning_sdk.lightning_cloud.openapi.models.v1_request_cluster_access_request import V1RequestClusterAccessRequest
787
788
  from lightning_sdk.lightning_cloud.openapi.models.v1_request_cluster_access_response import V1RequestClusterAccessResponse
788
789
  from lightning_sdk.lightning_cloud.openapi.models.v1_request_verification_code_response import V1RequestVerificationCodeResponse
789
- from lightning_sdk.lightning_cloud.openapi.models.v1_reservation_billing_session import V1ReservationBillingSession
790
790
  from lightning_sdk.lightning_cloud.openapi.models.v1_reservation_details import V1ReservationDetails
791
791
  from lightning_sdk.lightning_cloud.openapi.models.v1_resource_tag import V1ResourceTag
792
792
  from lightning_sdk.lightning_cloud.openapi.models.v1_resource_visibility import V1ResourceVisibility