skypilot-nightly 1.0.0.dev20250226__tar.gz → 1.0.0.dev20250228__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.dev20250226/skypilot_nightly.egg-info → skypilot_nightly-1.0.0.dev20250228}/PKG-INFO +2 -2
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/README.md +1 -1
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/__init__.py +2 -2
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/adaptors/kubernetes.py +4 -6
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/cli.py +59 -21
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/client/cli.py +59 -21
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/jobs/client/sdk.py +10 -4
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/jobs/constants.py +1 -1
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/jobs/dashboard/dashboard.py +4 -1
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/jobs/scheduler.py +23 -8
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/jobs/server/core.py +33 -9
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/jobs/server/server.py +9 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/jobs/state.py +30 -10
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/jobs/utils.py +57 -12
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/server/constants.py +1 -1
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/server/requests/payloads.py +2 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/templates/jobs-controller.yaml.j2 +8 -1
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228/skypilot_nightly.egg-info}/PKG-INFO +2 -2
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/LICENSE +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/MANIFEST.in +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/pyproject.toml +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/setup.cfg +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/setup.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/adaptors/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/adaptors/aws.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/adaptors/azure.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/adaptors/cloudflare.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/adaptors/common.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/adaptors/cudo.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/adaptors/do.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/adaptors/docker.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/adaptors/gcp.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/adaptors/ibm.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/adaptors/nebius.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/adaptors/oci.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/adaptors/runpod.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/adaptors/vast.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/adaptors/vsphere.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/admin_policy.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/authentication.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/backends/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/backends/backend.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/backends/backend_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/backends/cloud_vm_ray_backend.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/backends/docker_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/backends/local_docker_backend.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/backends/monkey_patches/monkey_patch_ray_up.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/backends/wheel_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/benchmark/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/benchmark/benchmark_state.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/benchmark/benchmark_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/check.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/client/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/client/common.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/client/sdk.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/cloud_stores.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/clouds/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/clouds/aws.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/clouds/azure.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/clouds/cloud.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/clouds/cudo.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/clouds/do.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/clouds/fluidstack.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/clouds/gcp.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/clouds/ibm.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/clouds/kubernetes.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/clouds/lambda_cloud.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/clouds/nebius.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/clouds/oci.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/clouds/paperspace.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/clouds/runpod.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/clouds/scp.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/clouds/service_catalog/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/clouds/service_catalog/aws_catalog.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/clouds/service_catalog/azure_catalog.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/clouds/service_catalog/common.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/clouds/service_catalog/config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/clouds/service_catalog/constants.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/clouds/service_catalog/cudo_catalog.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/clouds/service_catalog/data_fetchers/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/clouds/service_catalog/data_fetchers/fetch_aws.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/clouds/service_catalog/data_fetchers/fetch_azure.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/clouds/service_catalog/data_fetchers/fetch_cudo.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/clouds/service_catalog/data_fetchers/fetch_fluidstack.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/clouds/service_catalog/data_fetchers/fetch_gcp.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/clouds/service_catalog/data_fetchers/fetch_lambda_cloud.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/clouds/service_catalog/data_fetchers/fetch_vast.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/clouds/service_catalog/data_fetchers/fetch_vsphere.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/clouds/service_catalog/do_catalog.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/clouds/service_catalog/fluidstack_catalog.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/clouds/service_catalog/gcp_catalog.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/clouds/service_catalog/ibm_catalog.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/clouds/service_catalog/kubernetes_catalog.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/clouds/service_catalog/lambda_catalog.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/clouds/service_catalog/nebius_catalog.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/clouds/service_catalog/oci_catalog.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/clouds/service_catalog/paperspace_catalog.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/clouds/service_catalog/runpod_catalog.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/clouds/service_catalog/scp_catalog.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/clouds/service_catalog/vast_catalog.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/clouds/service_catalog/vsphere_catalog.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/clouds/utils/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/clouds/utils/aws_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/clouds/utils/azure_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/clouds/utils/gcp_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/clouds/utils/oci_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/clouds/utils/scp_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/clouds/vast.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/clouds/vsphere.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/core.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/dag.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/data/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/data/data_transfer.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/data/data_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/data/mounting_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/data/storage.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/data/storage_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/exceptions.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/execution.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/global_user_state.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/jobs/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/jobs/client/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/jobs/controller.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/jobs/dashboard/static/favicon.ico +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/jobs/dashboard/templates/index.html +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/jobs/recovery_strategy.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/jobs/server/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/jobs/server/dashboard_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/models.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/optimizer.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/provision/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/provision/aws/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/provision/aws/config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/provision/aws/instance.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/provision/aws/utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/provision/azure/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/provision/azure/azure-config-template.json +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/provision/azure/config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/provision/azure/instance.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/provision/common.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/provision/constants.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/provision/cudo/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/provision/cudo/config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/provision/cudo/cudo_machine_type.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/provision/cudo/cudo_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/provision/cudo/cudo_wrapper.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/provision/cudo/instance.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/provision/do/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/provision/do/config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/provision/do/constants.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/provision/do/instance.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/provision/do/utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/provision/docker_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/provision/fluidstack/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/provision/fluidstack/config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/provision/fluidstack/fluidstack_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/provision/fluidstack/instance.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/provision/gcp/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/provision/gcp/config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/provision/gcp/constants.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/provision/gcp/instance.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/provision/gcp/instance_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/provision/gcp/mig_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/provision/instance_setup.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/provision/kubernetes/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/provision/kubernetes/config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/provision/kubernetes/constants.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/provision/kubernetes/instance.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/provision/kubernetes/manifests/smarter-device-manager-configmap.yaml +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/provision/kubernetes/manifests/smarter-device-manager-daemonset.yaml +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/provision/kubernetes/network.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/provision/kubernetes/network_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/provision/kubernetes/utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/provision/lambda_cloud/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/provision/lambda_cloud/config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/provision/lambda_cloud/instance.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/provision/lambda_cloud/lambda_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/provision/logging.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/provision/metadata_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/provision/nebius/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/provision/nebius/config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/provision/nebius/instance.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/provision/nebius/utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/provision/oci/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/provision/oci/config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/provision/oci/instance.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/provision/oci/query_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/provision/paperspace/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/provision/paperspace/config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/provision/paperspace/constants.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/provision/paperspace/instance.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/provision/paperspace/utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/provision/provisioner.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/provision/runpod/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/provision/runpod/api/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/provision/runpod/api/commands.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/provision/runpod/api/pods.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/provision/runpod/config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/provision/runpod/instance.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/provision/runpod/utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/provision/vast/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/provision/vast/config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/provision/vast/instance.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/provision/vast/utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/provision/vsphere/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/provision/vsphere/common/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/provision/vsphere/common/cls_api_client.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/provision/vsphere/common/cls_api_helper.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/provision/vsphere/common/custom_script.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/provision/vsphere/common/id_generator.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/provision/vsphere/common/metadata_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/provision/vsphere/common/service_manager.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/provision/vsphere/common/service_manager_factory.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/provision/vsphere/common/ssl_helper.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/provision/vsphere/common/vapiconnect.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/provision/vsphere/common/vim_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/provision/vsphere/config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/provision/vsphere/instance.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/provision/vsphere/vsphere_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/resources.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/serve/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/serve/autoscalers.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/serve/client/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/serve/client/sdk.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/serve/constants.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/serve/controller.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/serve/load_balancer.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/serve/load_balancing_policies.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/serve/replica_managers.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/serve/serve_state.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/serve/serve_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/serve/server/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/serve/server/core.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/serve/server/server.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/serve/service.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/serve/service_spec.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/server/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/server/common.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/server/html/log.html +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/server/requests/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/server/requests/executor.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/server/requests/queues/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/server/requests/queues/mp_queue.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/server/requests/requests.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/server/requests/serializers/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/server/requests/serializers/decoders.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/server/requests/serializers/encoders.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/server/server.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/server/stream_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/setup_files/MANIFEST.in +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/setup_files/dependencies.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/setup_files/setup.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/sky_logging.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/skylet/LICENSE +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/skylet/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/skylet/attempt_skylet.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/skylet/autostop_lib.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/skylet/configs.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/skylet/constants.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/skylet/events.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/skylet/job_lib.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/skylet/log_lib.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/skylet/log_lib.pyi +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/skylet/providers/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/skylet/providers/command_runner.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/skylet/providers/ibm/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/skylet/providers/ibm/node_provider.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/skylet/providers/ibm/utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/skylet/providers/ibm/vpc_provider.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/skylet/providers/scp/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/skylet/providers/scp/config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/skylet/providers/scp/node_provider.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/skylet/ray_patches/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/skylet/ray_patches/autoscaler.py.patch +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/skylet/ray_patches/cli.py.patch +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/skylet/ray_patches/command_runner.py.patch +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/skylet/ray_patches/log_monitor.py.patch +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/skylet/ray_patches/resource_demand_scheduler.py.patch +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/skylet/ray_patches/updater.py.patch +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/skylet/ray_patches/worker.py.patch +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/skylet/skylet.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/skylet/subprocess_daemon.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/skypilot_config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/task.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/templates/aws-ray.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/templates/azure-ray.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/templates/cudo-ray.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/templates/do-ray.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/templates/fluidstack-ray.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/templates/gcp-ray.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/templates/ibm-ray.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/templates/kubernetes-ingress.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/templates/kubernetes-loadbalancer.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/templates/kubernetes-port-forward-proxy-command.sh +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/templates/kubernetes-ray.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/templates/kubernetes-ssh-jump.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/templates/lambda-ray.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/templates/local-ray.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/templates/nebius-ray.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/templates/oci-ray.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/templates/paperspace-ray.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/templates/runpod-ray.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/templates/scp-ray.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/templates/sky-serve-controller.yaml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/templates/skypilot-server-kubernetes-proxy.sh +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/templates/vast-ray.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/templates/vsphere-ray.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/templates/websocket_proxy.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/usage/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/usage/constants.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/usage/usage_lib.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/utils/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/utils/accelerator_registry.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/utils/admin_policy_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/utils/annotations.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/utils/cli_utils/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/utils/cli_utils/status_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/utils/cluster_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/utils/command_runner.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/utils/command_runner.pyi +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/utils/common.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/utils/common_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/utils/config_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/utils/control_master_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/utils/controller_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/utils/dag_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/utils/db_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/utils/env_options.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/utils/kubernetes/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/utils/kubernetes/create_cluster.sh +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/utils/kubernetes/delete_cluster.sh +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/utils/kubernetes/deploy_remote_cluster.sh +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/utils/kubernetes/exec_kubeconfig_converter.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/utils/kubernetes/generate_kind_config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/utils/kubernetes/generate_kubeconfig.sh +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/utils/kubernetes/gpu_labeler.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/utils/kubernetes/k8s_gpu_labeler_job.yaml +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/utils/kubernetes/k8s_gpu_labeler_setup.yaml +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/utils/kubernetes/kubernetes_deploy_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/utils/kubernetes/rsync_helper.sh +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/utils/kubernetes/ssh_jump_lifecycle_manager.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/utils/kubernetes_enums.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/utils/log_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/utils/message_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/utils/registry.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/utils/resources_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/utils/rich_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/utils/schemas.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/utils/status_lib.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/utils/subprocess_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/utils/timeline.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/utils/ux_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/utils/validator.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/skypilot_nightly.egg-info/SOURCES.txt +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/skypilot_nightly.egg-info/dependency_links.txt +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/skypilot_nightly.egg-info/entry_points.txt +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/skypilot_nightly.egg-info/requires.txt +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/skypilot_nightly.egg-info/top_level.txt +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/tests/test_api.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/tests/test_cli.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/tests/test_config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/tests/test_global_user_state.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/tests/test_jobs.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/tests/test_jobs_and_serve.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/tests/test_list_accelerators.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/tests/test_optimizer_dryruns.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/tests/test_optimizer_random_dag.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/tests/test_serve_autoscaler.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/tests/test_smoke.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/tests/test_storage.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/tests/test_wheels.py +0 -0
- {skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/tests/test_yaml_parser.py +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.2
|
2
2
|
Name: skypilot-nightly
|
3
|
-
Version: 1.0.0.
|
3
|
+
Version: 1.0.0.dev20250228
|
4
4
|
Summary: SkyPilot: An intercloud broker for the clouds
|
5
5
|
Author: SkyPilot Team
|
6
6
|
License: Apache 2.0
|
@@ -169,7 +169,7 @@ Dynamic: summary
|
|
169
169
|
|
170
170
|
<p align="center">
|
171
171
|
<a href="https://docs.skypilot.co/">
|
172
|
-
<img alt="Documentation" src="https://
|
172
|
+
<img alt="Documentation" src="https://img.shields.io/badge/docs-gray?logo=readthedocs&logoColor=f5f5f5">
|
173
173
|
</a>
|
174
174
|
|
175
175
|
<a href="https://github.com/skypilot-org/skypilot/releases">
|
@@ -7,7 +7,7 @@
|
|
7
7
|
|
8
8
|
<p align="center">
|
9
9
|
<a href="https://docs.skypilot.co/">
|
10
|
-
<img alt="Documentation" src="https://
|
10
|
+
<img alt="Documentation" src="https://img.shields.io/badge/docs-gray?logo=readthedocs&logoColor=f5f5f5">
|
11
11
|
</a>
|
12
12
|
|
13
13
|
<a href="https://github.com/skypilot-org/skypilot/releases">
|
@@ -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 = '0f178b2af47ec2b185bc685cce6965c675613cc7'
|
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.dev20250228'
|
39
39
|
__root_dir__ = os.path.dirname(os.path.abspath(__file__))
|
40
40
|
|
41
41
|
|
{skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/adaptors/kubernetes.py
RENAMED
@@ -6,7 +6,7 @@ from typing import Any, Callable, Optional, Set
|
|
6
6
|
from sky.adaptors import common
|
7
7
|
from sky.sky_logging import set_logging_level
|
8
8
|
from sky.utils import annotations
|
9
|
-
from sky.utils import
|
9
|
+
from sky.utils import common_utils
|
10
10
|
from sky.utils import ux_utils
|
11
11
|
|
12
12
|
_IMPORT_ERROR_MESSAGE = ('Failed to import dependencies for Kubernetes. '
|
@@ -69,22 +69,20 @@ def _load_config(context: Optional[str] = None):
|
|
69
69
|
try:
|
70
70
|
kubernetes.config.load_kube_config(context=context)
|
71
71
|
except kubernetes.config.config_exception.ConfigException as e:
|
72
|
-
suffix =
|
73
|
-
if env_options.Options.SHOW_DEBUG_INFO.get():
|
74
|
-
suffix += f' Error: {str(e)}'
|
72
|
+
suffix = common_utils.format_exception(e, use_bracket=True)
|
75
73
|
# Check if exception was due to no current-context
|
76
74
|
if 'Expected key current-context' in str(e):
|
77
75
|
err_str = (
|
78
76
|
f'Failed to load Kubernetes configuration for {context!r}. '
|
79
77
|
'Kubeconfig does not contain any valid context(s).'
|
80
|
-
f'{suffix}\n'
|
78
|
+
f'\n{suffix}\n'
|
81
79
|
' If you were running a local Kubernetes '
|
82
80
|
'cluster, run `sky local up` to start the cluster.')
|
83
81
|
else:
|
84
82
|
err_str = (
|
85
83
|
f'Failed to load Kubernetes configuration for {context!r}. '
|
86
84
|
'Please check if your kubeconfig file exists at '
|
87
|
-
f'~/.kube/config and is valid
|
85
|
+
f'~/.kube/config and is valid.\n{suffix}')
|
88
86
|
err_str += '\nTo disable Kubernetes for SkyPilot: run `sky check`.'
|
89
87
|
with ux_utils.print_exception_no_traceback():
|
90
88
|
raise ValueError(err_str) from None
|
@@ -133,7 +133,11 @@ def _get_cluster_records_and_set_ssh_config(
|
|
133
133
|
# Update the SSH config for all clusters
|
134
134
|
for record in cluster_records:
|
135
135
|
handle = record['handle']
|
136
|
-
|
136
|
+
# During the failover, even though a cluster does not exist, the handle
|
137
|
+
# can still exist in the record, and we check for credentials to avoid
|
138
|
+
# updating the SSH config for non-existent clusters.
|
139
|
+
if (handle is not None and handle.cached_external_ips is not None and
|
140
|
+
'credentials' in record):
|
137
141
|
credentials = record['credentials']
|
138
142
|
if isinstance(handle.launched_resources.cloud, clouds.Kubernetes):
|
139
143
|
# Replace the proxy command to proxy through the SkyPilot API
|
@@ -169,9 +173,9 @@ def _get_cluster_records_and_set_ssh_config(
|
|
169
173
|
handle.ssh_user,
|
170
174
|
)
|
171
175
|
else:
|
172
|
-
# If the cluster is not UP or does not have
|
173
|
-
# the cluster from the SSH config.
|
174
|
-
cluster_utils.SSHConfigHelper.remove_cluster(
|
176
|
+
# If the cluster is not UP or does not have credentials available,
|
177
|
+
# we need to remove the cluster from the SSH config.
|
178
|
+
cluster_utils.SSHConfigHelper.remove_cluster(record['name'])
|
175
179
|
|
176
180
|
# Clean up SSH configs for clusters that do not exist.
|
177
181
|
#
|
@@ -1379,12 +1383,14 @@ def exec(cluster: Optional[str], cluster_option: Optional[str],
|
|
1379
1383
|
def _handle_jobs_queue_request(
|
1380
1384
|
request_id: str,
|
1381
1385
|
show_all: bool,
|
1386
|
+
show_user: bool,
|
1382
1387
|
limit_num_jobs_to_show: bool = False,
|
1383
1388
|
is_called_by_user: bool = False) -> Tuple[Optional[int], str]:
|
1384
1389
|
"""Get the in-progress managed jobs.
|
1385
1390
|
|
1386
1391
|
Args:
|
1387
1392
|
show_all: Show all information of each job (e.g., region, price).
|
1393
|
+
show_user: Show the user who submitted the job.
|
1388
1394
|
limit_num_jobs_to_show: If True, limit the number of jobs to show to
|
1389
1395
|
_NUM_MANAGED_JOBS_TO_SHOW_IN_STATUS, which is mainly used by
|
1390
1396
|
`sky status`.
|
@@ -1452,6 +1458,7 @@ def _handle_jobs_queue_request(
|
|
1452
1458
|
if limit_num_jobs_to_show else None)
|
1453
1459
|
msg = managed_jobs.format_job_table(managed_jobs_,
|
1454
1460
|
show_all=show_all,
|
1461
|
+
show_user=show_user,
|
1455
1462
|
max_jobs=max_jobs_to_show)
|
1456
1463
|
return num_in_progress_jobs, msg
|
1457
1464
|
|
@@ -1561,7 +1568,9 @@ def _status_kubernetes(show_all: bool):
|
|
1561
1568
|
click.echo(f'\n{colorama.Fore.CYAN}{colorama.Style.BRIGHT}'
|
1562
1569
|
f'Managed jobs'
|
1563
1570
|
f'{colorama.Style.RESET_ALL}')
|
1564
|
-
msg = managed_jobs.format_job_table(all_jobs,
|
1571
|
+
msg = managed_jobs.format_job_table(all_jobs,
|
1572
|
+
show_all=show_all,
|
1573
|
+
show_user=False)
|
1565
1574
|
click.echo(msg)
|
1566
1575
|
if any(['sky-serve-controller' in c.cluster_name for c in all_clusters]):
|
1567
1576
|
# TODO: Parse serve controllers and show services separately.
|
@@ -1779,7 +1788,8 @@ def status(verbose: bool, refresh: bool, ip: bool, endpoints: bool,
|
|
1779
1788
|
show_managed_jobs = show_managed_jobs and not any([clusters, ip, endpoints])
|
1780
1789
|
if show_managed_jobs:
|
1781
1790
|
managed_jobs_queue_request_id = managed_jobs.queue(refresh=False,
|
1782
|
-
skip_finished=True
|
1791
|
+
skip_finished=True,
|
1792
|
+
all_users=all_users)
|
1783
1793
|
show_endpoints = endpoints or endpoint is not None
|
1784
1794
|
show_single_endpoint = endpoint is not None
|
1785
1795
|
show_services = show_services and not any([clusters, ip, endpoints])
|
@@ -1859,6 +1869,7 @@ def status(verbose: bool, refresh: bool, ip: bool, endpoints: bool,
|
|
1859
1869
|
num_in_progress_jobs, msg = _handle_jobs_queue_request(
|
1860
1870
|
managed_jobs_queue_request_id,
|
1861
1871
|
show_all=False,
|
1872
|
+
show_user=False,
|
1862
1873
|
limit_num_jobs_to_show=not all,
|
1863
1874
|
is_called_by_user=False)
|
1864
1875
|
except KeyboardInterrupt:
|
@@ -2751,7 +2762,7 @@ def start(
|
|
2751
2762
|
def down(
|
2752
2763
|
clusters: List[str],
|
2753
2764
|
all: bool, # pylint: disable=redefined-builtin
|
2754
|
-
all_users: bool,
|
2765
|
+
all_users: bool,
|
2755
2766
|
yes: bool,
|
2756
2767
|
purge: bool,
|
2757
2768
|
async_call: bool,
|
@@ -2812,7 +2823,9 @@ def _hint_or_raise_for_down_jobs_controller(controller_name: str,
|
|
2812
2823
|
with rich_utils.client_status(
|
2813
2824
|
'[bold cyan]Checking for in-progress managed jobs[/]'):
|
2814
2825
|
try:
|
2815
|
-
request_id = managed_jobs.queue(refresh=False,
|
2826
|
+
request_id = managed_jobs.queue(refresh=False,
|
2827
|
+
skip_finished=True,
|
2828
|
+
all_users=True)
|
2816
2829
|
managed_jobs_ = sdk.stream_and_get(request_id)
|
2817
2830
|
except exceptions.ClusterNotUpError as e:
|
2818
2831
|
if controller.value.connection_error_hint in str(e):
|
@@ -2836,7 +2849,9 @@ def _hint_or_raise_for_down_jobs_controller(controller_name: str,
|
|
2836
2849
|
'jobs (output of `sky jobs queue`) will be lost.')
|
2837
2850
|
click.echo(msg)
|
2838
2851
|
if managed_jobs_:
|
2839
|
-
job_table = managed_jobs.format_job_table(managed_jobs_,
|
2852
|
+
job_table = managed_jobs.format_job_table(managed_jobs_,
|
2853
|
+
show_all=False,
|
2854
|
+
show_user=True)
|
2840
2855
|
msg = controller.value.decline_down_for_dirty_controller_hint
|
2841
2856
|
# Add prefix to each line to align with the bullet point.
|
2842
2857
|
msg += '\n'.join(
|
@@ -3905,9 +3920,16 @@ def jobs_launch(
|
|
3905
3920
|
is_flag=True,
|
3906
3921
|
required=False,
|
3907
3922
|
help='Show only pending/running jobs\' information.')
|
3923
|
+
@click.option('--all-users',
|
3924
|
+
'-u',
|
3925
|
+
default=False,
|
3926
|
+
is_flag=True,
|
3927
|
+
required=False,
|
3928
|
+
help='Show jobs from all users.')
|
3908
3929
|
@usage_lib.entrypoint
|
3909
3930
|
# pylint: disable=redefined-builtin
|
3910
|
-
def jobs_queue(verbose: bool, refresh: bool, skip_finished: bool
|
3931
|
+
def jobs_queue(verbose: bool, refresh: bool, skip_finished: bool,
|
3932
|
+
all_users: bool):
|
3911
3933
|
"""Show statuses of managed jobs.
|
3912
3934
|
|
3913
3935
|
Each managed jobs can have one of the following statuses:
|
@@ -3964,9 +3986,10 @@ def jobs_queue(verbose: bool, refresh: bool, skip_finished: bool):
|
|
3964
3986
|
click.secho('Fetching managed job statuses...', fg='cyan')
|
3965
3987
|
with rich_utils.client_status('[cyan]Checking managed jobs[/]'):
|
3966
3988
|
managed_jobs_request_id = managed_jobs.queue(
|
3967
|
-
refresh=refresh, skip_finished=skip_finished)
|
3989
|
+
refresh=refresh, skip_finished=skip_finished, all_users=all_users)
|
3968
3990
|
_, msg = _handle_jobs_queue_request(managed_jobs_request_id,
|
3969
3991
|
show_all=verbose,
|
3992
|
+
show_user=all_users,
|
3970
3993
|
is_called_by_user=True)
|
3971
3994
|
if not skip_finished:
|
3972
3995
|
in_progress_only_hint = ''
|
@@ -3989,16 +4012,23 @@ def jobs_queue(verbose: bool, refresh: bool, skip_finished: bool):
|
|
3989
4012
|
is_flag=True,
|
3990
4013
|
default=False,
|
3991
4014
|
required=False,
|
3992
|
-
help='Cancel all managed jobs.')
|
4015
|
+
help='Cancel all managed jobs for the current user.')
|
3993
4016
|
@click.option('--yes',
|
3994
4017
|
'-y',
|
3995
4018
|
is_flag=True,
|
3996
4019
|
default=False,
|
3997
4020
|
required=False,
|
3998
4021
|
help='Skip confirmation prompt.')
|
4022
|
+
@click.option('--all-users',
|
4023
|
+
'-u',
|
4024
|
+
is_flag=True,
|
4025
|
+
default=False,
|
4026
|
+
required=False,
|
4027
|
+
help='Cancel all managed jobs from all users.')
|
3999
4028
|
@usage_lib.entrypoint
|
4000
4029
|
# pylint: disable=redefined-builtin
|
4001
|
-
def jobs_cancel(name: Optional[str], job_ids: Tuple[int], all: bool, yes: bool
|
4030
|
+
def jobs_cancel(name: Optional[str], job_ids: Tuple[int], all: bool, yes: bool,
|
4031
|
+
all_users: bool):
|
4002
4032
|
"""Cancel managed jobs.
|
4003
4033
|
|
4004
4034
|
You can provide either a job name or a list of job IDs to be cancelled.
|
@@ -4015,25 +4045,33 @@ def jobs_cancel(name: Optional[str], job_ids: Tuple[int], all: bool, yes: bool):
|
|
4015
4045
|
$ sky jobs cancel 1 2 3
|
4016
4046
|
"""
|
4017
4047
|
job_id_str = ','.join(map(str, job_ids))
|
4018
|
-
if sum([bool(job_ids), name is not None, all]) != 1:
|
4019
|
-
|
4020
|
-
|
4021
|
-
|
4048
|
+
if sum([bool(job_ids), name is not None, all or all_users]) != 1:
|
4049
|
+
arguments = []
|
4050
|
+
arguments += [f'--job-ids {job_id_str}'] if job_ids else []
|
4051
|
+
arguments += [f'--name {name}'] if name is not None else []
|
4052
|
+
arguments += ['--all'] if all else []
|
4053
|
+
arguments += ['--all-users'] if all_users else []
|
4022
4054
|
raise click.UsageError(
|
4023
|
-
'Can only specify one of JOB_IDS
|
4024
|
-
f'Provided {
|
4055
|
+
'Can only specify one of JOB_IDS, --name, or --all/--all-users. '
|
4056
|
+
f'Provided {" ".join(arguments)!r}.')
|
4025
4057
|
|
4026
4058
|
if not yes:
|
4027
4059
|
job_identity_str = (f'managed jobs with IDs {job_id_str}'
|
4028
4060
|
if job_ids else repr(name))
|
4029
|
-
if
|
4061
|
+
if all_users:
|
4062
|
+
job_identity_str = 'all managed jobs FOR ALL USERS'
|
4063
|
+
elif all:
|
4030
4064
|
job_identity_str = 'all managed jobs'
|
4031
4065
|
click.confirm(f'Cancelling {job_identity_str}. Proceed?',
|
4032
4066
|
default=True,
|
4033
4067
|
abort=True,
|
4034
4068
|
show_default=True)
|
4035
4069
|
|
4036
|
-
sdk.stream_and_get(
|
4070
|
+
sdk.stream_and_get(
|
4071
|
+
managed_jobs.cancel(job_ids=job_ids,
|
4072
|
+
name=name,
|
4073
|
+
all=all,
|
4074
|
+
all_users=all_users))
|
4037
4075
|
|
4038
4076
|
|
4039
4077
|
@jobs.command('logs', cls=_DocumentedCodeCommand)
|
@@ -133,7 +133,11 @@ def _get_cluster_records_and_set_ssh_config(
|
|
133
133
|
# Update the SSH config for all clusters
|
134
134
|
for record in cluster_records:
|
135
135
|
handle = record['handle']
|
136
|
-
|
136
|
+
# During the failover, even though a cluster does not exist, the handle
|
137
|
+
# can still exist in the record, and we check for credentials to avoid
|
138
|
+
# updating the SSH config for non-existent clusters.
|
139
|
+
if (handle is not None and handle.cached_external_ips is not None and
|
140
|
+
'credentials' in record):
|
137
141
|
credentials = record['credentials']
|
138
142
|
if isinstance(handle.launched_resources.cloud, clouds.Kubernetes):
|
139
143
|
# Replace the proxy command to proxy through the SkyPilot API
|
@@ -169,9 +173,9 @@ def _get_cluster_records_and_set_ssh_config(
|
|
169
173
|
handle.ssh_user,
|
170
174
|
)
|
171
175
|
else:
|
172
|
-
# If the cluster is not UP or does not have
|
173
|
-
# the cluster from the SSH config.
|
174
|
-
cluster_utils.SSHConfigHelper.remove_cluster(
|
176
|
+
# If the cluster is not UP or does not have credentials available,
|
177
|
+
# we need to remove the cluster from the SSH config.
|
178
|
+
cluster_utils.SSHConfigHelper.remove_cluster(record['name'])
|
175
179
|
|
176
180
|
# Clean up SSH configs for clusters that do not exist.
|
177
181
|
#
|
@@ -1379,12 +1383,14 @@ def exec(cluster: Optional[str], cluster_option: Optional[str],
|
|
1379
1383
|
def _handle_jobs_queue_request(
|
1380
1384
|
request_id: str,
|
1381
1385
|
show_all: bool,
|
1386
|
+
show_user: bool,
|
1382
1387
|
limit_num_jobs_to_show: bool = False,
|
1383
1388
|
is_called_by_user: bool = False) -> Tuple[Optional[int], str]:
|
1384
1389
|
"""Get the in-progress managed jobs.
|
1385
1390
|
|
1386
1391
|
Args:
|
1387
1392
|
show_all: Show all information of each job (e.g., region, price).
|
1393
|
+
show_user: Show the user who submitted the job.
|
1388
1394
|
limit_num_jobs_to_show: If True, limit the number of jobs to show to
|
1389
1395
|
_NUM_MANAGED_JOBS_TO_SHOW_IN_STATUS, which is mainly used by
|
1390
1396
|
`sky status`.
|
@@ -1452,6 +1458,7 @@ def _handle_jobs_queue_request(
|
|
1452
1458
|
if limit_num_jobs_to_show else None)
|
1453
1459
|
msg = managed_jobs.format_job_table(managed_jobs_,
|
1454
1460
|
show_all=show_all,
|
1461
|
+
show_user=show_user,
|
1455
1462
|
max_jobs=max_jobs_to_show)
|
1456
1463
|
return num_in_progress_jobs, msg
|
1457
1464
|
|
@@ -1561,7 +1568,9 @@ def _status_kubernetes(show_all: bool):
|
|
1561
1568
|
click.echo(f'\n{colorama.Fore.CYAN}{colorama.Style.BRIGHT}'
|
1562
1569
|
f'Managed jobs'
|
1563
1570
|
f'{colorama.Style.RESET_ALL}')
|
1564
|
-
msg = managed_jobs.format_job_table(all_jobs,
|
1571
|
+
msg = managed_jobs.format_job_table(all_jobs,
|
1572
|
+
show_all=show_all,
|
1573
|
+
show_user=False)
|
1565
1574
|
click.echo(msg)
|
1566
1575
|
if any(['sky-serve-controller' in c.cluster_name for c in all_clusters]):
|
1567
1576
|
# TODO: Parse serve controllers and show services separately.
|
@@ -1779,7 +1788,8 @@ def status(verbose: bool, refresh: bool, ip: bool, endpoints: bool,
|
|
1779
1788
|
show_managed_jobs = show_managed_jobs and not any([clusters, ip, endpoints])
|
1780
1789
|
if show_managed_jobs:
|
1781
1790
|
managed_jobs_queue_request_id = managed_jobs.queue(refresh=False,
|
1782
|
-
skip_finished=True
|
1791
|
+
skip_finished=True,
|
1792
|
+
all_users=all_users)
|
1783
1793
|
show_endpoints = endpoints or endpoint is not None
|
1784
1794
|
show_single_endpoint = endpoint is not None
|
1785
1795
|
show_services = show_services and not any([clusters, ip, endpoints])
|
@@ -1859,6 +1869,7 @@ def status(verbose: bool, refresh: bool, ip: bool, endpoints: bool,
|
|
1859
1869
|
num_in_progress_jobs, msg = _handle_jobs_queue_request(
|
1860
1870
|
managed_jobs_queue_request_id,
|
1861
1871
|
show_all=False,
|
1872
|
+
show_user=False,
|
1862
1873
|
limit_num_jobs_to_show=not all,
|
1863
1874
|
is_called_by_user=False)
|
1864
1875
|
except KeyboardInterrupt:
|
@@ -2751,7 +2762,7 @@ def start(
|
|
2751
2762
|
def down(
|
2752
2763
|
clusters: List[str],
|
2753
2764
|
all: bool, # pylint: disable=redefined-builtin
|
2754
|
-
all_users: bool,
|
2765
|
+
all_users: bool,
|
2755
2766
|
yes: bool,
|
2756
2767
|
purge: bool,
|
2757
2768
|
async_call: bool,
|
@@ -2812,7 +2823,9 @@ def _hint_or_raise_for_down_jobs_controller(controller_name: str,
|
|
2812
2823
|
with rich_utils.client_status(
|
2813
2824
|
'[bold cyan]Checking for in-progress managed jobs[/]'):
|
2814
2825
|
try:
|
2815
|
-
request_id = managed_jobs.queue(refresh=False,
|
2826
|
+
request_id = managed_jobs.queue(refresh=False,
|
2827
|
+
skip_finished=True,
|
2828
|
+
all_users=True)
|
2816
2829
|
managed_jobs_ = sdk.stream_and_get(request_id)
|
2817
2830
|
except exceptions.ClusterNotUpError as e:
|
2818
2831
|
if controller.value.connection_error_hint in str(e):
|
@@ -2836,7 +2849,9 @@ def _hint_or_raise_for_down_jobs_controller(controller_name: str,
|
|
2836
2849
|
'jobs (output of `sky jobs queue`) will be lost.')
|
2837
2850
|
click.echo(msg)
|
2838
2851
|
if managed_jobs_:
|
2839
|
-
job_table = managed_jobs.format_job_table(managed_jobs_,
|
2852
|
+
job_table = managed_jobs.format_job_table(managed_jobs_,
|
2853
|
+
show_all=False,
|
2854
|
+
show_user=True)
|
2840
2855
|
msg = controller.value.decline_down_for_dirty_controller_hint
|
2841
2856
|
# Add prefix to each line to align with the bullet point.
|
2842
2857
|
msg += '\n'.join(
|
@@ -3905,9 +3920,16 @@ def jobs_launch(
|
|
3905
3920
|
is_flag=True,
|
3906
3921
|
required=False,
|
3907
3922
|
help='Show only pending/running jobs\' information.')
|
3923
|
+
@click.option('--all-users',
|
3924
|
+
'-u',
|
3925
|
+
default=False,
|
3926
|
+
is_flag=True,
|
3927
|
+
required=False,
|
3928
|
+
help='Show jobs from all users.')
|
3908
3929
|
@usage_lib.entrypoint
|
3909
3930
|
# pylint: disable=redefined-builtin
|
3910
|
-
def jobs_queue(verbose: bool, refresh: bool, skip_finished: bool
|
3931
|
+
def jobs_queue(verbose: bool, refresh: bool, skip_finished: bool,
|
3932
|
+
all_users: bool):
|
3911
3933
|
"""Show statuses of managed jobs.
|
3912
3934
|
|
3913
3935
|
Each managed jobs can have one of the following statuses:
|
@@ -3964,9 +3986,10 @@ def jobs_queue(verbose: bool, refresh: bool, skip_finished: bool):
|
|
3964
3986
|
click.secho('Fetching managed job statuses...', fg='cyan')
|
3965
3987
|
with rich_utils.client_status('[cyan]Checking managed jobs[/]'):
|
3966
3988
|
managed_jobs_request_id = managed_jobs.queue(
|
3967
|
-
refresh=refresh, skip_finished=skip_finished)
|
3989
|
+
refresh=refresh, skip_finished=skip_finished, all_users=all_users)
|
3968
3990
|
_, msg = _handle_jobs_queue_request(managed_jobs_request_id,
|
3969
3991
|
show_all=verbose,
|
3992
|
+
show_user=all_users,
|
3970
3993
|
is_called_by_user=True)
|
3971
3994
|
if not skip_finished:
|
3972
3995
|
in_progress_only_hint = ''
|
@@ -3989,16 +4012,23 @@ def jobs_queue(verbose: bool, refresh: bool, skip_finished: bool):
|
|
3989
4012
|
is_flag=True,
|
3990
4013
|
default=False,
|
3991
4014
|
required=False,
|
3992
|
-
help='Cancel all managed jobs.')
|
4015
|
+
help='Cancel all managed jobs for the current user.')
|
3993
4016
|
@click.option('--yes',
|
3994
4017
|
'-y',
|
3995
4018
|
is_flag=True,
|
3996
4019
|
default=False,
|
3997
4020
|
required=False,
|
3998
4021
|
help='Skip confirmation prompt.')
|
4022
|
+
@click.option('--all-users',
|
4023
|
+
'-u',
|
4024
|
+
is_flag=True,
|
4025
|
+
default=False,
|
4026
|
+
required=False,
|
4027
|
+
help='Cancel all managed jobs from all users.')
|
3999
4028
|
@usage_lib.entrypoint
|
4000
4029
|
# pylint: disable=redefined-builtin
|
4001
|
-
def jobs_cancel(name: Optional[str], job_ids: Tuple[int], all: bool, yes: bool
|
4030
|
+
def jobs_cancel(name: Optional[str], job_ids: Tuple[int], all: bool, yes: bool,
|
4031
|
+
all_users: bool):
|
4002
4032
|
"""Cancel managed jobs.
|
4003
4033
|
|
4004
4034
|
You can provide either a job name or a list of job IDs to be cancelled.
|
@@ -4015,25 +4045,33 @@ def jobs_cancel(name: Optional[str], job_ids: Tuple[int], all: bool, yes: bool):
|
|
4015
4045
|
$ sky jobs cancel 1 2 3
|
4016
4046
|
"""
|
4017
4047
|
job_id_str = ','.join(map(str, job_ids))
|
4018
|
-
if sum([bool(job_ids), name is not None, all]) != 1:
|
4019
|
-
|
4020
|
-
|
4021
|
-
|
4048
|
+
if sum([bool(job_ids), name is not None, all or all_users]) != 1:
|
4049
|
+
arguments = []
|
4050
|
+
arguments += [f'--job-ids {job_id_str}'] if job_ids else []
|
4051
|
+
arguments += [f'--name {name}'] if name is not None else []
|
4052
|
+
arguments += ['--all'] if all else []
|
4053
|
+
arguments += ['--all-users'] if all_users else []
|
4022
4054
|
raise click.UsageError(
|
4023
|
-
'Can only specify one of JOB_IDS
|
4024
|
-
f'Provided {
|
4055
|
+
'Can only specify one of JOB_IDS, --name, or --all/--all-users. '
|
4056
|
+
f'Provided {" ".join(arguments)!r}.')
|
4025
4057
|
|
4026
4058
|
if not yes:
|
4027
4059
|
job_identity_str = (f'managed jobs with IDs {job_id_str}'
|
4028
4060
|
if job_ids else repr(name))
|
4029
|
-
if
|
4061
|
+
if all_users:
|
4062
|
+
job_identity_str = 'all managed jobs FOR ALL USERS'
|
4063
|
+
elif all:
|
4030
4064
|
job_identity_str = 'all managed jobs'
|
4031
4065
|
click.confirm(f'Cancelling {job_identity_str}. Proceed?',
|
4032
4066
|
default=True,
|
4033
4067
|
abort=True,
|
4034
4068
|
show_default=True)
|
4035
4069
|
|
4036
|
-
sdk.stream_and_get(
|
4070
|
+
sdk.stream_and_get(
|
4071
|
+
managed_jobs.cancel(job_ids=job_ids,
|
4072
|
+
name=name,
|
4073
|
+
all=all,
|
4074
|
+
all_users=all_users))
|
4037
4075
|
|
4038
4076
|
|
4039
4077
|
@jobs.command('logs', cls=_DocumentedCodeCommand)
|
{skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/jobs/client/sdk.py
RENAMED
@@ -85,7 +85,8 @@ def launch(
|
|
85
85
|
@usage_lib.entrypoint
|
86
86
|
@server_common.check_server_healthy_or_start
|
87
87
|
def queue(refresh: bool,
|
88
|
-
skip_finished: bool = False
|
88
|
+
skip_finished: bool = False,
|
89
|
+
all_users: bool = False) -> server_common.RequestId:
|
89
90
|
"""Gets statuses of managed jobs.
|
90
91
|
|
91
92
|
Please refer to sky.cli.job_queue for documentation.
|
@@ -93,6 +94,7 @@ def queue(refresh: bool,
|
|
93
94
|
Args:
|
94
95
|
refresh: Whether to restart the jobs controller if it is stopped.
|
95
96
|
skip_finished: Whether to skip finished jobs.
|
97
|
+
all_users: Whether to show all users' jobs.
|
96
98
|
|
97
99
|
Returns:
|
98
100
|
The request ID of the queue request.
|
@@ -126,6 +128,7 @@ def queue(refresh: bool,
|
|
126
128
|
body = payloads.JobsQueueBody(
|
127
129
|
refresh=refresh,
|
128
130
|
skip_finished=skip_finished,
|
131
|
+
all_users=all_users,
|
129
132
|
)
|
130
133
|
response = requests.post(
|
131
134
|
f'{server_common.get_server_url()}/jobs/queue',
|
@@ -138,9 +141,10 @@ def queue(refresh: bool,
|
|
138
141
|
@usage_lib.entrypoint
|
139
142
|
@server_common.check_server_healthy_or_start
|
140
143
|
def cancel(
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
+
name: Optional[str] = None,
|
145
|
+
job_ids: Optional[List[int]] = None,
|
146
|
+
all: bool = False, # pylint: disable=redefined-builtin
|
147
|
+
all_users: bool = False,
|
144
148
|
) -> server_common.RequestId:
|
145
149
|
"""Cancels managed jobs.
|
146
150
|
|
@@ -150,6 +154,7 @@ def cancel(
|
|
150
154
|
name: Name of the managed job to cancel.
|
151
155
|
job_ids: IDs of the managed jobs to cancel.
|
152
156
|
all: Whether to cancel all managed jobs.
|
157
|
+
all_users: Whether to cancel all managed jobs from all users.
|
153
158
|
|
154
159
|
Returns:
|
155
160
|
The request ID of the cancel request.
|
@@ -162,6 +167,7 @@ def cancel(
|
|
162
167
|
name=name,
|
163
168
|
job_ids=job_ids,
|
164
169
|
all=all,
|
170
|
+
all_users=all_users,
|
165
171
|
)
|
166
172
|
response = requests.post(
|
167
173
|
f'{server_common.get_server_url()}/jobs/cancel',
|
{skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/jobs/constants.py
RENAMED
@@ -40,7 +40,7 @@ JOBS_CLUSTER_NAME_PREFIX_LENGTH = 25
|
|
40
40
|
# The version of the lib files that jobs/utils use. Whenever there is an API
|
41
41
|
# change for the jobs/utils, we need to bump this version and update
|
42
42
|
# job.utils.ManagedJobCodeGen to handle the version update.
|
43
|
-
MANAGED_JOBS_VERSION =
|
43
|
+
MANAGED_JOBS_VERSION = 2
|
44
44
|
|
45
45
|
# The command for setting up the jobs dashboard on the controller. It firstly
|
46
46
|
# checks if the systemd services are available, and if not (e.g., Kubernetes
|
@@ -16,6 +16,7 @@ import flask
|
|
16
16
|
import yaml
|
17
17
|
|
18
18
|
from sky import jobs as managed_jobs
|
19
|
+
from sky.client import sdk
|
19
20
|
from sky.jobs import constants as managed_job_constants
|
20
21
|
from sky.utils import common_utils
|
21
22
|
from sky.utils import controller_utils
|
@@ -134,7 +135,8 @@ def _extract_launch_history(log_content: str) -> str:
|
|
134
135
|
def home():
|
135
136
|
if not _is_running_on_jobs_controller():
|
136
137
|
# Experimental: run on laptop (refresh is very slow).
|
137
|
-
|
138
|
+
request_id = managed_jobs.queue(refresh=True, skip_finished=False)
|
139
|
+
all_managed_jobs = sdk.get(request_id)
|
138
140
|
else:
|
139
141
|
job_table = managed_jobs.dump_managed_job_queue()
|
140
142
|
all_managed_jobs = managed_jobs.load_managed_job_queue(job_table)
|
@@ -142,6 +144,7 @@ def home():
|
|
142
144
|
timestamp = datetime.datetime.now(datetime.timezone.utc)
|
143
145
|
rows = managed_jobs.format_job_table(all_managed_jobs,
|
144
146
|
show_all=True,
|
147
|
+
show_user=False,
|
145
148
|
return_rows=True)
|
146
149
|
|
147
150
|
status_counts = collections.defaultdict(int)
|
{skypilot_nightly-1.0.0.dev20250226 → skypilot_nightly-1.0.0.dev20250228}/sky/jobs/scheduler.py
RENAMED
@@ -49,6 +49,7 @@ from sky import sky_logging
|
|
49
49
|
from sky.jobs import constants as managed_job_constants
|
50
50
|
from sky.jobs import state
|
51
51
|
from sky.skylet import constants
|
52
|
+
from sky.utils import common_utils
|
52
53
|
from sky.utils import subprocess_utils
|
53
54
|
|
54
55
|
logger = sky_logging.init_logger('sky.jobs.controller')
|
@@ -151,12 +152,20 @@ def maybe_schedule_next_jobs() -> None:
|
|
151
152
|
job_id = maybe_next_job['job_id']
|
152
153
|
dag_yaml_path = maybe_next_job['dag_yaml_path']
|
153
154
|
|
155
|
+
activate_python_env_cmd = (
|
156
|
+
f'{constants.ACTIVATE_SKY_REMOTE_PYTHON_ENV};')
|
157
|
+
env_file = maybe_next_job['env_file_path']
|
158
|
+
source_environment_cmd = (f'source {env_file};'
|
159
|
+
if env_file else '')
|
160
|
+
run_controller_cmd = ('python -u -m sky.jobs.controller '
|
161
|
+
f'{dag_yaml_path} --job-id {job_id};')
|
162
|
+
|
154
163
|
# If the command line here is changed, please also update
|
155
164
|
# utils._controller_process_alive. `--job-id X` should be at
|
156
165
|
# the end.
|
157
|
-
run_cmd = (f'{
|
158
|
-
'
|
159
|
-
f'{
|
166
|
+
run_cmd = (f'{activate_python_env_cmd}'
|
167
|
+
f'{source_environment_cmd}'
|
168
|
+
f'{run_controller_cmd}')
|
160
169
|
|
161
170
|
logs_dir = os.path.expanduser(
|
162
171
|
managed_job_constants.JOBS_CONTROLLER_LOGS_DIR)
|
@@ -175,16 +184,19 @@ def maybe_schedule_next_jobs() -> None:
|
|
175
184
|
pass
|
176
185
|
|
177
186
|
|
178
|
-
def submit_job(job_id: int, dag_yaml_path: str) -> None:
|
187
|
+
def submit_job(job_id: int, dag_yaml_path: str, env_file_path: str) -> None:
|
179
188
|
"""Submit an existing job to the scheduler.
|
180
189
|
|
181
190
|
This should be called after a job is created in the `spot` table as
|
182
191
|
PENDING. It will tell the scheduler to try and start the job controller, if
|
183
192
|
there are resources available. It may block to acquire the lock, so it
|
184
193
|
should not be on the critical path for `sky jobs launch -d`.
|
194
|
+
|
195
|
+
The user hash should be set (e.g. via SKYPILOT_USER_ID) before calling this.
|
185
196
|
"""
|
186
197
|
with filelock.FileLock(_get_lock_path()):
|
187
|
-
state.scheduler_set_waiting(job_id, dag_yaml_path
|
198
|
+
state.scheduler_set_waiting(job_id, dag_yaml_path, env_file_path,
|
199
|
+
common_utils.get_user_hash())
|
188
200
|
maybe_schedule_next_jobs()
|
189
201
|
|
190
202
|
|
@@ -281,12 +293,15 @@ def _can_lauch_in_alive_job() -> bool:
|
|
281
293
|
|
282
294
|
if __name__ == '__main__':
|
283
295
|
parser = ArgumentParser()
|
296
|
+
parser.add_argument('dag_yaml',
|
297
|
+
type=str,
|
298
|
+
help='The path to the user job yaml file.')
|
284
299
|
parser.add_argument('--job-id',
|
285
300
|
required=True,
|
286
301
|
type=int,
|
287
302
|
help='Job id for the controller job.')
|
288
|
-
parser.add_argument('
|
303
|
+
parser.add_argument('--env-file',
|
289
304
|
type=str,
|
290
|
-
help='The path to the
|
305
|
+
help='The path to the controller env file.')
|
291
306
|
args = parser.parse_args()
|
292
|
-
submit_job(args.job_id, args.dag_yaml)
|
307
|
+
submit_job(args.job_id, args.dag_yaml, args.env_file)
|