skypilot-nightly 1.0.0.dev20250905__py3-none-any.whl → 1.0.0.dev20251203__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.
- sky/__init__.py +10 -2
- sky/adaptors/aws.py +81 -16
- sky/adaptors/common.py +25 -2
- sky/adaptors/coreweave.py +278 -0
- sky/adaptors/do.py +8 -2
- sky/adaptors/gcp.py +11 -0
- sky/adaptors/ibm.py +5 -2
- sky/adaptors/kubernetes.py +64 -0
- sky/adaptors/nebius.py +3 -1
- sky/adaptors/primeintellect.py +1 -0
- sky/adaptors/seeweb.py +183 -0
- sky/adaptors/shadeform.py +89 -0
- sky/admin_policy.py +20 -0
- sky/authentication.py +157 -263
- sky/backends/__init__.py +3 -2
- sky/backends/backend.py +11 -3
- sky/backends/backend_utils.py +588 -184
- sky/backends/cloud_vm_ray_backend.py +1088 -904
- sky/backends/local_docker_backend.py +9 -5
- sky/backends/task_codegen.py +633 -0
- sky/backends/wheel_utils.py +18 -0
- sky/catalog/__init__.py +8 -0
- sky/catalog/aws_catalog.py +4 -0
- sky/catalog/common.py +19 -1
- sky/catalog/data_fetchers/fetch_aws.py +102 -80
- sky/catalog/data_fetchers/fetch_gcp.py +30 -3
- sky/catalog/data_fetchers/fetch_nebius.py +9 -6
- sky/catalog/data_fetchers/fetch_runpod.py +698 -0
- sky/catalog/data_fetchers/fetch_seeweb.py +329 -0
- sky/catalog/data_fetchers/fetch_shadeform.py +142 -0
- sky/catalog/kubernetes_catalog.py +24 -28
- sky/catalog/primeintellect_catalog.py +95 -0
- sky/catalog/runpod_catalog.py +5 -1
- sky/catalog/seeweb_catalog.py +184 -0
- sky/catalog/shadeform_catalog.py +165 -0
- sky/check.py +73 -43
- sky/client/cli/command.py +675 -412
- sky/client/cli/flags.py +4 -2
- sky/{volumes/utils.py → client/cli/table_utils.py} +111 -13
- sky/client/cli/utils.py +79 -0
- sky/client/common.py +12 -2
- sky/client/sdk.py +132 -63
- sky/client/sdk_async.py +34 -33
- sky/cloud_stores.py +82 -3
- sky/clouds/__init__.py +6 -0
- sky/clouds/aws.py +337 -129
- sky/clouds/azure.py +24 -18
- sky/clouds/cloud.py +40 -13
- sky/clouds/cudo.py +16 -13
- sky/clouds/do.py +9 -7
- sky/clouds/fluidstack.py +12 -5
- sky/clouds/gcp.py +14 -7
- sky/clouds/hyperbolic.py +12 -5
- sky/clouds/ibm.py +12 -5
- sky/clouds/kubernetes.py +80 -45
- sky/clouds/lambda_cloud.py +12 -5
- sky/clouds/nebius.py +23 -9
- sky/clouds/oci.py +19 -12
- sky/clouds/paperspace.py +4 -1
- sky/clouds/primeintellect.py +317 -0
- sky/clouds/runpod.py +85 -24
- sky/clouds/scp.py +12 -8
- sky/clouds/seeweb.py +477 -0
- sky/clouds/shadeform.py +400 -0
- sky/clouds/ssh.py +4 -2
- sky/clouds/utils/scp_utils.py +61 -50
- sky/clouds/vast.py +33 -27
- sky/clouds/vsphere.py +14 -16
- sky/core.py +174 -165
- sky/dashboard/out/404.html +1 -1
- sky/dashboard/out/_next/static/96_E2yl3QAiIJGOYCkSpB/_buildManifest.js +1 -0
- sky/dashboard/out/_next/static/chunks/1141-e6aa9ab418717c59.js +11 -0
- sky/dashboard/out/_next/static/chunks/1871-7e202677c42f43fe.js +6 -0
- sky/dashboard/out/_next/static/chunks/2260-7703229c33c5ebd5.js +1 -0
- sky/dashboard/out/_next/static/chunks/2369.fc20f0c2c8ed9fe7.js +15 -0
- sky/dashboard/out/_next/static/chunks/2755.edd818326d489a1d.js +26 -0
- sky/dashboard/out/_next/static/chunks/3294.20a8540fe697d5ee.js +1 -0
- sky/dashboard/out/_next/static/chunks/3785.7e245f318f9d1121.js +1 -0
- sky/dashboard/out/_next/static/chunks/{6601-06114c982db410b6.js → 3800-7b45f9fbb6308557.js} +1 -1
- sky/dashboard/out/_next/static/chunks/4725.172ede95d1b21022.js +1 -0
- sky/dashboard/out/_next/static/chunks/4937.a2baa2df5572a276.js +15 -0
- sky/dashboard/out/_next/static/chunks/6212-7bd06f60ba693125.js +13 -0
- sky/dashboard/out/_next/static/chunks/6856-8f27d1c10c98def8.js +1 -0
- sky/dashboard/out/_next/static/chunks/6990-9146207c4567fdfd.js +1 -0
- sky/dashboard/out/_next/static/chunks/7359-c8d04e06886000b3.js +30 -0
- sky/dashboard/out/_next/static/chunks/7615-019513abc55b3b47.js +1 -0
- sky/dashboard/out/_next/static/chunks/8640.5b9475a2d18c5416.js +16 -0
- sky/dashboard/out/_next/static/chunks/8969-452f9d5cbdd2dc73.js +1 -0
- sky/dashboard/out/_next/static/chunks/9025.fa408f3242e9028d.js +6 -0
- sky/dashboard/out/_next/static/chunks/9353-cff34f7e773b2e2b.js +1 -0
- sky/dashboard/out/_next/static/chunks/9360.a536cf6b1fa42355.js +31 -0
- sky/dashboard/out/_next/static/chunks/9847.3aaca6bb33455140.js +30 -0
- sky/dashboard/out/_next/static/chunks/pages/{_app-ce361c6959bc2001.js → _app-bde01e4a2beec258.js} +1 -1
- sky/dashboard/out/_next/static/chunks/pages/clusters/[cluster]/[job]-792db96d918c98c9.js +16 -0
- sky/dashboard/out/_next/static/chunks/pages/clusters/[cluster]-abfcac9c137aa543.js +1 -0
- sky/dashboard/out/_next/static/chunks/pages/clusters-ee39056f9851a3ff.js +1 -0
- sky/dashboard/out/_next/static/chunks/pages/infra/{[context]-6563820e094f68ca.js → [context]-c0b5935149902e6f.js} +1 -1
- sky/dashboard/out/_next/static/chunks/pages/{infra-aabba60d57826e0f.js → infra-aed0ea19df7cf961.js} +1 -1
- sky/dashboard/out/_next/static/chunks/pages/jobs/[job]-d66997e2bfc837cf.js +16 -0
- sky/dashboard/out/_next/static/chunks/pages/jobs/pools/[pool]-9faf940b253e3e06.js +21 -0
- sky/dashboard/out/_next/static/chunks/pages/jobs-2072b48b617989c9.js +1 -0
- sky/dashboard/out/_next/static/chunks/pages/users-f42674164aa73423.js +1 -0
- sky/dashboard/out/_next/static/chunks/pages/volumes-b84b948ff357c43e.js +1 -0
- sky/dashboard/out/_next/static/chunks/pages/workspaces/{[name]-af76bb06dbb3954f.js → [name]-84a40f8c7c627fe4.js} +1 -1
- sky/dashboard/out/_next/static/chunks/pages/{workspaces-7598c33a746cdc91.js → workspaces-531b2f8c4bf89f82.js} +1 -1
- sky/dashboard/out/_next/static/chunks/webpack-64e05f17bf2cf8ce.js +1 -0
- sky/dashboard/out/_next/static/css/0748ce22df867032.css +3 -0
- sky/dashboard/out/clusters/[cluster]/[job].html +1 -1
- sky/dashboard/out/clusters/[cluster].html +1 -1
- sky/dashboard/out/clusters.html +1 -1
- sky/dashboard/out/config.html +1 -1
- sky/dashboard/out/index.html +1 -1
- sky/dashboard/out/infra/[context].html +1 -1
- sky/dashboard/out/infra.html +1 -1
- sky/dashboard/out/jobs/[job].html +1 -1
- sky/dashboard/out/jobs/pools/[pool].html +1 -1
- sky/dashboard/out/jobs.html +1 -1
- sky/dashboard/out/users.html +1 -1
- sky/dashboard/out/volumes.html +1 -1
- sky/dashboard/out/workspace/new.html +1 -1
- sky/dashboard/out/workspaces/[name].html +1 -1
- sky/dashboard/out/workspaces.html +1 -1
- sky/data/data_utils.py +92 -1
- sky/data/mounting_utils.py +162 -29
- sky/data/storage.py +200 -19
- sky/data/storage_utils.py +10 -45
- sky/exceptions.py +18 -7
- sky/execution.py +74 -31
- sky/global_user_state.py +605 -191
- sky/jobs/__init__.py +2 -0
- sky/jobs/client/sdk.py +101 -4
- sky/jobs/client/sdk_async.py +31 -5
- sky/jobs/constants.py +15 -8
- sky/jobs/controller.py +726 -284
- sky/jobs/file_content_utils.py +128 -0
- sky/jobs/log_gc.py +193 -0
- sky/jobs/recovery_strategy.py +250 -100
- sky/jobs/scheduler.py +271 -173
- sky/jobs/server/core.py +367 -114
- sky/jobs/server/server.py +81 -35
- sky/jobs/server/utils.py +89 -35
- sky/jobs/state.py +1498 -620
- sky/jobs/utils.py +771 -306
- sky/logs/agent.py +40 -5
- sky/logs/aws.py +9 -19
- sky/metrics/utils.py +282 -39
- sky/optimizer.py +1 -1
- sky/provision/__init__.py +37 -1
- sky/provision/aws/config.py +34 -13
- sky/provision/aws/instance.py +5 -2
- sky/provision/azure/instance.py +5 -3
- sky/provision/common.py +2 -0
- sky/provision/cudo/instance.py +4 -3
- sky/provision/do/instance.py +4 -3
- sky/provision/docker_utils.py +97 -26
- sky/provision/fluidstack/instance.py +6 -5
- sky/provision/gcp/config.py +6 -1
- sky/provision/gcp/instance.py +4 -2
- sky/provision/hyperbolic/instance.py +4 -2
- sky/provision/instance_setup.py +66 -20
- sky/provision/kubernetes/__init__.py +2 -0
- sky/provision/kubernetes/config.py +7 -44
- sky/provision/kubernetes/constants.py +0 -1
- sky/provision/kubernetes/instance.py +609 -213
- sky/provision/kubernetes/manifests/fusermount-server-daemonset.yaml +1 -2
- sky/provision/kubernetes/network.py +12 -8
- sky/provision/kubernetes/network_utils.py +8 -25
- sky/provision/kubernetes/utils.py +382 -418
- sky/provision/kubernetes/volume.py +150 -18
- sky/provision/lambda_cloud/instance.py +16 -13
- sky/provision/nebius/instance.py +6 -2
- sky/provision/nebius/utils.py +103 -86
- sky/provision/oci/instance.py +4 -2
- sky/provision/paperspace/instance.py +4 -3
- sky/provision/primeintellect/__init__.py +10 -0
- sky/provision/primeintellect/config.py +11 -0
- sky/provision/primeintellect/instance.py +454 -0
- sky/provision/primeintellect/utils.py +398 -0
- sky/provision/provisioner.py +30 -9
- sky/provision/runpod/__init__.py +2 -0
- sky/provision/runpod/instance.py +4 -3
- sky/provision/runpod/volume.py +69 -13
- sky/provision/scp/instance.py +307 -130
- sky/provision/seeweb/__init__.py +11 -0
- sky/provision/seeweb/config.py +13 -0
- sky/provision/seeweb/instance.py +812 -0
- sky/provision/shadeform/__init__.py +11 -0
- sky/provision/shadeform/config.py +12 -0
- sky/provision/shadeform/instance.py +351 -0
- sky/provision/shadeform/shadeform_utils.py +83 -0
- sky/provision/vast/instance.py +5 -3
- sky/provision/volume.py +164 -0
- sky/provision/vsphere/common/ssl_helper.py +1 -1
- sky/provision/vsphere/common/vapiconnect.py +2 -1
- sky/provision/vsphere/common/vim_utils.py +3 -2
- sky/provision/vsphere/instance.py +8 -6
- sky/provision/vsphere/vsphere_utils.py +8 -1
- sky/resources.py +11 -3
- sky/schemas/api/responses.py +107 -6
- sky/schemas/db/global_user_state/008_skylet_ssh_tunnel_metadata.py +34 -0
- sky/schemas/db/global_user_state/009_last_activity_and_launched_at.py +89 -0
- sky/schemas/db/global_user_state/010_save_ssh_key.py +66 -0
- sky/schemas/db/global_user_state/011_is_ephemeral.py +34 -0
- sky/schemas/db/kv_cache/001_initial_schema.py +29 -0
- sky/schemas/db/serve_state/002_yaml_content.py +34 -0
- sky/schemas/db/skypilot_config/001_initial_schema.py +30 -0
- sky/schemas/db/spot_jobs/002_cluster_pool.py +3 -3
- sky/schemas/db/spot_jobs/004_job_file_contents.py +42 -0
- sky/schemas/db/spot_jobs/005_logs_gc.py +38 -0
- sky/schemas/db/spot_jobs/006_controller_pid_started_at.py +34 -0
- sky/schemas/db/spot_jobs/007_config_file_content.py +34 -0
- sky/schemas/generated/jobsv1_pb2.py +86 -0
- sky/schemas/generated/jobsv1_pb2.pyi +254 -0
- sky/schemas/generated/jobsv1_pb2_grpc.py +542 -0
- sky/schemas/generated/managed_jobsv1_pb2.py +76 -0
- sky/schemas/generated/managed_jobsv1_pb2.pyi +278 -0
- sky/schemas/generated/managed_jobsv1_pb2_grpc.py +278 -0
- sky/schemas/generated/servev1_pb2.py +58 -0
- sky/schemas/generated/servev1_pb2.pyi +115 -0
- sky/schemas/generated/servev1_pb2_grpc.py +322 -0
- sky/serve/autoscalers.py +2 -0
- sky/serve/client/impl.py +55 -21
- sky/serve/constants.py +4 -3
- sky/serve/controller.py +17 -11
- sky/serve/load_balancing_policies.py +1 -1
- sky/serve/replica_managers.py +219 -142
- sky/serve/serve_rpc_utils.py +179 -0
- sky/serve/serve_state.py +63 -54
- sky/serve/serve_utils.py +145 -109
- sky/serve/server/core.py +46 -25
- sky/serve/server/impl.py +311 -162
- sky/serve/server/server.py +21 -19
- sky/serve/service.py +84 -68
- sky/serve/service_spec.py +45 -7
- sky/server/auth/loopback.py +38 -0
- sky/server/auth/oauth2_proxy.py +12 -7
- sky/server/common.py +47 -24
- sky/server/config.py +62 -28
- sky/server/constants.py +9 -1
- sky/server/daemons.py +109 -38
- sky/server/metrics.py +76 -96
- sky/server/middleware_utils.py +166 -0
- sky/server/requests/executor.py +381 -145
- sky/server/requests/payloads.py +71 -18
- sky/server/requests/preconditions.py +15 -13
- sky/server/requests/request_names.py +121 -0
- sky/server/requests/requests.py +507 -157
- sky/server/requests/serializers/decoders.py +48 -17
- sky/server/requests/serializers/encoders.py +85 -20
- sky/server/requests/threads.py +117 -0
- sky/server/rest.py +116 -24
- sky/server/server.py +420 -172
- sky/server/stream_utils.py +219 -45
- sky/server/uvicorn.py +30 -19
- sky/setup_files/MANIFEST.in +6 -1
- sky/setup_files/alembic.ini +8 -0
- sky/setup_files/dependencies.py +62 -19
- sky/setup_files/setup.py +44 -44
- sky/sky_logging.py +13 -5
- sky/skylet/attempt_skylet.py +106 -24
- sky/skylet/configs.py +3 -1
- sky/skylet/constants.py +111 -26
- sky/skylet/events.py +64 -10
- sky/skylet/job_lib.py +141 -104
- sky/skylet/log_lib.py +233 -5
- sky/skylet/log_lib.pyi +40 -2
- sky/skylet/providers/ibm/node_provider.py +12 -8
- sky/skylet/providers/ibm/vpc_provider.py +13 -12
- sky/skylet/runtime_utils.py +21 -0
- sky/skylet/services.py +524 -0
- sky/skylet/skylet.py +22 -1
- sky/skylet/subprocess_daemon.py +104 -29
- sky/skypilot_config.py +99 -79
- sky/ssh_node_pools/server.py +9 -8
- sky/task.py +221 -104
- sky/templates/aws-ray.yml.j2 +1 -0
- sky/templates/azure-ray.yml.j2 +1 -0
- sky/templates/cudo-ray.yml.j2 +1 -0
- sky/templates/do-ray.yml.j2 +1 -0
- sky/templates/fluidstack-ray.yml.j2 +1 -0
- sky/templates/gcp-ray.yml.j2 +1 -0
- sky/templates/hyperbolic-ray.yml.j2 +1 -0
- sky/templates/ibm-ray.yml.j2 +2 -1
- sky/templates/jobs-controller.yaml.j2 +3 -0
- sky/templates/kubernetes-ray.yml.j2 +196 -55
- sky/templates/lambda-ray.yml.j2 +1 -0
- sky/templates/nebius-ray.yml.j2 +3 -0
- sky/templates/oci-ray.yml.j2 +1 -0
- sky/templates/paperspace-ray.yml.j2 +1 -0
- sky/templates/primeintellect-ray.yml.j2 +72 -0
- sky/templates/runpod-ray.yml.j2 +1 -0
- sky/templates/scp-ray.yml.j2 +1 -0
- sky/templates/seeweb-ray.yml.j2 +171 -0
- sky/templates/shadeform-ray.yml.j2 +73 -0
- sky/templates/vast-ray.yml.j2 +1 -0
- sky/templates/vsphere-ray.yml.j2 +1 -0
- sky/templates/websocket_proxy.py +188 -43
- sky/usage/usage_lib.py +16 -4
- sky/users/permission.py +60 -43
- sky/utils/accelerator_registry.py +6 -3
- sky/utils/admin_policy_utils.py +18 -5
- sky/utils/annotations.py +22 -0
- sky/utils/asyncio_utils.py +78 -0
- sky/utils/atomic.py +1 -1
- sky/utils/auth_utils.py +153 -0
- sky/utils/cli_utils/status_utils.py +12 -7
- sky/utils/cluster_utils.py +28 -6
- sky/utils/command_runner.py +88 -27
- sky/utils/command_runner.pyi +36 -3
- sky/utils/common.py +3 -1
- sky/utils/common_utils.py +37 -4
- sky/utils/config_utils.py +1 -14
- sky/utils/context.py +127 -40
- sky/utils/context_utils.py +73 -18
- sky/utils/controller_utils.py +229 -70
- sky/utils/db/db_utils.py +95 -18
- sky/utils/db/kv_cache.py +149 -0
- sky/utils/db/migration_utils.py +24 -7
- sky/utils/env_options.py +4 -0
- sky/utils/git.py +559 -1
- sky/utils/kubernetes/create_cluster.sh +15 -30
- sky/utils/kubernetes/delete_cluster.sh +10 -7
- sky/utils/kubernetes/{deploy_remote_cluster.py → deploy_ssh_node_pools.py} +258 -380
- sky/utils/kubernetes/generate_kind_config.py +6 -66
- sky/utils/kubernetes/gpu_labeler.py +13 -3
- sky/utils/kubernetes/k8s_gpu_labeler_job.yaml +2 -1
- sky/utils/kubernetes/k8s_gpu_labeler_setup.yaml +16 -16
- sky/utils/kubernetes/kubernetes_deploy_utils.py +213 -194
- sky/utils/kubernetes/rsync_helper.sh +11 -3
- sky/utils/kubernetes_enums.py +7 -15
- sky/utils/lock_events.py +4 -4
- sky/utils/locks.py +128 -31
- sky/utils/log_utils.py +0 -319
- sky/utils/resource_checker.py +13 -10
- sky/utils/resources_utils.py +53 -29
- sky/utils/rich_utils.py +8 -4
- sky/utils/schemas.py +107 -52
- sky/utils/subprocess_utils.py +17 -4
- sky/utils/thread_utils.py +91 -0
- sky/utils/timeline.py +2 -1
- sky/utils/ux_utils.py +35 -1
- sky/utils/volume.py +88 -4
- sky/utils/yaml_utils.py +9 -0
- sky/volumes/client/sdk.py +48 -10
- sky/volumes/server/core.py +59 -22
- sky/volumes/server/server.py +46 -17
- sky/volumes/volume.py +54 -42
- sky/workspaces/core.py +57 -21
- sky/workspaces/server.py +13 -12
- sky_templates/README.md +3 -0
- sky_templates/__init__.py +3 -0
- sky_templates/ray/__init__.py +0 -0
- sky_templates/ray/start_cluster +183 -0
- sky_templates/ray/stop_cluster +75 -0
- {skypilot_nightly-1.0.0.dev20250905.dist-info → skypilot_nightly-1.0.0.dev20251203.dist-info}/METADATA +331 -65
- skypilot_nightly-1.0.0.dev20251203.dist-info/RECORD +611 -0
- skypilot_nightly-1.0.0.dev20251203.dist-info/top_level.txt +2 -0
- sky/client/cli/git.py +0 -549
- sky/dashboard/out/_next/static/chunks/1121-408ed10b2f9fce17.js +0 -1
- sky/dashboard/out/_next/static/chunks/1141-943efc7aff0f0c06.js +0 -1
- sky/dashboard/out/_next/static/chunks/1836-37fede578e2da5f8.js +0 -40
- sky/dashboard/out/_next/static/chunks/3015-86cabed5d4669ad0.js +0 -1
- sky/dashboard/out/_next/static/chunks/3294.c80326aec9bfed40.js +0 -6
- sky/dashboard/out/_next/static/chunks/3785.4872a2f3aa489880.js +0 -1
- sky/dashboard/out/_next/static/chunks/4045.b30465273dc5e468.js +0 -21
- sky/dashboard/out/_next/static/chunks/4676-9da7fdbde90b5549.js +0 -10
- sky/dashboard/out/_next/static/chunks/4725.10f7a9a5d3ea8208.js +0 -1
- sky/dashboard/out/_next/static/chunks/5339.3fda4a4010ff4e06.js +0 -51
- sky/dashboard/out/_next/static/chunks/6135-4b4d5e824b7f9d3c.js +0 -1
- sky/dashboard/out/_next/static/chunks/649.b9d7f7d10c1b8c53.js +0 -45
- sky/dashboard/out/_next/static/chunks/6856-dca7962af4814e1b.js +0 -1
- sky/dashboard/out/_next/static/chunks/6990-08b2a1cae076a943.js +0 -1
- sky/dashboard/out/_next/static/chunks/7325.b4bc99ce0892dcd5.js +0 -6
- sky/dashboard/out/_next/static/chunks/754-d0da8ab45f9509e9.js +0 -18
- sky/dashboard/out/_next/static/chunks/7669.1f5d9a402bf5cc42.js +0 -36
- sky/dashboard/out/_next/static/chunks/8969-0be3036bf86f8256.js +0 -1
- sky/dashboard/out/_next/static/chunks/9025.c12318fb6a1a9093.js +0 -6
- sky/dashboard/out/_next/static/chunks/9037-fa1737818d0a0969.js +0 -6
- sky/dashboard/out/_next/static/chunks/pages/clusters/[cluster]/[job]-1cbba24bd1bd35f8.js +0 -16
- sky/dashboard/out/_next/static/chunks/pages/clusters/[cluster]-0b4b35dc1dfe046c.js +0 -16
- sky/dashboard/out/_next/static/chunks/pages/clusters-469814d711d63b1b.js +0 -1
- sky/dashboard/out/_next/static/chunks/pages/jobs/[job]-dd64309c3fe67ed2.js +0 -11
- sky/dashboard/out/_next/static/chunks/pages/jobs/pools/[pool]-07349868f7905d37.js +0 -16
- sky/dashboard/out/_next/static/chunks/pages/jobs-1f70d9faa564804f.js +0 -1
- sky/dashboard/out/_next/static/chunks/pages/users-018bf31cda52e11b.js +0 -1
- sky/dashboard/out/_next/static/chunks/pages/volumes-739726d6b823f532.js +0 -1
- sky/dashboard/out/_next/static/chunks/webpack-4fe903277b57b523.js +0 -1
- sky/dashboard/out/_next/static/css/4614e06482d7309e.css +0 -3
- sky/dashboard/out/_next/static/mS-4qZPSkRuA1u-g2wQhg/_buildManifest.js +0 -1
- sky/templates/kubernetes-ssh-jump.yml.j2 +0 -94
- sky/utils/kubernetes/ssh_jump_lifecycle_manager.py +0 -191
- skypilot_nightly-1.0.0.dev20250905.dist-info/RECORD +0 -547
- skypilot_nightly-1.0.0.dev20250905.dist-info/top_level.txt +0 -1
- /sky/dashboard/out/_next/static/{mS-4qZPSkRuA1u-g2wQhg → 96_E2yl3QAiIJGOYCkSpB}/_ssgManifest.js +0 -0
- {skypilot_nightly-1.0.0.dev20250905.dist-info → skypilot_nightly-1.0.0.dev20251203.dist-info}/WHEEL +0 -0
- {skypilot_nightly-1.0.0.dev20250905.dist-info → skypilot_nightly-1.0.0.dev20251203.dist-info}/entry_points.txt +0 -0
- {skypilot_nightly-1.0.0.dev20250905.dist-info → skypilot_nightly-1.0.0.dev20251203.dist-info}/licenses/LICENSE +0 -0
sky/skylet/log_lib.pyi
CHANGED
|
@@ -4,7 +4,7 @@ overloaded type hints for run_with_log(), as we need to determine
|
|
|
4
4
|
the return type based on the value of require_outputs.
|
|
5
5
|
"""
|
|
6
6
|
import typing
|
|
7
|
-
from typing import Dict, List, Optional, Tuple, Union
|
|
7
|
+
from typing import Dict, Iterable, Iterator, List, Optional, Tuple, Union
|
|
8
8
|
|
|
9
9
|
from typing_extensions import Literal
|
|
10
10
|
|
|
@@ -42,7 +42,7 @@ class _ProcessingArgs:
|
|
|
42
42
|
...
|
|
43
43
|
|
|
44
44
|
|
|
45
|
-
def _get_context() -> Optional[context.
|
|
45
|
+
def _get_context() -> Optional[context.SkyPilotContext]:
|
|
46
46
|
...
|
|
47
47
|
|
|
48
48
|
|
|
@@ -129,8 +129,46 @@ def run_bash_command_with_log(bash_command: str,
|
|
|
129
129
|
...
|
|
130
130
|
|
|
131
131
|
|
|
132
|
+
def run_bash_command_with_log_and_return_pid(
|
|
133
|
+
bash_command: str,
|
|
134
|
+
log_path: str,
|
|
135
|
+
env_vars: Optional[Dict[str, str]] = ...,
|
|
136
|
+
stream_logs: bool = ...,
|
|
137
|
+
with_ray: bool = ...):
|
|
138
|
+
...
|
|
139
|
+
|
|
140
|
+
|
|
132
141
|
def tail_logs(job_id: int,
|
|
133
142
|
log_dir: Optional[str],
|
|
134
143
|
managed_job_id: Optional[int] = ...,
|
|
135
144
|
follow: bool = ...) -> None:
|
|
136
145
|
...
|
|
146
|
+
|
|
147
|
+
|
|
148
|
+
def tail_logs_iter(job_id: Optional[int],
|
|
149
|
+
log_dir: Optional[str],
|
|
150
|
+
managed_job_id: Optional[int] = ...,
|
|
151
|
+
follow: bool = ...,
|
|
152
|
+
tail: int = ...) -> Iterator[str]:
|
|
153
|
+
...
|
|
154
|
+
|
|
155
|
+
|
|
156
|
+
class LogBuffer:
|
|
157
|
+
max_chars: int
|
|
158
|
+
|
|
159
|
+
def __init__(self, max_chars: int = ...):
|
|
160
|
+
...
|
|
161
|
+
|
|
162
|
+
def flush(self) -> str:
|
|
163
|
+
...
|
|
164
|
+
|
|
165
|
+
def write(self, line: str) -> bool:
|
|
166
|
+
...
|
|
167
|
+
|
|
168
|
+
def close(self):
|
|
169
|
+
...
|
|
170
|
+
|
|
171
|
+
|
|
172
|
+
def buffered_iter_with_timeout(buffer: LogBuffer, iterable: Iterable[str],
|
|
173
|
+
timeout: float) -> Iterable[str]:
|
|
174
|
+
...
|
|
@@ -24,7 +24,7 @@ import socket
|
|
|
24
24
|
import threading
|
|
25
25
|
import time
|
|
26
26
|
from pathlib import Path
|
|
27
|
-
from pprint import pprint
|
|
27
|
+
from pprint import pformat, pprint
|
|
28
28
|
from typing import Any, Dict, List, Optional
|
|
29
29
|
from uuid import uuid4
|
|
30
30
|
|
|
@@ -67,13 +67,13 @@ def log_in_out(func):
|
|
|
67
67
|
logger.debug(
|
|
68
68
|
f"\n\nEnter {name} from {inspect.stack()[0][3]} "
|
|
69
69
|
f"{inspect.stack()[1][3]} {inspect.stack()[2][3]} with args: "
|
|
70
|
-
f"entered with args:\n{
|
|
70
|
+
f"entered with args:\n{pformat(args)} and kwargs {pformat(kwargs)}"
|
|
71
71
|
)
|
|
72
72
|
try:
|
|
73
73
|
result = func(*args, **kwargs)
|
|
74
74
|
logger.debug(
|
|
75
75
|
f"Leave {name} from {inspect.stack()[1][3]} with result "
|
|
76
|
-
f"Func Result:{
|
|
76
|
+
f"Func Result:{pformat(result)}\n\n"
|
|
77
77
|
)
|
|
78
78
|
except Exception:
|
|
79
79
|
cli_logger.error(f"Error in {name}")
|
|
@@ -445,7 +445,7 @@ class IBMVPCNodeProvider(NodeProvider):
|
|
|
445
445
|
"""returns the worker's node private ip address"""
|
|
446
446
|
node = self._get_cached_node(node_id)
|
|
447
447
|
|
|
448
|
-
# if a bug
|
|
448
|
+
# if a bug occurred, or node data was fetched before primary_ip
|
|
449
449
|
# was assigned, refetch node data from cloud.
|
|
450
450
|
try:
|
|
451
451
|
primary_ip = node["network_interfaces"][0].get("primary_ip")["address"]
|
|
@@ -502,8 +502,12 @@ class IBMVPCNodeProvider(NodeProvider):
|
|
|
502
502
|
|
|
503
503
|
logger.info(f"Creating new VM instance {name}")
|
|
504
504
|
|
|
505
|
-
|
|
506
|
-
|
|
505
|
+
if self.vpc_tags is None:
|
|
506
|
+
raise ValueError("vpc_tags must be initialized before creating instances")
|
|
507
|
+
vpc_tags = self.vpc_tags # Help mypy with type narrowing
|
|
508
|
+
|
|
509
|
+
security_group_identity_model = {"id": vpc_tags["security_group_id"]}
|
|
510
|
+
subnet_identity_model = {"id": vpc_tags["subnet_id"]}
|
|
507
511
|
primary_network_interface = {
|
|
508
512
|
"name": "eth0",
|
|
509
513
|
"subnet": subnet_identity_model,
|
|
@@ -536,7 +540,7 @@ class IBMVPCNodeProvider(NodeProvider):
|
|
|
536
540
|
instance_prototype["keys"] = [key_identity_model]
|
|
537
541
|
instance_prototype["profile"] = {"name": profile_name}
|
|
538
542
|
instance_prototype["resource_group"] = {"id": self.resource_group_id}
|
|
539
|
-
instance_prototype["vpc"] = {"id":
|
|
543
|
+
instance_prototype["vpc"] = {"id": vpc_tags["vpc_id"]}
|
|
540
544
|
instance_prototype["image"] = {"id": base_config["image_id"]}
|
|
541
545
|
|
|
542
546
|
instance_prototype["zone"] = {"name": self.zone}
|
|
@@ -584,7 +588,7 @@ class IBMVPCNodeProvider(NodeProvider):
|
|
|
584
588
|
floating_ip_name = f"{RAY_RECYCLABLE}-{uuid4().hex[:4]}"
|
|
585
589
|
# create a new floating ip
|
|
586
590
|
logger.debug(f"Creating floating IP {floating_ip_name}")
|
|
587
|
-
floating_ip_prototype = {}
|
|
591
|
+
floating_ip_prototype: Dict[str, Any] = {}
|
|
588
592
|
floating_ip_prototype["name"] = floating_ip_name
|
|
589
593
|
floating_ip_prototype["zone"] = {"name": self.zone}
|
|
590
594
|
floating_ip_prototype["resource_group"] = {"id": self.resource_group_id}
|
|
@@ -10,6 +10,7 @@ import textwrap
|
|
|
10
10
|
import time
|
|
11
11
|
import uuid
|
|
12
12
|
from concurrent.futures import ThreadPoolExecutor
|
|
13
|
+
from typing import Any, Dict
|
|
13
14
|
|
|
14
15
|
import requests
|
|
15
16
|
|
|
@@ -173,7 +174,7 @@ class IBMVPCProvider:
|
|
|
173
174
|
"a subnet"
|
|
174
175
|
)
|
|
175
176
|
|
|
176
|
-
subnet_prototype = {}
|
|
177
|
+
subnet_prototype: Dict[str, Any] = {}
|
|
177
178
|
subnet_prototype["zone"] = {"name": zone_name}
|
|
178
179
|
subnet_prototype["ip_version"] = "ipv4"
|
|
179
180
|
subnet_prototype["name"] = subnet_name
|
|
@@ -186,7 +187,7 @@ class IBMVPCProvider:
|
|
|
186
187
|
|
|
187
188
|
def create_public_gateway(self, vpc_id, zone_name, subnet_data):
|
|
188
189
|
|
|
189
|
-
gateway_prototype = {}
|
|
190
|
+
gateway_prototype: Dict[str, Any] = {}
|
|
190
191
|
gateway_prototype["vpc"] = {"id": vpc_id}
|
|
191
192
|
gateway_prototype["zone"] = {"name": zone_name}
|
|
192
193
|
gateway_prototype["name"] = f"{subnet_data['name']}-gw"
|
|
@@ -345,7 +346,7 @@ class IBMVPCProvider:
|
|
|
345
346
|
return True
|
|
346
347
|
tries -= 1
|
|
347
348
|
time.sleep(sleep_interval)
|
|
348
|
-
logger.error("Failed to delete instance within the
|
|
349
|
+
logger.error("Failed to delete instance within the allotted time\n")
|
|
349
350
|
return False
|
|
350
351
|
|
|
351
352
|
for subnet_id in self.get_vpc_subnets(vpc_data, region, field="id"):
|
|
@@ -522,7 +523,7 @@ class ClusterCleaner:
|
|
|
522
523
|
if e.code == 404:
|
|
523
524
|
print(("VPC doesn't exist."))
|
|
524
525
|
return None
|
|
525
|
-
else: raise
|
|
526
|
+
else: raise
|
|
526
527
|
|
|
527
528
|
def delete_subnets(vpc_data):
|
|
528
529
|
def _poll_subnet_exists(subnet_id):
|
|
@@ -560,12 +561,12 @@ class ClusterCleaner:
|
|
|
560
561
|
deleting_resource = False
|
|
561
562
|
except ibm_cloud_sdk_core.ApiException as e:
|
|
562
563
|
if e.code == 404:
|
|
563
|
-
print("gateway doesn't exist.")
|
|
564
|
+
print("gateway doesn't exist.")
|
|
564
565
|
deleting_resource = False
|
|
565
566
|
if e.code == 409:
|
|
566
567
|
print("gateway still in use.")
|
|
567
|
-
# will retry until cloud functions timeout.
|
|
568
|
-
time.sleep(5)
|
|
568
|
+
# will retry until cloud functions timeout.
|
|
569
|
+
time.sleep(5)
|
|
569
570
|
|
|
570
571
|
def delete_vms(vpc_id):
|
|
571
572
|
def _poll_vpc_contains_vms(vpc_id):
|
|
@@ -586,7 +587,7 @@ class ClusterCleaner:
|
|
|
586
587
|
)
|
|
587
588
|
|
|
588
589
|
def _del_instance(vm_data):
|
|
589
|
-
# first delete ips created by node_provider
|
|
590
|
+
# first delete ips created by node_provider
|
|
590
591
|
nic_id = vm_data["network_interfaces"][0]["id"]
|
|
591
592
|
res = ibm_vpc_client.list_instance_network_interface_floating_ips(
|
|
592
593
|
vm_data["id"], nic_id
|
|
@@ -598,7 +599,7 @@ class ClusterCleaner:
|
|
|
598
599
|
ibm_vpc_client.delete_floating_ip(ip["id"])
|
|
599
600
|
print(f"Deleting VM: {vm_data['id']}")
|
|
600
601
|
ibm_vpc_client.delete_instance(id=vm_data["id"])
|
|
601
|
-
|
|
602
|
+
|
|
602
603
|
res = ibm_vpc_client.list_instances(vpc_id=vpc_id).get_result()
|
|
603
604
|
num_instances = res["total_count"]
|
|
604
605
|
|
|
@@ -619,12 +620,12 @@ class ClusterCleaner:
|
|
|
619
620
|
deleting_resource = False
|
|
620
621
|
except ibm_cloud_sdk_core.ApiException as e:
|
|
621
622
|
if e.code == 404:
|
|
622
|
-
print("VPC doesn't exist.")
|
|
623
|
+
print("VPC doesn't exist.")
|
|
623
624
|
deleting_resource = False
|
|
624
625
|
if e.code == 409:
|
|
625
626
|
print("VPC still in use.")
|
|
626
|
-
# will retry until cloud functions timeout.
|
|
627
|
-
time.sleep(5)
|
|
627
|
+
# will retry until cloud functions timeout.
|
|
628
|
+
time.sleep(5)
|
|
628
629
|
|
|
629
630
|
def delete_vpc(vpc_id):
|
|
630
631
|
vpc_data = get_vpc_data(vpc_id)
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"""Runtime utilities for SkyPilot."""
|
|
2
|
+
import os
|
|
3
|
+
|
|
4
|
+
from sky.skylet import constants
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
def get_runtime_dir_path(path_suffix: str = '') -> str:
|
|
8
|
+
"""Get an expanded path within the SkyPilot runtime directory.
|
|
9
|
+
|
|
10
|
+
Args:
|
|
11
|
+
path_suffix: Path suffix to join with the runtime dir
|
|
12
|
+
(e.g., '.sky/jobs.db').
|
|
13
|
+
|
|
14
|
+
Returns:
|
|
15
|
+
The full expanded path.
|
|
16
|
+
"""
|
|
17
|
+
runtime_dir = os.path.expanduser(
|
|
18
|
+
os.environ.get(constants.SKY_RUNTIME_DIR_ENV_VAR_KEY, '~'))
|
|
19
|
+
if path_suffix:
|
|
20
|
+
return os.path.join(runtime_dir, path_suffix)
|
|
21
|
+
return runtime_dir
|