lightning-sdk 2025.8.18__py3-none-any.whl → 2025.8.19.post0__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 (31) hide show
  1. lightning_sdk/__init__.py +1 -1
  2. lightning_sdk/api/cloud_account_api.py +5 -0
  3. lightning_sdk/api/studio_api.py +14 -36
  4. lightning_sdk/api/utils.py +108 -18
  5. lightning_sdk/cli/config/get.py +16 -0
  6. lightning_sdk/cli/config/set.py +27 -0
  7. lightning_sdk/cli/studio/create.py +16 -1
  8. lightning_sdk/cli/studio/start.py +20 -2
  9. lightning_sdk/lightning_cloud/openapi/__init__.py +1 -0
  10. lightning_sdk/lightning_cloud/openapi/api/k8_s_cluster_service_api.py +113 -0
  11. lightning_sdk/lightning_cloud/openapi/models/__init__.py +1 -0
  12. lightning_sdk/lightning_cloud/openapi/models/id_codeconfig_body.py +3 -81
  13. lightning_sdk/lightning_cloud/openapi/models/orgs_id_body.py +27 -1
  14. lightning_sdk/lightning_cloud/openapi/models/project_id_storage_body.py +27 -1
  15. lightning_sdk/lightning_cloud/openapi/models/storage_complete_body.py +27 -1
  16. lightning_sdk/lightning_cloud/openapi/models/uploads_upload_id_body1.py +27 -1
  17. lightning_sdk/lightning_cloud/openapi/models/v1_cluster_metrics.py +79 -1
  18. lightning_sdk/lightning_cloud/openapi/models/v1_list_aggregated_pod_metrics_response.py +123 -0
  19. lightning_sdk/lightning_cloud/openapi/models/v1_node_metrics.py +79 -1
  20. lightning_sdk/lightning_cloud/openapi/models/v1_organization.py +27 -1
  21. lightning_sdk/lightning_cloud/openapi/models/v1_update_cloud_space_instance_config_request.py +3 -81
  22. lightning_sdk/lightning_cloud/openapi/models/v1_user_features.py +1 -105
  23. lightning_sdk/studio.py +0 -1
  24. lightning_sdk/utils/config.py +3 -0
  25. lightning_sdk/utils/resolve.py +12 -0
  26. {lightning_sdk-2025.8.18.dist-info → lightning_sdk-2025.8.19.post0.dist-info}/METADATA +1 -1
  27. {lightning_sdk-2025.8.18.dist-info → lightning_sdk-2025.8.19.post0.dist-info}/RECORD +31 -30
  28. {lightning_sdk-2025.8.18.dist-info → lightning_sdk-2025.8.19.post0.dist-info}/LICENSE +0 -0
  29. {lightning_sdk-2025.8.18.dist-info → lightning_sdk-2025.8.19.post0.dist-info}/WHEEL +0 -0
  30. {lightning_sdk-2025.8.18.dist-info → lightning_sdk-2025.8.19.post0.dist-info}/entry_points.txt +0 -0
  31. {lightning_sdk-2025.8.18.dist-info → lightning_sdk-2025.8.19.post0.dist-info}/top_level.txt +0 -0
@@ -43,47 +43,32 @@ class IdCodeconfigBody(object):
43
43
  swagger_types = {
44
44
  'compute_config': 'V1UserRequestedComputeConfig',
45
45
  'data_connection_mounts': 'list[V1DataConnectionMount]',
46
- 'disable_auto_shutdown': 'bool',
47
46
  'ide': 'str',
48
- 'idle_shutdown_seconds': 'int',
49
- 'port_plugin_port': 'str',
50
- 'switch_to_default_machine_on_idle': 'bool'
47
+ 'port_plugin_port': 'str'
51
48
  }
52
49
 
53
50
  attribute_map = {
54
51
  'compute_config': 'computeConfig',
55
52
  'data_connection_mounts': 'dataConnectionMounts',
56
- 'disable_auto_shutdown': 'disableAutoShutdown',
57
53
  'ide': 'ide',
58
- 'idle_shutdown_seconds': 'idleShutdownSeconds',
59
- 'port_plugin_port': 'portPluginPort',
60
- 'switch_to_default_machine_on_idle': 'switchToDefaultMachineOnIdle'
54
+ 'port_plugin_port': 'portPluginPort'
61
55
  }
62
56
 
63
- def __init__(self, compute_config: 'V1UserRequestedComputeConfig' =None, data_connection_mounts: 'list[V1DataConnectionMount]' =None, disable_auto_shutdown: 'bool' =None, ide: 'str' =None, idle_shutdown_seconds: 'int' =None, port_plugin_port: 'str' =None, switch_to_default_machine_on_idle: 'bool' =None): # noqa: E501
57
+ def __init__(self, compute_config: 'V1UserRequestedComputeConfig' =None, data_connection_mounts: 'list[V1DataConnectionMount]' =None, ide: 'str' =None, port_plugin_port: 'str' =None): # noqa: E501
64
58
  """IdCodeconfigBody - a model defined in Swagger""" # noqa: E501
65
59
  self._compute_config = None
66
60
  self._data_connection_mounts = None
67
- self._disable_auto_shutdown = None
68
61
  self._ide = None
69
- self._idle_shutdown_seconds = None
70
62
  self._port_plugin_port = None
71
- self._switch_to_default_machine_on_idle = None
72
63
  self.discriminator = None
73
64
  if compute_config is not None:
74
65
  self.compute_config = compute_config
75
66
  if data_connection_mounts is not None:
76
67
  self.data_connection_mounts = data_connection_mounts
77
- if disable_auto_shutdown is not None:
78
- self.disable_auto_shutdown = disable_auto_shutdown
79
68
  if ide is not None:
80
69
  self.ide = ide
81
- if idle_shutdown_seconds is not None:
82
- self.idle_shutdown_seconds = idle_shutdown_seconds
83
70
  if port_plugin_port is not None:
84
71
  self.port_plugin_port = port_plugin_port
85
- if switch_to_default_machine_on_idle is not None:
86
- self.switch_to_default_machine_on_idle = switch_to_default_machine_on_idle
87
72
 
88
73
  @property
89
74
  def compute_config(self) -> 'V1UserRequestedComputeConfig':
@@ -127,27 +112,6 @@ class IdCodeconfigBody(object):
127
112
 
128
113
  self._data_connection_mounts = data_connection_mounts
129
114
 
130
- @property
131
- def disable_auto_shutdown(self) -> 'bool':
132
- """Gets the disable_auto_shutdown of this IdCodeconfigBody. # noqa: E501
133
-
134
-
135
- :return: The disable_auto_shutdown of this IdCodeconfigBody. # noqa: E501
136
- :rtype: bool
137
- """
138
- return self._disable_auto_shutdown
139
-
140
- @disable_auto_shutdown.setter
141
- def disable_auto_shutdown(self, disable_auto_shutdown: 'bool'):
142
- """Sets the disable_auto_shutdown of this IdCodeconfigBody.
143
-
144
-
145
- :param disable_auto_shutdown: The disable_auto_shutdown of this IdCodeconfigBody. # noqa: E501
146
- :type: bool
147
- """
148
-
149
- self._disable_auto_shutdown = disable_auto_shutdown
150
-
151
115
  @property
152
116
  def ide(self) -> 'str':
153
117
  """Gets the ide of this IdCodeconfigBody. # noqa: E501
@@ -169,27 +133,6 @@ class IdCodeconfigBody(object):
169
133
 
170
134
  self._ide = ide
171
135
 
172
- @property
173
- def idle_shutdown_seconds(self) -> 'int':
174
- """Gets the idle_shutdown_seconds of this IdCodeconfigBody. # noqa: E501
175
-
176
-
177
- :return: The idle_shutdown_seconds of this IdCodeconfigBody. # noqa: E501
178
- :rtype: int
179
- """
180
- return self._idle_shutdown_seconds
181
-
182
- @idle_shutdown_seconds.setter
183
- def idle_shutdown_seconds(self, idle_shutdown_seconds: 'int'):
184
- """Sets the idle_shutdown_seconds of this IdCodeconfigBody.
185
-
186
-
187
- :param idle_shutdown_seconds: The idle_shutdown_seconds of this IdCodeconfigBody. # noqa: E501
188
- :type: int
189
- """
190
-
191
- self._idle_shutdown_seconds = idle_shutdown_seconds
192
-
193
136
  @property
194
137
  def port_plugin_port(self) -> 'str':
195
138
  """Gets the port_plugin_port of this IdCodeconfigBody. # noqa: E501
@@ -211,27 +154,6 @@ class IdCodeconfigBody(object):
211
154
 
212
155
  self._port_plugin_port = port_plugin_port
213
156
 
214
- @property
215
- def switch_to_default_machine_on_idle(self) -> 'bool':
216
- """Gets the switch_to_default_machine_on_idle of this IdCodeconfigBody. # noqa: E501
217
-
218
-
219
- :return: The switch_to_default_machine_on_idle of this IdCodeconfigBody. # noqa: E501
220
- :rtype: bool
221
- """
222
- return self._switch_to_default_machine_on_idle
223
-
224
- @switch_to_default_machine_on_idle.setter
225
- def switch_to_default_machine_on_idle(self, switch_to_default_machine_on_idle: 'bool'):
226
- """Sets the switch_to_default_machine_on_idle of this IdCodeconfigBody.
227
-
228
-
229
- :param switch_to_default_machine_on_idle: The switch_to_default_machine_on_idle of this IdCodeconfigBody. # noqa: E501
230
- :type: bool
231
- """
232
-
233
- self._switch_to_default_machine_on_idle = switch_to_default_machine_on_idle
234
-
235
157
  def to_dict(self) -> dict:
236
158
  """Returns the model properties as a dict"""
237
159
  result = {}
@@ -73,6 +73,7 @@ class OrgsIdBody(object):
73
73
  'preferred_cluster': 'str',
74
74
  'preferred_deployment_provider': 'str',
75
75
  'preferred_studio_provider': 'str',
76
+ 'show_model_apis_tab': 'bool',
76
77
  'start_studios_on_spot_instance': 'bool',
77
78
  'switch_to_default_machine_on_idle': 'bool',
78
79
  'teamspace_default_credits': 'float',
@@ -113,6 +114,7 @@ class OrgsIdBody(object):
113
114
  'preferred_cluster': 'preferredCluster',
114
115
  'preferred_deployment_provider': 'preferredDeploymentProvider',
115
116
  'preferred_studio_provider': 'preferredStudioProvider',
117
+ 'show_model_apis_tab': 'showModelApisTab',
116
118
  'start_studios_on_spot_instance': 'startStudiosOnSpotInstance',
117
119
  'switch_to_default_machine_on_idle': 'switchToDefaultMachineOnIdle',
118
120
  'teamspace_default_credits': 'teamspaceDefaultCredits',
@@ -120,7 +122,7 @@ class OrgsIdBody(object):
120
122
  'workload_max_run_duration': 'workloadMaxRunDuration'
121
123
  }
122
124
 
123
- def __init__(self, alerts_config: 'V1AlertsConfig' =None, allow_budgeting: 'bool' =None, allow_credits_auto_replenish: 'bool' =None, allow_external_project_duplication: 'bool' =None, allow_guest: 'bool' =None, allow_marketplace: 'bool' =None, allow_member_invitations: 'bool' =None, allow_member_teamspace_creation: 'bool' =None, auto_invite_by_domain: 'bool' =None, auto_join_domains: 'list[str]' =None, auto_replenish_amount: 'float' =None, auto_replenish_threshold: 'float' =None, auto_switch_machine: 'bool' =None, default_machine_type: 'str' =None, default_project_id: 'str' =None, description: 'str' =None, disallow_aws_saas: 'bool' =None, disallow_dgx_saas: 'bool' =None, disallow_gcp_saas: 'bool' =None, disallow_lambda_saas: 'bool' =None, disallow_lightning_saas: 'bool' =None, disallow_nebius_saas: 'bool' =None, disallow_voltage_park_saas: 'bool' =None, disallow_vultr_saas: 'bool' =None, display_name: 'str' =None, domain: 'str' =None, email: 'str' =None, featured_gallery: 'bool' =None, location: 'str' =None, preferred_cluster: 'str' =None, preferred_deployment_provider: 'str' =None, preferred_studio_provider: 'str' =None, start_studios_on_spot_instance: 'bool' =None, switch_to_default_machine_on_idle: 'bool' =None, teamspace_default_credits: 'float' =None, twitter_username: 'str' =None, workload_max_run_duration: 'str' =None): # noqa: E501
125
+ def __init__(self, alerts_config: 'V1AlertsConfig' =None, allow_budgeting: 'bool' =None, allow_credits_auto_replenish: 'bool' =None, allow_external_project_duplication: 'bool' =None, allow_guest: 'bool' =None, allow_marketplace: 'bool' =None, allow_member_invitations: 'bool' =None, allow_member_teamspace_creation: 'bool' =None, auto_invite_by_domain: 'bool' =None, auto_join_domains: 'list[str]' =None, auto_replenish_amount: 'float' =None, auto_replenish_threshold: 'float' =None, auto_switch_machine: 'bool' =None, default_machine_type: 'str' =None, default_project_id: 'str' =None, description: 'str' =None, disallow_aws_saas: 'bool' =None, disallow_dgx_saas: 'bool' =None, disallow_gcp_saas: 'bool' =None, disallow_lambda_saas: 'bool' =None, disallow_lightning_saas: 'bool' =None, disallow_nebius_saas: 'bool' =None, disallow_voltage_park_saas: 'bool' =None, disallow_vultr_saas: 'bool' =None, display_name: 'str' =None, domain: 'str' =None, email: 'str' =None, featured_gallery: 'bool' =None, location: 'str' =None, preferred_cluster: 'str' =None, preferred_deployment_provider: 'str' =None, preferred_studio_provider: 'str' =None, show_model_apis_tab: 'bool' =None, start_studios_on_spot_instance: 'bool' =None, switch_to_default_machine_on_idle: 'bool' =None, teamspace_default_credits: 'float' =None, twitter_username: 'str' =None, workload_max_run_duration: 'str' =None): # noqa: E501
124
126
  """OrgsIdBody - a model defined in Swagger""" # noqa: E501
125
127
  self._alerts_config = None
126
128
  self._allow_budgeting = None
@@ -154,6 +156,7 @@ class OrgsIdBody(object):
154
156
  self._preferred_cluster = None
155
157
  self._preferred_deployment_provider = None
156
158
  self._preferred_studio_provider = None
159
+ self._show_model_apis_tab = None
157
160
  self._start_studios_on_spot_instance = None
158
161
  self._switch_to_default_machine_on_idle = None
159
162
  self._teamspace_default_credits = None
@@ -224,6 +227,8 @@ class OrgsIdBody(object):
224
227
  self.preferred_deployment_provider = preferred_deployment_provider
225
228
  if preferred_studio_provider is not None:
226
229
  self.preferred_studio_provider = preferred_studio_provider
230
+ if show_model_apis_tab is not None:
231
+ self.show_model_apis_tab = show_model_apis_tab
227
232
  if start_studios_on_spot_instance is not None:
228
233
  self.start_studios_on_spot_instance = start_studios_on_spot_instance
229
234
  if switch_to_default_machine_on_idle is not None:
@@ -907,6 +912,27 @@ class OrgsIdBody(object):
907
912
 
908
913
  self._preferred_studio_provider = preferred_studio_provider
909
914
 
915
+ @property
916
+ def show_model_apis_tab(self) -> 'bool':
917
+ """Gets the show_model_apis_tab of this OrgsIdBody. # noqa: E501
918
+
919
+
920
+ :return: The show_model_apis_tab of this OrgsIdBody. # noqa: E501
921
+ :rtype: bool
922
+ """
923
+ return self._show_model_apis_tab
924
+
925
+ @show_model_apis_tab.setter
926
+ def show_model_apis_tab(self, show_model_apis_tab: 'bool'):
927
+ """Sets the show_model_apis_tab of this OrgsIdBody.
928
+
929
+
930
+ :param show_model_apis_tab: The show_model_apis_tab of this OrgsIdBody. # noqa: E501
931
+ :type: bool
932
+ """
933
+
934
+ self._show_model_apis_tab = show_model_apis_tab
935
+
910
936
  @property
911
937
  def start_studios_on_spot_instance(self) -> 'bool':
912
938
  """Gets the start_studios_on_spot_instance of this OrgsIdBody. # noqa: E501
@@ -43,25 +43,30 @@ class ProjectIdStorageBody(object):
43
43
  swagger_types = {
44
44
  'cluster_id': 'str',
45
45
  'count': 'str',
46
+ 'data_connection_id': 'str',
46
47
  'filename': 'str'
47
48
  }
48
49
 
49
50
  attribute_map = {
50
51
  'cluster_id': 'clusterId',
51
52
  'count': 'count',
53
+ 'data_connection_id': 'dataConnectionId',
52
54
  'filename': 'filename'
53
55
  }
54
56
 
55
- def __init__(self, cluster_id: 'str' =None, count: 'str' =None, filename: 'str' =None): # noqa: E501
57
+ def __init__(self, cluster_id: 'str' =None, count: 'str' =None, data_connection_id: 'str' =None, filename: 'str' =None): # noqa: E501
56
58
  """ProjectIdStorageBody - a model defined in Swagger""" # noqa: E501
57
59
  self._cluster_id = None
58
60
  self._count = None
61
+ self._data_connection_id = None
59
62
  self._filename = None
60
63
  self.discriminator = None
61
64
  if cluster_id is not None:
62
65
  self.cluster_id = cluster_id
63
66
  if count is not None:
64
67
  self.count = count
68
+ if data_connection_id is not None:
69
+ self.data_connection_id = data_connection_id
65
70
  if filename is not None:
66
71
  self.filename = filename
67
72
 
@@ -107,6 +112,27 @@ class ProjectIdStorageBody(object):
107
112
 
108
113
  self._count = count
109
114
 
115
+ @property
116
+ def data_connection_id(self) -> 'str':
117
+ """Gets the data_connection_id of this ProjectIdStorageBody. # noqa: E501
118
+
119
+
120
+ :return: The data_connection_id of this ProjectIdStorageBody. # noqa: E501
121
+ :rtype: str
122
+ """
123
+ return self._data_connection_id
124
+
125
+ @data_connection_id.setter
126
+ def data_connection_id(self, data_connection_id: 'str'):
127
+ """Sets the data_connection_id of this ProjectIdStorageBody.
128
+
129
+
130
+ :param data_connection_id: The data_connection_id of this ProjectIdStorageBody. # noqa: E501
131
+ :type: str
132
+ """
133
+
134
+ self._data_connection_id = data_connection_id
135
+
110
136
  @property
111
137
  def filename(self) -> 'str':
112
138
  """Gets the filename of this ProjectIdStorageBody. # noqa: E501
@@ -42,6 +42,7 @@ class StorageCompleteBody(object):
42
42
  """
43
43
  swagger_types = {
44
44
  'cluster_id': 'str',
45
+ 'data_connection_id': 'str',
45
46
  'filename': 'str',
46
47
  'parts': 'list[V1CompleteUpload]',
47
48
  'suppress_reindex': 'bool',
@@ -50,15 +51,17 @@ class StorageCompleteBody(object):
50
51
 
51
52
  attribute_map = {
52
53
  'cluster_id': 'clusterId',
54
+ 'data_connection_id': 'dataConnectionId',
53
55
  'filename': 'filename',
54
56
  'parts': 'parts',
55
57
  'suppress_reindex': 'suppressReindex',
56
58
  'upload_id': 'uploadId'
57
59
  }
58
60
 
59
- def __init__(self, cluster_id: 'str' =None, filename: 'str' =None, parts: 'list[V1CompleteUpload]' =None, suppress_reindex: 'bool' =None, upload_id: 'str' =None): # noqa: E501
61
+ def __init__(self, cluster_id: 'str' =None, data_connection_id: 'str' =None, filename: 'str' =None, parts: 'list[V1CompleteUpload]' =None, suppress_reindex: 'bool' =None, upload_id: 'str' =None): # noqa: E501
60
62
  """StorageCompleteBody - a model defined in Swagger""" # noqa: E501
61
63
  self._cluster_id = None
64
+ self._data_connection_id = None
62
65
  self._filename = None
63
66
  self._parts = None
64
67
  self._suppress_reindex = None
@@ -66,6 +69,8 @@ class StorageCompleteBody(object):
66
69
  self.discriminator = None
67
70
  if cluster_id is not None:
68
71
  self.cluster_id = cluster_id
72
+ if data_connection_id is not None:
73
+ self.data_connection_id = data_connection_id
69
74
  if filename is not None:
70
75
  self.filename = filename
71
76
  if parts is not None:
@@ -96,6 +101,27 @@ class StorageCompleteBody(object):
96
101
 
97
102
  self._cluster_id = cluster_id
98
103
 
104
+ @property
105
+ def data_connection_id(self) -> 'str':
106
+ """Gets the data_connection_id of this StorageCompleteBody. # noqa: E501
107
+
108
+
109
+ :return: The data_connection_id of this StorageCompleteBody. # noqa: E501
110
+ :rtype: str
111
+ """
112
+ return self._data_connection_id
113
+
114
+ @data_connection_id.setter
115
+ def data_connection_id(self, data_connection_id: 'str'):
116
+ """Sets the data_connection_id of this StorageCompleteBody.
117
+
118
+
119
+ :param data_connection_id: The data_connection_id of this StorageCompleteBody. # noqa: E501
120
+ :type: str
121
+ """
122
+
123
+ self._data_connection_id = data_connection_id
124
+
99
125
  @property
100
126
  def filename(self) -> 'str':
101
127
  """Gets the filename of this StorageCompleteBody. # noqa: E501
@@ -42,24 +42,29 @@ class UploadsUploadIdBody1(object):
42
42
  """
43
43
  swagger_types = {
44
44
  'cluster_id': 'str',
45
+ 'data_connection_id': 'str',
45
46
  'filename': 'str',
46
47
  'parts': 'list[str]'
47
48
  }
48
49
 
49
50
  attribute_map = {
50
51
  'cluster_id': 'clusterId',
52
+ 'data_connection_id': 'dataConnectionId',
51
53
  'filename': 'filename',
52
54
  'parts': 'parts'
53
55
  }
54
56
 
55
- def __init__(self, cluster_id: 'str' =None, filename: 'str' =None, parts: 'list[str]' =None): # noqa: E501
57
+ def __init__(self, cluster_id: 'str' =None, data_connection_id: 'str' =None, filename: 'str' =None, parts: 'list[str]' =None): # noqa: E501
56
58
  """UploadsUploadIdBody1 - a model defined in Swagger""" # noqa: E501
57
59
  self._cluster_id = None
60
+ self._data_connection_id = None
58
61
  self._filename = None
59
62
  self._parts = None
60
63
  self.discriminator = None
61
64
  if cluster_id is not None:
62
65
  self.cluster_id = cluster_id
66
+ if data_connection_id is not None:
67
+ self.data_connection_id = data_connection_id
63
68
  if filename is not None:
64
69
  self.filename = filename
65
70
  if parts is not None:
@@ -86,6 +91,27 @@ class UploadsUploadIdBody1(object):
86
91
 
87
92
  self._cluster_id = cluster_id
88
93
 
94
+ @property
95
+ def data_connection_id(self) -> 'str':
96
+ """Gets the data_connection_id of this UploadsUploadIdBody1. # noqa: E501
97
+
98
+
99
+ :return: The data_connection_id of this UploadsUploadIdBody1. # noqa: E501
100
+ :rtype: str
101
+ """
102
+ return self._data_connection_id
103
+
104
+ @data_connection_id.setter
105
+ def data_connection_id(self, data_connection_id: 'str'):
106
+ """Sets the data_connection_id of this UploadsUploadIdBody1.
107
+
108
+
109
+ :param data_connection_id: The data_connection_id of this UploadsUploadIdBody1. # noqa: E501
110
+ :type: str
111
+ """
112
+
113
+ self._data_connection_id = data_connection_id
114
+
89
115
  @property
90
116
  def filename(self) -> 'str':
91
117
  """Gets the filename of this UploadsUploadIdBody1. # noqa: E501
@@ -51,6 +51,9 @@ class V1ClusterMetrics(object):
51
51
  'gpus_energy_total': 'float',
52
52
  'gpus_temp_avg': 'float',
53
53
  'gpus_util': 'float',
54
+ 'gpus_util_over_allocable': 'float',
55
+ 'gpus_util_over_requested': 'float',
56
+ 'max_power_per_gpu': 'float',
54
57
  'num_cpus': 'int',
55
58
  'num_gpus': 'int',
56
59
  'num_gpus_allocable': 'int',
@@ -86,6 +89,9 @@ class V1ClusterMetrics(object):
86
89
  'gpus_energy_total': 'gpusEnergyTotal',
87
90
  'gpus_temp_avg': 'gpusTempAvg',
88
91
  'gpus_util': 'gpusUtil',
92
+ 'gpus_util_over_allocable': 'gpusUtilOverAllocable',
93
+ 'gpus_util_over_requested': 'gpusUtilOverRequested',
94
+ 'max_power_per_gpu': 'maxPowerPerGpu',
89
95
  'num_cpus': 'numCpus',
90
96
  'num_gpus': 'numGpus',
91
97
  'num_gpus_allocable': 'numGpusAllocable',
@@ -110,7 +116,7 @@ class V1ClusterMetrics(object):
110
116
  'vram_util': 'vramUtil'
111
117
  }
112
118
 
113
- def __init__(self, cpus_util: 'float' =None, filesystem_inode_util: 'float' =None, filesystem_read_rate: 'float' =None, filesystem_total: 'float' =None, filesystem_util: 'float' =None, filesystem_write_rate: 'float' =None, gpus_energy_avg: 'float' =None, gpus_energy_total: 'float' =None, gpus_temp_avg: 'float' =None, gpus_util: 'float' =None, num_cpus: 'int' =None, num_gpus: 'int' =None, num_gpus_allocable: 'int' =None, num_limit_cpus: 'int' =None, num_limit_gpus: 'int' =None, num_namespaces: 'int' =None, num_nodes: 'int' =None, num_pods: 'int' =None, num_requested_cpus: 'int' =None, num_requested_gpus: 'int' =None, ram_limit: 'str' =None, ram_requested: 'str' =None, ram_total: 'str' =None, ram_util: 'float' =None, timestamp: 'datetime' =None, vram_limit: 'float' =None, vram_read_write_util: 'float' =None, vram_requested: 'float' =None, vram_total: 'str' =None, vram_used_avg: 'float' =None, vram_used_total: 'float' =None, vram_util: 'float' =None): # noqa: E501
119
+ def __init__(self, cpus_util: 'float' =None, filesystem_inode_util: 'float' =None, filesystem_read_rate: 'float' =None, filesystem_total: 'float' =None, filesystem_util: 'float' =None, filesystem_write_rate: 'float' =None, gpus_energy_avg: 'float' =None, gpus_energy_total: 'float' =None, gpus_temp_avg: 'float' =None, gpus_util: 'float' =None, gpus_util_over_allocable: 'float' =None, gpus_util_over_requested: 'float' =None, max_power_per_gpu: 'float' =None, num_cpus: 'int' =None, num_gpus: 'int' =None, num_gpus_allocable: 'int' =None, num_limit_cpus: 'int' =None, num_limit_gpus: 'int' =None, num_namespaces: 'int' =None, num_nodes: 'int' =None, num_pods: 'int' =None, num_requested_cpus: 'int' =None, num_requested_gpus: 'int' =None, ram_limit: 'str' =None, ram_requested: 'str' =None, ram_total: 'str' =None, ram_util: 'float' =None, timestamp: 'datetime' =None, vram_limit: 'float' =None, vram_read_write_util: 'float' =None, vram_requested: 'float' =None, vram_total: 'str' =None, vram_used_avg: 'float' =None, vram_used_total: 'float' =None, vram_util: 'float' =None): # noqa: E501
114
120
  """V1ClusterMetrics - a model defined in Swagger""" # noqa: E501
115
121
  self._cpus_util = None
116
122
  self._filesystem_inode_util = None
@@ -122,6 +128,9 @@ class V1ClusterMetrics(object):
122
128
  self._gpus_energy_total = None
123
129
  self._gpus_temp_avg = None
124
130
  self._gpus_util = None
131
+ self._gpus_util_over_allocable = None
132
+ self._gpus_util_over_requested = None
133
+ self._max_power_per_gpu = None
125
134
  self._num_cpus = None
126
135
  self._num_gpus = None
127
136
  self._num_gpus_allocable = None
@@ -165,6 +174,12 @@ class V1ClusterMetrics(object):
165
174
  self.gpus_temp_avg = gpus_temp_avg
166
175
  if gpus_util is not None:
167
176
  self.gpus_util = gpus_util
177
+ if gpus_util_over_allocable is not None:
178
+ self.gpus_util_over_allocable = gpus_util_over_allocable
179
+ if gpus_util_over_requested is not None:
180
+ self.gpus_util_over_requested = gpus_util_over_requested
181
+ if max_power_per_gpu is not None:
182
+ self.max_power_per_gpu = max_power_per_gpu
168
183
  if num_cpus is not None:
169
184
  self.num_cpus = num_cpus
170
185
  if num_gpus is not None:
@@ -420,6 +435,69 @@ class V1ClusterMetrics(object):
420
435
 
421
436
  self._gpus_util = gpus_util
422
437
 
438
+ @property
439
+ def gpus_util_over_allocable(self) -> 'float':
440
+ """Gets the gpus_util_over_allocable of this V1ClusterMetrics. # noqa: E501
441
+
442
+
443
+ :return: The gpus_util_over_allocable of this V1ClusterMetrics. # noqa: E501
444
+ :rtype: float
445
+ """
446
+ return self._gpus_util_over_allocable
447
+
448
+ @gpus_util_over_allocable.setter
449
+ def gpus_util_over_allocable(self, gpus_util_over_allocable: 'float'):
450
+ """Sets the gpus_util_over_allocable of this V1ClusterMetrics.
451
+
452
+
453
+ :param gpus_util_over_allocable: The gpus_util_over_allocable of this V1ClusterMetrics. # noqa: E501
454
+ :type: float
455
+ """
456
+
457
+ self._gpus_util_over_allocable = gpus_util_over_allocable
458
+
459
+ @property
460
+ def gpus_util_over_requested(self) -> 'float':
461
+ """Gets the gpus_util_over_requested of this V1ClusterMetrics. # noqa: E501
462
+
463
+
464
+ :return: The gpus_util_over_requested of this V1ClusterMetrics. # noqa: E501
465
+ :rtype: float
466
+ """
467
+ return self._gpus_util_over_requested
468
+
469
+ @gpus_util_over_requested.setter
470
+ def gpus_util_over_requested(self, gpus_util_over_requested: 'float'):
471
+ """Sets the gpus_util_over_requested of this V1ClusterMetrics.
472
+
473
+
474
+ :param gpus_util_over_requested: The gpus_util_over_requested of this V1ClusterMetrics. # noqa: E501
475
+ :type: float
476
+ """
477
+
478
+ self._gpus_util_over_requested = gpus_util_over_requested
479
+
480
+ @property
481
+ def max_power_per_gpu(self) -> 'float':
482
+ """Gets the max_power_per_gpu of this V1ClusterMetrics. # noqa: E501
483
+
484
+
485
+ :return: The max_power_per_gpu of this V1ClusterMetrics. # noqa: E501
486
+ :rtype: float
487
+ """
488
+ return self._max_power_per_gpu
489
+
490
+ @max_power_per_gpu.setter
491
+ def max_power_per_gpu(self, max_power_per_gpu: 'float'):
492
+ """Sets the max_power_per_gpu of this V1ClusterMetrics.
493
+
494
+
495
+ :param max_power_per_gpu: The max_power_per_gpu of this V1ClusterMetrics. # noqa: E501
496
+ :type: float
497
+ """
498
+
499
+ self._max_power_per_gpu = max_power_per_gpu
500
+
423
501
  @property
424
502
  def num_cpus(self) -> 'int':
425
503
  """Gets the num_cpus of this V1ClusterMetrics. # noqa: E501
@@ -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 V1ListAggregatedPodMetricsResponse(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
+ 'pod_metrics': 'list[V1PodMetrics]'
45
+ }
46
+
47
+ attribute_map = {
48
+ 'pod_metrics': 'podMetrics'
49
+ }
50
+
51
+ def __init__(self, pod_metrics: 'list[V1PodMetrics]' =None): # noqa: E501
52
+ """V1ListAggregatedPodMetricsResponse - a model defined in Swagger""" # noqa: E501
53
+ self._pod_metrics = None
54
+ self.discriminator = None
55
+ if pod_metrics is not None:
56
+ self.pod_metrics = pod_metrics
57
+
58
+ @property
59
+ def pod_metrics(self) -> 'list[V1PodMetrics]':
60
+ """Gets the pod_metrics of this V1ListAggregatedPodMetricsResponse. # noqa: E501
61
+
62
+
63
+ :return: The pod_metrics of this V1ListAggregatedPodMetricsResponse. # noqa: E501
64
+ :rtype: list[V1PodMetrics]
65
+ """
66
+ return self._pod_metrics
67
+
68
+ @pod_metrics.setter
69
+ def pod_metrics(self, pod_metrics: 'list[V1PodMetrics]'):
70
+ """Sets the pod_metrics of this V1ListAggregatedPodMetricsResponse.
71
+
72
+
73
+ :param pod_metrics: The pod_metrics of this V1ListAggregatedPodMetricsResponse. # noqa: E501
74
+ :type: list[V1PodMetrics]
75
+ """
76
+
77
+ self._pod_metrics = pod_metrics
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(V1ListAggregatedPodMetricsResponse, 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: 'V1ListAggregatedPodMetricsResponse') -> bool:
115
+ """Returns true if both objects are equal"""
116
+ if not isinstance(other, V1ListAggregatedPodMetricsResponse):
117
+ return False
118
+
119
+ return self.__dict__ == other.__dict__
120
+
121
+ def __ne__(self, other: 'V1ListAggregatedPodMetricsResponse') -> bool:
122
+ """Returns true if both objects are not equal"""
123
+ return not self == other