lightning-sdk 2025.8.19.post0__py3-none-any.whl → 2025.8.26__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 (61) hide show
  1. lightning_sdk/__init__.py +1 -1
  2. lightning_sdk/api/llm_api.py +6 -2
  3. lightning_sdk/api/studio_api.py +168 -2
  4. lightning_sdk/api/teamspace_api.py +60 -30
  5. lightning_sdk/api/user_api.py +49 -1
  6. lightning_sdk/api/utils.py +1 -1
  7. lightning_sdk/cli/config/set.py +6 -18
  8. lightning_sdk/cli/legacy/create.py +12 -14
  9. lightning_sdk/cli/legacy/delete.py +3 -3
  10. lightning_sdk/cli/legacy/deploy/_auth.py +4 -4
  11. lightning_sdk/cli/legacy/download.py +7 -7
  12. lightning_sdk/cli/legacy/job_and_mmt_action.py +4 -4
  13. lightning_sdk/cli/legacy/list.py +9 -9
  14. lightning_sdk/cli/legacy/open.py +3 -3
  15. lightning_sdk/cli/legacy/start.py +1 -0
  16. lightning_sdk/cli/legacy/switch.py +1 -0
  17. lightning_sdk/cli/legacy/upload.py +3 -3
  18. lightning_sdk/cli/studio/create.py +14 -23
  19. lightning_sdk/cli/studio/delete.py +28 -27
  20. lightning_sdk/cli/studio/list.py +5 -6
  21. lightning_sdk/cli/studio/ssh.py +19 -22
  22. lightning_sdk/cli/studio/start.py +23 -23
  23. lightning_sdk/cli/studio/stop.py +22 -26
  24. lightning_sdk/cli/studio/switch.py +20 -23
  25. lightning_sdk/cli/utils/resolve.py +1 -1
  26. lightning_sdk/cli/utils/save_to_config.py +27 -0
  27. lightning_sdk/cli/utils/studio_selection.py +106 -0
  28. lightning_sdk/cli/utils/teamspace_selection.py +125 -0
  29. lightning_sdk/lightning_cloud/openapi/__init__.py +3 -0
  30. lightning_sdk/lightning_cloud/openapi/api/billing_service_api.py +170 -0
  31. lightning_sdk/lightning_cloud/openapi/api/k8_s_cluster_service_api.py +101 -0
  32. lightning_sdk/lightning_cloud/openapi/models/__init__.py +3 -0
  33. lightning_sdk/lightning_cloud/openapi/models/assistant_id_conversations_body.py +15 -15
  34. lightning_sdk/lightning_cloud/openapi/models/externalv1_user_status.py +27 -1
  35. lightning_sdk/lightning_cloud/openapi/models/v1_cluster_metrics.py +270 -36
  36. lightning_sdk/lightning_cloud/openapi/models/v1_container_metrics.py +21 -21
  37. lightning_sdk/lightning_cloud/openapi/models/v1_list_cluster_metric_timestamps_response.py +123 -0
  38. lightning_sdk/lightning_cloud/openapi/models/v1_namespace_metrics.py +11 -11
  39. lightning_sdk/lightning_cloud/openapi/models/v1_namespace_user_metrics.py +16 -16
  40. lightning_sdk/lightning_cloud/openapi/models/v1_node_metrics.py +156 -26
  41. lightning_sdk/lightning_cloud/openapi/models/v1_pod_metrics.py +281 -21
  42. lightning_sdk/lightning_cloud/openapi/models/v1_project_cluster_binding.py +27 -1
  43. lightning_sdk/lightning_cloud/openapi/models/v1_purchase_annual_upsell_response.py +123 -0
  44. lightning_sdk/lightning_cloud/openapi/models/v1_quote_annual_upsell_response.py +201 -0
  45. lightning_sdk/lightning_cloud/openapi/models/v1_storage_asset.py +107 -3
  46. lightning_sdk/lightning_cloud/openapi/models/v1_user_features.py +1 -27
  47. lightning_sdk/llm/llm.py +2 -2
  48. lightning_sdk/llm/public_assistants.py +4 -0
  49. lightning_sdk/studio.py +92 -28
  50. lightning_sdk/teamspace.py +25 -2
  51. lightning_sdk/user.py +19 -1
  52. lightning_sdk/utils/config.py +6 -0
  53. lightning_sdk/utils/names.py +1179 -0
  54. lightning_sdk/utils/progress.py +284 -0
  55. lightning_sdk/utils/resolve.py +6 -6
  56. {lightning_sdk-2025.8.19.post0.dist-info → lightning_sdk-2025.8.26.dist-info}/METADATA +1 -1
  57. {lightning_sdk-2025.8.19.post0.dist-info → lightning_sdk-2025.8.26.dist-info}/RECORD +61 -53
  58. {lightning_sdk-2025.8.19.post0.dist-info → lightning_sdk-2025.8.26.dist-info}/LICENSE +0 -0
  59. {lightning_sdk-2025.8.19.post0.dist-info → lightning_sdk-2025.8.26.dist-info}/WHEEL +0 -0
  60. {lightning_sdk-2025.8.19.post0.dist-info → lightning_sdk-2025.8.26.dist-info}/entry_points.txt +0 -0
  61. {lightning_sdk-2025.8.19.post0.dist-info → lightning_sdk-2025.8.26.dist-info}/top_level.txt +0 -0
@@ -43,13 +43,23 @@ class V1PodMetrics(object):
43
43
  swagger_types = {
44
44
  'cpu_usage': 'float',
45
45
  'labels': 'dict(str, str)',
46
+ 'max_gpu_temp_recorded': 'int',
47
+ 'max_power_per_gpu': 'int',
46
48
  'mem_usage': 'float',
47
49
  'namespace': 'str',
48
50
  'node_name': 'str',
49
- 'num_cpus_limit': 'float',
50
- 'num_cpus_request': 'float',
51
- 'num_gpus': 'float',
52
- 'per_gpu_mem_used': 'dict(str, float)',
51
+ 'num_cpus_limit': 'int',
52
+ 'num_cpus_request': 'int',
53
+ 'num_gpus': 'int',
54
+ 'nvlink_rx_gib': 'dict(str, float)',
55
+ 'nvlink_tx_gib': 'dict(str, float)',
56
+ 'pcie_rx_gib': 'dict(str, float)',
57
+ 'pcie_tx_gib': 'dict(str, float)',
58
+ 'per_gpu_mem_used': 'dict(str, int)',
59
+ 'per_gpu_power_usage_watts': 'dict(str, int)',
60
+ 'per_gpu_sm_active': 'dict(str, float)',
61
+ 'per_gpu_sm_occupancy': 'dict(str, float)',
62
+ 'per_gpu_temperature_c': 'dict(str, int)',
53
63
  'per_gpu_util': 'dict(str, float)',
54
64
  'phase': 'str',
55
65
  'pod_id': 'str',
@@ -61,13 +71,23 @@ class V1PodMetrics(object):
61
71
  attribute_map = {
62
72
  'cpu_usage': 'cpuUsage',
63
73
  'labels': 'labels',
74
+ 'max_gpu_temp_recorded': 'maxGpuTempRecorded',
75
+ 'max_power_per_gpu': 'maxPowerPerGpu',
64
76
  'mem_usage': 'memUsage',
65
77
  'namespace': 'namespace',
66
78
  'node_name': 'nodeName',
67
79
  'num_cpus_limit': 'numCpusLimit',
68
80
  'num_cpus_request': 'numCpusRequest',
69
81
  'num_gpus': 'numGpus',
82
+ 'nvlink_rx_gib': 'nvlinkRxGib',
83
+ 'nvlink_tx_gib': 'nvlinkTxGib',
84
+ 'pcie_rx_gib': 'pcieRxGib',
85
+ 'pcie_tx_gib': 'pcieTxGib',
70
86
  'per_gpu_mem_used': 'perGpuMemUsed',
87
+ 'per_gpu_power_usage_watts': 'perGpuPowerUsageWatts',
88
+ 'per_gpu_sm_active': 'perGpuSmActive',
89
+ 'per_gpu_sm_occupancy': 'perGpuSmOccupancy',
90
+ 'per_gpu_temperature_c': 'perGpuTemperatureC',
71
91
  'per_gpu_util': 'perGpuUtil',
72
92
  'phase': 'phase',
73
93
  'pod_id': 'podId',
@@ -76,17 +96,27 @@ class V1PodMetrics(object):
76
96
  'user_id': 'userId'
77
97
  }
78
98
 
79
- def __init__(self, cpu_usage: 'float' =None, labels: 'dict(str, str)' =None, mem_usage: 'float' =None, namespace: 'str' =None, node_name: 'str' =None, num_cpus_limit: 'float' =None, num_cpus_request: 'float' =None, num_gpus: 'float' =None, per_gpu_mem_used: 'dict(str, float)' =None, per_gpu_util: 'dict(str, float)' =None, phase: 'str' =None, pod_id: 'str' =None, pod_name: 'str' =None, timestamp: 'datetime' =None, user_id: 'str' =None): # noqa: E501
99
+ def __init__(self, cpu_usage: 'float' =None, labels: 'dict(str, str)' =None, max_gpu_temp_recorded: 'int' =None, max_power_per_gpu: 'int' =None, mem_usage: 'float' =None, namespace: 'str' =None, node_name: 'str' =None, num_cpus_limit: 'int' =None, num_cpus_request: 'int' =None, num_gpus: 'int' =None, nvlink_rx_gib: 'dict(str, float)' =None, nvlink_tx_gib: 'dict(str, float)' =None, pcie_rx_gib: 'dict(str, float)' =None, pcie_tx_gib: 'dict(str, float)' =None, per_gpu_mem_used: 'dict(str, int)' =None, per_gpu_power_usage_watts: 'dict(str, int)' =None, per_gpu_sm_active: 'dict(str, float)' =None, per_gpu_sm_occupancy: 'dict(str, float)' =None, per_gpu_temperature_c: 'dict(str, int)' =None, per_gpu_util: 'dict(str, float)' =None, phase: 'str' =None, pod_id: 'str' =None, pod_name: 'str' =None, timestamp: 'datetime' =None, user_id: 'str' =None): # noqa: E501
80
100
  """V1PodMetrics - a model defined in Swagger""" # noqa: E501
81
101
  self._cpu_usage = None
82
102
  self._labels = None
103
+ self._max_gpu_temp_recorded = None
104
+ self._max_power_per_gpu = None
83
105
  self._mem_usage = None
84
106
  self._namespace = None
85
107
  self._node_name = None
86
108
  self._num_cpus_limit = None
87
109
  self._num_cpus_request = None
88
110
  self._num_gpus = None
111
+ self._nvlink_rx_gib = None
112
+ self._nvlink_tx_gib = None
113
+ self._pcie_rx_gib = None
114
+ self._pcie_tx_gib = None
89
115
  self._per_gpu_mem_used = None
116
+ self._per_gpu_power_usage_watts = None
117
+ self._per_gpu_sm_active = None
118
+ self._per_gpu_sm_occupancy = None
119
+ self._per_gpu_temperature_c = None
90
120
  self._per_gpu_util = None
91
121
  self._phase = None
92
122
  self._pod_id = None
@@ -98,6 +128,10 @@ class V1PodMetrics(object):
98
128
  self.cpu_usage = cpu_usage
99
129
  if labels is not None:
100
130
  self.labels = labels
131
+ if max_gpu_temp_recorded is not None:
132
+ self.max_gpu_temp_recorded = max_gpu_temp_recorded
133
+ if max_power_per_gpu is not None:
134
+ self.max_power_per_gpu = max_power_per_gpu
101
135
  if mem_usage is not None:
102
136
  self.mem_usage = mem_usage
103
137
  if namespace is not None:
@@ -110,8 +144,24 @@ class V1PodMetrics(object):
110
144
  self.num_cpus_request = num_cpus_request
111
145
  if num_gpus is not None:
112
146
  self.num_gpus = num_gpus
147
+ if nvlink_rx_gib is not None:
148
+ self.nvlink_rx_gib = nvlink_rx_gib
149
+ if nvlink_tx_gib is not None:
150
+ self.nvlink_tx_gib = nvlink_tx_gib
151
+ if pcie_rx_gib is not None:
152
+ self.pcie_rx_gib = pcie_rx_gib
153
+ if pcie_tx_gib is not None:
154
+ self.pcie_tx_gib = pcie_tx_gib
113
155
  if per_gpu_mem_used is not None:
114
156
  self.per_gpu_mem_used = per_gpu_mem_used
157
+ if per_gpu_power_usage_watts is not None:
158
+ self.per_gpu_power_usage_watts = per_gpu_power_usage_watts
159
+ if per_gpu_sm_active is not None:
160
+ self.per_gpu_sm_active = per_gpu_sm_active
161
+ if per_gpu_sm_occupancy is not None:
162
+ self.per_gpu_sm_occupancy = per_gpu_sm_occupancy
163
+ if per_gpu_temperature_c is not None:
164
+ self.per_gpu_temperature_c = per_gpu_temperature_c
115
165
  if per_gpu_util is not None:
116
166
  self.per_gpu_util = per_gpu_util
117
167
  if phase is not None:
@@ -167,6 +217,48 @@ class V1PodMetrics(object):
167
217
 
168
218
  self._labels = labels
169
219
 
220
+ @property
221
+ def max_gpu_temp_recorded(self) -> 'int':
222
+ """Gets the max_gpu_temp_recorded of this V1PodMetrics. # noqa: E501
223
+
224
+
225
+ :return: The max_gpu_temp_recorded of this V1PodMetrics. # noqa: E501
226
+ :rtype: int
227
+ """
228
+ return self._max_gpu_temp_recorded
229
+
230
+ @max_gpu_temp_recorded.setter
231
+ def max_gpu_temp_recorded(self, max_gpu_temp_recorded: 'int'):
232
+ """Sets the max_gpu_temp_recorded of this V1PodMetrics.
233
+
234
+
235
+ :param max_gpu_temp_recorded: The max_gpu_temp_recorded of this V1PodMetrics. # noqa: E501
236
+ :type: int
237
+ """
238
+
239
+ self._max_gpu_temp_recorded = max_gpu_temp_recorded
240
+
241
+ @property
242
+ def max_power_per_gpu(self) -> 'int':
243
+ """Gets the max_power_per_gpu of this V1PodMetrics. # noqa: E501
244
+
245
+
246
+ :return: The max_power_per_gpu of this V1PodMetrics. # noqa: E501
247
+ :rtype: int
248
+ """
249
+ return self._max_power_per_gpu
250
+
251
+ @max_power_per_gpu.setter
252
+ def max_power_per_gpu(self, max_power_per_gpu: 'int'):
253
+ """Sets the max_power_per_gpu of this V1PodMetrics.
254
+
255
+
256
+ :param max_power_per_gpu: The max_power_per_gpu of this V1PodMetrics. # noqa: E501
257
+ :type: int
258
+ """
259
+
260
+ self._max_power_per_gpu = max_power_per_gpu
261
+
170
262
  @property
171
263
  def mem_usage(self) -> 'float':
172
264
  """Gets the mem_usage of this V1PodMetrics. # noqa: E501
@@ -231,89 +323,257 @@ class V1PodMetrics(object):
231
323
  self._node_name = node_name
232
324
 
233
325
  @property
234
- def num_cpus_limit(self) -> 'float':
326
+ def num_cpus_limit(self) -> 'int':
235
327
  """Gets the num_cpus_limit of this V1PodMetrics. # noqa: E501
236
328
 
237
329
 
238
330
  :return: The num_cpus_limit of this V1PodMetrics. # noqa: E501
239
- :rtype: float
331
+ :rtype: int
240
332
  """
241
333
  return self._num_cpus_limit
242
334
 
243
335
  @num_cpus_limit.setter
244
- def num_cpus_limit(self, num_cpus_limit: 'float'):
336
+ def num_cpus_limit(self, num_cpus_limit: 'int'):
245
337
  """Sets the num_cpus_limit of this V1PodMetrics.
246
338
 
247
339
 
248
340
  :param num_cpus_limit: The num_cpus_limit of this V1PodMetrics. # noqa: E501
249
- :type: float
341
+ :type: int
250
342
  """
251
343
 
252
344
  self._num_cpus_limit = num_cpus_limit
253
345
 
254
346
  @property
255
- def num_cpus_request(self) -> 'float':
347
+ def num_cpus_request(self) -> 'int':
256
348
  """Gets the num_cpus_request of this V1PodMetrics. # noqa: E501
257
349
 
258
350
 
259
351
  :return: The num_cpus_request of this V1PodMetrics. # noqa: E501
260
- :rtype: float
352
+ :rtype: int
261
353
  """
262
354
  return self._num_cpus_request
263
355
 
264
356
  @num_cpus_request.setter
265
- def num_cpus_request(self, num_cpus_request: 'float'):
357
+ def num_cpus_request(self, num_cpus_request: 'int'):
266
358
  """Sets the num_cpus_request of this V1PodMetrics.
267
359
 
268
360
 
269
361
  :param num_cpus_request: The num_cpus_request of this V1PodMetrics. # noqa: E501
270
- :type: float
362
+ :type: int
271
363
  """
272
364
 
273
365
  self._num_cpus_request = num_cpus_request
274
366
 
275
367
  @property
276
- def num_gpus(self) -> 'float':
368
+ def num_gpus(self) -> 'int':
277
369
  """Gets the num_gpus of this V1PodMetrics. # noqa: E501
278
370
 
279
371
 
280
372
  :return: The num_gpus of this V1PodMetrics. # noqa: E501
281
- :rtype: float
373
+ :rtype: int
282
374
  """
283
375
  return self._num_gpus
284
376
 
285
377
  @num_gpus.setter
286
- def num_gpus(self, num_gpus: 'float'):
378
+ def num_gpus(self, num_gpus: 'int'):
287
379
  """Sets the num_gpus of this V1PodMetrics.
288
380
 
289
381
 
290
382
  :param num_gpus: The num_gpus of this V1PodMetrics. # noqa: E501
291
- :type: float
383
+ :type: int
292
384
  """
293
385
 
294
386
  self._num_gpus = num_gpus
295
387
 
296
388
  @property
297
- def per_gpu_mem_used(self) -> 'dict(str, float)':
389
+ def nvlink_rx_gib(self) -> 'dict(str, float)':
390
+ """Gets the nvlink_rx_gib of this V1PodMetrics. # noqa: E501
391
+
392
+
393
+ :return: The nvlink_rx_gib of this V1PodMetrics. # noqa: E501
394
+ :rtype: dict(str, float)
395
+ """
396
+ return self._nvlink_rx_gib
397
+
398
+ @nvlink_rx_gib.setter
399
+ def nvlink_rx_gib(self, nvlink_rx_gib: 'dict(str, float)'):
400
+ """Sets the nvlink_rx_gib of this V1PodMetrics.
401
+
402
+
403
+ :param nvlink_rx_gib: The nvlink_rx_gib of this V1PodMetrics. # noqa: E501
404
+ :type: dict(str, float)
405
+ """
406
+
407
+ self._nvlink_rx_gib = nvlink_rx_gib
408
+
409
+ @property
410
+ def nvlink_tx_gib(self) -> 'dict(str, float)':
411
+ """Gets the nvlink_tx_gib of this V1PodMetrics. # noqa: E501
412
+
413
+
414
+ :return: The nvlink_tx_gib of this V1PodMetrics. # noqa: E501
415
+ :rtype: dict(str, float)
416
+ """
417
+ return self._nvlink_tx_gib
418
+
419
+ @nvlink_tx_gib.setter
420
+ def nvlink_tx_gib(self, nvlink_tx_gib: 'dict(str, float)'):
421
+ """Sets the nvlink_tx_gib of this V1PodMetrics.
422
+
423
+
424
+ :param nvlink_tx_gib: The nvlink_tx_gib of this V1PodMetrics. # noqa: E501
425
+ :type: dict(str, float)
426
+ """
427
+
428
+ self._nvlink_tx_gib = nvlink_tx_gib
429
+
430
+ @property
431
+ def pcie_rx_gib(self) -> 'dict(str, float)':
432
+ """Gets the pcie_rx_gib of this V1PodMetrics. # noqa: E501
433
+
434
+
435
+ :return: The pcie_rx_gib of this V1PodMetrics. # noqa: E501
436
+ :rtype: dict(str, float)
437
+ """
438
+ return self._pcie_rx_gib
439
+
440
+ @pcie_rx_gib.setter
441
+ def pcie_rx_gib(self, pcie_rx_gib: 'dict(str, float)'):
442
+ """Sets the pcie_rx_gib of this V1PodMetrics.
443
+
444
+
445
+ :param pcie_rx_gib: The pcie_rx_gib of this V1PodMetrics. # noqa: E501
446
+ :type: dict(str, float)
447
+ """
448
+
449
+ self._pcie_rx_gib = pcie_rx_gib
450
+
451
+ @property
452
+ def pcie_tx_gib(self) -> 'dict(str, float)':
453
+ """Gets the pcie_tx_gib of this V1PodMetrics. # noqa: E501
454
+
455
+
456
+ :return: The pcie_tx_gib of this V1PodMetrics. # noqa: E501
457
+ :rtype: dict(str, float)
458
+ """
459
+ return self._pcie_tx_gib
460
+
461
+ @pcie_tx_gib.setter
462
+ def pcie_tx_gib(self, pcie_tx_gib: 'dict(str, float)'):
463
+ """Sets the pcie_tx_gib of this V1PodMetrics.
464
+
465
+
466
+ :param pcie_tx_gib: The pcie_tx_gib of this V1PodMetrics. # noqa: E501
467
+ :type: dict(str, float)
468
+ """
469
+
470
+ self._pcie_tx_gib = pcie_tx_gib
471
+
472
+ @property
473
+ def per_gpu_mem_used(self) -> 'dict(str, int)':
298
474
  """Gets the per_gpu_mem_used of this V1PodMetrics. # noqa: E501
299
475
 
300
476
 
301
477
  :return: The per_gpu_mem_used of this V1PodMetrics. # noqa: E501
302
- :rtype: dict(str, float)
478
+ :rtype: dict(str, int)
303
479
  """
304
480
  return self._per_gpu_mem_used
305
481
 
306
482
  @per_gpu_mem_used.setter
307
- def per_gpu_mem_used(self, per_gpu_mem_used: 'dict(str, float)'):
483
+ def per_gpu_mem_used(self, per_gpu_mem_used: 'dict(str, int)'):
308
484
  """Sets the per_gpu_mem_used of this V1PodMetrics.
309
485
 
310
486
 
311
487
  :param per_gpu_mem_used: The per_gpu_mem_used of this V1PodMetrics. # noqa: E501
312
- :type: dict(str, float)
488
+ :type: dict(str, int)
313
489
  """
314
490
 
315
491
  self._per_gpu_mem_used = per_gpu_mem_used
316
492
 
493
+ @property
494
+ def per_gpu_power_usage_watts(self) -> 'dict(str, int)':
495
+ """Gets the per_gpu_power_usage_watts of this V1PodMetrics. # noqa: E501
496
+
497
+
498
+ :return: The per_gpu_power_usage_watts of this V1PodMetrics. # noqa: E501
499
+ :rtype: dict(str, int)
500
+ """
501
+ return self._per_gpu_power_usage_watts
502
+
503
+ @per_gpu_power_usage_watts.setter
504
+ def per_gpu_power_usage_watts(self, per_gpu_power_usage_watts: 'dict(str, int)'):
505
+ """Sets the per_gpu_power_usage_watts of this V1PodMetrics.
506
+
507
+
508
+ :param per_gpu_power_usage_watts: The per_gpu_power_usage_watts of this V1PodMetrics. # noqa: E501
509
+ :type: dict(str, int)
510
+ """
511
+
512
+ self._per_gpu_power_usage_watts = per_gpu_power_usage_watts
513
+
514
+ @property
515
+ def per_gpu_sm_active(self) -> 'dict(str, float)':
516
+ """Gets the per_gpu_sm_active of this V1PodMetrics. # noqa: E501
517
+
518
+
519
+ :return: The per_gpu_sm_active of this V1PodMetrics. # noqa: E501
520
+ :rtype: dict(str, float)
521
+ """
522
+ return self._per_gpu_sm_active
523
+
524
+ @per_gpu_sm_active.setter
525
+ def per_gpu_sm_active(self, per_gpu_sm_active: 'dict(str, float)'):
526
+ """Sets the per_gpu_sm_active of this V1PodMetrics.
527
+
528
+
529
+ :param per_gpu_sm_active: The per_gpu_sm_active of this V1PodMetrics. # noqa: E501
530
+ :type: dict(str, float)
531
+ """
532
+
533
+ self._per_gpu_sm_active = per_gpu_sm_active
534
+
535
+ @property
536
+ def per_gpu_sm_occupancy(self) -> 'dict(str, float)':
537
+ """Gets the per_gpu_sm_occupancy of this V1PodMetrics. # noqa: E501
538
+
539
+
540
+ :return: The per_gpu_sm_occupancy of this V1PodMetrics. # noqa: E501
541
+ :rtype: dict(str, float)
542
+ """
543
+ return self._per_gpu_sm_occupancy
544
+
545
+ @per_gpu_sm_occupancy.setter
546
+ def per_gpu_sm_occupancy(self, per_gpu_sm_occupancy: 'dict(str, float)'):
547
+ """Sets the per_gpu_sm_occupancy of this V1PodMetrics.
548
+
549
+
550
+ :param per_gpu_sm_occupancy: The per_gpu_sm_occupancy of this V1PodMetrics. # noqa: E501
551
+ :type: dict(str, float)
552
+ """
553
+
554
+ self._per_gpu_sm_occupancy = per_gpu_sm_occupancy
555
+
556
+ @property
557
+ def per_gpu_temperature_c(self) -> 'dict(str, int)':
558
+ """Gets the per_gpu_temperature_c of this V1PodMetrics. # noqa: E501
559
+
560
+
561
+ :return: The per_gpu_temperature_c of this V1PodMetrics. # noqa: E501
562
+ :rtype: dict(str, int)
563
+ """
564
+ return self._per_gpu_temperature_c
565
+
566
+ @per_gpu_temperature_c.setter
567
+ def per_gpu_temperature_c(self, per_gpu_temperature_c: 'dict(str, int)'):
568
+ """Sets the per_gpu_temperature_c of this V1PodMetrics.
569
+
570
+
571
+ :param per_gpu_temperature_c: The per_gpu_temperature_c of this V1PodMetrics. # noqa: E501
572
+ :type: dict(str, int)
573
+ """
574
+
575
+ self._per_gpu_temperature_c = per_gpu_temperature_c
576
+
317
577
  @property
318
578
  def per_gpu_util(self) -> 'dict(str, float)':
319
579
  """Gets the per_gpu_util of this V1PodMetrics. # noqa: E501
@@ -48,6 +48,7 @@ class V1ProjectClusterBinding(object):
48
48
  'is_cluster_healthy': 'bool',
49
49
  'project_id': 'str',
50
50
  'sa_key': 'str',
51
+ 'sa_key_created_at': 'datetime',
51
52
  'updated_at': 'datetime'
52
53
  }
53
54
 
@@ -59,10 +60,11 @@ class V1ProjectClusterBinding(object):
59
60
  'is_cluster_healthy': 'isClusterHealthy',
60
61
  'project_id': 'projectId',
61
62
  'sa_key': 'saKey',
63
+ 'sa_key_created_at': 'saKeyCreatedAt',
62
64
  'updated_at': 'updatedAt'
63
65
  }
64
66
 
65
- def __init__(self, cluster_id: 'str' =None, cluster_name: 'str' =None, cluster_region: 'str' =None, created_at: 'datetime' =None, is_cluster_healthy: 'bool' =None, project_id: 'str' =None, sa_key: 'str' =None, updated_at: 'datetime' =None): # noqa: E501
67
+ def __init__(self, cluster_id: 'str' =None, cluster_name: 'str' =None, cluster_region: 'str' =None, created_at: 'datetime' =None, is_cluster_healthy: 'bool' =None, project_id: 'str' =None, sa_key: 'str' =None, sa_key_created_at: 'datetime' =None, updated_at: 'datetime' =None): # noqa: E501
66
68
  """V1ProjectClusterBinding - a model defined in Swagger""" # noqa: E501
67
69
  self._cluster_id = None
68
70
  self._cluster_name = None
@@ -71,6 +73,7 @@ class V1ProjectClusterBinding(object):
71
73
  self._is_cluster_healthy = None
72
74
  self._project_id = None
73
75
  self._sa_key = None
76
+ self._sa_key_created_at = None
74
77
  self._updated_at = None
75
78
  self.discriminator = None
76
79
  if cluster_id is not None:
@@ -87,6 +90,8 @@ class V1ProjectClusterBinding(object):
87
90
  self.project_id = project_id
88
91
  if sa_key is not None:
89
92
  self.sa_key = sa_key
93
+ if sa_key_created_at is not None:
94
+ self.sa_key_created_at = sa_key_created_at
90
95
  if updated_at is not None:
91
96
  self.updated_at = updated_at
92
97
 
@@ -237,6 +242,27 @@ class V1ProjectClusterBinding(object):
237
242
 
238
243
  self._sa_key = sa_key
239
244
 
245
+ @property
246
+ def sa_key_created_at(self) -> 'datetime':
247
+ """Gets the sa_key_created_at of this V1ProjectClusterBinding. # noqa: E501
248
+
249
+
250
+ :return: The sa_key_created_at of this V1ProjectClusterBinding. # noqa: E501
251
+ :rtype: datetime
252
+ """
253
+ return self._sa_key_created_at
254
+
255
+ @sa_key_created_at.setter
256
+ def sa_key_created_at(self, sa_key_created_at: 'datetime'):
257
+ """Sets the sa_key_created_at of this V1ProjectClusterBinding.
258
+
259
+
260
+ :param sa_key_created_at: The sa_key_created_at of this V1ProjectClusterBinding. # noqa: E501
261
+ :type: datetime
262
+ """
263
+
264
+ self._sa_key_created_at = sa_key_created_at
265
+
240
266
  @property
241
267
  def updated_at(self) -> 'datetime':
242
268
  """Gets the updated_at of this V1ProjectClusterBinding. # 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 V1PurchaseAnnualUpsellResponse(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
+ 'payment_succeeded': 'bool'
45
+ }
46
+
47
+ attribute_map = {
48
+ 'payment_succeeded': 'paymentSucceeded'
49
+ }
50
+
51
+ def __init__(self, payment_succeeded: 'bool' =None): # noqa: E501
52
+ """V1PurchaseAnnualUpsellResponse - a model defined in Swagger""" # noqa: E501
53
+ self._payment_succeeded = None
54
+ self.discriminator = None
55
+ if payment_succeeded is not None:
56
+ self.payment_succeeded = payment_succeeded
57
+
58
+ @property
59
+ def payment_succeeded(self) -> 'bool':
60
+ """Gets the payment_succeeded of this V1PurchaseAnnualUpsellResponse. # noqa: E501
61
+
62
+
63
+ :return: The payment_succeeded of this V1PurchaseAnnualUpsellResponse. # noqa: E501
64
+ :rtype: bool
65
+ """
66
+ return self._payment_succeeded
67
+
68
+ @payment_succeeded.setter
69
+ def payment_succeeded(self, payment_succeeded: 'bool'):
70
+ """Sets the payment_succeeded of this V1PurchaseAnnualUpsellResponse.
71
+
72
+
73
+ :param payment_succeeded: The payment_succeeded of this V1PurchaseAnnualUpsellResponse. # noqa: E501
74
+ :type: bool
75
+ """
76
+
77
+ self._payment_succeeded = payment_succeeded
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(V1PurchaseAnnualUpsellResponse, 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: 'V1PurchaseAnnualUpsellResponse') -> bool:
115
+ """Returns true if both objects are equal"""
116
+ if not isinstance(other, V1PurchaseAnnualUpsellResponse):
117
+ return False
118
+
119
+ return self.__dict__ == other.__dict__
120
+
121
+ def __ne__(self, other: 'V1PurchaseAnnualUpsellResponse') -> bool:
122
+ """Returns true if both objects are not equal"""
123
+ return not self == other