lightning-sdk 0.1.49__py3-none-any.whl → 2025.11.5__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 +19 -9
- lightning_sdk/__version__.py +3 -0
- lightning_sdk/agents.py +2 -1
- lightning_sdk/ai_hub.py +43 -38
- lightning_sdk/api/__init__.py +2 -0
- lightning_sdk/api/ai_hub_api.py +49 -6
- lightning_sdk/api/base_studio_api.py +90 -0
- lightning_sdk/api/cloud_account_api.py +225 -0
- lightning_sdk/api/deployment_api.py +133 -27
- lightning_sdk/api/job_api.py +147 -34
- lightning_sdk/api/license_api.py +37 -0
- lightning_sdk/api/lit_container_api.py +231 -19
- lightning_sdk/api/llm_api.py +306 -0
- lightning_sdk/api/mmt_api.py +112 -28
- lightning_sdk/api/pipeline_api.py +120 -0
- lightning_sdk/api/studio_api.py +440 -89
- lightning_sdk/api/teamspace_api.py +269 -31
- lightning_sdk/api/user_api.py +56 -2
- lightning_sdk/api/utils.py +185 -52
- lightning_sdk/base_studio.py +123 -0
- lightning_sdk/cli/__init__.py +1 -0
- lightning_sdk/cli/base_studio/__init__.py +10 -0
- lightning_sdk/cli/base_studio/list.py +43 -0
- lightning_sdk/cli/config/__init__.py +14 -0
- lightning_sdk/cli/config/get.py +57 -0
- lightning_sdk/cli/config/set.py +92 -0
- lightning_sdk/cli/config/show.py +9 -0
- lightning_sdk/cli/entrypoint.py +98 -56
- lightning_sdk/cli/groups.py +56 -0
- lightning_sdk/cli/job/__init__.py +7 -0
- lightning_sdk/cli/legacy/__init__.py +0 -0
- lightning_sdk/cli/legacy/ai_hub.py +65 -0
- lightning_sdk/cli/legacy/clusters_menu.py +49 -0
- lightning_sdk/cli/legacy/configure.py +129 -0
- lightning_sdk/cli/legacy/connect.py +34 -0
- lightning_sdk/cli/legacy/create.py +115 -0
- lightning_sdk/cli/legacy/delete.py +131 -0
- lightning_sdk/cli/legacy/deploy/__init__.py +0 -0
- lightning_sdk/cli/legacy/deploy/_auth.py +196 -0
- lightning_sdk/cli/legacy/deploy/devbox.py +163 -0
- lightning_sdk/cli/legacy/deploy/serve.py +452 -0
- lightning_sdk/cli/legacy/docker_cli.py +22 -0
- lightning_sdk/cli/legacy/download.py +322 -0
- lightning_sdk/cli/legacy/entrypoint.py +110 -0
- lightning_sdk/cli/legacy/generate.py +52 -0
- lightning_sdk/cli/legacy/inspection.py +45 -0
- lightning_sdk/cli/{job_and_mmt_action.py → legacy/job_and_mmt_action.py} +6 -6
- lightning_sdk/cli/{jobs_menu.py → legacy/jobs_menu.py} +3 -2
- lightning_sdk/cli/legacy/list.py +326 -0
- lightning_sdk/cli/{mmts_menu.py → legacy/mmts_menu.py} +3 -2
- lightning_sdk/cli/legacy/open.py +81 -0
- lightning_sdk/cli/legacy/run.py +443 -0
- lightning_sdk/cli/legacy/start.py +107 -0
- lightning_sdk/cli/legacy/stop.py +107 -0
- lightning_sdk/cli/{studios_menu.py → legacy/studios_menu.py} +24 -1
- lightning_sdk/cli/legacy/switch.py +63 -0
- lightning_sdk/cli/{teamspace_menu.py → legacy/teamspace_menu.py} +12 -3
- lightning_sdk/cli/legacy/upload.py +382 -0
- lightning_sdk/cli/license/__init__.py +14 -0
- lightning_sdk/cli/license/get.py +15 -0
- lightning_sdk/cli/license/list.py +45 -0
- lightning_sdk/cli/license/set.py +13 -0
- lightning_sdk/cli/mmt/__init__.py +7 -0
- lightning_sdk/cli/studio/__init__.py +24 -0
- lightning_sdk/cli/studio/connect.py +139 -0
- lightning_sdk/cli/studio/create.py +96 -0
- lightning_sdk/cli/studio/delete.py +49 -0
- lightning_sdk/cli/studio/list.py +85 -0
- lightning_sdk/cli/studio/ssh.py +64 -0
- lightning_sdk/cli/studio/start.py +115 -0
- lightning_sdk/cli/studio/stop.py +45 -0
- lightning_sdk/cli/studio/switch.py +66 -0
- lightning_sdk/cli/utils/__init__.py +7 -0
- lightning_sdk/cli/utils/cloud_account_map.py +10 -0
- lightning_sdk/cli/utils/coloring.py +60 -0
- lightning_sdk/cli/utils/get_base_studio.py +24 -0
- lightning_sdk/cli/utils/handle_machine_and_gpus_args.py +69 -0
- lightning_sdk/cli/utils/logging.py +122 -0
- lightning_sdk/cli/utils/owner_selection.py +110 -0
- lightning_sdk/cli/utils/resolve.py +28 -0
- lightning_sdk/cli/utils/richt_print.py +35 -0
- lightning_sdk/cli/utils/save_to_config.py +27 -0
- lightning_sdk/cli/utils/ssh_connection.py +59 -0
- lightning_sdk/cli/utils/studio_selection.py +113 -0
- lightning_sdk/cli/utils/teamspace_selection.py +125 -0
- lightning_sdk/cli/vm/__init__.py +20 -0
- lightning_sdk/cli/vm/create.py +33 -0
- lightning_sdk/cli/vm/delete.py +25 -0
- lightning_sdk/cli/vm/list.py +30 -0
- lightning_sdk/cli/vm/ssh.py +31 -0
- lightning_sdk/cli/vm/start.py +60 -0
- lightning_sdk/cli/vm/stop.py +25 -0
- lightning_sdk/cli/vm/switch.py +38 -0
- lightning_sdk/constants.py +1 -0
- lightning_sdk/deployment/__init__.py +4 -0
- lightning_sdk/deployment/deployment.py +208 -28
- lightning_sdk/helpers.py +73 -34
- lightning_sdk/job/base.py +112 -12
- lightning_sdk/job/job.py +73 -44
- lightning_sdk/job/v1.py +28 -35
- lightning_sdk/job/v2.py +54 -17
- lightning_sdk/job/work.py +7 -3
- lightning_sdk/lightning_cloud/login.py +325 -18
- lightning_sdk/lightning_cloud/openapi/__init__.py +346 -26
- lightning_sdk/lightning_cloud/openapi/api/__init__.py +14 -0
- lightning_sdk/lightning_cloud/openapi/api/assistants_service_api.py +1801 -384
- lightning_sdk/lightning_cloud/openapi/api/auth_service_api.py +376 -0
- lightning_sdk/lightning_cloud/openapi/api/billing_service_api.py +414 -2
- lightning_sdk/lightning_cloud/openapi/api/blog_posts_service_api.py +533 -0
- lightning_sdk/lightning_cloud/openapi/api/cloud_space_environment_template_service_api.py +638 -0
- lightning_sdk/lightning_cloud/openapi/api/cloud_space_service_api.py +2563 -866
- lightning_sdk/lightning_cloud/openapi/api/cloudy_service_api.py +327 -0
- lightning_sdk/lightning_cloud/openapi/api/cluster_service_api.py +1720 -347
- lightning_sdk/lightning_cloud/openapi/api/data_connection_service_api.py +210 -4
- lightning_sdk/lightning_cloud/openapi/api/endpoint_service_api.py +126 -2119
- lightning_sdk/lightning_cloud/openapi/api/file_system_service_api.py +283 -0
- lightning_sdk/lightning_cloud/openapi/api/git_credentials_service_api.py +497 -0
- lightning_sdk/lightning_cloud/openapi/api/incidents_service_api.py +1058 -0
- lightning_sdk/lightning_cloud/openapi/api/jobs_service_api.py +2326 -492
- lightning_sdk/lightning_cloud/openapi/api/k8_s_cluster_service_api.py +2273 -0
- lightning_sdk/lightning_cloud/openapi/api/lit_dataset_service_api.py +1973 -0
- lightning_sdk/lightning_cloud/openapi/api/lit_logger_service_api.py +17 -5
- lightning_sdk/lightning_cloud/openapi/api/lit_registry_service_api.py +473 -5
- lightning_sdk/lightning_cloud/openapi/api/markets_service_api.py +145 -0
- lightning_sdk/lightning_cloud/openapi/api/models_store_api.py +24 -24
- lightning_sdk/lightning_cloud/openapi/api/organizations_service_api.py +105 -0
- lightning_sdk/lightning_cloud/openapi/api/pipeline_templates_service_api.py +339 -0
- lightning_sdk/lightning_cloud/openapi/api/pipelines_service_api.py +795 -0
- lightning_sdk/lightning_cloud/openapi/api/product_license_service_api.py +525 -0
- lightning_sdk/lightning_cloud/openapi/api/projects_service_api.py +106 -5
- lightning_sdk/lightning_cloud/openapi/api/schedules_service_api.py +924 -0
- lightning_sdk/lightning_cloud/openapi/api/sdk_command_history_service_api.py +141 -0
- lightning_sdk/lightning_cloud/openapi/api/slurm_jobs_user_service_api.py +202 -0
- lightning_sdk/lightning_cloud/openapi/api/storage_service_api.py +1508 -251
- lightning_sdk/lightning_cloud/openapi/api/user_service_api.py +121 -97
- lightning_sdk/lightning_cloud/openapi/api/volume_service_api.py +258 -0
- lightning_sdk/lightning_cloud/openapi/configuration.py +4 -20
- lightning_sdk/lightning_cloud/openapi/models/__init__.py +332 -26
- lightning_sdk/lightning_cloud/openapi/models/agentmanagedendpoints_id_body.py +27 -1
- lightning_sdk/lightning_cloud/openapi/models/agents_id_body.py +79 -1
- lightning_sdk/lightning_cloud/openapi/models/alertingevents_id_body.py +409 -0
- lightning_sdk/lightning_cloud/openapi/models/alerts_config_billing.py +175 -0
- lightning_sdk/lightning_cloud/openapi/models/alerts_config_studios.py +149 -0
- lightning_sdk/lightning_cloud/openapi/models/assistant_id_conversations_body.py +303 -17
- lightning_sdk/lightning_cloud/openapi/models/blogposts_id_body.py +305 -0
- lightning_sdk/lightning_cloud/openapi/models/cloudspace_id_systemmetrics_body.py +149 -0
- lightning_sdk/lightning_cloud/openapi/models/cloudspace_id_visibility_body.py +149 -0
- lightning_sdk/lightning_cloud/openapi/models/cloudspaces_id_body.py +53 -1
- lightning_sdk/lightning_cloud/openapi/models/cluster_id_capacityblock_body.py +15 -15
- lightning_sdk/lightning_cloud/openapi/models/cluster_id_capacityreservations_body.py +81 -3
- lightning_sdk/lightning_cloud/openapi/models/cluster_id_kubernetestemplates_body.py +201 -0
- lightning_sdk/lightning_cloud/openapi/models/cluster_id_metrics_body.py +305 -0
- lightning_sdk/lightning_cloud/openapi/models/cluster_id_slurmusers_body.py +201 -0
- lightning_sdk/lightning_cloud/openapi/models/cluster_id_usagerestrictions_body.py +201 -0
- lightning_sdk/lightning_cloud/openapi/models/conversations_id_body1.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/create.py +105 -1
- lightning_sdk/lightning_cloud/openapi/models/create_deployment_request_defines_a_spec_for_the_job_that_allows_for_autoscaling_jobs.py +131 -1
- lightning_sdk/lightning_cloud/openapi/models/create_machine_request_represents_the_request_to_create_a_machine.py +461 -0
- lightning_sdk/lightning_cloud/openapi/models/credits_autoreplenish_body.py +175 -0
- lightning_sdk/lightning_cloud/openapi/models/credits_autoreplenish_body1.py +175 -0
- lightning_sdk/lightning_cloud/openapi/models/dataset_id_versions_body.py +149 -0
- lightning_sdk/lightning_cloud/openapi/models/dataset_id_visibility_body.py +149 -0
- lightning_sdk/lightning_cloud/openapi/models/deployment_id_alertingpolicies_body.py +357 -0
- lightning_sdk/lightning_cloud/openapi/models/deployment_id_alertingpolicies_body1.py +331 -0
- lightning_sdk/lightning_cloud/openapi/models/deployments_id_body.py +315 -3
- lightning_sdk/lightning_cloud/openapi/models/endpoints_id_body.py +27 -1
- lightning_sdk/lightning_cloud/openapi/models/externalv1_cloud_space_instance_status.py +199 -69
- lightning_sdk/lightning_cloud/openapi/models/externalv1_cluster.py +27 -1
- lightning_sdk/lightning_cloud/openapi/models/externalv1_user_status.py +79 -1
- lightning_sdk/lightning_cloud/openapi/models/id_codeconfig_body.py +1 -53
- lightning_sdk/lightning_cloud/openapi/models/id_contactowner_body.py +149 -0
- lightning_sdk/lightning_cloud/openapi/models/id_fork_body1.py +27 -1
- lightning_sdk/lightning_cloud/openapi/models/id_render_body.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/id_reportrestarttimings_body.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/id_sleepconfig_body.py +175 -0
- lightning_sdk/lightning_cloud/openapi/models/id_transfer_body.py +175 -0
- lightning_sdk/lightning_cloud/openapi/models/id_visibility_body1.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/id_visibility_body2.py +149 -0
- lightning_sdk/lightning_cloud/openapi/models/incident_id_messages_body.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/incidents_id_body.py +279 -0
- lightning_sdk/lightning_cloud/openapi/models/{v1_list_service_executions_response.py → job_id_reportroutingtelemetry_body.py} +23 -23
- lightning_sdk/lightning_cloud/openapi/models/kubernetestemplates_id_body.py +201 -0
- lightning_sdk/lightning_cloud/openapi/models/license_key_validate_body.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/litdatasets_dataset_id_body.py +149 -0
- lightning_sdk/lightning_cloud/openapi/models/litregistry_lit_repo_name_body.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/message_id_actions_body.py +201 -0
- lightning_sdk/lightning_cloud/openapi/models/messages_id_body.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/messages_message_id_body.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/metricsstream_create_body.py +79 -1
- lightning_sdk/lightning_cloud/openapi/models/metricsstream_id_body.py +27 -1
- lightning_sdk/lightning_cloud/openapi/models/model_id_versions_body.py +27 -1
- lightning_sdk/lightning_cloud/openapi/models/model_id_visibility_body.py +27 -1
- lightning_sdk/lightning_cloud/openapi/models/models_id_body.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/models_model_id_body.py +109 -31
- lightning_sdk/lightning_cloud/openapi/models/models_model_id_body1.py +149 -0
- lightning_sdk/lightning_cloud/openapi/models/org_id_memberships_body.py +27 -1
- lightning_sdk/lightning_cloud/openapi/models/orgs_id_body.py +627 -3
- lightning_sdk/lightning_cloud/openapi/models/pipelines_id_body.py +539 -0
- lightning_sdk/lightning_cloud/openapi/models/pipelines_id_body1.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/pipelinetemplates_id_body.py +331 -0
- lightning_sdk/lightning_cloud/openapi/models/project_id_agents_body.py +27 -1
- lightning_sdk/lightning_cloud/openapi/models/project_id_cloudspaces_body.py +131 -1
- lightning_sdk/lightning_cloud/openapi/models/project_id_litdatasets_body.py +227 -0
- lightning_sdk/lightning_cloud/openapi/models/project_id_litregistry_body.py +2 -0
- lightning_sdk/lightning_cloud/openapi/models/project_id_pipelines_body.py +253 -0
- lightning_sdk/lightning_cloud/openapi/models/project_id_schedules_body.py +331 -0
- lightning_sdk/lightning_cloud/openapi/models/project_id_storage_body.py +27 -1
- lightning_sdk/lightning_cloud/openapi/models/project_id_storagetransfers_body.py +175 -0
- lightning_sdk/lightning_cloud/openapi/models/project_tab_management_messages.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/projects_id_body.py +523 -3
- lightning_sdk/lightning_cloud/openapi/models/{service_artifact_artifact_kind.py → protobuf_null_value.py} +7 -9
- lightning_sdk/lightning_cloud/openapi/models/schedules_id_body.py +513 -0
- lightning_sdk/lightning_cloud/openapi/models/server_id_alerts_body.py +201 -0
- lightning_sdk/lightning_cloud/openapi/models/setup.py +149 -0
- lightning_sdk/lightning_cloud/openapi/models/slurm_jobs_body.py +93 -15
- lightning_sdk/lightning_cloud/openapi/models/storage_complete_body.py +41 -15
- lightning_sdk/lightning_cloud/openapi/models/storagetransfers_validate_body.py +149 -0
- lightning_sdk/lightning_cloud/openapi/models/update.py +233 -129
- lightning_sdk/lightning_cloud/openapi/models/update1.py +383 -0
- lightning_sdk/lightning_cloud/openapi/models/upload_id_complete_body1.py +149 -0
- lightning_sdk/lightning_cloud/openapi/models/upload_id_parts_body1.py +149 -0
- lightning_sdk/lightning_cloud/openapi/models/uploads_upload_id_body.py +1 -27
- lightning_sdk/lightning_cloud/openapi/models/uploads_upload_id_body1.py +201 -0
- lightning_sdk/lightning_cloud/openapi/models/usagerestrictions_id_body.py +201 -0
- lightning_sdk/lightning_cloud/openapi/models/user_id_affiliatelinks_body.py +107 -3
- lightning_sdk/lightning_cloud/openapi/models/user_id_upgradetrigger_body.py +201 -0
- lightning_sdk/lightning_cloud/openapi/models/user_user_id_body.py +201 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_abort_storage_transfer_response.py +97 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_agent_job.py +188 -6
- lightning_sdk/lightning_cloud/openapi/models/v1_aggregated_pod_metrics.py +799 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_ai_pod_v1.py +175 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_alert_method.py +102 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_alerts_config.py +149 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_artifact.py +27 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_assistant.py +79 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_assistant_model_status.py +6 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_assistant_session_daily_aggregated.py +383 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_author.py +201 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_aws_direct_v1.py +53 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_billing_subscription.py +27 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_billing_tier.py +1 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_blog_post.py +435 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_cancel_running_cloud_space_instance_transfer_response.py +97 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_capacity_block_offering.py +27 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_check_cluster_name_availability_request.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_check_cluster_name_availability_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_cloud_provider.py +117 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_cloud_space.py +313 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_cloud_space_artifact_event.py +149 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_cloud_space_artifact_event_type.py +103 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_cloud_space_cold_start_metrics.py +669 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_cloud_space_cold_start_metrics_stats.py +357 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_cloud_space_environment_config.py +149 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_cloud_space_environment_template.py +409 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_cloud_space_environment_template_config.py +331 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_cloud_space_environment_type.py +105 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_cloud_space_session.py +29 -3
- lightning_sdk/lightning_cloud/openapi/models/v1_cloud_space_source_type.py +103 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_cloud_space_specialized_view.py +105 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_cloud_space_state.py +1 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_cloud_space_transfer_metadata.py +331 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_cloudflare_v1.py +227 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_cloudy_expert.py +279 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_cloudy_settings.py +227 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_cluster_accelerator.py +445 -3
- lightning_sdk/lightning_cloud/openapi/models/v1_cluster_capacity_reservation.py +211 -3
- lightning_sdk/lightning_cloud/openapi/models/v1_cluster_deletion_options.py +27 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_cluster_metrics.py +1527 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_cluster_security_options.py +209 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_cluster_spec.py +521 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_cluster_status.py +27 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_cluster_tagging_options.py +55 -3
- lightning_sdk/lightning_cloud/openapi/models/v1_cluster_type.py +2 -0
- lightning_sdk/lightning_cloud/openapi/models/{v1_upload_service_execution_artifact_response.py → v1_cluster_upload.py} +34 -34
- lightning_sdk/lightning_cloud/openapi/models/v1_cluster_usage_restriction.py +227 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_complete_lit_dataset_multi_part_upload_response.py +97 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_complete_lit_dataset_upload_response.py +97 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_complete_running_cloud_space_instance_transfer_response.py +97 -0
- lightning_sdk/lightning_cloud/openapi/models/{id_complete_body.py → v1_complete_upload_temporary_artifact_request.py} +29 -29
- lightning_sdk/lightning_cloud/openapi/models/v1_contact_assistant_owner_reason.py +102 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_contact_assistant_owner_response.py +97 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_container_metrics.py +461 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_conversation.py +53 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_conversation_response_chunk.py +107 -3
- lightning_sdk/lightning_cloud/openapi/models/v1_create_billing_upgrade_trigger_record_response.py +97 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_create_blog_post_request.py +305 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_create_checkout_session_request.py +27 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_create_cloud_space_environment_template_request.py +409 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_create_cluster_capacity_reservation_response.py +27 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_create_deployment_request.py +539 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_create_deployment_template_request.py +27 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_create_git_credentials_request.py +175 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_create_incident_request.py +305 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_create_job_request.py +201 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_create_license_request.py +175 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_create_lit_dataset_multi_part_upload_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_create_machine_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_create_managed_endpoint_response.py +149 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_create_model_metrics_response.py +97 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_create_multi_machine_job_request.py +253 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_create_organization_request.py +105 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_create_pipeline_template_request.py +383 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_create_project_request.py +209 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_create_sdk_command_history_request.py +253 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_create_sdk_command_history_response.py +97 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_create_server_alert_response.py +97 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_create_subscription_checkout_session_request.py +55 -3
- lightning_sdk/lightning_cloud/openapi/models/v1_daily_model_metrics.py +149 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_daily_usage.py +81 -3
- lightning_sdk/lightning_cloud/openapi/models/v1_data_connection.py +261 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_data_connection_tier.py +103 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_delete_blog_post_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_delete_cloud_space_environment_template_response.py +97 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_delete_cluster_usage_restriction_response.py +97 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_delete_deployment_alerting_policy_response.py +175 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_delete_git_credentials_response.py +97 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_delete_incident_message_response.py +97 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_delete_incident_response.py +97 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_delete_kubernetes_template_response.py +97 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_delete_license_response.py +97 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_delete_lit_dataset_response.py +97 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_delete_lit_dataset_version_response.py +97 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_delete_lit_registry_repository_image_artifact_version_by_digest_response.py +97 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_delete_machine_response.py +97 -0
- lightning_sdk/lightning_cloud/openapi/models/{v1_delete_file_endpoint_response.py → v1_delete_pipeline_response.py} +25 -25
- lightning_sdk/lightning_cloud/openapi/models/v1_delete_schedule_response.py +175 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_deployment.py +315 -3
- lightning_sdk/lightning_cloud/openapi/models/v1_deployment_alerting_event.py +487 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_deployment_alerting_policy.py +409 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_deployment_alerting_policy_frequency.py +105 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_deployment_alerting_policy_operation.py +105 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_deployment_alerting_policy_severity.py +106 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_deployment_alerting_policy_type.py +112 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_deployment_alerting_recipients.py +175 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_deployment_api.py +79 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_deployment_details.py +175 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_deployment_state.py +4 -2
- lightning_sdk/lightning_cloud/openapi/models/v1_deployment_status.py +47 -21
- lightning_sdk/lightning_cloud/openapi/models/v1_deployment_template.py +53 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_endpoint.py +27 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_external_cluster.py +253 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_external_cluster_spec.py +931 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_external_search_user.py +53 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_filestore_data_connection.py +253 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_filesystem_job.py +53 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_filesystem_metric.py +201 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_filesystem_metrics.py +227 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_filesystem_mmt.py +227 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_find_capacity_block_offering_response.py +29 -3
- lightning_sdk/lightning_cloud/openapi/models/{id_uploads_body1.py → v1_firewall_rule.py} +53 -53
- lightning_sdk/lightning_cloud/openapi/models/v1_function_call.py +149 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_function_tool.py +175 -0
- lightning_sdk/lightning_cloud/openapi/models/{v1_list_file_endpoints_response.py → v1_gcp_data_connection_setup.py} +23 -23
- lightning_sdk/lightning_cloud/openapi/models/v1_gcp_direct_vpc.py +149 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_ge_list_deployment_routing_telemetry_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_get_artifacts_page_response.py +29 -3
- lightning_sdk/lightning_cloud/openapi/models/v1_get_assistant_session_daily_aggregated_response.py +201 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_get_cloud_space_cold_start_metrics_stats_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_get_cloud_space_instance_open_ports_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_get_cloud_space_instance_system_metrics_aggregate_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_get_cloud_space_required_balance_status_response.py +149 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_get_cloud_space_size_response.py +79 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_get_cloud_space_transfer_estimate_response.py +149 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_get_cluster_accelerator_demand_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_get_cluster_health_response.py +149 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_get_deployment_routing_telemetry_content_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_get_job_stats_response.py +105 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_get_latest_model_metrics_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/{v1_upload_service_execution_artifact_parts_response.py → v1_get_lit_dataset_file_upload_urls_response.py} +16 -16
- lightning_sdk/lightning_cloud/openapi/models/v1_get_lit_dataset_files_url_response.py +149 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_get_machine_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_get_market_pricing_response.py +201 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_get_model_metrics_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_get_organization_storage_metadata_response.py +487 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_get_project_balance_response.py +1 -27
- lightning_sdk/lightning_cloud/openapi/models/v1_get_project_storage_metadata_response.py +263 -3
- lightning_sdk/lightning_cloud/openapi/models/v1_get_temp_bucket_credentials_response.py +201 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_get_user_response.py +235 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_get_user_storage_breakdown_response.py +105 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_get_volume_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_git_credentials.py +227 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_google_cloud_direct_v1.py +185 -3
- lightning_sdk/lightning_cloud/openapi/models/v1_group_node_metrics.py +1215 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_group_pod_metrics.py +1241 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_guest_login_request.py +177 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_guest_login_response.py +149 -0
- lightning_sdk/lightning_cloud/openapi/models/{v1_service_artifact.py → v1_guest_user.py} +60 -60
- lightning_sdk/lightning_cloud/openapi/models/v1_incident.py +565 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_incident_detail.py +149 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_incident_event.py +591 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_incident_message.py +253 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_incident_severity.py +105 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_incident_type.py +108 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_instance_overprovisioning_spec.py +95 -41
- lightning_sdk/lightning_cloud/openapi/models/v1_job.py +237 -3
- lightning_sdk/lightning_cloud/openapi/models/v1_job_artifacts_type.py +103 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_job_resource.py +279 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_job_spec.py +209 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_job_timing.py +27 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_job_type.py +109 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_k8s_incident_indexes.py +149 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_kai_scheduler_queue_metrics.py +627 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_kubernetes_aws_config.py +279 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_kubernetes_direct_settings_v1.py +253 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_kubernetes_direct_v1.py +357 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_kubernetes_direct_v1_status.py +149 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_kubernetes_template.py +357 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_kubernetes_template_property.py +227 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_lambda_labs_direct_v1.py +67 -17
- lightning_sdk/lightning_cloud/openapi/models/v1_license.py +227 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_lightning_elastic_cluster_v1.py +97 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_lightning_run.py +53 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_lightningapp_instance_artifact.py +27 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_like_status.py +104 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_list_aggregated_pod_metrics_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/{v1_download_service_execution_artifact_response.py → v1_list_blog_posts_response.py} +41 -41
- lightning_sdk/lightning_cloud/openapi/models/v1_list_cloud_space_cold_start_metrics_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_list_cloud_space_environment_templates_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_list_cloudy_experts_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_list_cluster_metric_timestamps_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_list_cluster_metrics_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_list_cluster_namespace_metrics_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_list_cluster_namespace_user_metrics_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_list_cluster_usage_restrictions_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_list_clusters_response.py +6 -6
- lightning_sdk/lightning_cloud/openapi/models/v1_list_container_metrics_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_list_conversation_message_actions_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_list_deployment_alerting_events_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_list_deployment_alerting_policies_response.py +175 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_list_filesystem_metrics_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_list_filesystem_mm_ts_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_list_git_credentials_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_list_group_pod_metrics_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_list_incident_events_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_list_incident_messages_response.py +149 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_list_incidents_response.py +149 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_list_job_resources_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_list_kai_scheduler_queues_metrics_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_list_kubernetes_templates_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_list_license_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_list_lit_dataset_versions_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_list_lit_datasets_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_list_lit_registry_repository_image_artifact_versions_response.py +257 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_list_machines_response.py +149 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_list_node_file_system_metrics_response.py +97 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_list_node_metrics_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_list_notification_dialogs_response.py +149 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_list_pipelines_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_list_platform_notifications_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_list_pod_metrics_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_list_project_clusters_response.py +6 -6
- lightning_sdk/lightning_cloud/openapi/models/v1_list_published_managed_endpoints_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_list_schedule_runs_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_list_schedules_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_list_slurm_cluster_users_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_list_storage_transfers_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_lit_dataset.py +539 -0
- lightning_sdk/lightning_cloud/openapi/models/{id_storage_body.py → v1_lit_dataset_file.py} +49 -49
- lightning_sdk/lightning_cloud/openapi/models/v1_lit_dataset_version_archive.py +435 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_lit_registry_artifact.py +305 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_lit_registry_project.py +35 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_lit_repository.py +81 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_lite_published_cloud_space_response.py +513 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_lustre_data_connection.py +149 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_machine.py +617 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_machine_direct_v1.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_magic_link_login_response.py +53 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_managed_endpoint.py +27 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_managed_model.py +341 -3
- lightning_sdk/lightning_cloud/openapi/models/v1_market_price.py +149 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_membership.py +121 -17
- lightning_sdk/lightning_cloud/openapi/models/v1_message.py +159 -3
- lightning_sdk/lightning_cloud/openapi/models/v1_message_action.py +279 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_metadata.py +27 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_metrics_stream.py +79 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_model.py +27 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_model_metrics.py +175 -0
- lightning_sdk/lightning_cloud/openapi/models/{v1_delete_service_execution_response.py → v1_modify_filesystem_volume_response.py} +6 -6
- lightning_sdk/lightning_cloud/openapi/models/v1_multi_machine_job.py +27 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_multi_machine_job_state.py +2 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_namespace_metrics.py +591 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_namespace_user_metrics.py +435 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_nebius_direct_v1.py +175 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_node_metrics.py +695 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_notification_type.py +2 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_organization.py +837 -3
- lightning_sdk/lightning_cloud/openapi/models/v1_path_mapping.py +175 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_pause_storage_transfer_response.py +97 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_pipeline.py +591 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_pipeline_parameter.py +435 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_pipeline_parameter_placement.py +149 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_pipeline_parameter_placement_type.py +106 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_pipeline_parameter_type.py +106 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_pipeline_state.py +111 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_pipeline_step.py +253 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_pipeline_step_status.py +331 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_pipeline_step_type.py +104 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_pipeline_template.py +513 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_pipeline_template_visibility_type.py +105 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_platform_notification.py +279 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_pod_metrics.py +747 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_post_cloud_space_artifact_events_response.py +97 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_project.py +105 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_project_cluster_binding.py +53 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_project_membership.py +121 -17
- lightning_sdk/lightning_cloud/openapi/models/v1_project_settings.py +525 -3
- lightning_sdk/lightning_cloud/openapi/models/v1_project_storage.py +235 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_project_tab.py +149 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_purchase_annual_upsell_request.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_purchase_annual_upsell_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_quote_annual_upsell_response.py +227 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_quote_subscription_response.py +27 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_r2_data_connection.py +305 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_render_kubernetes_template_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_report_cloud_space_instance_stop_at_response.py +97 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_report_cloud_space_instance_system_metrics_response.py +97 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_report_deployment_routing_telemetry_response.py +97 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_report_k8s_cluster_metrics_response.py +97 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_report_restart_timings_response.py +97 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_request_cloud_space_access_response.py +97 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_required_balance_reason.py +107 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_reservation_details.py +201 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_reset_api_key_request.py +97 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_reset_api_key_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_resource_visibility.py +27 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_resources.py +55 -3
- lightning_sdk/lightning_cloud/openapi/models/v1_response_choice.py +29 -3
- lightning_sdk/lightning_cloud/openapi/models/v1_restart_timing.py +201 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_resume_storage_transfer_response.py +97 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_routing_telemetry.py +357 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_rule_resource.py +5 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_schedule.py +565 -0
- lightning_sdk/lightning_cloud/openapi/models/{command_argument_command_argument_type.py → v1_schedule_action_type.py} +9 -8
- lightning_sdk/lightning_cloud/openapi/models/v1_schedule_resource_type.py +104 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_schedule_run.py +357 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_sdk_command_history_severity.py +104 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_sdk_command_history_type.py +104 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_secret_type.py +2 -0
- lightning_sdk/lightning_cloud/openapi/models/{v1_get_service_execution_status_response.py → v1_server_alert.py} +74 -48
- lightning_sdk/lightning_cloud/openapi/models/v1_server_alert_phase.py +105 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_server_alert_severity.py +103 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_server_alert_type.py +108 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_service_health.py +27 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_setup_data_connection_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_shared_filesystem.py +331 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_slack_notifier.py +201 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_slack_notifier_type.py +105 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_sleep_server_response.py +97 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_slurm_cluster_user.py +227 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_slurm_job.py +84 -6
- lightning_sdk/lightning_cloud/openapi/models/v1_slurm_node.py +31 -291
- lightning_sdk/lightning_cloud/openapi/models/v1_slurm_v1.py +79 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_slurm_v1_status.py +79 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_storage_asset.py +159 -3
- lightning_sdk/lightning_cloud/openapi/models/v1_storage_asset_type.py +4 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_storage_transfer.py +435 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_storage_transfer_status.py +108 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_subnet_spec.py +149 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_system_metrics_aggregated.py +227 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_token_login_request.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_token_login_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_token_owner_type.py +104 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_token_usage.py +175 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_tool.py +149 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_tool_call.py +175 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_transaction.py +27 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_transfer_cloud_space_response.py +97 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_trigger_filesystem_upgrade_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_update_cloud_space_instance_config_request.py +253 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_update_cloud_space_visibility_response.py +97 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_update_conversation_like_response.py +149 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_update_conversation_message_like_response.py +149 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_update_deployment_visibility_response.py +97 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_update_job_visibility_response.py +97 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_update_lit_dataset_visibility_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_update_lit_repository_response.py +97 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_update_metrics_stream_visibility_response.py +27 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_update_model_visibility_response.py +27 -1
- lightning_sdk/lightning_cloud/openapi/models/{v1_complete_upload_service_execution_artifact_response.py → v1_update_organization_credits_auto_replenish_response.py} +6 -6
- lightning_sdk/lightning_cloud/openapi/models/v1_update_project_tab_order_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_update_user_credits_auto_replenish_response.py +97 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_update_user_request.py +131 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_update_volume_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_upload_project_artifact_response.py +27 -1
- lightning_sdk/lightning_cloud/openapi/models/{v1_list_new_features_for_user_response.py → v1_upload_temporary_artifact_request.py} +23 -23
- lightning_sdk/lightning_cloud/openapi/models/v1_usage.py +105 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_usage_report.py +79 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_user_features.py +894 -842
- lightning_sdk/lightning_cloud/openapi/models/v1_user_requested_compute_config.py +27 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_validate_data_connection_response.py +27 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_validate_deployment_image_request.py +27 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_validate_license_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_validate_managed_endpoint_response.py +27 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_validate_storage_transfer_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_voltage_park_direct_v1.py +229 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_volume.py +513 -45
- lightning_sdk/lightning_cloud/openapi/models/v1_volume_state.py +105 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_vultr_direct_v1.py +1 -27
- lightning_sdk/lightning_cloud/openapi/models/v1_weka_data_connection.py +201 -0
- lightning_sdk/lightning_cloud/openapi/models/validate.py +53 -1
- lightning_sdk/lightning_cloud/openapi/models/version_default_body.py +29 -29
- lightning_sdk/lightning_cloud/openapi/models/version_default_body1.py +149 -0
- lightning_sdk/lightning_cloud/openapi/models/version_uploads_body1.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/versions_version_body1.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/volumes_id_body.py +123 -0
- lightning_sdk/lightning_cloud/rest_client.py +61 -48
- lightning_sdk/lightning_cloud/source_code/logs_socket_api.py +8 -3
- lightning_sdk/lightning_cloud/utils/data_connection.py +234 -7
- lightning_sdk/lit_container.py +68 -9
- lightning_sdk/llm/__init__.py +3 -0
- lightning_sdk/llm/llm.py +497 -0
- lightning_sdk/llm/public_assistants.py +54 -0
- lightning_sdk/machine.py +221 -30
- lightning_sdk/mmt/base.py +67 -32
- lightning_sdk/mmt/mmt.py +68 -50
- lightning_sdk/mmt/v1.py +16 -32
- lightning_sdk/mmt/v2.py +47 -18
- lightning_sdk/models.py +74 -24
- lightning_sdk/organization.py +4 -0
- lightning_sdk/owner.py +2 -1
- lightning_sdk/pipeline/__init__.py +14 -0
- lightning_sdk/pipeline/pipeline.py +163 -0
- lightning_sdk/pipeline/printer.py +124 -0
- lightning_sdk/pipeline/schedule.py +859 -0
- lightning_sdk/pipeline/steps.py +365 -0
- lightning_sdk/pipeline/utils.py +116 -0
- lightning_sdk/plugin.py +39 -20
- lightning_sdk/sandbox.py +160 -0
- lightning_sdk/serve.py +309 -0
- lightning_sdk/services/__init__.py +1 -1
- lightning_sdk/services/file_endpoint.py +3 -4
- lightning_sdk/services/utilities.py +16 -2
- lightning_sdk/studio.py +515 -41
- lightning_sdk/teamspace.py +335 -30
- lightning_sdk/user.py +19 -1
- lightning_sdk/utils/config.py +179 -0
- lightning_sdk/utils/license.py +13 -0
- lightning_sdk/utils/logging.py +79 -0
- lightning_sdk/utils/names.py +1179 -0
- lightning_sdk/utils/progress.py +283 -0
- lightning_sdk/utils/resolve.py +149 -13
- {lightning_sdk-0.1.49.dist-info → lightning_sdk-2025.11.5.dist-info}/METADATA +14 -11
- {lightning_sdk-0.1.49.dist-info → lightning_sdk-2025.11.5.dist-info}/RECORD +649 -250
- {lightning_sdk-0.1.49.dist-info → lightning_sdk-2025.11.5.dist-info}/WHEEL +1 -1
- {lightning_sdk-0.1.49.dist-info → lightning_sdk-2025.11.5.dist-info}/entry_points.txt +1 -0
- lightning_sdk/cli/ai_hub.py +0 -49
- lightning_sdk/cli/delete.py +0 -58
- lightning_sdk/cli/download.py +0 -132
- lightning_sdk/cli/inspect.py +0 -31
- lightning_sdk/cli/legacy.py +0 -135
- lightning_sdk/cli/list.py +0 -112
- lightning_sdk/cli/run.py +0 -225
- lightning_sdk/cli/serve.py +0 -218
- lightning_sdk/cli/stop.py +0 -37
- lightning_sdk/cli/upload.py +0 -255
- lightning_sdk/lightning_cloud/openapi/models/fileendpoints_id_body.py +0 -409
- lightning_sdk/lightning_cloud/openapi/models/project_id_fileendpoints_body.py +0 -357
- lightning_sdk/lightning_cloud/openapi/models/project_id_serviceexecution_body.py +0 -175
- lightning_sdk/lightning_cloud/openapi/models/serviceexecution_id_body.py +0 -331
- lightning_sdk/lightning_cloud/openapi/models/v1_command_argument.py +0 -305
- lightning_sdk/lightning_cloud/openapi/models/v1_ebs.py +0 -279
- lightning_sdk/lightning_cloud/openapi/models/v1_file_endpoint.py +0 -461
- lightning_sdk/lightning_cloud/openapi/models/v1_get_user_storage_response.py +0 -201
- lightning_sdk/lightning_cloud/openapi/models/v1_list_service_execution_lightningapp_instances_response.py +0 -175
- lightning_sdk/lightning_cloud/openapi/models/v1_service_execution.py +0 -383
- /lightning_sdk/cli/{exceptions.py → legacy/exceptions.py} +0 -0
- /lightning_sdk/services/{finetune/__init__.py → finetune_llm.py} +0 -0
- {lightning_sdk-0.1.49.dist-info → lightning_sdk-2025.11.5.dist-info}/LICENSE +0 -0
- {lightning_sdk-0.1.49.dist-info → lightning_sdk-2025.11.5.dist-info}/top_level.txt +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
from time import sleep
|
|
2
|
-
from typing import Any, List, Literal, Optional, Union
|
|
2
|
+
from typing import Any, Dict, List, Literal, Optional, Union
|
|
3
3
|
|
|
4
|
-
from lightning_sdk.api.utils import
|
|
4
|
+
from lightning_sdk.api.utils import _machine_to_compute_name, resolve_path_mappings
|
|
5
5
|
from lightning_sdk.lightning_cloud.openapi import (
|
|
6
6
|
CreateDeploymentRequestDefinesASpecForTheJobThatAllowsForAutoscalingJobs,
|
|
7
7
|
V1AutoscalingSpec,
|
|
@@ -58,6 +58,10 @@ class TokenAuth(Auth):
|
|
|
58
58
|
self.token = token
|
|
59
59
|
|
|
60
60
|
|
|
61
|
+
class ApiKeyAuth(Auth):
|
|
62
|
+
"""The ApiKeyAuth describes that the user requires a Lightning API Key to authenticate."""
|
|
63
|
+
|
|
64
|
+
|
|
61
65
|
class ReleaseStrategy:
|
|
62
66
|
"""The base class for release strategy."""
|
|
63
67
|
|
|
@@ -102,10 +106,10 @@ class ExecHealthCheck(HealthCheck):
|
|
|
102
106
|
def __init__(
|
|
103
107
|
self,
|
|
104
108
|
command: str,
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
+
initial_delay_seconds: int = 0,
|
|
110
|
+
failure_threshold: int = 3600,
|
|
111
|
+
interval_seconds: int = 1,
|
|
112
|
+
timeout_seconds: int = 30,
|
|
109
113
|
) -> None:
|
|
110
114
|
self.command = command
|
|
111
115
|
self.timeout_seconds = timeout_seconds
|
|
@@ -131,17 +135,17 @@ class HttpHealthCheck(HealthCheck):
|
|
|
131
135
|
self,
|
|
132
136
|
path: str,
|
|
133
137
|
port: float,
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
+
initial_delay_seconds: int = 0,
|
|
139
|
+
failure_threshold: int = 3600,
|
|
140
|
+
interval_seconds: int = 1,
|
|
141
|
+
timeout_seconds: int = 30,
|
|
138
142
|
) -> None:
|
|
139
143
|
self.path = path
|
|
140
144
|
self.port = port
|
|
141
|
-
self.timeout_seconds = timeout_seconds
|
|
142
145
|
self.initial_delay_seconds = initial_delay_seconds
|
|
143
146
|
self.failure_threshold = failure_threshold
|
|
144
147
|
self.interval_seconds = interval_seconds
|
|
148
|
+
self.timeout_seconds = timeout_seconds
|
|
145
149
|
|
|
146
150
|
|
|
147
151
|
class AutoScalingMetric:
|
|
@@ -213,13 +217,24 @@ class DeploymentApi:
|
|
|
213
217
|
return None
|
|
214
218
|
raise ex
|
|
215
219
|
|
|
220
|
+
def get_deployment_by_id(self, deployment_id: str, teamspace_id: str) -> Optional[V1Deployment]:
|
|
221
|
+
try:
|
|
222
|
+
return self._client.jobs_service_get_deployment(project_id=teamspace_id, id=deployment_id)
|
|
223
|
+
except ApiException as ex:
|
|
224
|
+
if "Reason: Not Found" in str(ex):
|
|
225
|
+
return None
|
|
226
|
+
raise ex
|
|
227
|
+
|
|
216
228
|
def create_deployment(
|
|
217
229
|
self,
|
|
218
230
|
deployment: V1Deployment,
|
|
231
|
+
from_onboarding: Optional[bool] = None,
|
|
232
|
+
from_litserve: Optional[bool] = None,
|
|
219
233
|
) -> V1Deployment:
|
|
220
234
|
return self._client.jobs_service_create_deployment(
|
|
221
235
|
project_id=deployment.project_id,
|
|
222
236
|
body=CreateDeploymentRequestDefinesASpecForTheJobThatAllowsForAutoscalingJobs(
|
|
237
|
+
cloudspace_id=deployment.cloudspace_id,
|
|
223
238
|
autoscaling=deployment.autoscaling,
|
|
224
239
|
cluster_id=deployment.spec.cluster_id,
|
|
225
240
|
endpoint=deployment.endpoint,
|
|
@@ -227,6 +242,8 @@ class DeploymentApi:
|
|
|
227
242
|
replicas=deployment.replicas,
|
|
228
243
|
spec=deployment.spec,
|
|
229
244
|
strategy=deployment.strategy,
|
|
245
|
+
from_onboarding=from_onboarding,
|
|
246
|
+
from_litserve=from_litserve,
|
|
230
247
|
),
|
|
231
248
|
)
|
|
232
249
|
|
|
@@ -234,7 +251,7 @@ class DeploymentApi:
|
|
|
234
251
|
self,
|
|
235
252
|
deployment: V1Deployment,
|
|
236
253
|
machine: Optional[Machine] = None,
|
|
237
|
-
|
|
254
|
+
image: Optional[str] = None,
|
|
238
255
|
entrypoint: Optional[str] = None,
|
|
239
256
|
command: Optional[str] = None,
|
|
240
257
|
env: Optional[List[Union[Env, Secret]]] = None,
|
|
@@ -249,6 +266,10 @@ class DeploymentApi:
|
|
|
249
266
|
health_check: Optional[Union[HttpHealthCheck, ExecHealthCheck]] = None,
|
|
250
267
|
auth: Optional[Union[BasicAuth, TokenAuth]] = None,
|
|
251
268
|
custom_domain: Optional[str] = None,
|
|
269
|
+
quantity: Optional[int] = None,
|
|
270
|
+
include_credentials: Optional[bool] = None,
|
|
271
|
+
max_runtime: Optional[int] = None,
|
|
272
|
+
path_mappings: Optional[Dict[str, str]] = None,
|
|
252
273
|
) -> V1Deployment:
|
|
253
274
|
# Update the deployment in place
|
|
254
275
|
|
|
@@ -262,21 +283,37 @@ class DeploymentApi:
|
|
|
262
283
|
|
|
263
284
|
# Any updates to the Job Spec triggers a new release
|
|
264
285
|
if machine:
|
|
265
|
-
apply_change(deployment.spec, "instance_name",
|
|
286
|
+
apply_change(deployment.spec, "instance_name", _machine_to_compute_name(machine))
|
|
287
|
+
apply_change(deployment.spec, "instance_type", _machine_to_compute_name(machine))
|
|
266
288
|
|
|
267
289
|
requires_release = False
|
|
268
|
-
requires_release |= apply_change(deployment.spec, "image",
|
|
290
|
+
requires_release |= apply_change(deployment.spec, "image", image)
|
|
291
|
+
|
|
292
|
+
if path_mappings:
|
|
293
|
+
requires_release |= apply_change(
|
|
294
|
+
deployment.spec, "path_mappings", resolve_path_mappings(path_mappings, None, None)
|
|
295
|
+
)
|
|
296
|
+
|
|
269
297
|
requires_release |= apply_change(deployment.spec, "entrypoint", entrypoint)
|
|
270
298
|
requires_release |= apply_change(deployment.spec, "command", command)
|
|
271
299
|
requires_release |= apply_change(deployment.spec, "env", to_env(env))
|
|
272
|
-
requires_release |= apply_change(deployment.spec, "
|
|
300
|
+
requires_release |= apply_change(deployment.spec, "readiness_probe", to_health_check(health_check, False))
|
|
273
301
|
requires_release |= apply_change(deployment.spec, "cluster_id", cloud_account)
|
|
274
302
|
requires_release |= apply_change(deployment.spec, "spot", spot)
|
|
303
|
+
requires_release |= apply_change(deployment.spec, "quantity", quantity)
|
|
304
|
+
requires_release |= apply_change(deployment.spec, "include_credentials", include_credentials)
|
|
305
|
+
requires_release |= apply_change(
|
|
306
|
+
deployment.spec, "requested_run_duration_seconds", str(max_runtime) if max_runtime is not None else None
|
|
307
|
+
)
|
|
275
308
|
|
|
276
309
|
if requires_release:
|
|
277
310
|
if deployment.strategy is None:
|
|
278
311
|
raise RuntimeError("When doing a new release, a release strategy needs to be defined.")
|
|
279
312
|
|
|
313
|
+
# Force the deployment to make a new snapshot
|
|
314
|
+
if deployment.spec.cloudspace_id != "" and deployment.spec.run_id != "":
|
|
315
|
+
deployment.spec.run_id = ""
|
|
316
|
+
|
|
280
317
|
print("Some core arguments have changed. We are making a new release.")
|
|
281
318
|
|
|
282
319
|
apply_change(deployment.endpoint, "custom_domain", custom_domain)
|
|
@@ -348,11 +385,15 @@ def restore_auth(auth: Optional[V1EndpointAuth] = None) -> Optional[Auth]:
|
|
|
348
385
|
if not auth:
|
|
349
386
|
return None
|
|
350
387
|
|
|
388
|
+
if auth.user_api_key:
|
|
389
|
+
return ApiKeyAuth()
|
|
390
|
+
|
|
351
391
|
if auth.username and auth.password:
|
|
352
392
|
return BasicAuth(username=auth.username, password=auth.password)
|
|
353
393
|
|
|
354
394
|
if auth.token:
|
|
355
395
|
return TokenAuth(token=auth.token)
|
|
396
|
+
|
|
356
397
|
return None
|
|
357
398
|
|
|
358
399
|
|
|
@@ -373,13 +414,21 @@ def restore_env(env: List[V1EnvVar]) -> List[Union[Secret, Env]]:
|
|
|
373
414
|
return [Secret(name=e.from_secret) if e.from_secret else Env(name=e.name, value=e.value) for e in env]
|
|
374
415
|
|
|
375
416
|
|
|
376
|
-
def to_env(env:
|
|
417
|
+
def to_env(env: Union[List[Union[Secret, Env]], Dict[str, str], None] = None) -> Optional[List[V1EnvVar]]:
|
|
377
418
|
if not env:
|
|
378
419
|
return None
|
|
379
420
|
|
|
421
|
+
env_list = []
|
|
422
|
+
|
|
423
|
+
if isinstance(env, dict):
|
|
424
|
+
for k, v in env.items():
|
|
425
|
+
env_list.append(Env(name=k, value=v))
|
|
426
|
+
else:
|
|
427
|
+
env_list = env
|
|
428
|
+
|
|
380
429
|
return [
|
|
381
430
|
V1EnvVar(name=env.name, value=env.value) if isinstance(env, Env) else V1EnvVar(from_secret=env.name)
|
|
382
|
-
for env in
|
|
431
|
+
for env in env_list
|
|
383
432
|
]
|
|
384
433
|
|
|
385
434
|
|
|
@@ -436,7 +485,7 @@ def to_autoscaling(
|
|
|
436
485
|
if target_metrics is None and (threshold < 0 or threshold > 100):
|
|
437
486
|
raise ValueError("The autoscaling threshold should be defined between 0 and 100.")
|
|
438
487
|
|
|
439
|
-
if target_metrics is not None and len(target_metrics) == 0:
|
|
488
|
+
if target_metrics is not None and len(target_metrics) == 0 and metric is None:
|
|
440
489
|
raise ValueError("The target_metrics must be provided.")
|
|
441
490
|
|
|
442
491
|
if target_metrics is not None:
|
|
@@ -450,7 +499,7 @@ def to_autoscaling(
|
|
|
450
499
|
target_metric.target = str(target_metric.target)
|
|
451
500
|
|
|
452
501
|
metrics = (
|
|
453
|
-
target_metrics
|
|
502
|
+
[V1AutoscalingTargetMetric(name=t.name, target=t.target) for t in target_metrics]
|
|
454
503
|
if target_metrics is not None
|
|
455
504
|
else [V1AutoscalingTargetMetric(name=metric, target=str(threshold))]
|
|
456
505
|
)
|
|
@@ -481,6 +530,10 @@ def to_endpoint_auth(auth: Optional[Auth] = None) -> Optional[V1EndpointAuth]:
|
|
|
481
530
|
raise ValueError("The token should be defined.")
|
|
482
531
|
|
|
483
532
|
return V1EndpointAuth(enabled=True, token=auth.token)
|
|
533
|
+
|
|
534
|
+
if isinstance(auth, ApiKeyAuth):
|
|
535
|
+
return V1EndpointAuth(enabled=True, user_api_key=True)
|
|
536
|
+
|
|
484
537
|
return None
|
|
485
538
|
|
|
486
539
|
|
|
@@ -498,11 +551,21 @@ def to_endpoint(
|
|
|
498
551
|
|
|
499
552
|
|
|
500
553
|
def to_health_check(
|
|
501
|
-
health_check: Optional[Union[HttpHealthCheck, ExecHealthCheck]] = None
|
|
554
|
+
health_check: Optional[Union[HttpHealthCheck, ExecHealthCheck]] = None,
|
|
555
|
+
use_default: bool = True,
|
|
502
556
|
) -> Optional[V1JobHealthCheckConfig]:
|
|
503
|
-
if not
|
|
557
|
+
if health_check is None and not use_default:
|
|
504
558
|
return None
|
|
505
559
|
|
|
560
|
+
# Use Default health check if none is provided
|
|
561
|
+
if not health_check:
|
|
562
|
+
return V1JobHealthCheckConfig(
|
|
563
|
+
failure_threshold=3600,
|
|
564
|
+
initial_delay_seconds=0,
|
|
565
|
+
interval_seconds=1,
|
|
566
|
+
timeout_seconds=60,
|
|
567
|
+
)
|
|
568
|
+
|
|
506
569
|
health_check_config = V1JobHealthCheckConfig(
|
|
507
570
|
failure_threshold=health_check.failure_threshold,
|
|
508
571
|
initial_delay_seconds=health_check.initial_delay_seconds,
|
|
@@ -523,12 +586,18 @@ def to_health_check(
|
|
|
523
586
|
def to_spec(
|
|
524
587
|
cloud_account: Optional[str],
|
|
525
588
|
machine: Optional[Machine],
|
|
526
|
-
|
|
589
|
+
image: Optional[str],
|
|
527
590
|
entrypoint: Optional[str],
|
|
528
591
|
command: Optional[str],
|
|
529
592
|
spot: Optional[bool] = False,
|
|
530
|
-
env:
|
|
593
|
+
env: Union[List[Union[Secret, Env]], Dict[str, str], None] = None,
|
|
531
594
|
health_check: Optional[Union[HttpHealthCheck, ExecHealthCheck]] = None,
|
|
595
|
+
quantity: Optional[int] = None,
|
|
596
|
+
include_credentials: Optional[bool] = None,
|
|
597
|
+
cloudspace_id: Optional[None] = None,
|
|
598
|
+
max_runtime: Optional[int] = None,
|
|
599
|
+
machine_image_version: Optional[str] = None,
|
|
600
|
+
path_mappings: Optional[Dict[str, str]] = None,
|
|
532
601
|
) -> V1JobSpec:
|
|
533
602
|
if cloud_account is None:
|
|
534
603
|
raise ValueError("The cloud account should be defined.")
|
|
@@ -536,18 +605,37 @@ def to_spec(
|
|
|
536
605
|
if machine is None:
|
|
537
606
|
raise ValueError("The machine should be defined.")
|
|
538
607
|
|
|
539
|
-
if
|
|
540
|
-
raise ValueError("The
|
|
608
|
+
if image is None and cloudspace_id is None:
|
|
609
|
+
raise ValueError("The image should be defined.")
|
|
610
|
+
|
|
611
|
+
if entrypoint is not None and cloudspace_id is not None:
|
|
612
|
+
raise ValueError("The entrypoint shouldn't be defined when a Studio is provided.")
|
|
613
|
+
|
|
614
|
+
if command is None and cloudspace_id is not None:
|
|
615
|
+
raise ValueError("The command should be defined.")
|
|
616
|
+
|
|
617
|
+
# need to go via kwargs for typing compatibility since autogenerated apis accept None but aren't typed with None
|
|
618
|
+
optional_spec_kwargs = {}
|
|
619
|
+
if max_runtime:
|
|
620
|
+
optional_spec_kwargs["requested_run_duration_seconds"] = str(max_runtime)
|
|
621
|
+
|
|
622
|
+
path_mapping_list = resolve_path_mappings(path_mappings or {}, None, None)
|
|
541
623
|
|
|
542
624
|
return V1JobSpec(
|
|
543
625
|
cluster_id=cloud_account,
|
|
544
626
|
command=command,
|
|
545
627
|
entrypoint=entrypoint,
|
|
546
628
|
env=to_env(env),
|
|
547
|
-
image=
|
|
629
|
+
image=image,
|
|
548
630
|
spot=spot,
|
|
549
|
-
instance_name=
|
|
631
|
+
instance_name=_machine_to_compute_name(machine),
|
|
550
632
|
readiness_probe=to_health_check(health_check),
|
|
633
|
+
quantity=quantity,
|
|
634
|
+
include_credentials=include_credentials,
|
|
635
|
+
cloudspace_id=cloudspace_id,
|
|
636
|
+
machine_image_version=machine_image_version,
|
|
637
|
+
path_mappings=path_mapping_list,
|
|
638
|
+
**optional_spec_kwargs,
|
|
551
639
|
)
|
|
552
640
|
|
|
553
641
|
|
|
@@ -572,3 +660,21 @@ def apply_change(spec: Any, key: str, value: Any) -> bool:
|
|
|
572
660
|
return True
|
|
573
661
|
|
|
574
662
|
return False
|
|
663
|
+
|
|
664
|
+
|
|
665
|
+
def compose_commands(commands: List[str]) -> str:
|
|
666
|
+
composite_command = []
|
|
667
|
+
|
|
668
|
+
for command in commands:
|
|
669
|
+
command = command.strip()
|
|
670
|
+
|
|
671
|
+
# Check if the command already has '&'
|
|
672
|
+
if command.endswith("&"):
|
|
673
|
+
# It's a background command, add it as a subshell without further adjustment
|
|
674
|
+
composite_command.append(f"( {command} )")
|
|
675
|
+
else:
|
|
676
|
+
# Sequential execution, add as-is and use `&&` to connect if followed by another command
|
|
677
|
+
composite_command.append(command)
|
|
678
|
+
|
|
679
|
+
# Joining commands, using `&&` between sequential parts and respecting subshell backgrounds
|
|
680
|
+
return " && ".join(composite_command)
|
lightning_sdk/api/job_api.py
CHANGED
|
@@ -1,16 +1,14 @@
|
|
|
1
1
|
import time
|
|
2
|
-
from typing import TYPE_CHECKING, Dict, List, Optional
|
|
2
|
+
from typing import TYPE_CHECKING, Dict, List, Optional, Union
|
|
3
3
|
from urllib.request import urlopen
|
|
4
4
|
|
|
5
5
|
from lightning_sdk.api.utils import (
|
|
6
|
-
_COMPUTE_NAME_TO_MACHINE,
|
|
7
|
-
_MACHINE_TO_COMPUTE_NAME,
|
|
8
6
|
_create_app,
|
|
7
|
+
_machine_to_compute_name,
|
|
9
8
|
remove_datetime_prefix,
|
|
9
|
+
resolve_path_mappings,
|
|
10
10
|
)
|
|
11
|
-
from lightning_sdk.api.utils import
|
|
12
|
-
_get_cloud_url as _cloud_url,
|
|
13
|
-
)
|
|
11
|
+
from lightning_sdk.api.utils import _get_cloud_url as _cloud_url
|
|
14
12
|
from lightning_sdk.constants import __GLOBAL_LIGHTNING_UNIQUE_IDS_STORE__
|
|
15
13
|
from lightning_sdk.lightning_cloud.openapi import (
|
|
16
14
|
AppinstancesIdBody,
|
|
@@ -19,7 +17,7 @@ from lightning_sdk.lightning_cloud.openapi import (
|
|
|
19
17
|
JobsIdBody1,
|
|
20
18
|
ProjectIdJobsBody,
|
|
21
19
|
V1CloudSpace,
|
|
22
|
-
|
|
20
|
+
V1ClusterAccelerator,
|
|
23
21
|
V1DownloadJobLogsResponse,
|
|
24
22
|
V1DownloadLightningappInstanceLogsResponse,
|
|
25
23
|
V1EnvVar,
|
|
@@ -96,16 +94,49 @@ class JobApiV1:
|
|
|
96
94
|
def get_work(self, job_id: str, teamspace_id: str, work_id: str) -> Externalv1Lightningwork:
|
|
97
95
|
return self._client.lightningwork_service_get_lightningwork(project_id=teamspace_id, app_id=job_id, id=work_id)
|
|
98
96
|
|
|
99
|
-
def get_machine_from_work(self, work: Externalv1Lightningwork) -> Machine:
|
|
97
|
+
def get_machine_from_work(self, work: Externalv1Lightningwork, org_id: str) -> Machine:
|
|
100
98
|
spec: V1LightningworkSpec = work.spec
|
|
101
99
|
# prefer user-requested config if specified
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
100
|
+
user_requested_compute_config: V1UserRequestedComputeConfig = spec.user_requested_compute_config
|
|
101
|
+
accelerators = self._get_machines_for_cloud_account(
|
|
102
|
+
teamspace_id=work.project_id,
|
|
103
|
+
cloud_account_id=spec.cluster_id,
|
|
104
|
+
org_id=org_id,
|
|
105
|
+
)
|
|
106
|
+
|
|
107
|
+
identifiers = []
|
|
108
|
+
|
|
109
|
+
if user_requested_compute_config and user_requested_compute_config.name:
|
|
110
|
+
identifiers.append(user_requested_compute_config.name)
|
|
111
|
+
else:
|
|
112
|
+
identifiers.append(spec.compute_config.instance_type)
|
|
113
|
+
|
|
114
|
+
for accelerator in accelerators:
|
|
115
|
+
for ident in identifiers:
|
|
116
|
+
if ident in (
|
|
117
|
+
accelerator.slug,
|
|
118
|
+
accelerator.slug_multi_cloud,
|
|
119
|
+
accelerator.instance_id,
|
|
120
|
+
):
|
|
121
|
+
return Machine._from_accelerator(accelerator)
|
|
122
|
+
|
|
123
|
+
return Machine.from_str(identifiers[0])
|
|
124
|
+
|
|
125
|
+
def _get_machines_for_cloud_account(
|
|
126
|
+
self, teamspace_id: str, cloud_account_id: str, org_id: str
|
|
127
|
+
) -> List[V1ClusterAccelerator]:
|
|
128
|
+
from lightning_sdk.api.cloud_account_api import CloudAccountApi
|
|
129
|
+
|
|
130
|
+
cloud_account_api = CloudAccountApi()
|
|
131
|
+
accelerators = cloud_account_api.list_cloud_account_accelerators(
|
|
132
|
+
teamspace_id=teamspace_id,
|
|
133
|
+
cloud_account_id=cloud_account_id,
|
|
134
|
+
org_id=org_id,
|
|
135
|
+
)
|
|
136
|
+
if not accelerators:
|
|
137
|
+
return []
|
|
138
|
+
|
|
139
|
+
return list(filter(lambda acc: acc.enabled, accelerators.accelerator))
|
|
109
140
|
|
|
110
141
|
def get_studio_name(self, job: Externalv1LightningappInstance) -> str:
|
|
111
142
|
cs: V1CloudSpace = self._client.cloud_space_service_get_cloud_space(
|
|
@@ -120,7 +151,7 @@ class JobApiV1:
|
|
|
120
151
|
studio_id: str,
|
|
121
152
|
teamspace_id: str,
|
|
122
153
|
cloud_account: str,
|
|
123
|
-
machine: Machine,
|
|
154
|
+
machine: Union[Machine, str],
|
|
124
155
|
interruptible: bool,
|
|
125
156
|
) -> Externalv1LightningappInstance:
|
|
126
157
|
"""Creates an arbitrary app."""
|
|
@@ -130,7 +161,7 @@ class JobApiV1:
|
|
|
130
161
|
teamspace_id=teamspace_id,
|
|
131
162
|
cloud_account=cloud_account,
|
|
132
163
|
plugin_type="job",
|
|
133
|
-
compute=
|
|
164
|
+
compute=_machine_to_compute_name(machine),
|
|
134
165
|
name=name,
|
|
135
166
|
entrypoint=command,
|
|
136
167
|
interruptible=interruptible,
|
|
@@ -209,23 +240,79 @@ class JobApiV2:
|
|
|
209
240
|
teamspace_id: str,
|
|
210
241
|
studio_id: Optional[str],
|
|
211
242
|
image: Optional[str],
|
|
212
|
-
machine: Machine,
|
|
243
|
+
machine: Union[Machine, str],
|
|
213
244
|
interruptible: bool,
|
|
214
245
|
env: Optional[Dict[str, str]],
|
|
215
246
|
image_credentials: Optional[str],
|
|
216
247
|
cloud_account_auth: bool,
|
|
217
|
-
artifacts_local: Optional[str],
|
|
218
|
-
artifacts_remote: Optional[str],
|
|
219
248
|
entrypoint: str,
|
|
249
|
+
path_mappings: Optional[Dict[str, str]],
|
|
250
|
+
artifacts_local: Optional[str], # deprecated in favor of path_mappings
|
|
251
|
+
artifacts_remote: Optional[str], # deprecated in favor of path_mappings
|
|
252
|
+
max_runtime: Optional[int] = None,
|
|
253
|
+
reuse_snapshot: bool = True,
|
|
220
254
|
) -> V1Job:
|
|
255
|
+
body = self._create_job_body(
|
|
256
|
+
name=name,
|
|
257
|
+
command=command,
|
|
258
|
+
cloud_account=cloud_account,
|
|
259
|
+
studio_id=studio_id,
|
|
260
|
+
image=image,
|
|
261
|
+
machine=machine,
|
|
262
|
+
interruptible=interruptible,
|
|
263
|
+
env=env,
|
|
264
|
+
image_credentials=image_credentials,
|
|
265
|
+
cloud_account_auth=cloud_account_auth,
|
|
266
|
+
entrypoint=entrypoint,
|
|
267
|
+
path_mappings=path_mappings,
|
|
268
|
+
artifacts_local=artifacts_local,
|
|
269
|
+
artifacts_remote=artifacts_remote,
|
|
270
|
+
max_runtime=max_runtime,
|
|
271
|
+
reuse_snapshot=reuse_snapshot,
|
|
272
|
+
)
|
|
273
|
+
|
|
274
|
+
job: V1Job = self._client.jobs_service_create_job(project_id=teamspace_id, body=body)
|
|
275
|
+
return job
|
|
276
|
+
|
|
277
|
+
@staticmethod
|
|
278
|
+
def _create_job_body(
|
|
279
|
+
name: str,
|
|
280
|
+
command: Optional[str],
|
|
281
|
+
cloud_account: Optional[str],
|
|
282
|
+
studio_id: Optional[str],
|
|
283
|
+
image: Optional[str],
|
|
284
|
+
machine: Union[Machine, str],
|
|
285
|
+
interruptible: bool,
|
|
286
|
+
env: Optional[Dict[str, str]],
|
|
287
|
+
image_credentials: Optional[str],
|
|
288
|
+
cloud_account_auth: bool,
|
|
289
|
+
entrypoint: str,
|
|
290
|
+
path_mappings: Optional[Dict[str, str]],
|
|
291
|
+
artifacts_local: Optional[str], # deprecated in favor of path_mappings
|
|
292
|
+
artifacts_remote: Optional[str], # deprecated in favor of path_mappings)
|
|
293
|
+
reuse_snapshot: bool,
|
|
294
|
+
max_runtime: Optional[int] = None,
|
|
295
|
+
machine_image_version: Optional[str] = None,
|
|
296
|
+
) -> ProjectIdJobsBody:
|
|
221
297
|
env_vars = []
|
|
222
298
|
if env is not None:
|
|
223
299
|
for k, v in env.items():
|
|
224
300
|
env_vars.append(V1EnvVar(name=k, value=v))
|
|
225
301
|
|
|
226
|
-
instance_name =
|
|
302
|
+
instance_name = _machine_to_compute_name(machine)
|
|
303
|
+
|
|
304
|
+
run_id = __GLOBAL_LIGHTNING_UNIQUE_IDS_STORE__[studio_id] if (studio_id is not None and reuse_snapshot) else ""
|
|
227
305
|
|
|
228
|
-
|
|
306
|
+
path_mappings_list = resolve_path_mappings(
|
|
307
|
+
mappings=path_mappings or {},
|
|
308
|
+
artifacts_local=artifacts_local,
|
|
309
|
+
artifacts_remote=artifacts_remote,
|
|
310
|
+
)
|
|
311
|
+
|
|
312
|
+
# need to go via kwargs for typing compatibility since autogenerated apis accept None but aren't typed with None
|
|
313
|
+
optional_spec_kwargs = {}
|
|
314
|
+
if max_runtime:
|
|
315
|
+
optional_spec_kwargs["requested_run_duration_seconds"] = str(max_runtime)
|
|
229
316
|
|
|
230
317
|
spec = V1JobSpec(
|
|
231
318
|
cloudspace_id=studio_id or "",
|
|
@@ -239,13 +326,11 @@ class JobApiV2:
|
|
|
239
326
|
spot=interruptible,
|
|
240
327
|
image_cluster_credentials=cloud_account_auth,
|
|
241
328
|
image_secret_ref=image_credentials or "",
|
|
242
|
-
|
|
243
|
-
|
|
329
|
+
path_mappings=path_mappings_list,
|
|
330
|
+
machine_image_version=machine_image_version,
|
|
331
|
+
**optional_spec_kwargs,
|
|
244
332
|
)
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
job: V1Job = self._client.jobs_service_create_job(project_id=teamspace_id, body=body)
|
|
248
|
-
return job
|
|
333
|
+
return ProjectIdJobsBody(name=name, spec=spec)
|
|
249
334
|
|
|
250
335
|
def get_job_by_name(self, name: str, teamspace_id: str) -> V1Job:
|
|
251
336
|
job: V1Job = self._client.jobs_service_find_job(project_id=teamspace_id, name=name)
|
|
@@ -270,7 +355,7 @@ class JobApiV2:
|
|
|
270
355
|
return
|
|
271
356
|
|
|
272
357
|
if current_state != Status.Stopping:
|
|
273
|
-
update_body = JobsIdBody1(
|
|
358
|
+
update_body = JobsIdBody1(state=self.v2_job_state_stop)
|
|
274
359
|
self._client.jobs_service_update_job(body=update_body, project_id=teamspace_id, id=job_id)
|
|
275
360
|
|
|
276
361
|
while True:
|
|
@@ -334,13 +419,41 @@ class JobApiV2:
|
|
|
334
419
|
return Status.Stopping
|
|
335
420
|
return Status.Pending
|
|
336
421
|
|
|
337
|
-
def _get_job_machine_from_spec(self, spec: V1JobSpec) -> "Machine":
|
|
338
|
-
|
|
339
|
-
|
|
422
|
+
def _get_job_machine_from_spec(self, spec: V1JobSpec, teamspace_id: str, org_id: str) -> "Machine":
|
|
423
|
+
accelerators = self._get_machines_for_cloud_account(
|
|
424
|
+
teamspace_id=teamspace_id,
|
|
425
|
+
cloud_account_id=spec.cluster_id,
|
|
426
|
+
org_id=org_id,
|
|
427
|
+
)
|
|
340
428
|
|
|
341
|
-
|
|
342
|
-
|
|
429
|
+
for accelerator in accelerators:
|
|
430
|
+
possible_identifiers = (
|
|
431
|
+
accelerator.slug,
|
|
432
|
+
accelerator.slug_multi_cloud,
|
|
433
|
+
accelerator.instance_id,
|
|
434
|
+
)
|
|
435
|
+
if (spec.instance_name and spec.instance_name in possible_identifiers) or (
|
|
436
|
+
spec.instance_type and spec.instance_type in possible_identifiers
|
|
437
|
+
):
|
|
438
|
+
return Machine._from_accelerator(accelerator)
|
|
439
|
+
|
|
440
|
+
return Machine.from_str(spec.instance_name or spec.instance_type)
|
|
441
|
+
|
|
442
|
+
def _get_machines_for_cloud_account(
|
|
443
|
+
self, teamspace_id: str, cloud_account_id: str, org_id: str
|
|
444
|
+
) -> List[V1ClusterAccelerator]:
|
|
445
|
+
from lightning_sdk.api.cloud_account_api import CloudAccountApi
|
|
446
|
+
|
|
447
|
+
cloud_account_api = CloudAccountApi()
|
|
448
|
+
accelerators = cloud_account_api.list_cloud_account_accelerators(
|
|
449
|
+
teamspace_id=teamspace_id,
|
|
450
|
+
cloud_account_id=cloud_account_id,
|
|
451
|
+
org_id=org_id,
|
|
343
452
|
)
|
|
453
|
+
if not accelerators:
|
|
454
|
+
return []
|
|
455
|
+
|
|
456
|
+
return list(filter(lambda acc: acc.enabled, accelerators.accelerator))
|
|
344
457
|
|
|
345
458
|
def get_total_cost(self, job: V1Job) -> float:
|
|
346
459
|
return job.total_cost
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
from lightning_sdk.api.utils import _get_cloud_url as _cloud_url
|
|
2
|
+
from lightning_sdk.lightning_cloud.login import Auth
|
|
3
|
+
from lightning_sdk.lightning_cloud.openapi import LicenseKeyValidateBody, ProductLicenseServiceApi
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class LicenseApi:
|
|
7
|
+
def __init__(self, login_token: str) -> None:
|
|
8
|
+
self._cloud_url = _cloud_url()
|
|
9
|
+
self._auth = Auth()
|
|
10
|
+
self._auth.token_login(login_token, save_token=True)
|
|
11
|
+
self._client = self._auth.create_api_client()
|
|
12
|
+
self._api = ProductLicenseServiceApi(self._client)
|
|
13
|
+
|
|
14
|
+
def validate_license(self, license_key: str, product_id: str) -> bool:
|
|
15
|
+
"""Validate a license key for a specific product.
|
|
16
|
+
|
|
17
|
+
Args:
|
|
18
|
+
license_key: The license key to validate
|
|
19
|
+
product_id: The product ID
|
|
20
|
+
|
|
21
|
+
Returns:
|
|
22
|
+
bool: True if license is valid, False otherwise
|
|
23
|
+
|
|
24
|
+
Raises:
|
|
25
|
+
Exception: If license validation fails
|
|
26
|
+
"""
|
|
27
|
+
try:
|
|
28
|
+
response = self._api.product_license_service_validate_license(
|
|
29
|
+
body=LicenseKeyValidateBody(product_id=product_id), license_key=license_key
|
|
30
|
+
)
|
|
31
|
+
return response.is_valid
|
|
32
|
+
except Exception:
|
|
33
|
+
raise InvalidLicenseError(f"Invalid license key {license_key} for product {product_id}") from None
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
class InvalidLicenseError(Exception):
|
|
37
|
+
pass
|