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/base.py
CHANGED
|
@@ -1,11 +1,14 @@
|
|
|
1
|
+
import warnings
|
|
1
2
|
from abc import ABC, abstractmethod
|
|
2
3
|
from typing import TYPE_CHECKING, Any, Dict, Optional, TypedDict, Union
|
|
3
4
|
|
|
5
|
+
from lightning_sdk.api.cloud_account_api import CloudAccountApi
|
|
4
6
|
from lightning_sdk.api.utils import _get_cloud_url
|
|
5
|
-
from lightning_sdk.utils.
|
|
7
|
+
from lightning_sdk.utils.logging import TrackCallsABCMeta
|
|
8
|
+
from lightning_sdk.utils.resolve import _resolve_deprecated_cluster, _resolve_teamspace, in_studio, skip_studio_setup
|
|
6
9
|
|
|
7
10
|
if TYPE_CHECKING:
|
|
8
|
-
from lightning_sdk.machine import Machine
|
|
11
|
+
from lightning_sdk.machine import CloudProvider, Machine
|
|
9
12
|
from lightning_sdk.organization import Organization
|
|
10
13
|
from lightning_sdk.status import Status
|
|
11
14
|
from lightning_sdk.studio import Studio
|
|
@@ -16,7 +19,7 @@ if TYPE_CHECKING:
|
|
|
16
19
|
class MachineDict(TypedDict):
|
|
17
20
|
name: str
|
|
18
21
|
status: "Status"
|
|
19
|
-
machine: "Machine"
|
|
22
|
+
machine: Union["Machine", str]
|
|
20
23
|
|
|
21
24
|
|
|
22
25
|
class JobDict(MachineDict):
|
|
@@ -27,7 +30,7 @@ class JobDict(MachineDict):
|
|
|
27
30
|
total_cost: float
|
|
28
31
|
|
|
29
32
|
|
|
30
|
-
class _BaseJob(ABC):
|
|
33
|
+
class _BaseJob(ABC, metaclass=TrackCallsABCMeta):
|
|
31
34
|
"""Base interface to all job types."""
|
|
32
35
|
|
|
33
36
|
def __init__(
|
|
@@ -63,12 +66,13 @@ class _BaseJob(ABC):
|
|
|
63
66
|
self._update_internal_job()
|
|
64
67
|
|
|
65
68
|
self._prevent_refetch_latest = False
|
|
69
|
+
self._cloud_account_api = CloudAccountApi()
|
|
66
70
|
|
|
67
71
|
@classmethod
|
|
68
72
|
def run(
|
|
69
73
|
cls,
|
|
70
74
|
name: str,
|
|
71
|
-
machine: "Machine",
|
|
75
|
+
machine: Union["Machine", str],
|
|
72
76
|
command: Optional[str] = None,
|
|
73
77
|
studio: Union["Studio", str, None] = None,
|
|
74
78
|
image: Optional[str] = None,
|
|
@@ -76,6 +80,7 @@ class _BaseJob(ABC):
|
|
|
76
80
|
org: Union[str, "Organization", None] = None,
|
|
77
81
|
user: Union[str, "User", None] = None,
|
|
78
82
|
cloud_account: Optional[str] = None,
|
|
83
|
+
cloud_provider: Optional[Union["CloudProvider", str]] = None,
|
|
79
84
|
env: Optional[Dict[str, str]] = None,
|
|
80
85
|
interruptible: bool = False,
|
|
81
86
|
image_credentials: Optional[str] = None,
|
|
@@ -83,7 +88,10 @@ class _BaseJob(ABC):
|
|
|
83
88
|
artifacts_local: Optional[str] = None,
|
|
84
89
|
artifacts_remote: Optional[str] = None,
|
|
85
90
|
entrypoint: str = "sh -c",
|
|
91
|
+
path_mappings: Optional[Dict[str, str]] = None,
|
|
92
|
+
max_runtime: Optional[int] = None,
|
|
86
93
|
cluster: Optional[str] = None, # deprecated in favor of cloud_account
|
|
94
|
+
reuse_snapshot: bool = True,
|
|
87
95
|
) -> "_BaseJob":
|
|
88
96
|
"""Run async workloads using a docker image or a compute environment from your studio.
|
|
89
97
|
|
|
@@ -99,7 +107,11 @@ class _BaseJob(ABC):
|
|
|
99
107
|
user: The user owning the teamspace (if any). Defaults to the current user.
|
|
100
108
|
cloud_account: The cloud account to run the job on.
|
|
101
109
|
Defaults to the studio cloud account if running with studio compute env.
|
|
102
|
-
If not provided
|
|
110
|
+
If not provided and `cloud_account_provider` is set, will resolve cluster from this, else
|
|
111
|
+
will fall back to the teamspaces default cloud account.
|
|
112
|
+
cloud_account_provider: The provider to select the cloud-account from.
|
|
113
|
+
If set, must be in agreement with the provider from the cloud_account (if specified).
|
|
114
|
+
If not specified, falls backto the teamspace default cloud account.
|
|
103
115
|
env: Environment variables to set inside the job.
|
|
104
116
|
interruptible: Whether the job should run on interruptible instances. They are cheaper but can be preempted.
|
|
105
117
|
image_credentials: The credentials used to pull the image. Required if the image is private.
|
|
@@ -120,7 +132,14 @@ class _BaseJob(ABC):
|
|
|
120
132
|
just runs the provided command in a standard shell.
|
|
121
133
|
To use the pre-defined entrypoint of the provided image, set this to an empty string.
|
|
122
134
|
Only applicable when submitting docker jobs.
|
|
135
|
+
max_runtime: the duration (in seconds) for which to allocate the machine.
|
|
136
|
+
Irrelevant for most machines, required for some of the top-end machines on GCP.
|
|
137
|
+
If in doubt, set it. Won't have an effect on machines not requiring it.
|
|
138
|
+
Defaults to 3h
|
|
139
|
+
reuse_snapshot: Whether the job should reuse a Studio snapshot when multiple jobs for the same Studio are
|
|
140
|
+
submitted. Turning this off may result in longer job startup times. Defaults to True.
|
|
123
141
|
"""
|
|
142
|
+
from lightning_sdk.lightning_cloud.openapi.rest import ApiException
|
|
124
143
|
from lightning_sdk.studio import Studio
|
|
125
144
|
|
|
126
145
|
cloud_account = _resolve_deprecated_cluster(cloud_account, cluster)
|
|
@@ -130,9 +149,15 @@ class _BaseJob(ABC):
|
|
|
130
149
|
|
|
131
150
|
if image is None:
|
|
132
151
|
if not isinstance(studio, Studio):
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
152
|
+
with skip_studio_setup():
|
|
153
|
+
studio = Studio(
|
|
154
|
+
name=studio,
|
|
155
|
+
teamspace=teamspace,
|
|
156
|
+
org=org,
|
|
157
|
+
user=user,
|
|
158
|
+
cloud_account=cloud_account,
|
|
159
|
+
create_ok=False,
|
|
160
|
+
)
|
|
136
161
|
|
|
137
162
|
# studio is a Studio instance at this point
|
|
138
163
|
if teamspace is None:
|
|
@@ -175,6 +200,13 @@ class _BaseJob(ABC):
|
|
|
175
200
|
raise RuntimeError(
|
|
176
201
|
"image and studio are mutually exclusive as both define the environment to run the job in"
|
|
177
202
|
)
|
|
203
|
+
if cloud_account is None and in_studio():
|
|
204
|
+
try:
|
|
205
|
+
with skip_studio_setup():
|
|
206
|
+
resolve_studio = Studio(teamspace=teamspace, user=user, org=org)
|
|
207
|
+
cloud_account = resolve_studio.cloud_account
|
|
208
|
+
except (ValueError, ApiException):
|
|
209
|
+
warnings.warn("Could not infer cloud account from studio. Using teamspace default.")
|
|
178
210
|
|
|
179
211
|
# they either need to specified both or none of them
|
|
180
212
|
if bool(artifacts_local) != bool(artifacts_remote):
|
|
@@ -190,6 +222,7 @@ class _BaseJob(ABC):
|
|
|
190
222
|
return inst._submit(
|
|
191
223
|
machine=machine,
|
|
192
224
|
cloud_account=cloud_account,
|
|
225
|
+
cloud_provider=cloud_provider,
|
|
193
226
|
command=command,
|
|
194
227
|
studio=studio,
|
|
195
228
|
image=image,
|
|
@@ -200,23 +233,30 @@ class _BaseJob(ABC):
|
|
|
200
233
|
artifacts_local=artifacts_local,
|
|
201
234
|
artifacts_remote=artifacts_remote,
|
|
202
235
|
entrypoint=entrypoint,
|
|
236
|
+
path_mappings=path_mappings,
|
|
237
|
+
max_runtime=max_runtime,
|
|
238
|
+
reuse_snapshot=reuse_snapshot,
|
|
203
239
|
)
|
|
204
240
|
|
|
205
241
|
@abstractmethod
|
|
206
242
|
def _submit(
|
|
207
243
|
self,
|
|
208
|
-
machine: "Machine",
|
|
244
|
+
machine: Union["Machine", str],
|
|
209
245
|
command: Optional[str] = None,
|
|
210
246
|
studio: Optional["Studio"] = None,
|
|
211
247
|
image: Optional[str] = None,
|
|
212
248
|
env: Optional[Dict[str, str]] = None,
|
|
213
249
|
interruptible: bool = False,
|
|
214
250
|
cloud_account: Optional[str] = None,
|
|
251
|
+
cloud_provider: Optional[Union["CloudProvider", str]] = None,
|
|
215
252
|
image_credentials: Optional[str] = None,
|
|
216
253
|
cloud_account_auth: bool = False,
|
|
217
254
|
artifacts_local: Optional[str] = None,
|
|
218
255
|
artifacts_remote: Optional[str] = None,
|
|
219
256
|
entrypoint: str = "sh -c",
|
|
257
|
+
path_mappings: Optional[Dict[str, str]] = None,
|
|
258
|
+
max_runtime: Optional[int] = None,
|
|
259
|
+
reuse_snapshot: bool = True,
|
|
220
260
|
) -> "_BaseJob":
|
|
221
261
|
"""Submit a new job to the Lightning AI platform.
|
|
222
262
|
|
|
@@ -230,7 +270,11 @@ class _BaseJob(ABC):
|
|
|
230
270
|
interruptible: Whether the job should run on interruptible instances. They are cheaper but can be preempted.
|
|
231
271
|
cloud_account: The cloud account to run the job on.
|
|
232
272
|
Defaults to the studio cloud account if running with studio compute env.
|
|
233
|
-
If not provided
|
|
273
|
+
If not provided and `cloud_account_provider` is set, will resolve cluster from this, else
|
|
274
|
+
will fall back to the teamspaces default cloud account.
|
|
275
|
+
cloud_account_provider: The provider to select the cloud-account from.
|
|
276
|
+
If set, must be in agreement with the provider from the cloud_account (if specified).
|
|
277
|
+
If not specified, falls backto the teamspace default cloud account.
|
|
234
278
|
image_credentials: The credentials used to pull the image. Required if the image is private.
|
|
235
279
|
This should be the name of the respective credentials secret created on the Lightning AI platform.
|
|
236
280
|
cloud_account_auth: Whether to authenticate with the cloud account to pull the image.
|
|
@@ -248,6 +292,12 @@ class _BaseJob(ABC):
|
|
|
248
292
|
entrypoint: The entrypoint of your docker container. Defaults to sh -c.
|
|
249
293
|
To use the pre-defined entrypoint of the provided image, set this to an empty string.
|
|
250
294
|
Only applicable when submitting docker jobs.
|
|
295
|
+
max_runtime: the duration (in seconds) for which to allocate the machine.
|
|
296
|
+
Irrelevant for most machines, required for some of the top-end machines on GCP.
|
|
297
|
+
If in doubt, set it. Won't have an effect on machines not requiring it.
|
|
298
|
+
Defaults to 3h
|
|
299
|
+
reuse_snapshot: Whether the job should reuse a Studio snapshot when multiple jobs for the same Studio are
|
|
300
|
+
submitted. Turning this off may result in longer job startup times. Defaults to True.
|
|
251
301
|
"""
|
|
252
302
|
|
|
253
303
|
@abstractmethod
|
|
@@ -264,6 +314,56 @@ class _BaseJob(ABC):
|
|
|
264
314
|
Caution: This also deletes all artifacts and snapshots associated with the job.
|
|
265
315
|
"""
|
|
266
316
|
|
|
317
|
+
def wait(self, interval: float = 5.0, timeout: Optional[float] = None, stop_on_timeout: bool = False) -> None:
|
|
318
|
+
"""Waits for the job to be either completed, manually stopped or failed.
|
|
319
|
+
|
|
320
|
+
Args:
|
|
321
|
+
interval: The number of seconds to spend in-between status checks.
|
|
322
|
+
timeout: The maximum number of seconds to wait before raising an error. If None, waits forever.
|
|
323
|
+
stop_on_timeout: Whether to stop the job if it didn't finish within the timeout.
|
|
324
|
+
"""
|
|
325
|
+
import time
|
|
326
|
+
|
|
327
|
+
from lightning_sdk.status import Status
|
|
328
|
+
|
|
329
|
+
start = time.time()
|
|
330
|
+
while True:
|
|
331
|
+
if self.status in (Status.Completed, Status.Stopped, Status.Failed):
|
|
332
|
+
break
|
|
333
|
+
|
|
334
|
+
if timeout is not None and time.time() - start > timeout:
|
|
335
|
+
if stop_on_timeout:
|
|
336
|
+
self.stop() # ensure the job is stopped if it didn't finish
|
|
337
|
+
raise TimeoutError("Job didn't finish within the provided timeout.")
|
|
338
|
+
|
|
339
|
+
time.sleep(interval)
|
|
340
|
+
|
|
341
|
+
async def async_wait(
|
|
342
|
+
self, interval: float = 5.0, timeout: Optional[float] = None, stop_on_timeout: bool = False
|
|
343
|
+
) -> None:
|
|
344
|
+
"""Waits for the job to be either completed, manually stopped or failed.
|
|
345
|
+
|
|
346
|
+
Args:
|
|
347
|
+
interval: The number of seconds to spend in-between status checks.
|
|
348
|
+
timeout: The maximum number of seconds to wait before raising an error. If None, waits forever.
|
|
349
|
+
stop_on_timeout: Whether to stop the job if it didn't finish within the timeout.
|
|
350
|
+
"""
|
|
351
|
+
import asyncio
|
|
352
|
+
|
|
353
|
+
from lightning_sdk.status import Status
|
|
354
|
+
|
|
355
|
+
start = asyncio.get_event_loop().time()
|
|
356
|
+
while True:
|
|
357
|
+
if self.status in (Status.Completed, Status.Stopped, Status.Failed):
|
|
358
|
+
break
|
|
359
|
+
|
|
360
|
+
if timeout is not None and asyncio.get_event_loop().time() - start > timeout:
|
|
361
|
+
if stop_on_timeout:
|
|
362
|
+
self.stop() # ensure the job is stopped if it didn't finish
|
|
363
|
+
raise TimeoutError("Job didn't finish within the provided timeout.")
|
|
364
|
+
|
|
365
|
+
await asyncio.sleep(interval)
|
|
366
|
+
|
|
267
367
|
@property
|
|
268
368
|
@abstractmethod
|
|
269
369
|
def status(self) -> "Status":
|
|
@@ -271,7 +371,7 @@ class _BaseJob(ABC):
|
|
|
271
371
|
|
|
272
372
|
@property
|
|
273
373
|
@abstractmethod
|
|
274
|
-
def machine(self) -> "Machine":
|
|
374
|
+
def machine(self) -> Union["Machine", str]:
|
|
275
375
|
"""The machine type the job is running on."""
|
|
276
376
|
|
|
277
377
|
@property
|
lightning_sdk/job/job.py
CHANGED
|
@@ -1,7 +1,5 @@
|
|
|
1
|
-
from functools import lru_cache
|
|
2
1
|
from typing import TYPE_CHECKING, Any, Dict, Optional, Union
|
|
3
2
|
|
|
4
|
-
from lightning_sdk.api.user_api import UserApi
|
|
5
3
|
from lightning_sdk.job.base import _BaseJob
|
|
6
4
|
from lightning_sdk.job.v1 import _JobV1
|
|
7
5
|
from lightning_sdk.job.v2 import _JobV2
|
|
@@ -10,7 +8,7 @@ from lightning_sdk.utils.resolve import _setup_logger
|
|
|
10
8
|
_logger = _setup_logger(__name__)
|
|
11
9
|
|
|
12
10
|
if TYPE_CHECKING:
|
|
13
|
-
from lightning_sdk.machine import Machine
|
|
11
|
+
from lightning_sdk.machine import CloudProvider, Machine
|
|
14
12
|
from lightning_sdk.organization import Organization
|
|
15
13
|
from lightning_sdk.status import Status
|
|
16
14
|
from lightning_sdk.studio import Studio
|
|
@@ -18,15 +16,6 @@ if TYPE_CHECKING:
|
|
|
18
16
|
from lightning_sdk.user import User
|
|
19
17
|
|
|
20
18
|
|
|
21
|
-
@lru_cache(maxsize=None)
|
|
22
|
-
def _has_jobs_v2() -> bool:
|
|
23
|
-
api = UserApi()
|
|
24
|
-
try:
|
|
25
|
-
return api._get_feature_flags().jobs_v2
|
|
26
|
-
except Exception:
|
|
27
|
-
return False
|
|
28
|
-
|
|
29
|
-
|
|
30
19
|
class Job(_BaseJob):
|
|
31
20
|
"""Class to submit and manage single-machine jobs on the Lightning AI Platform."""
|
|
32
21
|
|
|
@@ -52,7 +41,7 @@ class Job(_BaseJob):
|
|
|
52
41
|
"""
|
|
53
42
|
from lightning_sdk.lightning_cloud.openapi.rest import ApiException
|
|
54
43
|
|
|
55
|
-
if
|
|
44
|
+
if not self._force_v1:
|
|
56
45
|
# try with v2 and fall back to v1
|
|
57
46
|
try:
|
|
58
47
|
job = _JobV2(
|
|
@@ -89,7 +78,7 @@ class Job(_BaseJob):
|
|
|
89
78
|
def run(
|
|
90
79
|
cls,
|
|
91
80
|
name: str,
|
|
92
|
-
machine: "Machine",
|
|
81
|
+
machine: Union["Machine", str],
|
|
93
82
|
command: Optional[str] = None,
|
|
94
83
|
studio: Union["Studio", str, None] = None,
|
|
95
84
|
image: Union[str, None] = None,
|
|
@@ -97,14 +86,18 @@ class Job(_BaseJob):
|
|
|
97
86
|
org: Union[str, "Organization", None] = None,
|
|
98
87
|
user: Union[str, "User", None] = None,
|
|
99
88
|
cloud_account: Optional[str] = None,
|
|
89
|
+
cloud_provider: Optional[Union["CloudProvider", str]] = None,
|
|
100
90
|
env: Optional[Dict[str, str]] = None,
|
|
101
91
|
interruptible: bool = False,
|
|
102
92
|
image_credentials: Optional[str] = None,
|
|
103
93
|
cloud_account_auth: bool = False,
|
|
104
|
-
artifacts_local: Optional[str] = None,
|
|
105
|
-
artifacts_remote: Optional[str] = None,
|
|
106
94
|
entrypoint: str = "sh -c",
|
|
95
|
+
path_mappings: Optional[Dict[str, str]] = None,
|
|
96
|
+
max_runtime: Optional[int] = None,
|
|
97
|
+
artifacts_local: Optional[str] = None, # deprecated in terms of path_mappings
|
|
98
|
+
artifacts_remote: Optional[str] = None, # deprecated in terms of path_mappings
|
|
107
99
|
cluster: Optional[str] = None, # deprecated in favor of cloud_account
|
|
100
|
+
reuse_snapshot: bool = True,
|
|
108
101
|
) -> "Job":
|
|
109
102
|
"""Run async workloads using a docker image or a compute environment from your studio.
|
|
110
103
|
|
|
@@ -118,29 +111,38 @@ class Job(_BaseJob):
|
|
|
118
111
|
teamspace: The teamspace the job should be associated with. Defaults to the current teamspace.
|
|
119
112
|
org: The organization owning the teamspace (if any). Defaults to the current organization.
|
|
120
113
|
user: The user owning the teamspace (if any). Defaults to the current user.
|
|
121
|
-
cloud_account: The cloud
|
|
114
|
+
cloud_account: The cloud account to run the job on.
|
|
122
115
|
Defaults to the studio cloud account if running with studio compute env.
|
|
123
|
-
|
|
116
|
+
If not provided and `cloud_account_provider` is set, will resolve cluster from this, else
|
|
117
|
+
will fall back to the teamspaces default cloud account.
|
|
118
|
+
cloud_account_provider: The provider to select the cloud-account from.
|
|
119
|
+
If set, must be in agreement with the provider from the cloud_account (if specified).
|
|
120
|
+
If not specified, falls backto the teamspace default cloud account.
|
|
124
121
|
env: Environment variables to set inside the job.
|
|
125
122
|
interruptible: Whether the job should run on interruptible instances. They are cheaper but can be preempted.
|
|
126
123
|
image_credentials: The credentials used to pull the image. Required if the image is private.
|
|
127
124
|
This should be the name of the respective credentials secret created on the Lightning AI platform.
|
|
128
125
|
cloud_account_auth: Whether to authenticate with the cloud account to pull the image.
|
|
129
126
|
Required if the registry is part of a cloud provider (e.g. ECR).
|
|
130
|
-
artifacts_local: The path of inside the docker container, you want to persist images from.
|
|
131
|
-
CAUTION: When setting this to "/", it will effectively erase your container.
|
|
132
|
-
Only supported for jobs with a docker image compute environment.
|
|
133
|
-
artifacts_remote: The remote storage to persist your artifacts to.
|
|
134
|
-
Should be of format <CONNECTION_TYPE>:<CONNECTION_NAME>:<PATH_WITHIN_CONNECTION>.
|
|
135
|
-
PATH_WITHIN_CONNECTION hereby is a path relative to the connection's root.
|
|
136
|
-
E.g. efs:data:some-path would result in an EFS connection named `data` and to the path `some-path`
|
|
137
|
-
within it.
|
|
138
|
-
Note that the connection needs to be added to the teamspace already in order for it to be found.
|
|
139
|
-
Only supported for jobs with a docker image compute environment.
|
|
140
127
|
entrypoint: The entrypoint of your docker container. Defaults to `sh -c` which
|
|
141
128
|
just runs the provided command in a standard shell.
|
|
142
129
|
To use the pre-defined entrypoint of the provided image, set this to an empty string.
|
|
143
130
|
Only applicable when submitting docker jobs.
|
|
131
|
+
path_mappings: Dictionary of path mappings. The keys are the path inside the container whereas the value
|
|
132
|
+
represents the data-connection name and the path inside that connection.
|
|
133
|
+
Should be of form
|
|
134
|
+
{
|
|
135
|
+
"<CONTAINER_PATH_1>": "<CONNECTION_NAME_1>:<PATH_WITHIN_CONNECTION_1>",
|
|
136
|
+
"<CONTAINER_PATH_2>": "<CONNECTION_NAME_2>"
|
|
137
|
+
}
|
|
138
|
+
If the path inside the connection is omitted it's assumed to be the root path of that connection.
|
|
139
|
+
Only applicable when submitting docker jobs.
|
|
140
|
+
max_runtime: the duration (in seconds) for which to allocate the machine.
|
|
141
|
+
Irrelevant for most machines, required for some of the top-end machines on GCP.
|
|
142
|
+
If in doubt, set it. Won't have an effect on machines not requiring it.
|
|
143
|
+
Defaults to 3h
|
|
144
|
+
reuse_snapshot: Whether the job should reuse a Studio snapshot when multiple jobs for the same Studio are
|
|
145
|
+
submitted. Turning this off may result in longer job startup times. Defaults to True.
|
|
144
146
|
"""
|
|
145
147
|
ret_val = super().run(
|
|
146
148
|
name=name,
|
|
@@ -152,6 +154,7 @@ class Job(_BaseJob):
|
|
|
152
154
|
org=org,
|
|
153
155
|
user=user,
|
|
154
156
|
cloud_account=cloud_account,
|
|
157
|
+
cloud_provider=cloud_provider,
|
|
155
158
|
env=env,
|
|
156
159
|
interruptible=interruptible,
|
|
157
160
|
image_credentials=image_credentials,
|
|
@@ -159,7 +162,10 @@ class Job(_BaseJob):
|
|
|
159
162
|
artifacts_local=artifacts_local,
|
|
160
163
|
artifacts_remote=artifacts_remote,
|
|
161
164
|
entrypoint=entrypoint,
|
|
165
|
+
path_mappings=path_mappings,
|
|
166
|
+
max_runtime=max_runtime,
|
|
162
167
|
cluster=cluster,
|
|
168
|
+
reuse_snapshot=reuse_snapshot,
|
|
163
169
|
)
|
|
164
170
|
# required for typing with "Job"
|
|
165
171
|
assert isinstance(ret_val, cls)
|
|
@@ -169,18 +175,22 @@ class Job(_BaseJob):
|
|
|
169
175
|
|
|
170
176
|
def _submit(
|
|
171
177
|
self,
|
|
172
|
-
machine: "Machine",
|
|
178
|
+
machine: Union["Machine", str],
|
|
173
179
|
command: Optional[str] = None,
|
|
174
180
|
studio: Optional["Studio"] = None,
|
|
175
181
|
image: Optional[str] = None,
|
|
176
182
|
env: Optional[Dict[str, str]] = None,
|
|
177
183
|
interruptible: bool = False,
|
|
178
184
|
cloud_account: Optional[str] = None,
|
|
185
|
+
cloud_provider: Optional[Union["CloudProvider", str]] = None,
|
|
179
186
|
image_credentials: Optional[str] = None,
|
|
180
187
|
cloud_account_auth: bool = False,
|
|
181
|
-
artifacts_local: Optional[str] = None,
|
|
182
|
-
artifacts_remote: Optional[str] = None,
|
|
183
188
|
entrypoint: str = "sh -c",
|
|
189
|
+
path_mappings: Optional[Dict[str, str]] = None,
|
|
190
|
+
artifacts_local: Optional[str] = None, # deprecated in terms of path_mappings
|
|
191
|
+
artifacts_remote: Optional[str] = None, # deprecated in terms of path_mappings
|
|
192
|
+
max_runtime: Optional[int] = None,
|
|
193
|
+
reuse_snapshot: bool = True,
|
|
184
194
|
) -> "Job":
|
|
185
195
|
"""Submit a new job to the Lightning AI platform.
|
|
186
196
|
|
|
@@ -194,28 +204,38 @@ class Job(_BaseJob):
|
|
|
194
204
|
interruptible: Whether the job should run on interruptible instances. They are cheaper but can be preempted.
|
|
195
205
|
cloud_account: The cloud account to run the job on.
|
|
196
206
|
Defaults to the studio cloud account if running with studio compute env.
|
|
197
|
-
If not provided
|
|
207
|
+
If not provided and `cloud_account_provider` is set, will resolve cluster from this, else
|
|
208
|
+
will fall back to the teamspaces default cloud account.
|
|
209
|
+
cloud_account_provider: The provider to select the cloud-account from.
|
|
210
|
+
If set, must be in agreement with the provider from the cloud_account (if specified).
|
|
211
|
+
If not specified, falls backto the teamspace default cloud account.
|
|
198
212
|
image_credentials: The credentials used to pull the image. Required if the image is private.
|
|
199
213
|
This should be the name of the respective credentials secret created on the Lightning AI platform.
|
|
200
214
|
cloud_account_auth: Whether to authenticate with the cloud account to pull the image.
|
|
201
215
|
Required if the registry is part of a cloud provider (e.g. ECR).
|
|
202
|
-
artifacts_local: The path of inside the docker container, you want to persist images from.
|
|
203
|
-
CAUTION: When setting this to "/", it will effectively erase your container.
|
|
204
|
-
Only supported for jobs with a docker image compute environment.
|
|
205
|
-
artifacts_remote: The remote storage to persist your artifacts to.
|
|
206
|
-
Should be of format <CONNECTION_TYPE>:<CONNECTION_NAME>:<PATH_WITHIN_CONNECTION>.
|
|
207
|
-
PATH_WITHIN_CONNECTION hereby is a path relative to the connection's root.
|
|
208
|
-
E.g. efs:data:some-path would result in an EFS connection named `data` and to the path `some-path`
|
|
209
|
-
within it.
|
|
210
|
-
Note that the connection needs to be added to the teamspace already in order for it to be found.
|
|
211
|
-
Only supported for jobs with a docker image compute environment.
|
|
212
216
|
entrypoint: The entrypoint of your docker container. Defaults to sh -c.
|
|
213
217
|
To use the pre-defined entrypoint of the provided image, set this to an empty string.
|
|
214
218
|
Only applicable when submitting docker jobs.
|
|
219
|
+
path_mappings: Dictionary of path mappings. The keys are the path inside the container whereas the value
|
|
220
|
+
represents the data-connection name and the path inside that connection.
|
|
221
|
+
Should be of form
|
|
222
|
+
{
|
|
223
|
+
"<CONTAINER_PATH_1>": "<CONNECTION_NAME_1>:<PATH_WITHIN_CONNECTION_1>",
|
|
224
|
+
"<CONTAINER_PATH_2>": "<CONNECTION_NAME_2>"
|
|
225
|
+
}
|
|
226
|
+
If the path inside the connection is omitted it's assumed to be the root path of that connection.
|
|
227
|
+
Only applicable when submitting docker jobs.
|
|
228
|
+
max_runtime: the duration (in seconds) for which to allocate the machine.
|
|
229
|
+
Irrelevant for most machines, required for some of the top-end machines on GCP.
|
|
230
|
+
If in doubt, set it. Won't have an effect on machines not requiring it.
|
|
231
|
+
Defaults to 3h
|
|
232
|
+
reuse_snapshot: Whether the job should reuse a Studio snapshot when multiple jobs for the same Studio are
|
|
233
|
+
submitted. Turning this off may result in longer job startup times. Defaults to True.
|
|
215
234
|
"""
|
|
216
235
|
self._job = self._internal_job._submit(
|
|
217
236
|
machine=machine,
|
|
218
237
|
cloud_account=cloud_account,
|
|
238
|
+
cloud_provider=cloud_provider,
|
|
219
239
|
command=command,
|
|
220
240
|
studio=studio,
|
|
221
241
|
image=image,
|
|
@@ -223,8 +243,12 @@ class Job(_BaseJob):
|
|
|
223
243
|
interruptible=interruptible,
|
|
224
244
|
image_credentials=image_credentials,
|
|
225
245
|
cloud_account_auth=cloud_account_auth,
|
|
246
|
+
entrypoint=entrypoint,
|
|
247
|
+
path_mappings=path_mappings,
|
|
226
248
|
artifacts_local=artifacts_local,
|
|
227
249
|
artifacts_remote=artifacts_remote,
|
|
250
|
+
max_runtime=max_runtime,
|
|
251
|
+
reuse_snapshot=reuse_snapshot,
|
|
228
252
|
)
|
|
229
253
|
return self
|
|
230
254
|
|
|
@@ -243,15 +267,20 @@ class Job(_BaseJob):
|
|
|
243
267
|
return self._internal_job.delete()
|
|
244
268
|
|
|
245
269
|
@property
|
|
246
|
-
def status(self) -> "Status":
|
|
270
|
+
def status(self) -> Optional["Status"]:
|
|
247
271
|
"""The current status of the job."""
|
|
248
272
|
return self._internal_job.status
|
|
249
273
|
|
|
250
274
|
@property
|
|
251
|
-
def machine(self) -> "Machine":
|
|
275
|
+
def machine(self) -> Union["Machine", str]:
|
|
252
276
|
"""The machine type the job is running on."""
|
|
253
277
|
return self._internal_job.machine
|
|
254
278
|
|
|
279
|
+
@property
|
|
280
|
+
def public_ip(self) -> Optional[str]:
|
|
281
|
+
"""The public IP address of the machine the job is running on."""
|
|
282
|
+
return self._internal_job.public_ip
|
|
283
|
+
|
|
255
284
|
@property
|
|
256
285
|
def artifact_path(self) -> Optional[str]:
|
|
257
286
|
"""Path to the artifacts created by the job within the distributed teamspace filesystem."""
|
lightning_sdk/job/v1.py
CHANGED
|
@@ -5,7 +5,7 @@ from lightning_sdk.job.base import _BaseJob
|
|
|
5
5
|
from lightning_sdk.status import Status
|
|
6
6
|
|
|
7
7
|
if TYPE_CHECKING:
|
|
8
|
-
from lightning_sdk.machine import Machine
|
|
8
|
+
from lightning_sdk.machine import CloudProvider, Machine
|
|
9
9
|
from lightning_sdk.organization import Organization
|
|
10
10
|
from lightning_sdk.studio import Studio
|
|
11
11
|
from lightning_sdk.teamspace import Teamspace
|
|
@@ -44,15 +44,17 @@ class _JobV1(_BaseJob):
|
|
|
44
44
|
def run(
|
|
45
45
|
cls,
|
|
46
46
|
name: str,
|
|
47
|
-
machine: "Machine",
|
|
47
|
+
machine: Union["Machine", str],
|
|
48
48
|
command: str,
|
|
49
49
|
studio: "Studio",
|
|
50
50
|
teamspace: Union[str, "Teamspace", None] = None,
|
|
51
51
|
org: Union[str, "Organization", None] = None,
|
|
52
52
|
user: Union[str, "User", None] = None,
|
|
53
53
|
cloud_account: Optional[str] = None,
|
|
54
|
+
cloud_provider: Optional[str] = None,
|
|
54
55
|
interruptible: bool = False,
|
|
55
56
|
cluster: Optional[str] = None, # deprecated in favor of cloud_account
|
|
57
|
+
reuse_snapshot: bool = True,
|
|
56
58
|
) -> "_BaseJob":
|
|
57
59
|
"""Start a new async workload from your studio.
|
|
58
60
|
|
|
@@ -80,27 +82,35 @@ class _JobV1(_BaseJob):
|
|
|
80
82
|
org=org,
|
|
81
83
|
user=user,
|
|
82
84
|
cloud_account=cloud_account,
|
|
85
|
+
cloud_provider=cloud_provider,
|
|
83
86
|
env=None,
|
|
84
87
|
interruptible=interruptible,
|
|
85
88
|
image_credentials=None,
|
|
86
89
|
cloud_account_auth=False,
|
|
87
90
|
cluster=cluster,
|
|
91
|
+
path_mappings=None,
|
|
92
|
+
max_runtime=None,
|
|
93
|
+
reuse_snapshot=reuse_snapshot,
|
|
88
94
|
)
|
|
89
95
|
|
|
90
96
|
def _submit(
|
|
91
97
|
self,
|
|
92
|
-
machine: "Machine",
|
|
98
|
+
machine: Union["Machine", str],
|
|
93
99
|
command: Optional[str] = None,
|
|
94
100
|
studio: Optional["Studio"] = None,
|
|
95
101
|
image: Optional[str] = None,
|
|
96
102
|
env: Optional[Dict[str, str]] = None,
|
|
97
103
|
interruptible: bool = False,
|
|
98
104
|
cloud_account: Optional[str] = None,
|
|
105
|
+
cloud_provider: Optional[Union["CloudProvider", str]] = None,
|
|
99
106
|
image_credentials: Optional[str] = None,
|
|
100
107
|
cloud_account_auth: bool = False,
|
|
101
108
|
artifacts_local: Optional[str] = None,
|
|
102
109
|
artifacts_remote: Optional[str] = None,
|
|
103
110
|
entrypoint: str = "sh -c",
|
|
111
|
+
path_mappings: Optional[Dict[str, str]] = None,
|
|
112
|
+
max_runtime: Optional[int] = None,
|
|
113
|
+
reuse_snapshot: bool = True,
|
|
104
114
|
) -> "_JobV1":
|
|
105
115
|
"""Submit a job to run on a machine.
|
|
106
116
|
|
|
@@ -114,46 +124,21 @@ class _JobV1(_BaseJob):
|
|
|
114
124
|
cloud_account: The cloud account to run the job on.
|
|
115
125
|
image_credentials: The image credentials for the job (not supported).
|
|
116
126
|
cloud_account_auth: Whether to use cloud account authentication for the job (not supported).
|
|
117
|
-
artifacts_local: The local path for persisting artifacts (not supported).
|
|
118
|
-
artifacts_remote: The remote path for persisting artifacts (not supported).
|
|
119
127
|
entrypoint: The entrypoint of your docker container (not supported).
|
|
120
128
|
Defaults to `sh -c` which just runs the provided command in a standard shell.
|
|
121
129
|
To use the pre-defined entrypoint of the provided image, set this to an empty string.
|
|
122
130
|
Only applicable when submitting docker jobs.
|
|
131
|
+
path_mappings: The mappings from data connection inside your container (not supported)
|
|
132
|
+
max_runtime: the duration (in seconds) for which to allocate the machine.
|
|
133
|
+
Irrelevant for most machines, required for some of the top-end machines on GCP.
|
|
134
|
+
If in doubt, set it. Won't have an effect on machines not requiring it.
|
|
135
|
+
Defaults to 3h
|
|
123
136
|
|
|
124
137
|
Returns:
|
|
125
138
|
The submitted job.
|
|
126
139
|
|
|
127
140
|
"""
|
|
128
|
-
|
|
129
|
-
raise ValueError("Studio is required for submitting jobs")
|
|
130
|
-
if image is not None or image_credentials is not None or cloud_account_auth:
|
|
131
|
-
raise ValueError("Image is not supported for submitting jobs")
|
|
132
|
-
|
|
133
|
-
if artifacts_local is not None or artifacts_remote is not None:
|
|
134
|
-
raise ValueError("Specifying how to persist artifacts is not yet supported with jobs")
|
|
135
|
-
|
|
136
|
-
if env is not None:
|
|
137
|
-
raise ValueError("Environment variables are not supported for submitting jobs")
|
|
138
|
-
if command is None:
|
|
139
|
-
raise ValueError("Command is required for submitting jobs")
|
|
140
|
-
|
|
141
|
-
if entrypoint != "sh -c":
|
|
142
|
-
raise ValueError("Specifying the entrypoint is not yet supported with jobs")
|
|
143
|
-
|
|
144
|
-
# TODO: add support for empty names (will give an empty string)
|
|
145
|
-
_submitted = self._job_api.submit_job(
|
|
146
|
-
name=self._name,
|
|
147
|
-
command=command,
|
|
148
|
-
studio_id=studio._studio.id,
|
|
149
|
-
teamspace_id=self._teamspace.id,
|
|
150
|
-
cloud_account=cloud_account or "",
|
|
151
|
-
machine=machine,
|
|
152
|
-
interruptible=interruptible,
|
|
153
|
-
)
|
|
154
|
-
self._name = _submitted.name
|
|
155
|
-
self._job = _submitted
|
|
156
|
-
return self
|
|
141
|
+
raise NotImplementedError("Cannot submit new jobs with JobsV1!")
|
|
157
142
|
|
|
158
143
|
def _update_internal_job(self) -> None:
|
|
159
144
|
try:
|
|
@@ -195,10 +180,18 @@ class _JobV1(_BaseJob):
|
|
|
195
180
|
return Work(_work[0].id, self, self.teamspace)
|
|
196
181
|
|
|
197
182
|
@property
|
|
198
|
-
def machine(self) -> "Machine":
|
|
183
|
+
def machine(self) -> Union["Machine", str]:
|
|
199
184
|
"""Get the machine the job is running on."""
|
|
200
185
|
return self.work.machine
|
|
201
186
|
|
|
187
|
+
@property
|
|
188
|
+
def public_ip(self) -> Optional[str]:
|
|
189
|
+
"""Get the public IP of the machine the job is running on."""
|
|
190
|
+
try:
|
|
191
|
+
return self._job.status.ip_address
|
|
192
|
+
except AttributeError:
|
|
193
|
+
return None
|
|
194
|
+
|
|
202
195
|
@property
|
|
203
196
|
def name(self) -> str:
|
|
204
197
|
"""The name of the job."""
|