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
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
"""Studio connect command."""
|
|
2
|
+
|
|
3
|
+
import subprocess
|
|
4
|
+
import sys
|
|
5
|
+
from contextlib import suppress
|
|
6
|
+
from typing import Optional
|
|
7
|
+
|
|
8
|
+
import click
|
|
9
|
+
|
|
10
|
+
from lightning_sdk.cli.utils.get_base_studio import get_base_studio_id
|
|
11
|
+
from lightning_sdk.cli.utils.handle_machine_and_gpus_args import handle_machine_and_gpus_args
|
|
12
|
+
from lightning_sdk.cli.utils.richt_print import studio_name_link
|
|
13
|
+
from lightning_sdk.cli.utils.save_to_config import save_studio_to_config, save_teamspace_to_config
|
|
14
|
+
from lightning_sdk.cli.utils.ssh_connection import configure_ssh_internal
|
|
15
|
+
from lightning_sdk.cli.utils.teamspace_selection import TeamspacesMenu
|
|
16
|
+
from lightning_sdk.lightning_cloud.openapi.rest import ApiException
|
|
17
|
+
from lightning_sdk.machine import CloudProvider, Machine
|
|
18
|
+
from lightning_sdk.studio import Studio
|
|
19
|
+
from lightning_sdk.utils.names import random_unique_name
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
def _parse_args_or_get_from_current_studio(
|
|
23
|
+
teamspace: Optional[str],
|
|
24
|
+
cloud_account: Optional[str],
|
|
25
|
+
studio_type: Optional[str],
|
|
26
|
+
machine: Optional[str],
|
|
27
|
+
gpus: Optional[str],
|
|
28
|
+
cloud_provider: Optional[str],
|
|
29
|
+
name: Optional[str],
|
|
30
|
+
) -> tuple[Optional[str], Optional[str], Optional[str], Optional[str]]:
|
|
31
|
+
# Parse args provided by user
|
|
32
|
+
menu = TeamspacesMenu()
|
|
33
|
+
resolved_teamspace = menu(teamspace)
|
|
34
|
+
save_teamspace_to_config(resolved_teamspace, overwrite=False)
|
|
35
|
+
|
|
36
|
+
template_id = get_base_studio_id(studio_type)
|
|
37
|
+
|
|
38
|
+
if cloud_provider is not None:
|
|
39
|
+
cloud_provider = CloudProvider(cloud_provider)
|
|
40
|
+
|
|
41
|
+
name = name or random_unique_name()
|
|
42
|
+
|
|
43
|
+
with suppress(ValueError):
|
|
44
|
+
# Gets current studio context to use its parameters as defaults
|
|
45
|
+
s = Studio()
|
|
46
|
+
if not teamspace:
|
|
47
|
+
resolved_teamspace = s.teamspace
|
|
48
|
+
save_teamspace_to_config(resolved_teamspace, overwrite=False)
|
|
49
|
+
if not cloud_account:
|
|
50
|
+
cloud_account = s.cloud_account
|
|
51
|
+
if not template_id:
|
|
52
|
+
template_id = s._studio.environment_template_id
|
|
53
|
+
if not machine and not gpus:
|
|
54
|
+
machine = s.machine
|
|
55
|
+
|
|
56
|
+
return resolved_teamspace, cloud_account, template_id, machine, cloud_provider, name
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
@click.command("connect")
|
|
60
|
+
@click.argument("name", required=False)
|
|
61
|
+
@click.option("--teamspace", help="Override default teamspace (format: owner/teamspace)")
|
|
62
|
+
@click.option(
|
|
63
|
+
"--cloud-provider",
|
|
64
|
+
help="The cloud provider to start the studio on. Defaults to teamspace default.",
|
|
65
|
+
type=click.Choice(m.name for m in list(CloudProvider)),
|
|
66
|
+
)
|
|
67
|
+
@click.option(
|
|
68
|
+
"--cloud-account",
|
|
69
|
+
help="The cloud account to create the studio on. Defaults to teamspace default.",
|
|
70
|
+
type=click.STRING,
|
|
71
|
+
)
|
|
72
|
+
@click.option(
|
|
73
|
+
"--machine",
|
|
74
|
+
help="The machine type to start the studio on. Defaults to CPU-4",
|
|
75
|
+
type=click.Choice(m.name for m in Machine.__dict__.values() if isinstance(m, Machine) and m._include_in_cli),
|
|
76
|
+
)
|
|
77
|
+
@click.option(
|
|
78
|
+
"--gpus",
|
|
79
|
+
help="The number and type of GPUs to start the studio on (format: TYPE:COUNT, e.g. L4:4)",
|
|
80
|
+
type=click.STRING,
|
|
81
|
+
)
|
|
82
|
+
@click.option(
|
|
83
|
+
"--studio-type",
|
|
84
|
+
help="The base studio template name to use for creating the studio. "
|
|
85
|
+
"Must be lowercase and hyphenated (use '-' instead of spaces). "
|
|
86
|
+
"Run 'lightning base-studio list' to see all available templates. "
|
|
87
|
+
"Defaults to the first available template.",
|
|
88
|
+
type=click.STRING,
|
|
89
|
+
)
|
|
90
|
+
@click.option("--interruptible", is_flag=True, help="Start the studio on an interruptible instance.")
|
|
91
|
+
def connect_studio(
|
|
92
|
+
name: Optional[str] = None,
|
|
93
|
+
teamspace: Optional[str] = None,
|
|
94
|
+
cloud_provider: Optional[str] = None,
|
|
95
|
+
cloud_account: Optional[str] = None,
|
|
96
|
+
machine: Optional[str] = None,
|
|
97
|
+
gpus: Optional[str] = None,
|
|
98
|
+
studio_type: Optional[str] = None,
|
|
99
|
+
interruptible: bool = False,
|
|
100
|
+
) -> None:
|
|
101
|
+
"""Connect to a Studio.
|
|
102
|
+
|
|
103
|
+
Example:
|
|
104
|
+
lightning studio connect
|
|
105
|
+
"""
|
|
106
|
+
teamspace, cloud_account, template_id, machine, cloud_provider, name = _parse_args_or_get_from_current_studio(
|
|
107
|
+
teamspace, cloud_account, studio_type, machine, gpus, cloud_provider, name
|
|
108
|
+
)
|
|
109
|
+
|
|
110
|
+
try:
|
|
111
|
+
studio = Studio(
|
|
112
|
+
name=name,
|
|
113
|
+
teamspace=teamspace,
|
|
114
|
+
create_ok=True,
|
|
115
|
+
cloud_provider=cloud_provider,
|
|
116
|
+
cloud_account=cloud_account,
|
|
117
|
+
studio_type=template_id,
|
|
118
|
+
)
|
|
119
|
+
except (RuntimeError, ValueError, ApiException):
|
|
120
|
+
raise ValueError(f"Could not create Studio: '{name}'") from None
|
|
121
|
+
|
|
122
|
+
click.echo(f"Connecting to Studio '{studio_name_link(studio)}' ...")
|
|
123
|
+
|
|
124
|
+
Studio.show_progress = True
|
|
125
|
+
|
|
126
|
+
machine = handle_machine_and_gpus_args(machine, gpus)
|
|
127
|
+
|
|
128
|
+
save_studio_to_config(studio)
|
|
129
|
+
studio.start(machine=machine, interruptible=interruptible)
|
|
130
|
+
|
|
131
|
+
ssh_private_key_path = configure_ssh_internal()
|
|
132
|
+
|
|
133
|
+
ssh_option = "-o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -o LogLevel=ERROR"
|
|
134
|
+
try:
|
|
135
|
+
ssh_command = f"ssh -i {ssh_private_key_path} {ssh_option} s_{studio._studio.id}@ssh.lightning.ai"
|
|
136
|
+
subprocess.run(ssh_command.split())
|
|
137
|
+
except Exception as ex:
|
|
138
|
+
print(f"Failed to establish SSH connection: {ex}")
|
|
139
|
+
sys.exit(1)
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
"""Studio start command."""
|
|
2
|
+
|
|
3
|
+
from typing import Optional
|
|
4
|
+
|
|
5
|
+
import click
|
|
6
|
+
|
|
7
|
+
from lightning_sdk.cli.utils.get_base_studio import get_base_studio_id
|
|
8
|
+
from lightning_sdk.cli.utils.richt_print import studio_name_link
|
|
9
|
+
from lightning_sdk.cli.utils.save_to_config import save_teamspace_to_config
|
|
10
|
+
from lightning_sdk.cli.utils.teamspace_selection import TeamspacesMenu
|
|
11
|
+
from lightning_sdk.lightning_cloud.openapi.rest import ApiException
|
|
12
|
+
from lightning_sdk.machine import CloudProvider
|
|
13
|
+
from lightning_sdk.studio import VM, Studio
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
@click.command("create")
|
|
17
|
+
@click.option("--name", help="The name of the studio to create. If not provided, a random name will be generated.")
|
|
18
|
+
@click.option("--teamspace", help="Override default teamspace (format: owner/teamspace)")
|
|
19
|
+
@click.option(
|
|
20
|
+
"--cloud-provider",
|
|
21
|
+
help="The cloud provider to start the studio on. Defaults to teamspace default.",
|
|
22
|
+
type=click.Choice(m.name for m in list(CloudProvider)),
|
|
23
|
+
)
|
|
24
|
+
@click.option(
|
|
25
|
+
"--cloud-account",
|
|
26
|
+
help="The cloud account to create the studio on. Defaults to teamspace default.",
|
|
27
|
+
type=click.STRING,
|
|
28
|
+
)
|
|
29
|
+
@click.option(
|
|
30
|
+
"--studio-type",
|
|
31
|
+
help="The base studio template name to use for creating the studio. "
|
|
32
|
+
"Must be lowercase and hyphenated (use '-' instead of spaces). "
|
|
33
|
+
"Run 'lightning base-studio list' to see all available templates. "
|
|
34
|
+
"Defaults to the first available template.",
|
|
35
|
+
type=click.STRING,
|
|
36
|
+
)
|
|
37
|
+
def create_studio(
|
|
38
|
+
name: Optional[str] = None,
|
|
39
|
+
teamspace: Optional[str] = None,
|
|
40
|
+
cloud_provider: Optional[str] = None,
|
|
41
|
+
cloud_account: Optional[str] = None,
|
|
42
|
+
studio_type: Optional[str] = None,
|
|
43
|
+
) -> None:
|
|
44
|
+
"""Create a new Studio.
|
|
45
|
+
|
|
46
|
+
Example:
|
|
47
|
+
lightning studio create
|
|
48
|
+
"""
|
|
49
|
+
create_impl(
|
|
50
|
+
name=name,
|
|
51
|
+
teamspace=teamspace,
|
|
52
|
+
cloud_provider=cloud_provider,
|
|
53
|
+
cloud_account=cloud_account,
|
|
54
|
+
vm=False,
|
|
55
|
+
studio_type=studio_type,
|
|
56
|
+
)
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
def create_impl(
|
|
60
|
+
name: Optional[str],
|
|
61
|
+
teamspace: Optional[str],
|
|
62
|
+
cloud_provider: Optional[str],
|
|
63
|
+
cloud_account: Optional[str],
|
|
64
|
+
vm: bool,
|
|
65
|
+
studio_type: Optional[str],
|
|
66
|
+
) -> None:
|
|
67
|
+
menu = TeamspacesMenu()
|
|
68
|
+
|
|
69
|
+
resolved_teamspace = menu(teamspace)
|
|
70
|
+
save_teamspace_to_config(resolved_teamspace, overwrite=False)
|
|
71
|
+
|
|
72
|
+
if cloud_provider is not None:
|
|
73
|
+
cloud_provider = CloudProvider(cloud_provider)
|
|
74
|
+
|
|
75
|
+
create_cls = VM if vm else Studio
|
|
76
|
+
cls_name = create_cls.__qualname__
|
|
77
|
+
|
|
78
|
+
# check for available base studios
|
|
79
|
+
template_id = get_base_studio_id(studio_type)
|
|
80
|
+
|
|
81
|
+
try:
|
|
82
|
+
create_cls = VM if vm else Studio
|
|
83
|
+
studio = create_cls(
|
|
84
|
+
name=name,
|
|
85
|
+
teamspace=resolved_teamspace,
|
|
86
|
+
create_ok=True,
|
|
87
|
+
cloud_provider=cloud_provider,
|
|
88
|
+
cloud_account=cloud_account,
|
|
89
|
+
studio_type=template_id,
|
|
90
|
+
)
|
|
91
|
+
except (RuntimeError, ValueError, ApiException):
|
|
92
|
+
if name:
|
|
93
|
+
raise ValueError(f"Could not create {cls_name}: '{name}'. Does the {cls_name} exist?") from None
|
|
94
|
+
raise ValueError(f"Could not create {cls_name}: '{name}'. Please provide a {cls_name} name") from None
|
|
95
|
+
|
|
96
|
+
click.echo(f"{cls_name} {studio_name_link(studio)} created successfully")
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
"""Studio delete command."""
|
|
2
|
+
|
|
3
|
+
from typing import Optional
|
|
4
|
+
|
|
5
|
+
import click
|
|
6
|
+
|
|
7
|
+
from lightning_sdk.cli.utils.studio_selection import StudiosMenu
|
|
8
|
+
from lightning_sdk.cli.utils.teamspace_selection import TeamspacesMenu
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
@click.command("delete")
|
|
12
|
+
@click.option(
|
|
13
|
+
"--name",
|
|
14
|
+
help=(
|
|
15
|
+
"The name of the studio to delete. "
|
|
16
|
+
"If not provided, will try to infer from environment, "
|
|
17
|
+
"use the default value from the config or prompt for interactive selection."
|
|
18
|
+
),
|
|
19
|
+
)
|
|
20
|
+
@click.option("--teamspace", help="Override default teamspace (format: owner/teamspace)")
|
|
21
|
+
def delete_studio(name: Optional[str] = None, teamspace: Optional[str] = None) -> None:
|
|
22
|
+
"""Delete a Studio.
|
|
23
|
+
|
|
24
|
+
Example:
|
|
25
|
+
lightning studio delete --name my-studio
|
|
26
|
+
|
|
27
|
+
"""
|
|
28
|
+
return delete_impl(name=name, teamspace=teamspace, vm=False)
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
def delete_impl(name: Optional[str], teamspace: Optional[str], vm: bool) -> None:
|
|
32
|
+
menu = TeamspacesMenu()
|
|
33
|
+
resolved_teamspace = menu(teamspace=teamspace)
|
|
34
|
+
|
|
35
|
+
menu = StudiosMenu(resolved_teamspace, vm=vm)
|
|
36
|
+
studio = menu(studio=name)
|
|
37
|
+
|
|
38
|
+
studio_name = f"{studio.teamspace.owner.name}/{studio.teamspace.name}/{studio.name}"
|
|
39
|
+
confirmed = click.confirm(
|
|
40
|
+
f"Are you sure you want to delete {studio._cls_name} '{studio_name}'?",
|
|
41
|
+
abort=True,
|
|
42
|
+
)
|
|
43
|
+
if not confirmed:
|
|
44
|
+
click.echo(f"{studio._cls_name} deletion cancelled")
|
|
45
|
+
return
|
|
46
|
+
|
|
47
|
+
studio.delete()
|
|
48
|
+
|
|
49
|
+
click.echo(f"{studio._cls_name} '{studio.name}' deleted successfully")
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
"""Studio list command."""
|
|
2
|
+
|
|
3
|
+
from typing import Callable, Optional
|
|
4
|
+
|
|
5
|
+
import click
|
|
6
|
+
from rich.table import Table
|
|
7
|
+
|
|
8
|
+
from lightning_sdk.cli.utils.cloud_account_map import cloud_account_to_display_name
|
|
9
|
+
from lightning_sdk.cli.utils.richt_print import rich_to_str, studio_name_link
|
|
10
|
+
from lightning_sdk.cli.utils.save_to_config import save_teamspace_to_config
|
|
11
|
+
from lightning_sdk.cli.utils.teamspace_selection import TeamspacesMenu
|
|
12
|
+
from lightning_sdk.studio import Studio
|
|
13
|
+
from lightning_sdk.utils.resolve import _get_authed_user, prevent_refetch_studio
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
@click.command("list")
|
|
17
|
+
@click.option("--teamspace", help="Override default teamspace (format: owner/teamspace)")
|
|
18
|
+
@click.option(
|
|
19
|
+
"--all",
|
|
20
|
+
is_flag=True,
|
|
21
|
+
flag_value=True,
|
|
22
|
+
default=False,
|
|
23
|
+
help="List all studios, not just the ones belonging to the authed user",
|
|
24
|
+
)
|
|
25
|
+
@click.option(
|
|
26
|
+
"--sort-by",
|
|
27
|
+
default=None,
|
|
28
|
+
type=click.Choice(["name", "teamspace", "status", "machine", "cloud-account"], case_sensitive=False),
|
|
29
|
+
help="the attribute to sort the studios by.",
|
|
30
|
+
)
|
|
31
|
+
def list_studios(teamspace: Optional[str] = None, all: bool = False, sort_by: Optional[str] = None) -> None: # noqa: A002
|
|
32
|
+
"""List Studios in a teamspace.
|
|
33
|
+
|
|
34
|
+
Example:
|
|
35
|
+
lightning studio list --teamspace owner/teamspace
|
|
36
|
+
|
|
37
|
+
"""
|
|
38
|
+
return list_impl(teamspace=teamspace, all=all, sort_by=sort_by, vm=False)
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
def list_impl(teamspace: Optional[str], all: bool, sort_by: Optional[str], vm: bool) -> None: # noqa: A002
|
|
42
|
+
menu = TeamspacesMenu()
|
|
43
|
+
teamspace_resolved = menu(teamspace=teamspace)
|
|
44
|
+
save_teamspace_to_config(teamspace_resolved, overwrite=False)
|
|
45
|
+
|
|
46
|
+
user = _get_authed_user()
|
|
47
|
+
|
|
48
|
+
studios = teamspace_resolved.vms if vm else teamspace_resolved.studios
|
|
49
|
+
|
|
50
|
+
table = Table(
|
|
51
|
+
pad_edge=True,
|
|
52
|
+
)
|
|
53
|
+
table.add_column("Name")
|
|
54
|
+
table.add_column("Teamspace")
|
|
55
|
+
table.add_column("Status")
|
|
56
|
+
table.add_column("Machine")
|
|
57
|
+
table.add_column("Cloud account")
|
|
58
|
+
|
|
59
|
+
for studio in sorted(
|
|
60
|
+
filter(lambda s: all or s._studio.user_id == user.id, studios), key=_sort_studios_key(sort_by)
|
|
61
|
+
):
|
|
62
|
+
with prevent_refetch_studio(studio):
|
|
63
|
+
table.add_row(
|
|
64
|
+
# cannot convert to ascii here, as the final rich table has to be converted to ascii
|
|
65
|
+
# otherwise the lack of support for linking in some terminals causes formatting issues.
|
|
66
|
+
studio_name_link(studio, to_ascii=False),
|
|
67
|
+
f"{studio.teamspace.owner.name}/{studio.teamspace.name}",
|
|
68
|
+
str(studio.status),
|
|
69
|
+
str(studio.machine) if studio.machine is not None else None, # when None the cell is empty
|
|
70
|
+
str(cloud_account_to_display_name(studio.cloud_account, studio.teamspace.id)),
|
|
71
|
+
)
|
|
72
|
+
|
|
73
|
+
click.echo(rich_to_str(table), color=True)
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
def _sort_studios_key(sort_by: str) -> Callable[[Studio], str]:
|
|
77
|
+
"""Return a key function to sort studios by a given attribute."""
|
|
78
|
+
sort_key_map = {
|
|
79
|
+
"name": lambda s: str(s.name or ""),
|
|
80
|
+
"teamspace": lambda s: str(s.teamspace.name or ""),
|
|
81
|
+
"status": lambda s: str(s.status or ""),
|
|
82
|
+
"machine": lambda s: str(s.machine or ""),
|
|
83
|
+
"cloud-account": lambda s: str(cloud_account_to_display_name(s.cloud_account or "", s.teamspace.id)),
|
|
84
|
+
}
|
|
85
|
+
return sort_key_map.get(sort_by, lambda s: s.name)
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
"""Studio SSH command."""
|
|
2
|
+
|
|
3
|
+
import subprocess
|
|
4
|
+
from typing import List, Optional
|
|
5
|
+
|
|
6
|
+
import click
|
|
7
|
+
|
|
8
|
+
from lightning_sdk.cli.utils.save_to_config import save_studio_to_config
|
|
9
|
+
from lightning_sdk.cli.utils.ssh_connection import configure_ssh_internal
|
|
10
|
+
from lightning_sdk.cli.utils.studio_selection import StudiosMenu
|
|
11
|
+
from lightning_sdk.cli.utils.teamspace_selection import TeamspacesMenu
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
@click.command("ssh")
|
|
15
|
+
@click.option(
|
|
16
|
+
"--name",
|
|
17
|
+
help=(
|
|
18
|
+
"The name of the studio to ssh into. "
|
|
19
|
+
"If not provided, will try to infer from environment, "
|
|
20
|
+
"use the default value from the config or prompt for interactive selection."
|
|
21
|
+
),
|
|
22
|
+
)
|
|
23
|
+
@click.option("--teamspace", help="Override default teamspace (format: owner/teamspace)", type=click.STRING)
|
|
24
|
+
@click.option(
|
|
25
|
+
"--option",
|
|
26
|
+
"-o",
|
|
27
|
+
help="Additional options to pass to the SSH command. Can be specified multiple times.",
|
|
28
|
+
multiple=True,
|
|
29
|
+
type=click.STRING,
|
|
30
|
+
)
|
|
31
|
+
def ssh_studio(name: Optional[str] = None, teamspace: Optional[str] = None, option: Optional[List[str]] = None) -> None:
|
|
32
|
+
"""SSH into a Studio.
|
|
33
|
+
|
|
34
|
+
Example:
|
|
35
|
+
lightning studio ssh --name my-studio
|
|
36
|
+
"""
|
|
37
|
+
return ssh_impl(name=name, teamspace=teamspace, option=option, vm=False)
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
def ssh_impl(name: Optional[str], teamspace: Optional[str], option: Optional[List[str]], vm: bool) -> None:
|
|
41
|
+
ssh_private_key_path = configure_ssh_internal()
|
|
42
|
+
|
|
43
|
+
menu = TeamspacesMenu()
|
|
44
|
+
resolved_teamspace = menu(teamspace=teamspace)
|
|
45
|
+
|
|
46
|
+
menu = StudiosMenu(resolved_teamspace, vm=vm)
|
|
47
|
+
studio = menu(
|
|
48
|
+
studio=name,
|
|
49
|
+
)
|
|
50
|
+
save_studio_to_config(studio)
|
|
51
|
+
|
|
52
|
+
ssh_options = " -o " + " -o ".join(option) if option else ""
|
|
53
|
+
ssh_command = f"ssh -i {ssh_private_key_path}{ssh_options} s_{studio._studio.id}@ssh.lightning.ai"
|
|
54
|
+
|
|
55
|
+
try:
|
|
56
|
+
subprocess.run(ssh_command.split())
|
|
57
|
+
except Exception:
|
|
58
|
+
# redownload the keys to be sure they are up to date
|
|
59
|
+
ssh_private_key_path = configure_ssh_internal(force_download=True)
|
|
60
|
+
try:
|
|
61
|
+
subprocess.run(ssh_command.split())
|
|
62
|
+
except Exception:
|
|
63
|
+
# TODO: make this a generic CLI error
|
|
64
|
+
raise RuntimeError("Failed to establish SSH connection") from None
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
"""Studio start command."""
|
|
2
|
+
|
|
3
|
+
from typing import Optional
|
|
4
|
+
|
|
5
|
+
import click
|
|
6
|
+
|
|
7
|
+
from lightning_sdk.cli.utils.handle_machine_and_gpus_args import handle_machine_and_gpus_args
|
|
8
|
+
from lightning_sdk.cli.utils.richt_print import studio_name_link
|
|
9
|
+
from lightning_sdk.cli.utils.save_to_config import save_studio_to_config
|
|
10
|
+
from lightning_sdk.cli.utils.studio_selection import StudiosMenu
|
|
11
|
+
from lightning_sdk.cli.utils.teamspace_selection import TeamspacesMenu
|
|
12
|
+
from lightning_sdk.machine import CloudProvider, Machine
|
|
13
|
+
from lightning_sdk.studio import VM, Studio
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
@click.command("start")
|
|
17
|
+
@click.option(
|
|
18
|
+
"--name",
|
|
19
|
+
help=(
|
|
20
|
+
"The name of the studio to start. "
|
|
21
|
+
"If not provided, will try to infer from environment, "
|
|
22
|
+
"use the default value from the config or prompt for interactive selection."
|
|
23
|
+
),
|
|
24
|
+
)
|
|
25
|
+
@click.option("--teamspace", help="Override default teamspace (format: owner/teamspace)")
|
|
26
|
+
@click.option("--create", is_flag=True, help="Create the studio if it doesn't exist")
|
|
27
|
+
@click.option(
|
|
28
|
+
"--machine",
|
|
29
|
+
help="The machine type to start the studio on. Defaults to CPU-4",
|
|
30
|
+
type=click.Choice(m.name for m in Machine.__dict__.values() if isinstance(m, Machine) and m._include_in_cli),
|
|
31
|
+
)
|
|
32
|
+
@click.option("--interruptible", is_flag=True, help="Start the studio on an interruptible instance.")
|
|
33
|
+
@click.option(
|
|
34
|
+
"--cloud-provider",
|
|
35
|
+
help=(
|
|
36
|
+
"The cloud provider to start the studio on. Defaults to teamspace default. Only used if --create is specified."
|
|
37
|
+
),
|
|
38
|
+
type=click.Choice(m.name for m in list(CloudProvider)),
|
|
39
|
+
)
|
|
40
|
+
@click.option(
|
|
41
|
+
"--cloud-account",
|
|
42
|
+
help="The cloud account to start the studio on. Defaults to teamspace default. Only used if --create is specified.",
|
|
43
|
+
type=click.STRING,
|
|
44
|
+
)
|
|
45
|
+
@click.option(
|
|
46
|
+
"--gpus",
|
|
47
|
+
help="The number and type of GPUs to start the studio on (format: TYPE:COUNT, e.g. L4:4)",
|
|
48
|
+
type=click.STRING,
|
|
49
|
+
)
|
|
50
|
+
def start_studio(
|
|
51
|
+
name: Optional[str] = None,
|
|
52
|
+
teamspace: Optional[str] = None,
|
|
53
|
+
create: bool = False,
|
|
54
|
+
machine: str = "CPU",
|
|
55
|
+
gpus: Optional[str] = None,
|
|
56
|
+
interruptible: bool = False,
|
|
57
|
+
cloud_provider: Optional[str] = None,
|
|
58
|
+
cloud_account: Optional[str] = None,
|
|
59
|
+
) -> None:
|
|
60
|
+
"""Start a Studio.
|
|
61
|
+
|
|
62
|
+
Example:
|
|
63
|
+
lightning studio start --name my-studio
|
|
64
|
+
|
|
65
|
+
"""
|
|
66
|
+
return start_impl(
|
|
67
|
+
name=name,
|
|
68
|
+
teamspace=teamspace,
|
|
69
|
+
create=create,
|
|
70
|
+
machine=machine,
|
|
71
|
+
gpus=gpus,
|
|
72
|
+
interruptible=interruptible,
|
|
73
|
+
cloud_provider=cloud_provider,
|
|
74
|
+
cloud_account=cloud_account,
|
|
75
|
+
vm=False,
|
|
76
|
+
)
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
def start_impl(
|
|
80
|
+
name: Optional[str],
|
|
81
|
+
teamspace: Optional[str],
|
|
82
|
+
create: bool,
|
|
83
|
+
machine: str,
|
|
84
|
+
gpus: Optional[str],
|
|
85
|
+
interruptible: bool,
|
|
86
|
+
cloud_provider: Optional[str],
|
|
87
|
+
cloud_account: Optional[str],
|
|
88
|
+
vm: bool,
|
|
89
|
+
) -> None:
|
|
90
|
+
menu = TeamspacesMenu()
|
|
91
|
+
resolved_teamspace = menu(teamspace=teamspace)
|
|
92
|
+
|
|
93
|
+
if cloud_provider is not None:
|
|
94
|
+
cloud_provider = CloudProvider(cloud_provider)
|
|
95
|
+
|
|
96
|
+
if not create:
|
|
97
|
+
menu = StudiosMenu(resolved_teamspace, vm=vm)
|
|
98
|
+
studio = menu(studio=name)
|
|
99
|
+
else:
|
|
100
|
+
create_cls = VM if vm else Studio
|
|
101
|
+
studio = create_cls(
|
|
102
|
+
name=name,
|
|
103
|
+
teamspace=resolved_teamspace,
|
|
104
|
+
create_ok=create,
|
|
105
|
+
cloud_provider=cloud_provider,
|
|
106
|
+
cloud_account=cloud_account,
|
|
107
|
+
)
|
|
108
|
+
|
|
109
|
+
machine = handle_machine_and_gpus_args(machine, gpus)
|
|
110
|
+
|
|
111
|
+
save_studio_to_config(studio)
|
|
112
|
+
|
|
113
|
+
Studio.show_progress = True
|
|
114
|
+
studio.start(machine, interruptible=interruptible)
|
|
115
|
+
click.echo(f"Studio {studio_name_link(studio)} started successfully")
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"""Studio stop command."""
|
|
2
|
+
|
|
3
|
+
from typing import Optional
|
|
4
|
+
|
|
5
|
+
import click
|
|
6
|
+
|
|
7
|
+
from lightning_sdk.cli.utils.richt_print import studio_name_link
|
|
8
|
+
from lightning_sdk.cli.utils.save_to_config import save_studio_to_config
|
|
9
|
+
from lightning_sdk.cli.utils.studio_selection import StudiosMenu
|
|
10
|
+
from lightning_sdk.cli.utils.teamspace_selection import TeamspacesMenu
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
@click.command("stop")
|
|
14
|
+
@click.option(
|
|
15
|
+
"--name",
|
|
16
|
+
help=(
|
|
17
|
+
"The name of the studio to stop. "
|
|
18
|
+
"If not provided, will try to infer from environment, "
|
|
19
|
+
"use the default value from the config or prompt for interactive selection."
|
|
20
|
+
),
|
|
21
|
+
)
|
|
22
|
+
@click.option("--teamspace", help="Override default teamspace (format: owner/teamspace)")
|
|
23
|
+
def stop_studio(name: Optional[str] = None, teamspace: Optional[str] = None) -> None:
|
|
24
|
+
"""Stop a Studio.
|
|
25
|
+
|
|
26
|
+
Example:
|
|
27
|
+
lightning studio stop --name my-studio
|
|
28
|
+
|
|
29
|
+
"""
|
|
30
|
+
return stop_impl(name=name, teamspace=teamspace, vm=False)
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
def stop_impl(name: Optional[str], teamspace: Optional[str], vm: bool) -> None:
|
|
34
|
+
# missing studio_name and teamspace are handled by the studio class
|
|
35
|
+
menu = TeamspacesMenu()
|
|
36
|
+
resolved_teamspace = menu(teamspace=teamspace)
|
|
37
|
+
|
|
38
|
+
menu = StudiosMenu(resolved_teamspace, vm=vm)
|
|
39
|
+
studio = menu(studio=name)
|
|
40
|
+
|
|
41
|
+
studio.stop()
|
|
42
|
+
|
|
43
|
+
save_studio_to_config(studio)
|
|
44
|
+
|
|
45
|
+
click.echo(f"{studio._cls_name} {studio_name_link(studio)} stopped successfully")
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
"""Studio switch command."""
|
|
2
|
+
|
|
3
|
+
from typing import Optional
|
|
4
|
+
|
|
5
|
+
import click
|
|
6
|
+
|
|
7
|
+
from lightning_sdk.cli.utils.richt_print import studio_name_link
|
|
8
|
+
from lightning_sdk.cli.utils.save_to_config import save_studio_to_config
|
|
9
|
+
from lightning_sdk.cli.utils.studio_selection import StudiosMenu
|
|
10
|
+
from lightning_sdk.cli.utils.teamspace_selection import TeamspacesMenu
|
|
11
|
+
from lightning_sdk.machine import Machine
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
@click.command("switch")
|
|
15
|
+
@click.option(
|
|
16
|
+
"--name",
|
|
17
|
+
help=(
|
|
18
|
+
"The name of the studio to switch to a different machine. "
|
|
19
|
+
"If not provided, will try to infer from environment, "
|
|
20
|
+
"use the default value from the config or prompt for interactive selection."
|
|
21
|
+
),
|
|
22
|
+
)
|
|
23
|
+
@click.option("--teamspace", help="Override default teamspace (format: owner/teamspace)")
|
|
24
|
+
@click.option(
|
|
25
|
+
"--machine",
|
|
26
|
+
help="The machine type to switch the studio to.",
|
|
27
|
+
type=click.Choice(m.name for m in Machine.__dict__.values() if isinstance(m, Machine)),
|
|
28
|
+
)
|
|
29
|
+
@click.option("--interruptible", is_flag=True, help="Switch the studio to an interruptible instance.")
|
|
30
|
+
def switch_studio(
|
|
31
|
+
name: Optional[str] = None,
|
|
32
|
+
teamspace: Optional[str] = None,
|
|
33
|
+
machine: Optional[str] = None,
|
|
34
|
+
interruptible: bool = False,
|
|
35
|
+
) -> None:
|
|
36
|
+
"""Switch a Studio to a different machine type."""
|
|
37
|
+
return switch_impl(
|
|
38
|
+
name=name,
|
|
39
|
+
teamspace=teamspace,
|
|
40
|
+
machine=machine,
|
|
41
|
+
interruptible=interruptible,
|
|
42
|
+
vm=False,
|
|
43
|
+
)
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
def switch_impl(
|
|
47
|
+
name: Optional[str],
|
|
48
|
+
teamspace: Optional[str],
|
|
49
|
+
machine: Optional[str],
|
|
50
|
+
interruptible: bool,
|
|
51
|
+
vm: bool,
|
|
52
|
+
) -> None:
|
|
53
|
+
menu = TeamspacesMenu()
|
|
54
|
+
resolved_teamspace = menu(teamspace=teamspace)
|
|
55
|
+
|
|
56
|
+
menu = StudiosMenu(resolved_teamspace, vm=vm)
|
|
57
|
+
studio = menu(studio=name)
|
|
58
|
+
|
|
59
|
+
resolved_machine = Machine.from_str(machine)
|
|
60
|
+
|
|
61
|
+
studio.__class__.show_progress = True
|
|
62
|
+
studio.switch_machine(resolved_machine, interruptible=interruptible)
|
|
63
|
+
|
|
64
|
+
save_studio_to_config(studio)
|
|
65
|
+
|
|
66
|
+
click.echo(f"{studio._cls_name} {studio_name_link(studio)} switched to machine '{resolved_machine}' successfully")
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
from lightning_sdk.api.cloud_account_api import CloudAccountApi
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
def cloud_account_to_display_name(cloud_account: str, teamspace_id: str) -> str:
|
|
5
|
+
api = CloudAccountApi()
|
|
6
|
+
cloud_accounts = api.list_global_cloud_accounts(teamspace_id=teamspace_id)
|
|
7
|
+
for global_cloud_account in cloud_accounts:
|
|
8
|
+
if global_cloud_account.id == cloud_account:
|
|
9
|
+
return "Lightning AI"
|
|
10
|
+
return cloud_account
|