lightning-sdk 0.1.54__py3-none-any.whl → 0.1.56__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/ai_hub.py +22 -0
  3. lightning_sdk/api/ai_hub_api.py +21 -2
  4. lightning_sdk/api/deployment_api.py +4 -3
  5. lightning_sdk/api/job_api.py +5 -10
  6. lightning_sdk/api/lit_container_api.py +27 -7
  7. lightning_sdk/api/mmt_api.py +1 -4
  8. lightning_sdk/api/studio_api.py +5 -7
  9. lightning_sdk/api/teamspace_api.py +7 -0
  10. lightning_sdk/api/utils.py +1 -27
  11. lightning_sdk/cli/configure.py +92 -0
  12. lightning_sdk/cli/connect.py +31 -0
  13. lightning_sdk/cli/delete.py +32 -3
  14. lightning_sdk/cli/download.py +1 -1
  15. lightning_sdk/cli/entrypoint.py +14 -1
  16. lightning_sdk/cli/generate.py +35 -0
  17. lightning_sdk/cli/inspect.py +4 -2
  18. lightning_sdk/cli/jobs_menu.py +2 -1
  19. lightning_sdk/cli/list.py +49 -6
  20. lightning_sdk/cli/mmts_menu.py +2 -1
  21. lightning_sdk/cli/run.py +3 -3
  22. lightning_sdk/cli/serve.py +1 -2
  23. lightning_sdk/cli/start.py +43 -0
  24. lightning_sdk/cli/stop.py +30 -2
  25. lightning_sdk/cli/studios_menu.py +24 -1
  26. lightning_sdk/cli/switch.py +43 -0
  27. lightning_sdk/cli/teamspace_menu.py +2 -1
  28. lightning_sdk/cli/upload.py +6 -4
  29. lightning_sdk/lightning_cloud/openapi/__init__.py +6 -0
  30. lightning_sdk/lightning_cloud/openapi/api/cluster_service_api.py +115 -2
  31. lightning_sdk/lightning_cloud/openapi/api/jobs_service_api.py +113 -0
  32. lightning_sdk/lightning_cloud/openapi/api/lit_registry_service_api.py +216 -2
  33. lightning_sdk/lightning_cloud/openapi/api/projects_service_api.py +1 -5
  34. lightning_sdk/lightning_cloud/openapi/models/__init__.py +6 -0
  35. lightning_sdk/lightning_cloud/openapi/models/cluster_id_usagerestrictions_body.py +27 -1
  36. lightning_sdk/lightning_cloud/openapi/models/id_reportrestarttimings_body.py +123 -0
  37. lightning_sdk/lightning_cloud/openapi/models/project_id_litregistry_body.py +2 -0
  38. lightning_sdk/lightning_cloud/openapi/models/usagerestrictions_id_body.py +27 -1
  39. lightning_sdk/lightning_cloud/openapi/models/v1_cloud_provider.py +3 -0
  40. lightning_sdk/lightning_cloud/openapi/models/v1_cluster_accelerator.py +53 -1
  41. lightning_sdk/lightning_cloud/openapi/models/v1_get_cluster_accelerator_demand_response.py +123 -0
  42. lightning_sdk/lightning_cloud/openapi/models/v1_job.py +53 -1
  43. lightning_sdk/lightning_cloud/openapi/models/v1_job_spec.py +27 -1
  44. lightning_sdk/lightning_cloud/openapi/models/v1_lambda_labs_direct_v1.py +55 -3
  45. lightning_sdk/lightning_cloud/openapi/models/v1_list_lit_registry_repository_image_artifact_versions_response.py +231 -0
  46. lightning_sdk/lightning_cloud/openapi/models/v1_lit_registry_artifact.py +279 -0
  47. lightning_sdk/lightning_cloud/openapi/models/v1_lit_registry_project.py +8 -0
  48. lightning_sdk/lightning_cloud/openapi/models/v1_lit_repository.py +27 -1
  49. lightning_sdk/lightning_cloud/openapi/models/v1_report_restart_timings_response.py +97 -0
  50. lightning_sdk/lightning_cloud/openapi/models/v1_restart_timing.py +175 -0
  51. lightning_sdk/lightning_cloud/openapi/models/v1_user_features.py +27 -53
  52. lightning_sdk/lightning_cloud/openapi/models/v1_validate_deployment_image_request.py +27 -1
  53. lightning_sdk/machine.py +59 -27
  54. lightning_sdk/studio.py +5 -1
  55. lightning_sdk/teamspace.py +25 -0
  56. {lightning_sdk-0.1.54.dist-info → lightning_sdk-0.1.56.dist-info}/METADATA +2 -1
  57. {lightning_sdk-0.1.54.dist-info → lightning_sdk-0.1.56.dist-info}/RECORD +61 -50
  58. {lightning_sdk-0.1.54.dist-info → lightning_sdk-0.1.56.dist-info}/LICENSE +0 -0
  59. {lightning_sdk-0.1.54.dist-info → lightning_sdk-0.1.56.dist-info}/WHEEL +0 -0
  60. {lightning_sdk-0.1.54.dist-info → lightning_sdk-0.1.56.dist-info}/entry_points.txt +0 -0
  61. {lightning_sdk-0.1.54.dist-info → lightning_sdk-0.1.56.dist-info}/top_level.txt +0 -0
@@ -43,25 +43,30 @@ class UsagerestrictionsIdBody(object):
43
43
  swagger_types = {
44
44
  'instance_type': 'str',
45
45
  'max_instances': 'int',
46
+ 'org_id': 'str',
46
47
  'restriction_type': 'str'
47
48
  }
48
49
 
49
50
  attribute_map = {
50
51
  'instance_type': 'instanceType',
51
52
  'max_instances': 'maxInstances',
53
+ 'org_id': 'orgId',
52
54
  'restriction_type': 'restrictionType'
53
55
  }
54
56
 
55
- def __init__(self, instance_type: 'str' =None, max_instances: 'int' =None, restriction_type: 'str' =None): # noqa: E501
57
+ def __init__(self, instance_type: 'str' =None, max_instances: 'int' =None, org_id: 'str' =None, restriction_type: 'str' =None): # noqa: E501
56
58
  """UsagerestrictionsIdBody - a model defined in Swagger""" # noqa: E501
57
59
  self._instance_type = None
58
60
  self._max_instances = None
61
+ self._org_id = None
59
62
  self._restriction_type = None
60
63
  self.discriminator = None
61
64
  if instance_type is not None:
62
65
  self.instance_type = instance_type
63
66
  if max_instances is not None:
64
67
  self.max_instances = max_instances
68
+ if org_id is not None:
69
+ self.org_id = org_id
65
70
  if restriction_type is not None:
66
71
  self.restriction_type = restriction_type
67
72
 
@@ -107,6 +112,27 @@ class UsagerestrictionsIdBody(object):
107
112
 
108
113
  self._max_instances = max_instances
109
114
 
115
+ @property
116
+ def org_id(self) -> 'str':
117
+ """Gets the org_id of this UsagerestrictionsIdBody. # noqa: E501
118
+
119
+
120
+ :return: The org_id of this UsagerestrictionsIdBody. # noqa: E501
121
+ :rtype: str
122
+ """
123
+ return self._org_id
124
+
125
+ @org_id.setter
126
+ def org_id(self, org_id: 'str'):
127
+ """Sets the org_id of this UsagerestrictionsIdBody.
128
+
129
+
130
+ :param org_id: The org_id of this UsagerestrictionsIdBody. # noqa: E501
131
+ :type: str
132
+ """
133
+
134
+ self._org_id = org_id
135
+
110
136
  @property
111
137
  def restriction_type(self) -> 'str':
112
138
  """Gets the restriction_type of this UsagerestrictionsIdBody. # noqa: E501
@@ -37,9 +37,12 @@ class V1CloudProvider(object):
37
37
  """
38
38
  allowed enum values
39
39
  """
40
+ CLOUD_PROVIDER_UNSPECIFIED = "CLOUD_PROVIDER_UNSPECIFIED"
40
41
  AWS = "AWS"
41
42
  GCP = "GCP"
42
43
  VULTR = "VULTR"
44
+ LAMBDA_LABS = "LAMBDA_LABS"
45
+ SLURM = "SLURM"
43
46
  """
44
47
  Attributes:
45
48
  swagger_types (dict): The key is attribute name
@@ -66,6 +66,7 @@ class V1ClusterAccelerator(object):
66
66
  'local_disk_supported': 'bool',
67
67
  'max_available_quota': 'str',
68
68
  'non_spot': 'bool',
69
+ 'provider': 'V1CloudProvider',
69
70
  'quota_checked_at': 'datetime',
70
71
  'quota_code': 'str',
71
72
  'quota_name': 'str',
@@ -77,6 +78,7 @@ class V1ClusterAccelerator(object):
77
78
  'reservation_available_zones': 'list[str]',
78
79
  'resources': 'V1Resources',
79
80
  'slug': 'str',
81
+ 'slug_multi_cloud': 'str',
80
82
  'spot_price': 'float',
81
83
  'spot_quota_code': 'str',
82
84
  'spot_quota_name': 'str',
@@ -109,6 +111,7 @@ class V1ClusterAccelerator(object):
109
111
  'local_disk_supported': 'localDiskSupported',
110
112
  'max_available_quota': 'maxAvailableQuota',
111
113
  'non_spot': 'nonSpot',
114
+ 'provider': 'provider',
112
115
  'quota_checked_at': 'quotaCheckedAt',
113
116
  'quota_code': 'quotaCode',
114
117
  'quota_name': 'quotaName',
@@ -120,13 +123,14 @@ class V1ClusterAccelerator(object):
120
123
  'reservation_available_zones': 'reservationAvailableZones',
121
124
  'resources': 'resources',
122
125
  'slug': 'slug',
126
+ 'slug_multi_cloud': 'slugMultiCloud',
123
127
  'spot_price': 'spotPrice',
124
128
  'spot_quota_code': 'spotQuotaCode',
125
129
  'spot_quota_name': 'spotQuotaName',
126
130
  'spot_quota_page_url': 'spotQuotaPageUrl'
127
131
  }
128
132
 
129
- def __init__(self, accelerator_type: 'str' =None, allowed_resources: 'list[str]' =None, available_in_seconds: 'str' =None, available_in_seconds_spot: 'str' =None, available_zones: 'list[str]' =None, byoc_only: 'bool' =None, capacity_block_only: 'bool' =None, capacity_block_price: 'float' =None, capacity_blocks_available: 'list[V1ClusterCapacityReservation]' =None, cluster_id: 'str' =None, cost: 'float' =None, detailed_quotas_info: 'list[V1AcceleratorQuotaInfo]' =None, device_card: 'str' =None, device_info: 'str' =None, display_name: 'str' =None, dws_only: 'bool' =None, enabled: 'bool' =None, family: 'str' =None, instance_id: 'str' =None, is_custom: 'bool' =None, is_tier_restricted: 'bool' =None, local_disk_size: 'str' =None, local_disk_supported: 'bool' =None, max_available_quota: 'str' =None, non_spot: 'bool' =None, quota_checked_at: 'datetime' =None, quota_code: 'str' =None, quota_name: 'str' =None, quota_page_url: 'str' =None, quota_service_code: 'str' =None, quota_utilization: 'str' =None, quota_value: 'str' =None, reservable: 'bool' =None, reservation_available_zones: 'list[str]' =None, resources: 'V1Resources' =None, slug: 'str' =None, spot_price: 'float' =None, spot_quota_code: 'str' =None, spot_quota_name: 'str' =None, spot_quota_page_url: 'str' =None): # noqa: E501
133
+ def __init__(self, accelerator_type: 'str' =None, allowed_resources: 'list[str]' =None, available_in_seconds: 'str' =None, available_in_seconds_spot: 'str' =None, available_zones: 'list[str]' =None, byoc_only: 'bool' =None, capacity_block_only: 'bool' =None, capacity_block_price: 'float' =None, capacity_blocks_available: 'list[V1ClusterCapacityReservation]' =None, cluster_id: 'str' =None, cost: 'float' =None, detailed_quotas_info: 'list[V1AcceleratorQuotaInfo]' =None, device_card: 'str' =None, device_info: 'str' =None, display_name: 'str' =None, dws_only: 'bool' =None, enabled: 'bool' =None, family: 'str' =None, instance_id: 'str' =None, is_custom: 'bool' =None, is_tier_restricted: 'bool' =None, local_disk_size: 'str' =None, local_disk_supported: 'bool' =None, max_available_quota: 'str' =None, non_spot: 'bool' =None, provider: 'V1CloudProvider' =None, quota_checked_at: 'datetime' =None, quota_code: 'str' =None, quota_name: 'str' =None, quota_page_url: 'str' =None, quota_service_code: 'str' =None, quota_utilization: 'str' =None, quota_value: 'str' =None, reservable: 'bool' =None, reservation_available_zones: 'list[str]' =None, resources: 'V1Resources' =None, slug: 'str' =None, slug_multi_cloud: 'str' =None, spot_price: 'float' =None, spot_quota_code: 'str' =None, spot_quota_name: 'str' =None, spot_quota_page_url: 'str' =None): # noqa: E501
130
134
  """V1ClusterAccelerator - a model defined in Swagger""" # noqa: E501
131
135
  self._accelerator_type = None
132
136
  self._allowed_resources = None
@@ -153,6 +157,7 @@ class V1ClusterAccelerator(object):
153
157
  self._local_disk_supported = None
154
158
  self._max_available_quota = None
155
159
  self._non_spot = None
160
+ self._provider = None
156
161
  self._quota_checked_at = None
157
162
  self._quota_code = None
158
163
  self._quota_name = None
@@ -164,6 +169,7 @@ class V1ClusterAccelerator(object):
164
169
  self._reservation_available_zones = None
165
170
  self._resources = None
166
171
  self._slug = None
172
+ self._slug_multi_cloud = None
167
173
  self._spot_price = None
168
174
  self._spot_quota_code = None
169
175
  self._spot_quota_name = None
@@ -219,6 +225,8 @@ class V1ClusterAccelerator(object):
219
225
  self.max_available_quota = max_available_quota
220
226
  if non_spot is not None:
221
227
  self.non_spot = non_spot
228
+ if provider is not None:
229
+ self.provider = provider
222
230
  if quota_checked_at is not None:
223
231
  self.quota_checked_at = quota_checked_at
224
232
  if quota_code is not None:
@@ -241,6 +249,8 @@ class V1ClusterAccelerator(object):
241
249
  self.resources = resources
242
250
  if slug is not None:
243
251
  self.slug = slug
252
+ if slug_multi_cloud is not None:
253
+ self.slug_multi_cloud = slug_multi_cloud
244
254
  if spot_price is not None:
245
255
  self.spot_price = spot_price
246
256
  if spot_quota_code is not None:
@@ -775,6 +785,27 @@ class V1ClusterAccelerator(object):
775
785
 
776
786
  self._non_spot = non_spot
777
787
 
788
+ @property
789
+ def provider(self) -> 'V1CloudProvider':
790
+ """Gets the provider of this V1ClusterAccelerator. # noqa: E501
791
+
792
+
793
+ :return: The provider of this V1ClusterAccelerator. # noqa: E501
794
+ :rtype: V1CloudProvider
795
+ """
796
+ return self._provider
797
+
798
+ @provider.setter
799
+ def provider(self, provider: 'V1CloudProvider'):
800
+ """Sets the provider of this V1ClusterAccelerator.
801
+
802
+
803
+ :param provider: The provider of this V1ClusterAccelerator. # noqa: E501
804
+ :type: V1CloudProvider
805
+ """
806
+
807
+ self._provider = provider
808
+
778
809
  @property
779
810
  def quota_checked_at(self) -> 'datetime':
780
811
  """Gets the quota_checked_at of this V1ClusterAccelerator. # noqa: E501
@@ -1006,6 +1037,27 @@ class V1ClusterAccelerator(object):
1006
1037
 
1007
1038
  self._slug = slug
1008
1039
 
1040
+ @property
1041
+ def slug_multi_cloud(self) -> 'str':
1042
+ """Gets the slug_multi_cloud of this V1ClusterAccelerator. # noqa: E501
1043
+
1044
+
1045
+ :return: The slug_multi_cloud of this V1ClusterAccelerator. # noqa: E501
1046
+ :rtype: str
1047
+ """
1048
+ return self._slug_multi_cloud
1049
+
1050
+ @slug_multi_cloud.setter
1051
+ def slug_multi_cloud(self, slug_multi_cloud: 'str'):
1052
+ """Sets the slug_multi_cloud of this V1ClusterAccelerator.
1053
+
1054
+
1055
+ :param slug_multi_cloud: The slug_multi_cloud of this V1ClusterAccelerator. # noqa: E501
1056
+ :type: str
1057
+ """
1058
+
1059
+ self._slug_multi_cloud = slug_multi_cloud
1060
+
1009
1061
  @property
1010
1062
  def spot_price(self) -> 'float':
1011
1063
  """Gets the spot_price of this V1ClusterAccelerator. # 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 V1GetClusterAcceleratorDemandResponse(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
+ 'num_waiting': 'str'
45
+ }
46
+
47
+ attribute_map = {
48
+ 'num_waiting': 'numWaiting'
49
+ }
50
+
51
+ def __init__(self, num_waiting: 'str' =None): # noqa: E501
52
+ """V1GetClusterAcceleratorDemandResponse - a model defined in Swagger""" # noqa: E501
53
+ self._num_waiting = None
54
+ self.discriminator = None
55
+ if num_waiting is not None:
56
+ self.num_waiting = num_waiting
57
+
58
+ @property
59
+ def num_waiting(self) -> 'str':
60
+ """Gets the num_waiting of this V1GetClusterAcceleratorDemandResponse. # noqa: E501
61
+
62
+
63
+ :return: The num_waiting of this V1GetClusterAcceleratorDemandResponse. # noqa: E501
64
+ :rtype: str
65
+ """
66
+ return self._num_waiting
67
+
68
+ @num_waiting.setter
69
+ def num_waiting(self, num_waiting: 'str'):
70
+ """Sets the num_waiting of this V1GetClusterAcceleratorDemandResponse.
71
+
72
+
73
+ :param num_waiting: The num_waiting of this V1GetClusterAcceleratorDemandResponse. # noqa: E501
74
+ :type: str
75
+ """
76
+
77
+ self._num_waiting = num_waiting
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(V1GetClusterAcceleratorDemandResponse, 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: 'V1GetClusterAcceleratorDemandResponse') -> bool:
115
+ """Returns true if both objects are equal"""
116
+ if not isinstance(other, V1GetClusterAcceleratorDemandResponse):
117
+ return False
118
+
119
+ return self.__dict__ == other.__dict__
120
+
121
+ def __ne__(self, other: 'V1GetClusterAcceleratorDemandResponse') -> bool:
122
+ """Returns true if both objects are not equal"""
123
+ return not self == other
@@ -53,6 +53,8 @@ class V1Job(object):
53
53
  'project_id': 'str',
54
54
  'ready_at': 'datetime',
55
55
  'release_id': 'str',
56
+ 'restart_count': 'int',
57
+ 'restart_timings': 'list[V1RestartTiming]',
56
58
  'server_error': 'str',
57
59
  'spec': 'V1JobSpec',
58
60
  'started_at': 'datetime',
@@ -80,6 +82,8 @@ class V1Job(object):
80
82
  'project_id': 'projectId',
81
83
  'ready_at': 'readyAt',
82
84
  'release_id': 'releaseId',
85
+ 'restart_count': 'restartCount',
86
+ 'restart_timings': 'restartTimings',
83
87
  'server_error': 'serverError',
84
88
  'spec': 'spec',
85
89
  'started_at': 'startedAt',
@@ -94,7 +98,7 @@ class V1Job(object):
94
98
  'user_logs_started_at': 'userLogsStartedAt'
95
99
  }
96
100
 
97
- def __init__(self, created_at: 'datetime' =None, deployment_id: 'str' =None, endpoint: 'V1Endpoint' =None, id: 'str' =None, is_healthy: 'bool' =None, message: 'str' =None, multi_machine_job_id: 'str' =None, name: 'str' =None, overprovisioned: 'bool' =None, project_id: 'str' =None, ready_at: 'datetime' =None, release_id: 'str' =None, server_error: 'str' =None, spec: 'V1JobSpec' =None, started_at: 'datetime' =None, state: 'str' =None, stopped_at: 'datetime' =None, timings: 'dict(str, V1JobTiming)' =None, total_cost: 'float' =None, total_size_bytes: 'str' =None, updated_at: 'datetime' =None, urls: 'list[str]' =None, user_id: 'str' =None, user_logs_started_at: 'datetime' =None): # noqa: E501
101
+ def __init__(self, created_at: 'datetime' =None, deployment_id: 'str' =None, endpoint: 'V1Endpoint' =None, id: 'str' =None, is_healthy: 'bool' =None, message: 'str' =None, multi_machine_job_id: 'str' =None, name: 'str' =None, overprovisioned: 'bool' =None, project_id: 'str' =None, ready_at: 'datetime' =None, release_id: 'str' =None, restart_count: 'int' =None, restart_timings: 'list[V1RestartTiming]' =None, server_error: 'str' =None, spec: 'V1JobSpec' =None, started_at: 'datetime' =None, state: 'str' =None, stopped_at: 'datetime' =None, timings: 'dict(str, V1JobTiming)' =None, total_cost: 'float' =None, total_size_bytes: 'str' =None, updated_at: 'datetime' =None, urls: 'list[str]' =None, user_id: 'str' =None, user_logs_started_at: 'datetime' =None): # noqa: E501
98
102
  """V1Job - a model defined in Swagger""" # noqa: E501
99
103
  self._created_at = None
100
104
  self._deployment_id = None
@@ -108,6 +112,8 @@ class V1Job(object):
108
112
  self._project_id = None
109
113
  self._ready_at = None
110
114
  self._release_id = None
115
+ self._restart_count = None
116
+ self._restart_timings = None
111
117
  self._server_error = None
112
118
  self._spec = None
113
119
  self._started_at = None
@@ -145,6 +151,10 @@ class V1Job(object):
145
151
  self.ready_at = ready_at
146
152
  if release_id is not None:
147
153
  self.release_id = release_id
154
+ if restart_count is not None:
155
+ self.restart_count = restart_count
156
+ if restart_timings is not None:
157
+ self.restart_timings = restart_timings
148
158
  if server_error is not None:
149
159
  self.server_error = server_error
150
160
  if spec is not None:
@@ -424,6 +434,48 @@ class V1Job(object):
424
434
 
425
435
  self._release_id = release_id
426
436
 
437
+ @property
438
+ def restart_count(self) -> 'int':
439
+ """Gets the restart_count of this V1Job. # noqa: E501
440
+
441
+
442
+ :return: The restart_count of this V1Job. # noqa: E501
443
+ :rtype: int
444
+ """
445
+ return self._restart_count
446
+
447
+ @restart_count.setter
448
+ def restart_count(self, restart_count: 'int'):
449
+ """Sets the restart_count of this V1Job.
450
+
451
+
452
+ :param restart_count: The restart_count of this V1Job. # noqa: E501
453
+ :type: int
454
+ """
455
+
456
+ self._restart_count = restart_count
457
+
458
+ @property
459
+ def restart_timings(self) -> 'list[V1RestartTiming]':
460
+ """Gets the restart_timings of this V1Job. # noqa: E501
461
+
462
+
463
+ :return: The restart_timings of this V1Job. # noqa: E501
464
+ :rtype: list[V1RestartTiming]
465
+ """
466
+ return self._restart_timings
467
+
468
+ @restart_timings.setter
469
+ def restart_timings(self, restart_timings: 'list[V1RestartTiming]'):
470
+ """Sets the restart_timings of this V1Job.
471
+
472
+
473
+ :param restart_timings: The restart_timings of this V1Job. # noqa: E501
474
+ :type: list[V1RestartTiming]
475
+ """
476
+
477
+ self._restart_timings = restart_timings
478
+
427
479
  @property
428
480
  def server_error(self) -> 'str':
429
481
  """Gets the server_error of this V1Job. # noqa: E501
@@ -59,6 +59,7 @@ class V1JobSpec(object):
59
59
  'path_mappings': 'list[V1PathMapping]',
60
60
  'readiness_probe': 'V1JobHealthCheckConfig',
61
61
  'regions': 'list[str]',
62
+ 'requested_run_duration_seconds': 'str',
62
63
  'resources': 'V1Resources',
63
64
  'restart_policy': 'str',
64
65
  'run_id': 'str',
@@ -85,6 +86,7 @@ class V1JobSpec(object):
85
86
  'path_mappings': 'pathMappings',
86
87
  'readiness_probe': 'readinessProbe',
87
88
  'regions': 'regions',
89
+ 'requested_run_duration_seconds': 'requestedRunDurationSeconds',
88
90
  'resources': 'resources',
89
91
  'restart_policy': 'restartPolicy',
90
92
  'run_id': 'runId',
@@ -92,7 +94,7 @@ class V1JobSpec(object):
92
94
  'volumes': 'volumes'
93
95
  }
94
96
 
95
- def __init__(self, artifacts_destination: 'str' =None, artifacts_source: 'str' =None, cloudspace_id: 'str' =None, cluster_id: 'str' =None, command: 'str' =None, data_paths: 'list[V1DataPath]' =None, entrypoint: 'str' =None, env: 'list[V1EnvVar]' =None, image: 'str' =None, image_cluster_credentials: 'bool' =None, image_secret_ref: 'str' =None, include_credentials: 'bool' =None, instance_name: 'str' =None, instance_type: 'str' =None, modified_volume: 'bool' =None, path_mappings: 'list[V1PathMapping]' =None, readiness_probe: 'V1JobHealthCheckConfig' =None, regions: 'list[str]' =None, resources: 'V1Resources' =None, restart_policy: 'str' =None, run_id: 'str' =None, spot: 'bool' =None, volumes: 'list[V1Volume]' =None): # noqa: E501
97
+ def __init__(self, artifacts_destination: 'str' =None, artifacts_source: 'str' =None, cloudspace_id: 'str' =None, cluster_id: 'str' =None, command: 'str' =None, data_paths: 'list[V1DataPath]' =None, entrypoint: 'str' =None, env: 'list[V1EnvVar]' =None, image: 'str' =None, image_cluster_credentials: 'bool' =None, image_secret_ref: 'str' =None, include_credentials: 'bool' =None, instance_name: 'str' =None, instance_type: 'str' =None, modified_volume: 'bool' =None, path_mappings: 'list[V1PathMapping]' =None, readiness_probe: 'V1JobHealthCheckConfig' =None, regions: 'list[str]' =None, requested_run_duration_seconds: 'str' =None, resources: 'V1Resources' =None, restart_policy: 'str' =None, run_id: 'str' =None, spot: 'bool' =None, volumes: 'list[V1Volume]' =None): # noqa: E501
96
98
  """V1JobSpec - a model defined in Swagger""" # noqa: E501
97
99
  self._artifacts_destination = None
98
100
  self._artifacts_source = None
@@ -112,6 +114,7 @@ class V1JobSpec(object):
112
114
  self._path_mappings = None
113
115
  self._readiness_probe = None
114
116
  self._regions = None
117
+ self._requested_run_duration_seconds = None
115
118
  self._resources = None
116
119
  self._restart_policy = None
117
120
  self._run_id = None
@@ -154,6 +157,8 @@ class V1JobSpec(object):
154
157
  self.readiness_probe = readiness_probe
155
158
  if regions is not None:
156
159
  self.regions = regions
160
+ if requested_run_duration_seconds is not None:
161
+ self.requested_run_duration_seconds = requested_run_duration_seconds
157
162
  if resources is not None:
158
163
  self.resources = resources
159
164
  if restart_policy is not None:
@@ -543,6 +548,27 @@ class V1JobSpec(object):
543
548
 
544
549
  self._regions = regions
545
550
 
551
+ @property
552
+ def requested_run_duration_seconds(self) -> 'str':
553
+ """Gets the requested_run_duration_seconds of this V1JobSpec. # noqa: E501
554
+
555
+
556
+ :return: The requested_run_duration_seconds of this V1JobSpec. # noqa: E501
557
+ :rtype: str
558
+ """
559
+ return self._requested_run_duration_seconds
560
+
561
+ @requested_run_duration_seconds.setter
562
+ def requested_run_duration_seconds(self, requested_run_duration_seconds: 'str'):
563
+ """Sets the requested_run_duration_seconds of this V1JobSpec.
564
+
565
+
566
+ :param requested_run_duration_seconds: The requested_run_duration_seconds of this V1JobSpec. # noqa: E501
567
+ :type: str
568
+ """
569
+
570
+ self._requested_run_duration_seconds = requested_run_duration_seconds
571
+
546
572
  @property
547
573
  def resources(self) -> 'V1Resources':
548
574
  """Gets the resources of this V1JobSpec. # noqa: E501
@@ -42,23 +42,33 @@ class V1LambdaLabsDirectV1(object):
42
42
  """
43
43
  swagger_types = {
44
44
  'credentials_secret_id': 'str',
45
- 'parent_cluster_id': 'str'
45
+ 'parent_cluster_id': 'str',
46
+ 'primary_region': 'str',
47
+ 'regions': 'list[str]'
46
48
  }
47
49
 
48
50
  attribute_map = {
49
51
  'credentials_secret_id': 'credentialsSecretId',
50
- 'parent_cluster_id': 'parentClusterId'
52
+ 'parent_cluster_id': 'parentClusterId',
53
+ 'primary_region': 'primaryRegion',
54
+ 'regions': 'regions'
51
55
  }
52
56
 
53
- def __init__(self, credentials_secret_id: 'str' =None, parent_cluster_id: 'str' =None): # noqa: E501
57
+ def __init__(self, credentials_secret_id: 'str' =None, parent_cluster_id: 'str' =None, primary_region: 'str' =None, regions: 'list[str]' =None): # noqa: E501
54
58
  """V1LambdaLabsDirectV1 - a model defined in Swagger""" # noqa: E501
55
59
  self._credentials_secret_id = None
56
60
  self._parent_cluster_id = None
61
+ self._primary_region = None
62
+ self._regions = None
57
63
  self.discriminator = None
58
64
  if credentials_secret_id is not None:
59
65
  self.credentials_secret_id = credentials_secret_id
60
66
  if parent_cluster_id is not None:
61
67
  self.parent_cluster_id = parent_cluster_id
68
+ if primary_region is not None:
69
+ self.primary_region = primary_region
70
+ if regions is not None:
71
+ self.regions = regions
62
72
 
63
73
  @property
64
74
  def credentials_secret_id(self) -> 'str':
@@ -106,6 +116,48 @@ class V1LambdaLabsDirectV1(object):
106
116
 
107
117
  self._parent_cluster_id = parent_cluster_id
108
118
 
119
+ @property
120
+ def primary_region(self) -> 'str':
121
+ """Gets the primary_region of this V1LambdaLabsDirectV1. # noqa: E501
122
+
123
+
124
+ :return: The primary_region of this V1LambdaLabsDirectV1. # noqa: E501
125
+ :rtype: str
126
+ """
127
+ return self._primary_region
128
+
129
+ @primary_region.setter
130
+ def primary_region(self, primary_region: 'str'):
131
+ """Sets the primary_region of this V1LambdaLabsDirectV1.
132
+
133
+
134
+ :param primary_region: The primary_region of this V1LambdaLabsDirectV1. # noqa: E501
135
+ :type: str
136
+ """
137
+
138
+ self._primary_region = primary_region
139
+
140
+ @property
141
+ def regions(self) -> 'list[str]':
142
+ """Gets the regions of this V1LambdaLabsDirectV1. # noqa: E501
143
+
144
+
145
+ :return: The regions of this V1LambdaLabsDirectV1. # noqa: E501
146
+ :rtype: list[str]
147
+ """
148
+ return self._regions
149
+
150
+ @regions.setter
151
+ def regions(self, regions: 'list[str]'):
152
+ """Sets the regions of this V1LambdaLabsDirectV1.
153
+
154
+
155
+ :param regions: The regions of this V1LambdaLabsDirectV1. # noqa: E501
156
+ :type: list[str]
157
+ """
158
+
159
+ self._regions = regions
160
+
109
161
  def to_dict(self) -> dict:
110
162
  """Returns the model properties as a dict"""
111
163
  result = {}