lightning-sdk 2025.9.4__py3-none-any.whl → 2025.9.11__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 (43) hide show
  1. lightning_sdk/__init__.py +1 -1
  2. lightning_sdk/api/llm_api.py +19 -0
  3. lightning_sdk/api/studio_api.py +25 -4
  4. lightning_sdk/lightning_cloud/login.py +60 -0
  5. lightning_sdk/lightning_cloud/openapi/__init__.py +17 -0
  6. lightning_sdk/lightning_cloud/openapi/api/k8_s_cluster_service_api.py +744 -13
  7. lightning_sdk/lightning_cloud/openapi/api/projects_service_api.py +105 -0
  8. lightning_sdk/lightning_cloud/openapi/models/__init__.py +17 -0
  9. lightning_sdk/lightning_cloud/openapi/models/id_render_body.py +123 -0
  10. lightning_sdk/lightning_cloud/openapi/models/kubernetestemplates_id_body.py +227 -0
  11. lightning_sdk/lightning_cloud/openapi/models/metricsstream_create_body.py +27 -1
  12. lightning_sdk/lightning_cloud/openapi/models/project_id_kubernetestemplates_body.py +227 -0
  13. lightning_sdk/lightning_cloud/openapi/models/project_tab_management_messages.py +123 -0
  14. lightning_sdk/lightning_cloud/openapi/models/projects_id_body.py +27 -1
  15. lightning_sdk/lightning_cloud/openapi/models/v1_ai_pod_v1.py +53 -1
  16. lightning_sdk/lightning_cloud/openapi/models/v1_cluster_security_options.py +27 -1
  17. lightning_sdk/lightning_cloud/openapi/models/v1_delete_kubernetes_template_response.py +97 -0
  18. lightning_sdk/lightning_cloud/openapi/models/v1_firewall_rule.py +175 -0
  19. lightning_sdk/lightning_cloud/openapi/models/v1_incident_event.py +565 -0
  20. lightning_sdk/lightning_cloud/openapi/models/v1_incident_severity.py +105 -0
  21. lightning_sdk/lightning_cloud/openapi/models/v1_incident_type.py +106 -0
  22. lightning_sdk/lightning_cloud/openapi/models/v1_k8s_incident_indexes.py +149 -0
  23. lightning_sdk/lightning_cloud/openapi/models/v1_kubernetes_template.py +383 -0
  24. lightning_sdk/lightning_cloud/openapi/models/v1_kubernetes_template_property.py +227 -0
  25. lightning_sdk/lightning_cloud/openapi/models/v1_list_incident_events_response.py +123 -0
  26. lightning_sdk/lightning_cloud/openapi/models/v1_list_kubernetes_templates_response.py +123 -0
  27. lightning_sdk/lightning_cloud/openapi/models/v1_metrics_stream.py +27 -1
  28. lightning_sdk/lightning_cloud/openapi/models/v1_project.py +27 -1
  29. lightning_sdk/lightning_cloud/openapi/models/v1_project_tab.py +149 -0
  30. lightning_sdk/lightning_cloud/openapi/models/v1_quote_annual_upsell_response.py +29 -3
  31. lightning_sdk/lightning_cloud/openapi/models/v1_render_kubernetes_template_response.py +123 -0
  32. lightning_sdk/lightning_cloud/openapi/models/v1_secret_type.py +1 -0
  33. lightning_sdk/lightning_cloud/openapi/models/v1_update_project_tab_order_response.py +123 -0
  34. lightning_sdk/lightning_cloud/openapi/models/v1_user_features.py +154 -102
  35. lightning_sdk/llm/llm.py +91 -7
  36. lightning_sdk/llm/public_assistants.py +2 -2
  37. lightning_sdk/studio.py +30 -3
  38. {lightning_sdk-2025.9.4.dist-info → lightning_sdk-2025.9.11.dist-info}/METADATA +1 -1
  39. {lightning_sdk-2025.9.4.dist-info → lightning_sdk-2025.9.11.dist-info}/RECORD +43 -26
  40. {lightning_sdk-2025.9.4.dist-info → lightning_sdk-2025.9.11.dist-info}/entry_points.txt +1 -0
  41. {lightning_sdk-2025.9.4.dist-info → lightning_sdk-2025.9.11.dist-info}/LICENSE +0 -0
  42. {lightning_sdk-2025.9.4.dist-info → lightning_sdk-2025.9.11.dist-info}/WHEEL +0 -0
  43. {lightning_sdk-2025.9.4.dist-info → lightning_sdk-2025.9.11.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,227 @@
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 ProjectIdKubernetestemplatesBody(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
+ 'cluster_id': 'str',
45
+ 'description': 'str',
46
+ 'name': 'str',
47
+ 'properties': 'list[V1KubernetesTemplateProperty]',
48
+ 'spec': 'str'
49
+ }
50
+
51
+ attribute_map = {
52
+ 'cluster_id': 'clusterId',
53
+ 'description': 'description',
54
+ 'name': 'name',
55
+ 'properties': 'properties',
56
+ 'spec': 'spec'
57
+ }
58
+
59
+ def __init__(self, cluster_id: 'str' =None, description: 'str' =None, name: 'str' =None, properties: 'list[V1KubernetesTemplateProperty]' =None, spec: 'str' =None): # noqa: E501
60
+ """ProjectIdKubernetestemplatesBody - a model defined in Swagger""" # noqa: E501
61
+ self._cluster_id = None
62
+ self._description = None
63
+ self._name = None
64
+ self._properties = None
65
+ self._spec = None
66
+ self.discriminator = None
67
+ if cluster_id is not None:
68
+ self.cluster_id = cluster_id
69
+ if description is not None:
70
+ self.description = description
71
+ if name is not None:
72
+ self.name = name
73
+ if properties is not None:
74
+ self.properties = properties
75
+ if spec is not None:
76
+ self.spec = spec
77
+
78
+ @property
79
+ def cluster_id(self) -> 'str':
80
+ """Gets the cluster_id of this ProjectIdKubernetestemplatesBody. # noqa: E501
81
+
82
+
83
+ :return: The cluster_id of this ProjectIdKubernetestemplatesBody. # noqa: E501
84
+ :rtype: str
85
+ """
86
+ return self._cluster_id
87
+
88
+ @cluster_id.setter
89
+ def cluster_id(self, cluster_id: 'str'):
90
+ """Sets the cluster_id of this ProjectIdKubernetestemplatesBody.
91
+
92
+
93
+ :param cluster_id: The cluster_id of this ProjectIdKubernetestemplatesBody. # noqa: E501
94
+ :type: str
95
+ """
96
+
97
+ self._cluster_id = cluster_id
98
+
99
+ @property
100
+ def description(self) -> 'str':
101
+ """Gets the description of this ProjectIdKubernetestemplatesBody. # noqa: E501
102
+
103
+
104
+ :return: The description of this ProjectIdKubernetestemplatesBody. # noqa: E501
105
+ :rtype: str
106
+ """
107
+ return self._description
108
+
109
+ @description.setter
110
+ def description(self, description: 'str'):
111
+ """Sets the description of this ProjectIdKubernetestemplatesBody.
112
+
113
+
114
+ :param description: The description of this ProjectIdKubernetestemplatesBody. # noqa: E501
115
+ :type: str
116
+ """
117
+
118
+ self._description = description
119
+
120
+ @property
121
+ def name(self) -> 'str':
122
+ """Gets the name of this ProjectIdKubernetestemplatesBody. # noqa: E501
123
+
124
+
125
+ :return: The name of this ProjectIdKubernetestemplatesBody. # noqa: E501
126
+ :rtype: str
127
+ """
128
+ return self._name
129
+
130
+ @name.setter
131
+ def name(self, name: 'str'):
132
+ """Sets the name of this ProjectIdKubernetestemplatesBody.
133
+
134
+
135
+ :param name: The name of this ProjectIdKubernetestemplatesBody. # noqa: E501
136
+ :type: str
137
+ """
138
+
139
+ self._name = name
140
+
141
+ @property
142
+ def properties(self) -> 'list[V1KubernetesTemplateProperty]':
143
+ """Gets the properties of this ProjectIdKubernetestemplatesBody. # noqa: E501
144
+
145
+
146
+ :return: The properties of this ProjectIdKubernetestemplatesBody. # noqa: E501
147
+ :rtype: list[V1KubernetesTemplateProperty]
148
+ """
149
+ return self._properties
150
+
151
+ @properties.setter
152
+ def properties(self, properties: 'list[V1KubernetesTemplateProperty]'):
153
+ """Sets the properties of this ProjectIdKubernetestemplatesBody.
154
+
155
+
156
+ :param properties: The properties of this ProjectIdKubernetestemplatesBody. # noqa: E501
157
+ :type: list[V1KubernetesTemplateProperty]
158
+ """
159
+
160
+ self._properties = properties
161
+
162
+ @property
163
+ def spec(self) -> 'str':
164
+ """Gets the spec of this ProjectIdKubernetestemplatesBody. # noqa: E501
165
+
166
+
167
+ :return: The spec of this ProjectIdKubernetestemplatesBody. # noqa: E501
168
+ :rtype: str
169
+ """
170
+ return self._spec
171
+
172
+ @spec.setter
173
+ def spec(self, spec: 'str'):
174
+ """Sets the spec of this ProjectIdKubernetestemplatesBody.
175
+
176
+
177
+ :param spec: The spec of this ProjectIdKubernetestemplatesBody. # noqa: E501
178
+ :type: str
179
+ """
180
+
181
+ self._spec = spec
182
+
183
+ def to_dict(self) -> dict:
184
+ """Returns the model properties as a dict"""
185
+ result = {}
186
+
187
+ for attr, _ in six.iteritems(self.swagger_types):
188
+ value = getattr(self, attr)
189
+ if isinstance(value, list):
190
+ result[attr] = list(map(
191
+ lambda x: x.to_dict() if hasattr(x, "to_dict") else x,
192
+ value
193
+ ))
194
+ elif hasattr(value, "to_dict"):
195
+ result[attr] = value.to_dict()
196
+ elif isinstance(value, dict):
197
+ result[attr] = dict(map(
198
+ lambda item: (item[0], item[1].to_dict())
199
+ if hasattr(item[1], "to_dict") else item,
200
+ value.items()
201
+ ))
202
+ else:
203
+ result[attr] = value
204
+ if issubclass(ProjectIdKubernetestemplatesBody, dict):
205
+ for key, value in self.items():
206
+ result[key] = value
207
+
208
+ return result
209
+
210
+ def to_str(self) -> str:
211
+ """Returns the string representation of the model"""
212
+ return pprint.pformat(self.to_dict())
213
+
214
+ def __repr__(self) -> str:
215
+ """For `print` and `pprint`"""
216
+ return self.to_str()
217
+
218
+ def __eq__(self, other: 'ProjectIdKubernetestemplatesBody') -> bool:
219
+ """Returns true if both objects are equal"""
220
+ if not isinstance(other, ProjectIdKubernetestemplatesBody):
221
+ return False
222
+
223
+ return self.__dict__ == other.__dict__
224
+
225
+ def __ne__(self, other: 'ProjectIdKubernetestemplatesBody') -> bool:
226
+ """Returns true if both objects are not equal"""
227
+ return not self == other
@@ -0,0 +1,123 @@
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 ProjectTabManagementMessages(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
+ 'tabs': 'list[V1ProjectTab]'
45
+ }
46
+
47
+ attribute_map = {
48
+ 'tabs': 'tabs'
49
+ }
50
+
51
+ def __init__(self, tabs: 'list[V1ProjectTab]' =None): # noqa: E501
52
+ """ProjectTabManagementMessages - a model defined in Swagger""" # noqa: E501
53
+ self._tabs = None
54
+ self.discriminator = None
55
+ if tabs is not None:
56
+ self.tabs = tabs
57
+
58
+ @property
59
+ def tabs(self) -> 'list[V1ProjectTab]':
60
+ """Gets the tabs of this ProjectTabManagementMessages. # noqa: E501
61
+
62
+
63
+ :return: The tabs of this ProjectTabManagementMessages. # noqa: E501
64
+ :rtype: list[V1ProjectTab]
65
+ """
66
+ return self._tabs
67
+
68
+ @tabs.setter
69
+ def tabs(self, tabs: 'list[V1ProjectTab]'):
70
+ """Sets the tabs of this ProjectTabManagementMessages.
71
+
72
+
73
+ :param tabs: The tabs of this ProjectTabManagementMessages. # noqa: E501
74
+ :type: list[V1ProjectTab]
75
+ """
76
+
77
+ self._tabs = tabs
78
+
79
+ def to_dict(self) -> dict:
80
+ """Returns the model properties as a dict"""
81
+ result = {}
82
+
83
+ for attr, _ in six.iteritems(self.swagger_types):
84
+ value = getattr(self, attr)
85
+ if isinstance(value, list):
86
+ result[attr] = list(map(
87
+ lambda x: x.to_dict() if hasattr(x, "to_dict") else x,
88
+ value
89
+ ))
90
+ elif hasattr(value, "to_dict"):
91
+ result[attr] = value.to_dict()
92
+ elif isinstance(value, dict):
93
+ result[attr] = dict(map(
94
+ lambda item: (item[0], item[1].to_dict())
95
+ if hasattr(item[1], "to_dict") else item,
96
+ value.items()
97
+ ))
98
+ else:
99
+ result[attr] = value
100
+ if issubclass(ProjectTabManagementMessages, dict):
101
+ for key, value in self.items():
102
+ result[key] = value
103
+
104
+ return result
105
+
106
+ def to_str(self) -> str:
107
+ """Returns the string representation of the model"""
108
+ return pprint.pformat(self.to_dict())
109
+
110
+ def __repr__(self) -> str:
111
+ """For `print` and `pprint`"""
112
+ return self.to_str()
113
+
114
+ def __eq__(self, other: 'ProjectTabManagementMessages') -> bool:
115
+ """Returns true if both objects are equal"""
116
+ if not isinstance(other, ProjectTabManagementMessages):
117
+ return False
118
+
119
+ return self.__dict__ == other.__dict__
120
+
121
+ def __ne__(self, other: 'ProjectTabManagementMessages') -> bool:
122
+ """Returns true if both objects are not equal"""
123
+ return not self == other
@@ -57,6 +57,7 @@ class ProjectsIdBody(object):
57
57
  'default_machine_type': 'str',
58
58
  'description': 'str',
59
59
  'display_name': 'str',
60
+ 'layout_config': 'list[V1ProjectTab]',
60
61
  'name': 'str',
61
62
  'preferred_cluster': 'str',
62
63
  'preferred_deployment_provider': 'str',
@@ -84,6 +85,7 @@ class ProjectsIdBody(object):
84
85
  'default_machine_type': 'defaultMachineType',
85
86
  'description': 'description',
86
87
  'display_name': 'displayName',
88
+ 'layout_config': 'layoutConfig',
87
89
  'name': 'name',
88
90
  'preferred_cluster': 'preferredCluster',
89
91
  'preferred_deployment_provider': 'preferredDeploymentProvider',
@@ -94,7 +96,7 @@ class ProjectsIdBody(object):
94
96
  'switch_to_default_machine_on_idle': 'switchToDefaultMachineOnIdle'
95
97
  }
96
98
 
97
- def __init__(self, allow_aws_saas: 'bool' =None, allow_credits_auto_replenish: 'bool' =None, allow_dgx_saas: 'bool' =None, allow_external_project_duplication: 'bool' =None, allow_gcp_saas: 'bool' =None, allow_lambda_saas: 'bool' =None, allow_lightning_saas: 'bool' =None, allow_nebius_saas: 'bool' =None, allow_voltage_park_saas: 'bool' =None, allow_vultr_saas: 'bool' =None, auto_replenish_amount: 'float' =None, auto_replenish_threshold: 'float' =None, auto_switch_machine: 'bool' =None, default_machine_type: 'str' =None, description: 'str' =None, display_name: 'str' =None, name: 'str' =None, preferred_cluster: 'str' =None, preferred_deployment_provider: 'str' =None, preferred_studio_provider: 'str' =None, quotas: 'V1Quotas' =None, same_compute_on_resume: 'bool' =None, start_studio_on_spot_instance: 'bool' =None, switch_to_default_machine_on_idle: 'bool' =None): # noqa: E501
99
+ def __init__(self, allow_aws_saas: 'bool' =None, allow_credits_auto_replenish: 'bool' =None, allow_dgx_saas: 'bool' =None, allow_external_project_duplication: 'bool' =None, allow_gcp_saas: 'bool' =None, allow_lambda_saas: 'bool' =None, allow_lightning_saas: 'bool' =None, allow_nebius_saas: 'bool' =None, allow_voltage_park_saas: 'bool' =None, allow_vultr_saas: 'bool' =None, auto_replenish_amount: 'float' =None, auto_replenish_threshold: 'float' =None, auto_switch_machine: 'bool' =None, default_machine_type: 'str' =None, description: 'str' =None, display_name: 'str' =None, layout_config: 'list[V1ProjectTab]' =None, name: 'str' =None, preferred_cluster: 'str' =None, preferred_deployment_provider: 'str' =None, preferred_studio_provider: 'str' =None, quotas: 'V1Quotas' =None, same_compute_on_resume: 'bool' =None, start_studio_on_spot_instance: 'bool' =None, switch_to_default_machine_on_idle: 'bool' =None): # noqa: E501
98
100
  """ProjectsIdBody - a model defined in Swagger""" # noqa: E501
99
101
  self._allow_aws_saas = None
100
102
  self._allow_credits_auto_replenish = None
@@ -112,6 +114,7 @@ class ProjectsIdBody(object):
112
114
  self._default_machine_type = None
113
115
  self._description = None
114
116
  self._display_name = None
117
+ self._layout_config = None
115
118
  self._name = None
116
119
  self._preferred_cluster = None
117
120
  self._preferred_deployment_provider = None
@@ -153,6 +156,8 @@ class ProjectsIdBody(object):
153
156
  self.description = description
154
157
  if display_name is not None:
155
158
  self.display_name = display_name
159
+ if layout_config is not None:
160
+ self.layout_config = layout_config
156
161
  if name is not None:
157
162
  self.name = name
158
163
  if preferred_cluster is not None:
@@ -506,6 +511,27 @@ class ProjectsIdBody(object):
506
511
 
507
512
  self._display_name = display_name
508
513
 
514
+ @property
515
+ def layout_config(self) -> 'list[V1ProjectTab]':
516
+ """Gets the layout_config of this ProjectsIdBody. # noqa: E501
517
+
518
+
519
+ :return: The layout_config of this ProjectsIdBody. # noqa: E501
520
+ :rtype: list[V1ProjectTab]
521
+ """
522
+ return self._layout_config
523
+
524
+ @layout_config.setter
525
+ def layout_config(self, layout_config: 'list[V1ProjectTab]'):
526
+ """Sets the layout_config of this ProjectsIdBody.
527
+
528
+
529
+ :param layout_config: The layout_config of this ProjectsIdBody. # noqa: E501
530
+ :type: list[V1ProjectTab]
531
+ """
532
+
533
+ self._layout_config = layout_config
534
+
509
535
  @property
510
536
  def name(self) -> 'str':
511
537
  """Gets the name of this ProjectsIdBody. # noqa: E501
@@ -41,20 +41,72 @@ class V1AiPodV1(object):
41
41
  and the value is json key in definition.
42
42
  """
43
43
  swagger_types = {
44
+ 'ansible_credential_id': 'str',
45
+ 'ansible_username': 'str',
44
46
  'organization_id': 'str'
45
47
  }
46
48
 
47
49
  attribute_map = {
50
+ 'ansible_credential_id': 'ansibleCredentialId',
51
+ 'ansible_username': 'ansibleUsername',
48
52
  'organization_id': 'organizationId'
49
53
  }
50
54
 
51
- def __init__(self, organization_id: 'str' =None): # noqa: E501
55
+ def __init__(self, ansible_credential_id: 'str' =None, ansible_username: 'str' =None, organization_id: 'str' =None): # noqa: E501
52
56
  """V1AiPodV1 - a model defined in Swagger""" # noqa: E501
57
+ self._ansible_credential_id = None
58
+ self._ansible_username = None
53
59
  self._organization_id = None
54
60
  self.discriminator = None
61
+ if ansible_credential_id is not None:
62
+ self.ansible_credential_id = ansible_credential_id
63
+ if ansible_username is not None:
64
+ self.ansible_username = ansible_username
55
65
  if organization_id is not None:
56
66
  self.organization_id = organization_id
57
67
 
68
+ @property
69
+ def ansible_credential_id(self) -> 'str':
70
+ """Gets the ansible_credential_id of this V1AiPodV1. # noqa: E501
71
+
72
+
73
+ :return: The ansible_credential_id of this V1AiPodV1. # noqa: E501
74
+ :rtype: str
75
+ """
76
+ return self._ansible_credential_id
77
+
78
+ @ansible_credential_id.setter
79
+ def ansible_credential_id(self, ansible_credential_id: 'str'):
80
+ """Sets the ansible_credential_id of this V1AiPodV1.
81
+
82
+
83
+ :param ansible_credential_id: The ansible_credential_id of this V1AiPodV1. # noqa: E501
84
+ :type: str
85
+ """
86
+
87
+ self._ansible_credential_id = ansible_credential_id
88
+
89
+ @property
90
+ def ansible_username(self) -> 'str':
91
+ """Gets the ansible_username of this V1AiPodV1. # noqa: E501
92
+
93
+
94
+ :return: The ansible_username of this V1AiPodV1. # noqa: E501
95
+ :rtype: str
96
+ """
97
+ return self._ansible_username
98
+
99
+ @ansible_username.setter
100
+ def ansible_username(self, ansible_username: 'str'):
101
+ """Sets the ansible_username of this V1AiPodV1.
102
+
103
+
104
+ :param ansible_username: The ansible_username of this V1AiPodV1. # noqa: E501
105
+ :type: str
106
+ """
107
+
108
+ self._ansible_username = ansible_username
109
+
58
110
  @property
59
111
  def organization_id(self) -> 'str':
60
112
  """Gets the organization_id of this V1AiPodV1. # noqa: E501
@@ -51,6 +51,7 @@ class V1ClusterSecurityOptions(object):
51
51
  'encrypt_instance_volumes': 'bool',
52
52
  'exposed_ports': 'list[str]',
53
53
  'extra_firewall_cidr_ranges': 'list[str]',
54
+ 'extra_firewall_rules': 'list[V1FirewallRule]',
54
55
  'extra_policy': 'str',
55
56
  'extra_sa_scopes': 'list[str]',
56
57
  'kms_key_id': 'str',
@@ -71,6 +72,7 @@ class V1ClusterSecurityOptions(object):
71
72
  'encrypt_instance_volumes': 'encryptInstanceVolumes',
72
73
  'exposed_ports': 'exposedPorts',
73
74
  'extra_firewall_cidr_ranges': 'extraFirewallCidrRanges',
75
+ 'extra_firewall_rules': 'extraFirewallRules',
74
76
  'extra_policy': 'extraPolicy',
75
77
  'extra_sa_scopes': 'extraSaScopes',
76
78
  'kms_key_id': 'kmsKeyId',
@@ -80,7 +82,7 @@ class V1ClusterSecurityOptions(object):
80
82
  'ssh_disabled': 'sshDisabled'
81
83
  }
82
84
 
83
- def __init__(self, bucket_kms_key: 'str' =None, cloud_init_boot_cmds: 'list[str]' =None, cloud_init_run_cmds: 'list[str]' =None, containers_non_privileged: 'bool' =None, disable_public_ip: 'bool' =None, disabled_services: 'list[str]' =None, encrypt_cluster_bucket: 'bool' =None, encrypt_instance_volumes: 'bool' =None, exposed_ports: 'list[str]' =None, extra_firewall_cidr_ranges: 'list[str]' =None, extra_policy: 'str' =None, extra_sa_scopes: 'list[str]' =None, kms_key_id: 'str' =None, protect_instance_metadata: 'bool' =None, rootless_docker: 'bool' =None, setup_network_load_balancer: 'bool' =None, ssh_disabled: 'bool' =None): # noqa: E501
85
+ def __init__(self, bucket_kms_key: 'str' =None, cloud_init_boot_cmds: 'list[str]' =None, cloud_init_run_cmds: 'list[str]' =None, containers_non_privileged: 'bool' =None, disable_public_ip: 'bool' =None, disabled_services: 'list[str]' =None, encrypt_cluster_bucket: 'bool' =None, encrypt_instance_volumes: 'bool' =None, exposed_ports: 'list[str]' =None, extra_firewall_cidr_ranges: 'list[str]' =None, extra_firewall_rules: 'list[V1FirewallRule]' =None, extra_policy: 'str' =None, extra_sa_scopes: 'list[str]' =None, kms_key_id: 'str' =None, protect_instance_metadata: 'bool' =None, rootless_docker: 'bool' =None, setup_network_load_balancer: 'bool' =None, ssh_disabled: 'bool' =None): # noqa: E501
84
86
  """V1ClusterSecurityOptions - a model defined in Swagger""" # noqa: E501
85
87
  self._bucket_kms_key = None
86
88
  self._cloud_init_boot_cmds = None
@@ -92,6 +94,7 @@ class V1ClusterSecurityOptions(object):
92
94
  self._encrypt_instance_volumes = None
93
95
  self._exposed_ports = None
94
96
  self._extra_firewall_cidr_ranges = None
97
+ self._extra_firewall_rules = None
95
98
  self._extra_policy = None
96
99
  self._extra_sa_scopes = None
97
100
  self._kms_key_id = None
@@ -120,6 +123,8 @@ class V1ClusterSecurityOptions(object):
120
123
  self.exposed_ports = exposed_ports
121
124
  if extra_firewall_cidr_ranges is not None:
122
125
  self.extra_firewall_cidr_ranges = extra_firewall_cidr_ranges
126
+ if extra_firewall_rules is not None:
127
+ self.extra_firewall_rules = extra_firewall_rules
123
128
  if extra_policy is not None:
124
129
  self.extra_policy = extra_policy
125
130
  if extra_sa_scopes is not None:
@@ -345,6 +350,27 @@ class V1ClusterSecurityOptions(object):
345
350
 
346
351
  self._extra_firewall_cidr_ranges = extra_firewall_cidr_ranges
347
352
 
353
+ @property
354
+ def extra_firewall_rules(self) -> 'list[V1FirewallRule]':
355
+ """Gets the extra_firewall_rules of this V1ClusterSecurityOptions. # noqa: E501
356
+
357
+
358
+ :return: The extra_firewall_rules of this V1ClusterSecurityOptions. # noqa: E501
359
+ :rtype: list[V1FirewallRule]
360
+ """
361
+ return self._extra_firewall_rules
362
+
363
+ @extra_firewall_rules.setter
364
+ def extra_firewall_rules(self, extra_firewall_rules: 'list[V1FirewallRule]'):
365
+ """Sets the extra_firewall_rules of this V1ClusterSecurityOptions.
366
+
367
+
368
+ :param extra_firewall_rules: The extra_firewall_rules of this V1ClusterSecurityOptions. # noqa: E501
369
+ :type: list[V1FirewallRule]
370
+ """
371
+
372
+ self._extra_firewall_rules = extra_firewall_rules
373
+
348
374
  @property
349
375
  def extra_policy(self) -> 'str':
350
376
  """Gets the extra_policy of this V1ClusterSecurityOptions. # noqa: E501
@@ -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 V1DeleteKubernetesTemplateResponse(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
+ """V1DeleteKubernetesTemplateResponse - 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(V1DeleteKubernetesTemplateResponse, 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: 'V1DeleteKubernetesTemplateResponse') -> bool:
89
+ """Returns true if both objects are equal"""
90
+ if not isinstance(other, V1DeleteKubernetesTemplateResponse):
91
+ return False
92
+
93
+ return self.__dict__ == other.__dict__
94
+
95
+ def __ne__(self, other: 'V1DeleteKubernetesTemplateResponse') -> bool:
96
+ """Returns true if both objects are not equal"""
97
+ return not self == other