lightning-sdk 0.1.2__py3-none-any.whl → 0.1.46__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 (521) hide show
  1. lightning_sdk/__init__.py +12 -2
  2. lightning_sdk/agents.py +46 -0
  3. lightning_sdk/ai_hub.py +185 -0
  4. lightning_sdk/api/__init__.py +4 -0
  5. lightning_sdk/api/agents_api.py +107 -0
  6. lightning_sdk/api/ai_hub_api.py +130 -0
  7. lightning_sdk/api/deployment_api.py +574 -0
  8. lightning_sdk/api/job_api.py +308 -0
  9. lightning_sdk/api/mmt_api.py +188 -0
  10. lightning_sdk/api/org_api.py +1 -3
  11. lightning_sdk/api/studio_api.py +174 -83
  12. lightning_sdk/api/teamspace_api.py +219 -20
  13. lightning_sdk/api/user_api.py +24 -9
  14. lightning_sdk/api/utils.py +429 -47
  15. lightning_sdk/cli/ai_hub.py +49 -0
  16. lightning_sdk/cli/download.py +132 -0
  17. lightning_sdk/cli/entrypoint.py +11 -3
  18. lightning_sdk/cli/run.py +206 -0
  19. lightning_sdk/cli/serve.py +218 -0
  20. lightning_sdk/cli/studios_menu.py +78 -0
  21. lightning_sdk/cli/upload.py +79 -89
  22. lightning_sdk/constants.py +29 -1
  23. lightning_sdk/deployment/__init__.py +25 -0
  24. lightning_sdk/deployment/deployment.py +389 -0
  25. lightning_sdk/helpers.py +49 -0
  26. lightning_sdk/job/__init__.py +5 -0
  27. lightning_sdk/job/base.py +295 -0
  28. lightning_sdk/job/job.py +266 -0
  29. lightning_sdk/job/v1.py +241 -0
  30. lightning_sdk/job/v2.py +193 -0
  31. lightning_sdk/job/work.py +72 -0
  32. lightning_sdk/lightning_cloud/__version__.py +1 -1
  33. lightning_sdk/lightning_cloud/cli/__main__.py +15 -13
  34. lightning_sdk/lightning_cloud/env.py +1 -0
  35. lightning_sdk/lightning_cloud/login.py +12 -8
  36. lightning_sdk/lightning_cloud/openapi/__init__.py +314 -43
  37. lightning_sdk/lightning_cloud/openapi/api/__init__.py +10 -0
  38. lightning_sdk/lightning_cloud/openapi/api/analytics_service_api.py +141 -0
  39. lightning_sdk/lightning_cloud/openapi/api/assistants_service_api.py +1075 -227
  40. lightning_sdk/lightning_cloud/openapi/api/billing_service_api.py +9 -1
  41. lightning_sdk/lightning_cloud/openapi/api/cloud_space_service_api.py +3115 -895
  42. lightning_sdk/lightning_cloud/openapi/api/cluster_service_api.py +908 -141
  43. lightning_sdk/lightning_cloud/openapi/api/data_connection_service_api.py +10 -5
  44. lightning_sdk/lightning_cloud/openapi/api/deployment_templates_service_api.py +756 -0
  45. lightning_sdk/lightning_cloud/openapi/api/endpoint_service_api.py +1658 -159
  46. lightning_sdk/lightning_cloud/openapi/api/experiments_service_api.py +242 -0
  47. lightning_sdk/lightning_cloud/openapi/api/file_system_service_api.py +674 -0
  48. lightning_sdk/lightning_cloud/openapi/api/jobs_service_api.py +3823 -0
  49. lightning_sdk/lightning_cloud/openapi/api/lightningapp_instance_service_api.py +158 -590
  50. lightning_sdk/lightning_cloud/openapi/api/lightningapp_v2_service_api.py +0 -1086
  51. lightning_sdk/lightning_cloud/openapi/api/lightningwork_service_api.py +113 -0
  52. lightning_sdk/lightning_cloud/openapi/api/lit_logger_service_api.py +1753 -0
  53. lightning_sdk/lightning_cloud/openapi/api/lit_registry_service_api.py +242 -0
  54. lightning_sdk/lightning_cloud/openapi/api/models_store_api.py +1423 -108
  55. lightning_sdk/lightning_cloud/openapi/api/organizations_service_api.py +421 -1
  56. lightning_sdk/lightning_cloud/openapi/api/profiler_service_api.py +663 -0
  57. lightning_sdk/lightning_cloud/openapi/api/projects_service_api.py +5 -1
  58. lightning_sdk/lightning_cloud/openapi/api/secret_service_api.py +478 -1
  59. lightning_sdk/lightning_cloud/openapi/api/slurm_jobs_user_service_api.py +9 -5
  60. lightning_sdk/lightning_cloud/openapi/api/snowflake_service_api.py +686 -0
  61. lightning_sdk/lightning_cloud/openapi/api/storage_service_api.py +1094 -0
  62. lightning_sdk/lightning_cloud/openapi/api/studio_jobs_service_api.py +4 -4
  63. lightning_sdk/lightning_cloud/openapi/api/user_service_api.py +1081 -34
  64. lightning_sdk/lightning_cloud/openapi/models/__init__.py +304 -41
  65. lightning_sdk/lightning_cloud/openapi/models/affiliatelinks_id_body.py +149 -0
  66. lightning_sdk/lightning_cloud/openapi/models/agentmanagedendpoints_id_body.py +305 -0
  67. lightning_sdk/lightning_cloud/openapi/models/agents_id_body.py +643 -0
  68. lightning_sdk/lightning_cloud/openapi/models/app_id_works_body.py +149 -0
  69. lightning_sdk/lightning_cloud/openapi/models/approveautojoindomain_domain_body.py +123 -0
  70. lightning_sdk/lightning_cloud/openapi/models/apps_id_body1.py +107 -3
  71. lightning_sdk/lightning_cloud/openapi/models/assistant_id_conversations_body.py +1 -27
  72. lightning_sdk/lightning_cloud/openapi/models/{v1_get_cluster_health_response.py → captures_id_body.py} +16 -16
  73. lightning_sdk/lightning_cloud/openapi/models/cloud_space_id_versionpublications_body.py +175 -0
  74. lightning_sdk/lightning_cloud/openapi/models/cloud_space_id_versionpublications_body1.py +175 -0
  75. lightning_sdk/lightning_cloud/openapi/models/cloud_space_id_versions_body.py +409 -0
  76. lightning_sdk/lightning_cloud/openapi/models/cloudspace_id_runs_body.py +27 -1
  77. lightning_sdk/lightning_cloud/openapi/models/cloudspaces_id_body.py +84 -6
  78. lightning_sdk/lightning_cloud/openapi/models/cluster_id_capacityblock_body.py +253 -0
  79. lightning_sdk/lightning_cloud/openapi/models/cluster_id_capacityreservations_body.py +55 -3
  80. lightning_sdk/lightning_cloud/openapi/models/cluster_id_proxies_body.py +123 -0
  81. lightning_sdk/lightning_cloud/openapi/models/clusters_id_body.py +27 -1
  82. lightning_sdk/lightning_cloud/openapi/models/create.py +157 -1
  83. lightning_sdk/lightning_cloud/openapi/models/create_deployment_request_defines_a_spec_for_the_job_that_allows_for_autoscaling_jobs.py +383 -0
  84. lightning_sdk/lightning_cloud/openapi/models/deployments_id_body.py +565 -0
  85. lightning_sdk/lightning_cloud/openapi/models/deploymenttemplates_id_body.py +513 -0
  86. lightning_sdk/lightning_cloud/openapi/models/endpoints_id_body.py +43 -17
  87. lightning_sdk/lightning_cloud/openapi/models/experiment_name_variant_name_body.py +123 -0
  88. lightning_sdk/lightning_cloud/openapi/models/externalv1_cloud_space_instance_status.py +107 -1
  89. lightning_sdk/lightning_cloud/openapi/models/externalv1_lightningapp_instance.py +27 -1
  90. lightning_sdk/lightning_cloud/openapi/models/externalv1_user_status.py +27 -1
  91. lightning_sdk/lightning_cloud/openapi/models/fileendpoints_id_body.py +131 -1
  92. lightning_sdk/lightning_cloud/openapi/models/id_codeconfig_body.py +29 -55
  93. lightning_sdk/lightning_cloud/openapi/models/id_complete_body.py +175 -0
  94. lightning_sdk/lightning_cloud/openapi/models/id_engage_body.py +3 -29
  95. lightning_sdk/lightning_cloud/openapi/models/id_engage_body1.py +149 -0
  96. lightning_sdk/lightning_cloud/openapi/models/id_execute_body.py +3 -55
  97. lightning_sdk/lightning_cloud/openapi/models/id_execute_body1.py +175 -0
  98. lightning_sdk/lightning_cloud/openapi/models/id_fork_body.py +31 -31
  99. lightning_sdk/lightning_cloud/openapi/models/id_fork_body1.py +175 -0
  100. lightning_sdk/lightning_cloud/openapi/models/id_get_body.py +133 -3
  101. lightning_sdk/lightning_cloud/openapi/models/id_index_body.py +67 -15
  102. lightning_sdk/lightning_cloud/openapi/models/id_index_body2.py +123 -0
  103. lightning_sdk/lightning_cloud/openapi/models/id_index_body3.py +175 -0
  104. lightning_sdk/lightning_cloud/openapi/models/id_reportlogsactivity_body.py +123 -0
  105. lightning_sdk/lightning_cloud/openapi/models/id_start_body.py +29 -3
  106. lightning_sdk/lightning_cloud/openapi/models/id_storage_body.py +175 -0
  107. lightning_sdk/lightning_cloud/openapi/models/id_uploads_body1.py +175 -0
  108. lightning_sdk/lightning_cloud/openapi/models/id_visibility_body.py +123 -0
  109. lightning_sdk/lightning_cloud/openapi/models/jobs_id_body1.py +27 -1
  110. lightning_sdk/lightning_cloud/openapi/models/jobs_id_body2.py +17 -43
  111. lightning_sdk/lightning_cloud/openapi/models/jobs_id_body3.py +149 -0
  112. lightning_sdk/lightning_cloud/openapi/models/litloggermetrics_id_body.py +175 -0
  113. lightning_sdk/lightning_cloud/openapi/models/litpages_id_body.py +27 -1
  114. lightning_sdk/lightning_cloud/openapi/models/loggermetrics_id_body.py +123 -0
  115. lightning_sdk/lightning_cloud/openapi/models/metrics_stream_id_loggerartifacts_body.py +123 -0
  116. lightning_sdk/lightning_cloud/openapi/models/metricsstream_create_body.py +383 -0
  117. lightning_sdk/lightning_cloud/openapi/models/{v1_cloud_space_id_list.py → metricsstream_delete_body.py} +10 -10
  118. lightning_sdk/lightning_cloud/openapi/models/metricsstream_id_body.py +175 -0
  119. lightning_sdk/lightning_cloud/openapi/models/{v1_upload_model_response.py → model_id_versions_body.py} +25 -51
  120. lightning_sdk/lightning_cloud/openapi/models/model_id_visibility_body.py +123 -0
  121. lightning_sdk/lightning_cloud/openapi/models/models_model_id_body.py +149 -0
  122. lightning_sdk/lightning_cloud/openapi/models/multimachinejobs_id_body.py +123 -0
  123. lightning_sdk/lightning_cloud/openapi/models/org_id_memberships_body.py +27 -1
  124. lightning_sdk/lightning_cloud/openapi/models/orgs_id_body.py +183 -1
  125. lightning_sdk/lightning_cloud/openapi/models/profiler_captures_body.py +279 -0
  126. lightning_sdk/lightning_cloud/openapi/models/profiler_enabled_body.py +149 -0
  127. lightning_sdk/lightning_cloud/openapi/models/project_id_agentmanagedendpoints_body.py +149 -0
  128. lightning_sdk/lightning_cloud/openapi/models/{project_id_assistants_body.py → project_id_agents_body.py} +181 -51
  129. lightning_sdk/lightning_cloud/openapi/models/project_id_cloudspaces_body.py +71 -19
  130. lightning_sdk/lightning_cloud/openapi/models/project_id_fileendpoints_body.py +79 -1
  131. lightning_sdk/lightning_cloud/openapi/models/project_id_jobs_body.py +175 -0
  132. lightning_sdk/lightning_cloud/openapi/models/project_id_litregistry_body.py +123 -0
  133. lightning_sdk/lightning_cloud/openapi/models/project_id_memberships_body.py +53 -1
  134. lightning_sdk/lightning_cloud/openapi/models/{v1_upload_model_request.py → project_id_models_body.py} +70 -70
  135. lightning_sdk/lightning_cloud/openapi/models/project_id_multimachinejobs_body.py +227 -0
  136. lightning_sdk/lightning_cloud/openapi/models/project_id_secrets_body.py +27 -1
  137. lightning_sdk/lightning_cloud/openapi/models/project_id_serviceexecution_body.py +175 -0
  138. lightning_sdk/lightning_cloud/openapi/models/project_id_snowflake_body.py +123 -0
  139. lightning_sdk/lightning_cloud/openapi/models/projects_id_body.py +29 -3
  140. lightning_sdk/lightning_cloud/openapi/models/query_query_id_body.py +175 -0
  141. lightning_sdk/lightning_cloud/openapi/models/secrets_id_body1.py +123 -0
  142. lightning_sdk/lightning_cloud/openapi/models/servers_server_id_body.py +123 -0
  143. lightning_sdk/lightning_cloud/openapi/models/service_artifact_artifact_kind.py +104 -0
  144. lightning_sdk/lightning_cloud/openapi/models/serviceexecution_id_body.py +331 -0
  145. lightning_sdk/lightning_cloud/openapi/models/slurm_jobs_body.py +79 -1
  146. lightning_sdk/lightning_cloud/openapi/models/snowflake_export_body.py +305 -0
  147. lightning_sdk/lightning_cloud/openapi/models/{v1_download_model_response.py → snowflake_query_body.py} +51 -51
  148. lightning_sdk/lightning_cloud/openapi/models/storage_complete_body.py +27 -1
  149. lightning_sdk/lightning_cloud/openapi/models/update.py +105 -1
  150. lightning_sdk/lightning_cloud/openapi/models/upload_id_complete_body.py +149 -0
  151. lightning_sdk/lightning_cloud/openapi/models/upload_id_parts_body.py +149 -0
  152. lightning_sdk/lightning_cloud/openapi/models/user_id_affiliatelinks_body.py +149 -0
  153. lightning_sdk/lightning_cloud/openapi/models/v1_accelerator_quota_info.py +201 -0
  154. lightning_sdk/lightning_cloud/openapi/models/v1_ack_user_storage_violation_response.py +97 -0
  155. lightning_sdk/lightning_cloud/openapi/models/v1_add_job_timing_response.py +97 -0
  156. lightning_sdk/lightning_cloud/openapi/models/v1_affiliate_link.py +435 -0
  157. lightning_sdk/lightning_cloud/openapi/models/v1_agent_job.py +131 -1
  158. lightning_sdk/lightning_cloud/openapi/models/v1_api_pricing_spec.py +149 -0
  159. lightning_sdk/lightning_cloud/openapi/models/v1_app_type.py +104 -0
  160. lightning_sdk/lightning_cloud/openapi/models/v1_append_logger_metrics_response.py +97 -0
  161. lightning_sdk/lightning_cloud/openapi/models/v1_approve_auto_join_domain_response.py +123 -0
  162. lightning_sdk/lightning_cloud/openapi/models/v1_assign_variant_response.py +97 -0
  163. lightning_sdk/lightning_cloud/openapi/models/v1_assistant.py +157 -1
  164. lightning_sdk/lightning_cloud/openapi/models/v1_assistant_knowledge_item_status.py +253 -0
  165. lightning_sdk/lightning_cloud/openapi/models/v1_assistant_knowledge_status.py +123 -0
  166. lightning_sdk/lightning_cloud/openapi/models/v1_assistant_model_status.py +104 -0
  167. lightning_sdk/lightning_cloud/openapi/models/v1_auto_join_domain_validation.py +175 -0
  168. lightning_sdk/lightning_cloud/openapi/models/v1_auto_join_org_response.py +149 -0
  169. lightning_sdk/lightning_cloud/openapi/models/v1_autoscaling_spec.py +305 -0
  170. lightning_sdk/lightning_cloud/openapi/models/v1_autoscaling_target_metric.py +149 -0
  171. lightning_sdk/lightning_cloud/openapi/models/v1_aws_direct_v1.py +133 -3
  172. lightning_sdk/lightning_cloud/openapi/models/v1_batch_update_lightningwork_response.py +97 -0
  173. lightning_sdk/lightning_cloud/openapi/models/v1_body.py +123 -0
  174. lightning_sdk/lightning_cloud/openapi/models/v1_cancellation_metadata.py +149 -0
  175. lightning_sdk/lightning_cloud/openapi/models/v1_capacity_block_offering.py +383 -0
  176. lightning_sdk/lightning_cloud/openapi/models/v1_check_snowflake_connection_response.py +123 -0
  177. lightning_sdk/lightning_cloud/openapi/models/v1_checkbox.py +201 -0
  178. lightning_sdk/lightning_cloud/openapi/models/v1_cloud_space.py +162 -6
  179. lightning_sdk/lightning_cloud/openapi/models/v1_cloud_space_code_version.py +383 -0
  180. lightning_sdk/lightning_cloud/openapi/models/v1_cloud_space_code_version_status.py +105 -0
  181. lightning_sdk/lightning_cloud/openapi/models/v1_cloud_space_instance_config.py +1 -53
  182. lightning_sdk/lightning_cloud/openapi/models/v1_cloud_space_instance_startup_status.py +79 -1
  183. lightning_sdk/lightning_cloud/openapi/models/{v1_cluster_log_service.py → v1_cloud_space_session.py} +49 -49
  184. lightning_sdk/lightning_cloud/openapi/models/v1_cloud_space_version.py +669 -0
  185. lightning_sdk/lightning_cloud/openapi/models/v1_cloud_space_version_publication.py +201 -0
  186. lightning_sdk/lightning_cloud/openapi/models/v1_cluster_accelerator.py +445 -3
  187. lightning_sdk/lightning_cloud/openapi/models/v1_cluster_capacity_reservation.py +55 -3
  188. lightning_sdk/lightning_cloud/openapi/models/v1_cluster_names.py +123 -0
  189. lightning_sdk/lightning_cloud/openapi/models/v1_cluster_proxy.py +201 -0
  190. lightning_sdk/lightning_cloud/openapi/models/v1_cluster_resource_tag.py +149 -0
  191. lightning_sdk/lightning_cloud/openapi/models/v1_cluster_security_options.py +357 -0
  192. lightning_sdk/lightning_cloud/openapi/models/v1_cluster_spec.py +157 -107
  193. lightning_sdk/lightning_cloud/openapi/models/v1_cluster_state.py +1 -0
  194. lightning_sdk/lightning_cloud/openapi/models/v1_cluster_status.py +17 -43
  195. lightning_sdk/lightning_cloud/openapi/models/v1_cluster_tagging_options.py +175 -0
  196. lightning_sdk/lightning_cloud/openapi/models/v1_cluster_type.py +0 -1
  197. lightning_sdk/lightning_cloud/openapi/models/v1_command_argument.py +131 -1
  198. lightning_sdk/lightning_cloud/openapi/models/v1_complete_model_upload_response.py +97 -0
  199. lightning_sdk/lightning_cloud/openapi/models/v1_complete_multi_part_upload_response.py +97 -0
  200. lightning_sdk/lightning_cloud/openapi/models/v1_complete_upload_service_execution_artifact_response.py +97 -0
  201. lightning_sdk/lightning_cloud/openapi/models/v1_completed_part.py +149 -0
  202. lightning_sdk/lightning_cloud/openapi/models/v1_conversation.py +15 -15
  203. lightning_sdk/lightning_cloud/openapi/models/v1_conversation_response_chunk.py +26 -26
  204. lightning_sdk/lightning_cloud/openapi/models/v1_count_metrics_streams_response.py +123 -0
  205. lightning_sdk/lightning_cloud/openapi/models/v1_create_checkout_session_request.py +53 -1
  206. lightning_sdk/lightning_cloud/openapi/models/v1_create_cluster_request.py +27 -1
  207. lightning_sdk/lightning_cloud/openapi/models/v1_create_deployment_template_request.py +539 -0
  208. lightning_sdk/lightning_cloud/openapi/models/v1_create_multi_part_upload_response.py +123 -0
  209. lightning_sdk/lightning_cloud/openapi/models/v1_create_organization_request.py +159 -3
  210. lightning_sdk/lightning_cloud/openapi/models/v1_create_project_request.py +27 -1
  211. lightning_sdk/lightning_cloud/openapi/models/v1_create_shared_metrics_stream_request.py +201 -0
  212. lightning_sdk/lightning_cloud/openapi/models/v1_create_shared_metrics_stream_response.py +123 -0
  213. lightning_sdk/lightning_cloud/openapi/models/v1_create_snowflake_connection_response.py +123 -0
  214. lightning_sdk/lightning_cloud/openapi/models/v1_create_user_secret_request.py +149 -0
  215. lightning_sdk/lightning_cloud/openapi/models/v1_data_connection.py +365 -1
  216. lightning_sdk/lightning_cloud/openapi/models/{v1_cluster_performance_profile.py → v1_data_connection_state.py} +11 -9
  217. lightning_sdk/lightning_cloud/openapi/models/v1_data_path.py +201 -0
  218. lightning_sdk/lightning_cloud/openapi/models/v1_delete_affiliate_link_response.py +97 -0
  219. lightning_sdk/lightning_cloud/openapi/models/v1_delete_cloud_space_session_response.py +97 -0
  220. lightning_sdk/lightning_cloud/openapi/models/v1_delete_cloud_space_version_publication_response.py +97 -0
  221. lightning_sdk/lightning_cloud/openapi/models/v1_delete_cloud_space_version_response.py +97 -0
  222. lightning_sdk/lightning_cloud/openapi/models/v1_delete_cluster_proxy_response.py +97 -0
  223. lightning_sdk/lightning_cloud/openapi/models/v1_delete_deployment_release_response.py +97 -0
  224. lightning_sdk/lightning_cloud/openapi/models/{v1_azure_cluster_driver_status.py → v1_delete_deployment_response.py} +6 -6
  225. lightning_sdk/lightning_cloud/openapi/models/v1_delete_index_response.py +97 -0
  226. lightning_sdk/lightning_cloud/openapi/models/{v1_byom_cluster_driver.py → v1_delete_job_response.py} +6 -6
  227. lightning_sdk/lightning_cloud/openapi/models/{v1_delete_lightningapp_v2_response.py → v1_delete_logger_artifact_response.py} +6 -6
  228. lightning_sdk/lightning_cloud/openapi/models/v1_delete_managed_endpoint_response.py +97 -0
  229. lightning_sdk/lightning_cloud/openapi/models/v1_delete_metrics_stream_response.py +97 -0
  230. lightning_sdk/lightning_cloud/openapi/models/v1_delete_multi_machine_job_response.py +97 -0
  231. lightning_sdk/lightning_cloud/openapi/models/v1_delete_profiler_capture_response.py +97 -0
  232. lightning_sdk/lightning_cloud/openapi/models/v1_delete_service_execution_response.py +97 -0
  233. lightning_sdk/lightning_cloud/openapi/models/{v1_delete_lightningapp_release_response.py → v1_delete_shared_metrics_stream_response.py} +6 -6
  234. lightning_sdk/lightning_cloud/openapi/models/v1_deployment.py +617 -0
  235. lightning_sdk/lightning_cloud/openapi/models/v1_deployment_api.py +227 -0
  236. lightning_sdk/lightning_cloud/openapi/models/v1_deployment_event.py +357 -0
  237. lightning_sdk/lightning_cloud/openapi/models/v1_deployment_event_type.py +104 -0
  238. lightning_sdk/lightning_cloud/openapi/models/v1_deployment_metrics.py +149 -0
  239. lightning_sdk/lightning_cloud/openapi/models/v1_deployment_performance.py +305 -0
  240. lightning_sdk/lightning_cloud/openapi/models/v1_deployment_release.py +331 -0
  241. lightning_sdk/lightning_cloud/openapi/models/v1_deployment_spec.py +201 -0
  242. lightning_sdk/lightning_cloud/openapi/models/v1_deployment_state.py +105 -0
  243. lightning_sdk/lightning_cloud/openapi/models/v1_deployment_status.py +279 -0
  244. lightning_sdk/lightning_cloud/openapi/models/{appsv2_id_body.py → v1_deployment_strategy.py} +39 -39
  245. lightning_sdk/lightning_cloud/openapi/models/v1_deployment_template.py +721 -0
  246. lightning_sdk/lightning_cloud/openapi/models/v1_deployment_template_engagement_response.py +97 -0
  247. lightning_sdk/lightning_cloud/openapi/models/v1_deployment_template_gallery_response.py +591 -0
  248. lightning_sdk/lightning_cloud/openapi/models/v1_deployment_template_parameter.py +435 -0
  249. lightning_sdk/lightning_cloud/openapi/models/v1_deployment_template_parameter_placement.py +106 -0
  250. lightning_sdk/lightning_cloud/openapi/models/v1_deployment_template_parameter_type.py +106 -0
  251. lightning_sdk/lightning_cloud/openapi/models/v1_deployment_template_summary.py +591 -0
  252. lightning_sdk/lightning_cloud/openapi/models/{instance_type_availability.py → v1_deployment_template_type.py} +10 -10
  253. lightning_sdk/lightning_cloud/openapi/models/{v1_get_lightningapp_source_code_download_url_response.py → v1_download_job_logs_response.py} +10 -10
  254. lightning_sdk/lightning_cloud/openapi/models/v1_download_service_execution_artifact_response.py +175 -0
  255. lightning_sdk/lightning_cloud/openapi/models/v1_ebs.py +279 -0
  256. lightning_sdk/lightning_cloud/openapi/models/v1_efs_config.py +201 -0
  257. lightning_sdk/lightning_cloud/openapi/models/v1_endpoint.py +53 -27
  258. lightning_sdk/lightning_cloud/openapi/models/v1_endpoint_auth.py +27 -1
  259. lightning_sdk/lightning_cloud/openapi/models/v1_endpoint_type.py +104 -0
  260. lightning_sdk/lightning_cloud/openapi/models/v1_execute_cloud_space_command_response.py +29 -3
  261. lightning_sdk/lightning_cloud/openapi/models/v1_execute_in_cloud_space_session_response.py +97 -0
  262. lightning_sdk/lightning_cloud/openapi/models/v1_execute_snowflake_query_response.py +149 -0
  263. lightning_sdk/lightning_cloud/openapi/models/v1_experiment.py +409 -0
  264. lightning_sdk/lightning_cloud/openapi/models/v1_export_snowflake_query_response.py +123 -0
  265. lightning_sdk/lightning_cloud/openapi/models/v1_external_search_user.py +279 -0
  266. lightning_sdk/lightning_cloud/openapi/models/v1_file_endpoint.py +131 -1
  267. lightning_sdk/lightning_cloud/openapi/models/{v1_instance_spec.py → v1_filesystem_app.py} +85 -59
  268. lightning_sdk/lightning_cloud/openapi/models/v1_filesystem_cloud_space.py +149 -0
  269. lightning_sdk/lightning_cloud/openapi/models/v1_filesystem_dataset.py +123 -0
  270. lightning_sdk/lightning_cloud/openapi/models/v1_filesystem_job.py +175 -0
  271. lightning_sdk/lightning_cloud/openapi/models/v1_filesystem_slurm_job.py +149 -0
  272. lightning_sdk/lightning_cloud/openapi/models/v1_filesystem_snowflake_connection.py +123 -0
  273. lightning_sdk/lightning_cloud/openapi/models/v1_filesystem_work.py +149 -0
  274. lightning_sdk/lightning_cloud/openapi/models/v1_find_capacity_block_offering_response.py +123 -0
  275. lightning_sdk/lightning_cloud/openapi/models/v1_gcp_data_connection.py +27 -1
  276. lightning_sdk/lightning_cloud/openapi/models/v1_gcs_folder_data_connection.py +123 -0
  277. lightning_sdk/lightning_cloud/openapi/models/v1_get_affiliate_link_response.py +123 -0
  278. lightning_sdk/lightning_cloud/openapi/models/{v1_list_cluster_instance_types_response.py → v1_get_deployment_routing_telemetry_aggregated_response.py} +23 -23
  279. lightning_sdk/lightning_cloud/openapi/models/v1_get_deployment_routing_telemetry_response.py +123 -0
  280. lightning_sdk/lightning_cloud/openapi/models/v1_get_folder_index_response.py +27 -1
  281. lightning_sdk/lightning_cloud/openapi/models/{v1_cluster_driver_status.py → v1_get_job_stats_response.py} +39 -39
  282. lightning_sdk/lightning_cloud/openapi/models/v1_get_job_system_metrics_response.py +123 -0
  283. lightning_sdk/lightning_cloud/openapi/models/v1_get_lightningapp_instance_open_ports_response.py +123 -0
  284. lightning_sdk/lightning_cloud/openapi/models/v1_get_logger_metrics_response.py +123 -0
  285. lightning_sdk/lightning_cloud/openapi/models/v1_get_model_file_upload_urls_response.py +123 -0
  286. lightning_sdk/lightning_cloud/openapi/models/v1_get_model_file_url_response.py +175 -0
  287. lightning_sdk/lightning_cloud/openapi/models/v1_get_model_files_response.py +279 -0
  288. lightning_sdk/lightning_cloud/openapi/models/v1_get_model_files_url_response.py +149 -0
  289. lightning_sdk/lightning_cloud/openapi/models/{v1_lightningwork_cluster_driver.py → v1_get_project_artifact_response.py} +33 -14
  290. lightning_sdk/lightning_cloud/openapi/models/v1_get_project_balance_response.py +27 -1
  291. lightning_sdk/lightning_cloud/openapi/models/v1_get_project_storage_metadata_response.py +383 -0
  292. lightning_sdk/lightning_cloud/openapi/models/v1_get_service_execution_status_response.py +175 -0
  293. lightning_sdk/lightning_cloud/openapi/models/v1_get_snowflake_query_response.py +149 -0
  294. lightning_sdk/lightning_cloud/openapi/models/v1_get_user_balance_response.py +27 -1
  295. lightning_sdk/lightning_cloud/openapi/models/v1_get_user_response.py +105 -1
  296. lightning_sdk/lightning_cloud/openapi/models/v1_get_user_storage_breakdown_response.py +279 -0
  297. lightning_sdk/lightning_cloud/openapi/models/v1_get_user_storage_response.py +201 -0
  298. lightning_sdk/lightning_cloud/openapi/models/v1_google_cloud_direct_v1.py +163 -3
  299. lightning_sdk/lightning_cloud/openapi/models/v1_google_cloud_direct_v1_status.py +123 -0
  300. lightning_sdk/lightning_cloud/openapi/models/v1_header.py +175 -0
  301. lightning_sdk/lightning_cloud/openapi/models/{v1_external_kubeconfig.py → v1_health_check_exec.py} +21 -21
  302. lightning_sdk/lightning_cloud/openapi/models/v1_health_check_http_get.py +149 -0
  303. lightning_sdk/lightning_cloud/openapi/models/v1_ids_logger_metrics.py +123 -0
  304. lightning_sdk/lightning_cloud/openapi/models/v1_input.py +175 -0
  305. lightning_sdk/lightning_cloud/openapi/models/v1_interrupt_server_response.py +97 -0
  306. lightning_sdk/lightning_cloud/openapi/models/v1_job.py +697 -0
  307. lightning_sdk/lightning_cloud/openapi/models/v1_job_health_check_config.py +253 -0
  308. lightning_sdk/lightning_cloud/openapi/models/v1_job_log_entry.py +175 -0
  309. lightning_sdk/lightning_cloud/openapi/models/v1_job_logs_page.py +227 -0
  310. lightning_sdk/lightning_cloud/openapi/models/v1_job_logs_response.py +149 -0
  311. lightning_sdk/lightning_cloud/openapi/models/v1_job_spec.py +669 -0
  312. lightning_sdk/lightning_cloud/openapi/models/v1_job_timing.py +201 -0
  313. lightning_sdk/lightning_cloud/openapi/models/v1_joinable_organization.py +331 -0
  314. lightning_sdk/lightning_cloud/openapi/models/v1_knowledge_configuration.py +279 -0
  315. lightning_sdk/lightning_cloud/openapi/models/v1_lambda_labs_direct_v1.py +125 -0
  316. lightning_sdk/lightning_cloud/openapi/models/v1_lightning_run.py +27 -1
  317. lightning_sdk/lightning_cloud/openapi/models/v1_lightningapp_instance_spec.py +105 -27
  318. lightning_sdk/lightning_cloud/openapi/models/v1_lightningapp_instance_status.py +53 -1
  319. lightning_sdk/lightning_cloud/openapi/models/v1_lightningwork_spec.py +27 -27
  320. lightning_sdk/lightning_cloud/openapi/models/v1_lightningwork_status.py +81 -3
  321. lightning_sdk/lightning_cloud/openapi/models/v1_list_affiliate_links_response.py +123 -0
  322. lightning_sdk/lightning_cloud/openapi/models/v1_list_cloud_space_python_versions_response.py +123 -0
  323. lightning_sdk/lightning_cloud/openapi/models/v1_list_cloud_space_sessions_response.py +123 -0
  324. lightning_sdk/lightning_cloud/openapi/models/v1_list_cloud_space_tags_response.py +6 -6
  325. lightning_sdk/lightning_cloud/openapi/models/v1_list_cloud_space_version_publications_response.py +123 -0
  326. lightning_sdk/lightning_cloud/openapi/models/v1_list_cloud_space_versions_response.py +123 -0
  327. lightning_sdk/lightning_cloud/openapi/models/v1_list_cluster_availabilities_response.py +123 -0
  328. lightning_sdk/lightning_cloud/openapi/models/v1_list_cluster_proxies_response.py +123 -0
  329. lightning_sdk/lightning_cloud/openapi/models/v1_list_deployment_events_response.py +123 -0
  330. lightning_sdk/lightning_cloud/openapi/models/v1_list_deployment_releases_response.py +123 -0
  331. lightning_sdk/lightning_cloud/openapi/models/v1_list_deployment_tags_response.py +123 -0
  332. lightning_sdk/lightning_cloud/openapi/models/v1_list_deployment_templates_response.py +175 -0
  333. lightning_sdk/lightning_cloud/openapi/models/v1_list_deployments_response.py +123 -0
  334. lightning_sdk/lightning_cloud/openapi/models/v1_list_experiments_response.py +149 -0
  335. lightning_sdk/lightning_cloud/openapi/models/v1_list_filesystem_apps_response.py +123 -0
  336. lightning_sdk/lightning_cloud/openapi/models/v1_list_filesystem_cloud_spaces_response.py +123 -0
  337. lightning_sdk/lightning_cloud/openapi/models/v1_list_filesystem_datasets_response.py +123 -0
  338. lightning_sdk/lightning_cloud/openapi/models/v1_list_filesystem_jobs_response.py +123 -0
  339. lightning_sdk/lightning_cloud/openapi/models/v1_list_filesystem_slurm_jobs_response.py +123 -0
  340. lightning_sdk/lightning_cloud/openapi/models/v1_list_filesystem_snowflake_response.py +123 -0
  341. lightning_sdk/lightning_cloud/openapi/models/{v1_list_lightningapps_v2_response.py → v1_list_jobs_response.py} +31 -31
  342. lightning_sdk/lightning_cloud/openapi/models/v1_list_joinable_organizations_response.py +123 -0
  343. lightning_sdk/lightning_cloud/openapi/models/v1_list_logger_artifact_response.py +123 -0
  344. lightning_sdk/lightning_cloud/openapi/models/v1_list_metrics_streams_response.py +123 -0
  345. lightning_sdk/lightning_cloud/openapi/models/v1_list_multi_machine_job_events_response.py +123 -0
  346. lightning_sdk/lightning_cloud/openapi/models/v1_list_multi_machine_jobs_response.py +123 -0
  347. lightning_sdk/lightning_cloud/openapi/models/v1_list_new_features_for_user_response.py +123 -0
  348. lightning_sdk/lightning_cloud/openapi/models/v1_list_profiler_captures_response.py +123 -0
  349. lightning_sdk/lightning_cloud/openapi/models/v1_list_project_locked_resources_response.py +123 -0
  350. lightning_sdk/lightning_cloud/openapi/models/v1_list_published_cloud_spaces_response.py +3 -29
  351. lightning_sdk/lightning_cloud/openapi/models/v1_list_published_deployment_templates_response.py +175 -0
  352. lightning_sdk/lightning_cloud/openapi/models/v1_list_service_execution_lightningapp_instances_response.py +175 -0
  353. lightning_sdk/lightning_cloud/openapi/models/v1_list_service_executions_response.py +123 -0
  354. lightning_sdk/lightning_cloud/openapi/models/v1_lit_page.py +27 -1
  355. lightning_sdk/lightning_cloud/openapi/models/v1_lit_registry_project.py +227 -0
  356. lightning_sdk/lightning_cloud/openapi/models/v1_lit_repository.py +279 -0
  357. lightning_sdk/lightning_cloud/openapi/models/v1_locked_resource.py +227 -0
  358. lightning_sdk/lightning_cloud/openapi/models/v1_logger_artifact.py +227 -0
  359. lightning_sdk/lightning_cloud/openapi/models/v1_machines_selector.py +149 -0
  360. lightning_sdk/lightning_cloud/openapi/models/v1_magic_link_login_request.py +81 -3
  361. lightning_sdk/lightning_cloud/openapi/models/v1_magic_link_login_response.py +53 -1
  362. lightning_sdk/lightning_cloud/openapi/models/v1_managed_endpoint.py +175 -19
  363. lightning_sdk/lightning_cloud/openapi/models/v1_managed_model.py +305 -0
  364. lightning_sdk/lightning_cloud/openapi/models/v1_managed_model_abilities.py +175 -0
  365. lightning_sdk/lightning_cloud/openapi/models/v1_membership.py +79 -1
  366. lightning_sdk/lightning_cloud/openapi/models/v1_message.py +138 -8
  367. lightning_sdk/lightning_cloud/openapi/models/v1_message_content.py +6 -6
  368. lightning_sdk/lightning_cloud/openapi/models/v1_message_content_type.py +103 -0
  369. lightning_sdk/lightning_cloud/openapi/models/v1_metadata.py +131 -1
  370. lightning_sdk/lightning_cloud/openapi/models/v1_metric_value.py +175 -0
  371. lightning_sdk/lightning_cloud/openapi/models/v1_metrics.py +175 -0
  372. lightning_sdk/lightning_cloud/openapi/models/v1_metrics_stream.py +799 -0
  373. lightning_sdk/lightning_cloud/openapi/models/v1_metrics_tags.py +201 -0
  374. lightning_sdk/lightning_cloud/openapi/models/v1_metrics_tracker.py +383 -0
  375. lightning_sdk/lightning_cloud/openapi/models/v1_model.py +95 -17
  376. lightning_sdk/lightning_cloud/openapi/models/v1_model_file.py +175 -0
  377. lightning_sdk/lightning_cloud/openapi/models/v1_model_version_archive.py +131 -1
  378. lightning_sdk/lightning_cloud/openapi/models/v1_mount_target.py +201 -0
  379. lightning_sdk/lightning_cloud/openapi/models/v1_multi_machine_job.py +487 -0
  380. lightning_sdk/lightning_cloud/openapi/models/v1_multi_machine_job_event.py +331 -0
  381. lightning_sdk/lightning_cloud/openapi/models/{get_cluster_health_response_health_status.py → v1_multi_machine_job_event_type.py} +9 -9
  382. lightning_sdk/lightning_cloud/openapi/models/v1_multi_machine_job_fault_tolerance.py +149 -0
  383. lightning_sdk/lightning_cloud/openapi/models/v1_multi_machine_job_fault_tolerance_strategy.py +105 -0
  384. lightning_sdk/lightning_cloud/openapi/models/v1_multi_machine_job_state.py +108 -0
  385. lightning_sdk/lightning_cloud/openapi/models/v1_multi_machine_job_status.py +305 -0
  386. lightning_sdk/lightning_cloud/openapi/models/v1_named_get_logger_metrics.py +123 -0
  387. lightning_sdk/lightning_cloud/openapi/models/v1_new_feature.py +383 -0
  388. lightning_sdk/lightning_cloud/openapi/models/v1_onboarding_event_request.py +175 -0
  389. lightning_sdk/lightning_cloud/openapi/models/v1_onboarding_event_response.py +97 -0
  390. lightning_sdk/lightning_cloud/openapi/models/v1_organization.py +209 -1
  391. lightning_sdk/lightning_cloud/openapi/models/v1_parameterization_spec.py +227 -0
  392. lightning_sdk/lightning_cloud/openapi/models/v1_path_telemetry.py +123 -0
  393. lightning_sdk/lightning_cloud/openapi/models/v1_phase_type.py +104 -0
  394. lightning_sdk/lightning_cloud/openapi/models/v1_profiler_capture.py +357 -0
  395. lightning_sdk/lightning_cloud/openapi/models/v1_profiler_enabled_response.py +123 -0
  396. lightning_sdk/lightning_cloud/openapi/models/v1_project.py +131 -1
  397. lightning_sdk/lightning_cloud/openapi/models/v1_project_membership.py +263 -3
  398. lightning_sdk/lightning_cloud/openapi/models/v1_project_settings.py +29 -3
  399. lightning_sdk/lightning_cloud/openapi/models/v1_project_storage.py +279 -0
  400. lightning_sdk/lightning_cloud/openapi/models/v1_published_cloud_space_response.py +188 -6
  401. lightning_sdk/lightning_cloud/openapi/models/v1_purchase_capacity_block_response.py +175 -0
  402. lightning_sdk/lightning_cloud/openapi/models/v1_query_param.py +175 -0
  403. lightning_sdk/lightning_cloud/openapi/models/v1_query_result.py +123 -0
  404. lightning_sdk/lightning_cloud/openapi/models/v1_query_result_row.py +123 -0
  405. lightning_sdk/lightning_cloud/openapi/models/v1_refresh_path_response.py +97 -0
  406. lightning_sdk/lightning_cloud/openapi/models/v1_regional_load_balancer.py +149 -0
  407. lightning_sdk/lightning_cloud/openapi/models/v1_report_logs_activity_response.py +97 -0
  408. lightning_sdk/lightning_cloud/openapi/models/v1_request_cluster_access_request.py +175 -0
  409. lightning_sdk/lightning_cloud/openapi/models/v1_request_cluster_access_response.py +97 -0
  410. lightning_sdk/lightning_cloud/openapi/models/{v1_cloud_space_tag.py → v1_resource_tag.py} +18 -18
  411. lightning_sdk/lightning_cloud/openapi/models/v1_resource_visibility.py +123 -0
  412. lightning_sdk/lightning_cloud/openapi/models/v1_resources.py +37 -11
  413. lightning_sdk/lightning_cloud/openapi/models/v1_restore_deployment_release_response.py +97 -0
  414. lightning_sdk/lightning_cloud/openapi/models/v1_rolling_update_strategy.py +149 -0
  415. lightning_sdk/lightning_cloud/openapi/models/v1_rule_condition.py +29 -3
  416. lightning_sdk/lightning_cloud/openapi/models/v1_rule_resource.py +11 -0
  417. lightning_sdk/lightning_cloud/openapi/models/v1_s3_folder_data_connection.py +123 -0
  418. lightning_sdk/lightning_cloud/openapi/models/v1_search_job_logs_response.py +149 -0
  419. lightning_sdk/lightning_cloud/openapi/models/v1_search_users_response.py +6 -6
  420. lightning_sdk/lightning_cloud/openapi/models/v1_secret.py +107 -3
  421. lightning_sdk/lightning_cloud/openapi/models/{v1_lightningapp_cluster_driver.py → v1_secret_type.py} +10 -9
  422. lightning_sdk/lightning_cloud/openapi/models/v1_select.py +149 -0
  423. lightning_sdk/lightning_cloud/openapi/models/v1_server_check_in_response.py +97 -0
  424. lightning_sdk/lightning_cloud/openapi/models/{v1_update_cluster_response.py → v1_service_artifact.py} +54 -54
  425. lightning_sdk/lightning_cloud/openapi/models/v1_service_execution.py +383 -0
  426. lightning_sdk/lightning_cloud/openapi/models/v1_should_start_syncing_response.py +123 -0
  427. lightning_sdk/lightning_cloud/openapi/models/v1_signed_url.py +149 -0
  428. lightning_sdk/lightning_cloud/openapi/models/v1_slurm_job.py +131 -1
  429. lightning_sdk/lightning_cloud/openapi/models/v1_slurm_node.py +53 -1
  430. lightning_sdk/lightning_cloud/openapi/models/v1_slurm_v1.py +27 -1
  431. lightning_sdk/lightning_cloud/openapi/models/v1_snowflake_data_connection.py +253 -0
  432. lightning_sdk/lightning_cloud/openapi/models/v1_status_code_telemetry.py +123 -0
  433. lightning_sdk/lightning_cloud/openapi/models/v1_storage_asset.py +253 -0
  434. lightning_sdk/lightning_cloud/openapi/models/v1_storage_asset_type.py +105 -0
  435. lightning_sdk/lightning_cloud/openapi/models/v1_studio_job_app.py +1 -0
  436. lightning_sdk/lightning_cloud/openapi/models/v1_system_info.py +617 -0
  437. lightning_sdk/lightning_cloud/openapi/models/v1_telemetry.py +331 -0
  438. lightning_sdk/lightning_cloud/openapi/models/v1_timestamp_code_telemetry.py +123 -0
  439. lightning_sdk/lightning_cloud/openapi/models/v1_transaction.py +27 -1
  440. lightning_sdk/lightning_cloud/openapi/models/v1_transfer_user_balance_request.py +27 -1
  441. lightning_sdk/lightning_cloud/openapi/models/v1_update_billing_subscription_request.py +53 -1
  442. lightning_sdk/lightning_cloud/openapi/models/v1_update_cluster_accelerators_request.py +149 -0
  443. lightning_sdk/lightning_cloud/openapi/models/v1_update_index_response.py +97 -0
  444. lightning_sdk/lightning_cloud/openapi/models/v1_update_metrics_stream_visibility_response.py +97 -0
  445. lightning_sdk/lightning_cloud/openapi/models/v1_update_model_visibility_response.py +97 -0
  446. lightning_sdk/lightning_cloud/openapi/models/v1_update_shared_metrics_stream_response.py +97 -0
  447. lightning_sdk/lightning_cloud/openapi/models/v1_update_snowflake_query_response.py +97 -0
  448. lightning_sdk/lightning_cloud/openapi/models/v1_update_user_request.py +53 -1
  449. lightning_sdk/lightning_cloud/openapi/models/v1_update_user_viewed_new_features_request.py +123 -0
  450. lightning_sdk/lightning_cloud/openapi/models/v1_update_user_viewed_new_features_response.py +97 -0
  451. lightning_sdk/lightning_cloud/openapi/models/v1_upload_service_execution_artifact_parts_response.py +123 -0
  452. lightning_sdk/lightning_cloud/openapi/models/v1_upload_service_execution_artifact_response.py +149 -0
  453. lightning_sdk/lightning_cloud/openapi/models/v1_upstream_cloud_space.py +97 -19
  454. lightning_sdk/lightning_cloud/openapi/models/v1_upstream_job.py +227 -0
  455. lightning_sdk/lightning_cloud/openapi/models/v1_usage.py +27 -1
  456. lightning_sdk/lightning_cloud/openapi/models/v1_usage_details.py +107 -3
  457. lightning_sdk/lightning_cloud/openapi/models/v1_user_features.py +1030 -302
  458. lightning_sdk/lightning_cloud/openapi/models/v1_user_requested_compute_config.py +45 -45
  459. lightning_sdk/lightning_cloud/openapi/models/v1_user_requested_flow_compute_config.py +29 -29
  460. lightning_sdk/lightning_cloud/openapi/models/v1_validate_assistant_status_response.py +149 -0
  461. lightning_sdk/lightning_cloud/openapi/models/v1_validate_auto_join_domain_response.py +97 -0
  462. lightning_sdk/lightning_cloud/openapi/models/v1_validate_data_connection_response.py +107 -3
  463. lightning_sdk/lightning_cloud/openapi/models/v1_validate_deployment_image_request.py +149 -0
  464. lightning_sdk/lightning_cloud/openapi/models/v1_validate_deployment_image_response.py +97 -0
  465. lightning_sdk/lightning_cloud/openapi/models/v1_validate_managed_endpoint_request.py +175 -0
  466. lightning_sdk/lightning_cloud/openapi/models/v1_validate_managed_endpoint_response.py +123 -0
  467. lightning_sdk/lightning_cloud/openapi/models/v1_validate_managed_model_response.py +123 -0
  468. lightning_sdk/lightning_cloud/openapi/models/v1_volume.py +175 -0
  469. lightning_sdk/lightning_cloud/openapi/models/v1_vultr_direct_v1.py +125 -0
  470. lightning_sdk/lightning_cloud/openapi/models/validate.py +97 -19
  471. lightning_sdk/lightning_cloud/openapi/models/validateautojoindomain_domain_body.py +123 -0
  472. lightning_sdk/lightning_cloud/openapi/models/version_uploads_body.py +123 -0
  473. lightning_sdk/lightning_cloud/openapi/models/versions_id_body.py +357 -0
  474. lightning_sdk/lightning_cloud/rest_client.py +49 -23
  475. lightning_sdk/lightning_cloud/source_code/logs_socket_api.py +1 -1
  476. lightning_sdk/lightning_cloud/source_code/tar.py +1 -3
  477. lightning_sdk/lightning_cloud/utils/data_connection.py +145 -7
  478. lightning_sdk/machine.py +17 -4
  479. lightning_sdk/mmt/__init__.py +4 -0
  480. lightning_sdk/mmt/base.py +288 -0
  481. lightning_sdk/mmt/mmt.py +282 -0
  482. lightning_sdk/mmt/v1.py +185 -0
  483. lightning_sdk/mmt/v2.py +193 -0
  484. lightning_sdk/models.py +153 -0
  485. lightning_sdk/organization.py +1 -1
  486. lightning_sdk/plugin.py +207 -41
  487. lightning_sdk/services/__init__.py +5 -0
  488. lightning_sdk/services/file_endpoint.py +223 -0
  489. lightning_sdk/services/finetune/__init__.py +35 -0
  490. lightning_sdk/services/utilities.py +111 -0
  491. lightning_sdk/status.py +2 -1
  492. lightning_sdk/studio.py +90 -17
  493. lightning_sdk/teamspace.py +189 -11
  494. lightning_sdk/user.py +1 -1
  495. lightning_sdk/utils/__init__.py +0 -0
  496. lightning_sdk/utils/dynamic.py +61 -0
  497. lightning_sdk/utils/enum.py +116 -0
  498. lightning_sdk/{utils.py → utils/resolve.py} +41 -4
  499. lightning_sdk-0.1.46.dist-info/LICENSE +21 -0
  500. {lightning_sdk-0.1.2.dist-info → lightning_sdk-0.1.46.dist-info}/METADATA +30 -4
  501. lightning_sdk-0.1.46.dist-info/RECORD +858 -0
  502. {lightning_sdk-0.1.2.dist-info → lightning_sdk-0.1.46.dist-info}/WHEEL +1 -1
  503. lightning_sdk/lightning_cloud/openapi/models/app_id_releases_body.py +0 -541
  504. lightning_sdk/lightning_cloud/openapi/models/assistants_id_body.py +0 -487
  505. lightning_sdk/lightning_cloud/openapi/models/id_endpoint_body.py +0 -409
  506. lightning_sdk/lightning_cloud/openapi/models/id_get_body1.py +0 -333
  507. lightning_sdk/lightning_cloud/openapi/models/project_id_appsv2_body.py +0 -201
  508. lightning_sdk/lightning_cloud/openapi/models/v1_aws_cluster_driver_spec.py +0 -1039
  509. lightning_sdk/lightning_cloud/openapi/models/v1_aws_cluster_secondary_region_spec.py +0 -253
  510. lightning_sdk/lightning_cloud/openapi/models/v1_azure_cluster_driver_spec.py +0 -227
  511. lightning_sdk/lightning_cloud/openapi/models/v1_cluster_driver.py +0 -175
  512. lightning_sdk/lightning_cloud/openapi/models/v1_container_resources.py +0 -201
  513. lightning_sdk/lightning_cloud/openapi/models/v1_eks_custer_driver_status.py +0 -387
  514. lightning_sdk/lightning_cloud/openapi/models/v1_instance_type.py +0 -305
  515. lightning_sdk/lightning_cloud/openapi/models/v1_kubernetes_cluster_driver.py +0 -359
  516. lightning_sdk/lightning_cloud/openapi/models/v1_kubernetes_cluster_status.py +0 -279
  517. lightning_sdk/lightning_cloud/openapi/models/v1_lightningapp_release.py +0 -697
  518. lightning_sdk/lightning_cloud/openapi/models/v1_lightningapp_v2.py +0 -331
  519. lightning_sdk-0.1.2.dist-info/RECORD +0 -550
  520. {lightning_sdk-0.1.2.dist-info → lightning_sdk-0.1.46.dist-info}/entry_points.txt +0 -0
  521. {lightning_sdk-0.1.2.dist-info → lightning_sdk-0.1.46.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,574 @@
1
+ from time import sleep
2
+ from typing import Any, List, Literal, Optional, Union
3
+
4
+ from lightning_sdk.api.utils import _MACHINE_TO_COMPUTE_NAME
5
+ from lightning_sdk.lightning_cloud.openapi import (
6
+ CreateDeploymentRequestDefinesASpecForTheJobThatAllowsForAutoscalingJobs,
7
+ V1AutoscalingSpec,
8
+ V1AutoscalingTargetMetric,
9
+ V1Deployment,
10
+ V1DeploymentStrategy,
11
+ V1Endpoint,
12
+ V1EndpointAuth,
13
+ V1EnvVar,
14
+ V1HealthCheckExec,
15
+ V1HealthCheckHttpGet,
16
+ V1JobHealthCheckConfig,
17
+ V1JobSpec,
18
+ V1RollingUpdateStrategy,
19
+ )
20
+ from lightning_sdk.lightning_cloud.openapi.rest import ApiException
21
+ from lightning_sdk.lightning_cloud.rest_client import LightningClient
22
+ from lightning_sdk.machine import Machine
23
+
24
+ _METRICS = ["GPU", "CPU", "RPM"]
25
+
26
+
27
+ class Env:
28
+ """The Env describes an environnement variable."""
29
+
30
+ def __init__(self, name: str, value: str) -> str:
31
+ self.name = name
32
+ self.value = value
33
+
34
+
35
+ class Secret:
36
+ """The Secret describes a protected environnement variable."""
37
+
38
+ def __init__(self, name: str) -> str:
39
+ self.name = name
40
+
41
+
42
+ class Auth:
43
+ """The base auth class."""
44
+
45
+
46
+ class BasicAuth(Auth):
47
+ """The BasicAuth describes the basic auth mechanism where a username and password are required to authenticate."""
48
+
49
+ def __init__(self, username: str, password: str) -> None:
50
+ self.username = username
51
+ self.password = password
52
+
53
+
54
+ class TokenAuth(Auth):
55
+ """The TokenAuth describes the token auth mechanism where a token is required to authenticate."""
56
+
57
+ def __init__(self, token: str) -> None:
58
+ self.token = token
59
+
60
+
61
+ class ReleaseStrategy:
62
+ """The base class for release strategy."""
63
+
64
+
65
+ class RollingUpdateReleaseStrategy(ReleaseStrategy):
66
+ """The RollingUpdateReleaseStrategy describes the rolling update strategy.
67
+
68
+ Args:
69
+ max_surge: The max_surge argument controls the maximum number of additional replicas
70
+ that can be created during a rolling update.
71
+ It specifies the number above the desired replica count that can be temporarily created.
72
+ During an update, Lightning creates new replicas to replace the old ones,
73
+ and the max_surge argument ensures that the total number of pods does not exceed a certain limit.
74
+ max_unavailable: The max_unavailable argument determines the maximum number of replicas that
75
+ can be unavailable during a rolling update. It specifies the maximum number that can be simultaneously
76
+ removed from service during the update progresses. By default, Lightning terminates one replica at a
77
+ time while creating new replicas, ensuring that the desired replica count is maintained.
78
+
79
+ """
80
+
81
+ def __init__(self, max_surge: int = 1, max_unavailable: int = 0) -> None:
82
+ self.max_surge = max_surge
83
+ self.max_unavailable = max_unavailable
84
+
85
+
86
+ class HealthCheck:
87
+ pass
88
+
89
+
90
+ class ExecHealthCheck(HealthCheck):
91
+ """The ExecHealthCheck determines whether your service is ready using exec command in the container.
92
+
93
+ Args:
94
+ command: The command to be executed within your container to decide whether the service is ready.
95
+ timeout_seconds: The total number of time to wait before declaring the service as unhealthy.
96
+ initial_delay_seconds: The amount of time to wait before starting to execute the command.
97
+ failure_threshold: The total number of retries to do befor declaring the service as unhealthy.
98
+ interval_seconds: The amount of time between retries.
99
+
100
+ """
101
+
102
+ def __init__(
103
+ self,
104
+ command: str,
105
+ timeout_seconds: int = 60,
106
+ initial_delay_seconds: int = 5,
107
+ failure_threshold: int = 12,
108
+ interval_seconds: int = 5,
109
+ ) -> None:
110
+ self.command = command
111
+ self.timeout_seconds = timeout_seconds
112
+ self.initial_delay_seconds = initial_delay_seconds
113
+ self.failure_threshold = failure_threshold
114
+ self.interval_seconds = interval_seconds
115
+
116
+
117
+ class HttpHealthCheck(HealthCheck):
118
+ """The HttpHealthCheck determines whether your service is ready using http request.
119
+
120
+ Args:
121
+ path: The server path to hit to check whether the server is healthy
122
+ port: The server port to hit to check whether the server is healthy
123
+ timeout_seconds: The total number of time to wait before declaring the service as unhealthy.
124
+ initial_delay_seconds: The amount of time to wait before starting to execute the command.
125
+ failure_threshold: The total number of retries to do befor declaring the service as unhealthy.
126
+ interval_seconds: The amount of time between retries.
127
+
128
+ """
129
+
130
+ def __init__(
131
+ self,
132
+ path: str,
133
+ port: float,
134
+ timeout_seconds: int = 60,
135
+ initial_delay_seconds: int = 5,
136
+ failure_threshold: int = 12,
137
+ interval_seconds: int = 5,
138
+ ) -> None:
139
+ self.path = path
140
+ self.port = port
141
+ self.timeout_seconds = timeout_seconds
142
+ self.initial_delay_seconds = initial_delay_seconds
143
+ self.failure_threshold = failure_threshold
144
+ self.interval_seconds = interval_seconds
145
+
146
+
147
+ class AutoScalingMetric:
148
+ """The AutoScalingMetric determines the metric used to decide whether we should autoscale.
149
+
150
+ Args:
151
+ name: The name of the metric used to decide whether we should autoscale.
152
+ target: The metric threshold to decide whether we should autoscale.
153
+
154
+ """
155
+
156
+ def __init__(
157
+ self,
158
+ name: Literal["GPU", "CPU", "RPM"],
159
+ target: float,
160
+ ) -> None:
161
+ self.name = name
162
+ self.target = target
163
+
164
+
165
+ class AutoScaleConfig:
166
+ """The AutoScaleConfig determines how to autoscale your deployment.
167
+
168
+ Args:
169
+ min_replicas: The minimum number of replicas. When set to 0, the replicas will
170
+ stop when there is no traffic left.
171
+ max_replicas: The maximum number of replicas.
172
+ metric: The metric used to decide whether we should autoscale.
173
+ threshold: The metric threshold to decide whether we should autoscale.
174
+ target_metrics: Multiple target metrics to autoscale the deployment.
175
+ idle_threshold_seconds: The amount of time to wait before stopping a replica
176
+ after the latest seen request.
177
+
178
+ """
179
+
180
+ def __init__(
181
+ self,
182
+ min_replicas: Optional[int] = None,
183
+ max_replicas: Optional[int] = None,
184
+ metric: Optional[Literal["GPU", "CPU", "RPM"]] = None,
185
+ threshold: Optional[float] = None,
186
+ target_metrics: Optional[List[AutoScalingMetric]] = None,
187
+ idle_threshold_seconds: Optional[str] = None,
188
+ scale_down_cooldown_seconds: Optional[str] = None,
189
+ scale_up_cooldown_seconds: Optional[str] = None,
190
+ ) -> None:
191
+ self.min_replicas = min_replicas
192
+ self.max_replicas = max_replicas
193
+ self.metric = metric
194
+ self.threshold = threshold
195
+ self.target_metrics = target_metrics
196
+ self.idle_threshold_seconds = idle_threshold_seconds
197
+ self.scale_down_cooldown_seconds = scale_down_cooldown_seconds
198
+ self.scale_up_cooldown_seconds = scale_up_cooldown_seconds
199
+
200
+
201
+ class DeploymentApi:
202
+ """Internal API client for Deployment requests (mainly http requests)."""
203
+
204
+ def __init__(self, wait_on_stop: int = 5) -> None:
205
+ self._client = LightningClient(max_tries=7)
206
+ self._wait_on_stop = wait_on_stop
207
+
208
+ def get_deployment_by_name(self, name: str, teamspace_id: str) -> Optional[V1Deployment]:
209
+ try:
210
+ return self._client.jobs_service_get_deployment_by_name(project_id=teamspace_id, name=name)
211
+ except ApiException as ex:
212
+ if "Reason: Not Found" in str(ex):
213
+ return None
214
+ raise ex
215
+
216
+ def create_deployment(
217
+ self,
218
+ deployment: V1Deployment,
219
+ ) -> V1Deployment:
220
+ return self._client.jobs_service_create_deployment(
221
+ project_id=deployment.project_id,
222
+ body=CreateDeploymentRequestDefinesASpecForTheJobThatAllowsForAutoscalingJobs(
223
+ autoscaling=deployment.autoscaling,
224
+ cluster_id=deployment.spec.cluster_id,
225
+ endpoint=deployment.endpoint,
226
+ name=deployment.name,
227
+ replicas=deployment.replicas,
228
+ spec=deployment.spec,
229
+ strategy=deployment.strategy,
230
+ ),
231
+ )
232
+
233
+ def update_deployment(
234
+ self,
235
+ deployment: V1Deployment,
236
+ machine: Optional[Machine] = None,
237
+ environment: Optional[str] = None,
238
+ entrypoint: Optional[str] = None,
239
+ command: Optional[str] = None,
240
+ env: Optional[List[Union[Env, Secret]]] = None,
241
+ spot: Optional[bool] = None,
242
+ cloud_account: Optional[str] = None,
243
+ min_replicas: Optional[int] = None,
244
+ max_replicas: Optional[int] = None,
245
+ name: Optional[str] = None,
246
+ ports: Optional[List[float]] = None,
247
+ release_strategy: Optional[ReleaseStrategy] = None,
248
+ replicas: Optional[int] = None,
249
+ health_check: Optional[Union[HttpHealthCheck, ExecHealthCheck]] = None,
250
+ auth: Optional[Union[BasicAuth, TokenAuth]] = None,
251
+ custom_domain: Optional[str] = None,
252
+ ) -> V1Deployment:
253
+ # Update the deployment in place
254
+
255
+ apply_change(deployment, "name", name)
256
+ apply_change(deployment, "replicas", replicas)
257
+ apply_change(deployment, "strategy", to_strategy(release_strategy))
258
+
259
+ apply_change(deployment.autoscaling, "min_replicas", min_replicas)
260
+ apply_change(deployment.autoscaling, "max_replicas", max_replicas)
261
+ apply_change(deployment.autoscaling, "max_replicas", max_replicas)
262
+
263
+ # Any updates to the Job Spec triggers a new release
264
+ if machine:
265
+ apply_change(deployment.spec, "instance_name", _MACHINE_TO_COMPUTE_NAME[machine])
266
+
267
+ requires_release = False
268
+ requires_release |= apply_change(deployment.spec, "image", environment)
269
+ requires_release |= apply_change(deployment.spec, "entrypoint", entrypoint)
270
+ requires_release |= apply_change(deployment.spec, "command", command)
271
+ requires_release |= apply_change(deployment.spec, "env", to_env(env))
272
+ requires_release |= apply_change(deployment.spec, "env", to_health_check(health_check))
273
+ requires_release |= apply_change(deployment.spec, "cluster_id", cloud_account)
274
+ requires_release |= apply_change(deployment.spec, "spot", spot)
275
+
276
+ if requires_release:
277
+ if deployment.strategy is None:
278
+ raise RuntimeError("When doing a new release, a release strategy needs to be defined.")
279
+
280
+ print("Some core arguments have changed. We are making a new release.")
281
+
282
+ apply_change(deployment.endpoint, "custom_domain", custom_domain)
283
+ apply_change(deployment.endpoint, "auth", to_endpoint_auth(auth))
284
+ apply_change(deployment.endpoint, "ports", [str(port) for port in ports] if ports else None)
285
+
286
+ return self._client.jobs_service_update_deployment(
287
+ project_id=deployment.project_id,
288
+ id=deployment.id,
289
+ body=deployment,
290
+ )
291
+
292
+ def stop(self, deployment: V1Deployment) -> V1Deployment:
293
+ deployment.autoscaling.min_replicas = 0
294
+ deployment.autoscaling.max_replicas = 0
295
+
296
+ deployment = self._client.jobs_service_update_deployment(
297
+ project_id=deployment.project_id,
298
+ id=deployment.id,
299
+ body=deployment,
300
+ )
301
+
302
+ # wait for all the replicas to be 0
303
+ while deployment.replicas != 0:
304
+ sleep(self._wait_on_stop)
305
+ deployment = self.get_deployment_by_name(deployment.name, deployment.project_id)
306
+
307
+ return deployment
308
+
309
+
310
+ def restore_release_strategy(strategy: V1DeploymentStrategy) -> Optional[ReleaseStrategy]:
311
+ if not strategy:
312
+ return None
313
+
314
+ if strategy.rolling_update:
315
+ return RollingUpdateReleaseStrategy(
316
+ max_surge=strategy.rolling_update.max_surge,
317
+ max_unavailable=strategy.rolling_update.max_unavailable,
318
+ )
319
+ raise ValueError("Only rolling update is supported for deployment. Stay tuned for more.")
320
+
321
+
322
+ def restore_health_check(readiness_probe: V1JobHealthCheckConfig) -> Optional[Union[HttpHealthCheck, ExecHealthCheck]]:
323
+ if not readiness_probe:
324
+ return None
325
+
326
+ if readiness_probe.exec:
327
+ return ExecHealthCheck(
328
+ command=readiness_probe.exec.comand,
329
+ failure_threshold=readiness_probe.failure_threshold,
330
+ initial_delay_seconds=readiness_probe.initial_delay_seconds,
331
+ interval_seconds=readiness_probe.interval_seconds,
332
+ timeout_seconds=readiness_probe.timeout_seconds,
333
+ )
334
+
335
+ if readiness_probe.http_get:
336
+ return HttpHealthCheck(
337
+ path=readiness_probe.http_get.path,
338
+ port=readiness_probe.http_get.port,
339
+ failure_threshold=readiness_probe.failure_threshold,
340
+ initial_delay_seconds=readiness_probe.initial_delay_seconds,
341
+ interval_seconds=readiness_probe.interval_seconds,
342
+ timeout_seconds=readiness_probe.timeout_seconds,
343
+ )
344
+ return None
345
+
346
+
347
+ def restore_auth(auth: Optional[V1EndpointAuth] = None) -> Optional[Auth]:
348
+ if not auth:
349
+ return None
350
+
351
+ if auth.username and auth.password:
352
+ return BasicAuth(username=auth.username, password=auth.password)
353
+
354
+ if auth.token:
355
+ return TokenAuth(token=auth.token)
356
+ return None
357
+
358
+
359
+ def restore_autoscale(autoscaling: V1AutoscalingSpec) -> AutoScaleConfig:
360
+ return [
361
+ AutoScaleConfig(
362
+ min_replicas=autoscaling.min_replicas,
363
+ max_replicas=autoscaling.max_replicas,
364
+ target_metrics=autoscaling.target_metric,
365
+ idle_threshold_seconds=autoscaling.idle_threshold_seconds,
366
+ scale_down_cooldown_seconds=autoscaling.scale_down_cooldown_seconds,
367
+ scale_up_cooldown_seconds=autoscaling.scale_up_cooldown_seconds,
368
+ )
369
+ ]
370
+
371
+
372
+ def restore_env(env: List[V1EnvVar]) -> List[Union[Secret, Env]]:
373
+ return [Secret(name=e.from_secret) if e.from_secret else Env(name=e.name, value=e.value) for e in env]
374
+
375
+
376
+ def to_env(env: Optional[List[Union[Secret, Env]]] = None) -> Optional[List[V1EnvVar]]:
377
+ if not env:
378
+ return None
379
+
380
+ return [
381
+ V1EnvVar(name=env.name, value=env.value) if isinstance(env, Env) else V1EnvVar(from_secret=env.name)
382
+ for env in env
383
+ ]
384
+
385
+
386
+ def to_autoscaling(
387
+ autoscale_config: Optional[AutoScaleConfig] = None, replicas: Optional[int] = None
388
+ ) -> V1AutoscalingSpec:
389
+ if not autoscale_config:
390
+ raise ValueError("An autoscaling config should be provided.")
391
+
392
+ min_replicas = autoscale_config.min_replicas
393
+ max_replicas = autoscale_config.max_replicas
394
+ metric = autoscale_config.metric
395
+ threshold = autoscale_config.threshold
396
+ target_metrics = autoscale_config.target_metrics
397
+
398
+ if isinstance(replicas, int) and replicas < 0:
399
+ raise ValueError("The number of replicas should be positive.")
400
+
401
+ if isinstance(min_replicas, int) and min_replicas < 0:
402
+ raise ValueError("The minimum number of replicas should be positive.")
403
+
404
+ if isinstance(max_replicas, int) and max_replicas < 0:
405
+ raise ValueError("The maximum number of replicas should be positive.")
406
+
407
+ if min_replicas is None:
408
+ if isinstance(replicas, int):
409
+ print(f"The `min_replicas` wasn't provided. Defaulting to replicas: {replicas}.")
410
+ else:
411
+ print("The `min_replicas` wasn't provided. Defaulting to 0.")
412
+ min_replicas = 0
413
+
414
+ if max_replicas is None:
415
+ if isinstance(replicas, int):
416
+ print(f"The `max_replicas` wasn't provided. Defaulting to replicas: {replicas}.")
417
+ else:
418
+ print("The `max_replicas` wasn't provided. Defaulting to 1.")
419
+ max_replicas = 1
420
+
421
+ if min_replicas < 0:
422
+ raise ValueError("The minimum number of replicas should be positive.")
423
+
424
+ if min_replicas > max_replicas:
425
+ raise ValueError("The minimum number of replicas should be smaller or equal to the maximum number of replicas.")
426
+
427
+ if (metric is not None or threshold is not None) and target_metrics is not None:
428
+ raise ValueError("Either metric and threshold, or target_metrics (for multiple) can be provided.")
429
+
430
+ if target_metrics is None and (metric is None or (isinstance(metric, str) and metric not in _METRICS)):
431
+ raise ValueError(f"The autoscaling metric is required. Currently supported metrics are {_METRICS}")
432
+
433
+ if target_metrics is None and threshold is None:
434
+ raise ValueError("The autoscaling threshold should be defined between 0 and 100.")
435
+
436
+ if target_metrics is None and (threshold < 0 or threshold > 100):
437
+ raise ValueError("The autoscaling threshold should be defined between 0 and 100.")
438
+
439
+ if target_metrics is not None and len(target_metrics) == 0:
440
+ raise ValueError("The target_metrics must be provided.")
441
+
442
+ if target_metrics is not None:
443
+ for target_metric in target_metrics:
444
+ if target_metric.name is None or target_metric.name not in _METRICS:
445
+ raise ValueError(f"The autoscaling metric is required. Currently supported metrics are {_METRICS}")
446
+ if target_metric.target is None or target_metric.target < 0 or target_metric.target > 100:
447
+ raise ValueError("The autoscaling threshold should be defined between 0 and 100.")
448
+
449
+ # convert to string after validation
450
+ target_metric.target = str(target_metric.target)
451
+
452
+ metrics = (
453
+ target_metrics
454
+ if target_metrics is not None
455
+ else [V1AutoscalingTargetMetric(name=metric, target=str(threshold))]
456
+ )
457
+
458
+ return V1AutoscalingSpec(
459
+ enabled=True,
460
+ min_replicas=min_replicas,
461
+ max_replicas=max_replicas,
462
+ target_metric=metrics,
463
+ idle_threshold_seconds=autoscale_config.idle_threshold_seconds,
464
+ scale_down_cooldown_seconds=autoscale_config.scale_down_cooldown_seconds,
465
+ scale_up_cooldown_seconds=autoscale_config.scale_up_cooldown_seconds,
466
+ )
467
+
468
+
469
+ def to_endpoint_auth(auth: Optional[Auth] = None) -> Optional[V1EndpointAuth]:
470
+ if isinstance(auth, BasicAuth):
471
+ if auth.username == "":
472
+ raise ValueError("The username should be defined.")
473
+
474
+ if auth.password == "":
475
+ raise ValueError("The password should be defined.")
476
+
477
+ return V1EndpointAuth(enabled=True, username=auth.username, password=auth.password)
478
+
479
+ if isinstance(auth, TokenAuth):
480
+ if auth.token == "":
481
+ raise ValueError("The token should be defined.")
482
+
483
+ return V1EndpointAuth(enabled=True, token=auth.token)
484
+ return None
485
+
486
+
487
+ def to_endpoint(
488
+ ports: Optional[List[float]] = None, auth: Optional[Auth] = None, custom_domain: Optional[str] = None
489
+ ) -> V1Endpoint:
490
+ if not ports:
491
+ raise ValueError("At least one port is required to reach your deployment.")
492
+
493
+ return V1Endpoint(
494
+ auth=to_endpoint_auth(auth),
495
+ custom_domain=custom_domain,
496
+ ports=[str(port) for port in ports],
497
+ )
498
+
499
+
500
+ def to_health_check(
501
+ health_check: Optional[Union[HttpHealthCheck, ExecHealthCheck]] = None
502
+ ) -> Optional[V1JobHealthCheckConfig]:
503
+ if not health_check:
504
+ return None
505
+
506
+ health_check_config = V1JobHealthCheckConfig(
507
+ failure_threshold=health_check.failure_threshold,
508
+ initial_delay_seconds=health_check.initial_delay_seconds,
509
+ interval_seconds=health_check.interval_seconds,
510
+ timeout_seconds=health_check.timeout_seconds,
511
+ )
512
+
513
+ if isinstance(health_check, HttpHealthCheck):
514
+ health_check_config.http_get = V1HealthCheckHttpGet(
515
+ path=health_check.path,
516
+ port=health_check.port,
517
+ )
518
+ else:
519
+ health_check_config._exec = V1HealthCheckExec(command=health_check.command)
520
+ return health_check_config
521
+
522
+
523
+ def to_spec(
524
+ cloud_account: Optional[str],
525
+ machine: Optional[Machine],
526
+ environment: Optional[str],
527
+ entrypoint: Optional[str],
528
+ command: Optional[str],
529
+ spot: Optional[bool] = False,
530
+ env: Optional[List[Union[Secret, Env]]] = None,
531
+ health_check: Optional[Union[HttpHealthCheck, ExecHealthCheck]] = None,
532
+ ) -> V1JobSpec:
533
+ if cloud_account is None:
534
+ raise ValueError("The cloud account should be defined.")
535
+
536
+ if machine is None:
537
+ raise ValueError("The machine should be defined.")
538
+
539
+ if environment is None:
540
+ raise ValueError("The environment should be defined.")
541
+
542
+ return V1JobSpec(
543
+ cluster_id=cloud_account,
544
+ command=command,
545
+ entrypoint=entrypoint,
546
+ env=to_env(env),
547
+ image=environment,
548
+ spot=spot,
549
+ instance_name=_MACHINE_TO_COMPUTE_NAME[machine],
550
+ readiness_probe=to_health_check(health_check),
551
+ )
552
+
553
+
554
+ def to_strategy(strategy: Optional[ReleaseStrategy]) -> None:
555
+ if isinstance(strategy, RollingUpdateReleaseStrategy):
556
+ return V1DeploymentStrategy(
557
+ rolling_update=V1RollingUpdateStrategy(
558
+ max_surge=strategy.max_surge,
559
+ max_unavailable=strategy.max_unavailable,
560
+ ),
561
+ type="rolling_update",
562
+ )
563
+ return None
564
+
565
+
566
+ def apply_change(spec: Any, key: str, value: Any) -> bool:
567
+ if value is None:
568
+ return False
569
+
570
+ if getattr(spec, key) != value:
571
+ setattr(spec, key, value)
572
+ return True
573
+
574
+ return False