lightning-sdk 2025.10.8__py3-none-any.whl → 2025.10.22__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 (96) hide show
  1. lightning_sdk/__init__.py +6 -3
  2. lightning_sdk/api/base_studio_api.py +13 -9
  3. lightning_sdk/api/cloud_account_api.py +0 -2
  4. lightning_sdk/api/license_api.py +26 -59
  5. lightning_sdk/api/studio_api.py +15 -2
  6. lightning_sdk/base_studio.py +30 -17
  7. lightning_sdk/cli/base_studio/list.py +1 -3
  8. lightning_sdk/cli/entrypoint.py +8 -34
  9. lightning_sdk/cli/studio/connect.py +42 -92
  10. lightning_sdk/cli/studio/create.py +23 -1
  11. lightning_sdk/cli/studio/start.py +12 -2
  12. lightning_sdk/cli/utils/get_base_studio.py +24 -0
  13. lightning_sdk/cli/utils/handle_machine_and_gpus_args.py +71 -0
  14. lightning_sdk/cli/utils/logging.py +121 -0
  15. lightning_sdk/cli/utils/ssh_connection.py +1 -1
  16. lightning_sdk/constants.py +1 -0
  17. lightning_sdk/helpers.py +53 -34
  18. lightning_sdk/job/job.py +5 -0
  19. lightning_sdk/job/v1.py +8 -0
  20. lightning_sdk/job/v2.py +8 -0
  21. lightning_sdk/lightning_cloud/login.py +260 -10
  22. lightning_sdk/lightning_cloud/openapi/__init__.py +30 -3
  23. lightning_sdk/lightning_cloud/openapi/api/__init__.py +1 -0
  24. lightning_sdk/lightning_cloud/openapi/api/assistants_service_api.py +19 -19
  25. lightning_sdk/lightning_cloud/openapi/api/auth_service_api.py +97 -0
  26. lightning_sdk/lightning_cloud/openapi/api/cloud_space_service_api.py +105 -0
  27. lightning_sdk/lightning_cloud/openapi/api/k8_s_cluster_service_api.py +1463 -240
  28. lightning_sdk/lightning_cloud/openapi/api/product_license_service_api.py +108 -108
  29. lightning_sdk/lightning_cloud/openapi/api/sdk_command_history_service_api.py +141 -0
  30. lightning_sdk/lightning_cloud/openapi/models/__init__.py +29 -3
  31. lightning_sdk/lightning_cloud/openapi/models/cloudspace_id_visibility_body.py +27 -1
  32. lightning_sdk/lightning_cloud/openapi/models/cluster_id_metrics_body.py +53 -1
  33. lightning_sdk/lightning_cloud/openapi/models/create_machine_request_represents_the_request_to_create_a_machine.py +27 -1
  34. lightning_sdk/lightning_cloud/openapi/models/deployments_id_body.py +27 -1
  35. lightning_sdk/lightning_cloud/openapi/models/externalv1_cloud_space_instance_status.py +79 -1
  36. lightning_sdk/lightning_cloud/openapi/models/id_fork_body1.py +27 -1
  37. lightning_sdk/lightning_cloud/openapi/models/id_transfer_body.py +53 -1
  38. lightning_sdk/lightning_cloud/openapi/models/incident_id_messages_body.py +149 -0
  39. lightning_sdk/lightning_cloud/openapi/models/incidents_id_body.py +279 -0
  40. lightning_sdk/lightning_cloud/openapi/models/license_key_validate_body.py +123 -0
  41. lightning_sdk/lightning_cloud/openapi/models/messages_message_id_body.py +149 -0
  42. lightning_sdk/lightning_cloud/openapi/models/project_id_incidents_body.py +279 -0
  43. lightning_sdk/lightning_cloud/openapi/models/projects_id_body.py +27 -1
  44. lightning_sdk/lightning_cloud/openapi/models/storage_complete_body.py +15 -15
  45. lightning_sdk/lightning_cloud/openapi/models/v1_cloud_space_transfer_metadata.py +53 -1
  46. lightning_sdk/lightning_cloud/openapi/models/v1_create_license_request.py +175 -0
  47. lightning_sdk/lightning_cloud/openapi/models/v1_create_project_request.py +27 -1
  48. lightning_sdk/lightning_cloud/openapi/models/v1_create_sdk_command_history_request.py +253 -0
  49. lightning_sdk/lightning_cloud/openapi/models/v1_create_sdk_command_history_response.py +97 -0
  50. lightning_sdk/lightning_cloud/openapi/models/v1_delete_incident_message_response.py +97 -0
  51. lightning_sdk/lightning_cloud/openapi/models/v1_delete_incident_response.py +97 -0
  52. lightning_sdk/lightning_cloud/openapi/models/v1_delete_license_response.py +97 -0
  53. lightning_sdk/lightning_cloud/openapi/models/v1_deployment.py +27 -1
  54. lightning_sdk/lightning_cloud/openapi/models/v1_external_cluster_spec.py +27 -1
  55. lightning_sdk/lightning_cloud/openapi/models/v1_get_cloud_space_transfer_estimate_response.py +149 -0
  56. lightning_sdk/lightning_cloud/openapi/models/v1_group_pod_metrics.py +1241 -0
  57. lightning_sdk/lightning_cloud/openapi/models/v1_incident.py +565 -0
  58. lightning_sdk/lightning_cloud/openapi/models/v1_incident_detail.py +149 -0
  59. lightning_sdk/lightning_cloud/openapi/models/v1_incident_event.py +27 -1
  60. lightning_sdk/lightning_cloud/openapi/models/v1_incident_message.py +253 -0
  61. lightning_sdk/lightning_cloud/openapi/models/v1_incident_type.py +1 -0
  62. lightning_sdk/lightning_cloud/openapi/models/v1_job.py +53 -1
  63. lightning_sdk/lightning_cloud/openapi/models/v1_job_spec.py +27 -1
  64. lightning_sdk/lightning_cloud/openapi/models/v1_kai_scheduler_queue_metrics.py +627 -0
  65. lightning_sdk/lightning_cloud/openapi/models/v1_license.py +227 -0
  66. lightning_sdk/lightning_cloud/openapi/models/v1_list_group_pod_metrics_response.py +123 -0
  67. lightning_sdk/lightning_cloud/openapi/models/v1_list_incident_messages_response.py +149 -0
  68. lightning_sdk/lightning_cloud/openapi/models/v1_list_incidents_response.py +149 -0
  69. lightning_sdk/lightning_cloud/openapi/models/v1_list_kai_scheduler_queues_metrics_response.py +123 -0
  70. lightning_sdk/lightning_cloud/openapi/models/{v1_list_product_licenses_response.py → v1_list_license_response.py} +16 -16
  71. lightning_sdk/lightning_cloud/openapi/models/v1_machine.py +79 -1
  72. lightning_sdk/lightning_cloud/openapi/models/v1_membership.py +27 -1
  73. lightning_sdk/lightning_cloud/openapi/models/v1_project_membership.py +27 -1
  74. lightning_sdk/lightning_cloud/openapi/models/v1_project_settings.py +27 -1
  75. lightning_sdk/lightning_cloud/openapi/models/v1_resource_visibility.py +1 -27
  76. lightning_sdk/lightning_cloud/openapi/models/v1_sdk_command_history_severity.py +104 -0
  77. lightning_sdk/lightning_cloud/openapi/models/v1_sdk_command_history_type.py +104 -0
  78. lightning_sdk/lightning_cloud/openapi/models/v1_server_alert_type.py +1 -0
  79. lightning_sdk/lightning_cloud/openapi/models/v1_slack_notifier.py +53 -1
  80. lightning_sdk/lightning_cloud/openapi/models/v1_token_login_request.py +123 -0
  81. lightning_sdk/lightning_cloud/openapi/models/v1_token_login_response.py +123 -0
  82. lightning_sdk/lightning_cloud/openapi/models/v1_token_owner_type.py +104 -0
  83. lightning_sdk/lightning_cloud/openapi/models/v1_user_features.py +209 -131
  84. lightning_sdk/lightning_cloud/openapi/models/{v1_product_license_check_response.py → v1_validate_license_response.py} +21 -21
  85. lightning_sdk/lightning_cloud/rest_client.py +48 -45
  86. lightning_sdk/machine.py +2 -1
  87. lightning_sdk/studio.py +22 -2
  88. lightning_sdk/utils/license.py +13 -0
  89. {lightning_sdk-2025.10.8.dist-info → lightning_sdk-2025.10.22.dist-info}/METADATA +1 -1
  90. {lightning_sdk-2025.10.8.dist-info → lightning_sdk-2025.10.22.dist-info}/RECORD +94 -64
  91. lightning_sdk/lightning_cloud/openapi/models/v1_product_license.py +0 -435
  92. lightning_sdk/services/license.py +0 -363
  93. {lightning_sdk-2025.10.8.dist-info → lightning_sdk-2025.10.22.dist-info}/LICENSE +0 -0
  94. {lightning_sdk-2025.10.8.dist-info → lightning_sdk-2025.10.22.dist-info}/WHEEL +0 -0
  95. {lightning_sdk-2025.10.8.dist-info → lightning_sdk-2025.10.22.dist-info}/entry_points.txt +0 -0
  96. {lightning_sdk-2025.10.8.dist-info → lightning_sdk-2025.10.22.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,97 @@
1
+ # coding: utf-8
2
+
3
+ """
4
+ external/v1/auth_service.proto
5
+
6
+ No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen) # noqa: E501
7
+
8
+ OpenAPI spec version: version not set
9
+
10
+ Generated by: https://github.com/swagger-api/swagger-codegen.git
11
+
12
+ NOTE
13
+ ----
14
+ standard swagger-codegen-cli for this python client has been modified
15
+ by custom templates. The purpose of these templates is to include
16
+ typing information in the API and Model code. Please refer to the
17
+ main grid repository for more info
18
+ """
19
+
20
+ import pprint
21
+ import re # noqa: F401
22
+
23
+ from typing import TYPE_CHECKING
24
+
25
+ import six
26
+
27
+ if TYPE_CHECKING:
28
+ from datetime import datetime
29
+ from lightning_sdk.lightning_cloud.openapi.models import *
30
+
31
+ class V1DeleteIncidentResponse(object):
32
+ """NOTE: This class is auto generated by the swagger code generator program.
33
+
34
+ Do not edit the class manually.
35
+ """
36
+ """
37
+ Attributes:
38
+ swagger_types (dict): The key is attribute name
39
+ and the value is attribute type.
40
+ attribute_map (dict): The key is attribute name
41
+ and the value is json key in definition.
42
+ """
43
+ swagger_types = {
44
+ }
45
+
46
+ attribute_map = {
47
+ }
48
+
49
+ def __init__(self): # noqa: E501
50
+ """V1DeleteIncidentResponse - a model defined in Swagger""" # noqa: E501
51
+ self.discriminator = None
52
+
53
+ def to_dict(self) -> dict:
54
+ """Returns the model properties as a dict"""
55
+ result = {}
56
+
57
+ for attr, _ in six.iteritems(self.swagger_types):
58
+ value = getattr(self, attr)
59
+ if isinstance(value, list):
60
+ result[attr] = list(map(
61
+ lambda x: x.to_dict() if hasattr(x, "to_dict") else x,
62
+ value
63
+ ))
64
+ elif hasattr(value, "to_dict"):
65
+ result[attr] = value.to_dict()
66
+ elif isinstance(value, dict):
67
+ result[attr] = dict(map(
68
+ lambda item: (item[0], item[1].to_dict())
69
+ if hasattr(item[1], "to_dict") else item,
70
+ value.items()
71
+ ))
72
+ else:
73
+ result[attr] = value
74
+ if issubclass(V1DeleteIncidentResponse, dict):
75
+ for key, value in self.items():
76
+ result[key] = value
77
+
78
+ return result
79
+
80
+ def to_str(self) -> str:
81
+ """Returns the string representation of the model"""
82
+ return pprint.pformat(self.to_dict())
83
+
84
+ def __repr__(self) -> str:
85
+ """For `print` and `pprint`"""
86
+ return self.to_str()
87
+
88
+ def __eq__(self, other: 'V1DeleteIncidentResponse') -> bool:
89
+ """Returns true if both objects are equal"""
90
+ if not isinstance(other, V1DeleteIncidentResponse):
91
+ return False
92
+
93
+ return self.__dict__ == other.__dict__
94
+
95
+ def __ne__(self, other: 'V1DeleteIncidentResponse') -> bool:
96
+ """Returns true if both objects are not equal"""
97
+ return not self == other
@@ -0,0 +1,97 @@
1
+ # coding: utf-8
2
+
3
+ """
4
+ external/v1/auth_service.proto
5
+
6
+ No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen) # noqa: E501
7
+
8
+ OpenAPI spec version: version not set
9
+
10
+ Generated by: https://github.com/swagger-api/swagger-codegen.git
11
+
12
+ NOTE
13
+ ----
14
+ standard swagger-codegen-cli for this python client has been modified
15
+ by custom templates. The purpose of these templates is to include
16
+ typing information in the API and Model code. Please refer to the
17
+ main grid repository for more info
18
+ """
19
+
20
+ import pprint
21
+ import re # noqa: F401
22
+
23
+ from typing import TYPE_CHECKING
24
+
25
+ import six
26
+
27
+ if TYPE_CHECKING:
28
+ from datetime import datetime
29
+ from lightning_sdk.lightning_cloud.openapi.models import *
30
+
31
+ class V1DeleteLicenseResponse(object):
32
+ """NOTE: This class is auto generated by the swagger code generator program.
33
+
34
+ Do not edit the class manually.
35
+ """
36
+ """
37
+ Attributes:
38
+ swagger_types (dict): The key is attribute name
39
+ and the value is attribute type.
40
+ attribute_map (dict): The key is attribute name
41
+ and the value is json key in definition.
42
+ """
43
+ swagger_types = {
44
+ }
45
+
46
+ attribute_map = {
47
+ }
48
+
49
+ def __init__(self): # noqa: E501
50
+ """V1DeleteLicenseResponse - a model defined in Swagger""" # noqa: E501
51
+ self.discriminator = None
52
+
53
+ def to_dict(self) -> dict:
54
+ """Returns the model properties as a dict"""
55
+ result = {}
56
+
57
+ for attr, _ in six.iteritems(self.swagger_types):
58
+ value = getattr(self, attr)
59
+ if isinstance(value, list):
60
+ result[attr] = list(map(
61
+ lambda x: x.to_dict() if hasattr(x, "to_dict") else x,
62
+ value
63
+ ))
64
+ elif hasattr(value, "to_dict"):
65
+ result[attr] = value.to_dict()
66
+ elif isinstance(value, dict):
67
+ result[attr] = dict(map(
68
+ lambda item: (item[0], item[1].to_dict())
69
+ if hasattr(item[1], "to_dict") else item,
70
+ value.items()
71
+ ))
72
+ else:
73
+ result[attr] = value
74
+ if issubclass(V1DeleteLicenseResponse, dict):
75
+ for key, value in self.items():
76
+ result[key] = value
77
+
78
+ return result
79
+
80
+ def to_str(self) -> str:
81
+ """Returns the string representation of the model"""
82
+ return pprint.pformat(self.to_dict())
83
+
84
+ def __repr__(self) -> str:
85
+ """For `print` and `pprint`"""
86
+ return self.to_str()
87
+
88
+ def __eq__(self, other: 'V1DeleteLicenseResponse') -> bool:
89
+ """Returns true if both objects are equal"""
90
+ if not isinstance(other, V1DeleteLicenseResponse):
91
+ return False
92
+
93
+ return self.__dict__ == other.__dict__
94
+
95
+ def __ne__(self, other: 'V1DeleteLicenseResponse') -> bool:
96
+ """Returns true if both objects are not equal"""
97
+ return not self == other
@@ -64,6 +64,7 @@ class V1Deployment(object):
64
64
  'recipients': 'V1DeploymentAlertingRecipients',
65
65
  'release_id': 'str',
66
66
  'replicas': 'int',
67
+ 'reuse_servers': 'bool',
67
68
  'spec': 'V1JobSpec',
68
69
  'status': 'V1DeploymentStatus',
69
70
  'strategy': 'V1DeploymentStrategy',
@@ -98,6 +99,7 @@ class V1Deployment(object):
98
99
  'recipients': 'recipients',
99
100
  'release_id': 'releaseId',
100
101
  'replicas': 'replicas',
102
+ 'reuse_servers': 'reuseServers',
101
103
  'spec': 'spec',
102
104
  'status': 'status',
103
105
  'strategy': 'strategy',
@@ -108,7 +110,7 @@ class V1Deployment(object):
108
110
  'visibility': 'visibility'
109
111
  }
110
112
 
111
- def __init__(self, source: 'str' =None, api_standard: 'str' =None, apis: 'list[V1DeploymentAPI]' =None, assistant_id: 'str' =None, autoscaling: 'V1AutoscalingSpec' =None, cloudspace_id: 'str' =None, created_at: 'datetime' =None, current_state: 'V1DeploymentState' =None, debug: 'bool' =None, desired_state: 'V1DeploymentState' =None, endpoint: 'V1Endpoint' =None, id: 'str' =None, is_published: 'bool' =None, managed: 'bool' =None, managed_endpoint_id: 'str' =None, name: 'str' =None, oncall_notification: 'bool' =None, parameter_spec: 'V1ParameterizationSpec' =None, pipeline_id: 'str' =None, project_id: 'str' =None, recipients: 'V1DeploymentAlertingRecipients' =None, release_id: 'str' =None, replicas: 'int' =None, spec: 'V1JobSpec' =None, status: 'V1DeploymentStatus' =None, strategy: 'V1DeploymentStrategy' =None, template_id: 'str' =None, total_cost: 'float' =None, updated_at: 'datetime' =None, user_id: 'str' =None, visibility: 'V1ResourceVisibility' =None): # noqa: E501
113
+ def __init__(self, source: 'str' =None, api_standard: 'str' =None, apis: 'list[V1DeploymentAPI]' =None, assistant_id: 'str' =None, autoscaling: 'V1AutoscalingSpec' =None, cloudspace_id: 'str' =None, created_at: 'datetime' =None, current_state: 'V1DeploymentState' =None, debug: 'bool' =None, desired_state: 'V1DeploymentState' =None, endpoint: 'V1Endpoint' =None, id: 'str' =None, is_published: 'bool' =None, managed: 'bool' =None, managed_endpoint_id: 'str' =None, name: 'str' =None, oncall_notification: 'bool' =None, parameter_spec: 'V1ParameterizationSpec' =None, pipeline_id: 'str' =None, project_id: 'str' =None, recipients: 'V1DeploymentAlertingRecipients' =None, release_id: 'str' =None, replicas: 'int' =None, reuse_servers: 'bool' =None, spec: 'V1JobSpec' =None, status: 'V1DeploymentStatus' =None, strategy: 'V1DeploymentStrategy' =None, template_id: 'str' =None, total_cost: 'float' =None, updated_at: 'datetime' =None, user_id: 'str' =None, visibility: 'V1ResourceVisibility' =None): # noqa: E501
112
114
  """V1Deployment - a model defined in Swagger""" # noqa: E501
113
115
  self._source = None
114
116
  self._api_standard = None
@@ -133,6 +135,7 @@ class V1Deployment(object):
133
135
  self._recipients = None
134
136
  self._release_id = None
135
137
  self._replicas = None
138
+ self._reuse_servers = None
136
139
  self._spec = None
137
140
  self._status = None
138
141
  self._strategy = None
@@ -188,6 +191,8 @@ class V1Deployment(object):
188
191
  self.release_id = release_id
189
192
  if replicas is not None:
190
193
  self.replicas = replicas
194
+ if reuse_servers is not None:
195
+ self.reuse_servers = reuse_servers
191
196
  if spec is not None:
192
197
  self.spec = spec
193
198
  if status is not None:
@@ -688,6 +693,27 @@ class V1Deployment(object):
688
693
 
689
694
  self._replicas = replicas
690
695
 
696
+ @property
697
+ def reuse_servers(self) -> 'bool':
698
+ """Gets the reuse_servers of this V1Deployment. # noqa: E501
699
+
700
+
701
+ :return: The reuse_servers of this V1Deployment. # noqa: E501
702
+ :rtype: bool
703
+ """
704
+ return self._reuse_servers
705
+
706
+ @reuse_servers.setter
707
+ def reuse_servers(self, reuse_servers: 'bool'):
708
+ """Sets the reuse_servers of this V1Deployment.
709
+
710
+
711
+ :param reuse_servers: The reuse_servers of this V1Deployment. # noqa: E501
712
+ :type: bool
713
+ """
714
+
715
+ self._reuse_servers = reuse_servers
716
+
691
717
  @property
692
718
  def spec(self) -> 'V1JobSpec':
693
719
  """Gets the spec of this V1Deployment. # noqa: E501
@@ -55,6 +55,7 @@ class V1ExternalClusterSpec(object):
55
55
  'google_cloud_v1': 'V1GoogleCloudDirectV1',
56
56
  'kubernetes_v1': 'V1KubernetesDirectV1',
57
57
  'lambda_labs_v1': 'V1LambdaLabsDirectV1',
58
+ 'lightning_elastic_cluster_v1': 'V1LightningElasticClusterV1',
58
59
  'locked_zones': 'list[str]',
59
60
  'machine_v1': 'V1MachineDirectV1',
60
61
  'monitor_deletion_disabled': 'bool',
@@ -89,6 +90,7 @@ class V1ExternalClusterSpec(object):
89
90
  'google_cloud_v1': 'googleCloudV1',
90
91
  'kubernetes_v1': 'kubernetesV1',
91
92
  'lambda_labs_v1': 'lambdaLabsV1',
93
+ 'lightning_elastic_cluster_v1': 'lightningElasticClusterV1',
92
94
  'locked_zones': 'lockedZones',
93
95
  'machine_v1': 'machineV1',
94
96
  'monitor_deletion_disabled': 'monitorDeletionDisabled',
@@ -108,7 +110,7 @@ class V1ExternalClusterSpec(object):
108
110
  'vultr_v1': 'vultrV1'
109
111
  }
110
112
 
111
- def __init__(self, ai_pod_v1: 'V1AiPodV1' =None, auth_token: 'str' =None, available_accelerators: 'list[str]' =None, aws_v1: 'V1AWSDirectV1' =None, cloudflare_v1: 'V1CloudflareV1' =None, cluster_type: 'V1ClusterType' =None, compute_cluster_ids: 'list[str]' =None, deletion_options: 'V1ClusterDeletionOptions' =None, desired_state: 'V1ClusterState' =None, domain: 'str' =None, driver: 'V1CloudProvider' =None, google_cloud_v1: 'V1GoogleCloudDirectV1' =None, kubernetes_v1: 'V1KubernetesDirectV1' =None, lambda_labs_v1: 'V1LambdaLabsDirectV1' =None, locked_zones: 'list[str]' =None, machine_v1: 'V1MachineDirectV1' =None, monitor_deletion_disabled: 'bool' =None, nebius_v1: 'V1NebiusDirectV1' =None, overprovisioning: 'list[V1InstanceOverprovisioningSpec]' =None, parent_cluster_id: 'str' =None, parent_cluster_type: 'str' =None, pause_automation: 'bool' =None, reservation_details: 'V1ReservationDetails' =None, reserved_capacity_provider: 'bool' =None, reserved_instances_only: 'bool' =None, security_options: 'V1ClusterSecurityOptions' =None, slurm_v1: 'V1SlurmV1' =None, tagging_options: 'V1ClusterTaggingOptions' =None, user_id: 'str' =None, voltage_park_v1: 'V1VoltageParkDirectV1' =None, vultr_v1: 'V1VultrDirectV1' =None): # noqa: E501
113
+ def __init__(self, ai_pod_v1: 'V1AiPodV1' =None, auth_token: 'str' =None, available_accelerators: 'list[str]' =None, aws_v1: 'V1AWSDirectV1' =None, cloudflare_v1: 'V1CloudflareV1' =None, cluster_type: 'V1ClusterType' =None, compute_cluster_ids: 'list[str]' =None, deletion_options: 'V1ClusterDeletionOptions' =None, desired_state: 'V1ClusterState' =None, domain: 'str' =None, driver: 'V1CloudProvider' =None, google_cloud_v1: 'V1GoogleCloudDirectV1' =None, kubernetes_v1: 'V1KubernetesDirectV1' =None, lambda_labs_v1: 'V1LambdaLabsDirectV1' =None, lightning_elastic_cluster_v1: 'V1LightningElasticClusterV1' =None, locked_zones: 'list[str]' =None, machine_v1: 'V1MachineDirectV1' =None, monitor_deletion_disabled: 'bool' =None, nebius_v1: 'V1NebiusDirectV1' =None, overprovisioning: 'list[V1InstanceOverprovisioningSpec]' =None, parent_cluster_id: 'str' =None, parent_cluster_type: 'str' =None, pause_automation: 'bool' =None, reservation_details: 'V1ReservationDetails' =None, reserved_capacity_provider: 'bool' =None, reserved_instances_only: 'bool' =None, security_options: 'V1ClusterSecurityOptions' =None, slurm_v1: 'V1SlurmV1' =None, tagging_options: 'V1ClusterTaggingOptions' =None, user_id: 'str' =None, voltage_park_v1: 'V1VoltageParkDirectV1' =None, vultr_v1: 'V1VultrDirectV1' =None): # noqa: E501
112
114
  """V1ExternalClusterSpec - a model defined in Swagger""" # noqa: E501
113
115
  self._ai_pod_v1 = None
114
116
  self._auth_token = None
@@ -124,6 +126,7 @@ class V1ExternalClusterSpec(object):
124
126
  self._google_cloud_v1 = None
125
127
  self._kubernetes_v1 = None
126
128
  self._lambda_labs_v1 = None
129
+ self._lightning_elastic_cluster_v1 = None
127
130
  self._locked_zones = None
128
131
  self._machine_v1 = None
129
132
  self._monitor_deletion_disabled = None
@@ -170,6 +173,8 @@ class V1ExternalClusterSpec(object):
170
173
  self.kubernetes_v1 = kubernetes_v1
171
174
  if lambda_labs_v1 is not None:
172
175
  self.lambda_labs_v1 = lambda_labs_v1
176
+ if lightning_elastic_cluster_v1 is not None:
177
+ self.lightning_elastic_cluster_v1 = lightning_elastic_cluster_v1
173
178
  if locked_zones is not None:
174
179
  self.locked_zones = locked_zones
175
180
  if machine_v1 is not None:
@@ -501,6 +506,27 @@ class V1ExternalClusterSpec(object):
501
506
 
502
507
  self._lambda_labs_v1 = lambda_labs_v1
503
508
 
509
+ @property
510
+ def lightning_elastic_cluster_v1(self) -> 'V1LightningElasticClusterV1':
511
+ """Gets the lightning_elastic_cluster_v1 of this V1ExternalClusterSpec. # noqa: E501
512
+
513
+
514
+ :return: The lightning_elastic_cluster_v1 of this V1ExternalClusterSpec. # noqa: E501
515
+ :rtype: V1LightningElasticClusterV1
516
+ """
517
+ return self._lightning_elastic_cluster_v1
518
+
519
+ @lightning_elastic_cluster_v1.setter
520
+ def lightning_elastic_cluster_v1(self, lightning_elastic_cluster_v1: 'V1LightningElasticClusterV1'):
521
+ """Sets the lightning_elastic_cluster_v1 of this V1ExternalClusterSpec.
522
+
523
+
524
+ :param lightning_elastic_cluster_v1: The lightning_elastic_cluster_v1 of this V1ExternalClusterSpec. # noqa: E501
525
+ :type: V1LightningElasticClusterV1
526
+ """
527
+
528
+ self._lightning_elastic_cluster_v1 = lightning_elastic_cluster_v1
529
+
504
530
  @property
505
531
  def locked_zones(self) -> 'list[str]':
506
532
  """Gets the locked_zones of this V1ExternalClusterSpec. # noqa: E501
@@ -0,0 +1,149 @@
1
+ # coding: utf-8
2
+
3
+ """
4
+ external/v1/auth_service.proto
5
+
6
+ No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen) # noqa: E501
7
+
8
+ OpenAPI spec version: version not set
9
+
10
+ Generated by: https://github.com/swagger-api/swagger-codegen.git
11
+
12
+ NOTE
13
+ ----
14
+ standard swagger-codegen-cli for this python client has been modified
15
+ by custom templates. The purpose of these templates is to include
16
+ typing information in the API and Model code. Please refer to the
17
+ main grid repository for more info
18
+ """
19
+
20
+ import pprint
21
+ import re # noqa: F401
22
+
23
+ from typing import TYPE_CHECKING
24
+
25
+ import six
26
+
27
+ if TYPE_CHECKING:
28
+ from datetime import datetime
29
+ from lightning_sdk.lightning_cloud.openapi.models import *
30
+
31
+ class V1GetCloudSpaceTransferEstimateResponse(object):
32
+ """NOTE: This class is auto generated by the swagger code generator program.
33
+
34
+ Do not edit the class manually.
35
+ """
36
+ """
37
+ Attributes:
38
+ swagger_types (dict): The key is attribute name
39
+ and the value is attribute type.
40
+ attribute_map (dict): The key is attribute name
41
+ and the value is json key in definition.
42
+ """
43
+ swagger_types = {
44
+ 'estimated_duration_seconds': 'str',
45
+ 'requires_transfer': 'bool'
46
+ }
47
+
48
+ attribute_map = {
49
+ 'estimated_duration_seconds': 'estimatedDurationSeconds',
50
+ 'requires_transfer': 'requiresTransfer'
51
+ }
52
+
53
+ def __init__(self, estimated_duration_seconds: 'str' =None, requires_transfer: 'bool' =None): # noqa: E501
54
+ """V1GetCloudSpaceTransferEstimateResponse - a model defined in Swagger""" # noqa: E501
55
+ self._estimated_duration_seconds = None
56
+ self._requires_transfer = None
57
+ self.discriminator = None
58
+ if estimated_duration_seconds is not None:
59
+ self.estimated_duration_seconds = estimated_duration_seconds
60
+ if requires_transfer is not None:
61
+ self.requires_transfer = requires_transfer
62
+
63
+ @property
64
+ def estimated_duration_seconds(self) -> 'str':
65
+ """Gets the estimated_duration_seconds of this V1GetCloudSpaceTransferEstimateResponse. # noqa: E501
66
+
67
+
68
+ :return: The estimated_duration_seconds of this V1GetCloudSpaceTransferEstimateResponse. # noqa: E501
69
+ :rtype: str
70
+ """
71
+ return self._estimated_duration_seconds
72
+
73
+ @estimated_duration_seconds.setter
74
+ def estimated_duration_seconds(self, estimated_duration_seconds: 'str'):
75
+ """Sets the estimated_duration_seconds of this V1GetCloudSpaceTransferEstimateResponse.
76
+
77
+
78
+ :param estimated_duration_seconds: The estimated_duration_seconds of this V1GetCloudSpaceTransferEstimateResponse. # noqa: E501
79
+ :type: str
80
+ """
81
+
82
+ self._estimated_duration_seconds = estimated_duration_seconds
83
+
84
+ @property
85
+ def requires_transfer(self) -> 'bool':
86
+ """Gets the requires_transfer of this V1GetCloudSpaceTransferEstimateResponse. # noqa: E501
87
+
88
+
89
+ :return: The requires_transfer of this V1GetCloudSpaceTransferEstimateResponse. # noqa: E501
90
+ :rtype: bool
91
+ """
92
+ return self._requires_transfer
93
+
94
+ @requires_transfer.setter
95
+ def requires_transfer(self, requires_transfer: 'bool'):
96
+ """Sets the requires_transfer of this V1GetCloudSpaceTransferEstimateResponse.
97
+
98
+
99
+ :param requires_transfer: The requires_transfer of this V1GetCloudSpaceTransferEstimateResponse. # noqa: E501
100
+ :type: bool
101
+ """
102
+
103
+ self._requires_transfer = requires_transfer
104
+
105
+ def to_dict(self) -> dict:
106
+ """Returns the model properties as a dict"""
107
+ result = {}
108
+
109
+ for attr, _ in six.iteritems(self.swagger_types):
110
+ value = getattr(self, attr)
111
+ if isinstance(value, list):
112
+ result[attr] = list(map(
113
+ lambda x: x.to_dict() if hasattr(x, "to_dict") else x,
114
+ value
115
+ ))
116
+ elif hasattr(value, "to_dict"):
117
+ result[attr] = value.to_dict()
118
+ elif isinstance(value, dict):
119
+ result[attr] = dict(map(
120
+ lambda item: (item[0], item[1].to_dict())
121
+ if hasattr(item[1], "to_dict") else item,
122
+ value.items()
123
+ ))
124
+ else:
125
+ result[attr] = value
126
+ if issubclass(V1GetCloudSpaceTransferEstimateResponse, dict):
127
+ for key, value in self.items():
128
+ result[key] = value
129
+
130
+ return result
131
+
132
+ def to_str(self) -> str:
133
+ """Returns the string representation of the model"""
134
+ return pprint.pformat(self.to_dict())
135
+
136
+ def __repr__(self) -> str:
137
+ """For `print` and `pprint`"""
138
+ return self.to_str()
139
+
140
+ def __eq__(self, other: 'V1GetCloudSpaceTransferEstimateResponse') -> bool:
141
+ """Returns true if both objects are equal"""
142
+ if not isinstance(other, V1GetCloudSpaceTransferEstimateResponse):
143
+ return False
144
+
145
+ return self.__dict__ == other.__dict__
146
+
147
+ def __ne__(self, other: 'V1GetCloudSpaceTransferEstimateResponse') -> bool:
148
+ """Returns true if both objects are not equal"""
149
+ return not self == other