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
lightning_sdk/job/v2.py
CHANGED
|
@@ -4,9 +4,10 @@ from lightning_sdk.api.job_api import JobApiV2
|
|
|
4
4
|
from lightning_sdk.api.utils import _get_cloud_url
|
|
5
5
|
from lightning_sdk.job.base import _BaseJob
|
|
6
6
|
from lightning_sdk.status import Status
|
|
7
|
+
from lightning_sdk.utils.resolve import _get_org_id
|
|
7
8
|
|
|
8
9
|
if TYPE_CHECKING:
|
|
9
|
-
from lightning_sdk.machine import Machine
|
|
10
|
+
from lightning_sdk.machine import CloudProvider, Machine
|
|
10
11
|
from lightning_sdk.organization import Organization
|
|
11
12
|
from lightning_sdk.studio import Studio
|
|
12
13
|
from lightning_sdk.teamspace import Teamspace
|
|
@@ -37,18 +38,22 @@ class _JobV2(_BaseJob):
|
|
|
37
38
|
|
|
38
39
|
def _submit(
|
|
39
40
|
self,
|
|
40
|
-
machine: "Machine",
|
|
41
|
+
machine: Union["Machine", str],
|
|
41
42
|
command: Optional[str] = None,
|
|
42
43
|
studio: Optional["Studio"] = None,
|
|
43
44
|
image: Optional[str] = None,
|
|
44
45
|
env: Optional[Dict[str, str]] = None,
|
|
45
46
|
interruptible: bool = False,
|
|
46
47
|
cloud_account: Optional[str] = None,
|
|
48
|
+
cloud_provider: Optional[Union["CloudProvider", str]] = None,
|
|
47
49
|
image_credentials: Optional[str] = None,
|
|
48
50
|
cloud_account_auth: bool = False,
|
|
49
|
-
artifacts_local: Optional[str] = None,
|
|
50
|
-
artifacts_remote: Optional[str] = None,
|
|
51
51
|
entrypoint: str = "sh -c",
|
|
52
|
+
path_mappings: Optional[Dict[str, str]] = None,
|
|
53
|
+
max_runtime: Optional[int] = None,
|
|
54
|
+
artifacts_local: Optional[str] = None, # deprecated in favor of path_mappings
|
|
55
|
+
artifacts_remote: Optional[str] = None, # deprecated in favor of path_mappings
|
|
56
|
+
reuse_snapshot: bool = True,
|
|
52
57
|
) -> "_JobV2":
|
|
53
58
|
"""Submit a new job to the Lightning AI platform.
|
|
54
59
|
|
|
@@ -70,17 +75,21 @@ class _JobV2(_BaseJob):
|
|
|
70
75
|
artifacts_local: The path of inside the docker container, you want to persist images from.
|
|
71
76
|
CAUTION: When setting this to "/", it will effectively erase your container.
|
|
72
77
|
Only supported for jobs with a docker image compute environment.
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
just runs the provided command in a standard shell.
|
|
82
|
-
To use the pre-defined entrypoint of the provided image, set this to an empty string.
|
|
78
|
+
path_mappings: Dictionary of path mappings. The keys are the path inside the container whereas the value
|
|
79
|
+
represents the data-connection name and the path inside that connection.
|
|
80
|
+
Should be of form
|
|
81
|
+
{
|
|
82
|
+
"<CONTAINER_PATH_1>": "<CONNECTION_NAME_1>:<PATH_WITHIN_CONNECTION_1>",
|
|
83
|
+
"<CONTAINER_PATH_2>": "<CONNECTION_NAME_2>"
|
|
84
|
+
}
|
|
85
|
+
If the path inside the connection is omitted it's assumed to be the root path of that connection.
|
|
83
86
|
Only applicable when submitting docker jobs.
|
|
87
|
+
max_runtime: the duration (in seconds) for which to allocate the machine.
|
|
88
|
+
Irrelevant for most machines, required for some of the top-end machines on GCP.
|
|
89
|
+
If in doubt, set it. Won't have an effect on machines not requiring it.
|
|
90
|
+
Defaults to 3h
|
|
91
|
+
reuse_snapshot: Whether the job should reuse a Studio snapshot when multiple jobs for the same Studio are
|
|
92
|
+
submitted. Turning this off may result in longer job startup times. Defaults to True.
|
|
84
93
|
"""
|
|
85
94
|
# Command is required if Studio is provided to know what to run
|
|
86
95
|
# Image is mutually exclusive with Studio
|
|
@@ -99,6 +108,13 @@ class _JobV2(_BaseJob):
|
|
|
99
108
|
if image is None:
|
|
100
109
|
raise ValueError("either image or studio must be provided")
|
|
101
110
|
|
|
111
|
+
cloud_account = self._cloud_account_api.resolve_cloud_account(
|
|
112
|
+
self._teamspace.id,
|
|
113
|
+
cloud_account=cloud_account,
|
|
114
|
+
cloud_provider=cloud_provider,
|
|
115
|
+
default_cloud_account=self._teamspace.default_cloud_account,
|
|
116
|
+
)
|
|
117
|
+
|
|
102
118
|
submitted = self._job_api.submit_job(
|
|
103
119
|
name=self.name,
|
|
104
120
|
command=command,
|
|
@@ -114,6 +130,9 @@ class _JobV2(_BaseJob):
|
|
|
114
130
|
artifacts_local=artifacts_local,
|
|
115
131
|
artifacts_remote=artifacts_remote,
|
|
116
132
|
entrypoint=entrypoint,
|
|
133
|
+
path_mappings=path_mappings,
|
|
134
|
+
max_runtime=max_runtime,
|
|
135
|
+
reuse_snapshot=reuse_snapshot,
|
|
117
136
|
)
|
|
118
137
|
self._job = submitted
|
|
119
138
|
self._name = submitted.name
|
|
@@ -140,13 +159,31 @@ class _JobV2(_BaseJob):
|
|
|
140
159
|
@property
|
|
141
160
|
def status(self) -> "Status":
|
|
142
161
|
"""The current status of the job."""
|
|
143
|
-
|
|
162
|
+
try:
|
|
163
|
+
return self._job_api._job_state_to_external(self._latest_job.state)
|
|
164
|
+
except Exception:
|
|
165
|
+
raise RuntimeError(
|
|
166
|
+
f"Job {self._name} does not exist in Teamspace {self.teamspace.name}. Did you delete it?"
|
|
167
|
+
) from None
|
|
144
168
|
|
|
145
169
|
@property
|
|
146
|
-
def machine(self) -> "Machine":
|
|
170
|
+
def machine(self) -> Union["Machine", str]:
|
|
147
171
|
"""The machine type the job is running on."""
|
|
148
172
|
# only fetch the job it it hasn't been fetched yet as machine cannot change over time
|
|
149
|
-
|
|
173
|
+
|
|
174
|
+
return self._job_api._get_job_machine_from_spec(
|
|
175
|
+
self._guaranteed_job.spec,
|
|
176
|
+
self.teamspace.id,
|
|
177
|
+
_get_org_id(self.teamspace),
|
|
178
|
+
)
|
|
179
|
+
|
|
180
|
+
@property
|
|
181
|
+
def public_ip(self) -> Optional[str]:
|
|
182
|
+
"""Get the public IP of the machine the job is running on."""
|
|
183
|
+
try:
|
|
184
|
+
return self._job.public_ip_address
|
|
185
|
+
except AttributeError:
|
|
186
|
+
return None
|
|
150
187
|
|
|
151
188
|
@property
|
|
152
189
|
def artifact_path(self) -> Optional[str]:
|
lightning_sdk/job/work.py
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
from typing import TYPE_CHECKING, Any, Optional, Protocol
|
|
1
|
+
from typing import TYPE_CHECKING, Any, Optional, Protocol, Union
|
|
2
2
|
|
|
3
3
|
from lightning_sdk.api.job_api import JobApiV1
|
|
4
|
+
from lightning_sdk.utils.resolve import _get_org_id
|
|
4
5
|
|
|
5
6
|
if TYPE_CHECKING:
|
|
6
7
|
from lightning_sdk.job.base import MachineDict
|
|
@@ -51,8 +52,11 @@ class Work:
|
|
|
51
52
|
return self._job._name_filter(self._guaranteed_work.name)
|
|
52
53
|
|
|
53
54
|
@property
|
|
54
|
-
def machine(self) -> "Machine":
|
|
55
|
-
return self._job_api.get_machine_from_work(
|
|
55
|
+
def machine(self) -> Union["Machine", str]:
|
|
56
|
+
return self._job_api.get_machine_from_work(
|
|
57
|
+
self._guaranteed_work,
|
|
58
|
+
org_id=_get_org_id(self._teamspace),
|
|
59
|
+
)
|
|
56
60
|
|
|
57
61
|
@property
|
|
58
62
|
def artifact_path(self) -> Optional[str]:
|
|
@@ -5,7 +5,7 @@ import logging
|
|
|
5
5
|
import os
|
|
6
6
|
import pathlib
|
|
7
7
|
from dataclasses import dataclass
|
|
8
|
-
from typing import Optional
|
|
8
|
+
from typing import Optional, Literal
|
|
9
9
|
from urllib.parse import urlencode
|
|
10
10
|
|
|
11
11
|
import webbrowser
|
|
@@ -17,14 +17,26 @@ from starlette.background import BackgroundTask
|
|
|
17
17
|
from starlette.responses import RedirectResponse
|
|
18
18
|
|
|
19
19
|
from lightning_sdk.lightning_cloud import env
|
|
20
|
+
from lightning_sdk.lightning_cloud.openapi import ApiClient, Configuration
|
|
21
|
+
from lightning_sdk.lightning_cloud.openapi.api import \
|
|
22
|
+
AuthServiceApi
|
|
23
|
+
from lightning_sdk.lightning_cloud.openapi.models.v1_guest_login_request import \
|
|
24
|
+
V1GuestLoginRequest
|
|
25
|
+
from lightning_sdk.lightning_cloud.openapi.models.v1_token_login_request import \
|
|
26
|
+
V1TokenLoginRequest
|
|
27
|
+
from lightning_sdk.lightning_cloud.openapi.models.v1_refresh_request import \
|
|
28
|
+
V1RefreshRequest
|
|
20
29
|
|
|
21
30
|
logger = logging.getLogger(__name__)
|
|
22
31
|
|
|
32
|
+
# Authentication override types
|
|
33
|
+
AuthOverride = Literal["auth_token", "api_key", "guest"]
|
|
23
34
|
|
|
24
35
|
class Keys(Enum):
|
|
25
36
|
# USERNAME = "LIGHTNING_USERNAME"
|
|
26
37
|
USER_ID = "LIGHTNING_USER_ID"
|
|
27
38
|
API_KEY = "LIGHTNING_API_KEY"
|
|
39
|
+
AUTH_TOKEN = "LIGHTNING_AUTH_TOKEN"
|
|
28
40
|
|
|
29
41
|
@property
|
|
30
42
|
def suffix(self):
|
|
@@ -36,21 +48,18 @@ class Auth:
|
|
|
36
48
|
# username: Optional[str] = None
|
|
37
49
|
user_id: Optional[str] = None
|
|
38
50
|
api_key: Optional[str] = None
|
|
51
|
+
auth_token: Optional[str] = None
|
|
39
52
|
|
|
40
53
|
secrets_file = pathlib.Path(env.LIGHTNING_CREDENTIAL_PATH)
|
|
41
54
|
|
|
42
55
|
def __post_init__(self):
|
|
43
56
|
for key in Keys:
|
|
44
|
-
|
|
57
|
+
# Only set from environment if not already set
|
|
58
|
+
if getattr(self, key.suffix) is None:
|
|
59
|
+
setattr(self, key.suffix, os.environ.get(key.value, None))
|
|
45
60
|
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
if self.api_key and not self.user_id:
|
|
49
|
-
raise ValueError(
|
|
50
|
-
f"{Keys.USER_ID.value} is missing from env variables. "
|
|
51
|
-
"To use env vars for authentication both "
|
|
52
|
-
f"{Keys.USER_ID.value} and {Keys.API_KEY.value} should be set."
|
|
53
|
-
)
|
|
61
|
+
# used by authenticate method
|
|
62
|
+
self._with_env_var = bool(self.api_key or self.auth_token)
|
|
54
63
|
|
|
55
64
|
def load(self) -> bool:
|
|
56
65
|
"""Load credentials from disk and update properties with credentials.
|
|
@@ -72,6 +81,7 @@ class Auth:
|
|
|
72
81
|
token: str = "",
|
|
73
82
|
user_id: str = "",
|
|
74
83
|
api_key: str = "",
|
|
84
|
+
auth_token: str = "",
|
|
75
85
|
# username: str = "",
|
|
76
86
|
) -> None:
|
|
77
87
|
"""save credentials to disk."""
|
|
@@ -82,6 +92,7 @@ class Auth:
|
|
|
82
92
|
# f"{Keys.USERNAME.suffix}": username,
|
|
83
93
|
f"{Keys.USER_ID.suffix}": user_id,
|
|
84
94
|
f"{Keys.API_KEY.suffix}": api_key,
|
|
95
|
+
f"{Keys.AUTH_TOKEN.suffix}": auth_token,
|
|
85
96
|
},
|
|
86
97
|
f,
|
|
87
98
|
)
|
|
@@ -89,6 +100,7 @@ class Auth:
|
|
|
89
100
|
# self.username = username
|
|
90
101
|
self.user_id = user_id
|
|
91
102
|
self.api_key = api_key
|
|
103
|
+
self.auth_token = auth_token
|
|
92
104
|
logger.debug("credentials saved successfully")
|
|
93
105
|
|
|
94
106
|
@classmethod
|
|
@@ -100,15 +112,78 @@ class Auth:
|
|
|
100
112
|
os.environ.pop(key.value, None)
|
|
101
113
|
logger.debug("credentials removed successfully")
|
|
102
114
|
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
115
|
+
def get_auth_header(self, override: Optional[AuthOverride] = None) -> Optional[str]:
|
|
116
|
+
"""Get authentication header with optional override.
|
|
117
|
+
|
|
118
|
+
By default, uses the automatic priority selection (auth_token > api_key).
|
|
119
|
+
You can override this for specific cases where you need a different auth method.
|
|
120
|
+
|
|
121
|
+
Parameters
|
|
122
|
+
----------
|
|
123
|
+
override : AuthOverride, optional
|
|
124
|
+
Override the default authentication method:
|
|
125
|
+
- "auth_token": Force use of JWT auth token (Bearer)
|
|
126
|
+
- "api_key": Force use of API key (Basic)
|
|
127
|
+
- "guest": Force use of guest credentials (Basic)
|
|
128
|
+
- None: Use automatic selection (default)
|
|
129
|
+
|
|
130
|
+
Returns
|
|
131
|
+
-------
|
|
132
|
+
Optional[str]
|
|
133
|
+
The authorization header for the specified method.
|
|
134
|
+
|
|
135
|
+
Raises
|
|
136
|
+
------
|
|
137
|
+
ValueError
|
|
138
|
+
If the specified override is not available or invalid.
|
|
139
|
+
"""
|
|
140
|
+
if override == "auth_token":
|
|
141
|
+
if not self.auth_token:
|
|
142
|
+
raise ValueError(
|
|
143
|
+
"Auth token override requested but no JWT token available. "
|
|
144
|
+
"Please use token_login() method first."
|
|
145
|
+
)
|
|
146
|
+
return f"Bearer {self.auth_token}"
|
|
147
|
+
|
|
148
|
+
elif override == "api_key":
|
|
149
|
+
if not self.api_key or not self.user_id:
|
|
150
|
+
raise ValueError(
|
|
151
|
+
"API key override requested but no API key or user ID available. "
|
|
152
|
+
"Please set LIGHTNING_API_KEY and LIGHTNING_USER_ID environment variables "
|
|
153
|
+
"or use authenticate() method."
|
|
154
|
+
)
|
|
107
155
|
token = f"{self.user_id}:{self.api_key}"
|
|
108
156
|
return f"Basic {base64.b64encode(token.encode('ascii')).decode('ascii')}" # noqa E501
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
157
|
+
|
|
158
|
+
elif override == "guest":
|
|
159
|
+
if not self.api_key or not self.user_id:
|
|
160
|
+
raise ValueError(
|
|
161
|
+
"Guest override requested but no guest credentials available. "
|
|
162
|
+
"Please call guest_login() method first."
|
|
163
|
+
)
|
|
164
|
+
token = f"{self.user_id}:{self.api_key}"
|
|
165
|
+
return f"Basic {base64.b64encode(token.encode('ascii')).decode('ascii')}" # noqa E501
|
|
166
|
+
|
|
167
|
+
elif override is None:
|
|
168
|
+
# Use the original automatic selection logic (default behavior)
|
|
169
|
+
if self.auth_token:
|
|
170
|
+
return f"Bearer {self.auth_token}"
|
|
171
|
+
elif self.api_key:
|
|
172
|
+
token = f"{self.user_id}:{self.api_key}"
|
|
173
|
+
return f"Basic {base64.b64encode(token.encode('ascii')).decode('ascii')}" # noqa E501
|
|
174
|
+
else:
|
|
175
|
+
raise ValueError(
|
|
176
|
+
"No authentication credentials available. Please authenticate first using "
|
|
177
|
+
"token_login(), guest_login(), or authenticate() methods."
|
|
178
|
+
)
|
|
179
|
+
|
|
180
|
+
else:
|
|
181
|
+
raise ValueError(f"Invalid authentication override: {override}")
|
|
182
|
+
|
|
183
|
+
@property
|
|
184
|
+
def auth_header(self) -> Optional[str]:
|
|
185
|
+
"""authentication header used by lightning-cloud client (automatic selection)."""
|
|
186
|
+
return self.get_auth_header()
|
|
112
187
|
|
|
113
188
|
def _run_server(self) -> None:
|
|
114
189
|
"""start a server to complete authentication."""
|
|
@@ -131,6 +206,8 @@ class Auth:
|
|
|
131
206
|
self._run_server()
|
|
132
207
|
return self.auth_header
|
|
133
208
|
|
|
209
|
+
elif self.auth_token:
|
|
210
|
+
return self.auth_header
|
|
134
211
|
elif self.user_id and self.api_key:
|
|
135
212
|
return self.auth_header
|
|
136
213
|
|
|
@@ -138,6 +215,233 @@ class Auth:
|
|
|
138
215
|
"We couldn't find any credentials linked to your account. Please try logging in using the CLI command `lightning login`"
|
|
139
216
|
)
|
|
140
217
|
|
|
218
|
+
def guest_login(self) -> Optional[str]:
|
|
219
|
+
"""Performs guest user authentication.
|
|
220
|
+
This method sends a request to the guest login endpoint to get temporary
|
|
221
|
+
credentials, saves them, and returns the authorization header.
|
|
222
|
+
Useful to log experiments as a non signed in user, using a guest account
|
|
223
|
+
in the background.
|
|
224
|
+
Returns
|
|
225
|
+
-------
|
|
226
|
+
Optional[str]
|
|
227
|
+
The authorization header to use for subsequent requests.
|
|
228
|
+
Raises
|
|
229
|
+
------
|
|
230
|
+
RuntimeError
|
|
231
|
+
If the guest login request fails.
|
|
232
|
+
ValueError
|
|
233
|
+
If the response from the server is invalid.
|
|
234
|
+
"""
|
|
235
|
+
|
|
236
|
+
config = Configuration()
|
|
237
|
+
config.host = env.LIGHTNING_CLOUD_URL
|
|
238
|
+
api_client = ApiClient(configuration=config)
|
|
239
|
+
auth_api = AuthServiceApi(api_client)
|
|
240
|
+
|
|
241
|
+
logger.debug(f"Attempting guest login to {config.host}")
|
|
242
|
+
|
|
243
|
+
try:
|
|
244
|
+
# The body is an empty object for a guest login.
|
|
245
|
+
body = V1GuestLoginRequest()
|
|
246
|
+
credentials = auth_api.auth_service_guest_login(body)
|
|
247
|
+
|
|
248
|
+
except requests.RequestException as e:
|
|
249
|
+
logger.error(f"Guest login request failed: {e}")
|
|
250
|
+
raise RuntimeError(
|
|
251
|
+
"Failed to connect to the guest login endpoint. "
|
|
252
|
+
"Please check your network connection and the server status."
|
|
253
|
+
) from e
|
|
254
|
+
|
|
255
|
+
# attributes based on the `V1GuestLoginResponse` model.
|
|
256
|
+
user = getattr(credentials, "user", None)
|
|
257
|
+
user_id = getattr(user, "id", None) if user else None
|
|
258
|
+
api_key = getattr(user, "api_key", None) if user else None
|
|
259
|
+
|
|
260
|
+
if not all([user_id, api_key]):
|
|
261
|
+
logger.error(
|
|
262
|
+
f"Incomplete credentials received from guest login: {credentials}"
|
|
263
|
+
)
|
|
264
|
+
raise ValueError(
|
|
265
|
+
"The guest login response did not contain the required 'user_id' and 'api_key' fields."
|
|
266
|
+
)
|
|
267
|
+
|
|
268
|
+
self.save(user_id=user_id, api_key=api_key)
|
|
269
|
+
logger.info("Successfully authenticated as a guest user.")
|
|
270
|
+
|
|
271
|
+
return self.auth_header
|
|
272
|
+
|
|
273
|
+
def token_login(self, token_key: str, save_token: bool = True) -> Optional[str]:
|
|
274
|
+
"""Performs token-based authentication.
|
|
275
|
+
|
|
276
|
+
This method sends a request to the token login endpoint to authenticate
|
|
277
|
+
using an auth token key, optionally saves the returned JWT token, and
|
|
278
|
+
returns the authorization header.
|
|
279
|
+
|
|
280
|
+
Parameters
|
|
281
|
+
----------
|
|
282
|
+
token_key : str
|
|
283
|
+
The auth token key to use for authentication.
|
|
284
|
+
save_token : bool, optional
|
|
285
|
+
Whether to save the JWT token for future use. Defaults to True.
|
|
286
|
+
If False, the token is only used for the current session.
|
|
287
|
+
|
|
288
|
+
Returns
|
|
289
|
+
-------
|
|
290
|
+
Optional[str]
|
|
291
|
+
The authorization header to use for subsequent requests.
|
|
292
|
+
|
|
293
|
+
Raises
|
|
294
|
+
------
|
|
295
|
+
RuntimeError
|
|
296
|
+
If the token login request fails.
|
|
297
|
+
ValueError
|
|
298
|
+
If the response from the server is invalid.
|
|
299
|
+
"""
|
|
300
|
+
config = Configuration()
|
|
301
|
+
config.host = env.LIGHTNING_CLOUD_URL
|
|
302
|
+
api_client = ApiClient(configuration=config)
|
|
303
|
+
auth_api = AuthServiceApi(api_client)
|
|
304
|
+
|
|
305
|
+
logger.debug(f"Attempting token login to {config.host}")
|
|
306
|
+
|
|
307
|
+
try:
|
|
308
|
+
body = V1TokenLoginRequest(token_key=token_key)
|
|
309
|
+
response = auth_api.auth_service_token_login(body)
|
|
310
|
+
|
|
311
|
+
except requests.RequestException as e:
|
|
312
|
+
logger.error(f"Token login request failed: {e}")
|
|
313
|
+
raise RuntimeError(
|
|
314
|
+
"Failed to connect to the token login endpoint. "
|
|
315
|
+
"Please check your network connection and the server status."
|
|
316
|
+
) from e
|
|
317
|
+
|
|
318
|
+
# Extract the JWT token from the response
|
|
319
|
+
jwt_token = getattr(response, "token", None)
|
|
320
|
+
|
|
321
|
+
if not jwt_token:
|
|
322
|
+
logger.error(
|
|
323
|
+
f"No token received from token login response: {response}"
|
|
324
|
+
)
|
|
325
|
+
raise ValueError(
|
|
326
|
+
"The token login response did not contain a valid JWT token."
|
|
327
|
+
)
|
|
328
|
+
|
|
329
|
+
# Set the JWT token in memory
|
|
330
|
+
self.auth_token = jwt_token
|
|
331
|
+
|
|
332
|
+
# Optionally save the JWT token to disk
|
|
333
|
+
if save_token:
|
|
334
|
+
self.save(auth_token=jwt_token)
|
|
335
|
+
logger.info("Successfully authenticated using auth token and saved to disk.")
|
|
336
|
+
else:
|
|
337
|
+
logger.info("Successfully authenticated using auth token (not saved to disk).")
|
|
338
|
+
|
|
339
|
+
return self.auth_header
|
|
340
|
+
|
|
341
|
+
def refresh_token(self, duration: int = 43200) -> Optional[str]:
|
|
342
|
+
"""Refreshes the current JWT token.
|
|
343
|
+
|
|
344
|
+
This method sends a request to the refresh endpoint to get a new JWT token
|
|
345
|
+
with the specified duration, saves the new token, and returns the updated
|
|
346
|
+
authorization header.
|
|
347
|
+
|
|
348
|
+
Parameters
|
|
349
|
+
----------
|
|
350
|
+
duration : int, optional
|
|
351
|
+
Duration in seconds for the new token. Can range from 900 seconds (15 minutes)
|
|
352
|
+
up to a maximum of 129,600 seconds (36 hours), with a default of 43,200 seconds (12 hours).
|
|
353
|
+
|
|
354
|
+
Returns
|
|
355
|
+
-------
|
|
356
|
+
Optional[str]
|
|
357
|
+
The updated authorization header with the new JWT token.
|
|
358
|
+
|
|
359
|
+
Raises
|
|
360
|
+
------
|
|
361
|
+
RuntimeError
|
|
362
|
+
If the refresh request fails.
|
|
363
|
+
ValueError
|
|
364
|
+
If no valid JWT token is available to refresh, or if the response is invalid.
|
|
365
|
+
"""
|
|
366
|
+
if not self.auth_token:
|
|
367
|
+
raise ValueError(
|
|
368
|
+
"No JWT token available to refresh. Please authenticate first using "
|
|
369
|
+
"token_login() or authenticate() methods."
|
|
370
|
+
)
|
|
371
|
+
|
|
372
|
+
config = Configuration()
|
|
373
|
+
config.host = env.LIGHTNING_CLOUD_URL
|
|
374
|
+
# Set the current auth token as the authorization header
|
|
375
|
+
config.api_key_prefix['Authorization'] = 'Bearer'
|
|
376
|
+
config.api_key['Authorization'] = self.auth_token
|
|
377
|
+
|
|
378
|
+
api_client = ApiClient(configuration=config)
|
|
379
|
+
auth_api = AuthServiceApi(api_client)
|
|
380
|
+
|
|
381
|
+
logger.debug(f"Attempting to refresh JWT token with duration {duration} seconds")
|
|
382
|
+
|
|
383
|
+
try:
|
|
384
|
+
body = V1RefreshRequest(duration=str(duration))
|
|
385
|
+
response = auth_api.auth_service_refresh(body)
|
|
386
|
+
|
|
387
|
+
except requests.RequestException as e:
|
|
388
|
+
logger.error(f"Token refresh request failed: {e}")
|
|
389
|
+
raise RuntimeError(
|
|
390
|
+
"Failed to connect to the refresh endpoint. "
|
|
391
|
+
"Please check your network connection and the server status."
|
|
392
|
+
) from e
|
|
393
|
+
|
|
394
|
+
# Extract the new JWT token from the response
|
|
395
|
+
new_jwt_token = getattr(response, "token", None)
|
|
396
|
+
|
|
397
|
+
if not new_jwt_token:
|
|
398
|
+
logger.error(
|
|
399
|
+
f"No token received from refresh response: {response}"
|
|
400
|
+
)
|
|
401
|
+
raise ValueError(
|
|
402
|
+
"The refresh response did not contain a valid JWT token."
|
|
403
|
+
)
|
|
404
|
+
|
|
405
|
+
# Save the new JWT token
|
|
406
|
+
self.save(auth_token=new_jwt_token)
|
|
407
|
+
logger.info("Successfully refreshed JWT token.")
|
|
408
|
+
|
|
409
|
+
return self.auth_header
|
|
410
|
+
|
|
411
|
+
def create_api_client(self, override: Optional[AuthOverride] = None) -> 'ApiClient':
|
|
412
|
+
"""Create an API client with optional authentication override.
|
|
413
|
+
|
|
414
|
+
This is a convenience method for creating API clients that use a specific
|
|
415
|
+
authentication method instead of the default automatic selection.
|
|
416
|
+
|
|
417
|
+
Parameters
|
|
418
|
+
----------
|
|
419
|
+
override : AuthOverride, optional
|
|
420
|
+
Override the default authentication method for this API client.
|
|
421
|
+
See get_auth_header() for available options.
|
|
422
|
+
|
|
423
|
+
Returns
|
|
424
|
+
-------
|
|
425
|
+
ApiClient
|
|
426
|
+
Configured API client with the specified authentication method.
|
|
427
|
+
"""
|
|
428
|
+
from lightning_sdk.lightning_cloud.openapi import ApiClient, Configuration
|
|
429
|
+
|
|
430
|
+
config = Configuration()
|
|
431
|
+
config.host = env.LIGHTNING_CLOUD_URL
|
|
432
|
+
|
|
433
|
+
# Get the auth header for the specified override
|
|
434
|
+
auth_header = self.get_auth_header(override)
|
|
435
|
+
|
|
436
|
+
# Create the API client
|
|
437
|
+
client = ApiClient(configuration=config)
|
|
438
|
+
|
|
439
|
+
# Set the Authorization header directly in default_headers
|
|
440
|
+
if auth_header:
|
|
441
|
+
client.set_default_header('Authorization', auth_header)
|
|
442
|
+
|
|
443
|
+
return client
|
|
444
|
+
|
|
141
445
|
|
|
142
446
|
class AuthServer:
|
|
143
447
|
|
|
@@ -168,7 +472,10 @@ class AuthServer:
|
|
|
168
472
|
ok = webbrowser.open(url)
|
|
169
473
|
if not ok:
|
|
170
474
|
# can't open a browser, authentication failed
|
|
171
|
-
|
|
475
|
+
deployment_id = os.environ.get("LIGHTNING_DEPLOYMENT_ID", None)
|
|
476
|
+
if deployment_id is not None and deployment_id != "":
|
|
477
|
+
raise RuntimeError("Failed to authenticate to Lightning. Ensure that you have selected 'Include SDK credentials' in the 'Environment' section of the deployment settings.")
|
|
478
|
+
raise RuntimeError("Failed to authenticate to Lightning. When running without access to a browser, 'LIGHTNING_USER_ID' and 'LIGHTNING_API_KEY' should be exported.")
|
|
172
479
|
|
|
173
480
|
@app.get("/login-complete")
|
|
174
481
|
async def save_token(request: Request,
|