skypilot-nightly 1.0.0.dev20250410__tar.gz → 1.0.0.dev20250412__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.dev20250410/skypilot_nightly.egg-info → skypilot_nightly-1.0.0.dev20250412}/PKG-INFO +3 -1
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/__init__.py +2 -2
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/adaptors/oci.py +2 -2
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/authentication.py +2 -2
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/backends/backend_utils.py +1 -1
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/backends/cloud_vm_ray_backend.py +3 -3
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/check.py +1 -1
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/cli.py +51 -47
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/client/cli.py +51 -47
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/client/common.py +4 -2
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/client/sdk.py +60 -27
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/clouds/aws.py +2 -2
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/clouds/cloud.py +3 -2
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/clouds/kubernetes.py +20 -3
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/clouds/nebius.py +2 -4
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/clouds/oci.py +2 -2
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/clouds/utils/oci_utils.py +1 -1
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/core.py +12 -17
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/data/mounting_utils.py +34 -10
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/exceptions.py +1 -1
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/execution.py +5 -4
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/jobs/client/sdk.py +5 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/optimizer.py +1 -2
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/provision/instance_setup.py +3 -1
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/provision/kubernetes/config.py +41 -36
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/provision/kubernetes/instance.py +4 -7
- skypilot_nightly-1.0.0.dev20250412/sky/provision/kubernetes/manifests/fusermount-server-daemonset.yaml +54 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/provision/kubernetes/network_utils.py +1 -1
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/provision/kubernetes/utils.py +51 -35
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/serve/client/sdk.py +6 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/server/common.py +16 -1
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/server/constants.py +5 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/server/requests/payloads.py +2 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/setup_files/dependencies.py +1 -1
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/skylet/constants.py +2 -2
- skypilot_nightly-1.0.0.dev20250412/sky/skypilot_config.py +376 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/templates/kubernetes-ray.yml.j2 +66 -25
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/templates/websocket_proxy.py +41 -2
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/utils/config_utils.py +1 -1
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/utils/controller_utils.py +1 -1
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/utils/kubernetes/generate_kubeconfig.sh +2 -2
- skypilot_nightly-1.0.0.dev20250412/sky/utils/kubernetes/rsync_helper.sh +39 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412/skypilot_nightly.egg-info}/PKG-INFO +3 -1
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/skypilot_nightly.egg-info/SOURCES.txt +1 -2
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/skypilot_nightly.egg-info/requires.txt +2 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/tests/test_cli.py +125 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/tests/test_config.py +158 -37
- skypilot_nightly-1.0.0.dev20250410/sky/provision/kubernetes/manifests/smarter-device-manager-configmap.yaml +0 -10
- skypilot_nightly-1.0.0.dev20250410/sky/provision/kubernetes/manifests/smarter-device-manager-daemonset.yaml +0 -68
- skypilot_nightly-1.0.0.dev20250410/sky/skypilot_config.py +0 -249
- skypilot_nightly-1.0.0.dev20250410/sky/utils/kubernetes/rsync_helper.sh +0 -24
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/LICENSE +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/MANIFEST.in +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/README.md +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/pyproject.toml +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/setup.cfg +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/setup.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/adaptors/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/adaptors/aws.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/adaptors/azure.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/adaptors/cloudflare.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/adaptors/common.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/adaptors/cudo.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/adaptors/do.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/adaptors/docker.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/adaptors/gcp.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/adaptors/ibm.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/adaptors/kubernetes.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/adaptors/nebius.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/adaptors/runpod.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/adaptors/vast.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/adaptors/vsphere.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/admin_policy.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/backends/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/backends/backend.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/backends/docker_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/backends/local_docker_backend.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/backends/monkey_patches/monkey_patch_ray_up.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/backends/wheel_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/benchmark/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/benchmark/benchmark_state.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/benchmark/benchmark_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/client/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/cloud_stores.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/clouds/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/clouds/azure.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/clouds/cudo.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/clouds/do.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/clouds/fluidstack.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/clouds/gcp.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/clouds/ibm.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/clouds/lambda_cloud.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/clouds/paperspace.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/clouds/runpod.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/clouds/scp.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/clouds/service_catalog/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/clouds/service_catalog/aws_catalog.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/clouds/service_catalog/azure_catalog.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/clouds/service_catalog/common.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/clouds/service_catalog/config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/clouds/service_catalog/constants.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/clouds/service_catalog/cudo_catalog.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/clouds/service_catalog/data_fetchers/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/clouds/service_catalog/data_fetchers/fetch_aws.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/clouds/service_catalog/data_fetchers/fetch_azure.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/clouds/service_catalog/data_fetchers/fetch_cudo.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/clouds/service_catalog/data_fetchers/fetch_fluidstack.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/clouds/service_catalog/data_fetchers/fetch_gcp.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/clouds/service_catalog/data_fetchers/fetch_ibm.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/clouds/service_catalog/data_fetchers/fetch_lambda_cloud.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/clouds/service_catalog/data_fetchers/fetch_vast.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/clouds/service_catalog/data_fetchers/fetch_vsphere.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/clouds/service_catalog/do_catalog.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/clouds/service_catalog/fluidstack_catalog.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/clouds/service_catalog/gcp_catalog.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/clouds/service_catalog/ibm_catalog.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/clouds/service_catalog/kubernetes_catalog.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/clouds/service_catalog/lambda_catalog.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/clouds/service_catalog/nebius_catalog.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/clouds/service_catalog/oci_catalog.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/clouds/service_catalog/paperspace_catalog.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/clouds/service_catalog/runpod_catalog.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/clouds/service_catalog/scp_catalog.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/clouds/service_catalog/vast_catalog.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/clouds/service_catalog/vsphere_catalog.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/clouds/utils/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/clouds/utils/aws_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/clouds/utils/azure_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/clouds/utils/gcp_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/clouds/utils/scp_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/clouds/vast.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/clouds/vsphere.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/dag.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/data/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/data/data_transfer.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/data/data_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/data/storage.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/data/storage_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/global_user_state.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/jobs/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/jobs/client/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/jobs/constants.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/jobs/controller.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/jobs/dashboard/dashboard.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/jobs/dashboard/static/favicon.ico +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/jobs/dashboard/templates/index.html +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/jobs/recovery_strategy.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/jobs/scheduler.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/jobs/server/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/jobs/server/core.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/jobs/server/dashboard_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/jobs/server/server.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/jobs/state.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/jobs/utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/models.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/provision/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/provision/aws/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/provision/aws/config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/provision/aws/instance.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/provision/aws/utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/provision/azure/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/provision/azure/azure-config-template.json +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/provision/azure/config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/provision/azure/instance.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/provision/common.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/provision/constants.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/provision/cudo/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/provision/cudo/config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/provision/cudo/cudo_machine_type.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/provision/cudo/cudo_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/provision/cudo/cudo_wrapper.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/provision/cudo/instance.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/provision/do/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/provision/do/config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/provision/do/constants.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/provision/do/instance.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/provision/do/utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/provision/docker_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/provision/fluidstack/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/provision/fluidstack/config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/provision/fluidstack/fluidstack_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/provision/fluidstack/instance.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/provision/gcp/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/provision/gcp/config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/provision/gcp/constants.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/provision/gcp/instance.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/provision/gcp/instance_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/provision/gcp/mig_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/provision/kubernetes/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/provision/kubernetes/constants.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/provision/kubernetes/network.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/provision/lambda_cloud/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/provision/lambda_cloud/config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/provision/lambda_cloud/instance.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/provision/lambda_cloud/lambda_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/provision/logging.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/provision/metadata_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/provision/nebius/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/provision/nebius/config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/provision/nebius/instance.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/provision/nebius/utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/provision/oci/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/provision/oci/config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/provision/oci/instance.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/provision/oci/query_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/provision/paperspace/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/provision/paperspace/config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/provision/paperspace/constants.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/provision/paperspace/instance.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/provision/paperspace/utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/provision/provisioner.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/provision/runpod/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/provision/runpod/api/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/provision/runpod/api/commands.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/provision/runpod/api/pods.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/provision/runpod/config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/provision/runpod/instance.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/provision/runpod/utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/provision/vast/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/provision/vast/config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/provision/vast/instance.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/provision/vast/utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/provision/vsphere/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/provision/vsphere/common/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/provision/vsphere/common/cls_api_client.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/provision/vsphere/common/cls_api_helper.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/provision/vsphere/common/custom_script.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/provision/vsphere/common/id_generator.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/provision/vsphere/common/metadata_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/provision/vsphere/common/service_manager.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/provision/vsphere/common/service_manager_factory.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/provision/vsphere/common/ssl_helper.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/provision/vsphere/common/vapiconnect.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/provision/vsphere/common/vim_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/provision/vsphere/config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/provision/vsphere/instance.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/provision/vsphere/vsphere_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/resources.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/serve/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/serve/autoscalers.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/serve/client/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/serve/constants.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/serve/controller.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/serve/load_balancer.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/serve/load_balancing_policies.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/serve/replica_managers.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/serve/serve_state.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/serve/serve_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/serve/server/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/serve/server/core.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/serve/server/server.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/serve/service.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/serve/service_spec.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/serve/spot_placer.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/server/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/server/html/log.html +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/server/requests/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/server/requests/event_loop.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/server/requests/executor.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/server/requests/preconditions.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/server/requests/process.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/server/requests/queues/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/server/requests/queues/local_queue.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/server/requests/queues/mp_queue.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/server/requests/requests.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/server/requests/serializers/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/server/requests/serializers/decoders.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/server/requests/serializers/encoders.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/server/server.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/server/stream_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/server/uvicorn.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/setup_files/MANIFEST.in +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/setup_files/setup.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/sky_logging.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/skylet/LICENSE +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/skylet/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/skylet/attempt_skylet.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/skylet/autostop_lib.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/skylet/configs.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/skylet/events.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/skylet/job_lib.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/skylet/log_lib.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/skylet/log_lib.pyi +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/skylet/providers/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/skylet/providers/command_runner.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/skylet/providers/ibm/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/skylet/providers/ibm/node_provider.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/skylet/providers/ibm/utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/skylet/providers/ibm/vpc_provider.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/skylet/providers/scp/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/skylet/providers/scp/config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/skylet/providers/scp/node_provider.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/skylet/ray_patches/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/skylet/ray_patches/autoscaler.py.patch +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/skylet/ray_patches/cli.py.patch +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/skylet/ray_patches/command_runner.py.patch +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/skylet/ray_patches/log_monitor.py.patch +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/skylet/ray_patches/resource_demand_scheduler.py.patch +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/skylet/ray_patches/updater.py.patch +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/skylet/ray_patches/worker.py.patch +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/skylet/skylet.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/skylet/subprocess_daemon.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/task.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/templates/aws-ray.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/templates/azure-ray.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/templates/cudo-ray.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/templates/do-ray.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/templates/fluidstack-ray.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/templates/gcp-ray.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/templates/ibm-ray.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/templates/jobs-controller.yaml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/templates/kubernetes-ingress.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/templates/kubernetes-loadbalancer.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/templates/kubernetes-port-forward-proxy-command.sh +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/templates/kubernetes-ssh-jump.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/templates/lambda-ray.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/templates/local-ray.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/templates/nebius-ray.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/templates/oci-ray.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/templates/paperspace-ray.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/templates/runpod-ray.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/templates/scp-ray.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/templates/sky-serve-controller.yaml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/templates/skypilot-server-kubernetes-proxy.sh +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/templates/vast-ray.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/templates/vsphere-ray.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/usage/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/usage/constants.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/usage/usage_lib.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/utils/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/utils/accelerator_registry.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/utils/admin_policy_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/utils/annotations.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/utils/atomic.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/utils/cli_utils/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/utils/cli_utils/status_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/utils/cluster_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/utils/command_runner.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/utils/command_runner.pyi +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/utils/common.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/utils/common_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/utils/control_master_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/utils/dag_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/utils/db_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/utils/env_options.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/utils/kubernetes/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/utils/kubernetes/create_cluster.sh +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/utils/kubernetes/delete_cluster.sh +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/utils/kubernetes/deploy_remote_cluster.sh +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/utils/kubernetes/exec_kubeconfig_converter.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/utils/kubernetes/generate_kind_config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/utils/kubernetes/gpu_labeler.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/utils/kubernetes/k8s_gpu_labeler_job.yaml +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/utils/kubernetes/k8s_gpu_labeler_setup.yaml +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/utils/kubernetes/kubernetes_deploy_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/utils/kubernetes/ssh_jump_lifecycle_manager.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/utils/kubernetes_enums.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/utils/log_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/utils/message_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/utils/registry.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/utils/resources_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/utils/rich_console_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/utils/rich_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/utils/schemas.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/utils/status_lib.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/utils/subprocess_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/utils/timeline.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/utils/ux_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/utils/validator.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/skypilot_nightly.egg-info/dependency_links.txt +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/skypilot_nightly.egg-info/entry_points.txt +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/skypilot_nightly.egg-info/top_level.txt +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/tests/test_api.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/tests/test_failover.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/tests/test_global_user_state.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/tests/test_jobs.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/tests/test_jobs_and_serve.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/tests/test_list_accelerators.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/tests/test_optimizer_dryruns.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/tests/test_optimizer_random_dag.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/tests/test_serve_autoscaler.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/tests/test_smoke.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/tests/test_storage.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/tests/test_wheels.py +0 -0
- {skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/tests/test_yaml_parser.py +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: skypilot-nightly
|
3
|
-
Version: 1.0.0.
|
3
|
+
Version: 1.0.0.dev20250412
|
4
4
|
Summary: SkyPilot: An intercloud broker for the clouds
|
5
5
|
Author: SkyPilot Team
|
6
6
|
License: Apache 2.0
|
@@ -88,6 +88,7 @@ Requires-Dist: oci; extra == "oci"
|
|
88
88
|
Requires-Dist: ray[default]!=2.6.0,>=2.2.0; extra == "oci"
|
89
89
|
Provides-Extra: kubernetes
|
90
90
|
Requires-Dist: kubernetes!=32.0.0,>=20.0.0; extra == "kubernetes"
|
91
|
+
Requires-Dist: websockets; extra == "kubernetes"
|
91
92
|
Provides-Extra: remote
|
92
93
|
Requires-Dist: grpcio!=1.48.0,>=1.32.0; python_version < "3.10" and extra == "remote"
|
93
94
|
Requires-Dist: grpcio!=1.48.0,>=1.42.0; python_version >= "3.10" and extra == "remote"
|
@@ -145,6 +146,7 @@ Requires-Dist: ray[default]!=2.6.0,>=2.2.0; extra == "all"
|
|
145
146
|
Requires-Dist: oci; extra == "all"
|
146
147
|
Requires-Dist: ray[default]!=2.6.0,>=2.2.0; extra == "all"
|
147
148
|
Requires-Dist: kubernetes!=32.0.0,>=20.0.0; extra == "all"
|
149
|
+
Requires-Dist: websockets; extra == "all"
|
148
150
|
Requires-Dist: grpcio!=1.48.0,>=1.32.0; python_version < "3.10" and extra == "all"
|
149
151
|
Requires-Dist: grpcio!=1.48.0,>=1.42.0; python_version >= "3.10" and extra == "all"
|
150
152
|
Requires-Dist: protobuf!=3.19.5,>=3.15.3; extra == "all"
|
@@ -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 = 'ac3cbfe07c8c1129480d4facd683f4844ff6e1f7'
|
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.dev20250412'
|
39
39
|
__root_dir__ = os.path.dirname(os.path.abspath(__file__))
|
40
40
|
|
41
41
|
|
{skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/adaptors/oci.py
RENAMED
@@ -13,7 +13,7 @@ from sky.clouds.utils import oci_utils
|
|
13
13
|
# effect.
|
14
14
|
logging.getLogger('oci.circuit_breaker').setLevel(logging.WARNING)
|
15
15
|
|
16
|
-
|
16
|
+
OCI_CONFIG_PATH = '~/.oci/config'
|
17
17
|
ENV_VAR_OCI_CONFIG = 'OCI_CONFIG'
|
18
18
|
|
19
19
|
oci = common.LazyImport(
|
@@ -23,7 +23,7 @@ oci = common.LazyImport(
|
|
23
23
|
|
24
24
|
|
25
25
|
def get_config_file() -> str:
|
26
|
-
conf_file_path =
|
26
|
+
conf_file_path = OCI_CONFIG_PATH
|
27
27
|
config_path_via_env_var = os.environ.get(ENV_VAR_OCI_CONFIG)
|
28
28
|
if config_path_via_env_var is not None:
|
29
29
|
conf_file_path = config_path_via_env_var
|
{skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/authentication.py
RENAMED
@@ -382,10 +382,10 @@ def setup_kubernetes_authentication(config: Dict[str, Any]) -> Dict[str, Any]:
|
|
382
382
|
network_mode = kubernetes_enums.KubernetesNetworkingMode.from_str(
|
383
383
|
network_mode_str)
|
384
384
|
except ValueError as e:
|
385
|
-
# Add message saying "Please check: ~/.sky/
|
385
|
+
# Add message saying "Please check: ~/.sky/skyconfig.yaml" to the error
|
386
386
|
# message.
|
387
387
|
with ux_utils.print_exception_no_traceback():
|
388
|
-
raise ValueError(str(e) + ' Please check: ~/.sky/
|
388
|
+
raise ValueError(str(e) + ' Please check: ~/.sky/skyconfig.yaml.') \
|
389
389
|
from None
|
390
390
|
_, public_key_path = get_or_generate_keys()
|
391
391
|
|
@@ -682,7 +682,7 @@ def write_cluster_config(
|
|
682
682
|
ssh_proxy_command = ssh_proxy_command_config[region_name]
|
683
683
|
logger.debug(f'Using ssh_proxy_command: {ssh_proxy_command!r}')
|
684
684
|
|
685
|
-
# User-supplied global instance tags from ~/.sky/
|
685
|
+
# User-supplied global instance tags from ~/.sky/skyconfig.yaml.
|
686
686
|
labels = skypilot_config.get_nested((str(cloud).lower(), 'labels'), {})
|
687
687
|
# labels is a dict, which is guaranteed by the type check in
|
688
688
|
# schemas.py
|
@@ -1473,7 +1473,7 @@ class RetryingVmProvisioner(object):
|
|
1473
1473
|
f'invalid cloud credentials: '
|
1474
1474
|
f'{common_utils.format_exception(e)}')
|
1475
1475
|
except exceptions.InvalidCloudConfigs as e:
|
1476
|
-
# Failed due to invalid user configs in ~/.sky/
|
1476
|
+
# Failed due to invalid user configs in ~/.sky/skyconfig.yaml.
|
1477
1477
|
logger.warning(f'{common_utils.format_exception(e)}')
|
1478
1478
|
# We should block the entire cloud if the user config is
|
1479
1479
|
# invalid.
|
@@ -2065,10 +2065,10 @@ class RetryingVmProvisioner(object):
|
|
2065
2065
|
(clouds.Kubernetes, clouds.RunPod)) and
|
2066
2066
|
controller_utils.Controllers.from_name(cluster_name)
|
2067
2067
|
is not None):
|
2068
|
-
assert (clouds.CloudImplementationFeatures.
|
2068
|
+
assert (clouds.CloudImplementationFeatures.AUTOSTOP
|
2069
2069
|
in requested_features), requested_features
|
2070
2070
|
requested_features.remove(
|
2071
|
-
clouds.CloudImplementationFeatures.
|
2071
|
+
clouds.CloudImplementationFeatures.AUTOSTOP)
|
2072
2072
|
|
2073
2073
|
# Skip if to_provision.cloud does not support requested features
|
2074
2074
|
to_provision.cloud.check_features_are_supported(
|
@@ -142,7 +142,7 @@ def check_capabilities(
|
|
142
142
|
if disallowed_cloud_names:
|
143
143
|
disallowed_clouds_hint = (
|
144
144
|
'\nNote: The following clouds were disabled because they were not '
|
145
|
-
'included in allowed_clouds in ~/.sky/
|
145
|
+
'included in allowed_clouds in ~/.sky/skyconfig.yaml: '
|
146
146
|
f'{", ".join([c for c in disallowed_cloud_names])}')
|
147
147
|
if not all_enabled_clouds:
|
148
148
|
echo(
|
@@ -35,7 +35,8 @@ import sys
|
|
35
35
|
import textwrap
|
36
36
|
import traceback
|
37
37
|
import typing
|
38
|
-
from typing import Any, Callable, Dict, Generator, List, Optional, Tuple,
|
38
|
+
from typing import (Any, Callable, Dict, Generator, List, Optional, Set, Tuple,
|
39
|
+
Union)
|
39
40
|
|
40
41
|
import click
|
41
42
|
import colorama
|
@@ -134,49 +135,51 @@ def _get_cluster_records_and_set_ssh_config(
|
|
134
135
|
# Update the SSH config for all clusters
|
135
136
|
for record in cluster_records:
|
136
137
|
handle = record['handle']
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
if (handle is not None and handle.cached_external_ips is not None and
|
141
|
-
'credentials' in record):
|
142
|
-
credentials = record['credentials']
|
143
|
-
if isinstance(handle.launched_resources.cloud, clouds.Kubernetes):
|
144
|
-
# Replace the proxy command to proxy through the SkyPilot API
|
145
|
-
# server with websocket.
|
146
|
-
key_path = (
|
147
|
-
cluster_utils.SSHConfigHelper.generate_local_key_file(
|
148
|
-
handle.cluster_name, credentials))
|
149
|
-
# Instead of directly use websocket_proxy.py, we add an
|
150
|
-
# additional proxy, so that ssh can use the head pod in the
|
151
|
-
# cluster to jump to worker pods.
|
152
|
-
proxy_command = (
|
153
|
-
f'ssh -tt -i {key_path} '
|
154
|
-
'-o StrictHostKeyChecking=no '
|
155
|
-
'-o UserKnownHostsFile=/dev/null '
|
156
|
-
'-o IdentitiesOnly=yes '
|
157
|
-
'-W %h:%p '
|
158
|
-
f'{handle.ssh_user}@127.0.0.1 '
|
159
|
-
'-o ProxyCommand='
|
160
|
-
# TODO(zhwu): write the template to a temp file, don't use
|
161
|
-
# the one in skypilot repo, to avoid changing the file when
|
162
|
-
# updating skypilot.
|
163
|
-
f'\'{sys.executable} {sky.__root_dir__}/templates/'
|
164
|
-
f'websocket_proxy.py '
|
165
|
-
f'{server_common.get_server_url().split("://")[1]} '
|
166
|
-
f'{handle.cluster_name}\'')
|
167
|
-
credentials['ssh_proxy_command'] = proxy_command
|
168
|
-
cluster_utils.SSHConfigHelper.add_cluster(
|
169
|
-
handle.cluster_name,
|
170
|
-
handle.cached_external_ips,
|
171
|
-
credentials,
|
172
|
-
handle.cached_external_ssh_ports,
|
173
|
-
handle.docker_user,
|
174
|
-
handle.ssh_user,
|
175
|
-
)
|
176
|
-
else:
|
138
|
+
|
139
|
+
if not (handle is not None and handle.cached_external_ips is not None
|
140
|
+
and 'credentials' in record):
|
177
141
|
# If the cluster is not UP or does not have credentials available,
|
178
142
|
# we need to remove the cluster from the SSH config.
|
179
143
|
cluster_utils.SSHConfigHelper.remove_cluster(record['name'])
|
144
|
+
continue
|
145
|
+
|
146
|
+
# During the failover, even though a cluster does not exist, the handle
|
147
|
+
# can still exist in the record, and we check for credentials to avoid
|
148
|
+
# updating the SSH config for non-existent clusters.
|
149
|
+
credentials = record['credentials']
|
150
|
+
if isinstance(handle.launched_resources.cloud, clouds.Kubernetes):
|
151
|
+
# Replace the proxy command to proxy through the SkyPilot API
|
152
|
+
# server with websocket.
|
153
|
+
key_path = (cluster_utils.SSHConfigHelper.generate_local_key_file(
|
154
|
+
handle.cluster_name, credentials))
|
155
|
+
# Instead of directly use websocket_proxy.py, we add an
|
156
|
+
# additional proxy, so that ssh can use the head pod in the
|
157
|
+
# cluster to jump to worker pods.
|
158
|
+
proxy_command = (
|
159
|
+
f'ssh -tt -i {key_path} '
|
160
|
+
'-o StrictHostKeyChecking=no '
|
161
|
+
'-o UserKnownHostsFile=/dev/null '
|
162
|
+
'-o IdentitiesOnly=yes '
|
163
|
+
'-W %h:%p '
|
164
|
+
f'{handle.ssh_user}@127.0.0.1 '
|
165
|
+
'-o ProxyCommand='
|
166
|
+
# TODO(zhwu): write the template to a temp file, don't use
|
167
|
+
# the one in skypilot repo, to avoid changing the file when
|
168
|
+
# updating skypilot.
|
169
|
+
f'\'{sys.executable} {sky.__root_dir__}/templates/'
|
170
|
+
f'websocket_proxy.py '
|
171
|
+
f'{server_common.get_server_url()} '
|
172
|
+
f'{handle.cluster_name}\'')
|
173
|
+
credentials['ssh_proxy_command'] = proxy_command
|
174
|
+
|
175
|
+
cluster_utils.SSHConfigHelper.add_cluster(
|
176
|
+
handle.cluster_name,
|
177
|
+
handle.cached_external_ips,
|
178
|
+
credentials,
|
179
|
+
handle.cached_external_ssh_ports,
|
180
|
+
handle.docker_user,
|
181
|
+
handle.ssh_user,
|
182
|
+
)
|
180
183
|
|
181
184
|
# Clean up SSH configs for clusters that do not exist.
|
182
185
|
#
|
@@ -186,14 +189,15 @@ def _get_cluster_records_and_set_ssh_config(
|
|
186
189
|
# removing clusters, because SkyPilot has no idea whether to remove
|
187
190
|
# ssh config of a cluster from another user.
|
188
191
|
clusters_exists = set(record['name'] for record in cluster_records)
|
192
|
+
clusters_to_remove: Set[str] = set()
|
189
193
|
if clusters is not None:
|
190
|
-
|
191
|
-
if cluster not in clusters_exists:
|
192
|
-
cluster_utils.SSHConfigHelper.remove_cluster(cluster)
|
194
|
+
clusters_to_remove = set(clusters) - clusters_exists
|
193
195
|
elif all_users:
|
194
|
-
|
195
|
-
|
196
|
-
|
196
|
+
clusters_to_remove = set(cluster_utils.SSHConfigHelper.
|
197
|
+
list_cluster_names()) - clusters_exists
|
198
|
+
|
199
|
+
for cluster_name in clusters_to_remove:
|
200
|
+
cluster_utils.SSHConfigHelper.remove_cluster(cluster_name)
|
197
201
|
|
198
202
|
return cluster_records
|
199
203
|
|
@@ -35,7 +35,8 @@ import sys
|
|
35
35
|
import textwrap
|
36
36
|
import traceback
|
37
37
|
import typing
|
38
|
-
from typing import Any, Callable, Dict, Generator, List, Optional, Tuple,
|
38
|
+
from typing import (Any, Callable, Dict, Generator, List, Optional, Set, Tuple,
|
39
|
+
Union)
|
39
40
|
|
40
41
|
import click
|
41
42
|
import colorama
|
@@ -134,49 +135,51 @@ def _get_cluster_records_and_set_ssh_config(
|
|
134
135
|
# Update the SSH config for all clusters
|
135
136
|
for record in cluster_records:
|
136
137
|
handle = record['handle']
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
if (handle is not None and handle.cached_external_ips is not None and
|
141
|
-
'credentials' in record):
|
142
|
-
credentials = record['credentials']
|
143
|
-
if isinstance(handle.launched_resources.cloud, clouds.Kubernetes):
|
144
|
-
# Replace the proxy command to proxy through the SkyPilot API
|
145
|
-
# server with websocket.
|
146
|
-
key_path = (
|
147
|
-
cluster_utils.SSHConfigHelper.generate_local_key_file(
|
148
|
-
handle.cluster_name, credentials))
|
149
|
-
# Instead of directly use websocket_proxy.py, we add an
|
150
|
-
# additional proxy, so that ssh can use the head pod in the
|
151
|
-
# cluster to jump to worker pods.
|
152
|
-
proxy_command = (
|
153
|
-
f'ssh -tt -i {key_path} '
|
154
|
-
'-o StrictHostKeyChecking=no '
|
155
|
-
'-o UserKnownHostsFile=/dev/null '
|
156
|
-
'-o IdentitiesOnly=yes '
|
157
|
-
'-W %h:%p '
|
158
|
-
f'{handle.ssh_user}@127.0.0.1 '
|
159
|
-
'-o ProxyCommand='
|
160
|
-
# TODO(zhwu): write the template to a temp file, don't use
|
161
|
-
# the one in skypilot repo, to avoid changing the file when
|
162
|
-
# updating skypilot.
|
163
|
-
f'\'{sys.executable} {sky.__root_dir__}/templates/'
|
164
|
-
f'websocket_proxy.py '
|
165
|
-
f'{server_common.get_server_url().split("://")[1]} '
|
166
|
-
f'{handle.cluster_name}\'')
|
167
|
-
credentials['ssh_proxy_command'] = proxy_command
|
168
|
-
cluster_utils.SSHConfigHelper.add_cluster(
|
169
|
-
handle.cluster_name,
|
170
|
-
handle.cached_external_ips,
|
171
|
-
credentials,
|
172
|
-
handle.cached_external_ssh_ports,
|
173
|
-
handle.docker_user,
|
174
|
-
handle.ssh_user,
|
175
|
-
)
|
176
|
-
else:
|
138
|
+
|
139
|
+
if not (handle is not None and handle.cached_external_ips is not None
|
140
|
+
and 'credentials' in record):
|
177
141
|
# If the cluster is not UP or does not have credentials available,
|
178
142
|
# we need to remove the cluster from the SSH config.
|
179
143
|
cluster_utils.SSHConfigHelper.remove_cluster(record['name'])
|
144
|
+
continue
|
145
|
+
|
146
|
+
# During the failover, even though a cluster does not exist, the handle
|
147
|
+
# can still exist in the record, and we check for credentials to avoid
|
148
|
+
# updating the SSH config for non-existent clusters.
|
149
|
+
credentials = record['credentials']
|
150
|
+
if isinstance(handle.launched_resources.cloud, clouds.Kubernetes):
|
151
|
+
# Replace the proxy command to proxy through the SkyPilot API
|
152
|
+
# server with websocket.
|
153
|
+
key_path = (cluster_utils.SSHConfigHelper.generate_local_key_file(
|
154
|
+
handle.cluster_name, credentials))
|
155
|
+
# Instead of directly use websocket_proxy.py, we add an
|
156
|
+
# additional proxy, so that ssh can use the head pod in the
|
157
|
+
# cluster to jump to worker pods.
|
158
|
+
proxy_command = (
|
159
|
+
f'ssh -tt -i {key_path} '
|
160
|
+
'-o StrictHostKeyChecking=no '
|
161
|
+
'-o UserKnownHostsFile=/dev/null '
|
162
|
+
'-o IdentitiesOnly=yes '
|
163
|
+
'-W %h:%p '
|
164
|
+
f'{handle.ssh_user}@127.0.0.1 '
|
165
|
+
'-o ProxyCommand='
|
166
|
+
# TODO(zhwu): write the template to a temp file, don't use
|
167
|
+
# the one in skypilot repo, to avoid changing the file when
|
168
|
+
# updating skypilot.
|
169
|
+
f'\'{sys.executable} {sky.__root_dir__}/templates/'
|
170
|
+
f'websocket_proxy.py '
|
171
|
+
f'{server_common.get_server_url()} '
|
172
|
+
f'{handle.cluster_name}\'')
|
173
|
+
credentials['ssh_proxy_command'] = proxy_command
|
174
|
+
|
175
|
+
cluster_utils.SSHConfigHelper.add_cluster(
|
176
|
+
handle.cluster_name,
|
177
|
+
handle.cached_external_ips,
|
178
|
+
credentials,
|
179
|
+
handle.cached_external_ssh_ports,
|
180
|
+
handle.docker_user,
|
181
|
+
handle.ssh_user,
|
182
|
+
)
|
180
183
|
|
181
184
|
# Clean up SSH configs for clusters that do not exist.
|
182
185
|
#
|
@@ -186,14 +189,15 @@ def _get_cluster_records_and_set_ssh_config(
|
|
186
189
|
# removing clusters, because SkyPilot has no idea whether to remove
|
187
190
|
# ssh config of a cluster from another user.
|
188
191
|
clusters_exists = set(record['name'] for record in cluster_records)
|
192
|
+
clusters_to_remove: Set[str] = set()
|
189
193
|
if clusters is not None:
|
190
|
-
|
191
|
-
if cluster not in clusters_exists:
|
192
|
-
cluster_utils.SSHConfigHelper.remove_cluster(cluster)
|
194
|
+
clusters_to_remove = set(clusters) - clusters_exists
|
193
195
|
elif all_users:
|
194
|
-
|
195
|
-
|
196
|
-
|
196
|
+
clusters_to_remove = set(cluster_utils.SSHConfigHelper.
|
197
|
+
list_cluster_names()) - clusters_exists
|
198
|
+
|
199
|
+
for cluster_name in clusters_to_remove:
|
200
|
+
cluster_utils.SSHConfigHelper.remove_cluster(cluster_name)
|
197
201
|
|
198
202
|
return cluster_records
|
199
203
|
|
{skypilot_nightly-1.0.0.dev20250410 → skypilot_nightly-1.0.0.dev20250412}/sky/client/common.py
RENAMED
@@ -75,7 +75,8 @@ def download_logs_from_api_server(
|
|
75
75
|
body = payloads.DownloadBody(folder_paths=list(paths_on_api_server),)
|
76
76
|
response = requests.post(f'{server_common.get_server_url()}/download',
|
77
77
|
json=json.loads(body.model_dump_json()),
|
78
|
-
stream=True
|
78
|
+
stream=True,
|
79
|
+
cookies=server_common.get_api_cookie_jar())
|
79
80
|
if response.status_code == 200:
|
80
81
|
remote_home_path = response.headers.get('X-Home-Path')
|
81
82
|
assert remote_home_path is not None, response.headers
|
@@ -176,7 +177,8 @@ def _upload_chunk_with_retry(params: UploadChunkParams) -> None:
|
|
176
177
|
},
|
177
178
|
content=FileChunkIterator(f, _UPLOAD_CHUNK_BYTES,
|
178
179
|
params.chunk_index),
|
179
|
-
headers={'Content-Type': 'application/octet-stream'}
|
180
|
+
headers={'Content-Type': 'application/octet-stream'},
|
181
|
+
cookies=server_common.get_api_cookie_jar())
|
180
182
|
if response.status_code == 200:
|
181
183
|
data = response.json()
|
182
184
|
status = data.get('status')
|