skypilot-nightly 1.0.0.dev20250610__tar.gz → 1.0.0.dev20250611__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.dev20250610/skypilot_nightly.egg-info → skypilot_nightly-1.0.0.dev20250611}/PKG-INFO +1 -1
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/__init__.py +2 -2
- skypilot_nightly-1.0.0.dev20250611/sky/admin_policy.py +235 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/benchmark/benchmark_state.py +39 -1
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/cli.py +1 -1
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/client/cli.py +1 -1
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/dashboard/out/404.html +1 -1
- skypilot_nightly-1.0.0.dev20250611/sky/dashboard/out/_next/static/chunks/600.15a0009177e86b86.js +16 -0
- skypilot_nightly-1.0.0.dev20250611/sky/dashboard/out/_next/static/chunks/938-ab185187a63f9cdb.js +1 -0
- skypilot_nightly-1.0.0.dev20250610/sky/dashboard/out/_next/static/chunks/webpack-0574a5a4ba3cf0ac.js → skypilot_nightly-1.0.0.dev20250611/sky/dashboard/out/_next/static/chunks/webpack-208a9812ab4f61c9.js +1 -1
- skypilot_nightly-1.0.0.dev20250610/sky/dashboard/out/_next/static/css/8b1c8321d4c02372.css → skypilot_nightly-1.0.0.dev20250611/sky/dashboard/out/_next/static/css/5d71bfc09f184bab.css +1 -1
- {skypilot_nightly-1.0.0.dev20250610/sky/dashboard/out/_next/static/4lwUJxN6KwBqUxqO1VccB → skypilot_nightly-1.0.0.dev20250611/sky/dashboard/out/_next/static/zJqasksBQ3HcqMpA2wTUZ}/_buildManifest.js +1 -1
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/dashboard/out/clusters/[cluster]/[job].html +1 -1
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/dashboard/out/clusters/[cluster].html +1 -1
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/dashboard/out/clusters.html +1 -1
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/dashboard/out/config.html +1 -1
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/dashboard/out/index.html +1 -1
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/dashboard/out/infra/[context].html +1 -1
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/dashboard/out/infra.html +1 -1
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/dashboard/out/jobs/[job].html +1 -1
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/dashboard/out/jobs.html +1 -1
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/dashboard/out/users.html +1 -1
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/dashboard/out/workspace/new.html +1 -1
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/dashboard/out/workspaces/[name].html +1 -1
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/dashboard/out/workspaces.html +1 -1
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/jobs/scheduler.py +4 -5
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/jobs/state.py +104 -11
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/jobs/utils.py +5 -5
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/skylet/job_lib.py +95 -40
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/users/permission.py +34 -17
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/utils/admin_policy_utils.py +32 -13
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/utils/schemas.py +11 -3
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611/skypilot_nightly.egg-info}/PKG-INFO +1 -1
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/skypilot_nightly.egg-info/SOURCES.txt +7 -7
- skypilot_nightly-1.0.0.dev20250610/sky/admin_policy.py +0 -109
- skypilot_nightly-1.0.0.dev20250610/sky/dashboard/out/_next/static/chunks/600.9cc76ec442b22e10.js +0 -16
- skypilot_nightly-1.0.0.dev20250610/sky/dashboard/out/_next/static/chunks/938-a75b7712639298b7.js +0 -1
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/LICENSE +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/MANIFEST.in +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/README.md +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/pyproject.toml +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/setup.cfg +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/setup.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/adaptors/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/adaptors/aws.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/adaptors/azure.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/adaptors/cloudflare.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/adaptors/common.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/adaptors/cudo.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/adaptors/do.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/adaptors/docker.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/adaptors/gcp.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/adaptors/ibm.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/adaptors/kubernetes.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/adaptors/nebius.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/adaptors/oci.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/adaptors/runpod.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/adaptors/vast.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/adaptors/vsphere.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/authentication.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/backends/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/backends/backend.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/backends/backend_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/backends/cloud_vm_ray_backend.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/backends/docker_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/backends/local_docker_backend.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/backends/monkey_patches/monkey_patch_ray_up.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/backends/wheel_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/benchmark/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/benchmark/benchmark_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/catalog/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/catalog/aws_catalog.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/catalog/azure_catalog.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/catalog/common.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/catalog/config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/catalog/cudo_catalog.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/catalog/data_fetchers/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/catalog/data_fetchers/analyze.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/catalog/data_fetchers/fetch_aws.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/catalog/data_fetchers/fetch_azure.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/catalog/data_fetchers/fetch_cudo.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/catalog/data_fetchers/fetch_fluidstack.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/catalog/data_fetchers/fetch_gcp.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/catalog/data_fetchers/fetch_ibm.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/catalog/data_fetchers/fetch_lambda_cloud.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/catalog/data_fetchers/fetch_vast.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/catalog/data_fetchers/fetch_vsphere.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/catalog/do_catalog.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/catalog/fluidstack_catalog.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/catalog/gcp_catalog.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/catalog/ibm_catalog.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/catalog/kubernetes_catalog.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/catalog/lambda_catalog.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/catalog/nebius_catalog.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/catalog/oci_catalog.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/catalog/paperspace_catalog.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/catalog/runpod_catalog.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/catalog/scp_catalog.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/catalog/ssh_catalog.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/catalog/vast_catalog.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/catalog/vsphere_catalog.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/check.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/client/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/client/common.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/client/oauth.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/client/sdk.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/cloud_stores.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/clouds/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/clouds/aws.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/clouds/azure.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/clouds/cloud.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/clouds/cudo.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/clouds/do.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/clouds/fluidstack.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/clouds/gcp.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/clouds/ibm.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/clouds/kubernetes.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/clouds/lambda_cloud.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/clouds/nebius.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/clouds/oci.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/clouds/paperspace.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/clouds/runpod.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/clouds/scp.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/clouds/ssh.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/clouds/utils/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/clouds/utils/aws_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/clouds/utils/azure_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/clouds/utils/gcp_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/clouds/utils/oci_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/clouds/utils/scp_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/clouds/vast.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/clouds/vsphere.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/core.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/dag.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/dashboard/out/_next/static/chunks/211.692afc57e812ae1a.js +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/dashboard/out/_next/static/chunks/350.9e123a4551f68b0d.js +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/dashboard/out/_next/static/chunks/37-d8aebf1683522a0b.js +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/dashboard/out/_next/static/chunks/42.d39e24467181b06b.js +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/dashboard/out/_next/static/chunks/443.b2242d0efcdf5f47.js +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/dashboard/out/_next/static/chunks/470-4d1a5dbe58a8a2b9.js +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/dashboard/out/_next/static/chunks/491.b3d264269613fe09.js +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/dashboard/out/_next/static/chunks/513.211357a2914a34b2.js +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/dashboard/out/_next/static/chunks/616-d6128fa9e7cae6e6.js +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/dashboard/out/_next/static/chunks/664-047bc03493fda379.js +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/dashboard/out/_next/static/chunks/682.4dd5dc116f740b5f.js +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/dashboard/out/_next/static/chunks/760-a89d354797ce7af5.js +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/dashboard/out/_next/static/chunks/798-c0525dc3f21e488d.js +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/dashboard/out/_next/static/chunks/799-3625946b2ec2eb30.js +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/dashboard/out/_next/static/chunks/804-4c9fc53aa74bc191.js +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/dashboard/out/_next/static/chunks/843-6fcc4bf91ac45b39.js +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/dashboard/out/_next/static/chunks/856-0776dc6ed6000c39.js +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/dashboard/out/_next/static/chunks/901-b424d293275e1fd7.js +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/dashboard/out/_next/static/chunks/937.3759f538f11a0953.js +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/dashboard/out/_next/static/chunks/947-6620842ef80ae879.js +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/dashboard/out/_next/static/chunks/969-20d54a9d998dc102.js +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/dashboard/out/_next/static/chunks/973-c807fc34f09c7df3.js +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/dashboard/out/_next/static/chunks/fd9d1056-2821b0f0cabcd8bd.js +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/dashboard/out/_next/static/chunks/framework-87d061ee6ed71b28.js +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/dashboard/out/_next/static/chunks/main-app-241eb28595532291.js +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/dashboard/out/_next/static/chunks/main-e0e2335212e72357.js +0 -0
- /skypilot_nightly-1.0.0.dev20250610/sky/dashboard/out/_next/static/chunks/pages/_app-4768de0aede04dc9.js → /skypilot_nightly-1.0.0.dev20250611/sky/dashboard/out/_next/static/chunks/pages/_app-7bbd9d39d6f9a98a.js +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/dashboard/out/_next/static/chunks/pages/_error-1be831200e60c5c0.js +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/dashboard/out/_next/static/chunks/pages/clusters/[cluster]/[job]-89216c616dbaa9c5.js +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/dashboard/out/_next/static/chunks/pages/clusters/[cluster]-451a14e7e755ebbc.js +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/dashboard/out/_next/static/chunks/pages/clusters-e56b17fd85d0ba58.js +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/dashboard/out/_next/static/chunks/pages/config-497a35a7ed49734a.js +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/dashboard/out/_next/static/chunks/pages/index-6b0d9e5031b70c58.js +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/dashboard/out/_next/static/chunks/pages/infra/[context]-d2910be98e9227cb.js +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/dashboard/out/_next/static/chunks/pages/infra-780860bcc1103945.js +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/dashboard/out/_next/static/chunks/pages/jobs/[job]-b3dbf38b51cb29be.js +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/dashboard/out/_next/static/chunks/pages/jobs-fe233baf3d073491.js +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/dashboard/out/_next/static/chunks/pages/users-c69ffcab9d6e5269.js +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/dashboard/out/_next/static/chunks/pages/workspace/new-31aa8bdcb7592635.js +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/dashboard/out/_next/static/chunks/pages/workspaces/[name]-c8c2191328532b7d.js +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/dashboard/out/_next/static/chunks/pages/workspaces-82e6601baa5dd280.js +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/dashboard/out/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js +0 -0
- {skypilot_nightly-1.0.0.dev20250610/sky/dashboard/out/_next/static/4lwUJxN6KwBqUxqO1VccB → skypilot_nightly-1.0.0.dev20250611/sky/dashboard/out/_next/static/zJqasksBQ3HcqMpA2wTUZ}/_ssgManifest.js +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/dashboard/out/favicon.ico +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/dashboard/out/skypilot.svg +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/dashboard/out/videos/cursor-small.mp4 +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/data/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/data/data_transfer.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/data/data_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/data/mounting_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/data/storage.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/data/storage_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/exceptions.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/execution.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/global_user_state.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/jobs/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/jobs/client/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/jobs/client/sdk.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/jobs/constants.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/jobs/controller.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/jobs/dashboard/dashboard.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/jobs/dashboard/static/favicon.ico +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/jobs/dashboard/templates/index.html +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/jobs/recovery_strategy.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/jobs/server/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/jobs/server/core.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/jobs/server/dashboard_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/jobs/server/server.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/models.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/optimizer.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/provision/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/provision/aws/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/provision/aws/config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/provision/aws/instance.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/provision/aws/utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/provision/azure/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/provision/azure/azure-config-template.json +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/provision/azure/config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/provision/azure/instance.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/provision/common.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/provision/constants.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/provision/cudo/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/provision/cudo/config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/provision/cudo/cudo_machine_type.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/provision/cudo/cudo_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/provision/cudo/cudo_wrapper.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/provision/cudo/instance.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/provision/do/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/provision/do/config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/provision/do/constants.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/provision/do/instance.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/provision/do/utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/provision/docker_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/provision/fluidstack/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/provision/fluidstack/config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/provision/fluidstack/fluidstack_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/provision/fluidstack/instance.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/provision/gcp/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/provision/gcp/config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/provision/gcp/constants.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/provision/gcp/instance.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/provision/gcp/instance_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/provision/gcp/mig_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/provision/gcp/volume_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/provision/instance_setup.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/provision/kubernetes/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/provision/kubernetes/config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/provision/kubernetes/constants.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/provision/kubernetes/instance.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/provision/kubernetes/manifests/fusermount-server-daemonset.yaml +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/provision/kubernetes/network.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/provision/kubernetes/network_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/provision/kubernetes/utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/provision/lambda_cloud/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/provision/lambda_cloud/config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/provision/lambda_cloud/instance.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/provision/lambda_cloud/lambda_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/provision/logging.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/provision/metadata_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/provision/nebius/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/provision/nebius/config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/provision/nebius/constants.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/provision/nebius/instance.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/provision/nebius/utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/provision/oci/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/provision/oci/config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/provision/oci/instance.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/provision/oci/query_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/provision/paperspace/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/provision/paperspace/config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/provision/paperspace/constants.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/provision/paperspace/instance.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/provision/paperspace/utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/provision/provisioner.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/provision/runpod/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/provision/runpod/api/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/provision/runpod/api/commands.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/provision/runpod/api/pods.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/provision/runpod/config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/provision/runpod/instance.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/provision/runpod/utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/provision/ssh/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/provision/vast/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/provision/vast/config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/provision/vast/instance.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/provision/vast/utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/provision/vsphere/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/provision/vsphere/common/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/provision/vsphere/common/cls_api_client.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/provision/vsphere/common/cls_api_helper.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/provision/vsphere/common/custom_script.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/provision/vsphere/common/id_generator.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/provision/vsphere/common/metadata_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/provision/vsphere/common/service_manager.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/provision/vsphere/common/service_manager_factory.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/provision/vsphere/common/ssl_helper.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/provision/vsphere/common/vapiconnect.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/provision/vsphere/common/vim_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/provision/vsphere/config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/provision/vsphere/instance.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/provision/vsphere/vsphere_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/resources.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/serve/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/serve/autoscalers.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/serve/client/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/serve/client/sdk.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/serve/constants.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/serve/controller.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/serve/load_balancer.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/serve/load_balancing_policies.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/serve/replica_managers.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/serve/serve_state.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/serve/serve_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/serve/server/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/serve/server/core.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/serve/server/server.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/serve/service.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/serve/service_spec.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/serve/spot_placer.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/server/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/server/common.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/server/config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/server/constants.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/server/html/log.html +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/server/html/token_page.html +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/server/requests/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/server/requests/event_loop.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/server/requests/executor.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/server/requests/payloads.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/server/requests/preconditions.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/server/requests/process.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/server/requests/queues/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/server/requests/queues/local_queue.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/server/requests/queues/mp_queue.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/server/requests/requests.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/server/requests/serializers/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/server/requests/serializers/decoders.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/server/requests/serializers/encoders.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/server/server.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/server/stream_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/server/uvicorn.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/setup_files/MANIFEST.in +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/setup_files/dependencies.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/setup_files/setup.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/sky_logging.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/skylet/LICENSE +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/skylet/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/skylet/attempt_skylet.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/skylet/autostop_lib.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/skylet/configs.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/skylet/constants.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/skylet/events.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/skylet/log_lib.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/skylet/log_lib.pyi +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/skylet/providers/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/skylet/providers/command_runner.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/skylet/providers/ibm/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/skylet/providers/ibm/node_provider.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/skylet/providers/ibm/utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/skylet/providers/ibm/vpc_provider.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/skylet/providers/scp/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/skylet/providers/scp/config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/skylet/providers/scp/node_provider.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/skylet/ray_patches/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/skylet/ray_patches/autoscaler.py.patch +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/skylet/ray_patches/cli.py.patch +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/skylet/ray_patches/command_runner.py.patch +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/skylet/ray_patches/log_monitor.py.patch +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/skylet/ray_patches/resource_demand_scheduler.py.patch +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/skylet/ray_patches/updater.py.patch +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/skylet/ray_patches/worker.py.patch +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/skylet/skylet.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/skylet/subprocess_daemon.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/skypilot_config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/task.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/templates/aws-ray.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/templates/azure-ray.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/templates/cudo-ray.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/templates/do-ray.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/templates/fluidstack-ray.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/templates/gcp-ray.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/templates/ibm-ray.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/templates/jobs-controller.yaml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/templates/kubernetes-ingress.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/templates/kubernetes-loadbalancer.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/templates/kubernetes-port-forward-proxy-command.sh +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/templates/kubernetes-ray.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/templates/kubernetes-ssh-jump.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/templates/lambda-ray.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/templates/local-ray.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/templates/nebius-ray.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/templates/oci-ray.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/templates/paperspace-ray.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/templates/runpod-ray.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/templates/scp-ray.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/templates/sky-serve-controller.yaml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/templates/skypilot-server-kubernetes-proxy.sh +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/templates/vast-ray.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/templates/vsphere-ray.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/templates/websocket_proxy.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/usage/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/usage/constants.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/usage/usage_lib.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/users/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/users/model.conf +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/users/rbac.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/users/server.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/utils/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/utils/accelerator_registry.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/utils/annotations.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/utils/atomic.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/utils/aws/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/utils/aws/get_default_security_group.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/utils/cli_utils/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/utils/cli_utils/status_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/utils/cluster_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/utils/command_runner.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/utils/command_runner.pyi +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/utils/common.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/utils/common_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/utils/config_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/utils/context.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/utils/context_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/utils/control_master_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/utils/controller_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/utils/dag_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/utils/db_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/utils/env_options.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/utils/infra_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/utils/kubernetes/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/utils/kubernetes/cleanup-tunnel.sh +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/utils/kubernetes/config_map_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/utils/kubernetes/create_cluster.sh +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/utils/kubernetes/delete_cluster.sh +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/utils/kubernetes/deploy_remote_cluster.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/utils/kubernetes/exec_kubeconfig_converter.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/utils/kubernetes/generate_kind_config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/utils/kubernetes/generate_kubeconfig.sh +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/utils/kubernetes/gpu_labeler.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/utils/kubernetes/k8s_gpu_labeler_job.yaml +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/utils/kubernetes/k8s_gpu_labeler_setup.yaml +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/utils/kubernetes/kubernetes_deploy_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/utils/kubernetes/rsync_helper.sh +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/utils/kubernetes/ssh-tunnel.sh +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/utils/kubernetes/ssh_jump_lifecycle_manager.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/utils/kubernetes_enums.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/utils/log_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/utils/message_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/utils/registry.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/utils/resources_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/utils/rich_console_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/utils/rich_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/utils/status_lib.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/utils/subprocess_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/utils/timeline.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/utils/ux_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/utils/validator.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/workspaces/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/workspaces/core.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/workspaces/server.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/workspaces/utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/skypilot_nightly.egg-info/dependency_links.txt +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/skypilot_nightly.egg-info/entry_points.txt +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/skypilot_nightly.egg-info/requires.txt +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/skypilot_nightly.egg-info/top_level.txt +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/tests/test_api.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/tests/test_cli.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/tests/test_config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/tests/test_db_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/tests/test_failover.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/tests/test_global_user_state.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/tests/test_jobs.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/tests/test_jobs_and_serve.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/tests/test_list_accelerators.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/tests/test_optimizer_dryruns.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/tests/test_optimizer_random_dag.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/tests/test_serve_autoscaler.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/tests/test_smoke.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/tests/test_storage.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/tests/test_wheels.py +0 -0
- {skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/tests/test_yaml_parser.py +0 -0
@@ -5,7 +5,7 @@ from typing import Optional
|
|
5
5
|
import urllib.request
|
6
6
|
|
7
7
|
# Replaced with the current commit when building the wheels.
|
8
|
-
_SKYPILOT_COMMIT_SHA = '
|
8
|
+
_SKYPILOT_COMMIT_SHA = 'b85fa521454fb935e9609773c4cfe52e2237e60f'
|
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.dev20250611'
|
39
39
|
__root_dir__ = os.path.dirname(os.path.abspath(__file__))
|
40
40
|
|
41
41
|
|
@@ -0,0 +1,235 @@
|
|
1
|
+
"""Interface for admin-defined policy for user requests."""
|
2
|
+
import abc
|
3
|
+
import dataclasses
|
4
|
+
import typing
|
5
|
+
from typing import Any, Dict, Optional
|
6
|
+
|
7
|
+
import pydantic
|
8
|
+
|
9
|
+
import sky
|
10
|
+
from sky import exceptions
|
11
|
+
from sky.adaptors import common as adaptors_common
|
12
|
+
from sky.utils import config_utils
|
13
|
+
from sky.utils import ux_utils
|
14
|
+
|
15
|
+
if typing.TYPE_CHECKING:
|
16
|
+
import requests
|
17
|
+
else:
|
18
|
+
requests = adaptors_common.LazyImport('requests')
|
19
|
+
|
20
|
+
|
21
|
+
class RequestOptions(pydantic.BaseModel):
|
22
|
+
"""Request options for admin policy.
|
23
|
+
|
24
|
+
Args:
|
25
|
+
cluster_name: Name of the cluster to create/reuse. It is None if not
|
26
|
+
specified by the user.
|
27
|
+
idle_minutes_to_autostop: Autostop setting requested by a user. The
|
28
|
+
cluster will be set to autostop after this many minutes of idleness.
|
29
|
+
down: If true, use autodown rather than autostop.
|
30
|
+
dryrun: Is the request a dryrun?
|
31
|
+
"""
|
32
|
+
cluster_name: Optional[str]
|
33
|
+
# Keep these two fields for backward compatibility. The values are copied
|
34
|
+
# from task.resources.autostop_config, so that legacy admin policy plugins
|
35
|
+
# can still read the correct autostop config from request options before
|
36
|
+
# we drop the compatibility.
|
37
|
+
# TODO(aylei): remove these fields after 0.12.0
|
38
|
+
idle_minutes_to_autostop: Optional[int]
|
39
|
+
down: bool
|
40
|
+
dryrun: bool
|
41
|
+
|
42
|
+
|
43
|
+
class _UserRequestBody(pydantic.BaseModel):
|
44
|
+
"""Auxiliary model to validate and serialize a user request."""
|
45
|
+
task: Dict[str, Any]
|
46
|
+
skypilot_config: Dict[str, Any]
|
47
|
+
request_options: Optional[RequestOptions] = None
|
48
|
+
at_client_side: bool = False
|
49
|
+
|
50
|
+
|
51
|
+
@dataclasses.dataclass
|
52
|
+
class UserRequest:
|
53
|
+
"""A user request.
|
54
|
+
|
55
|
+
A "user request" is defined as a `sky launch / exec` command or its API
|
56
|
+
equivalent.
|
57
|
+
|
58
|
+
`sky jobs launch / serve up` involves multiple launch requests, including
|
59
|
+
the launch of controller and clusters for a job (which can have multiple
|
60
|
+
tasks if it is a pipeline) or service replicas. Each launch is a separate
|
61
|
+
request.
|
62
|
+
|
63
|
+
This class wraps the underlying task, the global skypilot config used to run
|
64
|
+
a task, and the request options.
|
65
|
+
|
66
|
+
Args:
|
67
|
+
task: User specified task.
|
68
|
+
skypilot_config: Global skypilot config to be used in this request.
|
69
|
+
request_options: Request options. It is None for jobs and services.
|
70
|
+
at_client_side: Is the request intercepted by the policy at client-side?
|
71
|
+
"""
|
72
|
+
task: 'sky.Task'
|
73
|
+
skypilot_config: 'sky.Config'
|
74
|
+
request_options: Optional['RequestOptions'] = None
|
75
|
+
at_client_side: bool = False
|
76
|
+
|
77
|
+
def encode(self) -> str:
|
78
|
+
return _UserRequestBody(
|
79
|
+
task=self.task.to_yaml_config(),
|
80
|
+
skypilot_config=dict(self.skypilot_config),
|
81
|
+
request_options=self.request_options,
|
82
|
+
at_client_side=self.at_client_side).model_dump_json()
|
83
|
+
|
84
|
+
@classmethod
|
85
|
+
def decode(cls, body: str) -> 'UserRequest':
|
86
|
+
user_request_body = _UserRequestBody.model_validate_json(body)
|
87
|
+
return cls(task=sky.Task.from_yaml_config(user_request_body.task),
|
88
|
+
skypilot_config=config_utils.Config.from_dict(
|
89
|
+
user_request_body.skypilot_config),
|
90
|
+
request_options=user_request_body.request_options,
|
91
|
+
at_client_side=user_request_body.at_client_side)
|
92
|
+
|
93
|
+
|
94
|
+
class _MutatedUserRequestBody(pydantic.BaseModel):
|
95
|
+
"""Auxiliary model to validate and serialize a user request."""
|
96
|
+
task: Dict[str, Any]
|
97
|
+
skypilot_config: Dict[str, Any]
|
98
|
+
|
99
|
+
|
100
|
+
@dataclasses.dataclass
|
101
|
+
class MutatedUserRequest:
|
102
|
+
"""Mutated user request."""
|
103
|
+
|
104
|
+
task: 'sky.Task'
|
105
|
+
skypilot_config: 'sky.Config'
|
106
|
+
|
107
|
+
def encode(self) -> str:
|
108
|
+
return _MutatedUserRequestBody(
|
109
|
+
task=self.task.to_yaml_config(),
|
110
|
+
skypilot_config=dict(self.skypilot_config)).model_dump_json()
|
111
|
+
|
112
|
+
@classmethod
|
113
|
+
def decode(cls, mutated_user_request_body: str) -> 'MutatedUserRequest':
|
114
|
+
mutated_user_request_body = _MutatedUserRequestBody.model_validate_json(
|
115
|
+
mutated_user_request_body)
|
116
|
+
return cls(task=sky.Task.from_yaml_config(
|
117
|
+
mutated_user_request_body.task),
|
118
|
+
skypilot_config=config_utils.Config.from_dict(
|
119
|
+
mutated_user_request_body.skypilot_config))
|
120
|
+
|
121
|
+
|
122
|
+
class PolicyInterface:
|
123
|
+
"""Interface for admin-defined policy for user requests."""
|
124
|
+
|
125
|
+
@abc.abstractmethod
|
126
|
+
def apply(self, user_request: UserRequest) -> MutatedUserRequest:
|
127
|
+
"""Apply the admin policy to the user request."""
|
128
|
+
|
129
|
+
def __str__(self):
|
130
|
+
return f'{self.__class__.__name__}'
|
131
|
+
|
132
|
+
|
133
|
+
# pylint: disable=line-too-long
|
134
|
+
class AdminPolicy(PolicyInterface):
|
135
|
+
"""Abstract interface of an admin-defined policy for all user requests.
|
136
|
+
|
137
|
+
Admins can implement a subclass of AdminPolicy with the following signature:
|
138
|
+
|
139
|
+
import sky
|
140
|
+
|
141
|
+
class SkyPilotPolicyV1(sky.AdminPolicy):
|
142
|
+
def validate_and_mutate(user_request: UserRequest) -> MutatedUserRequest:
|
143
|
+
...
|
144
|
+
return MutatedUserRequest(task=..., skypilot_config=...)
|
145
|
+
|
146
|
+
The policy can mutate both task and skypilot_config. Admins then distribute
|
147
|
+
a simple module that contains this implementation, installable in a way
|
148
|
+
that it can be imported by users from the same Python environment where
|
149
|
+
SkyPilot is running.
|
150
|
+
|
151
|
+
Users can register a subclass of AdminPolicy in the SkyPilot config file
|
152
|
+
under the key 'admin_policy', e.g.
|
153
|
+
|
154
|
+
admin_policy: my_package.SkyPilotPolicyV1
|
155
|
+
"""
|
156
|
+
|
157
|
+
@classmethod
|
158
|
+
@abc.abstractmethod
|
159
|
+
def validate_and_mutate(cls,
|
160
|
+
user_request: UserRequest) -> MutatedUserRequest:
|
161
|
+
"""Validates and mutates the user request and returns mutated request.
|
162
|
+
|
163
|
+
Args:
|
164
|
+
user_request: The user request to validate and mutate.
|
165
|
+
UserRequest contains (sky.Task, sky.Config)
|
166
|
+
|
167
|
+
Returns:
|
168
|
+
MutatedUserRequest: The mutated user request.
|
169
|
+
|
170
|
+
Raises:
|
171
|
+
Exception to throw if the user request failed the validation.
|
172
|
+
"""
|
173
|
+
raise NotImplementedError(
|
174
|
+
'Your policy must implement validate_and_mutate')
|
175
|
+
|
176
|
+
def apply(self, user_request: UserRequest) -> MutatedUserRequest:
|
177
|
+
return self.validate_and_mutate(user_request)
|
178
|
+
|
179
|
+
|
180
|
+
class PolicyTemplate(PolicyInterface):
|
181
|
+
"""Admin policy template that can be instantiated to create a policy."""
|
182
|
+
|
183
|
+
@abc.abstractmethod
|
184
|
+
def validate_and_mutate(self,
|
185
|
+
user_request: UserRequest) -> MutatedUserRequest:
|
186
|
+
"""Validates and mutates the user request and returns mutated request.
|
187
|
+
|
188
|
+
Args:
|
189
|
+
user_request: The user request to validate and mutate.
|
190
|
+
UserRequest contains (sky.Task, sky.Config)
|
191
|
+
|
192
|
+
Returns:
|
193
|
+
MutatedUserRequest: The mutated user request.
|
194
|
+
|
195
|
+
Raises:
|
196
|
+
Exception to throw if the user request failed the validation.
|
197
|
+
"""
|
198
|
+
raise NotImplementedError(
|
199
|
+
'Your policy must implement validate_and_mutate')
|
200
|
+
|
201
|
+
def apply(self, user_request: UserRequest) -> MutatedUserRequest:
|
202
|
+
return self.validate_and_mutate(user_request)
|
203
|
+
|
204
|
+
|
205
|
+
class RestfulAdminPolicy(PolicyTemplate):
|
206
|
+
"""Admin policy that calls a RESTful API for validation."""
|
207
|
+
|
208
|
+
def __init__(self, policy_url: str):
|
209
|
+
super().__init__()
|
210
|
+
self.policy_url = policy_url
|
211
|
+
|
212
|
+
def validate_and_mutate(self,
|
213
|
+
user_request: UserRequest) -> MutatedUserRequest:
|
214
|
+
try:
|
215
|
+
response = requests.post(
|
216
|
+
self.policy_url,
|
217
|
+
json=user_request.encode(),
|
218
|
+
headers={'Content-Type': 'application/json'},
|
219
|
+
# TODO(aylei): make this configurable
|
220
|
+
timeout=30)
|
221
|
+
response.raise_for_status()
|
222
|
+
except requests.exceptions.RequestException as e:
|
223
|
+
with ux_utils.print_exception_no_traceback():
|
224
|
+
raise exceptions.UserRequestRejectedByPolicy(
|
225
|
+
f'Failed to validate request with admin policy URL '
|
226
|
+
f'{self.policy_url}: {e}') from e
|
227
|
+
|
228
|
+
try:
|
229
|
+
mutated_user_request = MutatedUserRequest.decode(response.json())
|
230
|
+
except Exception as e: # pylint: disable=broad-except
|
231
|
+
with ux_utils.print_exception_no_traceback():
|
232
|
+
raise exceptions.UserRequestRejectedByPolicy(
|
233
|
+
f'Failed to decode response from admin policy URL '
|
234
|
+
f'{self.policy_url}: {e}') from e
|
235
|
+
return mutated_user_request
|
@@ -1,5 +1,6 @@
|
|
1
1
|
"""Sky benchmark database, backed by sqlite."""
|
2
2
|
import enum
|
3
|
+
import functools
|
3
4
|
import os
|
4
5
|
import pathlib
|
5
6
|
import pickle
|
@@ -65,7 +66,24 @@ class _BenchmarkSQLiteConn(threading.local):
|
|
65
66
|
self.conn.commit()
|
66
67
|
|
67
68
|
|
68
|
-
_BENCHMARK_DB =
|
69
|
+
_BENCHMARK_DB = None
|
70
|
+
_benchmark_db_init_lock = threading.Lock()
|
71
|
+
|
72
|
+
|
73
|
+
def _init_db(func):
|
74
|
+
"""Initialize the database."""
|
75
|
+
|
76
|
+
@functools.wraps(func)
|
77
|
+
def wrapper(*args, **kwargs):
|
78
|
+
global _BENCHMARK_DB
|
79
|
+
if _BENCHMARK_DB:
|
80
|
+
return func(*args, **kwargs)
|
81
|
+
with _benchmark_db_init_lock:
|
82
|
+
if not _BENCHMARK_DB:
|
83
|
+
_BENCHMARK_DB = _BenchmarkSQLiteConn()
|
84
|
+
return func(*args, **kwargs)
|
85
|
+
|
86
|
+
return wrapper
|
69
87
|
|
70
88
|
|
71
89
|
class BenchmarkStatus(enum.Enum):
|
@@ -121,9 +139,11 @@ class BenchmarkRecord(NamedTuple):
|
|
121
139
|
estimated_total_seconds: Optional[float] = None
|
122
140
|
|
123
141
|
|
142
|
+
@_init_db
|
124
143
|
def add_benchmark(benchmark_name: str, task_name: Optional[str],
|
125
144
|
bucket_name: str) -> None:
|
126
145
|
"""Add a new benchmark."""
|
146
|
+
assert _BENCHMARK_DB is not None
|
127
147
|
launched_at = int(time.time())
|
128
148
|
_BENCHMARK_DB.cursor.execute(
|
129
149
|
'INSERT INTO benchmark'
|
@@ -133,8 +153,10 @@ def add_benchmark(benchmark_name: str, task_name: Optional[str],
|
|
133
153
|
_BENCHMARK_DB.conn.commit()
|
134
154
|
|
135
155
|
|
156
|
+
@_init_db
|
136
157
|
def add_benchmark_result(benchmark_name: str,
|
137
158
|
cluster_handle: 'backend_lib.ResourceHandle') -> None:
|
159
|
+
assert _BENCHMARK_DB is not None
|
138
160
|
name = cluster_handle.cluster_name
|
139
161
|
num_nodes = cluster_handle.launched_nodes
|
140
162
|
resources = pickle.dumps(cluster_handle.launched_resources)
|
@@ -146,10 +168,12 @@ def add_benchmark_result(benchmark_name: str,
|
|
146
168
|
_BENCHMARK_DB.conn.commit()
|
147
169
|
|
148
170
|
|
171
|
+
@_init_db
|
149
172
|
def update_benchmark_result(
|
150
173
|
benchmark_name: str, cluster_name: str,
|
151
174
|
benchmark_status: BenchmarkStatus,
|
152
175
|
benchmark_record: Optional[BenchmarkRecord]) -> None:
|
176
|
+
assert _BENCHMARK_DB is not None
|
153
177
|
_BENCHMARK_DB.cursor.execute(
|
154
178
|
'UPDATE benchmark_results SET '
|
155
179
|
'status=(?), record=(?) WHERE benchmark=(?) AND cluster=(?)',
|
@@ -158,8 +182,10 @@ def update_benchmark_result(
|
|
158
182
|
_BENCHMARK_DB.conn.commit()
|
159
183
|
|
160
184
|
|
185
|
+
@_init_db
|
161
186
|
def delete_benchmark(benchmark_name: str) -> None:
|
162
187
|
"""Delete a benchmark result."""
|
188
|
+
assert _BENCHMARK_DB is not None
|
163
189
|
_BENCHMARK_DB.cursor.execute(
|
164
190
|
'DELETE FROM benchmark_results WHERE benchmark=(?)', (benchmark_name,))
|
165
191
|
_BENCHMARK_DB.cursor.execute('DELETE FROM benchmark WHERE name=(?)',
|
@@ -167,8 +193,10 @@ def delete_benchmark(benchmark_name: str) -> None:
|
|
167
193
|
_BENCHMARK_DB.conn.commit()
|
168
194
|
|
169
195
|
|
196
|
+
@_init_db
|
170
197
|
def get_benchmark_from_name(benchmark_name: str) -> Optional[Dict[str, Any]]:
|
171
198
|
"""Get a benchmark from its name."""
|
199
|
+
assert _BENCHMARK_DB is not None
|
172
200
|
rows = _BENCHMARK_DB.cursor.execute(
|
173
201
|
'SELECT * FROM benchmark WHERE name=(?)', (benchmark_name,))
|
174
202
|
for name, task, bucket, launched_at in rows:
|
@@ -181,8 +209,10 @@ def get_benchmark_from_name(benchmark_name: str) -> Optional[Dict[str, Any]]:
|
|
181
209
|
return record
|
182
210
|
|
183
211
|
|
212
|
+
@_init_db
|
184
213
|
def get_benchmarks() -> List[Dict[str, Any]]:
|
185
214
|
"""Get all benchmarks."""
|
215
|
+
assert _BENCHMARK_DB is not None
|
186
216
|
rows = _BENCHMARK_DB.cursor.execute('SELECT * FROM benchmark')
|
187
217
|
records = []
|
188
218
|
for name, task, bucket, launched_at in rows:
|
@@ -196,8 +226,10 @@ def get_benchmarks() -> List[Dict[str, Any]]:
|
|
196
226
|
return records
|
197
227
|
|
198
228
|
|
229
|
+
@_init_db
|
199
230
|
def set_benchmark_bucket(bucket_name: str, bucket_type: str) -> None:
|
200
231
|
"""Save the benchmark bucket name and type."""
|
232
|
+
assert _BENCHMARK_DB is not None
|
201
233
|
_BENCHMARK_DB.cursor.execute(
|
202
234
|
'REPLACE INTO benchmark_config (key, value) VALUES (?, ?)',
|
203
235
|
(_BENCHMARK_BUCKET_NAME_KEY, bucket_name))
|
@@ -207,8 +239,10 @@ def set_benchmark_bucket(bucket_name: str, bucket_type: str) -> None:
|
|
207
239
|
_BENCHMARK_DB.conn.commit()
|
208
240
|
|
209
241
|
|
242
|
+
@_init_db
|
210
243
|
def get_benchmark_bucket() -> Tuple[Optional[str], Optional[str]]:
|
211
244
|
"""Get the benchmark bucket name and type."""
|
245
|
+
assert _BENCHMARK_DB is not None
|
212
246
|
rows = _BENCHMARK_DB.cursor.execute(
|
213
247
|
'SELECT value FROM benchmark_config WHERE key=(?)',
|
214
248
|
(_BENCHMARK_BUCKET_NAME_KEY,))
|
@@ -227,15 +261,19 @@ def get_benchmark_bucket() -> Tuple[Optional[str], Optional[str]]:
|
|
227
261
|
return bucket_name, bucket_type
|
228
262
|
|
229
263
|
|
264
|
+
@_init_db
|
230
265
|
def get_benchmark_clusters(benchmark_name: str) -> List[str]:
|
231
266
|
"""Get all clusters for a benchmark."""
|
267
|
+
assert _BENCHMARK_DB is not None
|
232
268
|
rows = _BENCHMARK_DB.cursor.execute(
|
233
269
|
'SELECT cluster FROM benchmark_results WHERE benchmark=(?)',
|
234
270
|
(benchmark_name,))
|
235
271
|
return [row[0] for row in rows]
|
236
272
|
|
237
273
|
|
274
|
+
@_init_db
|
238
275
|
def get_benchmark_results(benchmark_name: str) -> List[Dict[str, Any]]:
|
276
|
+
assert _BENCHMARK_DB is not None
|
239
277
|
rows = _BENCHMARK_DB.cursor.execute(
|
240
278
|
'SELECT * FROM benchmark_results WHERE benchmark=(?)',
|
241
279
|
(benchmark_name,))
|
@@ -4199,7 +4199,7 @@ def jobs():
|
|
4199
4199
|
type=click.IntRange(0, 1000),
|
4200
4200
|
default=None,
|
4201
4201
|
show_default=True,
|
4202
|
-
help=('Job priority from 0 to 1000. A
|
4202
|
+
help=('Job priority from 0 to 1000. A higher number is higher '
|
4203
4203
|
'priority. Default is 500.'))
|
4204
4204
|
@click.option(
|
4205
4205
|
'--detach-run',
|
@@ -4199,7 +4199,7 @@ def jobs():
|
|
4199
4199
|
type=click.IntRange(0, 1000),
|
4200
4200
|
default=None,
|
4201
4201
|
show_default=True,
|
4202
|
-
help=('Job priority from 0 to 1000. A
|
4202
|
+
help=('Job priority from 0 to 1000. A higher number is higher '
|
4203
4203
|
'priority. Default is 500.'))
|
4204
4204
|
@click.option(
|
4205
4205
|
'--detach-run',
|
{skypilot_nightly-1.0.0.dev20250610 → skypilot_nightly-1.0.0.dev20250611}/sky/dashboard/out/404.html
RENAMED
@@ -1 +1 @@
|
|
1
|
-
<!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><meta name="next-head-count" content="2"/><link rel="preload" href="/dashboard/_next/static/css/
|
1
|
+
<!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><meta name="next-head-count" content="2"/><link rel="preload" href="/dashboard/_next/static/css/5d71bfc09f184bab.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/5d71bfc09f184bab.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/dashboard/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js"></script><script src="/dashboard/_next/static/chunks/webpack-208a9812ab4f61c9.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-87d061ee6ed71b28.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-e0e2335212e72357.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-7bbd9d39d6f9a98a.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_error-1be831200e60c5c0.js" defer=""></script><script src="/dashboard/_next/static/zJqasksBQ3HcqMpA2wTUZ/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/zJqasksBQ3HcqMpA2wTUZ/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{"statusCode":404}},"page":"/_error","query":{},"buildId":"zJqasksBQ3HcqMpA2wTUZ","assetPrefix":"/dashboard","nextExport":true,"isFallback":false,"gip":true,"scriptLoader":[]}</script></body></html>
|
skypilot_nightly-1.0.0.dev20250611/sky/dashboard/out/_next/static/chunks/600.15a0009177e86b86.js
ADDED
@@ -0,0 +1,16 @@
|
|
1
|
+
"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[600,211],{3626:function(e,r,t){t.d(r,{Z:function(){return s}});/**
|
2
|
+
* @license lucide-react v0.407.0 - ISC
|
3
|
+
*
|
4
|
+
* This source code is licensed under the ISC license.
|
5
|
+
* See the LICENSE file in the root directory of this source tree.
|
6
|
+
*/let s=(0,t(998).Z)("RotateCw",[["path",{d:"M21 12a9 9 0 1 1-9-9c2.52 0 4.93 1 6.74 2.74L21 8",key:"1p45f6"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}]])},3767:function(e,r,t){t.d(r,{Z:function(){return s}});/**
|
7
|
+
* @license lucide-react v0.407.0 - ISC
|
8
|
+
*
|
9
|
+
* This source code is licensed under the ISC license.
|
10
|
+
* See the LICENSE file in the root directory of this source tree.
|
11
|
+
*/let s=(0,t(998).Z)("X",[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]])},803:function(e,r,t){t.d(r,{z:function(){return c}});var s=t(5893),a=t(7294),n=t(8426),l=t(2003),i=t(2350);let o=(0,l.j)("inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50",{variants:{variant:{default:"bg-primary text-primary-foreground hover:bg-primary/90",destructive:"bg-destructive text-destructive-foreground hover:bg-destructive/90",outline:"border border-input bg-background hover:bg-accent hover:text-accent-foreground",secondary:"bg-secondary text-secondary-foreground hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-10 px-4 py-2",sm:"h-9 rounded-md px-3",lg:"h-11 rounded-md px-8",icon:"h-10 w-10"}},defaultVariants:{variant:"default",size:"default"}}),c=a.forwardRef((e,r)=>{let{className:t,variant:a,size:l,asChild:c=!1,...d}=e,u=c?n.g7:"button";return(0,s.jsx)(u,{className:(0,i.cn)(o({variant:a,size:l,className:t})),ref:r,...d})});c.displayName="Button"},7673:function(e,r,t){t.d(r,{Ol:function(){return c},Zb:function(){return o},aY:function(){return m},eW:function(){return f},ll:function(){return d}});var s=t(5893),a=t(7294),n=t(5697),l=t.n(n),i=t(2350);let o=a.forwardRef((e,r)=>{let{className:t,children:a,...n}=e;return(0,s.jsx)("div",{ref:r,className:(0,i.cn)("rounded-lg border bg-card text-card-foreground shadow-sm",t),...n,children:a})});o.displayName="Card",o.propTypes={className:l().string,children:l().node};let c=a.forwardRef((e,r)=>{let{className:t,children:a,...n}=e;return(0,s.jsx)("div",{ref:r,className:(0,i.cn)("flex flex-col space-y-1.5 p-6",t),...n,children:a})});c.displayName="CardHeader",c.propTypes={className:l().string,children:l().node};let d=a.forwardRef((e,r)=>{let{className:t,children:a,...n}=e;return(0,s.jsx)("h3",{ref:r,className:(0,i.cn)("text-2xl font-semibold leading-none tracking-tight",t),...n,children:a})});d.displayName="CardTitle",d.propTypes={className:l().string,children:l().node};let u=a.forwardRef((e,r)=>{let{className:t,children:a,...n}=e;return(0,s.jsx)("p",{ref:r,className:(0,i.cn)("text-sm text-muted-foreground",t),...n,children:a})});u.displayName="CardDescription",u.propTypes={className:l().string,children:l().node};let m=a.forwardRef((e,r)=>{let{className:t,children:a,...n}=e;return(0,s.jsx)("div",{ref:r,className:(0,i.cn)("p-6 pt-0",t),...n,children:a})});m.displayName="CardContent",m.propTypes={className:l().string,children:l().node};let f=a.forwardRef((e,r)=>{let{className:t,children:a,...n}=e;return(0,s.jsx)("div",{ref:r,className:(0,i.cn)("flex items-center p-6 pt-0",t),...n,children:a})});f.displayName="CardFooter",f.propTypes={className:l().string,children:l().node}},8764:function(e,r,t){t.d(r,{RM:function(){return o},SC:function(){return c},iA:function(){return l},pj:function(){return u},ss:function(){return d},xD:function(){return i}});var s=t(5893),a=t(7294),n=t(2350);let l=a.forwardRef((e,r)=>{let{className:t,...a}=e;return(0,s.jsx)("div",{className:"relative w-full overflow-auto",children:(0,s.jsx)("table",{ref:r,className:(0,n.cn)("w-full caption-bottom text-base",t),...a})})});l.displayName="Table";let i=a.forwardRef((e,r)=>{let{className:t,...a}=e;return(0,s.jsx)("thead",{ref:r,className:(0,n.cn)("[&_tr]:border-b",t),...a})});i.displayName="TableHeader";let o=a.forwardRef((e,r)=>{let{className:t,...a}=e;return(0,s.jsx)("tbody",{ref:r,className:(0,n.cn)("[&_tr:last-child]:border-0",t),...a})});o.displayName="TableBody",a.forwardRef((e,r)=>{let{className:t,...a}=e;return(0,s.jsx)("tfoot",{ref:r,className:(0,n.cn)("border-t bg-muted/50 font-medium [&>tr]:last:border-b-0",t),...a})}).displayName="TableFooter";let c=a.forwardRef((e,r)=>{let{className:t,...a}=e;return(0,s.jsx)("tr",{ref:r,className:(0,n.cn)("border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted",t),...a})});c.displayName="TableRow";let d=a.forwardRef((e,r)=>{let{className:t,...a}=e;return(0,s.jsx)("th",{ref:r,className:(0,n.cn)("h-12 px-4 text-left align-middle font-medium text-[hsl(var(--text-strong))] [&:has([role=checkbox])]:pr-0",t),...a})});d.displayName="TableHead";let u=a.forwardRef((e,r)=>{let{className:t,...a}=e;return(0,s.jsx)("td",{ref:r,className:(0,n.cn)("p-4 align-middle [&:has([role=checkbox])]:pr-0",t),...a})});u.displayName="TableCell",a.forwardRef((e,r)=>{let{className:t,...a}=e;return(0,s.jsx)("caption",{ref:r,className:(0,n.cn)("mt-4 text-base text-muted-foreground",t),...a})}).displayName="TableCaption"},3600:function(e,r,t){t.r(r),t.d(r,{Users:function(){return D}});var s=t(5893),a=t(7294),n=t(5697),l=t.n(n),i=t(8799),o=t(1664),c=t.n(o);t(803);var d=t(8764),u=t(3081),m=t(3266),f=t(8969),x=t(6378),p=t(6856),h=t(1214),g=t(4545),b=t(3626),y=t(282),j=t(3767);/**
|
12
|
+
* @license lucide-react v0.407.0 - ISC
|
13
|
+
*
|
14
|
+
* This source code is licensed under the ISC license.
|
15
|
+
* See the LICENSE file in the root directory of this source tree.
|
16
|
+
*/let N=(0,t(998).Z)("Pen",[["path",{d:"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z",key:"1a8usu"}]]);t(9470);var v=t(3001),w=t(7673),C=t(7145);let k=(e,r)=>e&&e.includes("@")?e.split("@")[0]:e||"N/A",R=(e,r)=>e&&e.includes("@")?e:r||"-",I=h.nb.REFRESH_INTERVAL;function D(){let[e,r]=(0,a.useState)(!1),t=(0,a.useRef)(null),n=(0,v.X)();return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)("div",{className:"flex items-center justify-between mb-4 h-5",children:[(0,s.jsx)("div",{className:"text-base",children:(0,s.jsx)(c(),{href:"/users",className:"text-sky-blue hover:underline leading-none",children:"Users"})}),(0,s.jsxs)("div",{className:"flex items-center",children:[e&&(0,s.jsxs)("div",{className:"flex items-center mr-2",children:[(0,s.jsx)(i.Z,{size:15,className:"mt-0"}),(0,s.jsx)("span",{className:"ml-2 text-gray-500 text-sm",children:"Loading..."})]}),(0,s.jsxs)("button",{onClick:()=>{x.default.invalidate(u.R),x.default.invalidate(m.getClusters),x.default.invalidate(f.getManagedJobs,[{allUsers:!0}]),t.current&&t.current()},disabled:e,className:"text-sky-blue hover:text-sky-blue-bright flex items-center",children:[(0,s.jsx)(b.Z,{className:"h-4 w-4 mr-1.5"}),!n&&(0,s.jsx)("span",{children:"Refresh"})]})]})]}),(0,s.jsx)(E,{refreshInterval:I,setLoading:r,refreshDataRef:t})]})}function E(e){let{refreshInterval:r,setLoading:t,refreshDataRef:n}=e,[l,o]=(0,a.useState)([]),[c,h]=(0,a.useState)(!0),[b,v]=(0,a.useState)(!1),[I,D]=(0,a.useState)({key:"username",direction:"ascending"}),[E,T]=(0,a.useState)(null),[Z,F]=(0,a.useState)(""),S=(0,a.useCallback)(async function(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];t&&e&&t(!0),e&&h(!0);try{let r=await x.default.get(u.R),s=(r||[]).map(e=>({...e,usernameDisplay:k(e.username,e.userId),fullEmailID:R(e.username,e.userId),clusterCount:-1,jobCount:-1}));o(s),v(!0),t&&e&&t(!1),e&&h(!1);let[a,n]=await Promise.all([x.default.get(m.getClusters),x.default.get(f.getManagedJobs,[{allUsers:!0}])]),l=n.jobs||[],i=(r||[]).map(e=>{let r=(a||[]).filter(r=>r.user_hash===e.userId),t=(l||[]).filter(r=>r.user_hash===e.userId);return{...e,usernameDisplay:k(e.username,e.userId),fullEmailID:R(e.username,e.userId),clusterCount:r.length,jobCount:t.length}});o(i)}catch(r){console.error("Failed to fetch or process user data:",r),o([]),v(!0),t&&e&&t(!1),e&&h(!1)}},[t]);(0,a.useEffect)(()=>{n&&(n.current=()=>S(!0))},[n,S]),(0,a.useEffect)(()=>{(async()=>{v(!1),h(!0),await p.ZP.preloadForPage("users"),S(!0)})();let e=setInterval(()=>{S(!1)},r);return()=>clearInterval(e)},[S,r]);let _=(0,a.useMemo)(()=>(0,g.R0)(l,I.key,I.direction),[l,I]),L=e=>{let r="ascending";I.key===e&&"ascending"===I.direction&&(r="descending"),D({key:e,direction:r})},M=e=>I.key===e?"ascending"===I.direction?" ↑":" ↓":"",z=async(e,r)=>{try{let t=await C.x.get("/users/role");if(!t.ok){let e=await t.json();throw Error(e.detail||"Failed to get user role")}let s=await t.json();console.log("data",s);let a=s.role;if("admin"!=a){alert("".concat(s.name," is logged in as no admin, cannot edit user role."));return}T(e),F(r)}catch(e){console.error("Failed to check user role:",e),alert("Error: ".concat(e.message))}},U=()=>{T(null),F("")},A=async e=>{if(!e||!Z){console.error("User ID or role is missing."),alert("Error: User ID or role is missing.");return}h(!0);try{let r=await C.x.post("/users/update",{user_id:e,role:Z});if(!r.ok){let e=await r.json();throw Error(e.detail||"Failed to update role")}x.default.invalidate(u.R),await S(!0),U()}catch(e){console.error("Failed to update user role:",e),alert("Error updating role: ".concat(e.message))}finally{h(!1)}};return c&&0===l.length&&!b?(0,s.jsx)("div",{className:"flex justify-center items-center h-64",children:(0,s.jsx)(i.Z,{})}):b?_&&0!==_.length?(0,s.jsx)(w.Zb,{children:(0,s.jsxs)(d.iA,{children:[(0,s.jsx)(d.xD,{children:(0,s.jsxs)(d.SC,{children:[(0,s.jsxs)(d.ss,{onClick:()=>L("usernameDisplay"),className:"sortable whitespace-nowrap cursor-pointer hover:bg-gray-50 w-1/5",children:["Name",M("usernameDisplay")]}),(0,s.jsxs)(d.ss,{onClick:()=>L("fullEmailID"),className:"sortable whitespace-nowrap cursor-pointer hover:bg-gray-50 w-1/5",children:["User ID",M("fullEmailID")]}),(0,s.jsxs)(d.ss,{onClick:()=>L("role"),className:"sortable whitespace-nowrap cursor-pointer hover:bg-gray-50 w-1/5",children:["Role",M("role")]}),(0,s.jsxs)(d.ss,{onClick:()=>L("clusterCount"),className:"sortable whitespace-nowrap cursor-pointer hover:bg-gray-50 w-1/5",children:["Clusters",M("clusterCount")]}),(0,s.jsxs)(d.ss,{onClick:()=>L("jobCount"),className:"sortable whitespace-nowrap cursor-pointer hover:bg-gray-50 w-1/5",children:["Jobs",M("jobCount")]})]})}),(0,s.jsx)(d.RM,{children:_.map(e=>(0,s.jsxs)(d.SC,{children:[(0,s.jsx)(d.pj,{className:"truncate",title:e.username,children:e.usernameDisplay}),(0,s.jsx)(d.pj,{className:"truncate",title:e.fullEmailID,children:e.fullEmailID}),(0,s.jsx)(d.pj,{className:"truncate",title:e.role,children:(0,s.jsx)("div",{className:"flex items-center gap-2",children:E===e.userId?(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)("select",{value:Z,onChange:e=>F(e.target.value),className:"block w-auto p-1 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-sky-blue focus:border-sky-blue sm:text-sm",children:[(0,s.jsx)("option",{value:"admin",children:"Admin"}),(0,s.jsx)("option",{value:"user",children:"User"})]}),(0,s.jsx)("button",{onClick:()=>A(e.userId),className:"text-green-600 hover:text-green-800 p-1",title:"Save",children:(0,s.jsx)(y.Z,{className:"h-4 w-4"})}),(0,s.jsx)("button",{onClick:U,className:"text-gray-500 hover:text-gray-700 p-1",title:"Cancel",children:(0,s.jsx)(j.Z,{className:"h-4 w-4"})})]}):(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)("span",{className:"capitalize",children:e.role}),(0,s.jsx)("button",{onClick:()=>z(e.userId,e.role),className:"text-gray-400 hover:text-sky-blue p-1",title:"Edit role",children:(0,s.jsx)(N,{className:"h-3 w-3"})})]})})}),(0,s.jsx)(d.pj,{children:-1===e.clusterCount?(0,s.jsxs)("span",{className:"px-2 py-0.5 bg-gray-100 text-gray-400 rounded text-xs font-medium flex items-center",children:[(0,s.jsx)(i.Z,{size:10,className:"mr-1"}),"Loading..."]}):e.clusterCount>0?(0,s.jsx)("span",{className:"px-2 py-0.5 bg-blue-100 text-blue-800 rounded text-xs font-medium",children:e.clusterCount}):(0,s.jsx)("span",{className:"px-2 py-0.5 bg-gray-100 text-gray-500 rounded text-xs font-medium",children:"0"})}),(0,s.jsx)(d.pj,{children:-1===e.jobCount?(0,s.jsxs)("span",{className:"px-2 py-0.5 bg-gray-100 text-gray-400 rounded text-xs font-medium flex items-center",children:[(0,s.jsx)(i.Z,{size:10,className:"mr-1"}),"Loading..."]}):e.jobCount>0?(0,s.jsx)("span",{className:"px-2 py-0.5 bg-green-100 text-green-800 rounded text-xs font-medium",children:e.jobCount}):(0,s.jsx)("span",{className:"px-2 py-0.5 bg-gray-100 text-gray-500 rounded text-xs font-medium",children:"0"})})]},e.userId))})]})}):(0,s.jsxs)("div",{className:"text-center py-12",children:[(0,s.jsx)("p",{className:"text-lg font-semibold text-gray-500",children:"No users found."}),(0,s.jsx)("p",{className:"text-sm text-gray-400 mt-1",children:"There are currently no users to display."})]}):(0,s.jsxs)("div",{className:"flex justify-center items-center h-64",children:[(0,s.jsx)(i.Z,{}),(0,s.jsx)("span",{className:"ml-2 text-gray-500",children:"Loading users..."})]})}E.propTypes={refreshInterval:l().number.isRequired,setLoading:l().func.isRequired,refreshDataRef:l().shape({current:l().func}).isRequired}},4545:function(e,r,t){function s(e){return e.startsWith("sky-jobs-controller-")}function a(e,r,t){return null===r?e:[...e].sort((e,s)=>e[r]<s[r]?"ascending"===t?-1:1:e[r]>s[r]?"ascending"===t?1:-1:0)}t.d(r,{R0:function(){return a},Ym:function(){return s}})},2003:function(e,r,t){t.d(r,{j:function(){return l}});var s=t(512);let a=e=>"boolean"==typeof e?`${e}`:0===e?"0":e,n=s.W,l=(e,r)=>t=>{var s;if((null==r?void 0:r.variants)==null)return n(e,null==t?void 0:t.class,null==t?void 0:t.className);let{variants:l,defaultVariants:i}=r,o=Object.keys(l).map(e=>{let r=null==t?void 0:t[e],s=null==i?void 0:i[e];if(null===r)return null;let n=a(r)||a(s);return l[e][n]}),c=t&&Object.entries(t).reduce((e,r)=>{let[t,s]=r;return void 0===s||(e[t]=s),e},{});return n(e,o,null==r?void 0:null===(s=r.compoundVariants)||void 0===s?void 0:s.reduce((e,r)=>{let{class:t,className:s,...a}=r;return Object.entries(a).every(e=>{let[r,t]=e;return Array.isArray(t)?t.includes({...i,...c}[r]):({...i,...c})[r]===t})?[...e,t,s]:e},[]),null==t?void 0:t.class,null==t?void 0:t.className)}}}]);
|
skypilot_nightly-1.0.0.dev20250611/sky/dashboard/out/_next/static/chunks/938-ab185187a63f9cdb.js
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[938],{938:function(e,s,t){t.r(s),t.d(s,{ClusterJobs:function(){return O},ManagedJobs:function(){return M},ManagedJobsTable:function(){return I},Status2Actions:function(){return D},filterJobsByWorkspace:function(){return R},statusGroups:function(){return E}});var n=t(5893),r=t(7294),a=t(1163),l=t(1664),i=t.n(l),c=t(8799),o=t(803),d=t(7673),h=t(8764),x=t(6989),u=t(8969),m=t(3266),j=t(7324);t(9470);var p=t(3626),f=t(3293),g=t(6521),b=t(3610),w=t(9284),N=t(4545),y=t(9307),v=t(3001),k=t(8950),C=t(6378),S=t(6856);let E={active:["PENDING","RUNNING","RECOVERING","SUBMITTED","STARTING","CANCELLING"],finished:["SUCCEEDED","FAILED","CANCELLED","FAILED_SETUP","FAILED_PRECHECKS","FAILED_NO_RESOURCE","FAILED_CONTROLLER"]},L="__ALL_WORKSPACES__";function R(e,s){return s&&s!==L?e.filter(e=>(e.workspace||"default").toLowerCase()===s.toLowerCase()):e}let _=e=>{if(!e)return"-";let s=e instanceof Date?e:new Date(1e3*e),t=(0,x.GV)(s);if(r.isValidElement(t)&&t.props&&t.props.children&&(t=r.isValidElement(t.props.children)&&t.props.children.props&&t.props.children.props.children?t.props.children.props.children:t.props.children),"string"!=typeof t)return t;let a=function(e){if(!e||"string"!=typeof e)return e;if("just now"===e)return"now";if("less than a minute ago"===e.toLowerCase())return"Less than a minute ago";let s=e.match(/^About\s+(\d+)\s+(\w+)\s+ago$/);if(s){let e=s[1],t=s[2],n={second:"s",seconds:"s",minute:"m",minutes:"m",hour:"h",hours:"h",day:"d",days:"d",month:"mo",months:"mo",year:"yr",years:"yr"};if(n[t])return"".concat(e).concat(n[t]," ago")}let t=e.match(/^a[n]?\s+(\w+)\s+ago$/);if(t){let e=t[1],s={second:"s",minute:"m",hour:"h",day:"d",month:"mo",year:"yr"};if(s[e])return"1".concat(s[e]," ago")}let n=e.match(/^(\d+)\s+(\w+)\s+ago$/);if(n){let e=n[1],s=n[2],t={second:"s",seconds:"s",minute:"m",minutes:"m",hour:"h",hours:"h",day:"d",days:"d",month:"mo",months:"mo",year:"yr",years:"yr"};if(t[s])return"".concat(e).concat(t[s]," ago")}return e}(t);return 7>Math.abs((new Date().getTime()-s.getTime())/864e5)?(0,n.jsx)(x.WH,{content:(0,x.o0)(s),className:"capitalize text-sm text-muted-foreground",children:a}):(0,n.jsx)(x.WH,{content:(0,x.o0)(s),className:"text-sm text-muted-foreground",children:a})};function M(){let e=(0,a.useRouter)(),[s,t]=(0,r.useState)(!1),l=r.useRef(null),[o,d]=(0,r.useState)({isOpen:!1,title:"",message:"",onConfirm:null}),h=(0,v.X)(),[m,f]=(0,r.useState)(L),[g,b]=(0,r.useState)([]);return(0,r.useEffect)(()=>{e.isReady&&e.query.workspace&&f(Array.isArray(e.query.workspace)?e.query.workspace[0]:e.query.workspace)},[e.isReady,e.query.workspace]),(0,r.useEffect)(()=>{(async()=>{try{await S.ZP.preloadForPage("jobs");let e=await C.default.get(j.fX),s=Object.keys(e),t=(await C.default.get(u.getManagedJobs,[{allUsers:!0}])).jobs||[],n=[...new Set(t.map(e=>e.workspace||"default").filter(e=>e))],r=new Set(s);n.forEach(e=>r.add(e)),b(Array.from(r).sort())}catch(e){console.error("Error fetching data for workspace filter:",e),b(["default"])}})()},[]),(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)("div",{className:"flex items-center justify-between mb-4 h-5",children:[(0,n.jsxs)("div",{className:"text-base flex items-center",children:[(0,n.jsx)(i(),{href:"/jobs",className:"text-sky-blue hover:underline leading-none",children:"Managed Jobs"}),(0,n.jsxs)(k.Ph,{value:m,onValueChange:f,children:[(0,n.jsx)(k.i4,{className:"h-8 w-48 ml-4 mr-2 text-sm border-none focus:ring-0 focus:outline-none",children:(0,n.jsx)(k.ki,{placeholder:"Filter by workspace...",children:m===L?"All Workspaces":m})}),(0,n.jsxs)(k.Bw,{children:[(0,n.jsx)(k.Ql,{value:L,children:"All Workspaces"}),g.map(e=>(0,n.jsx)(k.Ql,{value:e,children:e},e))]})]})]}),(0,n.jsxs)("div",{className:"flex items-center space-x-2",children:[s&&(0,n.jsxs)("div",{className:"flex items-center mr-2",children:[(0,n.jsx)(c.Z,{size:15,className:"mt-0"}),(0,n.jsx)("span",{className:"ml-2 text-gray-500 text-sm",children:"Loading..."})]}),(0,n.jsxs)("button",{onClick:()=>{C.default.invalidate(u.getManagedJobs,[{allUsers:!0}]),C.default.invalidate(j.fX),l.current&&l.current()},disabled:s,className:"text-sky-blue hover:text-sky-blue-bright flex items-center",title:"Refresh",children:[(0,n.jsx)(p.Z,{className:"h-4 w-4 mr-1.5"}),!h&&(0,n.jsx)("span",{children:"Refresh"})]})]})]}),(0,n.jsx)(I,{refreshInterval:x.yc,setLoading:t,refreshDataRef:l,workspaceFilter:m}),(0,n.jsx)(w.cV,{isOpen:o.isOpen,onClose:()=>d({...o,isOpen:!1}),onConfirm:o.onConfirm,title:o.title,message:o.message})]})}function I(e){let{refreshInterval:s,setLoading:t,refreshDataRef:a,workspaceFilter:l}=e,[j,p]=(0,r.useState)([]),[g,b]=(0,r.useState)({key:null,direction:"ascending"}),[v,k]=(0,r.useState)(!1),[S,L]=(0,r.useState)(!0),[M,I]=(0,r.useState)(1),[O,W]=(0,r.useState)(10),[F,U]=(0,r.useState)(null),P=(0,r.useRef)(null),[J,T]=(0,r.useState)([]),[Z,B]=(0,r.useState)({}),[V,q]=(0,r.useState)(!1),[G,H]=(0,r.useState)(!1),[X,$]=(0,r.useState)(!1),[K,Q]=(0,r.useState)("all"),[Y,ee]=(0,r.useState)(!0),[es,et]=(0,r.useState)({isOpen:!1,title:"",message:"",onConfirm:null}),en=async()=>{et({isOpen:!0,title:"Restart Controller",message:"Are you sure you want to restart the controller?",onConfirm:async()=>{try{$(!0),k(!0),await (0,u.Ce)("restartcontroller"),await er()}catch(e){console.error("Error restarting controller:",e)}finally{$(!1),k(!1)}}})},er=r.useCallback(async()=>{k(!0),t(!0);try{let[e,s]=await Promise.all([C.default.get(u.getManagedJobs,[{allUsers:!0}]),C.default.get(m.getClusters)]),{jobs:t=[],controllerStopped:n=!1}=e||{},r=null==s?void 0:s.find(e=>(0,N.Ym)(e.cluster)),a=r?r.status:"NOT_FOUND",l=!1;"STOPPED"==a&&n&&(l=!0),"LAUNCHING"==a?H(!0):H(!1),p(t),q(l),L(!1)}catch(e){console.error("Error fetching data:",e),p([]),q(!1),L(!1)}finally{k(!1),t(!1)}},[t]);r.useEffect(()=>{a&&(a.current=er)},[a,er]),(0,r.useEffect)(()=>{p([]);let e=!0;er();let t=setInterval(()=>{e&&er()},s);return()=>{e=!1,clearInterval(t)}},[s,er]),(0,r.useEffect)(()=>{I(1)},[K,null==j?void 0:j.length]),(0,r.useEffect)(()=>{T([]),ee(!0)},[K]);let ea=e=>{let s="ascending";g.key===e&&"ascending"===g.direction&&(s="descending"),b({key:e,direction:s})},el=e=>g.key===e?"ascending"===g.direction?" ↑":" ↓":"";r.useMemo(()=>{let e=j||[];return{active:e.filter(e=>E.active.includes(e.status)).length,finished:e.filter(e=>E.finished.includes(e.status)).length}},[j]);let ei=e=>J.length>0?J.includes(e):"all"===K||E[K].includes(e),ec=r.useMemo(()=>{let e=R(j,l);return J.length>0?e.filter(e=>J.includes(e.status)):Y?"all"===K?e:e.filter(e=>E[K].includes(e.status)):[]},[j,K,J,Y,l]),eo=r.useMemo(()=>g.key?[...ec].sort((e,s)=>e[g.key]<s[g.key]?"ascending"===g.direction?-1:1:e[g.key]>s[g.key]?"ascending"===g.direction?1:-1:0):ec,[ec,g]),ed=Math.ceil(eo.length/O),eh=(M-1)*O,ex=eh+O,eu=eo.slice(eh,ex),em=e=>{if(J.includes(e)){let s=J.filter(s=>s!==e);0===s.length?(ee(!0),T([])):(T(s),ee(!1))}else T([...J,e]),ee(!1)};return(0,r.useEffect)(()=>{B((j||[]).reduce((e,s)=>(e[s.status]=(e[s.status]||0)+1,e),{}))},[j]),(0,n.jsxs)("div",{className:"relative",children:[(0,n.jsx)("div",{className:"flex flex-col space-y-1 mb-1",children:(0,n.jsxs)("div",{className:"flex flex-wrap items-center text-sm mb-1",children:[(0,n.jsx)("span",{className:"mr-2 text-sm font-medium",children:"Statuses:"}),(0,n.jsxs)("div",{className:"flex flex-wrap gap-2 items-center",children:[!v&&(!j||0===j.length)&&!S&&(0,n.jsx)("span",{className:"text-gray-500 mr-2",children:"No jobs found"}),Object.entries(Z).map(e=>{let[s,t]=e;return(0,n.jsxs)("button",{onClick:()=>em(s),className:"px-3 py-1 rounded-full flex items-center space-x-2 ".concat(ei(s)||J.includes(s)?(0,y.Cl)(s):"bg-gray-50 text-gray-600 hover:bg-gray-100"),children:[(0,n.jsx)("span",{children:s}),(0,n.jsx)("span",{className:"text-xs ".concat(ei(s)||J.includes(s)?"bg-white/50":"bg-gray-200"," px-1.5 py-0.5 rounded"),children:t})]},s)}),j&&j.length>0&&(0,n.jsxs)("div",{className:"flex items-center ml-2 gap-2",children:[(0,n.jsx)("span",{className:"text-gray-500",children:"("}),(0,n.jsx)("button",{onClick:()=>{Q("all"),T([]),ee(!0)},className:"text-sm font-medium ".concat("all"===K&&Y?"text-purple-700 underline":"text-gray-600 hover:text-purple-700 hover:underline"),children:"show all jobs"}),(0,n.jsx)("span",{className:"text-gray-500 mx-1",children:"|"}),(0,n.jsx)("button",{onClick:()=>{Q("active"),T([]),ee(!0)},className:"text-sm font-medium ".concat("active"===K&&Y?"text-green-700 underline":"text-gray-600 hover:text-green-700 hover:underline"),children:"show all active jobs"}),(0,n.jsx)("span",{className:"text-gray-500 mx-1",children:"|"}),(0,n.jsx)("button",{onClick:()=>{Q("finished"),T([]),ee(!0)},className:"text-sm font-medium ".concat("finished"===K&&Y?"text-blue-700 underline":"text-gray-600 hover:text-blue-700 hover:underline"),children:"show all finished jobs"}),(0,n.jsx)("span",{className:"text-gray-500",children:")"})]})]})]})}),(0,n.jsx)(d.Zb,{children:(0,n.jsxs)(h.iA,{children:[(0,n.jsx)(h.xD,{children:(0,n.jsxs)(h.SC,{children:[(0,n.jsxs)(h.ss,{className:"sortable whitespace-nowrap",onClick:()=>ea("id"),children:["ID",el("id")]}),(0,n.jsxs)(h.ss,{className:"sortable whitespace-nowrap",onClick:()=>ea("name"),children:["Name",el("name")]}),(0,n.jsxs)(h.ss,{className:"sortable whitespace-nowrap",onClick:()=>ea("user"),children:["User",el("user")]}),(0,n.jsxs)(h.ss,{className:"sortable whitespace-nowrap",onClick:()=>ea("workspace"),children:["Workspace",el("workspace")]}),(0,n.jsxs)(h.ss,{className:"sortable whitespace-nowrap",onClick:()=>ea("submitted_at"),children:["Submitted",el("submitted_at")]}),(0,n.jsxs)(h.ss,{className:"sortable whitespace-nowrap",onClick:()=>ea("job_duration"),children:["Duration",el("job_duration")]}),(0,n.jsxs)(h.ss,{className:"sortable whitespace-nowrap",onClick:()=>ea("status"),children:["Status",el("status")]}),(0,n.jsxs)(h.ss,{className:"sortable whitespace-nowrap",onClick:()=>ea("priority"),children:["Priority",el("priority")]}),(0,n.jsxs)(h.ss,{className:"sortable whitespace-nowrap",onClick:()=>ea("resources_str"),children:["Requested",el("resources_str")]}),(0,n.jsxs)(h.ss,{className:"sortable whitespace-nowrap",onClick:()=>ea("infra"),children:["Infra",el("infra")]}),(0,n.jsxs)(h.ss,{className:"sortable whitespace-nowrap",onClick:()=>ea("cluster"),children:["Resources",el("cluster")]}),(0,n.jsxs)(h.ss,{className:"sortable whitespace-nowrap",onClick:()=>ea("recoveries"),children:["Recoveries",el("recoveries")]}),(0,n.jsx)(h.ss,{children:"Details"}),(0,n.jsx)(h.ss,{children:"Logs"})]})}),(0,n.jsx)(h.RM,{children:v||S?(0,n.jsx)(h.SC,{children:(0,n.jsx)(h.pj,{colSpan:13,className:"text-center py-6 text-gray-500",children:(0,n.jsxs)("div",{className:"flex justify-center items-center",children:[(0,n.jsx)(c.Z,{size:20,className:"mr-2"}),(0,n.jsx)("span",{children:"Loading..."})]})})}):eu.length>0?(0,n.jsx)(n.Fragment,{children:eu.map(e=>(0,n.jsxs)(r.Fragment,{children:[(0,n.jsxs)(h.SC,{children:[(0,n.jsx)(h.pj,{children:(0,n.jsx)(i(),{href:"/jobs/".concat(e.id),className:"text-blue-600",children:e.id})}),(0,n.jsx)(h.pj,{children:(0,n.jsx)(i(),{href:"/jobs/".concat(e.id),className:"text-blue-600",children:e.name})}),(0,n.jsx)(h.pj,{children:e.user}),(0,n.jsx)(h.pj,{children:(0,n.jsx)(i(),{href:"/workspaces",className:"text-blue-600 hover:underline",children:e.workspace||"default"})}),(0,n.jsx)(h.pj,{children:_(e.submitted_at)}),(0,n.jsx)(h.pj,{children:(0,x.LU)(e.job_duration)}),(0,n.jsx)(h.pj,{children:(0,n.jsx)(y.OE,{status:e.status})}),(0,n.jsx)(h.pj,{children:e.priority}),(0,n.jsx)(h.pj,{children:e.requested_resources}),(0,n.jsx)(h.pj,{children:e.infra&&"-"!==e.infra?(0,n.jsx)(x.Md,{content:e.full_infra||e.infra,className:"text-sm text-muted-foreground",children:(0,n.jsxs)("span",{children:[(0,n.jsx)(i(),{href:"/infra",className:"text-blue-600 hover:underline",children:e.cloud||e.infra.split("(")[0].trim()}),e.infra.includes("(")&&(0,n.jsx)("span",{children:" "+e.infra.substring(e.infra.indexOf("("))})]})}):(0,n.jsx)("span",{children:e.infra||"-"})}),(0,n.jsx)(h.pj,{children:(0,n.jsx)(x.Md,{content:e.resources_str_full||e.resources_str,className:"text-sm text-muted-foreground",children:(0,n.jsx)("span",{children:e.resources_str})})}),(0,n.jsx)(h.pj,{children:e.recoveries}),(0,n.jsx)(h.pj,{children:e.details?(0,n.jsx)(z,{text:e.details,rowId:e.id,expandedRowId:F,setExpandedRowId:U}):"-"}),(0,n.jsx)(h.pj,{children:(0,n.jsx)(D,{jobParent:"/jobs",jobId:e.id,managed:!0})})]}),F===e.id&&(0,n.jsx)(A,{text:e.details,colSpan:13,innerRef:P})]},e.id))}):(0,n.jsx)(h.SC,{children:(0,n.jsx)(h.pj,{colSpan:13,className:"text-center py-6",children:(0,n.jsxs)("div",{className:"flex flex-col items-center space-y-4",children:[G&&(0,n.jsxs)("div",{className:"flex flex-col items-center space-y-2",children:[(0,n.jsx)("p",{className:"text-gray-700",children:"The managed job controller is launching. It will be ready shortly."}),(0,n.jsxs)("div",{className:"flex items-center",children:[(0,n.jsx)(c.Z,{size:12,className:"mr-2"}),(0,n.jsx)("span",{className:"text-gray-500",children:"Launching..."})]})]}),!V&&!G&&(0,n.jsx)("p",{className:"text-gray-500",children:"No active jobs"}),V&&(0,n.jsxs)("div",{className:"flex flex-col items-center space-y-2",children:[(0,n.jsx)("p",{className:"text-gray-700",children:"The managed job controller has been stopped. Restart to check the latest job status."}),(0,n.jsx)(o.z,{variant:"outline",size:"sm",onClick:en,className:"text-sky-blue hover:text-sky-blue-bright",disabled:v||X,children:X?(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(c.Z,{size:12,className:"mr-2"}),"Restarting..."]}):(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(f.Z,{className:"h-4 w-4 mr-2"}),"Restart Controller"]})})]})]})})})})]})}),eo&&eo.length>0&&(0,n.jsx)("div",{className:"flex justify-end items-center py-2 px-4 text-sm text-gray-700",children:(0,n.jsxs)("div",{className:"flex items-center space-x-4",children:[(0,n.jsxs)("div",{className:"flex items-center",children:[(0,n.jsx)("span",{className:"mr-2",children:"Rows per page:"}),(0,n.jsxs)("div",{className:"relative inline-block",children:[(0,n.jsxs)("select",{value:O,onChange:e=>{W(parseInt(e.target.value,10)),I(1)},className:"py-1 pl-2 pr-6 appearance-none outline-none cursor-pointer border-none bg-transparent",style:{minWidth:"40px"},children:[(0,n.jsx)("option",{value:10,children:"10"}),(0,n.jsx)("option",{value:30,children:"30"}),(0,n.jsx)("option",{value:50,children:"50"}),(0,n.jsx)("option",{value:100,children:"100"}),(0,n.jsx)("option",{value:200,children:"200"})]}),(0,n.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",className:"h-4 w-4 text-gray-500 absolute right-0 top-1/2 transform -translate-y-1/2 pointer-events-none",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:(0,n.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M19 9l-7 7-7-7"})})]})]}),(0,n.jsxs)("div",{children:[eh+1," – ",Math.min(ex,eo.length)," of"," ",eo.length]}),(0,n.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,n.jsx)(o.z,{variant:"ghost",size:"icon",onClick:()=>{I(e=>Math.max(e-1,1))},disabled:1===M,className:"text-gray-500 h-8 w-8 p-0",children:(0,n.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",className:"chevron-left",children:(0,n.jsx)("path",{d:"M15 18l-6-6 6-6"})})}),(0,n.jsx)(o.z,{variant:"ghost",size:"icon",onClick:()=>{I(e=>Math.min(e+1,ed))},disabled:M===ed||0===ed,className:"text-gray-500 h-8 w-8 p-0",children:(0,n.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",className:"chevron-right",children:(0,n.jsx)("path",{d:"M9 18l6-6-6-6"})})})]})]})}),(0,n.jsx)(w.cV,{isOpen:es.isOpen,onClose:()=>et({...es,isOpen:!1}),onConfirm:es.onConfirm,title:es.title,message:es.message,confirmClassName:"bg-blue-600 hover:bg-blue-700 text-white"})]})}function D(e){let{withLabel:s=!1,jobParent:t,jobId:r,managed:l}=e,i=(0,a.useRouter)(),c=(e,s)=>{e.preventDefault(),e.stopPropagation(),i.push({pathname:"".concat(t,"/").concat(r),query:{tab:s}})};return(0,n.jsxs)("div",{className:"flex items-center space-x-4",children:[(0,n.jsx)(x.WH,{content:"View Job Logs",className:"capitalize text-sm text-muted-foreground",children:(0,n.jsxs)("button",{onClick:e=>c(e,"logs"),className:"text-sky-blue hover:text-sky-blue-bright font-medium inline-flex items-center h-8",children:[(0,n.jsx)(g.Z,{className:"w-4 h-4"}),s&&(0,n.jsx)("span",{className:"ml-1.5",children:"Logs"})]})},"logs"),l&&(0,n.jsx)(x.WH,{content:"View Controller Logs",className:"capitalize text-sm text-muted-foreground",children:(0,n.jsxs)("button",{onClick:e=>c(e,"controllerlogs"),className:"text-sky-blue hover:text-sky-blue-bright font-medium inline-flex items-center h-8",children:[(0,n.jsx)(b.Z,{className:"w-4 h-4"}),s&&(0,n.jsx)("span",{className:"ml-2",children:"Controller Logs"})]})},"controllerlogs")]})}function O(e){let{clusterName:s,clusterJobData:t,loading:a,refreshClusterJobsOnly:l}=e,[u,m]=(0,r.useState)(null),[j,f]=(0,r.useState)({key:null,direction:"ascending"}),[g,b]=(0,r.useState)(1),[w,N]=(0,r.useState)(10),v=(0,r.useRef)(null),[k,C]=(0,r.useState)(null);(0,r.useEffect)(()=>{let e=e=>{u&&v.current&&!v.current.contains(e.target)&&m(null)};return document.addEventListener("mousedown",e),()=>{document.removeEventListener("mousedown",e)}},[u]);let S=r.useMemo(()=>t||[],[t]);(0,r.useEffect)(()=>{JSON.stringify(t)!==JSON.stringify(k)&&C(t)},[t,k]);let E=r.useMemo(()=>j.key?[...S].sort((e,s)=>e[j.key]<s[j.key]?"ascending"===j.direction?-1:1:e[j.key]>s[j.key]?"ascending"===j.direction?1:-1:0):S,[S,j]),L=e=>{let s="ascending";j.key===e&&"ascending"===j.direction&&(s="descending"),f({key:e,direction:s})},R=e=>j.key===e?"ascending"===j.direction?" ↑":" ↓":"",M=Math.ceil(E.length/w),I=(g-1)*w,O=I+w,W=E.slice(I,O);return(0,n.jsxs)("div",{className:"relative",children:[(0,n.jsxs)(d.Zb,{children:[(0,n.jsxs)("div",{className:"flex items-center justify-between p-4",children:[(0,n.jsx)("h3",{className:"text-lg font-semibold",children:"Cluster Jobs"}),(0,n.jsx)("div",{className:"flex items-center",children:l&&(0,n.jsxs)("button",{onClick:l,disabled:a,className:"text-sky-blue hover:text-sky-blue-bright font-medium inline-flex items-center text-sm ml-2",children:[(0,n.jsx)(p.Z,{className:"w-4 h-4 mr-1"}),"Refresh Jobs"]})})]}),(0,n.jsxs)(h.iA,{children:[(0,n.jsx)(h.xD,{children:(0,n.jsxs)(h.SC,{children:[(0,n.jsxs)(h.ss,{className:"sortable whitespace-nowrap",onClick:()=>L("id"),children:["ID",R("id")]}),(0,n.jsxs)(h.ss,{className:"sortable whitespace-nowrap",onClick:()=>L("job"),children:["Name",R("job")]}),(0,n.jsxs)(h.ss,{className:"sortable whitespace-nowrap",onClick:()=>L("user"),children:["User",R("user")]}),(0,n.jsxs)(h.ss,{className:"sortable whitespace-nowrap",onClick:()=>L("workspace"),children:["Workspace",R("workspace")]}),(0,n.jsxs)(h.ss,{className:"sortable whitespace-nowrap",onClick:()=>L("submitted_at"),children:["Submitted",R("submitted_at")]}),(0,n.jsxs)(h.ss,{className:"sortable whitespace-nowrap",onClick:()=>L("job_duration"),children:["Duration",R("job_duration")]}),(0,n.jsxs)(h.ss,{className:"sortable whitespace-nowrap",onClick:()=>L("status"),children:["Status",R("status")]}),(0,n.jsxs)(h.ss,{className:"sortable whitespace-nowrap",onClick:()=>L("resources"),children:["Resources",R("resources")]}),(0,n.jsx)(h.ss,{className:"whitespace-nowrap",children:"Logs"})]})}),(0,n.jsx)(h.RM,{children:a?(0,n.jsx)(h.SC,{children:(0,n.jsx)(h.pj,{colSpan:9,className:"text-center py-12 text-gray-500",children:(0,n.jsxs)("div",{className:"flex justify-center items-center",children:[(0,n.jsx)(c.Z,{size:24,className:"mr-2"}),(0,n.jsx)("span",{children:"Loading cluster jobs..."})]})})}):W.length>0?W.map(e=>(0,n.jsxs)(r.Fragment,{children:[(0,n.jsxs)(h.SC,{className:u===e.id?"selected-row":"",children:[(0,n.jsx)(h.pj,{children:(0,n.jsx)(i(),{href:"/clusters/".concat(s,"/").concat(e.id),className:"text-blue-600",children:e.id})}),(0,n.jsx)(h.pj,{children:(0,n.jsx)(i(),{href:"/clusters/".concat(s,"/").concat(e.id),className:"text-blue-600",children:(0,n.jsx)(z,{text:e.job||"Unnamed job",rowId:e.id,expandedRowId:u,setExpandedRowId:m})})}),(0,n.jsx)(h.pj,{children:e.user}),(0,n.jsx)(h.pj,{children:(0,n.jsx)(i(),{href:"/workspaces",className:"text-blue-600 hover:underline",children:e.workspace||"default"})}),(0,n.jsx)(h.pj,{children:_(e.submitted_at)}),(0,n.jsx)(h.pj,{children:(0,x.LU)(e.job_duration)}),(0,n.jsx)(h.pj,{children:(0,n.jsx)(y.OE,{status:e.status})}),(0,n.jsx)(h.pj,{children:e.resources}),(0,n.jsx)(h.pj,{className:"flex content-center items-center",children:(0,n.jsx)(D,{jobParent:"/clusters/".concat(s),jobId:e.id,managed:!1})})]}),u===e.id&&(0,n.jsx)(A,{text:e.job||"Unnamed job",colSpan:9,innerRef:v})]},e.id)):(0,n.jsx)(h.SC,{children:(0,n.jsx)(h.pj,{colSpan:8,className:"text-center py-6 text-gray-500",children:"No jobs found"})})})]})]}),E&&E.length>0&&(0,n.jsx)("div",{className:"flex justify-end items-center py-2 px-4 text-sm text-gray-700",children:(0,n.jsxs)("div",{className:"flex items-center space-x-4",children:[(0,n.jsxs)("div",{className:"flex items-center",children:[(0,n.jsx)("span",{className:"mr-2",children:"Rows per page:"}),(0,n.jsxs)("div",{className:"relative inline-block",children:[(0,n.jsxs)("select",{value:w,onChange:e=>{N(parseInt(e.target.value,10)),b(1)},className:"py-1 pl-2 pr-6 appearance-none outline-none cursor-pointer border-none bg-transparent",style:{minWidth:"40px"},children:[(0,n.jsx)("option",{value:5,children:"5"}),(0,n.jsx)("option",{value:10,children:"10"}),(0,n.jsx)("option",{value:20,children:"20"}),(0,n.jsx)("option",{value:50,children:"50"})]}),(0,n.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",className:"h-4 w-4 text-gray-500 absolute right-0 top-1/2 transform -translate-y-1/2 pointer-events-none",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:(0,n.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M19 9l-7 7-7-7"})})]})]}),(0,n.jsxs)("div",{children:[I+1," – ",Math.min(O,E.length)," of"," ",E.length]}),(0,n.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,n.jsx)(o.z,{variant:"ghost",size:"icon",onClick:()=>{b(e=>Math.max(e-1,1))},disabled:1===g,className:"text-gray-500 h-8 w-8 p-0",children:(0,n.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",className:"chevron-left",children:(0,n.jsx)("path",{d:"M15 18l-6-6 6-6"})})}),(0,n.jsx)(o.z,{variant:"ghost",size:"icon",onClick:()=>{b(e=>Math.min(e+1,M))},disabled:g===M||0===M,className:"text-gray-500 h-8 w-8 p-0",children:(0,n.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",className:"chevron-right",children:(0,n.jsx)("path",{d:"M9 18l6-6-6-6"})})})]})]})})]})}function A(e){let{text:s,colSpan:t,innerRef:r}=e;return(0,n.jsx)(h.SC,{className:"expanded-details",children:(0,n.jsx)(h.pj,{colSpan:t,children:(0,n.jsx)("div",{className:"p-4 bg-gray-50 rounded-md border border-gray-200",ref:r,children:(0,n.jsx)("div",{className:"flex justify-between items-start",children:(0,n.jsxs)("div",{className:"flex-1",children:[(0,n.jsx)("p",{className:"text-sm font-medium text-gray-900",children:"Full Details"}),(0,n.jsx)("p",{className:"mt-1 text-sm text-gray-700",style:{whiteSpace:"pre-wrap"},children:s})]})})})})})}function z(e){let{text:s,rowId:t,expandedRowId:a,setExpandedRowId:l}=e,i=s||"",c=i.length>50,o=a===t,d=c?"".concat(i.substring(0,50)):i,h=(0,r.useRef)(null);return(0,n.jsxs)("div",{className:"truncated-details relative max-w-full flex items-center",children:[(0,n.jsx)("span",{className:"truncate",children:d}),c&&(0,n.jsx)("button",{ref:h,type:"button",onClick:e=>{e.preventDefault(),e.stopPropagation(),l(o?null:t)},className:"text-blue-600 hover:text-blue-800 font-medium ml-1 flex-shrink-0","data-button-type":"show-more-less",children:o?"... show less":"... show more"})]})}}}]);
|
@@ -1 +1 @@
|
|
1
|
-
!function(){"use strict";var e,t,n,r,c,o,u,a,i,f={},s={};function d(e){var t=s[e];if(void 0!==t)return t.exports;var n=s[e]={exports:{}},r=!0;try{f[e](n,n.exports,d),r=!1}finally{r&&delete s[e]}return n.exports}d.m=f,e=[],d.O=function(t,n,r,c){if(n){c=c||0;for(var o=e.length;o>0&&e[o-1][2]>c;o--)e[o]=e[o-1];e[o]=[n,r,c];return}for(var u=1/0,o=0;o<e.length;o++){for(var n=e[o][0],r=e[o][1],c=e[o][2],a=!0,i=0;i<n.length;i++)u>=c&&Object.keys(d.O).every(function(e){return d.O[e](n[i])})?n.splice(i--,1):(a=!1,c<u&&(u=c));if(a){e.splice(o--,1);var f=r();void 0!==f&&(t=f)}}return t},d.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return d.d(t,{a:t}),t},n=Object.getPrototypeOf?function(e){return Object.getPrototypeOf(e)}:function(e){return e.__proto__},d.t=function(e,r){if(1&r&&(e=this(e)),8&r||"object"==typeof e&&e&&(4&r&&e.__esModule||16&r&&"function"==typeof e.then))return e;var c=Object.create(null);d.r(c);var o={};t=t||[null,n({}),n([]),n(n)];for(var u=2&r&&e;"object"==typeof u&&!~t.indexOf(u);u=n(u))Object.getOwnPropertyNames(u).forEach(function(t){o[t]=function(){return e[t]}});return o.default=function(){return e},d.d(c,o),c},d.d=function(e,t){for(var n in t)d.o(t,n)&&!d.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},d.f={},d.e=function(e){return Promise.all(Object.keys(d.f).reduce(function(t,n){return d.f[n](e,t),t},[]))},d.u=function(e){return 350===e?"static/chunks/350.9e123a4551f68b0d.js":491===e?"static/chunks/491.b3d264269613fe09.js":937===e?"static/chunks/937.3759f538f11a0953.js":42===e?"static/chunks/42.d39e24467181b06b.js":682===e?"static/chunks/682.4dd5dc116f740b5f.js":211===e?"static/chunks/211.692afc57e812ae1a.js":600===e?"static/chunks/600.
|
1
|
+
!function(){"use strict";var e,t,n,r,c,o,u,a,i,f={},s={};function d(e){var t=s[e];if(void 0!==t)return t.exports;var n=s[e]={exports:{}},r=!0;try{f[e](n,n.exports,d),r=!1}finally{r&&delete s[e]}return n.exports}d.m=f,e=[],d.O=function(t,n,r,c){if(n){c=c||0;for(var o=e.length;o>0&&e[o-1][2]>c;o--)e[o]=e[o-1];e[o]=[n,r,c];return}for(var u=1/0,o=0;o<e.length;o++){for(var n=e[o][0],r=e[o][1],c=e[o][2],a=!0,i=0;i<n.length;i++)u>=c&&Object.keys(d.O).every(function(e){return d.O[e](n[i])})?n.splice(i--,1):(a=!1,c<u&&(u=c));if(a){e.splice(o--,1);var f=r();void 0!==f&&(t=f)}}return t},d.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return d.d(t,{a:t}),t},n=Object.getPrototypeOf?function(e){return Object.getPrototypeOf(e)}:function(e){return e.__proto__},d.t=function(e,r){if(1&r&&(e=this(e)),8&r||"object"==typeof e&&e&&(4&r&&e.__esModule||16&r&&"function"==typeof e.then))return e;var c=Object.create(null);d.r(c);var o={};t=t||[null,n({}),n([]),n(n)];for(var u=2&r&&e;"object"==typeof u&&!~t.indexOf(u);u=n(u))Object.getOwnPropertyNames(u).forEach(function(t){o[t]=function(){return e[t]}});return o.default=function(){return e},d.d(c,o),c},d.d=function(e,t){for(var n in t)d.o(t,n)&&!d.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},d.f={},d.e=function(e){return Promise.all(Object.keys(d.f).reduce(function(t,n){return d.f[n](e,t),t},[]))},d.u=function(e){return 350===e?"static/chunks/350.9e123a4551f68b0d.js":491===e?"static/chunks/491.b3d264269613fe09.js":937===e?"static/chunks/937.3759f538f11a0953.js":42===e?"static/chunks/42.d39e24467181b06b.js":682===e?"static/chunks/682.4dd5dc116f740b5f.js":211===e?"static/chunks/211.692afc57e812ae1a.js":600===e?"static/chunks/600.15a0009177e86b86.js":513===e?"static/chunks/513.211357a2914a34b2.js":443===e?"static/chunks/443.b2242d0efcdf5f47.js":"static/chunks/"+e+"-"+({37:"d8aebf1683522a0b",470:"4d1a5dbe58a8a2b9",616:"d6128fa9e7cae6e6",664:"047bc03493fda379",760:"a89d354797ce7af5",798:"c0525dc3f21e488d",799:"3625946b2ec2eb30",804:"4c9fc53aa74bc191",843:"6fcc4bf91ac45b39",856:"0776dc6ed6000c39",901:"b424d293275e1fd7",938:"ab185187a63f9cdb",947:"6620842ef80ae879",969:"20d54a9d998dc102",973:"c807fc34f09c7df3"})[e]+".js"},d.miniCssF=function(e){},d.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r={},c="_N_E:",d.l=function(e,t,n,o){if(r[e]){r[e].push(t);return}if(void 0!==n)for(var u,a,i=document.getElementsByTagName("script"),f=0;f<i.length;f++){var s=i[f];if(s.getAttribute("src")==e||s.getAttribute("data-webpack")==c+n){u=s;break}}u||(a=!0,(u=document.createElement("script")).charset="utf-8",u.timeout=120,d.nc&&u.setAttribute("nonce",d.nc),u.setAttribute("data-webpack",c+n),u.src=d.tu(e)),r[e]=[t];var l=function(t,n){u.onerror=u.onload=null,clearTimeout(b);var c=r[e];if(delete r[e],u.parentNode&&u.parentNode.removeChild(u),c&&c.forEach(function(e){return e(n)}),t)return t(n)},b=setTimeout(l.bind(null,void 0,{type:"timeout",target:u}),12e4);u.onerror=l.bind(null,u.onerror),u.onload=l.bind(null,u.onload),a&&document.head.appendChild(u)},d.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},d.tt=function(){return void 0===o&&(o={createScriptURL:function(e){return e}},"undefined"!=typeof trustedTypes&&trustedTypes.createPolicy&&(o=trustedTypes.createPolicy("nextjs#bundler",o))),o},d.tu=function(e){return d.tt().createScriptURL(e)},d.p="/dashboard/_next/",u={272:0},d.f.j=function(e,t){var n=d.o(u,e)?u[e]:void 0;if(0!==n){if(n)t.push(n[2]);else if(272!=e){var r=new Promise(function(t,r){n=u[e]=[t,r]});t.push(n[2]=r);var c=d.p+d.u(e),o=Error();d.l(c,function(t){if(d.o(u,e)&&(0!==(n=u[e])&&(u[e]=void 0),n)){var r=t&&("load"===t.type?"missing":t.type),c=t&&t.target&&t.target.src;o.message="Loading chunk "+e+" failed.\n("+r+": "+c+")",o.name="ChunkLoadError",o.type=r,o.request=c,n[1](o)}},"chunk-"+e,e)}else u[e]=0}},d.O.j=function(e){return 0===u[e]},a=function(e,t){var n,r,c=t[0],o=t[1],a=t[2],i=0;if(c.some(function(e){return 0!==u[e]})){for(n in o)d.o(o,n)&&(d.m[n]=o[n]);if(a)var f=a(d)}for(e&&e(t);i<c.length;i++)r=c[i],d.o(u,r)&&u[r]&&u[r][0](),u[r]=0;return d.O(f)},(i=self.webpackChunk_N_E=self.webpackChunk_N_E||[]).forEach(a.bind(null,0)),i.push=a.bind(null,i.push.bind(i)),d.nc=void 0}();
|