skypilot-nightly 1.0.0.dev20250217__tar.gz → 1.0.0.dev20250219__tar.gz
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.
- {skypilot_nightly-1.0.0.dev20250217/skypilot_nightly.egg-info → skypilot_nightly-1.0.0.dev20250219}/PKG-INFO +1 -1
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/__init__.py +2 -2
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/cli.py +15 -24
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/client/cli.py +15 -24
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/clouds/do.py +5 -2
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/clouds/service_catalog/data_fetchers/fetch_gcp.py +2 -2
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/clouds/service_catalog/data_fetchers/fetch_lambda_cloud.py +1 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/jobs/server/core.py +22 -17
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/jobs/server/dashboard_utils.py +6 -1
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/jobs/server/server.py +8 -10
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/optimizer.py +13 -11
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/resources.py +8 -7
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/serve/server/core.py +10 -7
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/serve/server/server.py +6 -11
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/server/common.py +3 -22
- skypilot_nightly-1.0.0.dev20250219/sky/utils/common.py +54 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/utils/controller_utils.py +7 -6
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219/skypilot_nightly.egg-info}/PKG-INFO +1 -1
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/tests/test_optimizer_dryruns.py +19 -3
- skypilot_nightly-1.0.0.dev20250217/sky/utils/common.py +0 -74
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/LICENSE +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/MANIFEST.in +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/README.md +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/pyproject.toml +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/setup.cfg +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/setup.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/adaptors/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/adaptors/aws.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/adaptors/azure.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/adaptors/cloudflare.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/adaptors/common.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/adaptors/cudo.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/adaptors/do.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/adaptors/docker.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/adaptors/gcp.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/adaptors/ibm.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/adaptors/kubernetes.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/adaptors/oci.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/adaptors/runpod.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/adaptors/vast.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/adaptors/vsphere.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/admin_policy.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/authentication.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/backends/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/backends/backend.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/backends/backend_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/backends/cloud_vm_ray_backend.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/backends/docker_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/backends/local_docker_backend.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/backends/monkey_patches/monkey_patch_ray_up.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/backends/wheel_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/benchmark/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/benchmark/benchmark_state.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/benchmark/benchmark_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/check.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/client/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/client/common.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/client/sdk.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/cloud_stores.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/clouds/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/clouds/aws.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/clouds/azure.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/clouds/cloud.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/clouds/cudo.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/clouds/fluidstack.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/clouds/gcp.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/clouds/ibm.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/clouds/kubernetes.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/clouds/lambda_cloud.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/clouds/oci.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/clouds/paperspace.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/clouds/runpod.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/clouds/scp.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/clouds/service_catalog/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/clouds/service_catalog/aws_catalog.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/clouds/service_catalog/azure_catalog.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/clouds/service_catalog/common.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/clouds/service_catalog/config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/clouds/service_catalog/constants.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/clouds/service_catalog/cudo_catalog.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/clouds/service_catalog/data_fetchers/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/clouds/service_catalog/data_fetchers/fetch_aws.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/clouds/service_catalog/data_fetchers/fetch_azure.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/clouds/service_catalog/data_fetchers/fetch_cudo.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/clouds/service_catalog/data_fetchers/fetch_fluidstack.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/clouds/service_catalog/data_fetchers/fetch_vast.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/clouds/service_catalog/data_fetchers/fetch_vsphere.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/clouds/service_catalog/do_catalog.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/clouds/service_catalog/fluidstack_catalog.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/clouds/service_catalog/gcp_catalog.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/clouds/service_catalog/ibm_catalog.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/clouds/service_catalog/kubernetes_catalog.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/clouds/service_catalog/lambda_catalog.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/clouds/service_catalog/oci_catalog.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/clouds/service_catalog/paperspace_catalog.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/clouds/service_catalog/runpod_catalog.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/clouds/service_catalog/scp_catalog.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/clouds/service_catalog/vast_catalog.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/clouds/service_catalog/vsphere_catalog.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/clouds/utils/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/clouds/utils/aws_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/clouds/utils/azure_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/clouds/utils/gcp_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/clouds/utils/oci_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/clouds/utils/scp_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/clouds/vast.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/clouds/vsphere.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/core.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/dag.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/data/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/data/data_transfer.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/data/data_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/data/mounting_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/data/storage.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/data/storage_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/exceptions.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/execution.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/global_user_state.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/jobs/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/jobs/client/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/jobs/client/sdk.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/jobs/constants.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/jobs/controller.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/jobs/dashboard/dashboard.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/jobs/dashboard/static/favicon.ico +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/jobs/dashboard/templates/index.html +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/jobs/recovery_strategy.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/jobs/scheduler.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/jobs/server/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/jobs/state.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/jobs/utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/models.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/aws/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/aws/config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/aws/instance.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/aws/utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/azure/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/azure/azure-config-template.json +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/azure/config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/azure/instance.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/common.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/constants.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/cudo/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/cudo/config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/cudo/cudo_machine_type.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/cudo/cudo_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/cudo/cudo_wrapper.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/cudo/instance.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/do/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/do/config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/do/constants.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/do/instance.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/do/utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/docker_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/fluidstack/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/fluidstack/config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/fluidstack/fluidstack_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/fluidstack/instance.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/gcp/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/gcp/config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/gcp/constants.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/gcp/instance.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/gcp/instance_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/gcp/mig_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/instance_setup.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/kubernetes/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/kubernetes/config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/kubernetes/constants.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/kubernetes/instance.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/kubernetes/manifests/smarter-device-manager-configmap.yaml +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/kubernetes/manifests/smarter-device-manager-daemonset.yaml +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/kubernetes/network.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/kubernetes/network_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/kubernetes/utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/lambda_cloud/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/lambda_cloud/config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/lambda_cloud/instance.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/lambda_cloud/lambda_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/logging.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/metadata_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/oci/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/oci/config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/oci/instance.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/oci/query_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/paperspace/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/paperspace/config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/paperspace/constants.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/paperspace/instance.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/paperspace/utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/provisioner.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/runpod/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/runpod/api/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/runpod/api/commands.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/runpod/api/pods.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/runpod/config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/runpod/instance.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/runpod/utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/vast/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/vast/config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/vast/instance.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/vast/utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/vsphere/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/vsphere/common/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/vsphere/common/cls_api_client.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/vsphere/common/cls_api_helper.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/vsphere/common/custom_script.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/vsphere/common/id_generator.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/vsphere/common/metadata_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/vsphere/common/service_manager.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/vsphere/common/service_manager_factory.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/vsphere/common/ssl_helper.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/vsphere/common/vapiconnect.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/vsphere/common/vim_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/vsphere/config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/vsphere/instance.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/vsphere/vsphere_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/serve/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/serve/autoscalers.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/serve/client/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/serve/client/sdk.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/serve/constants.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/serve/controller.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/serve/load_balancer.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/serve/load_balancing_policies.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/serve/replica_managers.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/serve/serve_state.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/serve/serve_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/serve/server/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/serve/service.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/serve/service_spec.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/server/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/server/constants.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/server/html/log.html +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/server/requests/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/server/requests/executor.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/server/requests/payloads.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/server/requests/queues/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/server/requests/queues/mp_queue.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/server/requests/requests.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/server/requests/serializers/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/server/requests/serializers/decoders.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/server/requests/serializers/encoders.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/server/server.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/server/stream_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/setup_files/MANIFEST.in +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/setup_files/dependencies.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/setup_files/setup.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/sky_logging.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/skylet/LICENSE +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/skylet/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/skylet/attempt_skylet.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/skylet/autostop_lib.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/skylet/configs.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/skylet/constants.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/skylet/events.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/skylet/job_lib.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/skylet/log_lib.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/skylet/log_lib.pyi +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/skylet/providers/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/skylet/providers/command_runner.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/skylet/providers/ibm/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/skylet/providers/ibm/node_provider.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/skylet/providers/ibm/utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/skylet/providers/ibm/vpc_provider.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/skylet/providers/scp/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/skylet/providers/scp/config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/skylet/providers/scp/node_provider.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/skylet/ray_patches/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/skylet/ray_patches/autoscaler.py.patch +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/skylet/ray_patches/cli.py.patch +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/skylet/ray_patches/command_runner.py.patch +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/skylet/ray_patches/log_monitor.py.patch +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/skylet/ray_patches/resource_demand_scheduler.py.patch +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/skylet/ray_patches/updater.py.patch +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/skylet/ray_patches/worker.py.patch +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/skylet/skylet.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/skylet/subprocess_daemon.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/skypilot_config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/task.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/templates/aws-ray.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/templates/azure-ray.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/templates/cudo-ray.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/templates/do-ray.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/templates/fluidstack-ray.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/templates/gcp-ray.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/templates/ibm-ray.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/templates/jobs-controller.yaml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/templates/kubernetes-ingress.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/templates/kubernetes-loadbalancer.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/templates/kubernetes-port-forward-proxy-command.sh +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/templates/kubernetes-ray.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/templates/kubernetes-ssh-jump.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/templates/lambda-ray.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/templates/local-ray.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/templates/oci-ray.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/templates/paperspace-ray.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/templates/runpod-ray.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/templates/scp-ray.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/templates/sky-serve-controller.yaml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/templates/skypilot-server-kubernetes-proxy.sh +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/templates/vast-ray.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/templates/vsphere-ray.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/templates/websocket_proxy.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/usage/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/usage/constants.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/usage/usage_lib.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/utils/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/utils/accelerator_registry.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/utils/admin_policy_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/utils/annotations.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/utils/cli_utils/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/utils/cli_utils/status_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/utils/cluster_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/utils/command_runner.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/utils/command_runner.pyi +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/utils/common_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/utils/config_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/utils/control_master_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/utils/dag_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/utils/db_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/utils/env_options.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/utils/kubernetes/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/utils/kubernetes/create_cluster.sh +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/utils/kubernetes/delete_cluster.sh +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/utils/kubernetes/deploy_remote_cluster.sh +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/utils/kubernetes/exec_kubeconfig_converter.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/utils/kubernetes/generate_kind_config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/utils/kubernetes/generate_kubeconfig.sh +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/utils/kubernetes/gpu_labeler.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/utils/kubernetes/k8s_gpu_labeler_job.yaml +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/utils/kubernetes/k8s_gpu_labeler_setup.yaml +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/utils/kubernetes/kubernetes_deploy_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/utils/kubernetes/rsync_helper.sh +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/utils/kubernetes/ssh_jump_lifecycle_manager.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/utils/kubernetes_enums.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/utils/log_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/utils/message_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/utils/registry.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/utils/resources_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/utils/rich_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/utils/schemas.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/utils/status_lib.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/utils/subprocess_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/utils/timeline.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/utils/ux_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/utils/validator.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/skypilot_nightly.egg-info/SOURCES.txt +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/skypilot_nightly.egg-info/dependency_links.txt +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/skypilot_nightly.egg-info/entry_points.txt +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/skypilot_nightly.egg-info/requires.txt +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/skypilot_nightly.egg-info/top_level.txt +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/tests/test_api.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/tests/test_cli.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/tests/test_config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/tests/test_global_user_state.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/tests/test_jobs.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/tests/test_jobs_and_serve.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/tests/test_list_accelerators.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/tests/test_optimizer_random_dag.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/tests/test_serve_autoscaler.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/tests/test_smoke.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/tests/test_storage.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/tests/test_wheels.py +0 -0
- {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/tests/test_yaml_parser.py +0 -0
@@ -5,7 +5,7 @@ from typing import Optional
|
|
5
5
|
import urllib.request
|
6
6
|
|
7
7
|
# Replaced with the current commit when building the wheels.
|
8
|
-
_SKYPILOT_COMMIT_SHA = '
|
8
|
+
_SKYPILOT_COMMIT_SHA = '0ec86b2b1ec8aeaae0514b5a7ce4eb99caaa0728'
|
9
9
|
|
10
10
|
|
11
11
|
def _get_git_commit():
|
@@ -35,7 +35,7 @@ def _get_git_commit():
|
|
35
35
|
|
36
36
|
|
37
37
|
__commit__ = _get_git_commit()
|
38
|
-
__version__ = '1.0.0.
|
38
|
+
__version__ = '1.0.0.dev20250219'
|
39
39
|
__root_dir__ = os.path.dirname(os.path.abspath(__file__))
|
40
40
|
|
41
41
|
|
@@ -1419,16 +1419,16 @@ def _handle_jobs_queue_request(
|
|
1419
1419
|
try:
|
1420
1420
|
# Check the controller status again, as the RuntimeError is likely
|
1421
1421
|
# due to the controller being autostopped when querying the jobs.
|
1422
|
-
|
1423
|
-
#
|
1424
|
-
# the controller cluster
|
1425
|
-
# '-remote-<hash>' when using remote API server.
|
1422
|
+
# Since we are client-side, we may not know the exact name of the
|
1423
|
+
# controller, so use the prefix with a wildcard.
|
1424
|
+
# Query status of the controller cluster.
|
1426
1425
|
records = sdk.get(
|
1427
|
-
sdk.status(
|
1428
|
-
|
1426
|
+
sdk.status(cluster_names=[common.JOB_CONTROLLER_PREFIX + '*'],
|
1427
|
+
all_users=True))
|
1429
1428
|
if (not records or
|
1430
1429
|
records[0]['status'] == status_lib.ClusterStatus.STOPPED):
|
1431
|
-
|
1430
|
+
controller = controller_utils.Controllers.JOBS_CONTROLLER.value
|
1431
|
+
msg = controller.default_hint_if_non_existent
|
1432
1432
|
except Exception: # pylint: disable=broad-except
|
1433
1433
|
# This is to an best effort to find the latest controller status to
|
1434
1434
|
# print more helpful message, so we can ignore any exception to
|
@@ -1494,16 +1494,18 @@ def _handle_services_request(
|
|
1494
1494
|
# Check the controller status again, as the RuntimeError is likely
|
1495
1495
|
# due to the controller being autostopped when querying the
|
1496
1496
|
# services.
|
1497
|
-
|
1498
|
-
#
|
1499
|
-
# the controller cluster
|
1500
|
-
# '-remote-<hash>' when using remote API server.
|
1497
|
+
# Since we are client-side, we may not know the exact name of the
|
1498
|
+
# controller, so use the prefix with a wildcard.
|
1499
|
+
# Query status of the controller cluster.
|
1501
1500
|
records = sdk.get(
|
1502
1501
|
sdk.status(
|
1503
|
-
cluster_names=[
|
1502
|
+
cluster_names=[common.SKY_SERVE_CONTROLLER_PREFIX + '*'],
|
1503
|
+
all_users=True))
|
1504
1504
|
if (not records or
|
1505
1505
|
records[0]['status'] == status_lib.ClusterStatus.STOPPED):
|
1506
|
-
|
1506
|
+
controller = (
|
1507
|
+
controller_utils.Controllers.SKY_SERVE_CONTROLLER.value)
|
1508
|
+
msg = controller.default_hint_if_non_existent
|
1507
1509
|
except Exception: # pylint: disable=broad-except
|
1508
1510
|
# This is to an best effort to find the latest controller status to
|
1509
1511
|
# print more helpful message, so we can ignore any exception to
|
@@ -2804,11 +2806,6 @@ def _hint_or_raise_for_down_jobs_controller(controller_name: str,
|
|
2804
2806
|
to be torn down (e.g., because it has jobs running or
|
2805
2807
|
it is in init state)
|
2806
2808
|
"""
|
2807
|
-
if not common.is_current_user_controller(controller_name):
|
2808
|
-
with ux_utils.print_exception_no_traceback():
|
2809
|
-
raise exceptions.NotSupportedError(
|
2810
|
-
f'Tearing down other user\'s managed job controller '
|
2811
|
-
f'{controller_name!r} is not allowed.')
|
2812
2809
|
controller = controller_utils.Controllers.from_name(controller_name)
|
2813
2810
|
assert controller is not None, controller_name
|
2814
2811
|
|
@@ -2868,12 +2865,6 @@ def _hint_or_raise_for_down_sky_serve_controller(controller_name: str,
|
|
2868
2865
|
to be torn down (e.g., because it has services running or
|
2869
2866
|
it is in init state)
|
2870
2867
|
"""
|
2871
|
-
# TODO(zhwu): Move this check to the sdk or even API server side.
|
2872
|
-
if not common.is_current_user_controller(controller_name):
|
2873
|
-
with ux_utils.print_exception_no_traceback():
|
2874
|
-
raise exceptions.NotSupportedError(
|
2875
|
-
f'Tearing down other user\'s sky serve controller '
|
2876
|
-
f'{controller_name!r} is not allowed.')
|
2877
2868
|
controller = controller_utils.Controllers.from_name(controller_name)
|
2878
2869
|
assert controller is not None, controller_name
|
2879
2870
|
with rich_utils.client_status('[bold cyan]Checking for live services[/]'):
|
@@ -1419,16 +1419,16 @@ def _handle_jobs_queue_request(
|
|
1419
1419
|
try:
|
1420
1420
|
# Check the controller status again, as the RuntimeError is likely
|
1421
1421
|
# due to the controller being autostopped when querying the jobs.
|
1422
|
-
|
1423
|
-
#
|
1424
|
-
# the controller cluster
|
1425
|
-
# '-remote-<hash>' when using remote API server.
|
1422
|
+
# Since we are client-side, we may not know the exact name of the
|
1423
|
+
# controller, so use the prefix with a wildcard.
|
1424
|
+
# Query status of the controller cluster.
|
1426
1425
|
records = sdk.get(
|
1427
|
-
sdk.status(
|
1428
|
-
|
1426
|
+
sdk.status(cluster_names=[common.JOB_CONTROLLER_PREFIX + '*'],
|
1427
|
+
all_users=True))
|
1429
1428
|
if (not records or
|
1430
1429
|
records[0]['status'] == status_lib.ClusterStatus.STOPPED):
|
1431
|
-
|
1430
|
+
controller = controller_utils.Controllers.JOBS_CONTROLLER.value
|
1431
|
+
msg = controller.default_hint_if_non_existent
|
1432
1432
|
except Exception: # pylint: disable=broad-except
|
1433
1433
|
# This is to an best effort to find the latest controller status to
|
1434
1434
|
# print more helpful message, so we can ignore any exception to
|
@@ -1494,16 +1494,18 @@ def _handle_services_request(
|
|
1494
1494
|
# Check the controller status again, as the RuntimeError is likely
|
1495
1495
|
# due to the controller being autostopped when querying the
|
1496
1496
|
# services.
|
1497
|
-
|
1498
|
-
#
|
1499
|
-
# the controller cluster
|
1500
|
-
# '-remote-<hash>' when using remote API server.
|
1497
|
+
# Since we are client-side, we may not know the exact name of the
|
1498
|
+
# controller, so use the prefix with a wildcard.
|
1499
|
+
# Query status of the controller cluster.
|
1501
1500
|
records = sdk.get(
|
1502
1501
|
sdk.status(
|
1503
|
-
cluster_names=[
|
1502
|
+
cluster_names=[common.SKY_SERVE_CONTROLLER_PREFIX + '*'],
|
1503
|
+
all_users=True))
|
1504
1504
|
if (not records or
|
1505
1505
|
records[0]['status'] == status_lib.ClusterStatus.STOPPED):
|
1506
|
-
|
1506
|
+
controller = (
|
1507
|
+
controller_utils.Controllers.SKY_SERVE_CONTROLLER.value)
|
1508
|
+
msg = controller.default_hint_if_non_existent
|
1507
1509
|
except Exception: # pylint: disable=broad-except
|
1508
1510
|
# This is to an best effort to find the latest controller status to
|
1509
1511
|
# print more helpful message, so we can ignore any exception to
|
@@ -2804,11 +2806,6 @@ def _hint_or_raise_for_down_jobs_controller(controller_name: str,
|
|
2804
2806
|
to be torn down (e.g., because it has jobs running or
|
2805
2807
|
it is in init state)
|
2806
2808
|
"""
|
2807
|
-
if not common.is_current_user_controller(controller_name):
|
2808
|
-
with ux_utils.print_exception_no_traceback():
|
2809
|
-
raise exceptions.NotSupportedError(
|
2810
|
-
f'Tearing down other user\'s managed job controller '
|
2811
|
-
f'{controller_name!r} is not allowed.')
|
2812
2809
|
controller = controller_utils.Controllers.from_name(controller_name)
|
2813
2810
|
assert controller is not None, controller_name
|
2814
2811
|
|
@@ -2868,12 +2865,6 @@ def _hint_or_raise_for_down_sky_serve_controller(controller_name: str,
|
|
2868
2865
|
to be torn down (e.g., because it has services running or
|
2869
2866
|
it is in init state)
|
2870
2867
|
"""
|
2871
|
-
# TODO(zhwu): Move this check to the sdk or even API server side.
|
2872
|
-
if not common.is_current_user_controller(controller_name):
|
2873
|
-
with ux_utils.print_exception_no_traceback():
|
2874
|
-
raise exceptions.NotSupportedError(
|
2875
|
-
f'Tearing down other user\'s sky serve controller '
|
2876
|
-
f'{controller_name!r} is not allowed.')
|
2877
2868
|
controller = controller_utils.Controllers.from_name(controller_name)
|
2878
2869
|
assert controller is not None, controller_name
|
2879
2870
|
with rich_utils.client_status('[bold cyan]Checking for live services[/]'):
|
@@ -233,8 +233,11 @@ class DO(clouds.Cloud):
|
|
233
233
|
cpus=resources.cpus,
|
234
234
|
memory=resources.memory,
|
235
235
|
disk_tier=resources.disk_tier)
|
236
|
-
|
237
|
-
|
236
|
+
if default_instance_type is None:
|
237
|
+
return resources_utils.FeasibleResources([], [], None)
|
238
|
+
else:
|
239
|
+
return resources_utils.FeasibleResources(
|
240
|
+
_make([default_instance_type]), [], None)
|
238
241
|
|
239
242
|
assert len(accelerators) == 1, resources
|
240
243
|
acc, acc_count = list(accelerators.items())[0]
|
@@ -60,8 +60,8 @@ HIDDEN_TPU_DF = pd.read_csv(
|
|
60
60
|
,tpu-v3-2048,1,,,tpu-v3-2048,2048.0,614.4,us-east1,us-east1-d
|
61
61
|
""")))
|
62
62
|
|
63
|
-
# TPU V6e price for
|
64
|
-
TPU_V6E_MISSING_REGIONS = ['us-central2']
|
63
|
+
# TPU V6e price for the following regions is missing in the SKUs.
|
64
|
+
TPU_V6E_MISSING_REGIONS = ['us-central2', 'southamerica-west1']
|
65
65
|
|
66
66
|
# TPU V5 is not visible in specific zones. We hardcode the missing zones here.
|
67
67
|
# NOTE(dev): Keep the zones and the df in sync.
|
{skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/jobs/server/core.py
RENAMED
@@ -21,10 +21,11 @@ from sky.backends import backend_utils
|
|
21
21
|
from sky.clouds.service_catalog import common as service_catalog_common
|
22
22
|
from sky.jobs import constants as managed_job_constants
|
23
23
|
from sky.jobs import utils as managed_job_utils
|
24
|
-
from sky.provision import common
|
24
|
+
from sky.provision import common as provision_common
|
25
25
|
from sky.skylet import constants as skylet_constants
|
26
26
|
from sky.usage import usage_lib
|
27
27
|
from sky.utils import admin_policy_utils
|
28
|
+
from sky.utils import common
|
28
29
|
from sky.utils import common_utils
|
29
30
|
from sky.utils import controller_utils
|
30
31
|
from sky.utils import dag_utils
|
@@ -149,14 +150,18 @@ def launch(
|
|
149
150
|
f'{colorama.Fore.YELLOW}'
|
150
151
|
f'Launching managed job {dag.name!r} from jobs controller...'
|
151
152
|
f'{colorama.Style.RESET_ALL}')
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
153
|
+
|
154
|
+
# Launch with the api server's user hash, so that sky status does not
|
155
|
+
# show the owner of the controller as whatever user launched it first.
|
156
|
+
with common.with_server_user_hash():
|
157
|
+
return execution.launch(task=controller_task,
|
158
|
+
cluster_name=controller_name,
|
159
|
+
stream_logs=stream_logs,
|
160
|
+
idle_minutes_to_autostop=skylet_constants.
|
161
|
+
CONTROLLER_IDLE_MINUTES_TO_AUTOSTOP,
|
162
|
+
retry_until_up=True,
|
163
|
+
fast=True,
|
164
|
+
_disable_controller_check=True)
|
160
165
|
|
161
166
|
|
162
167
|
def queue_from_kubernetes_pod(
|
@@ -194,16 +199,16 @@ def queue_from_kubernetes_pod(
|
|
194
199
|
provider_config = {'context': context}
|
195
200
|
instances = {
|
196
201
|
pod_name: [
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
202
|
+
provision_common.InstanceInfo(instance_id=pod_name,
|
203
|
+
internal_ip='',
|
204
|
+
external_ip='',
|
205
|
+
tags={})
|
201
206
|
]
|
202
207
|
} # Internal IP is not required for Kubernetes
|
203
|
-
cluster_info =
|
204
|
-
|
205
|
-
|
206
|
-
|
208
|
+
cluster_info = provision_common.ClusterInfo(provider_name='kubernetes',
|
209
|
+
head_instance_id=pod_name,
|
210
|
+
provider_config=provider_config,
|
211
|
+
instances=instances)
|
207
212
|
managed_jobs_runner = provision_lib.get_command_runners(
|
208
213
|
'kubernetes', cluster_info)[0]
|
209
214
|
|
@@ -1,4 +1,9 @@
|
|
1
|
-
"""Persistent dashboard sessions.
|
1
|
+
"""Persistent dashboard sessions.
|
2
|
+
|
3
|
+
Note: before #4717, this was useful because we needed to tunnel to multiple
|
4
|
+
controllers - one per user. Now, there is only one controller for the whole API
|
5
|
+
server, so this is not very useful. TODO(cooperc): Remove or fix this.
|
6
|
+
"""
|
2
7
|
import pathlib
|
3
8
|
from typing import Tuple
|
4
9
|
|
{skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/jobs/server/server.py
RENAMED
@@ -21,11 +21,6 @@ logger = sky_logging.init_logger(__name__)
|
|
21
21
|
router = fastapi.APIRouter()
|
22
22
|
|
23
23
|
|
24
|
-
def _get_controller_name(request_body: payloads.RequestBody) -> str:
|
25
|
-
user_hash = request_body.user_hash
|
26
|
-
return common.get_controller_name(common.ControllerType.JOBS, user_hash)
|
27
|
-
|
28
|
-
|
29
24
|
@router.post('/launch')
|
30
25
|
async def launch(request: fastapi.Request,
|
31
26
|
jobs_launch_body: payloads.JobsLaunchBody) -> None:
|
@@ -35,7 +30,7 @@ async def launch(request: fastapi.Request,
|
|
35
30
|
request_body=jobs_launch_body,
|
36
31
|
func=core.launch,
|
37
32
|
schedule_type=api_requests.ScheduleType.LONG,
|
38
|
-
request_cluster_name=
|
33
|
+
request_cluster_name=common.JOB_CONTROLLER_NAME,
|
39
34
|
)
|
40
35
|
|
41
36
|
|
@@ -49,7 +44,7 @@ async def queue(request: fastapi.Request,
|
|
49
44
|
func=core.queue,
|
50
45
|
schedule_type=(api_requests.ScheduleType.LONG if jobs_queue_body.refresh
|
51
46
|
else api_requests.ScheduleType.SHORT),
|
52
|
-
request_cluster_name=
|
47
|
+
request_cluster_name=common.JOB_CONTROLLER_NAME,
|
53
48
|
)
|
54
49
|
|
55
50
|
|
@@ -62,7 +57,7 @@ async def cancel(request: fastapi.Request,
|
|
62
57
|
request_body=jobs_cancel_body,
|
63
58
|
func=core.cancel,
|
64
59
|
schedule_type=api_requests.ScheduleType.SHORT,
|
65
|
-
request_cluster_name=
|
60
|
+
request_cluster_name=common.JOB_CONTROLLER_NAME,
|
66
61
|
)
|
67
62
|
|
68
63
|
|
@@ -78,7 +73,7 @@ async def logs(
|
|
78
73
|
func=core.tail_logs,
|
79
74
|
schedule_type=api_requests.ScheduleType.SHORT
|
80
75
|
if jobs_logs_body.refresh else api_requests.ScheduleType.LONG,
|
81
|
-
request_cluster_name=
|
76
|
+
request_cluster_name=common.JOB_CONTROLLER_NAME,
|
82
77
|
)
|
83
78
|
request_task = api_requests.get_request(request.state.request_id)
|
84
79
|
|
@@ -107,13 +102,16 @@ async def download_logs(
|
|
107
102
|
func=core.download_logs,
|
108
103
|
schedule_type=api_requests.ScheduleType.LONG
|
109
104
|
if jobs_download_logs_body.refresh else api_requests.ScheduleType.SHORT,
|
110
|
-
request_cluster_name=
|
105
|
+
request_cluster_name=common.JOB_CONTROLLER_NAME,
|
111
106
|
)
|
112
107
|
|
113
108
|
|
114
109
|
@router.get('/dashboard')
|
115
110
|
async def dashboard(request: fastapi.Request,
|
116
111
|
user_hash: str) -> fastapi.Response:
|
112
|
+
# Note: before #4717, each user had their own controller, and thus their own
|
113
|
+
# dashboard. Now, all users share the same controller, so this isn't really
|
114
|
+
# necessary. TODO(cooperc): clean up.
|
117
115
|
# Find the port for the dashboard of the user
|
118
116
|
os.environ[constants.USER_ID_ENV_VAR] = user_hash
|
119
117
|
server_common.reload_for_new_request(client_entrypoint=None,
|
@@ -285,8 +285,6 @@ class Optimizer:
|
|
285
285
|
|
286
286
|
# Don't print for the last node, Sink.
|
287
287
|
do_print = node_i != len(topo_order) - 1
|
288
|
-
if do_print:
|
289
|
-
logger.debug('#### {} ####'.format(node))
|
290
288
|
|
291
289
|
fuzzy_candidates: List[str] = []
|
292
290
|
if node_i < len(topo_order) - 1:
|
@@ -297,6 +295,10 @@ class Optimizer:
|
|
297
295
|
blocked_resources=blocked_resources,
|
298
296
|
quiet=quiet))
|
299
297
|
node_to_candidate_map[node] = cloud_candidates
|
298
|
+
# Has to call the printing after the launchable resources are
|
299
|
+
# computed, because the missing fields of the resources are
|
300
|
+
# inferred in the _fill_in_launchable_resources function.
|
301
|
+
logger.debug('#### {} ####'.format(node))
|
300
302
|
else:
|
301
303
|
# Dummy sink node.
|
302
304
|
launchable_resources = {
|
@@ -1324,17 +1326,17 @@ def _fill_in_launchable_resources(
|
|
1324
1326
|
f'{colorama.Fore.CYAN}'
|
1325
1327
|
f'{sorted(all_fuzzy_candidates)}'
|
1326
1328
|
f'{colorama.Style.RESET_ALL}')
|
1329
|
+
else:
|
1330
|
+
if resources.cpus is not None:
|
1331
|
+
logger.info('Try specifying a different CPU count, '
|
1332
|
+
'or add "+" to the end of the CPU count '
|
1333
|
+
'to allow for larger instances.')
|
1334
|
+
if resources.memory is not None:
|
1335
|
+
logger.info('Try specifying a different memory size, '
|
1336
|
+
'or add "+" to the end of the memory size '
|
1337
|
+
'to allow for larger instances.')
|
1327
1338
|
for cloud, hint in hints.items():
|
1328
1339
|
logger.info(f'{repr(cloud)}: {hint}')
|
1329
|
-
else:
|
1330
|
-
if resources.cpus is not None:
|
1331
|
-
logger.info('Try specifying a different CPU count, '
|
1332
|
-
'or add "+" to the end of the CPU count '
|
1333
|
-
'to allow for larger instances.')
|
1334
|
-
if resources.memory is not None:
|
1335
|
-
logger.info('Try specifying a different memory size, '
|
1336
|
-
'or add "+" to the end of the memory size '
|
1337
|
-
'to allow for larger instances.')
|
1338
1340
|
|
1339
1341
|
launchable[resources] = _filter_out_blocked_launchable_resources(
|
1340
1342
|
launchable[resources], blocked_resources)
|
@@ -251,6 +251,7 @@ class Resources:
|
|
251
251
|
self._set_accelerators(accelerators, accelerator_args)
|
252
252
|
|
253
253
|
def validate(self):
|
254
|
+
"""Validate the resources and infer the missing fields if possible."""
|
254
255
|
self._try_canonicalize_accelerators()
|
255
256
|
self._try_validate_and_set_region_zone()
|
256
257
|
self._try_validate_instance_type()
|
@@ -1267,17 +1268,17 @@ class Resources:
|
|
1267
1268
|
def is_empty(self) -> bool:
|
1268
1269
|
"""Is this Resources an empty request (all fields None)?"""
|
1269
1270
|
return all([
|
1270
|
-
self.
|
1271
|
+
self._cloud is None,
|
1271
1272
|
self._instance_type is None,
|
1272
1273
|
self._cpus is None,
|
1273
|
-
self.
|
1274
|
-
self.
|
1275
|
-
self.
|
1274
|
+
self._memory is None,
|
1275
|
+
self._accelerators is None,
|
1276
|
+
self._accelerator_args is None,
|
1276
1277
|
not self._use_spot_specified,
|
1277
|
-
self.
|
1278
|
-
self.
|
1278
|
+
self._disk_size == _DEFAULT_DISK_SIZE_GB,
|
1279
|
+
self._disk_tier is None,
|
1279
1280
|
self._image_id is None,
|
1280
|
-
self.
|
1281
|
+
self._ports is None,
|
1281
1282
|
self._docker_login_config is None,
|
1282
1283
|
])
|
1283
1284
|
|
{skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/serve/server/core.py
RENAMED
@@ -249,13 +249,16 @@ def up(
|
|
249
249
|
# with the current job id, we know the service is up and running
|
250
250
|
# for the first time; otherwise it is a name conflict.
|
251
251
|
idle_minutes_to_autostop = constants.CONTROLLER_IDLE_MINUTES_TO_AUTOSTOP
|
252
|
-
|
253
|
-
|
254
|
-
|
255
|
-
|
256
|
-
|
257
|
-
|
258
|
-
|
252
|
+
# Since the controller may be shared among multiple users, launch the
|
253
|
+
# controller with the API server's user hash.
|
254
|
+
with common.with_server_user_hash():
|
255
|
+
controller_job_id, controller_handle = execution.launch(
|
256
|
+
task=controller_task,
|
257
|
+
cluster_name=controller_name,
|
258
|
+
idle_minutes_to_autostop=idle_minutes_to_autostop,
|
259
|
+
retry_until_up=True,
|
260
|
+
_disable_controller_check=True,
|
261
|
+
)
|
259
262
|
|
260
263
|
style = colorama.Style
|
261
264
|
fore = colorama.Fore
|
{skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/serve/server/server.py
RENAMED
@@ -14,11 +14,6 @@ logger = sky_logging.init_logger(__name__)
|
|
14
14
|
router = fastapi.APIRouter()
|
15
15
|
|
16
16
|
|
17
|
-
def _get_controller_name(request_body: payloads.RequestBody) -> str:
|
18
|
-
user_hash = request_body.user_hash
|
19
|
-
return common.get_controller_name(common.ControllerType.SERVE, user_hash)
|
20
|
-
|
21
|
-
|
22
17
|
@router.post('/up')
|
23
18
|
async def up(
|
24
19
|
request: fastapi.Request,
|
@@ -30,7 +25,7 @@ async def up(
|
|
30
25
|
request_body=up_body,
|
31
26
|
func=core.up,
|
32
27
|
schedule_type=api_requests.ScheduleType.LONG,
|
33
|
-
request_cluster_name=
|
28
|
+
request_cluster_name=common.SKY_SERVE_CONTROLLER_NAME,
|
34
29
|
)
|
35
30
|
|
36
31
|
|
@@ -45,7 +40,7 @@ async def update(
|
|
45
40
|
request_body=update_body,
|
46
41
|
func=core.update,
|
47
42
|
schedule_type=api_requests.ScheduleType.SHORT,
|
48
|
-
request_cluster_name=
|
43
|
+
request_cluster_name=common.SKY_SERVE_CONTROLLER_NAME,
|
49
44
|
)
|
50
45
|
|
51
46
|
|
@@ -60,7 +55,7 @@ async def down(
|
|
60
55
|
request_body=down_body,
|
61
56
|
func=core.down,
|
62
57
|
schedule_type=api_requests.ScheduleType.SHORT,
|
63
|
-
request_cluster_name=
|
58
|
+
request_cluster_name=common.SKY_SERVE_CONTROLLER_NAME,
|
64
59
|
)
|
65
60
|
|
66
61
|
|
@@ -75,7 +70,7 @@ async def terminate_replica(
|
|
75
70
|
request_body=terminate_replica_body,
|
76
71
|
func=core.terminate_replica,
|
77
72
|
schedule_type=api_requests.ScheduleType.SHORT,
|
78
|
-
request_cluster_name=
|
73
|
+
request_cluster_name=common.SKY_SERVE_CONTROLLER_NAME,
|
79
74
|
)
|
80
75
|
|
81
76
|
|
@@ -90,7 +85,7 @@ async def status(
|
|
90
85
|
request_body=status_body,
|
91
86
|
func=core.status,
|
92
87
|
schedule_type=api_requests.ScheduleType.SHORT,
|
93
|
-
request_cluster_name=
|
88
|
+
request_cluster_name=common.SKY_SERVE_CONTROLLER_NAME,
|
94
89
|
)
|
95
90
|
|
96
91
|
|
@@ -105,7 +100,7 @@ async def tail_logs(
|
|
105
100
|
request_body=log_body,
|
106
101
|
func=core.tail_logs,
|
107
102
|
schedule_type=api_requests.ScheduleType.SHORT,
|
108
|
-
request_cluster_name=
|
103
|
+
request_cluster_name=common.SKY_SERVE_CONTROLLER_NAME,
|
109
104
|
)
|
110
105
|
|
111
106
|
request_task = api_requests.get_request(request.state.request_id)
|
{skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/server/common.py
RENAMED
@@ -3,11 +3,11 @@
|
|
3
3
|
import dataclasses
|
4
4
|
import enum
|
5
5
|
import functools
|
6
|
-
import importlib
|
7
6
|
import json
|
8
7
|
import os
|
9
8
|
import pathlib
|
10
9
|
import subprocess
|
10
|
+
import sys
|
11
11
|
import time
|
12
12
|
import typing
|
13
13
|
from typing import Any, Dict, Optional
|
@@ -27,14 +27,12 @@ from sky.server import constants as server_constants
|
|
27
27
|
from sky.skylet import constants
|
28
28
|
from sky.usage import usage_lib
|
29
29
|
from sky.utils import annotations
|
30
|
-
from sky.utils import common
|
31
30
|
from sky.utils import common_utils
|
32
31
|
from sky.utils import rich_utils
|
33
32
|
from sky.utils import ux_utils
|
34
33
|
|
35
34
|
if typing.TYPE_CHECKING:
|
36
35
|
from sky import dag as dag_lib
|
37
|
-
from sky.server.requests import payloads
|
38
36
|
|
39
37
|
DEFAULT_SERVER_URL = 'http://127.0.0.1:46580'
|
40
38
|
AVAILBLE_LOCAL_API_SERVER_HOSTS = ['0.0.0.0', 'localhost', '127.0.0.1']
|
@@ -42,7 +40,7 @@ AVAILABLE_LOCAL_API_SERVER_URLS = [
|
|
42
40
|
f'http://{host}:46580' for host in AVAILBLE_LOCAL_API_SERVER_HOSTS
|
43
41
|
]
|
44
42
|
|
45
|
-
API_SERVER_CMD = '
|
43
|
+
API_SERVER_CMD = '-m sky.server.server'
|
46
44
|
# The client dir on the API server for storing user-specific data, such as file
|
47
45
|
# mounts, logs, etc. This dir is empheral and will be cleaned up when the API
|
48
46
|
# server is restarted.
|
@@ -172,7 +170,7 @@ def start_uvicorn_in_background(deploy: bool = False, host: str = '127.0.0.1'):
|
|
172
170
|
api_server_cmd += ' --deploy'
|
173
171
|
if host is not None:
|
174
172
|
api_server_cmd += f' --host {host}'
|
175
|
-
cmd = f'{api_server_cmd} > {log_path} 2>&1'
|
173
|
+
cmd = f'{sys.executable} {api_server_cmd} > {log_path} 2>&1'
|
176
174
|
|
177
175
|
# Start the uvicorn process in the background and don't wait for it.
|
178
176
|
# If this is called from a CLI invocation, we need start_new_session=True so
|
@@ -406,23 +404,6 @@ def request_body_to_params(body: pydantic.BaseModel) -> Dict[str, Any]:
|
|
406
404
|
def reload_for_new_request(client_entrypoint: Optional[str],
|
407
405
|
client_command: Optional[str]):
|
408
406
|
"""Reload modules, global variables, and usage message for a new request."""
|
409
|
-
# When a user request is sent to api server, it changes the user hash in the
|
410
|
-
# env vars, but since controller_utils is imported before the env vars are
|
411
|
-
# set, it doesn't get updated. So we need to reload it here.
|
412
|
-
# pylint: disable=import-outside-toplevel
|
413
|
-
from sky.utils import controller_utils
|
414
|
-
common.SKY_SERVE_CONTROLLER_NAME = common.get_controller_name(
|
415
|
-
common.ControllerType.SERVE)
|
416
|
-
common.JOB_CONTROLLER_NAME = common.get_controller_name(
|
417
|
-
common.ControllerType.JOBS)
|
418
|
-
# TODO(zhwu): We should avoid reloading the controller_utils module.
|
419
|
-
# Instead, we should reload required cache or global variables.
|
420
|
-
# TODO(zhwu): Reloading the controller_utils module may cause the global
|
421
|
-
# variables in other modules referring the `controller_utils.Controllers`
|
422
|
-
# dangling, as they will be pointing to the old object. We should not use
|
423
|
-
# it in global variables.
|
424
|
-
importlib.reload(controller_utils)
|
425
|
-
|
426
407
|
# Reset the client entrypoint and command for the usage message.
|
427
408
|
common_utils.set_client_entrypoint_and_command(
|
428
409
|
client_entrypoint=client_entrypoint,
|
@@ -0,0 +1,54 @@
|
|
1
|
+
"""Common enumerators and classes."""
|
2
|
+
|
3
|
+
import contextlib
|
4
|
+
import enum
|
5
|
+
import os
|
6
|
+
from typing import Generator
|
7
|
+
|
8
|
+
from sky.skylet import constants
|
9
|
+
from sky.utils import common_utils
|
10
|
+
|
11
|
+
SKY_SERVE_CONTROLLER_PREFIX: str = 'sky-serve-controller-'
|
12
|
+
JOB_CONTROLLER_PREFIX: str = 'sky-jobs-controller-'
|
13
|
+
# We use the user hash (machine-specific) for the controller name. It will be
|
14
|
+
# the same across the whole lifecycle of the server, including:
|
15
|
+
# 1. all requests, because this global variable is set once during server
|
16
|
+
# starts.
|
17
|
+
# 2. SkyPilot API server restarts, as long as the `~/.sky` folder is persisted
|
18
|
+
# and the env var set during starting the server is the same.
|
19
|
+
# This behavior is the same for the local API server (where SERVER_ID is the
|
20
|
+
# same as the normal user hash). This ensures backwards-compatibility with jobs
|
21
|
+
# controllers from before #4660.
|
22
|
+
SERVER_ID = common_utils.get_user_hash()
|
23
|
+
SKY_SERVE_CONTROLLER_NAME: str = f'{SKY_SERVE_CONTROLLER_PREFIX}{SERVER_ID}'
|
24
|
+
JOB_CONTROLLER_NAME: str = f'{JOB_CONTROLLER_PREFIX}{SERVER_ID}'
|
25
|
+
|
26
|
+
|
27
|
+
@contextlib.contextmanager
|
28
|
+
def with_server_user_hash() -> Generator[None, None, None]:
|
29
|
+
"""Temporarily set the user hash to common.SERVER_ID."""
|
30
|
+
old_env_user_hash = os.getenv(constants.USER_ID_ENV_VAR)
|
31
|
+
os.environ[constants.USER_ID_ENV_VAR] = SERVER_ID
|
32
|
+
try:
|
33
|
+
yield
|
34
|
+
finally:
|
35
|
+
if old_env_user_hash is not None:
|
36
|
+
os.environ[constants.USER_ID_ENV_VAR] = old_env_user_hash
|
37
|
+
else:
|
38
|
+
os.environ.pop(constants.USER_ID_ENV_VAR)
|
39
|
+
|
40
|
+
|
41
|
+
class StatusRefreshMode(enum.Enum):
|
42
|
+
"""The mode of refreshing the status of a cluster."""
|
43
|
+
NONE = 'NONE'
|
44
|
+
"""Do not refresh any clusters."""
|
45
|
+
AUTO = 'AUTO'
|
46
|
+
"""Only refresh clusters if their autostop is set or have spot instances."""
|
47
|
+
FORCE = 'FORCE'
|
48
|
+
"""Enforce refreshing all clusters."""
|
49
|
+
|
50
|
+
|
51
|
+
# Constants: minimize what target?
|
52
|
+
class OptimizeTarget(enum.Enum):
|
53
|
+
COST = 0
|
54
|
+
TIME = 1
|