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/cli/upload.py
CHANGED
|
@@ -1,38 +1,37 @@
|
|
|
1
1
|
import concurrent.futures
|
|
2
2
|
import json
|
|
3
3
|
import os
|
|
4
|
+
from pathlib import Path
|
|
4
5
|
from typing import Dict, List, Optional
|
|
5
6
|
|
|
6
7
|
from simple_term_menu import TerminalMenu
|
|
7
8
|
from tqdm import tqdm
|
|
8
9
|
|
|
9
|
-
from lightning_sdk.api import OrgApi, TeamspaceApi
|
|
10
10
|
from lightning_sdk.api.utils import _get_cloud_url
|
|
11
11
|
from lightning_sdk.cli.exceptions import StudioCliError
|
|
12
|
+
from lightning_sdk.cli.studios_menu import _StudiosMenu
|
|
13
|
+
from lightning_sdk.models import upload_model
|
|
12
14
|
from lightning_sdk.studio import Studio
|
|
13
|
-
from lightning_sdk.
|
|
14
|
-
from lightning_sdk.utils import _get_authed_user, skip_studio_init
|
|
15
|
+
from lightning_sdk.utils.resolve import _get_authed_user, skip_studio_init
|
|
15
16
|
|
|
16
17
|
|
|
17
|
-
class _Uploads:
|
|
18
|
+
class _Uploads(_StudiosMenu):
|
|
19
|
+
"""Upload files and folders to Lightning AI."""
|
|
20
|
+
|
|
18
21
|
_studio_upload_status_path = "~/.lightning/studios/uploads"
|
|
19
22
|
|
|
20
|
-
def
|
|
21
|
-
"""Upload a
|
|
23
|
+
def model(self, name: str, path: str = ".", cloud_account: Optional[str] = None) -> None:
|
|
24
|
+
"""Upload a Model.
|
|
22
25
|
|
|
23
26
|
Args:
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
Has to be within your Studio's home directory and will be relative to that.
|
|
29
|
-
If not specified, will use the file or directory name of the path you want to upload
|
|
30
|
-
and place it in your home directory.
|
|
31
|
-
|
|
27
|
+
name: The name of the Model you want to upload.
|
|
28
|
+
This should have the format <ORGANIZATION-NAME>/<TEAMSPACE-NAME>/<MODEL-NAME>.
|
|
29
|
+
path: The path to the file or directory you want to upload. Defaults to the current directory.
|
|
30
|
+
cloud_account: The name of the cloud account to store the Model in.
|
|
32
31
|
"""
|
|
33
|
-
|
|
34
|
-
remote_path = os.path.basename(path)
|
|
32
|
+
upload_model(name, path, cloud_account=cloud_account)
|
|
35
33
|
|
|
34
|
+
def _resolve_studio(self, studio: Optional[str]) -> Studio:
|
|
36
35
|
user = _get_authed_user()
|
|
37
36
|
possible_studios = self._get_possible_studios(user)
|
|
38
37
|
|
|
@@ -52,19 +51,38 @@ class _Uploads:
|
|
|
52
51
|
"Please contact Lightning AI directly to resolve this issue."
|
|
53
52
|
) from e
|
|
54
53
|
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
if os.path.isdir(path):
|
|
58
|
-
for root, _, files in os.walk(path):
|
|
59
|
-
rel_root = os.path.relpath(root, path)
|
|
60
|
-
for f in files:
|
|
61
|
-
pairs[os.path.join(root, f)] = os.path.join(remote_path, rel_root, f)
|
|
54
|
+
with skip_studio_init():
|
|
55
|
+
return Studio(**selected_studio)
|
|
62
56
|
|
|
63
|
-
|
|
64
|
-
|
|
57
|
+
def folder(self, path: str, studio: Optional[str] = None, remote_path: Optional[str] = None) -> None:
|
|
58
|
+
"""Upload a file or folder to a Studio.
|
|
65
59
|
|
|
66
|
-
|
|
67
|
-
|
|
60
|
+
Args:
|
|
61
|
+
path: The path to the file or directory you want to upload
|
|
62
|
+
studio: The name of the studio to upload to. Will show a menu for selection if not specified.
|
|
63
|
+
If provided, should be in the form of <TEAMSPACE-NAME>/<STUDIO-NAME>
|
|
64
|
+
remote_path: The path where the uploaded file should appear on your Studio.
|
|
65
|
+
Has to be within your Studio's home directory and will be relative to that.
|
|
66
|
+
If not specified, will use the file or directory name of the path you want to upload
|
|
67
|
+
and place it in your home directory.
|
|
68
|
+
"""
|
|
69
|
+
if remote_path is None:
|
|
70
|
+
remote_path = os.path.basename(path)
|
|
71
|
+
|
|
72
|
+
if not Path(path).exists():
|
|
73
|
+
raise FileNotFoundError(f"The provided path does not exist: {path}.")
|
|
74
|
+
if not Path(path).is_dir():
|
|
75
|
+
raise StudioCliError(f"The provided path is not a folder: {path}. Use `lightning upload file` instead.")
|
|
76
|
+
|
|
77
|
+
selected_studio = self._resolve_studio(studio)
|
|
78
|
+
|
|
79
|
+
print(f"Uploading to {selected_studio.teamspace.name}/{selected_studio.name}")
|
|
80
|
+
|
|
81
|
+
pairs = {}
|
|
82
|
+
for root, _, files in os.walk(path):
|
|
83
|
+
rel_root = os.path.relpath(root, path)
|
|
84
|
+
for f in files:
|
|
85
|
+
pairs[os.path.join(root, f)] = os.path.join(remote_path, rel_root, f)
|
|
68
86
|
|
|
69
87
|
upload_state = self._resolve_previous_upload_state(selected_studio, remote_path, pairs)
|
|
70
88
|
|
|
@@ -91,19 +109,42 @@ class _Uploads:
|
|
|
91
109
|
)
|
|
92
110
|
print(f"See your files at {studio_url}")
|
|
93
111
|
|
|
94
|
-
def
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
112
|
+
def file(self, path: str, studio: Optional[str] = None, remote_path: Optional[str] = None) -> None:
|
|
113
|
+
"""Upload a file to a Studio.
|
|
114
|
+
|
|
115
|
+
Args:
|
|
116
|
+
path: The path to the file you want to upload
|
|
117
|
+
studio: The name of the studio to upload to. Will show a menu for selection if not specified.
|
|
118
|
+
If provided, should be in the form of <TEAMSPACE-NAME>/<STUDIO-NAME>
|
|
119
|
+
remote_path: The path where the uploaded file should appear on your Studio.
|
|
120
|
+
Has to be within your Studio's home directory and will be relative to that.
|
|
121
|
+
If not specified, will use the name of the file you want to upload
|
|
122
|
+
and place it in your home directory.
|
|
123
|
+
"""
|
|
124
|
+
if remote_path is None:
|
|
125
|
+
remote_path = os.path.basename(path)
|
|
126
|
+
|
|
127
|
+
if Path(path).is_dir():
|
|
128
|
+
raise StudioCliError(f"The provided path is a folder: {path}. Use `lightning upload folder` instead.")
|
|
129
|
+
if not Path(path).exists():
|
|
130
|
+
raise FileNotFoundError(f"The provided path does not exist: {path}.")
|
|
131
|
+
|
|
132
|
+
selected_studio = self._resolve_studio(studio)
|
|
98
133
|
|
|
99
|
-
|
|
100
|
-
teamspace, name = studio.split("/", maxsplit=1)
|
|
101
|
-
for st in possible_studios:
|
|
102
|
-
if st["teamspace"] == teamspace and name == st["name"]:
|
|
103
|
-
return st
|
|
134
|
+
print(f"Uploading to {selected_studio.teamspace.name}/{selected_studio.name}")
|
|
104
135
|
|
|
105
|
-
|
|
106
|
-
|
|
136
|
+
self._single_file_upload(selected_studio, path, remote_path, True)
|
|
137
|
+
|
|
138
|
+
studio_url = (
|
|
139
|
+
_get_cloud_url().replace(":443", "")
|
|
140
|
+
+ "/"
|
|
141
|
+
+ selected_studio.owner.name
|
|
142
|
+
+ "/"
|
|
143
|
+
+ selected_studio.teamspace.name
|
|
144
|
+
+ "/studios/"
|
|
145
|
+
+ selected_studio.name
|
|
146
|
+
)
|
|
147
|
+
print(f"See your file at {studio_url}")
|
|
107
148
|
|
|
108
149
|
def _start_parallel_upload(
|
|
109
150
|
self, executor: concurrent.futures.ThreadPoolExecutor, studio: Studio, upload_state: Dict[str, str]
|
|
@@ -125,57 +166,6 @@ class _Uploads:
|
|
|
125
166
|
studio.upload_file(local_path, remote_path, progress_bar)
|
|
126
167
|
return local_path
|
|
127
168
|
|
|
128
|
-
def _prepare_terminal_menu_all_studios(
|
|
129
|
-
self, possible_studios: List[Dict[str, str]], title: Optional[str] = None
|
|
130
|
-
) -> TerminalMenu:
|
|
131
|
-
if title is None:
|
|
132
|
-
title = "Please select a Studio of the following studios:"
|
|
133
|
-
|
|
134
|
-
return TerminalMenu(
|
|
135
|
-
[f"{s['teamspace']}/{s['name']}" for s in possible_studios], title=title, clear_menu_on_exit=True
|
|
136
|
-
)
|
|
137
|
-
|
|
138
|
-
def _get_possible_studios(self, user: User) -> List[Dict[str, str]]:
|
|
139
|
-
teamspace_api = TeamspaceApi()
|
|
140
|
-
org_api = OrgApi()
|
|
141
|
-
user_api = user._user_api
|
|
142
|
-
possible_studios = []
|
|
143
|
-
|
|
144
|
-
user_api._get_organizations_for_authed_user()
|
|
145
|
-
memberships = user_api._get_all_teamspace_memberships(user_id=user.id)
|
|
146
|
-
|
|
147
|
-
teamspaces = {}
|
|
148
|
-
# get all teamspace memberships
|
|
149
|
-
for membership in memberships:
|
|
150
|
-
teamspace_id = membership.project_id
|
|
151
|
-
|
|
152
|
-
# get all studios for teamspace
|
|
153
|
-
all_studios = user._user_api._get_cloudspaces_for_user(user.id, teamspace_id)
|
|
154
|
-
|
|
155
|
-
for st in all_studios:
|
|
156
|
-
# populate teamspace info if necessary
|
|
157
|
-
if teamspace_id not in teamspaces:
|
|
158
|
-
ts = teamspace_api._get_teamspace_by_id(teamspace_id)
|
|
159
|
-
ts_name = ts.name
|
|
160
|
-
|
|
161
|
-
# get organization if necessary
|
|
162
|
-
if ts.owner_type == "organization":
|
|
163
|
-
org_name = org_api._get_org_by_id(ts.owner_id).name
|
|
164
|
-
user_name = None
|
|
165
|
-
else:
|
|
166
|
-
org_name = None
|
|
167
|
-
|
|
168
|
-
# don't do a request if not necessary
|
|
169
|
-
if ts.owner_id == user.id:
|
|
170
|
-
user_name = user.name
|
|
171
|
-
else:
|
|
172
|
-
user_name = user_api._get_user_by_id(ts.owner_id).username
|
|
173
|
-
|
|
174
|
-
teamspaces[teamspace_id] = {"user": user_name, "org": org_name, "teamspace": ts_name}
|
|
175
|
-
possible_studios.append({"name": st.name, **teamspaces[teamspace_id]})
|
|
176
|
-
|
|
177
|
-
return possible_studios
|
|
178
|
-
|
|
179
169
|
def _dump_current_upload_state(self, studio: Studio, remote_path: str, state_dict: Dict[str, str]) -> None:
|
|
180
170
|
"""Dumps the current upload state so that we can safely resume later."""
|
|
181
171
|
curr_path = os.path.abspath(
|
lightning_sdk/constants.py
CHANGED
|
@@ -1,3 +1,31 @@
|
|
|
1
1
|
import os
|
|
2
|
+
from uuid import uuid4
|
|
2
3
|
|
|
3
|
-
_LIGHTNING_DEBUG =
|
|
4
|
+
_LIGHTNING_DEBUG = {
|
|
5
|
+
"": False,
|
|
6
|
+
"0": False,
|
|
7
|
+
"false": False,
|
|
8
|
+
"no": False,
|
|
9
|
+
"1": True,
|
|
10
|
+
"true": True,
|
|
11
|
+
"yes": True,
|
|
12
|
+
}.get(os.getenv("LIGHTNING_DEBUG", "").lower(), False)
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
class Store:
|
|
16
|
+
def __init__(self) -> None:
|
|
17
|
+
self._d = {}
|
|
18
|
+
# This is needed to ensure the ids are the same within created threads and processes.
|
|
19
|
+
self._list = [str(uuid4().hex) for _ in range(500)]
|
|
20
|
+
|
|
21
|
+
def __getitem__(self, key: str) -> str:
|
|
22
|
+
"""Get item."""
|
|
23
|
+
if key in self._d:
|
|
24
|
+
return self._d[key]
|
|
25
|
+
|
|
26
|
+
value = self._list.pop(0) if self._list else str(uuid4().hex)
|
|
27
|
+
self._d[key] = value
|
|
28
|
+
return value
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
__GLOBAL_LIGHTNING_UNIQUE_IDS_STORE__ = Store()
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
from lightning_sdk.api.deployment_api import (
|
|
2
|
+
AutoScaleConfig,
|
|
3
|
+
BasicAuth,
|
|
4
|
+
Env,
|
|
5
|
+
ExecHealthCheck,
|
|
6
|
+
HttpHealthCheck,
|
|
7
|
+
ReleaseStrategy,
|
|
8
|
+
RollingUpdateReleaseStrategy,
|
|
9
|
+
Secret,
|
|
10
|
+
TokenAuth,
|
|
11
|
+
)
|
|
12
|
+
from lightning_sdk.deployment.deployment import Deployment
|
|
13
|
+
|
|
14
|
+
__all__ = [
|
|
15
|
+
"AutoScaleConfig",
|
|
16
|
+
"BasicAuth",
|
|
17
|
+
"Env",
|
|
18
|
+
"ExecHealthCheck",
|
|
19
|
+
"HttpHealthCheck",
|
|
20
|
+
"ReleaseStrategy",
|
|
21
|
+
"RollingUpdateReleaseStrategy",
|
|
22
|
+
"Secret",
|
|
23
|
+
"TokenAuth",
|
|
24
|
+
"Deployment",
|
|
25
|
+
]
|
|
@@ -0,0 +1,389 @@
|
|
|
1
|
+
import os
|
|
2
|
+
from typing import Any, Dict, List, Optional, Union
|
|
3
|
+
|
|
4
|
+
import requests
|
|
5
|
+
|
|
6
|
+
from lightning_sdk.api import UserApi
|
|
7
|
+
from lightning_sdk.api.deployment_api import (
|
|
8
|
+
Auth,
|
|
9
|
+
AutoScaleConfig,
|
|
10
|
+
BasicAuth,
|
|
11
|
+
DeploymentApi,
|
|
12
|
+
Env,
|
|
13
|
+
ExecHealthCheck,
|
|
14
|
+
HttpHealthCheck,
|
|
15
|
+
ReleaseStrategy,
|
|
16
|
+
Secret,
|
|
17
|
+
TokenAuth,
|
|
18
|
+
restore_auth,
|
|
19
|
+
restore_autoscale,
|
|
20
|
+
restore_env,
|
|
21
|
+
restore_health_check,
|
|
22
|
+
restore_release_strategy,
|
|
23
|
+
to_autoscaling,
|
|
24
|
+
to_endpoint,
|
|
25
|
+
to_spec,
|
|
26
|
+
to_strategy,
|
|
27
|
+
)
|
|
28
|
+
from lightning_sdk.lightning_cloud import login
|
|
29
|
+
from lightning_sdk.lightning_cloud.openapi import V1Deployment
|
|
30
|
+
from lightning_sdk.machine import Machine
|
|
31
|
+
from lightning_sdk.organization import Organization
|
|
32
|
+
from lightning_sdk.services.utilities import _get_cluster
|
|
33
|
+
from lightning_sdk.teamspace import Teamspace
|
|
34
|
+
from lightning_sdk.user import User
|
|
35
|
+
from lightning_sdk.utils.resolve import _resolve_deprecated_cluster, _resolve_org, _resolve_teamspace, _resolve_user
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
class Deployment:
|
|
39
|
+
"""The Lightning AI Deployment.
|
|
40
|
+
|
|
41
|
+
Allows to fully control a deployment, including retrieving the status, making new release
|
|
42
|
+
and switching machine types, etc..
|
|
43
|
+
|
|
44
|
+
Args:
|
|
45
|
+
name: The name of the deployment.
|
|
46
|
+
teamspace: The teamspace in which you want to deploy.
|
|
47
|
+
org: The name of the organization owning the :param`teamspace` in case it is owned by an org
|
|
48
|
+
user: The name of the user owning the :param`teamspace` in case it is owned directly by a user instead of an org
|
|
49
|
+
|
|
50
|
+
Note:
|
|
51
|
+
Since a teamspace can either be owned by an org or by a user directly,
|
|
52
|
+
only one of the arguments can be provided.
|
|
53
|
+
|
|
54
|
+
"""
|
|
55
|
+
|
|
56
|
+
def __init__(
|
|
57
|
+
self,
|
|
58
|
+
name: str, # Only the name is required in case a deployment already exist.
|
|
59
|
+
teamspace: Optional[Union[str, Teamspace]] = None,
|
|
60
|
+
org: Optional[Union[str, Organization]] = None,
|
|
61
|
+
user: Optional[Union[str, User]] = None,
|
|
62
|
+
) -> None:
|
|
63
|
+
self._request_session = None
|
|
64
|
+
|
|
65
|
+
self._auth = login.Auth()
|
|
66
|
+
|
|
67
|
+
try:
|
|
68
|
+
self._auth.authenticate()
|
|
69
|
+
if user is None:
|
|
70
|
+
self._user = User(name=UserApi()._get_user_by_id(self._auth.user_id).username)
|
|
71
|
+
except ConnectionError as e:
|
|
72
|
+
raise e
|
|
73
|
+
|
|
74
|
+
self._name = name
|
|
75
|
+
self._org = _resolve_org(org)
|
|
76
|
+
self._user = _resolve_user(user)
|
|
77
|
+
self._teamspace = _resolve_teamspace(
|
|
78
|
+
teamspace=teamspace, org=self._org, user=self._user if self._org is None else None
|
|
79
|
+
)
|
|
80
|
+
if self._teamspace is None:
|
|
81
|
+
raise ValueError("You need to pass a teamspace or an org for your deployment.")
|
|
82
|
+
|
|
83
|
+
self._deployment_api = DeploymentApi()
|
|
84
|
+
self._cloud_account = _get_cluster(client=self._deployment_api._client, project_id=self._teamspace.id)
|
|
85
|
+
self._is_created = False
|
|
86
|
+
deployment = self._deployment_api.get_deployment_by_name(name, self._teamspace.id)
|
|
87
|
+
if deployment:
|
|
88
|
+
self._is_created = True
|
|
89
|
+
self._deployment = deployment
|
|
90
|
+
|
|
91
|
+
def start(
|
|
92
|
+
self,
|
|
93
|
+
machine: Optional[Machine] = None,
|
|
94
|
+
environment: Optional[str] = None,
|
|
95
|
+
autoscale: Optional[AutoScaleConfig] = None,
|
|
96
|
+
ports: Optional[List[float]] = None,
|
|
97
|
+
release_strategy: Optional[ReleaseStrategy] = None,
|
|
98
|
+
entrypoint: Optional[str] = None,
|
|
99
|
+
command: Optional[str] = None,
|
|
100
|
+
env: Optional[List[Union[Env, Secret]]] = None,
|
|
101
|
+
spot: Optional[bool] = None,
|
|
102
|
+
replicas: Optional[int] = None,
|
|
103
|
+
health_check: Optional[Union[HttpHealthCheck, ExecHealthCheck]] = None,
|
|
104
|
+
auth: Optional[Union[BasicAuth, TokenAuth]] = None,
|
|
105
|
+
cloud_account: Optional[str] = None,
|
|
106
|
+
custom_domain: Optional[str] = None,
|
|
107
|
+
cluster: Optional[str] = None, # deprecated in favor of cloud_account
|
|
108
|
+
) -> None:
|
|
109
|
+
"""The Lightning AI Deployment.
|
|
110
|
+
|
|
111
|
+
This method creates the first release of the deployment.
|
|
112
|
+
If a release already exists, it would raise a RuntimeError.
|
|
113
|
+
|
|
114
|
+
Args:
|
|
115
|
+
name: The name of the deployment.
|
|
116
|
+
machine: The machine used by the deployment replicas.
|
|
117
|
+
autoscale: The list of the metrics to autoscale on.
|
|
118
|
+
ports: The ports to reach your replica services.
|
|
119
|
+
environment: The environement used by the deployment. Currentely, only docker images.
|
|
120
|
+
release_strategy: The release strategy to use when changing core deployment specs.
|
|
121
|
+
entrypoint: The docker container entrypoint.
|
|
122
|
+
command: The docker container command.
|
|
123
|
+
env: The environements variables or secrets to use.
|
|
124
|
+
spot: Wether to use spot instances for the replicas.
|
|
125
|
+
replicas: The number of replicas to deploy with.
|
|
126
|
+
health_check: The health check config to know whether your service is ready to receive traffic.
|
|
127
|
+
auth: The auth config to protect your services. Only Basic and Token supported.
|
|
128
|
+
cloud_account: The name of the cloud account, the studio should be created on.
|
|
129
|
+
Doesn't matter when the studio already exists.
|
|
130
|
+
custom_domain: Whether your service would be referenced under a custom doamin.
|
|
131
|
+
|
|
132
|
+
Note:
|
|
133
|
+
Since a teamspace can either be owned by an org or by a user directly,
|
|
134
|
+
only one of the arguments can be provided.
|
|
135
|
+
|
|
136
|
+
"""
|
|
137
|
+
if self._is_created:
|
|
138
|
+
raise RuntimeError("This deployment has already been started.")
|
|
139
|
+
|
|
140
|
+
cloud_account = _resolve_deprecated_cluster(cloud_account, cluster)
|
|
141
|
+
|
|
142
|
+
if cloud_account is None and self._cloud_account is not None:
|
|
143
|
+
print(f"No cloud account was provided, defaulting to {self._cloud_account.cluster_id}")
|
|
144
|
+
cloud_account = os.getenv("LIGHTNING_CLUSTER_ID") or self._cloud_account.cluster_id
|
|
145
|
+
|
|
146
|
+
self._deployment = self._deployment_api.create_deployment(
|
|
147
|
+
V1Deployment(
|
|
148
|
+
autoscaling=to_autoscaling(autoscale, replicas),
|
|
149
|
+
endpoint=to_endpoint(ports, auth, custom_domain),
|
|
150
|
+
name=self._name,
|
|
151
|
+
project_id=self._teamspace.id,
|
|
152
|
+
replicas=replicas,
|
|
153
|
+
spec=to_spec(
|
|
154
|
+
cloud_account=cloud_account,
|
|
155
|
+
command=command,
|
|
156
|
+
entrypoint=entrypoint,
|
|
157
|
+
env=env,
|
|
158
|
+
environment=environment,
|
|
159
|
+
spot=spot,
|
|
160
|
+
machine=machine,
|
|
161
|
+
health_check=health_check,
|
|
162
|
+
),
|
|
163
|
+
strategy=to_strategy(release_strategy),
|
|
164
|
+
)
|
|
165
|
+
)
|
|
166
|
+
self._is_created = True
|
|
167
|
+
|
|
168
|
+
def update(
|
|
169
|
+
self,
|
|
170
|
+
# Changing those arguments create a new release
|
|
171
|
+
machine: Optional[Machine] = None,
|
|
172
|
+
environment: Optional[str] = None,
|
|
173
|
+
entrypoint: Optional[str] = None,
|
|
174
|
+
command: Optional[str] = None,
|
|
175
|
+
env: Optional[List[Union[Env, Secret]]] = None,
|
|
176
|
+
spot: Optional[bool] = None,
|
|
177
|
+
cloud_account: Optional[str] = None,
|
|
178
|
+
health_check: Optional[Union[HttpHealthCheck, ExecHealthCheck]] = None,
|
|
179
|
+
# Changing those arguments don't create a new release
|
|
180
|
+
min_replicas: Optional[int] = None,
|
|
181
|
+
max_replicas: Optional[int] = None,
|
|
182
|
+
name: Optional[str] = None,
|
|
183
|
+
ports: Optional[List[float]] = None,
|
|
184
|
+
release_strategy: Optional[ReleaseStrategy] = None,
|
|
185
|
+
replicas: Optional[int] = None,
|
|
186
|
+
auth: Optional[Union[BasicAuth, TokenAuth]] = None,
|
|
187
|
+
custom_domain: Optional[str] = None,
|
|
188
|
+
cluster: Optional[str] = None, # deprecated in favor of cloud_account
|
|
189
|
+
) -> None:
|
|
190
|
+
cloud_account = _resolve_deprecated_cluster(cloud_account, cluster)
|
|
191
|
+
|
|
192
|
+
self._deployment = self._deployment_api.update_deployment(
|
|
193
|
+
self._deployment,
|
|
194
|
+
name=name or self._name,
|
|
195
|
+
spot=spot,
|
|
196
|
+
replicas=replicas,
|
|
197
|
+
min_replicas=min_replicas,
|
|
198
|
+
max_replicas=max_replicas,
|
|
199
|
+
cloud_account=cloud_account,
|
|
200
|
+
machine=machine,
|
|
201
|
+
environment=environment,
|
|
202
|
+
entrypoint=entrypoint,
|
|
203
|
+
command=command,
|
|
204
|
+
ports=ports,
|
|
205
|
+
custom_domain=custom_domain,
|
|
206
|
+
auth=auth,
|
|
207
|
+
env=env,
|
|
208
|
+
health_check=health_check,
|
|
209
|
+
release_strategy=release_strategy,
|
|
210
|
+
)
|
|
211
|
+
|
|
212
|
+
def stop(self) -> None:
|
|
213
|
+
"""All the deployment replicas will be stopped and all their traffic blocked."""
|
|
214
|
+
self._deployment = self._deployment_api.stop(self._deployment)
|
|
215
|
+
|
|
216
|
+
@property
|
|
217
|
+
def replicas(self) -> Optional[int]:
|
|
218
|
+
"""The default number of replicas the release starts with."""
|
|
219
|
+
if self._deployment:
|
|
220
|
+
self._deployment = self._deployment_api.get_deployment_by_name(self._name, self._teamspace.id)
|
|
221
|
+
return self._deployment.replicas
|
|
222
|
+
return None
|
|
223
|
+
|
|
224
|
+
@property
|
|
225
|
+
def min_replicas(self) -> Optional[int]:
|
|
226
|
+
"""The minimum number of replicas."""
|
|
227
|
+
if self._deployment:
|
|
228
|
+
self._deployment = self._deployment_api.get_deployment_by_name(self._name, self._teamspace.id)
|
|
229
|
+
return self._deployment.autoscaling.min_replicas
|
|
230
|
+
return None
|
|
231
|
+
|
|
232
|
+
@property
|
|
233
|
+
def max_replicas(self) -> Optional[int]:
|
|
234
|
+
"""The maximum number of replicas."""
|
|
235
|
+
if self._deployment:
|
|
236
|
+
self._deployment = self._deployment_api.get_deployment_by_name(self._name, self._teamspace.id)
|
|
237
|
+
return self._deployment.autoscaling.max_replicas
|
|
238
|
+
return None
|
|
239
|
+
|
|
240
|
+
@property
|
|
241
|
+
def ports(self) -> Optional[int]:
|
|
242
|
+
"""The exposed ports on which you can reach your deployment."""
|
|
243
|
+
if self._deployment:
|
|
244
|
+
self._deployment = self._deployment_api.get_deployment_by_name(self._name, self._teamspace.id)
|
|
245
|
+
return [int(p) for p in self._deployment.endpoint.ports]
|
|
246
|
+
return None
|
|
247
|
+
|
|
248
|
+
@property
|
|
249
|
+
def release_strategy(self) -> Optional[ReleaseStrategy]:
|
|
250
|
+
"""The release strategy of the deployment."""
|
|
251
|
+
if self._deployment:
|
|
252
|
+
self._deployment = self._deployment_api.get_deployment_by_name(self._name, self._teamspace.id)
|
|
253
|
+
return restore_release_strategy(self._deployment.strategy)
|
|
254
|
+
return None
|
|
255
|
+
|
|
256
|
+
@property
|
|
257
|
+
def readiness_probe(self) -> Optional[Union[HttpHealthCheck, ExecHealthCheck]]:
|
|
258
|
+
"""The health check to validate the replicas are ready to receive traffic."""
|
|
259
|
+
if self._deployment:
|
|
260
|
+
self._deployment = self._deployment_api.get_deployment_by_name(self._name, self._teamspace.id)
|
|
261
|
+
return restore_health_check(self._deployment.spec.readiness_probe)
|
|
262
|
+
return None
|
|
263
|
+
|
|
264
|
+
@property
|
|
265
|
+
def auth(self) -> Optional[Auth]:
|
|
266
|
+
"""The authentification configuration of the deployment."""
|
|
267
|
+
if self._deployment:
|
|
268
|
+
self._deployment = self._deployment_api.get_deployment_by_name(self._name, self._teamspace.id)
|
|
269
|
+
return restore_auth(self._deployment.endpoint.auth)
|
|
270
|
+
return None
|
|
271
|
+
|
|
272
|
+
@property
|
|
273
|
+
def autoscale(self) -> Optional[AutoScaleConfig]:
|
|
274
|
+
"""The autoscaling configuration of the deployment."""
|
|
275
|
+
if self._deployment:
|
|
276
|
+
self._deployment = self._deployment_api.get_deployment_by_name(self._name, self._teamspace.id)
|
|
277
|
+
return restore_autoscale(self._deployment.autoscaling)
|
|
278
|
+
return None
|
|
279
|
+
|
|
280
|
+
@property
|
|
281
|
+
def env(self) -> Optional[AutoScaleConfig]:
|
|
282
|
+
"""The env configuration of the deployment."""
|
|
283
|
+
if self._deployment:
|
|
284
|
+
self._deployment = self._deployment_api.get_deployment_by_name(self._name, self._teamspace.id)
|
|
285
|
+
return restore_env(self._deployment.spec.env)
|
|
286
|
+
return None
|
|
287
|
+
|
|
288
|
+
@property
|
|
289
|
+
def urls(self) -> Optional[List[str]]:
|
|
290
|
+
"""The urls to reach the deployment."""
|
|
291
|
+
if self._deployment:
|
|
292
|
+
self._deployment = self._deployment_api.get_deployment_by_name(self._name, self._teamspace.id)
|
|
293
|
+
return self._deployment.status.urls
|
|
294
|
+
return None
|
|
295
|
+
|
|
296
|
+
@property
|
|
297
|
+
def pending_replicas(self) -> Optional[List[str]]:
|
|
298
|
+
"""The number of pending replicas."""
|
|
299
|
+
if self._deployment:
|
|
300
|
+
self._deployment = self._deployment_api.get_deployment_by_name(self._name, self._teamspace.id)
|
|
301
|
+
return self._deployment.status.pending_replicas
|
|
302
|
+
return None
|
|
303
|
+
|
|
304
|
+
@property
|
|
305
|
+
def failing_replicas(self) -> Optional[List[str]]:
|
|
306
|
+
"""The number of failing replicas."""
|
|
307
|
+
if self._deployment:
|
|
308
|
+
self._deployment = self._deployment_api.get_deployment_by_name(self._name, self._teamspace.id)
|
|
309
|
+
return self._deployment.status.failing_replicas
|
|
310
|
+
return None
|
|
311
|
+
|
|
312
|
+
@property
|
|
313
|
+
def deleting_replicas(self) -> Optional[List[str]]:
|
|
314
|
+
"""The number of deleting replicas."""
|
|
315
|
+
if self._deployment:
|
|
316
|
+
self._deployment = self._deployment_api.get_deployment_by_name(self._name, self._teamspace.id)
|
|
317
|
+
return self._deployment.status.deleting_replicas
|
|
318
|
+
return None
|
|
319
|
+
|
|
320
|
+
@property
|
|
321
|
+
def cloud_account(self) -> Optional[str]:
|
|
322
|
+
"""The cloud_account of the replicas."""
|
|
323
|
+
if self._deployment:
|
|
324
|
+
self._deployment = self._deployment_api.get_deployment_by_name(self._name, self._teamspace.id)
|
|
325
|
+
return self._deployment.spec.cluster_id
|
|
326
|
+
return None
|
|
327
|
+
|
|
328
|
+
@property
|
|
329
|
+
def user(self) -> Optional[User]:
|
|
330
|
+
"""The teamspace of the deployment."""
|
|
331
|
+
return self._user
|
|
332
|
+
|
|
333
|
+
@property
|
|
334
|
+
def teamspace(self) -> Optional[Teamspace]:
|
|
335
|
+
"""The teamspace of the deployment."""
|
|
336
|
+
return self._teamspace
|
|
337
|
+
|
|
338
|
+
@property
|
|
339
|
+
def is_started(self) -> bool:
|
|
340
|
+
return self._is_created
|
|
341
|
+
|
|
342
|
+
@property
|
|
343
|
+
def _session(self) -> Any:
|
|
344
|
+
if self._request_session is None:
|
|
345
|
+
self._request_session = requests.Session()
|
|
346
|
+
self._request_session.headers.update(**self._get_auth_headers())
|
|
347
|
+
return self._request_session
|
|
348
|
+
|
|
349
|
+
def _get_auth_headers(self) -> Dict:
|
|
350
|
+
if self._deployment:
|
|
351
|
+
self._deployment = self._deployment_api.get_deployment_by_name(self._name, self._teamspace.id)
|
|
352
|
+
|
|
353
|
+
if self._deployment.endpoint.auth.user_api_key:
|
|
354
|
+
return {"Authorization": f"Bearer {self._auth.api_key}"}
|
|
355
|
+
|
|
356
|
+
# TODO: Add support for all auth
|
|
357
|
+
return {}
|
|
358
|
+
|
|
359
|
+
def _get_url(self, port: Optional[int] = None) -> Any:
|
|
360
|
+
urls = self.urls
|
|
361
|
+
if urls is None:
|
|
362
|
+
return None
|
|
363
|
+
|
|
364
|
+
if port is None:
|
|
365
|
+
return urls[0]
|
|
366
|
+
|
|
367
|
+
return None
|
|
368
|
+
|
|
369
|
+
def _prepare_url(self, path: str = "", port: Optional[int] = None) -> str:
|
|
370
|
+
url = self._get_url(port)
|
|
371
|
+
if url is None:
|
|
372
|
+
raise ValueError("The url wasn't properly defined")
|
|
373
|
+
|
|
374
|
+
if path.startswith("/"):
|
|
375
|
+
path = path[1:]
|
|
376
|
+
|
|
377
|
+
return f"{url}/{path}"
|
|
378
|
+
|
|
379
|
+
def get(self, path: str = "", port: Optional[int] = None, **kwargs: Any) -> Any:
|
|
380
|
+
return self._session.get(self._prepare_url(path, port), verify=False, **kwargs)
|
|
381
|
+
|
|
382
|
+
def post(self, path: str = "", port: Optional[int] = None, **kwargs: Any) -> Any:
|
|
383
|
+
return self._session.post(self._prepare_url(path, port), verify=False, **kwargs)
|
|
384
|
+
|
|
385
|
+
def put(self, path: str = "", port: Optional[int] = None, **kwargs: Any) -> Any:
|
|
386
|
+
return self._session.put(self._prepare_url(path, port), verify=False, **kwargs)
|
|
387
|
+
|
|
388
|
+
def delete(self, path: str = "", port: Optional[int] = None, **kwargs: Any) -> Any:
|
|
389
|
+
return self._session.delete(self._prepare_url(path, port), verify=False, **kwargs)
|