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.
- lightning_sdk/__init__.py +12 -2
- lightning_sdk/agents.py +46 -0
- lightning_sdk/ai_hub.py +185 -0
- lightning_sdk/api/__init__.py +4 -0
- lightning_sdk/api/agents_api.py +107 -0
- lightning_sdk/api/ai_hub_api.py +130 -0
- lightning_sdk/api/deployment_api.py +574 -0
- lightning_sdk/api/job_api.py +308 -0
- lightning_sdk/api/mmt_api.py +188 -0
- lightning_sdk/api/org_api.py +1 -3
- lightning_sdk/api/studio_api.py +174 -83
- lightning_sdk/api/teamspace_api.py +219 -20
- lightning_sdk/api/user_api.py +24 -9
- lightning_sdk/api/utils.py +429 -47
- lightning_sdk/cli/ai_hub.py +49 -0
- lightning_sdk/cli/download.py +132 -0
- lightning_sdk/cli/entrypoint.py +11 -3
- lightning_sdk/cli/run.py +206 -0
- lightning_sdk/cli/serve.py +218 -0
- lightning_sdk/cli/studios_menu.py +78 -0
- lightning_sdk/cli/upload.py +79 -89
- lightning_sdk/constants.py +29 -1
- lightning_sdk/deployment/__init__.py +25 -0
- lightning_sdk/deployment/deployment.py +389 -0
- lightning_sdk/helpers.py +49 -0
- lightning_sdk/job/__init__.py +5 -0
- lightning_sdk/job/base.py +295 -0
- lightning_sdk/job/job.py +266 -0
- lightning_sdk/job/v1.py +241 -0
- lightning_sdk/job/v2.py +193 -0
- lightning_sdk/job/work.py +72 -0
- lightning_sdk/lightning_cloud/__version__.py +1 -1
- lightning_sdk/lightning_cloud/cli/__main__.py +15 -13
- lightning_sdk/lightning_cloud/env.py +1 -0
- lightning_sdk/lightning_cloud/login.py +12 -8
- lightning_sdk/lightning_cloud/openapi/__init__.py +314 -43
- lightning_sdk/lightning_cloud/openapi/api/__init__.py +10 -0
- lightning_sdk/lightning_cloud/openapi/api/analytics_service_api.py +141 -0
- lightning_sdk/lightning_cloud/openapi/api/assistants_service_api.py +1075 -227
- lightning_sdk/lightning_cloud/openapi/api/billing_service_api.py +9 -1
- lightning_sdk/lightning_cloud/openapi/api/cloud_space_service_api.py +3115 -895
- lightning_sdk/lightning_cloud/openapi/api/cluster_service_api.py +908 -141
- lightning_sdk/lightning_cloud/openapi/api/data_connection_service_api.py +10 -5
- lightning_sdk/lightning_cloud/openapi/api/deployment_templates_service_api.py +756 -0
- lightning_sdk/lightning_cloud/openapi/api/endpoint_service_api.py +1658 -159
- lightning_sdk/lightning_cloud/openapi/api/experiments_service_api.py +242 -0
- lightning_sdk/lightning_cloud/openapi/api/file_system_service_api.py +674 -0
- lightning_sdk/lightning_cloud/openapi/api/jobs_service_api.py +3823 -0
- lightning_sdk/lightning_cloud/openapi/api/lightningapp_instance_service_api.py +158 -590
- lightning_sdk/lightning_cloud/openapi/api/lightningapp_v2_service_api.py +0 -1086
- lightning_sdk/lightning_cloud/openapi/api/lightningwork_service_api.py +113 -0
- lightning_sdk/lightning_cloud/openapi/api/lit_logger_service_api.py +1753 -0
- lightning_sdk/lightning_cloud/openapi/api/lit_registry_service_api.py +242 -0
- lightning_sdk/lightning_cloud/openapi/api/models_store_api.py +1423 -108
- lightning_sdk/lightning_cloud/openapi/api/organizations_service_api.py +421 -1
- lightning_sdk/lightning_cloud/openapi/api/profiler_service_api.py +663 -0
- lightning_sdk/lightning_cloud/openapi/api/projects_service_api.py +5 -1
- lightning_sdk/lightning_cloud/openapi/api/secret_service_api.py +478 -1
- lightning_sdk/lightning_cloud/openapi/api/slurm_jobs_user_service_api.py +9 -5
- lightning_sdk/lightning_cloud/openapi/api/snowflake_service_api.py +686 -0
- lightning_sdk/lightning_cloud/openapi/api/storage_service_api.py +1094 -0
- lightning_sdk/lightning_cloud/openapi/api/studio_jobs_service_api.py +4 -4
- lightning_sdk/lightning_cloud/openapi/api/user_service_api.py +1081 -34
- lightning_sdk/lightning_cloud/openapi/models/__init__.py +304 -41
- lightning_sdk/lightning_cloud/openapi/models/affiliatelinks_id_body.py +149 -0
- lightning_sdk/lightning_cloud/openapi/models/agentmanagedendpoints_id_body.py +305 -0
- lightning_sdk/lightning_cloud/openapi/models/agents_id_body.py +643 -0
- lightning_sdk/lightning_cloud/openapi/models/app_id_works_body.py +149 -0
- lightning_sdk/lightning_cloud/openapi/models/approveautojoindomain_domain_body.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/apps_id_body1.py +107 -3
- lightning_sdk/lightning_cloud/openapi/models/assistant_id_conversations_body.py +1 -27
- lightning_sdk/lightning_cloud/openapi/models/{v1_get_cluster_health_response.py → captures_id_body.py} +16 -16
- lightning_sdk/lightning_cloud/openapi/models/cloud_space_id_versionpublications_body.py +175 -0
- lightning_sdk/lightning_cloud/openapi/models/cloud_space_id_versionpublications_body1.py +175 -0
- lightning_sdk/lightning_cloud/openapi/models/cloud_space_id_versions_body.py +409 -0
- lightning_sdk/lightning_cloud/openapi/models/cloudspace_id_runs_body.py +27 -1
- lightning_sdk/lightning_cloud/openapi/models/cloudspaces_id_body.py +84 -6
- lightning_sdk/lightning_cloud/openapi/models/cluster_id_capacityblock_body.py +253 -0
- lightning_sdk/lightning_cloud/openapi/models/cluster_id_capacityreservations_body.py +55 -3
- lightning_sdk/lightning_cloud/openapi/models/cluster_id_proxies_body.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/clusters_id_body.py +27 -1
- lightning_sdk/lightning_cloud/openapi/models/create.py +157 -1
- lightning_sdk/lightning_cloud/openapi/models/create_deployment_request_defines_a_spec_for_the_job_that_allows_for_autoscaling_jobs.py +383 -0
- lightning_sdk/lightning_cloud/openapi/models/deployments_id_body.py +565 -0
- lightning_sdk/lightning_cloud/openapi/models/deploymenttemplates_id_body.py +513 -0
- lightning_sdk/lightning_cloud/openapi/models/endpoints_id_body.py +43 -17
- lightning_sdk/lightning_cloud/openapi/models/experiment_name_variant_name_body.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/externalv1_cloud_space_instance_status.py +107 -1
- lightning_sdk/lightning_cloud/openapi/models/externalv1_lightningapp_instance.py +27 -1
- lightning_sdk/lightning_cloud/openapi/models/externalv1_user_status.py +27 -1
- lightning_sdk/lightning_cloud/openapi/models/fileendpoints_id_body.py +131 -1
- lightning_sdk/lightning_cloud/openapi/models/id_codeconfig_body.py +29 -55
- lightning_sdk/lightning_cloud/openapi/models/id_complete_body.py +175 -0
- lightning_sdk/lightning_cloud/openapi/models/id_engage_body.py +3 -29
- lightning_sdk/lightning_cloud/openapi/models/id_engage_body1.py +149 -0
- lightning_sdk/lightning_cloud/openapi/models/id_execute_body.py +3 -55
- lightning_sdk/lightning_cloud/openapi/models/id_execute_body1.py +175 -0
- lightning_sdk/lightning_cloud/openapi/models/id_fork_body.py +31 -31
- lightning_sdk/lightning_cloud/openapi/models/id_fork_body1.py +175 -0
- lightning_sdk/lightning_cloud/openapi/models/id_get_body.py +133 -3
- lightning_sdk/lightning_cloud/openapi/models/id_index_body.py +67 -15
- lightning_sdk/lightning_cloud/openapi/models/id_index_body2.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/id_index_body3.py +175 -0
- lightning_sdk/lightning_cloud/openapi/models/id_reportlogsactivity_body.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/id_start_body.py +29 -3
- lightning_sdk/lightning_cloud/openapi/models/id_storage_body.py +175 -0
- lightning_sdk/lightning_cloud/openapi/models/id_uploads_body1.py +175 -0
- lightning_sdk/lightning_cloud/openapi/models/id_visibility_body.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/jobs_id_body1.py +27 -1
- lightning_sdk/lightning_cloud/openapi/models/jobs_id_body2.py +17 -43
- lightning_sdk/lightning_cloud/openapi/models/jobs_id_body3.py +149 -0
- lightning_sdk/lightning_cloud/openapi/models/litloggermetrics_id_body.py +175 -0
- lightning_sdk/lightning_cloud/openapi/models/litpages_id_body.py +27 -1
- lightning_sdk/lightning_cloud/openapi/models/loggermetrics_id_body.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/metrics_stream_id_loggerartifacts_body.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/metricsstream_create_body.py +383 -0
- lightning_sdk/lightning_cloud/openapi/models/{v1_cloud_space_id_list.py → metricsstream_delete_body.py} +10 -10
- lightning_sdk/lightning_cloud/openapi/models/metricsstream_id_body.py +175 -0
- lightning_sdk/lightning_cloud/openapi/models/{v1_upload_model_response.py → model_id_versions_body.py} +25 -51
- lightning_sdk/lightning_cloud/openapi/models/model_id_visibility_body.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/models_model_id_body.py +149 -0
- lightning_sdk/lightning_cloud/openapi/models/multimachinejobs_id_body.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/org_id_memberships_body.py +27 -1
- lightning_sdk/lightning_cloud/openapi/models/orgs_id_body.py +183 -1
- lightning_sdk/lightning_cloud/openapi/models/profiler_captures_body.py +279 -0
- lightning_sdk/lightning_cloud/openapi/models/profiler_enabled_body.py +149 -0
- lightning_sdk/lightning_cloud/openapi/models/project_id_agentmanagedendpoints_body.py +149 -0
- lightning_sdk/lightning_cloud/openapi/models/{project_id_assistants_body.py → project_id_agents_body.py} +181 -51
- lightning_sdk/lightning_cloud/openapi/models/project_id_cloudspaces_body.py +71 -19
- lightning_sdk/lightning_cloud/openapi/models/project_id_fileendpoints_body.py +79 -1
- lightning_sdk/lightning_cloud/openapi/models/project_id_jobs_body.py +175 -0
- lightning_sdk/lightning_cloud/openapi/models/project_id_litregistry_body.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/project_id_memberships_body.py +53 -1
- lightning_sdk/lightning_cloud/openapi/models/{v1_upload_model_request.py → project_id_models_body.py} +70 -70
- lightning_sdk/lightning_cloud/openapi/models/project_id_multimachinejobs_body.py +227 -0
- lightning_sdk/lightning_cloud/openapi/models/project_id_secrets_body.py +27 -1
- lightning_sdk/lightning_cloud/openapi/models/project_id_serviceexecution_body.py +175 -0
- lightning_sdk/lightning_cloud/openapi/models/project_id_snowflake_body.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/projects_id_body.py +29 -3
- lightning_sdk/lightning_cloud/openapi/models/query_query_id_body.py +175 -0
- lightning_sdk/lightning_cloud/openapi/models/secrets_id_body1.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/servers_server_id_body.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/service_artifact_artifact_kind.py +104 -0
- lightning_sdk/lightning_cloud/openapi/models/serviceexecution_id_body.py +331 -0
- lightning_sdk/lightning_cloud/openapi/models/slurm_jobs_body.py +79 -1
- lightning_sdk/lightning_cloud/openapi/models/snowflake_export_body.py +305 -0
- lightning_sdk/lightning_cloud/openapi/models/{v1_download_model_response.py → snowflake_query_body.py} +51 -51
- lightning_sdk/lightning_cloud/openapi/models/storage_complete_body.py +27 -1
- lightning_sdk/lightning_cloud/openapi/models/update.py +105 -1
- lightning_sdk/lightning_cloud/openapi/models/upload_id_complete_body.py +149 -0
- lightning_sdk/lightning_cloud/openapi/models/upload_id_parts_body.py +149 -0
- lightning_sdk/lightning_cloud/openapi/models/user_id_affiliatelinks_body.py +149 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_accelerator_quota_info.py +201 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_ack_user_storage_violation_response.py +97 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_add_job_timing_response.py +97 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_affiliate_link.py +435 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_agent_job.py +131 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_api_pricing_spec.py +149 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_app_type.py +104 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_append_logger_metrics_response.py +97 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_approve_auto_join_domain_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_assign_variant_response.py +97 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_assistant.py +157 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_assistant_knowledge_item_status.py +253 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_assistant_knowledge_status.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_assistant_model_status.py +104 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_auto_join_domain_validation.py +175 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_auto_join_org_response.py +149 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_autoscaling_spec.py +305 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_autoscaling_target_metric.py +149 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_aws_direct_v1.py +133 -3
- lightning_sdk/lightning_cloud/openapi/models/v1_batch_update_lightningwork_response.py +97 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_body.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_cancellation_metadata.py +149 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_capacity_block_offering.py +383 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_check_snowflake_connection_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_checkbox.py +201 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_cloud_space.py +162 -6
- lightning_sdk/lightning_cloud/openapi/models/v1_cloud_space_code_version.py +383 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_cloud_space_code_version_status.py +105 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_cloud_space_instance_config.py +1 -53
- lightning_sdk/lightning_cloud/openapi/models/v1_cloud_space_instance_startup_status.py +79 -1
- lightning_sdk/lightning_cloud/openapi/models/{v1_cluster_log_service.py → v1_cloud_space_session.py} +49 -49
- lightning_sdk/lightning_cloud/openapi/models/v1_cloud_space_version.py +669 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_cloud_space_version_publication.py +201 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_cluster_accelerator.py +445 -3
- lightning_sdk/lightning_cloud/openapi/models/v1_cluster_capacity_reservation.py +55 -3
- lightning_sdk/lightning_cloud/openapi/models/v1_cluster_names.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_cluster_proxy.py +201 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_cluster_resource_tag.py +149 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_cluster_security_options.py +357 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_cluster_spec.py +157 -107
- lightning_sdk/lightning_cloud/openapi/models/v1_cluster_state.py +1 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_cluster_status.py +17 -43
- lightning_sdk/lightning_cloud/openapi/models/v1_cluster_tagging_options.py +175 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_cluster_type.py +0 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_command_argument.py +131 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_complete_model_upload_response.py +97 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_complete_multi_part_upload_response.py +97 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_complete_upload_service_execution_artifact_response.py +97 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_completed_part.py +149 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_conversation.py +15 -15
- lightning_sdk/lightning_cloud/openapi/models/v1_conversation_response_chunk.py +26 -26
- lightning_sdk/lightning_cloud/openapi/models/v1_count_metrics_streams_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_create_checkout_session_request.py +53 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_create_cluster_request.py +27 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_create_deployment_template_request.py +539 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_create_multi_part_upload_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_create_organization_request.py +159 -3
- lightning_sdk/lightning_cloud/openapi/models/v1_create_project_request.py +27 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_create_shared_metrics_stream_request.py +201 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_create_shared_metrics_stream_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_create_snowflake_connection_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_create_user_secret_request.py +149 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_data_connection.py +365 -1
- lightning_sdk/lightning_cloud/openapi/models/{v1_cluster_performance_profile.py → v1_data_connection_state.py} +11 -9
- lightning_sdk/lightning_cloud/openapi/models/v1_data_path.py +201 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_delete_affiliate_link_response.py +97 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_delete_cloud_space_session_response.py +97 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_delete_cloud_space_version_publication_response.py +97 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_delete_cloud_space_version_response.py +97 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_delete_cluster_proxy_response.py +97 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_delete_deployment_release_response.py +97 -0
- lightning_sdk/lightning_cloud/openapi/models/{v1_azure_cluster_driver_status.py → v1_delete_deployment_response.py} +6 -6
- lightning_sdk/lightning_cloud/openapi/models/v1_delete_index_response.py +97 -0
- lightning_sdk/lightning_cloud/openapi/models/{v1_byom_cluster_driver.py → v1_delete_job_response.py} +6 -6
- lightning_sdk/lightning_cloud/openapi/models/{v1_delete_lightningapp_v2_response.py → v1_delete_logger_artifact_response.py} +6 -6
- lightning_sdk/lightning_cloud/openapi/models/v1_delete_managed_endpoint_response.py +97 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_delete_metrics_stream_response.py +97 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_delete_multi_machine_job_response.py +97 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_delete_profiler_capture_response.py +97 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_delete_service_execution_response.py +97 -0
- lightning_sdk/lightning_cloud/openapi/models/{v1_delete_lightningapp_release_response.py → v1_delete_shared_metrics_stream_response.py} +6 -6
- lightning_sdk/lightning_cloud/openapi/models/v1_deployment.py +617 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_deployment_api.py +227 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_deployment_event.py +357 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_deployment_event_type.py +104 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_deployment_metrics.py +149 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_deployment_performance.py +305 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_deployment_release.py +331 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_deployment_spec.py +201 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_deployment_state.py +105 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_deployment_status.py +279 -0
- lightning_sdk/lightning_cloud/openapi/models/{appsv2_id_body.py → v1_deployment_strategy.py} +39 -39
- lightning_sdk/lightning_cloud/openapi/models/v1_deployment_template.py +721 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_deployment_template_engagement_response.py +97 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_deployment_template_gallery_response.py +591 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_deployment_template_parameter.py +435 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_deployment_template_parameter_placement.py +106 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_deployment_template_parameter_type.py +106 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_deployment_template_summary.py +591 -0
- lightning_sdk/lightning_cloud/openapi/models/{instance_type_availability.py → v1_deployment_template_type.py} +10 -10
- lightning_sdk/lightning_cloud/openapi/models/{v1_get_lightningapp_source_code_download_url_response.py → v1_download_job_logs_response.py} +10 -10
- lightning_sdk/lightning_cloud/openapi/models/v1_download_service_execution_artifact_response.py +175 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_ebs.py +279 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_efs_config.py +201 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_endpoint.py +53 -27
- lightning_sdk/lightning_cloud/openapi/models/v1_endpoint_auth.py +27 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_endpoint_type.py +104 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_execute_cloud_space_command_response.py +29 -3
- lightning_sdk/lightning_cloud/openapi/models/v1_execute_in_cloud_space_session_response.py +97 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_execute_snowflake_query_response.py +149 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_experiment.py +409 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_export_snowflake_query_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_external_search_user.py +279 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_file_endpoint.py +131 -1
- lightning_sdk/lightning_cloud/openapi/models/{v1_instance_spec.py → v1_filesystem_app.py} +85 -59
- lightning_sdk/lightning_cloud/openapi/models/v1_filesystem_cloud_space.py +149 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_filesystem_dataset.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_filesystem_job.py +175 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_filesystem_slurm_job.py +149 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_filesystem_snowflake_connection.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_filesystem_work.py +149 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_find_capacity_block_offering_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_gcp_data_connection.py +27 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_gcs_folder_data_connection.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_get_affiliate_link_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/{v1_list_cluster_instance_types_response.py → v1_get_deployment_routing_telemetry_aggregated_response.py} +23 -23
- lightning_sdk/lightning_cloud/openapi/models/v1_get_deployment_routing_telemetry_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_get_folder_index_response.py +27 -1
- lightning_sdk/lightning_cloud/openapi/models/{v1_cluster_driver_status.py → v1_get_job_stats_response.py} +39 -39
- lightning_sdk/lightning_cloud/openapi/models/v1_get_job_system_metrics_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_get_lightningapp_instance_open_ports_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_get_logger_metrics_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_get_model_file_upload_urls_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_get_model_file_url_response.py +175 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_get_model_files_response.py +279 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_get_model_files_url_response.py +149 -0
- lightning_sdk/lightning_cloud/openapi/models/{v1_lightningwork_cluster_driver.py → v1_get_project_artifact_response.py} +33 -14
- lightning_sdk/lightning_cloud/openapi/models/v1_get_project_balance_response.py +27 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_get_project_storage_metadata_response.py +383 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_get_service_execution_status_response.py +175 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_get_snowflake_query_response.py +149 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_get_user_balance_response.py +27 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_get_user_response.py +105 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_get_user_storage_breakdown_response.py +279 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_get_user_storage_response.py +201 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_google_cloud_direct_v1.py +163 -3
- lightning_sdk/lightning_cloud/openapi/models/v1_google_cloud_direct_v1_status.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_header.py +175 -0
- lightning_sdk/lightning_cloud/openapi/models/{v1_external_kubeconfig.py → v1_health_check_exec.py} +21 -21
- lightning_sdk/lightning_cloud/openapi/models/v1_health_check_http_get.py +149 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_ids_logger_metrics.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_input.py +175 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_interrupt_server_response.py +97 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_job.py +697 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_job_health_check_config.py +253 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_job_log_entry.py +175 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_job_logs_page.py +227 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_job_logs_response.py +149 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_job_spec.py +669 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_job_timing.py +201 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_joinable_organization.py +331 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_knowledge_configuration.py +279 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_lambda_labs_direct_v1.py +125 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_lightning_run.py +27 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_lightningapp_instance_spec.py +105 -27
- lightning_sdk/lightning_cloud/openapi/models/v1_lightningapp_instance_status.py +53 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_lightningwork_spec.py +27 -27
- lightning_sdk/lightning_cloud/openapi/models/v1_lightningwork_status.py +81 -3
- lightning_sdk/lightning_cloud/openapi/models/v1_list_affiliate_links_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_list_cloud_space_python_versions_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_list_cloud_space_sessions_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_list_cloud_space_tags_response.py +6 -6
- lightning_sdk/lightning_cloud/openapi/models/v1_list_cloud_space_version_publications_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_list_cloud_space_versions_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_list_cluster_availabilities_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_list_cluster_proxies_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_list_deployment_events_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_list_deployment_releases_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_list_deployment_tags_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_list_deployment_templates_response.py +175 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_list_deployments_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_list_experiments_response.py +149 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_list_filesystem_apps_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_list_filesystem_cloud_spaces_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_list_filesystem_datasets_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_list_filesystem_jobs_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_list_filesystem_slurm_jobs_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_list_filesystem_snowflake_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/{v1_list_lightningapps_v2_response.py → v1_list_jobs_response.py} +31 -31
- lightning_sdk/lightning_cloud/openapi/models/v1_list_joinable_organizations_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_list_logger_artifact_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_list_metrics_streams_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_list_multi_machine_job_events_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_list_multi_machine_jobs_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_list_new_features_for_user_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_list_profiler_captures_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_list_project_locked_resources_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_list_published_cloud_spaces_response.py +3 -29
- lightning_sdk/lightning_cloud/openapi/models/v1_list_published_deployment_templates_response.py +175 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_list_service_execution_lightningapp_instances_response.py +175 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_list_service_executions_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_lit_page.py +27 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_lit_registry_project.py +227 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_lit_repository.py +279 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_locked_resource.py +227 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_logger_artifact.py +227 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_machines_selector.py +149 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_magic_link_login_request.py +81 -3
- lightning_sdk/lightning_cloud/openapi/models/v1_magic_link_login_response.py +53 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_managed_endpoint.py +175 -19
- lightning_sdk/lightning_cloud/openapi/models/v1_managed_model.py +305 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_managed_model_abilities.py +175 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_membership.py +79 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_message.py +138 -8
- lightning_sdk/lightning_cloud/openapi/models/v1_message_content.py +6 -6
- lightning_sdk/lightning_cloud/openapi/models/v1_message_content_type.py +103 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_metadata.py +131 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_metric_value.py +175 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_metrics.py +175 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_metrics_stream.py +799 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_metrics_tags.py +201 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_metrics_tracker.py +383 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_model.py +95 -17
- lightning_sdk/lightning_cloud/openapi/models/v1_model_file.py +175 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_model_version_archive.py +131 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_mount_target.py +201 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_multi_machine_job.py +487 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_multi_machine_job_event.py +331 -0
- lightning_sdk/lightning_cloud/openapi/models/{get_cluster_health_response_health_status.py → v1_multi_machine_job_event_type.py} +9 -9
- lightning_sdk/lightning_cloud/openapi/models/v1_multi_machine_job_fault_tolerance.py +149 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_multi_machine_job_fault_tolerance_strategy.py +105 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_multi_machine_job_state.py +108 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_multi_machine_job_status.py +305 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_named_get_logger_metrics.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_new_feature.py +383 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_onboarding_event_request.py +175 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_onboarding_event_response.py +97 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_organization.py +209 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_parameterization_spec.py +227 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_path_telemetry.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_phase_type.py +104 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_profiler_capture.py +357 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_profiler_enabled_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_project.py +131 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_project_membership.py +263 -3
- lightning_sdk/lightning_cloud/openapi/models/v1_project_settings.py +29 -3
- lightning_sdk/lightning_cloud/openapi/models/v1_project_storage.py +279 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_published_cloud_space_response.py +188 -6
- lightning_sdk/lightning_cloud/openapi/models/v1_purchase_capacity_block_response.py +175 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_query_param.py +175 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_query_result.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_query_result_row.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_refresh_path_response.py +97 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_regional_load_balancer.py +149 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_report_logs_activity_response.py +97 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_request_cluster_access_request.py +175 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_request_cluster_access_response.py +97 -0
- lightning_sdk/lightning_cloud/openapi/models/{v1_cloud_space_tag.py → v1_resource_tag.py} +18 -18
- lightning_sdk/lightning_cloud/openapi/models/v1_resource_visibility.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_resources.py +37 -11
- lightning_sdk/lightning_cloud/openapi/models/v1_restore_deployment_release_response.py +97 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_rolling_update_strategy.py +149 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_rule_condition.py +29 -3
- lightning_sdk/lightning_cloud/openapi/models/v1_rule_resource.py +11 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_s3_folder_data_connection.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_search_job_logs_response.py +149 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_search_users_response.py +6 -6
- lightning_sdk/lightning_cloud/openapi/models/v1_secret.py +107 -3
- lightning_sdk/lightning_cloud/openapi/models/{v1_lightningapp_cluster_driver.py → v1_secret_type.py} +10 -9
- lightning_sdk/lightning_cloud/openapi/models/v1_select.py +149 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_server_check_in_response.py +97 -0
- lightning_sdk/lightning_cloud/openapi/models/{v1_update_cluster_response.py → v1_service_artifact.py} +54 -54
- lightning_sdk/lightning_cloud/openapi/models/v1_service_execution.py +383 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_should_start_syncing_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_signed_url.py +149 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_slurm_job.py +131 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_slurm_node.py +53 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_slurm_v1.py +27 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_snowflake_data_connection.py +253 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_status_code_telemetry.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_storage_asset.py +253 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_storage_asset_type.py +105 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_studio_job_app.py +1 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_system_info.py +617 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_telemetry.py +331 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_timestamp_code_telemetry.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_transaction.py +27 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_transfer_user_balance_request.py +27 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_update_billing_subscription_request.py +53 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_update_cluster_accelerators_request.py +149 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_update_index_response.py +97 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_update_metrics_stream_visibility_response.py +97 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_update_model_visibility_response.py +97 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_update_shared_metrics_stream_response.py +97 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_update_snowflake_query_response.py +97 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_update_user_request.py +53 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_update_user_viewed_new_features_request.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_update_user_viewed_new_features_response.py +97 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_upload_service_execution_artifact_parts_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_upload_service_execution_artifact_response.py +149 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_upstream_cloud_space.py +97 -19
- lightning_sdk/lightning_cloud/openapi/models/v1_upstream_job.py +227 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_usage.py +27 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_usage_details.py +107 -3
- lightning_sdk/lightning_cloud/openapi/models/v1_user_features.py +1030 -302
- lightning_sdk/lightning_cloud/openapi/models/v1_user_requested_compute_config.py +45 -45
- lightning_sdk/lightning_cloud/openapi/models/v1_user_requested_flow_compute_config.py +29 -29
- lightning_sdk/lightning_cloud/openapi/models/v1_validate_assistant_status_response.py +149 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_validate_auto_join_domain_response.py +97 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_validate_data_connection_response.py +107 -3
- lightning_sdk/lightning_cloud/openapi/models/v1_validate_deployment_image_request.py +149 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_validate_deployment_image_response.py +97 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_validate_managed_endpoint_request.py +175 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_validate_managed_endpoint_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_validate_managed_model_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_volume.py +175 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_vultr_direct_v1.py +125 -0
- lightning_sdk/lightning_cloud/openapi/models/validate.py +97 -19
- lightning_sdk/lightning_cloud/openapi/models/validateautojoindomain_domain_body.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/version_uploads_body.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/versions_id_body.py +357 -0
- lightning_sdk/lightning_cloud/rest_client.py +49 -23
- lightning_sdk/lightning_cloud/source_code/logs_socket_api.py +1 -1
- lightning_sdk/lightning_cloud/source_code/tar.py +1 -3
- lightning_sdk/lightning_cloud/utils/data_connection.py +145 -7
- lightning_sdk/machine.py +17 -4
- lightning_sdk/mmt/__init__.py +4 -0
- lightning_sdk/mmt/base.py +288 -0
- lightning_sdk/mmt/mmt.py +282 -0
- lightning_sdk/mmt/v1.py +185 -0
- lightning_sdk/mmt/v2.py +193 -0
- lightning_sdk/models.py +153 -0
- lightning_sdk/organization.py +1 -1
- lightning_sdk/plugin.py +207 -41
- lightning_sdk/services/__init__.py +5 -0
- lightning_sdk/services/file_endpoint.py +223 -0
- lightning_sdk/services/finetune/__init__.py +35 -0
- lightning_sdk/services/utilities.py +111 -0
- lightning_sdk/status.py +2 -1
- lightning_sdk/studio.py +90 -17
- lightning_sdk/teamspace.py +189 -11
- lightning_sdk/user.py +1 -1
- lightning_sdk/utils/__init__.py +0 -0
- lightning_sdk/utils/dynamic.py +61 -0
- lightning_sdk/utils/enum.py +116 -0
- lightning_sdk/{utils.py → utils/resolve.py} +41 -4
- lightning_sdk-0.1.46.dist-info/LICENSE +21 -0
- {lightning_sdk-0.1.2.dist-info → lightning_sdk-0.1.46.dist-info}/METADATA +30 -4
- lightning_sdk-0.1.46.dist-info/RECORD +858 -0
- {lightning_sdk-0.1.2.dist-info → lightning_sdk-0.1.46.dist-info}/WHEEL +1 -1
- lightning_sdk/lightning_cloud/openapi/models/app_id_releases_body.py +0 -541
- lightning_sdk/lightning_cloud/openapi/models/assistants_id_body.py +0 -487
- lightning_sdk/lightning_cloud/openapi/models/id_endpoint_body.py +0 -409
- lightning_sdk/lightning_cloud/openapi/models/id_get_body1.py +0 -333
- lightning_sdk/lightning_cloud/openapi/models/project_id_appsv2_body.py +0 -201
- lightning_sdk/lightning_cloud/openapi/models/v1_aws_cluster_driver_spec.py +0 -1039
- lightning_sdk/lightning_cloud/openapi/models/v1_aws_cluster_secondary_region_spec.py +0 -253
- lightning_sdk/lightning_cloud/openapi/models/v1_azure_cluster_driver_spec.py +0 -227
- lightning_sdk/lightning_cloud/openapi/models/v1_cluster_driver.py +0 -175
- lightning_sdk/lightning_cloud/openapi/models/v1_container_resources.py +0 -201
- lightning_sdk/lightning_cloud/openapi/models/v1_eks_custer_driver_status.py +0 -387
- lightning_sdk/lightning_cloud/openapi/models/v1_instance_type.py +0 -305
- lightning_sdk/lightning_cloud/openapi/models/v1_kubernetes_cluster_driver.py +0 -359
- lightning_sdk/lightning_cloud/openapi/models/v1_kubernetes_cluster_status.py +0 -279
- lightning_sdk/lightning_cloud/openapi/models/v1_lightningapp_release.py +0 -697
- lightning_sdk/lightning_cloud/openapi/models/v1_lightningapp_v2.py +0 -331
- lightning_sdk-0.1.2.dist-info/RECORD +0 -550
- {lightning_sdk-0.1.2.dist-info → lightning_sdk-0.1.46.dist-info}/entry_points.txt +0 -0
- {lightning_sdk-0.1.2.dist-info → lightning_sdk-0.1.46.dist-info}/top_level.txt +0 -0
lightning_sdk/models.py
ADDED
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
import os
|
|
2
|
+
from dataclasses import dataclass
|
|
3
|
+
from pathlib import Path
|
|
4
|
+
from typing import TYPE_CHECKING, Any, Dict, List, Optional, Tuple, Union
|
|
5
|
+
|
|
6
|
+
from lightning_sdk.api import OrgApi, TeamspaceApi, UserApi
|
|
7
|
+
from lightning_sdk.lightning_cloud.openapi.models import V1Membership, V1OwnerType
|
|
8
|
+
from lightning_sdk.lightning_cloud.openapi.rest import ApiException
|
|
9
|
+
from lightning_sdk.user import User
|
|
10
|
+
from lightning_sdk.utils.resolve import _get_authed_user
|
|
11
|
+
|
|
12
|
+
if TYPE_CHECKING:
|
|
13
|
+
from lightning_sdk.teamspace import Teamspace
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
# TODO: Maybe just have a `Model` object?
|
|
17
|
+
@dataclass
|
|
18
|
+
class UploadedModelInfo:
|
|
19
|
+
name: str
|
|
20
|
+
version: str
|
|
21
|
+
teamspace: str
|
|
22
|
+
cloud_account: str
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
def _get_teamspace_and_path(
|
|
26
|
+
ts: V1Membership, org_api: OrgApi, user_api: UserApi, authed_user: User
|
|
27
|
+
) -> Tuple[str, Dict[str, Any]]:
|
|
28
|
+
if ts.owner_type == V1OwnerType.ORGANIZATION:
|
|
29
|
+
org = org_api._get_org_by_id(ts.owner_id)
|
|
30
|
+
return f"{org.name}/{ts.name}", {"name": ts.name, "org": org.name}
|
|
31
|
+
|
|
32
|
+
if ts.owner_type == V1OwnerType.USER and ts.owner_id != authed_user.id:
|
|
33
|
+
user = user_api._get_user_by_id(ts.owner_id) # todo: check also the name
|
|
34
|
+
return f"{user.username}/{ts.name}", {"name": ts.name, "user": User(name=user.username)}
|
|
35
|
+
|
|
36
|
+
if ts.owner_type == V1OwnerType.USER:
|
|
37
|
+
return f"{authed_user.name}/{ts.name}", {"name": ts.name, "user": authed_user}
|
|
38
|
+
|
|
39
|
+
raise RuntimeError(f"Unknown organization type {ts.owner_type}")
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
def _list_teamspaces() -> List[str]:
|
|
43
|
+
org_api = OrgApi()
|
|
44
|
+
user_api = UserApi()
|
|
45
|
+
authed_user = _get_authed_user()
|
|
46
|
+
|
|
47
|
+
return [
|
|
48
|
+
_get_teamspace_and_path(ts, org_api, user_api, authed_user)[0]
|
|
49
|
+
for ts in user_api._get_all_teamspace_memberships("")
|
|
50
|
+
]
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
def _get_teamspace(name: str, organization: str) -> "Teamspace":
|
|
54
|
+
"""Get a Teamspace object from the SDK."""
|
|
55
|
+
from lightning_sdk.teamspace import Teamspace
|
|
56
|
+
|
|
57
|
+
org_api = OrgApi()
|
|
58
|
+
user_api = UserApi()
|
|
59
|
+
authed_user = _get_authed_user()
|
|
60
|
+
|
|
61
|
+
requested_teamspace = f"{organization}/{name}".lower()
|
|
62
|
+
|
|
63
|
+
for ts in user_api._get_all_teamspace_memberships(""):
|
|
64
|
+
if ts.name != name:
|
|
65
|
+
continue
|
|
66
|
+
|
|
67
|
+
teamspace_path, teamspace = _get_teamspace_and_path(ts, org_api, user_api, authed_user)
|
|
68
|
+
if requested_teamspace == teamspace_path:
|
|
69
|
+
return Teamspace(**teamspace)
|
|
70
|
+
|
|
71
|
+
options = f"{os.linesep}\t".join(_list_teamspaces())
|
|
72
|
+
raise RuntimeError(f"Teamspace `{requested_teamspace}` not found. Available teamspaces: {os.linesep}\t{options}")
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
def _parse_model_name_and_version(name: str) -> Tuple[str, str, str, str]:
|
|
76
|
+
"""Parse the name argument into its components."""
|
|
77
|
+
try:
|
|
78
|
+
org_name, teamspace_name, model_name = name.split("/")
|
|
79
|
+
parts = model_name.split(":")
|
|
80
|
+
if len(parts) == 1:
|
|
81
|
+
return org_name, teamspace_name, parts[0], "latest"
|
|
82
|
+
if len(parts) == 2:
|
|
83
|
+
return org_name, teamspace_name, parts[0], parts[1]
|
|
84
|
+
# The rest of the validation for name and version happens in the backend
|
|
85
|
+
raise ValueError(
|
|
86
|
+
"Model version is expected to be in the format `entity/modelname:version` separated by a"
|
|
87
|
+
f" single colon, but got: {name}"
|
|
88
|
+
)
|
|
89
|
+
except ValueError as err:
|
|
90
|
+
raise ValueError(
|
|
91
|
+
f"Model name must be in the format 'organization/teamspace/model' but you provided '{name}'."
|
|
92
|
+
) from err
|
|
93
|
+
|
|
94
|
+
|
|
95
|
+
def download_model(
|
|
96
|
+
name: str,
|
|
97
|
+
download_dir: Union[Path, str] = ".",
|
|
98
|
+
progress_bar: bool = True,
|
|
99
|
+
) -> List[str]:
|
|
100
|
+
"""Download a Model.
|
|
101
|
+
|
|
102
|
+
Args:
|
|
103
|
+
name: The name of the Model you want to download.
|
|
104
|
+
This should have the format <ORGANIZATION-NAME>/<TEAMSPACE-NAME>/<MODEL-NAME>.
|
|
105
|
+
download_dir: The directory where the Model should be downloaded.
|
|
106
|
+
progress_bar: Whether to show a progress bar when downloading.
|
|
107
|
+
"""
|
|
108
|
+
teamspace_owner_name, teamspace_name, model_name, version = _parse_model_name_and_version(name)
|
|
109
|
+
|
|
110
|
+
download_dir = Path(download_dir)
|
|
111
|
+
|
|
112
|
+
api = TeamspaceApi()
|
|
113
|
+
|
|
114
|
+
try:
|
|
115
|
+
return api.download_model_files(
|
|
116
|
+
name=model_name,
|
|
117
|
+
version=version,
|
|
118
|
+
download_dir=download_dir,
|
|
119
|
+
teamspace_name=teamspace_name,
|
|
120
|
+
teamspace_owner_name=teamspace_owner_name,
|
|
121
|
+
progress_bar=progress_bar,
|
|
122
|
+
)
|
|
123
|
+
except ApiException as e:
|
|
124
|
+
# if we get an error, check if the teamspace actually exists (and print the list)
|
|
125
|
+
# TODO: ideally this would match a specific error about teamspace not being found
|
|
126
|
+
_ = _get_teamspace(name=teamspace_name, organization=teamspace_owner_name)
|
|
127
|
+
raise e
|
|
128
|
+
|
|
129
|
+
|
|
130
|
+
def upload_model(
|
|
131
|
+
name: str,
|
|
132
|
+
path: Union[Path, str] = ".",
|
|
133
|
+
cloud_account: Optional[str] = None,
|
|
134
|
+
progress_bar: bool = True,
|
|
135
|
+
) -> UploadedModelInfo:
|
|
136
|
+
"""Upload a Model.
|
|
137
|
+
|
|
138
|
+
Args:
|
|
139
|
+
name: The name of the Model you want to upload.
|
|
140
|
+
This should have the format <ORGANIZATION-NAME>/<TEAMSPACE-NAME>/<MODEL-NAME>.
|
|
141
|
+
path: The path to the file or directory you want to upload. Defaults to the current directory.
|
|
142
|
+
cloud_account: The name of the cloud account to store the Model in.
|
|
143
|
+
If not provided, the default cloud account for the Teamspace will be used.
|
|
144
|
+
progress_bar: Whether to show a progress bar for the upload.
|
|
145
|
+
"""
|
|
146
|
+
org_name, teamspace_name, model_name, _ = _parse_model_name_and_version(name)
|
|
147
|
+
teamspace = _get_teamspace(name=teamspace_name, organization=org_name)
|
|
148
|
+
return teamspace.upload_model(
|
|
149
|
+
path=path,
|
|
150
|
+
name=model_name,
|
|
151
|
+
cloud_account=cloud_account,
|
|
152
|
+
progress_bar=progress_bar,
|
|
153
|
+
)
|
lightning_sdk/organization.py
CHANGED
lightning_sdk/plugin.py
CHANGED
|
@@ -1,14 +1,23 @@
|
|
|
1
1
|
import datetime
|
|
2
2
|
import logging
|
|
3
|
+
import os
|
|
4
|
+
import warnings
|
|
3
5
|
from abc import ABC, abstractmethod
|
|
4
|
-
from
|
|
6
|
+
from contextlib import contextmanager
|
|
7
|
+
from typing import TYPE_CHECKING, Any, Generator, Optional, Protocol, Union, runtime_checkable
|
|
5
8
|
|
|
9
|
+
from lightning_sdk.job import Job
|
|
6
10
|
from lightning_sdk.machine import Machine
|
|
7
11
|
from lightning_sdk.studio import Studio
|
|
8
|
-
from lightning_sdk.utils import
|
|
12
|
+
from lightning_sdk.utils.resolve import (
|
|
13
|
+
_LIGHTNING_SERVICE_EXECUTION_ID_KEY,
|
|
14
|
+
_resolve_deprecated_cloud_compute,
|
|
15
|
+
_setup_logger,
|
|
16
|
+
)
|
|
9
17
|
|
|
10
18
|
if TYPE_CHECKING:
|
|
11
19
|
from lightning_sdk.lightning_cloud.openapi import Externalv1LightningappInstance
|
|
20
|
+
from lightning_sdk.mmt import MMT
|
|
12
21
|
|
|
13
22
|
_logger = _setup_logger(__name__)
|
|
14
23
|
|
|
@@ -80,10 +89,20 @@ class _Plugin(ABC):
|
|
|
80
89
|
|
|
81
90
|
|
|
82
91
|
class Plugin(_Plugin):
|
|
83
|
-
"""Plugin class to handle arbitrary plugins on the Studio.
|
|
92
|
+
"""Plugin class to handle arbitrary plugins on the Studio.
|
|
93
|
+
|
|
94
|
+
While plugins can be installed and uninstalled via the SDK, most of them are designed to be run from the Studio's UI
|
|
95
|
+
only. Calling run just won't do anything in most cases.
|
|
96
|
+
|
|
97
|
+
"""
|
|
84
98
|
|
|
85
99
|
def run(self) -> str:
|
|
86
100
|
"""Executes the command of the plugin on the Studio."""
|
|
101
|
+
warnings.warn(
|
|
102
|
+
"While plugins can be installed and uninstalled via the SDK, most of them are designed to "
|
|
103
|
+
"be run from the Studio's UI only. "
|
|
104
|
+
"Calling run just won't do anything in most cases."
|
|
105
|
+
)
|
|
87
106
|
if self._has_been_executed:
|
|
88
107
|
logging.info("This plugin has already been executed and can be run only once per Studio.")
|
|
89
108
|
return None
|
|
@@ -108,25 +127,32 @@ class JobsPlugin(_Plugin):
|
|
|
108
127
|
name: Optional[str] = None,
|
|
109
128
|
machine: Machine = Machine.CPU,
|
|
110
129
|
cloud_compute: Optional[Machine] = None,
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
130
|
+
interruptible: bool = False,
|
|
131
|
+
) -> Job:
|
|
132
|
+
"""Launches an asynchronous job.
|
|
133
|
+
|
|
134
|
+
Args:
|
|
135
|
+
command: The command to be executed.
|
|
136
|
+
name: The name of the job.
|
|
137
|
+
machine: The machine to run the job on.
|
|
138
|
+
interruptible: Whether to run the job on an interruptible machine.
|
|
139
|
+
These are cheaper but can be preempted at any time.
|
|
140
|
+
"""
|
|
141
|
+
if not name:
|
|
114
142
|
name = _run_name("job")
|
|
115
143
|
|
|
116
144
|
machine = _resolve_deprecated_cloud_compute(machine, cloud_compute)
|
|
117
145
|
|
|
118
|
-
|
|
119
|
-
entrypoint=command,
|
|
146
|
+
return Job.run(
|
|
120
147
|
name=name,
|
|
121
148
|
machine=machine,
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
149
|
+
command=command,
|
|
150
|
+
studio=self._studio,
|
|
151
|
+
teamspace=self._studio.teamspace,
|
|
152
|
+
cloud_account=self._studio.cloud_account,
|
|
153
|
+
interruptible=interruptible,
|
|
125
154
|
)
|
|
126
155
|
|
|
127
|
-
_logger.info(_success_message(resp, self))
|
|
128
|
-
return resp
|
|
129
|
-
|
|
130
156
|
|
|
131
157
|
class MultiMachineTrainingPlugin(_Plugin):
|
|
132
158
|
"""Plugin handling multi-machine-training jobs."""
|
|
@@ -141,28 +167,35 @@ class MultiMachineTrainingPlugin(_Plugin):
|
|
|
141
167
|
machine: Machine = Machine.CPU,
|
|
142
168
|
cloud_compute: Optional[Machine] = None,
|
|
143
169
|
num_instances: int = 2,
|
|
144
|
-
|
|
145
|
-
) -> "
|
|
146
|
-
"""Launches an asynchronous multi-machine-training.
|
|
147
|
-
|
|
170
|
+
interruptible: bool = False,
|
|
171
|
+
) -> "MMT":
|
|
172
|
+
"""Launches an asynchronous multi-machine-training.
|
|
173
|
+
|
|
174
|
+
Args:
|
|
175
|
+
command: The command to be executed.
|
|
176
|
+
name: The name of the job.
|
|
177
|
+
machine: The machine to run the job on.
|
|
178
|
+
num_instances: The number of instances to run the job on.
|
|
179
|
+
interruptible: Whether to run the job on an interruptible machine.
|
|
180
|
+
These are cheaper but can be preempted at any time.
|
|
181
|
+
"""
|
|
182
|
+
from lightning_sdk.mmt import MMT
|
|
183
|
+
|
|
184
|
+
if not name:
|
|
148
185
|
name = _run_name("dist-run")
|
|
149
186
|
|
|
150
187
|
machine = _resolve_deprecated_cloud_compute(machine, cloud_compute)
|
|
151
188
|
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
)
|
|
163
|
-
|
|
164
|
-
_logger.info(_success_message(resp, self))
|
|
165
|
-
return resp
|
|
189
|
+
with forced_v1(MMT) as v1mmt:
|
|
190
|
+
return v1mmt.run(
|
|
191
|
+
name=name,
|
|
192
|
+
num_machines=num_instances,
|
|
193
|
+
machine=machine,
|
|
194
|
+
command=command,
|
|
195
|
+
studio=self._studio,
|
|
196
|
+
teamspace=self._studio.teamspace,
|
|
197
|
+
interruptible=interruptible,
|
|
198
|
+
)
|
|
166
199
|
|
|
167
200
|
|
|
168
201
|
class MultiMachineDataPrepPlugin(_Plugin):
|
|
@@ -178,9 +211,19 @@ class MultiMachineDataPrepPlugin(_Plugin):
|
|
|
178
211
|
machine: Machine = Machine.CPU,
|
|
179
212
|
cloud_compute: Optional[Machine] = None,
|
|
180
213
|
num_instances: int = 2,
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
214
|
+
interruptible: bool = False,
|
|
215
|
+
) -> Job:
|
|
216
|
+
"""Launches an asynchronous multi-machine-data-processing job.
|
|
217
|
+
|
|
218
|
+
Args:
|
|
219
|
+
command: The command to be executed.
|
|
220
|
+
name: The name of the job.
|
|
221
|
+
machine: The machine to run the job on.
|
|
222
|
+
num_instances: The number of instances to run the job on.
|
|
223
|
+
interruptible: Whether to run the job on an interruptible machine.
|
|
224
|
+
These are cheaper but can be preempted at any time.
|
|
225
|
+
"""
|
|
226
|
+
if not name:
|
|
184
227
|
name = _run_name("data-prep")
|
|
185
228
|
|
|
186
229
|
machine = _resolve_deprecated_cloud_compute(machine, cloud_compute)
|
|
@@ -192,11 +235,12 @@ class MultiMachineDataPrepPlugin(_Plugin):
|
|
|
192
235
|
machine=machine,
|
|
193
236
|
studio_id=self._studio._studio.id,
|
|
194
237
|
teamspace_id=self._studio._teamspace.id,
|
|
195
|
-
|
|
238
|
+
cloud_account=self._studio.cloud_account,
|
|
239
|
+
interruptible=interruptible,
|
|
196
240
|
)
|
|
197
241
|
|
|
198
|
-
|
|
199
|
-
|
|
242
|
+
with forced_v1(Job) as v1_job:
|
|
243
|
+
return v1_job(resp.name, self._studio.teamspace)
|
|
200
244
|
|
|
201
245
|
|
|
202
246
|
class InferenceServerPlugin(_Plugin):
|
|
@@ -218,6 +262,7 @@ class InferenceServerPlugin(_Plugin):
|
|
|
218
262
|
max_batch_size: int = 4,
|
|
219
263
|
timeout_batching: float = 0.3,
|
|
220
264
|
endpoint: str = "/predict",
|
|
265
|
+
interruptible: bool = False,
|
|
221
266
|
) -> "Externalv1LightningappInstance":
|
|
222
267
|
"""Launches an asynchronous inference server."""
|
|
223
268
|
if name is None:
|
|
@@ -238,7 +283,119 @@ class InferenceServerPlugin(_Plugin):
|
|
|
238
283
|
endpoint=endpoint,
|
|
239
284
|
studio_id=self._studio._studio.id,
|
|
240
285
|
teamspace_id=self._studio._teamspace.id,
|
|
241
|
-
|
|
286
|
+
cloud_account=self._studio.cloud_account,
|
|
287
|
+
interruptible=interruptible,
|
|
288
|
+
)
|
|
289
|
+
|
|
290
|
+
_logger.info(_success_message(resp, self))
|
|
291
|
+
with forced_v1(Job) as v1_job:
|
|
292
|
+
return v1_job(resp.name, self._studio.teamspace)
|
|
293
|
+
|
|
294
|
+
|
|
295
|
+
class SlurmJobsPlugin(_Plugin):
|
|
296
|
+
"""Plugin handling asynchronous SLURM jobs."""
|
|
297
|
+
|
|
298
|
+
_plugin_run_name = "slurm"
|
|
299
|
+
_slug_name = "slurm"
|
|
300
|
+
|
|
301
|
+
def run(
|
|
302
|
+
self,
|
|
303
|
+
command: str,
|
|
304
|
+
name: Optional[str] = None,
|
|
305
|
+
cluster_id: Optional[str] = None,
|
|
306
|
+
work_dir: str = "/home/lightning_manager",
|
|
307
|
+
num_gpus: int = 1,
|
|
308
|
+
sync_env: bool = True,
|
|
309
|
+
cache_id: Optional[str] = None,
|
|
310
|
+
) -> "Externalv1LightningappInstance":
|
|
311
|
+
"""Launches an asynchronous SLURM job.
|
|
312
|
+
|
|
313
|
+
Args:
|
|
314
|
+
command: The command to be passed to the SLURM Job.
|
|
315
|
+
name: The name of the SLURM Job.
|
|
316
|
+
cluster_id: The name of the SLURM Cluster to submit the job on.
|
|
317
|
+
If the cluster_id isn't provided, the oldest running SLURM cluster will be selected.
|
|
318
|
+
work_dir: The position where the the files will be created on the SLURM cluster.
|
|
319
|
+
num_gpus: The number of GPUs requested.
|
|
320
|
+
sync_env: Whether to force an environement sync.
|
|
321
|
+
cache_id: A string to avoid re-downloading the Studio files to the SLURM cluster.
|
|
322
|
+
If you update your files and don't change the cache_id, they won't be used.
|
|
323
|
+
|
|
324
|
+
"""
|
|
325
|
+
from lightning_sdk.lightning_cloud.openapi import SlurmJobsBody
|
|
326
|
+
|
|
327
|
+
if work_dir == "":
|
|
328
|
+
raise ValueError("The argument `work_dir` needs to be a proper path on the SLURM Cluster.")
|
|
329
|
+
|
|
330
|
+
if num_gpus <= 0:
|
|
331
|
+
raise ValueError("The argument `num_gpus` needs to be strictly positive.")
|
|
332
|
+
|
|
333
|
+
if name is None:
|
|
334
|
+
name = _run_name("slurm")
|
|
335
|
+
|
|
336
|
+
client = self._studio._studio_api._client
|
|
337
|
+
|
|
338
|
+
clusters = client.cluster_service_list_project_clusters(project_id=self._studio._teamspace.id).clusters
|
|
339
|
+
slurm_clusters = [cluster for cluster in clusters if cluster.spec.slurm_v1 is not None]
|
|
340
|
+
running_slurm_clusters = [
|
|
341
|
+
cluster for cluster in slurm_clusters if cluster.status.phase == "CLUSTER_STATE_RUNNING"
|
|
342
|
+
]
|
|
343
|
+
running_slurm_clusters = sorted(running_slurm_clusters, key=lambda x: x.created_at)
|
|
344
|
+
|
|
345
|
+
if not running_slurm_clusters:
|
|
346
|
+
raise RuntimeError(
|
|
347
|
+
"You don't have any running SLURM clusters associated to this project. "
|
|
348
|
+
"Please, check your Teamspace Cloud Account."
|
|
349
|
+
)
|
|
350
|
+
|
|
351
|
+
selected_cluster = None
|
|
352
|
+
|
|
353
|
+
if cluster_id:
|
|
354
|
+
for cluster in running_slurm_clusters:
|
|
355
|
+
if cluster.cluster_id == cluster_id:
|
|
356
|
+
selected_cluster = cluster
|
|
357
|
+
break
|
|
358
|
+
|
|
359
|
+
if not selected_cluster:
|
|
360
|
+
raise ValueError(f"The provided cluster {cluster_id} wasn't found.")
|
|
361
|
+
else:
|
|
362
|
+
selected_cluster = running_slurm_clusters[0]
|
|
363
|
+
|
|
364
|
+
service_id = os.getenv(_LIGHTNING_SERVICE_EXECUTION_ID_KEY)
|
|
365
|
+
|
|
366
|
+
# TODO: Move this to the BE
|
|
367
|
+
envs = [
|
|
368
|
+
f"LIGHTNING_CLOUD_PROJECT_ID={os.getenv('LIGHTNING_CLOUD_PROJECT_ID')}",
|
|
369
|
+
f"LIGHTNING_USERNAME={os.getenv('LIGHTNING_USERNAME')}",
|
|
370
|
+
f"LIGHTNING_USER_ID={os.getenv('LIGHTNING_USER_ID')}",
|
|
371
|
+
f"LIGHTNING_API_KEY={os.getenv('LIGHTNING_API_KEY')}",
|
|
372
|
+
f"LIGHTNING_CLOUD_URL={os.getenv('LIGHTNING_CLOUD_URL')}",
|
|
373
|
+
]
|
|
374
|
+
|
|
375
|
+
if service_id:
|
|
376
|
+
envs.append(f"{_LIGHTNING_SERVICE_EXECUTION_ID_KEY}={service_id}")
|
|
377
|
+
|
|
378
|
+
if "&&" in command:
|
|
379
|
+
# We are adding the env varaibles to the latest command
|
|
380
|
+
splits = command.split("&&")
|
|
381
|
+
splits[-1] = " ".join(envs) + " " + splits[-1]
|
|
382
|
+
command = " && ".join(splits)
|
|
383
|
+
else:
|
|
384
|
+
command = " ".join(envs) + " " + command
|
|
385
|
+
|
|
386
|
+
resp = client.slurm_jobs_user_service_create_user_slurm_job(
|
|
387
|
+
project_id=self._studio._teamspace.id,
|
|
388
|
+
body=SlurmJobsBody(
|
|
389
|
+
cloudspace_id=self._studio._studio.id,
|
|
390
|
+
cluster_id=selected_cluster.id,
|
|
391
|
+
command=command,
|
|
392
|
+
name=name,
|
|
393
|
+
sync_env=sync_env,
|
|
394
|
+
work_dir=work_dir,
|
|
395
|
+
service_id=service_id,
|
|
396
|
+
num_gpus=num_gpus,
|
|
397
|
+
cache_id=cache_id,
|
|
398
|
+
),
|
|
242
399
|
)
|
|
243
400
|
|
|
244
401
|
_logger.info(_success_message(resp, self))
|
|
@@ -257,7 +414,7 @@ class _RunnablePlugin(Protocol):
|
|
|
257
414
|
machine: Machine = Machine.CPU,
|
|
258
415
|
cloud_compute: Optional[Machine] = None,
|
|
259
416
|
**kwargs: Any,
|
|
260
|
-
) -> "Externalv1LightningappInstance":
|
|
417
|
+
) -> Union["Externalv1LightningappInstance", Job]:
|
|
261
418
|
...
|
|
262
419
|
|
|
263
420
|
|
|
@@ -266,6 +423,15 @@ def _run_name(plugin_type: str) -> str:
|
|
|
266
423
|
return f"{plugin_type}-{datetime.datetime.now().strftime('%b-%d-%H_%M')}"
|
|
267
424
|
|
|
268
425
|
|
|
269
|
-
def _success_message(resp: "Externalv1LightningappInstance", plugin_instance: _RunnablePlugin) -> str:
|
|
426
|
+
def _success_message(resp: Union["Externalv1LightningappInstance", Job], plugin_instance: _RunnablePlugin) -> str:
|
|
270
427
|
"""Compiles the success message for a given runnable plugin."""
|
|
271
428
|
return f"{plugin_instance._plugin_run_name} {resp.name} was successfully launched. View it at https://lightning.ai/{plugin_instance._studio.owner.name}/{plugin_instance._studio.teamspace.name}/studios/{plugin_instance.studio}/app?app_id={plugin_instance._slug_name}&job_name={resp.name}"
|
|
429
|
+
|
|
430
|
+
|
|
431
|
+
@contextmanager
|
|
432
|
+
def forced_v1(cls: Any) -> Generator[Any, None, None]:
|
|
433
|
+
"""Forces to use the v1 version of a class when using a class with multiple backends."""
|
|
434
|
+
orig_val = getattr(cls, "_force_v1", False)
|
|
435
|
+
cls._force_v1 = True
|
|
436
|
+
yield cls
|
|
437
|
+
cls._force_v1 = orig_val
|