skypilot-nightly 1.0.0.dev20250528__tar.gz → 1.0.0.dev20250529__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.dev20250528/skypilot_nightly.egg-info → skypilot_nightly-1.0.0.dev20250529}/PKG-INFO +3 -1
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/__init__.py +2 -2
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/cli.py +13 -3
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/client/cli.py +13 -3
- skypilot_nightly-1.0.0.dev20250529/sky/client/oauth.py +82 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/client/sdk.py +60 -10
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/clouds/service_catalog/data_fetchers/fetch_gcp.py +3 -3
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/dashboard/out/404.html +1 -1
- skypilot_nightly-1.0.0.dev20250529/sky/dashboard/out/_next/static/HvNkg7hqKM1p0ptAcdDcF/_buildManifest.js +1 -0
- skypilot_nightly-1.0.0.dev20250529/sky/dashboard/out/_next/static/chunks/236-90e5498a5b00ec29.js +6 -0
- skypilot_nightly-1.0.0.dev20250529/sky/dashboard/out/_next/static/chunks/303-2c7b0f7af571710b.js +6 -0
- skypilot_nightly-1.0.0.dev20250528/sky/dashboard/out/_next/static/chunks/856-62b87c68917b08ed.js → skypilot_nightly-1.0.0.dev20250529/sky/dashboard/out/_next/static/chunks/856-59a1760784c9e770.js +1 -1
- skypilot_nightly-1.0.0.dev20250529/sky/dashboard/out/_next/static/chunks/pages/config-7c48919fe030bc43.js +6 -0
- skypilot_nightly-1.0.0.dev20250529/sky/dashboard/out/_next/static/chunks/pages/infra/[context]-909f1ceb0fcf1b99.js +1 -0
- skypilot_nightly-1.0.0.dev20250529/sky/dashboard/out/_next/static/chunks/pages/infra-d4c6875c88771e17.js +1 -0
- skypilot_nightly-1.0.0.dev20250529/sky/dashboard/out/_next/static/chunks/pages/jobs/[job]-6b80e9e0c6aa16a1.js +6 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/dashboard/out/clusters/[cluster]/[job].html +1 -1
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/dashboard/out/clusters/[cluster].html +1 -1
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/dashboard/out/clusters.html +1 -1
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/dashboard/out/config.html +1 -1
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/dashboard/out/index.html +1 -1
- skypilot_nightly-1.0.0.dev20250529/sky/dashboard/out/infra/[context].html +1 -0
- skypilot_nightly-1.0.0.dev20250529/sky/dashboard/out/infra.html +1 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/dashboard/out/jobs/[job].html +1 -1
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/dashboard/out/jobs.html +1 -1
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/dashboard/out/users.html +1 -1
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/dashboard/out/workspace/new.html +1 -1
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/dashboard/out/workspaces/[name].html +1 -1
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/dashboard/out/workspaces.html +1 -1
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/exceptions.py +1 -1
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/jobs/client/sdk.py +1 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/jobs/constants.py +2 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/jobs/controller.py +3 -5
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/jobs/recovery_strategy.py +148 -102
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/jobs/scheduler.py +23 -8
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/jobs/server/core.py +16 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/jobs/state.py +130 -35
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/jobs/utils.py +30 -4
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/resources.py +16 -1
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/server/common.py +6 -2
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/server/html/token_page.html +32 -6
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/server/server.py +3 -1
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/setup_files/dependencies.py +7 -1
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/skylet/constants.py +1 -1
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/task.py +26 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/templates/jobs-controller.yaml.j2 +2 -1
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/utils/schemas.py +12 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529/skypilot_nightly.egg-info}/PKG-INFO +3 -1
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/skypilot_nightly.egg-info/SOURCES.txt +11 -7
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/skypilot_nightly.egg-info/requires.txt +2 -0
- skypilot_nightly-1.0.0.dev20250528/sky/dashboard/out/_next/static/Mx1iAbDQn1jMHh3UHmK3R/_buildManifest.js +0 -1
- skypilot_nightly-1.0.0.dev20250528/sky/dashboard/out/_next/static/chunks/236-d6900c828331f664.js +0 -6
- skypilot_nightly-1.0.0.dev20250528/sky/dashboard/out/_next/static/chunks/pages/config-41738d1896fc02fe.js +0 -6
- skypilot_nightly-1.0.0.dev20250528/sky/dashboard/out/_next/static/chunks/pages/infra-881fcd902fbbd0e5.js +0 -6
- skypilot_nightly-1.0.0.dev20250528/sky/dashboard/out/_next/static/chunks/pages/jobs/[job]-2c29e97a6aa50dd4.js +0 -6
- skypilot_nightly-1.0.0.dev20250528/sky/dashboard/out/infra.html +0 -1
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/LICENSE +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/MANIFEST.in +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/README.md +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/pyproject.toml +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/setup.cfg +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/setup.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/adaptors/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/adaptors/aws.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/adaptors/azure.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/adaptors/cloudflare.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/adaptors/common.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/adaptors/cudo.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/adaptors/do.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/adaptors/docker.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/adaptors/gcp.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/adaptors/ibm.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/adaptors/kubernetes.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/adaptors/nebius.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/adaptors/oci.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/adaptors/runpod.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/adaptors/vast.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/adaptors/vsphere.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/admin_policy.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/authentication.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/backends/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/backends/backend.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/backends/backend_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/backends/cloud_vm_ray_backend.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/backends/docker_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/backends/local_docker_backend.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/backends/monkey_patches/monkey_patch_ray_up.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/backends/wheel_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/benchmark/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/benchmark/benchmark_state.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/benchmark/benchmark_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/check.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/client/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/client/common.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/cloud_stores.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/clouds/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/clouds/aws.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/clouds/azure.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/clouds/cloud.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/clouds/cudo.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/clouds/do.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/clouds/fluidstack.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/clouds/gcp.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/clouds/ibm.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/clouds/kubernetes.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/clouds/lambda_cloud.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/clouds/nebius.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/clouds/oci.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/clouds/paperspace.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/clouds/runpod.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/clouds/scp.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/clouds/service_catalog/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/clouds/service_catalog/aws_catalog.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/clouds/service_catalog/azure_catalog.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/clouds/service_catalog/common.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/clouds/service_catalog/config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/clouds/service_catalog/constants.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/clouds/service_catalog/cudo_catalog.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/clouds/service_catalog/data_fetchers/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/clouds/service_catalog/data_fetchers/fetch_aws.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/clouds/service_catalog/data_fetchers/fetch_azure.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/clouds/service_catalog/data_fetchers/fetch_cudo.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/clouds/service_catalog/data_fetchers/fetch_fluidstack.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/clouds/service_catalog/data_fetchers/fetch_ibm.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/clouds/service_catalog/data_fetchers/fetch_lambda_cloud.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/clouds/service_catalog/data_fetchers/fetch_vast.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/clouds/service_catalog/data_fetchers/fetch_vsphere.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/clouds/service_catalog/do_catalog.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/clouds/service_catalog/fluidstack_catalog.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/clouds/service_catalog/gcp_catalog.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/clouds/service_catalog/ibm_catalog.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/clouds/service_catalog/kubernetes_catalog.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/clouds/service_catalog/lambda_catalog.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/clouds/service_catalog/nebius_catalog.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/clouds/service_catalog/oci_catalog.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/clouds/service_catalog/paperspace_catalog.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/clouds/service_catalog/runpod_catalog.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/clouds/service_catalog/scp_catalog.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/clouds/service_catalog/ssh_catalog.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/clouds/service_catalog/vast_catalog.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/clouds/service_catalog/vsphere_catalog.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/clouds/ssh.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/clouds/utils/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/clouds/utils/aws_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/clouds/utils/azure_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/clouds/utils/gcp_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/clouds/utils/oci_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/clouds/utils/scp_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/clouds/vast.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/clouds/vsphere.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/core.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/dag.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528/sky/dashboard/out/_next/static/Mx1iAbDQn1jMHh3UHmK3R → skypilot_nightly-1.0.0.dev20250529/sky/dashboard/out/_next/static/HvNkg7hqKM1p0ptAcdDcF}/_ssgManifest.js +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/dashboard/out/_next/static/chunks/121-8f55ee3fa6301784.js +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/dashboard/out/_next/static/chunks/173-7db8607cefc20f70.js +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/dashboard/out/_next/static/chunks/293-351268365226d251.js +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/dashboard/out/_next/static/chunks/320-afea3ddcc5bd1c6c.js +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/dashboard/out/_next/static/chunks/470-4d003c441839094d.js +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/dashboard/out/_next/static/chunks/578-9146658cead92981.js +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/dashboard/out/_next/static/chunks/843-256ec920f6d5f41f.js +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/dashboard/out/_next/static/chunks/937.f97f83652028e944.js +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/dashboard/out/_next/static/chunks/973-1a09cac61cfcc1e1.js +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/dashboard/out/_next/static/chunks/9f96d65d-5a3e4af68c26849e.js +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/dashboard/out/_next/static/chunks/fd9d1056-2821b0f0cabcd8bd.js +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/dashboard/out/_next/static/chunks/framework-87d061ee6ed71b28.js +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/dashboard/out/_next/static/chunks/main-app-241eb28595532291.js +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/dashboard/out/_next/static/chunks/main-e0e2335212e72357.js +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/dashboard/out/_next/static/chunks/pages/_app-a631df412d8172de.js +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/dashboard/out/_next/static/chunks/pages/_error-1be831200e60c5c0.js +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/dashboard/out/_next/static/chunks/pages/clusters/[cluster]/[job]-159bffb2fa34ed54.js +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/dashboard/out/_next/static/chunks/pages/clusters/[cluster]-9506c00257d10dbd.js +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/dashboard/out/_next/static/chunks/pages/clusters-943992b84fd6f4ee.js +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/dashboard/out/_next/static/chunks/pages/index-6b0d9e5031b70c58.js +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/dashboard/out/_next/static/chunks/pages/jobs-a4efc09e61988f8d.js +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/dashboard/out/_next/static/chunks/pages/users-b2634885d67c49a6.js +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/dashboard/out/_next/static/chunks/pages/workspace/new-579b3203c7c19d84.js +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/dashboard/out/_next/static/chunks/pages/workspaces/[name]-9388e38fac73ee8f.js +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/dashboard/out/_next/static/chunks/pages/workspaces-610c49ae3619ee85.js +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/dashboard/out/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/dashboard/out/_next/static/chunks/webpack-deda68c926e8d0bc.js +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/dashboard/out/_next/static/css/ffd1cd601648c303.css +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/dashboard/out/favicon.ico +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/dashboard/out/skypilot.svg +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/dashboard/out/videos/cursor-small.mp4 +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/data/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/data/data_transfer.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/data/data_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/data/mounting_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/data/storage.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/data/storage_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/execution.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/global_user_state.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/jobs/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/jobs/client/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/jobs/dashboard/dashboard.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/jobs/dashboard/static/favicon.ico +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/jobs/dashboard/templates/index.html +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/jobs/server/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/jobs/server/dashboard_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/jobs/server/server.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/models.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/optimizer.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/provision/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/provision/aws/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/provision/aws/config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/provision/aws/instance.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/provision/aws/utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/provision/azure/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/provision/azure/azure-config-template.json +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/provision/azure/config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/provision/azure/instance.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/provision/common.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/provision/constants.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/provision/cudo/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/provision/cudo/config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/provision/cudo/cudo_machine_type.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/provision/cudo/cudo_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/provision/cudo/cudo_wrapper.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/provision/cudo/instance.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/provision/do/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/provision/do/config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/provision/do/constants.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/provision/do/instance.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/provision/do/utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/provision/docker_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/provision/fluidstack/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/provision/fluidstack/config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/provision/fluidstack/fluidstack_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/provision/fluidstack/instance.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/provision/gcp/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/provision/gcp/config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/provision/gcp/constants.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/provision/gcp/instance.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/provision/gcp/instance_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/provision/gcp/mig_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/provision/gcp/volume_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/provision/instance_setup.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/provision/kubernetes/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/provision/kubernetes/config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/provision/kubernetes/constants.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/provision/kubernetes/instance.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/provision/kubernetes/manifests/fusermount-server-daemonset.yaml +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/provision/kubernetes/network.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/provision/kubernetes/network_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/provision/kubernetes/utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/provision/lambda_cloud/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/provision/lambda_cloud/config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/provision/lambda_cloud/instance.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/provision/lambda_cloud/lambda_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/provision/logging.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/provision/metadata_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/provision/nebius/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/provision/nebius/config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/provision/nebius/instance.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/provision/nebius/utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/provision/oci/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/provision/oci/config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/provision/oci/instance.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/provision/oci/query_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/provision/paperspace/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/provision/paperspace/config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/provision/paperspace/constants.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/provision/paperspace/instance.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/provision/paperspace/utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/provision/provisioner.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/provision/runpod/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/provision/runpod/api/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/provision/runpod/api/commands.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/provision/runpod/api/pods.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/provision/runpod/config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/provision/runpod/instance.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/provision/runpod/utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/provision/ssh/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/provision/vast/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/provision/vast/config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/provision/vast/instance.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/provision/vast/utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/provision/vsphere/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/provision/vsphere/common/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/provision/vsphere/common/cls_api_client.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/provision/vsphere/common/cls_api_helper.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/provision/vsphere/common/custom_script.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/provision/vsphere/common/id_generator.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/provision/vsphere/common/metadata_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/provision/vsphere/common/service_manager.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/provision/vsphere/common/service_manager_factory.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/provision/vsphere/common/ssl_helper.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/provision/vsphere/common/vapiconnect.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/provision/vsphere/common/vim_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/provision/vsphere/config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/provision/vsphere/instance.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/provision/vsphere/vsphere_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/serve/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/serve/autoscalers.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/serve/client/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/serve/client/sdk.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/serve/constants.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/serve/controller.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/serve/load_balancer.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/serve/load_balancing_policies.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/serve/replica_managers.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/serve/serve_state.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/serve/serve_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/serve/server/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/serve/server/core.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/serve/server/server.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/serve/service.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/serve/service_spec.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/serve/spot_placer.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/server/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/server/config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/server/constants.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/server/html/log.html +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/server/requests/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/server/requests/event_loop.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/server/requests/executor.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/server/requests/payloads.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/server/requests/preconditions.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/server/requests/process.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/server/requests/queues/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/server/requests/queues/local_queue.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/server/requests/queues/mp_queue.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/server/requests/requests.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/server/requests/serializers/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/server/requests/serializers/decoders.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/server/requests/serializers/encoders.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/server/stream_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/server/uvicorn.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/setup_files/MANIFEST.in +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/setup_files/setup.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/sky_logging.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/skylet/LICENSE +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/skylet/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/skylet/attempt_skylet.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/skylet/autostop_lib.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/skylet/configs.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/skylet/events.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/skylet/job_lib.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/skylet/log_lib.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/skylet/log_lib.pyi +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/skylet/providers/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/skylet/providers/command_runner.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/skylet/providers/ibm/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/skylet/providers/ibm/node_provider.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/skylet/providers/ibm/utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/skylet/providers/ibm/vpc_provider.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/skylet/providers/scp/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/skylet/providers/scp/config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/skylet/providers/scp/node_provider.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/skylet/ray_patches/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/skylet/ray_patches/autoscaler.py.patch +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/skylet/ray_patches/cli.py.patch +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/skylet/ray_patches/command_runner.py.patch +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/skylet/ray_patches/log_monitor.py.patch +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/skylet/ray_patches/resource_demand_scheduler.py.patch +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/skylet/ray_patches/updater.py.patch +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/skylet/ray_patches/worker.py.patch +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/skylet/skylet.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/skylet/subprocess_daemon.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/skypilot_config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/templates/aws-ray.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/templates/azure-ray.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/templates/cudo-ray.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/templates/do-ray.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/templates/fluidstack-ray.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/templates/gcp-ray.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/templates/ibm-ray.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/templates/kubernetes-ingress.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/templates/kubernetes-loadbalancer.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/templates/kubernetes-port-forward-proxy-command.sh +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/templates/kubernetes-ray.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/templates/kubernetes-ssh-jump.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/templates/lambda-ray.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/templates/local-ray.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/templates/nebius-ray.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/templates/oci-ray.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/templates/paperspace-ray.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/templates/runpod-ray.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/templates/scp-ray.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/templates/sky-serve-controller.yaml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/templates/skypilot-server-kubernetes-proxy.sh +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/templates/vast-ray.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/templates/vsphere-ray.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/templates/websocket_proxy.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/usage/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/usage/constants.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/usage/usage_lib.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/utils/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/utils/accelerator_registry.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/utils/admin_policy_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/utils/annotations.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/utils/atomic.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/utils/aws/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/utils/aws/get_default_security_group.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/utils/cli_utils/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/utils/cli_utils/status_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/utils/cluster_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/utils/command_runner.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/utils/command_runner.pyi +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/utils/common.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/utils/common_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/utils/config_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/utils/context.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/utils/context_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/utils/control_master_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/utils/controller_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/utils/dag_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/utils/db_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/utils/env_options.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/utils/infra_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/utils/kubernetes/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/utils/kubernetes/cleanup-tunnel.sh +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/utils/kubernetes/config_map_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/utils/kubernetes/create_cluster.sh +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/utils/kubernetes/delete_cluster.sh +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/utils/kubernetes/deploy_remote_cluster.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/utils/kubernetes/exec_kubeconfig_converter.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/utils/kubernetes/generate_kind_config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/utils/kubernetes/generate_kubeconfig.sh +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/utils/kubernetes/gpu_labeler.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/utils/kubernetes/k8s_gpu_labeler_job.yaml +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/utils/kubernetes/k8s_gpu_labeler_setup.yaml +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/utils/kubernetes/kubernetes_deploy_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/utils/kubernetes/rsync_helper.sh +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/utils/kubernetes/ssh-tunnel.sh +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/utils/kubernetes/ssh_jump_lifecycle_manager.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/utils/kubernetes_enums.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/utils/log_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/utils/message_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/utils/registry.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/utils/resources_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/utils/rich_console_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/utils/rich_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/utils/status_lib.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/utils/subprocess_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/utils/timeline.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/utils/ux_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/utils/validator.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/workspaces/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/workspaces/core.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/workspaces/server.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/skypilot_nightly.egg-info/dependency_links.txt +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/skypilot_nightly.egg-info/entry_points.txt +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/skypilot_nightly.egg-info/top_level.txt +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/tests/test_api.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/tests/test_cli.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/tests/test_config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/tests/test_db_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/tests/test_failover.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/tests/test_global_user_state.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/tests/test_jobs.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/tests/test_jobs_and_serve.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/tests/test_list_accelerators.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/tests/test_optimizer_dryruns.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/tests/test_optimizer_random_dag.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/tests/test_serve_autoscaler.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/tests/test_smoke.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/tests/test_storage.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/tests/test_wheels.py +0 -0
- {skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/tests/test_yaml_parser.py +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: skypilot-nightly
|
3
|
-
Version: 1.0.0.
|
3
|
+
Version: 1.0.0.dev20250529
|
4
4
|
Summary: SkyPilot: Run AI on Any Infra — Unified, Faster, Cheaper.
|
5
5
|
Author: SkyPilot Team
|
6
6
|
License: Apache 2.0
|
@@ -66,6 +66,7 @@ Requires-Dist: ray[default]!=2.6.0,>=2.2.0; extra == "azure"
|
|
66
66
|
Provides-Extra: gcp
|
67
67
|
Requires-Dist: google-api-python-client>=2.69.0; extra == "gcp"
|
68
68
|
Requires-Dist: google-cloud-storage; extra == "gcp"
|
69
|
+
Requires-Dist: pyopenssl<24.3.0,>=23.2.0; extra == "gcp"
|
69
70
|
Provides-Extra: ibm
|
70
71
|
Requires-Dist: ibm-cloud-sdk-core; extra == "ibm"
|
71
72
|
Requires-Dist: ibm-vpc; extra == "ibm"
|
@@ -131,6 +132,7 @@ Requires-Dist: msgraph-sdk; extra == "all"
|
|
131
132
|
Requires-Dist: ray[default]!=2.6.0,>=2.2.0; extra == "all"
|
132
133
|
Requires-Dist: google-api-python-client>=2.69.0; extra == "all"
|
133
134
|
Requires-Dist: google-cloud-storage; extra == "all"
|
135
|
+
Requires-Dist: pyopenssl<24.3.0,>=23.2.0; extra == "all"
|
134
136
|
Requires-Dist: ibm-cloud-sdk-core; extra == "all"
|
135
137
|
Requires-Dist: ibm-vpc; extra == "all"
|
136
138
|
Requires-Dist: ibm-platform-services>=0.48.0; extra == "all"
|
@@ -5,7 +5,7 @@ from typing import Optional
|
|
5
5
|
import urllib.request
|
6
6
|
|
7
7
|
# Replaced with the current commit when building the wheels.
|
8
|
-
_SKYPILOT_COMMIT_SHA = '
|
8
|
+
_SKYPILOT_COMMIT_SHA = 'f3edb2141cf7bfea30c552e2812c14f56d7149ab'
|
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.dev20250529'
|
39
39
|
__root_dir__ = os.path.dirname(os.path.abspath(__file__))
|
40
40
|
|
41
41
|
|
@@ -862,6 +862,7 @@ def _make_task_or_dag_from_entrypoint_with_overrides(
|
|
862
862
|
field_to_ignore: Optional[List[str]] = None,
|
863
863
|
# job launch specific
|
864
864
|
job_recovery: Optional[str] = None,
|
865
|
+
priority: Optional[int] = None,
|
865
866
|
config_override: Optional[Dict[str, Any]] = None,
|
866
867
|
) -> Union[sky.Task, sky.Dag]:
|
867
868
|
"""Creates a task or a dag from an entrypoint with overrides.
|
@@ -939,6 +940,9 @@ def _make_task_or_dag_from_entrypoint_with_overrides(
|
|
939
940
|
task.num_nodes = num_nodes
|
940
941
|
if name is not None:
|
941
942
|
task.name = name
|
943
|
+
# job launch specific.
|
944
|
+
if priority is not None:
|
945
|
+
task.set_job_priority(priority)
|
942
946
|
return task
|
943
947
|
|
944
948
|
|
@@ -4170,6 +4174,12 @@ def jobs():
|
|
4170
4174
|
default=None,
|
4171
4175
|
type=str,
|
4172
4176
|
help='Recovery strategy to use for managed jobs.')
|
4177
|
+
@click.option('--priority',
|
4178
|
+
type=click.IntRange(0, 1000),
|
4179
|
+
default=None,
|
4180
|
+
show_default=True,
|
4181
|
+
help=('Job priority from 0 to 1000. A lower number is higher '
|
4182
|
+
'priority. Default is 500.'))
|
4173
4183
|
@click.option(
|
4174
4184
|
'--detach-run',
|
4175
4185
|
'-d',
|
@@ -4207,6 +4217,7 @@ def jobs_launch(
|
|
4207
4217
|
disk_size: Optional[int],
|
4208
4218
|
disk_tier: Optional[str],
|
4209
4219
|
ports: Tuple[str],
|
4220
|
+
priority: Optional[int],
|
4210
4221
|
detach_run: bool,
|
4211
4222
|
yes: bool,
|
4212
4223
|
async_call: bool,
|
@@ -4253,6 +4264,7 @@ def jobs_launch(
|
|
4253
4264
|
disk_tier=disk_tier,
|
4254
4265
|
ports=ports,
|
4255
4266
|
job_recovery=job_recovery,
|
4267
|
+
priority=priority,
|
4256
4268
|
config_override=config_override,
|
4257
4269
|
)
|
4258
4270
|
|
@@ -4335,8 +4347,6 @@ def jobs_queue(verbose: bool, refresh: bool, skip_finished: bool,
|
|
4335
4347
|
- ``PENDING``: Job is waiting for a free slot on the jobs controller to be
|
4336
4348
|
accepted.
|
4337
4349
|
|
4338
|
-
- ``SUBMITTED``: Job is submitted to and accepted by the jobs controller.
|
4339
|
-
|
4340
4350
|
- ``STARTING``: Job is starting (provisioning a cluster for the job).
|
4341
4351
|
|
4342
4352
|
- ``RUNNING``: Job is running.
|
@@ -4553,7 +4563,7 @@ def jobs_logs(name: Optional[str], job_id: Optional[int], follow: bool,
|
|
4553
4563
|
@usage_lib.entrypoint
|
4554
4564
|
def jobs_dashboard():
|
4555
4565
|
"""Opens a dashboard for managed jobs."""
|
4556
|
-
|
4566
|
+
sdk.dashboard(starting_page='jobs')
|
4557
4567
|
|
4558
4568
|
|
4559
4569
|
@cli.command(cls=_DocumentedCodeCommand)
|
@@ -862,6 +862,7 @@ def _make_task_or_dag_from_entrypoint_with_overrides(
|
|
862
862
|
field_to_ignore: Optional[List[str]] = None,
|
863
863
|
# job launch specific
|
864
864
|
job_recovery: Optional[str] = None,
|
865
|
+
priority: Optional[int] = None,
|
865
866
|
config_override: Optional[Dict[str, Any]] = None,
|
866
867
|
) -> Union[sky.Task, sky.Dag]:
|
867
868
|
"""Creates a task or a dag from an entrypoint with overrides.
|
@@ -939,6 +940,9 @@ def _make_task_or_dag_from_entrypoint_with_overrides(
|
|
939
940
|
task.num_nodes = num_nodes
|
940
941
|
if name is not None:
|
941
942
|
task.name = name
|
943
|
+
# job launch specific.
|
944
|
+
if priority is not None:
|
945
|
+
task.set_job_priority(priority)
|
942
946
|
return task
|
943
947
|
|
944
948
|
|
@@ -4170,6 +4174,12 @@ def jobs():
|
|
4170
4174
|
default=None,
|
4171
4175
|
type=str,
|
4172
4176
|
help='Recovery strategy to use for managed jobs.')
|
4177
|
+
@click.option('--priority',
|
4178
|
+
type=click.IntRange(0, 1000),
|
4179
|
+
default=None,
|
4180
|
+
show_default=True,
|
4181
|
+
help=('Job priority from 0 to 1000. A lower number is higher '
|
4182
|
+
'priority. Default is 500.'))
|
4173
4183
|
@click.option(
|
4174
4184
|
'--detach-run',
|
4175
4185
|
'-d',
|
@@ -4207,6 +4217,7 @@ def jobs_launch(
|
|
4207
4217
|
disk_size: Optional[int],
|
4208
4218
|
disk_tier: Optional[str],
|
4209
4219
|
ports: Tuple[str],
|
4220
|
+
priority: Optional[int],
|
4210
4221
|
detach_run: bool,
|
4211
4222
|
yes: bool,
|
4212
4223
|
async_call: bool,
|
@@ -4253,6 +4264,7 @@ def jobs_launch(
|
|
4253
4264
|
disk_tier=disk_tier,
|
4254
4265
|
ports=ports,
|
4255
4266
|
job_recovery=job_recovery,
|
4267
|
+
priority=priority,
|
4256
4268
|
config_override=config_override,
|
4257
4269
|
)
|
4258
4270
|
|
@@ -4335,8 +4347,6 @@ def jobs_queue(verbose: bool, refresh: bool, skip_finished: bool,
|
|
4335
4347
|
- ``PENDING``: Job is waiting for a free slot on the jobs controller to be
|
4336
4348
|
accepted.
|
4337
4349
|
|
4338
|
-
- ``SUBMITTED``: Job is submitted to and accepted by the jobs controller.
|
4339
|
-
|
4340
4350
|
- ``STARTING``: Job is starting (provisioning a cluster for the job).
|
4341
4351
|
|
4342
4352
|
- ``RUNNING``: Job is running.
|
@@ -4553,7 +4563,7 @@ def jobs_logs(name: Optional[str], job_id: Optional[int], follow: bool,
|
|
4553
4563
|
@usage_lib.entrypoint
|
4554
4564
|
def jobs_dashboard():
|
4555
4565
|
"""Opens a dashboard for managed jobs."""
|
4556
|
-
|
4566
|
+
sdk.dashboard(starting_page='jobs')
|
4557
4567
|
|
4558
4568
|
|
4559
4569
|
@cli.command(cls=_DocumentedCodeCommand)
|
@@ -0,0 +1,82 @@
|
|
1
|
+
"""Client-side OAuth module."""
|
2
|
+
from http.server import BaseHTTPRequestHandler
|
3
|
+
from http.server import HTTPServer
|
4
|
+
import threading
|
5
|
+
import time
|
6
|
+
from typing import Dict, Optional
|
7
|
+
|
8
|
+
AUTH_TIMEOUT = 300 # 5 minutes
|
9
|
+
|
10
|
+
|
11
|
+
class _AuthCallbackHandler(BaseHTTPRequestHandler):
|
12
|
+
"""HTTP request handler for OAuth callback."""
|
13
|
+
|
14
|
+
def __init__(self, token_container: Dict[str, Optional[str]],
|
15
|
+
remote_endpoint: str, *args, **kwargs):
|
16
|
+
self.token_container = token_container
|
17
|
+
self.remote_endpoint = remote_endpoint
|
18
|
+
super().__init__(*args, **kwargs)
|
19
|
+
|
20
|
+
def do_POST(self): # pylint: disable=invalid-name
|
21
|
+
"""Handle POST request for OAuth callback."""
|
22
|
+
data = self.rfile.read(int(self.headers['Content-Length']))
|
23
|
+
|
24
|
+
if data:
|
25
|
+
token = data.decode('utf-8')
|
26
|
+
self.token_container['token'] = token
|
27
|
+
|
28
|
+
# Send success response
|
29
|
+
self.send_response(200)
|
30
|
+
self.send_header('Content-type', 'text/html')
|
31
|
+
self.send_header('Access-Control-Allow-Origin',
|
32
|
+
self.remote_endpoint)
|
33
|
+
self.end_headers()
|
34
|
+
else:
|
35
|
+
# Send error response
|
36
|
+
self.send_response(400)
|
37
|
+
self.send_header('Content-type', 'text/html')
|
38
|
+
self.send_header('Access-Control-Allow-Origin',
|
39
|
+
self.remote_endpoint)
|
40
|
+
self.end_headers()
|
41
|
+
|
42
|
+
def log_message(self, *args): # pylint: disable=unused-argument
|
43
|
+
"""Suppress default HTTP server logging."""
|
44
|
+
pass
|
45
|
+
|
46
|
+
|
47
|
+
def start_local_auth_server(port: int,
|
48
|
+
token_store: Dict[str, Optional[str]],
|
49
|
+
remote_endpoint: str,
|
50
|
+
timeout: int = AUTH_TIMEOUT) -> HTTPServer:
|
51
|
+
"""Start a local HTTP server to handle OAuth callback.
|
52
|
+
|
53
|
+
Args:
|
54
|
+
port: Port to bind the server to.
|
55
|
+
token_container: Dict to store the received token.
|
56
|
+
remote_endpoint: The endpoint of the SkyPilot API server that will send
|
57
|
+
the token, needed for CORS.
|
58
|
+
timeout: Timeout in seconds to wait for the callback.
|
59
|
+
|
60
|
+
Returns:
|
61
|
+
The HTTP server instance.
|
62
|
+
"""
|
63
|
+
|
64
|
+
def handler_factory(*args, **kwargs):
|
65
|
+
return _AuthCallbackHandler(token_store, remote_endpoint, *args,
|
66
|
+
**kwargs)
|
67
|
+
|
68
|
+
server = HTTPServer(('localhost', port), handler_factory)
|
69
|
+
server.timeout = timeout
|
70
|
+
|
71
|
+
def serve_until_token():
|
72
|
+
"""Serve requests until token is received or timeout."""
|
73
|
+
start_time = time.time()
|
74
|
+
while (token_store['token'] is None and
|
75
|
+
time.time() - start_time < timeout):
|
76
|
+
server.handle_request()
|
77
|
+
|
78
|
+
# Start server in a separate thread
|
79
|
+
server_thread = threading.Thread(target=serve_until_token, daemon=True)
|
80
|
+
server_thread.start()
|
81
|
+
|
82
|
+
return server
|
@@ -36,6 +36,7 @@ from sky import sky_logging
|
|
36
36
|
from sky import skypilot_config
|
37
37
|
from sky.adaptors import common as adaptors_common
|
38
38
|
from sky.client import common as client_common
|
39
|
+
from sky.client import oauth as oauth_lib
|
39
40
|
from sky.server import common as server_common
|
40
41
|
from sky.server.requests import payloads
|
41
42
|
from sky.server.requests import requests as requests_lib
|
@@ -341,10 +342,11 @@ def validate(
|
|
341
342
|
@usage_lib.entrypoint
|
342
343
|
@server_common.check_server_healthy_or_start
|
343
344
|
@annotations.client_api
|
344
|
-
def dashboard() -> None:
|
345
|
+
def dashboard(starting_page: Optional[str] = None) -> None:
|
345
346
|
"""Starts the dashboard for SkyPilot."""
|
346
347
|
api_server_url = server_common.get_server_url()
|
347
|
-
url = server_common.get_dashboard_url(api_server_url
|
348
|
+
url = server_common.get_dashboard_url(api_server_url,
|
349
|
+
starting_page=starting_page)
|
348
350
|
logger.info(f'Opening dashboard in browser: {url}')
|
349
351
|
webbrowser.open(url)
|
350
352
|
|
@@ -1908,6 +1910,7 @@ def api_login(endpoint: Optional[str] = None, get_token: bool = False) -> None:
|
|
1908
1910
|
Args:
|
1909
1911
|
endpoint: The endpoint of the SkyPilot API server, e.g.,
|
1910
1912
|
http://1.2.3.4:46580 or https://skypilot.mydomain.com.
|
1913
|
+
get_token: Whether to force getting a new token even if not needed.
|
1911
1914
|
|
1912
1915
|
Returns:
|
1913
1916
|
None
|
@@ -1926,14 +1929,60 @@ def api_login(endpoint: Optional[str] = None, get_token: bool = False) -> None:
|
|
1926
1929
|
server_status = server_common.check_server_healthy(endpoint)
|
1927
1930
|
if server_status == server_common.ApiServerStatus.NEEDS_AUTH or get_token:
|
1928
1931
|
# We detected an auth proxy, so go through the auth proxy cookie flow.
|
1929
|
-
|
1930
|
-
|
1931
|
-
|
1932
|
-
|
1933
|
-
|
1934
|
-
|
1935
|
-
|
1936
|
-
|
1932
|
+
token: Optional[str] = None
|
1933
|
+
server: Optional[oauth_lib.HTTPServer] = None
|
1934
|
+
try:
|
1935
|
+
callback_port = common_utils.find_free_port(8000)
|
1936
|
+
|
1937
|
+
token_container: Dict[str, Optional[str]] = {'token': None}
|
1938
|
+
logger.debug('Starting local authentication server...')
|
1939
|
+
server = oauth_lib.start_local_auth_server(callback_port,
|
1940
|
+
token_container,
|
1941
|
+
endpoint)
|
1942
|
+
|
1943
|
+
token_url = (f'{endpoint}/token?local_port={callback_port}')
|
1944
|
+
if webbrowser.open(token_url):
|
1945
|
+
click.echo(f'{colorama.Fore.GREEN}A web browser has been '
|
1946
|
+
f'opened at {token_url}. Please continue the login '
|
1947
|
+
f'in the web browser.{colorama.Style.RESET_ALL}\n'
|
1948
|
+
f'{colorama.Style.DIM}To manually copy the token, '
|
1949
|
+
f'press ctrl+c.{colorama.Style.RESET_ALL}')
|
1950
|
+
else:
|
1951
|
+
raise ValueError('Failed to open browser.')
|
1952
|
+
|
1953
|
+
start_time = time.time()
|
1954
|
+
|
1955
|
+
while (token_container['token'] is None and
|
1956
|
+
time.time() - start_time < oauth_lib.AUTH_TIMEOUT):
|
1957
|
+
time.sleep(1)
|
1958
|
+
|
1959
|
+
if token_container['token'] is None:
|
1960
|
+
click.echo(f'{colorama.Fore.YELLOW}Authentication timed out '
|
1961
|
+
f'after {oauth_lib.AUTH_TIMEOUT} seconds.')
|
1962
|
+
else:
|
1963
|
+
token = token_container['token']
|
1964
|
+
|
1965
|
+
except (Exception, KeyboardInterrupt) as e: # pylint: disable=broad-except
|
1966
|
+
logger.debug(f'Automatic authentication failed: {e}, '
|
1967
|
+
'falling back to manual token entry.')
|
1968
|
+
if isinstance(e, KeyboardInterrupt):
|
1969
|
+
click.echo(f'\n{colorama.Style.DIM}Interrupted. Press ctrl+c '
|
1970
|
+
f'again to exit.{colorama.Style.RESET_ALL}')
|
1971
|
+
# Fall back to manual token entry
|
1972
|
+
token_url = f'{endpoint}/token'
|
1973
|
+
click.echo('Authentication is needed. Please visit this URL '
|
1974
|
+
f'to set up the token:{colorama.Style.BRIGHT}\n\n'
|
1975
|
+
f'{token_url}\n{colorama.Style.RESET_ALL}')
|
1976
|
+
token = click.prompt('Paste the token')
|
1977
|
+
finally:
|
1978
|
+
if server is not None:
|
1979
|
+
try:
|
1980
|
+
server.server_close()
|
1981
|
+
except Exception: # pylint: disable=broad-except
|
1982
|
+
pass
|
1983
|
+
if not token:
|
1984
|
+
with ux_utils.print_exception_no_traceback():
|
1985
|
+
raise ValueError('Authentication failed.')
|
1937
1986
|
|
1938
1987
|
# Parse the token.
|
1939
1988
|
# b64decode will ignore invalid characters, but does some length and
|
@@ -1959,6 +2008,7 @@ def api_login(endpoint: Optional[str] = None, get_token: bool = False) -> None:
|
|
1959
2008
|
else:
|
1960
2009
|
raise ValueError(f'Unsupported token version: {json_data.get("v")}')
|
1961
2010
|
|
2011
|
+
parsed_url = urlparse.urlparse(endpoint)
|
1962
2012
|
cookie_jar = cookiejar.MozillaCookieJar()
|
1963
2013
|
for (name, value) in cookie_dict.items():
|
1964
2014
|
# dict keys in JSON must be strings
|
@@ -179,7 +179,7 @@ TPU_V4_HOST_DF = pd.read_csv(
|
|
179
179
|
# TODO(woosuk): Make this more robust.
|
180
180
|
# Refer to: https://github.com/skypilot-org/skypilot/issues/1006
|
181
181
|
# Unsupported Series: 'f1', 'm2'
|
182
|
-
|
182
|
+
SERIES_TO_DESCRIPTION = {
|
183
183
|
'a2': 'A2 Instance',
|
184
184
|
'a3': 'A3 Instance',
|
185
185
|
# TODO(zhwu): GCP does not have A4 instance in SKUs API yet. We keep it here
|
@@ -338,7 +338,7 @@ def get_vm_df(skus: List[Dict[str, Any]], region_prefix: str) -> 'pd.DataFrame':
|
|
338
338
|
|
339
339
|
# Drop the unsupported series.
|
340
340
|
df = df[df['InstanceType'].str.startswith(
|
341
|
-
tuple(f'{series}-' for series in
|
341
|
+
tuple(f'{series}-' for series in SERIES_TO_DESCRIPTION))]
|
342
342
|
df = df[~df['AvailabilityZone'].str.startswith(tuple(TPU_V4_ZONES))]
|
343
343
|
|
344
344
|
# TODO(woosuk): Make this more efficient.
|
@@ -356,7 +356,7 @@ def get_vm_df(skus: List[Dict[str, Any]], region_prefix: str) -> 'pd.DataFrame':
|
|
356
356
|
|
357
357
|
# Check if the SKU is for the correct series.
|
358
358
|
description = sku['description']
|
359
|
-
if
|
359
|
+
if SERIES_TO_DESCRIPTION[series].lower() not in description.lower():
|
360
360
|
continue
|
361
361
|
# Special check for M1 instances.
|
362
362
|
if series == 'm1' and 'M3' in description:
|
{skypilot_nightly-1.0.0.dev20250528 → skypilot_nightly-1.0.0.dev20250529}/sky/dashboard/out/404.html
RENAMED
@@ -1 +1 @@
|
|
1
|
-
<!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><title>404: This page could not be found</title><meta name="next-head-count" content="3"/><link rel="preload" href="/dashboard/_next/static/css/ffd1cd601648c303.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/ffd1cd601648c303.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-deda68c926e8d0bc.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-a631df412d8172de.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_error-1be831200e60c5c0.js" defer=""></script><script src="/dashboard/_next/static/
|
1
|
+
<!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><title>404: This page could not be found</title><meta name="next-head-count" content="3"/><link rel="preload" href="/dashboard/_next/static/css/ffd1cd601648c303.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/ffd1cd601648c303.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-deda68c926e8d0bc.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-a631df412d8172de.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_error-1be831200e60c5c0.js" defer=""></script><script src="/dashboard/_next/static/HvNkg7hqKM1p0ptAcdDcF/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/HvNkg7hqKM1p0ptAcdDcF/_ssgManifest.js" defer=""></script></head><body><div id="__next"><div style="font-family:system-ui,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div style="line-height:48px"><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding-right:23px;font-size:24px;font-weight:500;vertical-align:top">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:28px">This page could not be found<!-- -->.</h2></div></div></div></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{"statusCode":404}},"page":"/_error","query":{},"buildId":"HvNkg7hqKM1p0ptAcdDcF","assetPrefix":"/dashboard","nextExport":true,"isFallback":false,"gip":true,"scriptLoader":[]}</script></body></html>
|
@@ -0,0 +1 @@
|
|
1
|
+
self.__BUILD_MANIFEST=function(s,c,e,a,t,r,n,u,f,i,j,k){return{__rewrites:{afterFiles:[],beforeFiles:[],fallback:[]},"/":["static/chunks/pages/index-6b0d9e5031b70c58.js"],"/_error":["static/chunks/pages/_error-1be831200e60c5c0.js"],"/clusters":[s,t,c,e,a,r,i,"static/chunks/pages/clusters-943992b84fd6f4ee.js"],"/clusters/[cluster]":[s,t,c,e,a,r,n,i,"static/chunks/pages/clusters/[cluster]-9506c00257d10dbd.js"],"/clusters/[cluster]/[job]":[s,c,"static/chunks/pages/clusters/[cluster]/[job]-159bffb2fa34ed54.js"],"/config":[u,s,f,c,e,"static/chunks/pages/config-7c48919fe030bc43.js"],"/infra":[s,c,e,a,j,"static/chunks/pages/infra-d4c6875c88771e17.js"],"/infra/[context]":[s,c,e,a,j,"static/chunks/pages/infra/[context]-909f1ceb0fcf1b99.js"],"/jobs":[s,t,c,e,a,r,n,"static/chunks/pages/jobs-a4efc09e61988f8d.js"],"/jobs/[job]":[s,c,"static/chunks/pages/jobs/[job]-6b80e9e0c6aa16a1.js"],"/users":[s,c,e,a,"static/chunks/pages/users-b2634885d67c49a6.js"],"/workspace/new":[u,s,t,f,c,e,a,r,n,k,"static/chunks/pages/workspace/new-579b3203c7c19d84.js"],"/workspaces":[u,s,t,f,c,e,a,r,n,"static/chunks/pages/workspaces-610c49ae3619ee85.js"],"/workspaces/[name]":[u,s,t,f,c,e,a,r,n,k,"static/chunks/pages/workspaces/[name]-9388e38fac73ee8f.js"],sortedPages:["/","/_app","/_error","/clusters","/clusters/[cluster]","/clusters/[cluster]/[job]","/config","/infra","/infra/[context]","/jobs","/jobs/[job]","/users","/workspace/new","/workspaces","/workspaces/[name]"]}}("static/chunks/173-7db8607cefc20f70.js","static/chunks/470-4d003c441839094d.js","static/chunks/293-351268365226d251.js","static/chunks/856-59a1760784c9e770.js","static/chunks/121-8f55ee3fa6301784.js","static/chunks/973-1a09cac61cfcc1e1.js","static/chunks/236-90e5498a5b00ec29.js","static/chunks/9f96d65d-5a3e4af68c26849e.js","static/chunks/320-afea3ddcc5bd1c6c.js","static/chunks/578-9146658cead92981.js","static/chunks/303-2c7b0f7af571710b.js","static/chunks/843-256ec920f6d5f41f.js"),self.__BUILD_MANIFEST_CB&&self.__BUILD_MANIFEST_CB();
|
skypilot_nightly-1.0.0.dev20250529/sky/dashboard/out/_next/static/chunks/236-90e5498a5b00ec29.js
ADDED
@@ -0,0 +1,6 @@
|
|
1
|
+
"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[236],{8236:function(e,s,t){t.d(s,{L4:function(){return D},Nk:function(){return I},x2:function(){return R}});var r=t(5893),n=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),p=t(7324),j=t(9470),f=t(3626),g=t(998);/**
|
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 w=(0,g.Z)("RefreshCcw",[["path",{d:"M21 12a9 9 0 0 0-9-9 9.75 9.75 0 0 0-6.74 2.74L3 8",key:"14sxne"}],["path",{d:"M3 3v5h5",key:"1xhq8a"}],["path",{d:"M3 12a9 9 0 0 0 9 9 9.75 9.75 0 0 0 6.74-2.74L21 16",key:"1hlbsb"}],["path",{d:"M16 16h5v5",key:"ccwih5"}]]),N=(0,g.Z)("FileSearch",[["path",{d:"M14 2v4a2 2 0 0 0 2 2h4",key:"tnqrlb"}],["path",{d:"M4.268 21a2 2 0 0 0 1.727 1H18a2 2 0 0 0 2-2V7l-5-5H6a2 2 0 0 0-2 2v3",key:"ms7g94"}],["path",{d:"m9 18-1.5-1.5",key:"1j6qii"}],["circle",{cx:"5",cy:"14",r:"3",key:"ufru5t"}]]),b=(0,g.Z)("MonitorPlay",[["path",{d:"M10 7.75a.75.75 0 0 1 1.142-.638l3.664 2.249a.75.75 0 0 1 0 1.278l-3.664 2.25a.75.75 0 0 1-1.142-.64z",key:"1pctta"}],["path",{d:"M12 17v4",key:"1riwvh"}],["path",{d:"M8 21h8",key:"1ev6f3"}],["rect",{x:"2",y:"3",width:"20",height:"14",rx:"2",key:"x3v2xh"}]]);var y=t(9284),v=t(4545),k=t(9307),C=t(3001),S=t(8950),E=t(6378),L=t(6856);let R={active:["PENDING","RUNNING","RECOVERING","SUBMITTED","STARTING","CANCELLING"],finished:["SUCCEEDED","FAILED","CANCELLED","FAILED_SETUP","FAILED_PRECHECKS","FAILED_NO_RESOURCE","FAILED_CONTROLLER"]},M="__ALL_WORKSPACES__",_=e=>{if(!e)return"-";let s=(0,x.GV)(e);if(n.isValidElement(s)&&s.props&&s.props.children&&(s=n.isValidElement(s.props.children)&&s.props.children.props&&s.props.children.props.children?s.props.children.props.children:s.props.children),"string"!=typeof s)return s;if("just now"===s)return"now";let t=s.match(/^About\s+(\d+)\s+(\w+)\s+ago$/);if(t){let e=t[1],s=t[2],r={second:"sec",seconds:"secs",minute:"min",minutes:"mins",hour:"hr",hours:"hrs",day:"d",days:"d",month:"mo",months:"mos",year:"yr",years:"yrs"};if(r[s])return"~ ".concat(e," ").concat(r[s]," ago")}let r=s.match(/^a[n]?\s+(\w+)\s+ago$/);if(r){let e=r[1],s={second:"sec",minute:"min",hour:"hr",day:"d",month:"mo",year:"yr"};if(s[e])return"1 ".concat(s[e]," ago")}let a=s.match(/^(\d+)\s+(\w+)\s+ago$/);if(a){let e=a[1],s=a[2],t={seconds:"secs",minutes:"mins",hours:"hrs",days:"d",months:"mo",years:"yr"};if(t[s])return"".concat(e," ").concat(t[s]," ago")}return s};function I(){let e=(0,a.useRouter)(),[s,t]=(0,n.useState)(!1),l=n.useRef(null),[o,d]=(0,n.useState)({isOpen:!1,title:"",message:"",onConfirm:null}),h=(0,C.X)(),[g,w]=(0,n.useState)(M),[N,b]=(0,n.useState)([]);return(0,n.useEffect)(()=>{e.isReady&&e.query.workspace&&w(Array.isArray(e.query.workspace)?e.query.workspace[0]:e.query.workspace)},[e.isReady,e.query.workspace]),(0,n.useEffect)(()=>{(async()=>{try{await L.ZP.preloadForPage("jobs");let e=await E.ZP.get(p.fX),s=Object.keys(e),t=(await E.ZP.get(u.getManagedJobs)).jobs||[],r=[...new Set(t.map(e=>e.workspace||"default").filter(e=>e))],n=new Set(s);r.forEach(e=>n.add(e)),b(Array.from(n).sort())}catch(e){console.error("Error fetching data for workspace filter:",e),b(["default"])}})()},[]),(0,r.jsxs)(j.A,{highlighted:"jobs",children:[(0,r.jsxs)("div",{className:"flex items-center justify-between mb-4 h-5",children:[(0,r.jsxs)("div",{className:"text-base flex items-center",children:[(0,r.jsx)(i(),{href:"/jobs",className:"text-sky-blue hover:underline leading-none",children:"Managed Jobs"}),(0,r.jsxs)(S.Ph,{value:g,onValueChange:w,children:[(0,r.jsx)(S.i4,{className:"h-8 w-48 ml-4 mr-2 text-sm border-none focus:ring-0 focus:outline-none",children:(0,r.jsx)(S.ki,{placeholder:"Filter by workspace...",children:g===M?"All Workspaces":g})}),(0,r.jsxs)(S.Bw,{children:[(0,r.jsx)(S.Ql,{value:M,children:"All Workspaces"}),N.map(e=>(0,r.jsx)(S.Ql,{value:e,children:e},e))]})]})]}),(0,r.jsxs)("div",{className:"flex items-center space-x-2",children:[s&&(0,r.jsxs)("div",{className:"flex items-center mr-2",children:[(0,r.jsx)(c.Z,{size:15,className:"mt-0"}),(0,r.jsx)("span",{className:"ml-2 text-gray-500 text-sm",children:"Loading..."})]}),(0,r.jsxs)("button",{onClick:()=>{E.ZP.invalidate(u.getManagedJobs),E.ZP.invalidate(m.getClusters),E.ZP.invalidate(p.fX),l.current&&l.current()},disabled:s,className:"text-sky-blue hover:text-sky-blue-bright flex items-center",title:"Refresh",children:[(0,r.jsx)(f.Z,{className:"h-4 w-4 mr-1.5"}),!h&&(0,r.jsx)("span",{children:"Refresh"})]})]})]}),(0,r.jsx)(P,{refreshInterval:x.yc,setLoading:t,refreshDataRef:l,workspaceFilter:g}),(0,r.jsx)(y.cV,{isOpen:o.isOpen,onClose:()=>d({...o,isOpen:!1}),onConfirm:o.onConfirm,title:o.title,message:o.message})]})}function P(e){let{refreshInterval:s,setLoading:t,refreshDataRef:a,workspaceFilter:l}=e,[p,j]=(0,n.useState)([]),[f,g]=(0,n.useState)({key:null,direction:"ascending"}),[N,b]=(0,n.useState)(!1),[C,S]=(0,n.useState)(!0),[L,I]=(0,n.useState)(1),[P,D]=(0,n.useState)(10),[z,F]=(0,n.useState)(null),W=(0,n.useRef)(null),[U,q]=(0,n.useState)([]),[T,V]=(0,n.useState)({}),[B,J]=(0,n.useState)(!1),[G,H]=(0,n.useState)(!1),[X,$]=(0,n.useState)(!1),[K,Q]=(0,n.useState)("active"),[Y,ee]=(0,n.useState)(!0),[es,et]=(0,n.useState)({isOpen:!1,title:"",message:"",onConfirm:null}),er=async()=>{et({isOpen:!0,title:"Restart Controller",message:"Are you sure you want to restart the controller? This will temporarily interrupt job management.",onConfirm:async()=>{try{$(!0),b(!0),await (0,u.Ce)("restartcontroller"),await en()}catch(e){console.error("Error restarting controller:",e)}finally{$(!1),b(!1)}}})},en=n.useCallback(async()=>{b(!0),t(!0);try{let[e,s]=await Promise.all([E.ZP.get(u.getManagedJobs),E.ZP.get(m.getClusters)]),{jobs:t,controllerStopped:r}=e,n=s.find(e=>(0,v.Ym)(e.cluster)),a=n?n.status:"NOT_FOUND",l=!1;"STOPPED"==a&&r&&(l=!0),"LAUNCHING"==a?H(!0):H(!1),j(t),J(l)}catch(e){console.error("Error fetching data:",e),j([])}finally{b(!1),t(!1),S(!1)}},[t]);n.useEffect(()=>{a&&(a.current=en)},[a,en]),(0,n.useEffect)(()=>{j([]);let e=!0;en();let t=setInterval(()=>{e&&en()},s);return()=>{e=!1,clearInterval(t)}},[s,en]),(0,n.useEffect)(()=>{I(1)},[K,p.length]),(0,n.useEffect)(()=>{q([]),ee(!0)},[K]);let ea=e=>{let s="ascending";f.key===e&&"ascending"===f.direction&&(s="descending"),g({key:e,direction:s})},el=e=>f.key===e?"ascending"===f.direction?" ↑":" ↓":"";n.useMemo(()=>({active:p.filter(e=>R.active.includes(e.status)).length,finished:p.filter(e=>R.finished.includes(e.status)).length}),[p]);let ei=e=>U.length>0?U.includes(e):R[K].includes(e),ec=n.useMemo(()=>{let e=l&&l!==M?p.filter(e=>(e.workspace||"default").toLowerCase()===l.toLowerCase()):p;return U.length>0?e.filter(e=>U.includes(e.status)):Y?e.filter(e=>R[K].includes(e.status)):[]},[p,K,U,Y,R,l]),eo=n.useMemo(()=>f.key?[...ec].sort((e,s)=>e[f.key]<s[f.key]?"ascending"===f.direction?-1:1:e[f.key]>s[f.key]?"ascending"===f.direction?1:-1:0):ec,[ec,f]),ed=Math.ceil(eo.length/P),eh=(L-1)*P,ex=eh+P,eu=eo.slice(eh,ex),em=e=>{if(U.includes(e)){let s=U.filter(s=>s!==e);0===s.length?(ee(!0),q([])):(q(s),ee(!1))}else q([...U,e]),ee(!1)};return(0,n.useEffect)(()=>{V(p.reduce((e,s)=>(e[s.status]=(e[s.status]||0)+1,e),{}))},[p]),(0,r.jsxs)("div",{className:"relative",children:[(0,r.jsx)("div",{className:"flex flex-col space-y-1 mb-1",children:(0,r.jsxs)("div",{className:"flex flex-wrap items-center text-sm mb-1",children:[(0,r.jsx)("span",{className:"mr-2 text-sm font-medium",children:"Statuses:"}),(0,r.jsxs)("div",{className:"flex flex-wrap gap-2 items-center",children:[!N&&0===p.length&&!C&&(0,r.jsx)("span",{className:"text-gray-500 mr-2",children:"No jobs found"}),Object.entries(T).map(e=>{let[s,t]=e;return(0,r.jsxs)("button",{onClick:()=>em(s),className:"px-3 py-1 rounded-full flex items-center space-x-2 ".concat(ei(s)||U.includes(s)?(0,k.Cl)(s):"bg-gray-50 text-gray-600 hover:bg-gray-100"),children:[(0,r.jsx)("span",{children:s}),(0,r.jsx)("span",{className:"text-xs ".concat(ei(s)||U.includes(s)?"bg-white/50":"bg-gray-200"," px-1.5 py-0.5 rounded"),children:t})]},s)}),p.length>0&&(0,r.jsxs)("div",{className:"flex items-center ml-2 gap-2",children:[(0,r.jsx)("span",{className:"text-gray-500",children:"("}),(0,r.jsx)("button",{onClick:()=>{Q("active"),q([]),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,r.jsx)("span",{className:"text-gray-500 mx-1",children:"|"}),(0,r.jsx)("button",{onClick:()=>{Q("finished"),q([]),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,r.jsx)("span",{className:"text-gray-500",children:")"})]})]})]})}),(0,r.jsx)(d.Zb,{children:(0,r.jsxs)(h.iA,{children:[(0,r.jsx)(h.xD,{children:(0,r.jsxs)(h.SC,{children:[(0,r.jsxs)(h.ss,{className:"sortable whitespace-nowrap",onClick:()=>ea("id"),children:["ID",el("id")]}),(0,r.jsxs)(h.ss,{className:"sortable whitespace-nowrap",onClick:()=>ea("name"),children:["Name",el("name")]}),(0,r.jsxs)(h.ss,{className:"sortable whitespace-nowrap",onClick:()=>ea("user"),children:["User",el("user")]}),(0,r.jsxs)(h.ss,{className:"sortable whitespace-nowrap",onClick:()=>ea("workspace"),children:["Workspace",el("workspace")]}),(0,r.jsxs)(h.ss,{className:"sortable whitespace-nowrap",onClick:()=>ea("submitted_at"),children:["Submitted",el("submitted_at")]}),(0,r.jsxs)(h.ss,{className:"sortable whitespace-nowrap",onClick:()=>ea("job_duration"),children:["Duration",el("job_duration")]}),(0,r.jsxs)(h.ss,{className:"sortable whitespace-nowrap",onClick:()=>ea("status"),children:["Status",el("status")]}),(0,r.jsxs)(h.ss,{className:"sortable whitespace-nowrap",onClick:()=>ea("priority"),children:["Priority",el("priority")]}),(0,r.jsxs)(h.ss,{className:"sortable whitespace-nowrap",onClick:()=>ea("resources_str"),children:["Requested",el("resources_str")]}),(0,r.jsxs)(h.ss,{className:"sortable whitespace-nowrap",onClick:()=>ea("infra"),children:["Infra",el("infra")]}),(0,r.jsxs)(h.ss,{className:"sortable whitespace-nowrap",onClick:()=>ea("cluster"),children:["Resources",el("cluster")]}),(0,r.jsxs)(h.ss,{className:"sortable whitespace-nowrap",onClick:()=>ea("recoveries"),children:["Recoveries",el("recoveries")]}),(0,r.jsx)(h.ss,{children:"Details"}),(0,r.jsx)(h.ss,{children:"Logs"})]})}),(0,r.jsx)(h.RM,{children:N&&C?(0,r.jsx)(h.SC,{children:(0,r.jsx)(h.pj,{colSpan:13,className:"text-center py-6 text-gray-500",children:(0,r.jsxs)("div",{className:"flex justify-center items-center",children:[(0,r.jsx)(c.Z,{size:20,className:"mr-2"}),(0,r.jsx)("span",{children:"Loading..."})]})})}):eu.length>0?(0,r.jsx)(r.Fragment,{children:eu.map(e=>(0,r.jsxs)(n.Fragment,{children:[(0,r.jsxs)(h.SC,{children:[(0,r.jsx)(h.pj,{children:(0,r.jsx)(i(),{href:"/jobs/".concat(e.id),className:"text-blue-600",children:e.id})}),(0,r.jsx)(h.pj,{children:(0,r.jsx)(i(),{href:"/jobs/".concat(e.id),className:"text-blue-600",children:e.name})}),(0,r.jsx)(h.pj,{children:e.user}),(0,r.jsx)(h.pj,{children:(0,r.jsx)(i(),{href:"/workspaces",className:"text-blue-600 hover:underline",children:e.workspace||"default"})}),(0,r.jsx)(h.pj,{children:_(e.submitted_at)}),(0,r.jsx)(h.pj,{children:(0,x.LU)(e.job_duration)}),(0,r.jsx)(h.pj,{children:(0,r.jsx)(k.OE,{status:e.status})}),(0,r.jsx)(h.pj,{children:e.priority}),(0,r.jsx)(h.pj,{children:e.requested_resources}),(0,r.jsx)(h.pj,{children:e.infra&&"-"!==e.infra?(0,r.jsx)(x.Md,{content:e.full_infra||e.infra,className:"text-sm text-muted-foreground",children:(0,r.jsxs)("span",{children:[(0,r.jsx)(i(),{href:"/infra",className:"text-blue-600 hover:underline",children:e.cloud||e.infra.split("(")[0].trim()}),e.infra.includes("(")&&(0,r.jsx)("span",{children:" "+e.infra.substring(e.infra.indexOf("("))})]})}):(0,r.jsx)("span",{children:e.infra||"-"})}),(0,r.jsx)(h.pj,{children:(0,r.jsx)(x.Md,{content:e.resources_str_full||e.resources_str,className:"text-sm text-muted-foreground",children:(0,r.jsx)("span",{children:e.resources_str})})}),(0,r.jsx)(h.pj,{children:e.recoveries}),(0,r.jsx)(h.pj,{children:e.details?(0,r.jsx)(Z,{text:e.details,rowId:e.id,expandedRowId:z,setExpandedRowId:F}):"-"}),(0,r.jsx)(h.pj,{children:(0,r.jsx)(O,{jobParent:"/jobs",jobId:e.id,managed:!0})})]}),z===e.id&&(0,r.jsx)(A,{text:e.details,colSpan:13,innerRef:W})]},e.id))}):(0,r.jsx)(h.SC,{children:(0,r.jsx)(h.pj,{colSpan:13,className:"text-center py-6",children:(0,r.jsxs)("div",{className:"flex flex-col items-center space-y-4",children:[G&&(0,r.jsxs)("div",{className:"flex flex-col items-center space-y-2",children:[(0,r.jsx)("p",{className:"text-gray-700",children:"The managed job controller is launching. Please wait for it to be ready."}),(0,r.jsxs)("div",{className:"flex items-center",children:[(0,r.jsx)(c.Z,{size:12,className:"mr-2"}),(0,r.jsx)("span",{className:"text-gray-500",children:"Launching..."})]})]}),!B&&!G&&(0,r.jsx)("p",{className:"text-gray-500",children:"No active jobs"}),B&&(0,r.jsxs)("div",{className:"flex flex-col items-center space-y-2",children:[(0,r.jsx)("p",{className:"text-gray-700",children:"The managed job controller has been stopped. Please restart it to check the latest job status."}),(0,r.jsx)(o.z,{variant:"outline",size:"sm",onClick:er,className:"text-sky-blue hover:text-sky-blue-bright",disabled:N||X,children:X?(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(c.Z,{size:12,className:"mr-2"}),"Restarting..."]}):(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(w,{className:"h-4 w-4 mr-2"}),"Restart Controller"]})})]})]})})})})]})}),eo.length>0&&(0,r.jsx)("div",{className:"flex justify-end items-center py-2 px-4 text-sm text-gray-700",children:(0,r.jsxs)("div",{className:"flex items-center space-x-4",children:[(0,r.jsxs)("div",{className:"flex items-center",children:[(0,r.jsx)("span",{className:"mr-2",children:"Rows per page:"}),(0,r.jsxs)("div",{className:"relative inline-block",children:[(0,r.jsxs)("select",{value:P,onChange:e=>{D(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,r.jsx)("option",{value:10,children:"10"}),(0,r.jsx)("option",{value:30,children:"30"}),(0,r.jsx)("option",{value:50,children:"50"}),(0,r.jsx)("option",{value:100,children:"100"}),(0,r.jsx)("option",{value:200,children:"200"})]}),(0,r.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,r.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M19 9l-7 7-7-7"})})]})]}),(0,r.jsxs)("div",{children:[eh+1," – ",Math.min(ex,eo.length)," of"," ",eo.length]}),(0,r.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,r.jsx)(o.z,{variant:"ghost",size:"icon",onClick:()=>{I(e=>Math.max(e-1,1))},disabled:1===L,className:"text-gray-500 h-8 w-8 p-0",children:(0,r.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,r.jsx)("path",{d:"M15 18l-6-6 6-6"})})}),(0,r.jsx)(o.z,{variant:"ghost",size:"icon",onClick:()=>{I(e=>Math.min(e+1,ed))},disabled:L===ed||0===ed,className:"text-gray-500 h-8 w-8 p-0",children:(0,r.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,r.jsx)("path",{d:"M9 18l6-6-6-6"})})})]})]})}),(0,r.jsx)(y.cV,{isOpen:es.isOpen,onClose:()=>et({...es,isOpen:!1}),onConfirm:es.onConfirm,title:es.title,message:es.message})]})}function O(e){let{withLabel:s=!1,jobParent:t,jobId:n,managed:l}=e,i=(0,a.useRouter)(),c=(e,s)=>{e.preventDefault(),e.stopPropagation(),i.push({pathname:"".concat(t,"/").concat(n),query:{tab:s}})};return(0,r.jsxs)("div",{className:"flex items-center space-x-4",children:[(0,r.jsx)(x.WH,{content:"View Job Logs",className:"capitalize text-sm text-muted-foreground",children:(0,r.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,r.jsx)(N,{className:"w-4 h-4"}),s&&(0,r.jsx)("span",{className:"ml-1.5",children:"Logs"})]})},"logs"),l&&(0,r.jsx)(x.WH,{content:"View Controller Logs",className:"capitalize text-sm text-muted-foreground",children:(0,r.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,r.jsx)(b,{className:"w-4 h-4"}),s&&(0,r.jsx)("span",{className:"ml-2",children:"Controller Logs"})]})},"controllerlogs")]})}function D(e){let{clusterName:s,clusterJobData:t,loading:a}=e,[l,u]=(0,n.useState)(null),[m,p]=(0,n.useState)({key:null,direction:"ascending"}),[j,f]=(0,n.useState)(1),[g,w]=(0,n.useState)(10),N=(0,n.useRef)(null),[b,y]=(0,n.useState)(null);(0,n.useEffect)(()=>{let e=e=>{l&&N.current&&!N.current.contains(e.target)&&u(null)};return document.addEventListener("mousedown",e),()=>{document.removeEventListener("mousedown",e)}},[l]);let v=n.useMemo(()=>t||[],[t]);(0,n.useEffect)(()=>{JSON.stringify(t)!==JSON.stringify(b)&&y(t)},[t,b]);let C=n.useMemo(()=>m.key?[...v].sort((e,s)=>e[m.key]<s[m.key]?"ascending"===m.direction?-1:1:e[m.key]>s[m.key]?"ascending"===m.direction?1:-1:0):v,[v,m]),S=e=>{let s="ascending";m.key===e&&"ascending"===m.direction&&(s="descending"),p({key:e,direction:s})},E=e=>m.key===e?"ascending"===m.direction?" ↑":" ↓":"",L=Math.ceil(C.length/g),R=(j-1)*g,M=R+g,I=C.slice(R,M);return(0,r.jsxs)("div",{className:"relative",children:[(0,r.jsxs)(d.Zb,{children:[(0,r.jsxs)("div",{className:"flex items-center justify-between p-4",children:[(0,r.jsx)("h3",{className:"text-lg font-semibold",children:"Cluster Jobs"}),a&&(0,r.jsxs)("div",{className:"flex items-center mr-2",children:[(0,r.jsx)(c.Z,{size:15,className:"mt-0"}),(0,r.jsx)("span",{className:"ml-2 text-gray-500 text-sm",children:"Loading..."})]})]}),(0,r.jsxs)(h.iA,{children:[(0,r.jsx)(h.xD,{children:(0,r.jsxs)(h.SC,{children:[(0,r.jsxs)(h.ss,{className:"sortable whitespace-nowrap",onClick:()=>S("id"),children:["ID",E("id")]}),(0,r.jsxs)(h.ss,{className:"sortable whitespace-nowrap",onClick:()=>S("job"),children:["Name",E("job")]}),(0,r.jsxs)(h.ss,{className:"sortable whitespace-nowrap",onClick:()=>S("user"),children:["User",E("user")]}),(0,r.jsxs)(h.ss,{className:"sortable whitespace-nowrap",onClick:()=>S("workspace"),children:["Workspace",E("workspace")]}),(0,r.jsxs)(h.ss,{className:"sortable whitespace-nowrap",onClick:()=>S("submitted_at"),children:["Submitted",E("submitted_at")]}),(0,r.jsxs)(h.ss,{className:"sortable whitespace-nowrap",onClick:()=>S("job_duration"),children:["Duration",E("job_duration")]}),(0,r.jsxs)(h.ss,{className:"sortable whitespace-nowrap",onClick:()=>S("status"),children:["Status",E("status")]}),(0,r.jsxs)(h.ss,{className:"sortable whitespace-nowrap",onClick:()=>S("priority"),children:["Priority",E("priority")]}),(0,r.jsxs)(h.ss,{className:"sortable whitespace-nowrap",onClick:()=>S("resources"),children:["Resources",E("resources")]}),(0,r.jsx)(h.ss,{className:"whitespace-nowrap",children:"Logs"})]})}),(0,r.jsx)(h.RM,{children:I.length>0?I.map(e=>(0,r.jsxs)(n.Fragment,{children:[(0,r.jsxs)(h.SC,{className:l===e.id?"selected-row":"",children:[(0,r.jsx)(h.pj,{children:(0,r.jsx)(i(),{href:"/clusters/".concat(s,"/").concat(e.id),className:"text-blue-600",children:e.id})}),(0,r.jsx)(h.pj,{children:(0,r.jsx)(i(),{href:"/clusters/".concat(s,"/").concat(e.id),className:"text-blue-600",children:(0,r.jsx)(Z,{text:e.job||"Unnamed job",rowId:e.id,expandedRowId:l,setExpandedRowId:u})})}),(0,r.jsx)(h.pj,{children:e.user}),(0,r.jsx)(h.pj,{children:(0,r.jsx)(i(),{href:"/workspaces",className:"text-blue-600 hover:underline",children:e.workspace||"default"})}),(0,r.jsx)(h.pj,{children:_(e.submitted_at)}),(0,r.jsx)(h.pj,{children:(0,x.LU)(e.job_duration)}),(0,r.jsx)(h.pj,{children:(0,r.jsx)(k.OE,{status:e.status})}),(0,r.jsx)(h.pj,{children:e.priority}),(0,r.jsx)(h.pj,{children:e.resources}),(0,r.jsx)(h.pj,{className:"flex content-center items-center",children:(0,r.jsx)(O,{jobParent:"/clusters/".concat(s),jobId:e.id,managed:!1})})]}),l===e.id&&(0,r.jsx)(A,{text:e.job||"Unnamed job",colSpan:9,innerRef:N})]},e.id)):(0,r.jsx)(h.SC,{children:(0,r.jsx)(h.pj,{colSpan:9,className:"text-center py-6 text-gray-500",children:"No jobs found"})})})]})]}),C.length>0&&(0,r.jsx)("div",{className:"flex justify-end items-center py-2 px-4 text-sm text-gray-700",children:(0,r.jsxs)("div",{className:"flex items-center space-x-4",children:[(0,r.jsxs)("div",{className:"flex items-center",children:[(0,r.jsx)("span",{className:"mr-2",children:"Rows per page:"}),(0,r.jsxs)("div",{className:"relative inline-block",children:[(0,r.jsxs)("select",{value:g,onChange:e=>{w(parseInt(e.target.value,10)),f(1)},className:"py-1 pl-2 pr-6 appearance-none outline-none cursor-pointer border-none bg-transparent",style:{minWidth:"40px"},children:[(0,r.jsx)("option",{value:5,children:"5"}),(0,r.jsx)("option",{value:10,children:"10"}),(0,r.jsx)("option",{value:20,children:"20"}),(0,r.jsx)("option",{value:50,children:"50"})]}),(0,r.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,r.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M19 9l-7 7-7-7"})})]})]}),(0,r.jsxs)("div",{children:[R+1," – ",Math.min(M,C.length)," of"," ",C.length]}),(0,r.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,r.jsx)(o.z,{variant:"ghost",size:"icon",onClick:()=>{f(e=>Math.max(e-1,1))},disabled:1===j,className:"text-gray-500 h-8 w-8 p-0",children:(0,r.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,r.jsx)("path",{d:"M15 18l-6-6 6-6"})})}),(0,r.jsx)(o.z,{variant:"ghost",size:"icon",onClick:()=>{f(e=>Math.min(e+1,L))},disabled:j===L||0===L,className:"text-gray-500 h-8 w-8 p-0",children:(0,r.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,r.jsx)("path",{d:"M9 18l6-6-6-6"})})})]})]})})]})}function A(e){let{text:s,colSpan:t,innerRef:n}=e;return(0,r.jsx)(h.SC,{className:"expanded-details",children:(0,r.jsx)(h.pj,{colSpan:t,children:(0,r.jsx)("div",{className:"p-4 bg-gray-50 rounded-md border border-gray-200",ref:n,children:(0,r.jsx)("div",{className:"flex justify-between items-start",children:(0,r.jsxs)("div",{className:"flex-1",children:[(0,r.jsx)("p",{className:"text-sm font-medium text-gray-900",children:"Full Details"}),(0,r.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.length>50,c=a===t,o=i?"".concat(s.substring(0,50)):s,d=(0,n.useRef)(null);return(0,r.jsxs)("div",{className:"truncated-details relative max-w-full flex items-center",children:[(0,r.jsx)("span",{className:"truncate",children:o}),i&&(0,r.jsx)("button",{ref:d,type:"button",onClick:e=>{e.preventDefault(),e.stopPropagation(),l(c?null:t)},className:"text-blue-600 hover:text-blue-800 font-medium ml-1 flex-shrink-0","data-button-type":"show-more-less",children:c?"... show less":"... show more"})]})}}}]);
|
skypilot_nightly-1.0.0.dev20250529/sky/dashboard/out/_next/static/chunks/303-2c7b0f7af571710b.js
ADDED
@@ -0,0 +1,6 @@
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[303],{3626:function(e,s,t){"use strict";t.d(s,{Z:function(){return a}});/**
|
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 a=(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"}]])},8682:function(e,s,t){"use strict";t.d(s,{fx:function(){return v}});var a=t(5893),l=t(7294),r=t(8799),n=t(9470),d=t(3626),c=t(3001),i=t(2045),o=t(3266),x=t(8969),m=t(6378),h=t(6856),u=t(1214),g=t(1163),f=t(1664),p=t.n(f),j=t(6989);let N=u.nb.REFRESH_INTERVAL,b=u.MO.NAME_TRUNCATE_LENGTH;function y(e){let{title:s,isLoading:t,isDataLoaded:l,contexts:n,gpus:d,groupedPerContextGPUs:c,groupedPerNodeGPUs:i,handleContextClick:o,contextStats:x={},isSSH:m=!1}=e;return t&&!l?(0,a.jsx)("div",{className:"rounded-lg border bg-card text-card-foreground shadow-sm mb-6",children:(0,a.jsxs)("div",{className:"p-5",children:[(0,a.jsx)("h3",{className:"text-lg font-semibold mb-4",children:s}),(0,a.jsxs)("div",{className:"flex items-center justify-center py-6",children:[(0,a.jsx)(r.Z,{size:24,className:"mr-3"}),(0,a.jsxs)("span",{className:"text-gray-500",children:["Loading ",s,"..."]})]})]})}):l&&0===n.length?(0,a.jsx)("div",{className:"rounded-lg border bg-card text-card-foreground shadow-sm mb-6",children:(0,a.jsxs)("div",{className:"p-5",children:[(0,a.jsx)("h3",{className:"text-lg font-semibold mb-4",children:s}),(0,a.jsxs)("p",{className:"text-sm text-gray-500",children:["No ",s," found or ",s," is not configured."]})]})}):l&&n.length>0?(0,a.jsx)("div",{className:"rounded-lg border bg-card text-card-foreground shadow-sm mb-6",children:(0,a.jsxs)("div",{className:"p-5",children:[(0,a.jsxs)("div",{className:"flex items-center mb-4",children:[(0,a.jsx)("h3",{className:"text-lg font-semibold",children:s}),(0,a.jsxs)("span",{className:"ml-2 px-2 py-0.5 bg-blue-100 text-blue-800 rounded-full text-xs font-medium",children:[n.length," ",1===n.length?m?"pool":"context":m?"pools":"contexts"]})]}),(0,a.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-6",children:[(0,a.jsx)("div",{children:(0,a.jsx)("div",{className:"overflow-x-auto rounded-md border border-gray-200 shadow-sm bg-white",children:(0,a.jsxs)("table",{className:"min-w-full text-sm",children:[(0,a.jsx)("thead",{className:"bg-gray-50",children:(0,a.jsxs)("tr",{children:[(0,a.jsx)("th",{className:"p-3 text-left font-medium text-gray-600 w-1/4",children:m?"Node Pool":"Context"}),(0,a.jsx)("th",{className:"p-3 text-left font-medium text-gray-600 w-1/8",children:"Clusters"}),(0,a.jsx)("th",{className:"p-3 text-left font-medium text-gray-600 w-1/8",children:"Jobs"}),(0,a.jsx)("th",{className:"p-3 text-left font-medium text-gray-600 w-1/8",children:"Nodes"}),(0,a.jsx)("th",{className:"p-3 text-left font-medium text-gray-600 w-1/4",children:"GPU Types"}),(0,a.jsx)("th",{className:"p-3 text-left font-medium text-gray-600 w-1/8",children:"#GPUs"})]})}),(0,a.jsx)("tbody",{className:"bg-white divide-y divide-gray-200 ".concat(n.length>5?"max-h-[250px] overflow-y-auto block":""),children:n.map(e=>{let s=c[e]||[],t=i[e]||[],l=s.reduce((e,s)=>e+(s.gpu_total||0),0),r=x[m?"ssh/".concat(e.replace(/^ssh-/,"")):"kubernetes/".concat(e)]||{clusters:0,jobs:0},n=Object.keys(s.reduce((e,s)=>(e[s.gpu_name]=(e[s.gpu_name]||0)+(s.gpu_total||0),e),{})).join(", "),d=m?e.replace(/^ssh-/,""):e;return(0,a.jsxs)("tr",{className:"hover:bg-gray-50",children:[(0,a.jsx)("td",{className:"p-3",children:(0,a.jsx)(j.Md,{content:d,className:"text-sm text-muted-foreground",children:(0,a.jsx)("span",{className:"text-blue-600 hover:underline cursor-pointer",onClick:()=>o(e),children:d.length>b?"".concat(d.substring(0,Math.floor((b-3)/2)),"...").concat(d.substring(d.length-Math.ceil((b-3)/2))):d})})}),(0,a.jsx)("td",{className:"p-3",children:r.clusters>0?(0,a.jsx)("span",{className:"px-2 py-0.5 bg-blue-100 text-blue-800 rounded text-xs font-medium",children:r.clusters}):(0,a.jsx)("span",{className:"px-2 py-0.5 bg-gray-100 text-gray-500 rounded text-xs font-medium",children:"0"})}),(0,a.jsx)("td",{className:"p-3",children:r.jobs>0?(0,a.jsx)("span",{className:"px-2 py-0.5 bg-green-100 text-green-800 rounded text-xs font-medium",children:r.jobs}):(0,a.jsx)("span",{className:"px-2 py-0.5 bg-gray-100 text-gray-500 rounded text-xs font-medium",children:"0"})}),(0,a.jsx)("td",{className:"p-3",children:t.length}),(0,a.jsx)("td",{className:"p-3",children:n||"-"}),(0,a.jsx)("td",{className:"p-3",children:l})]},e)})})]})})}),d.length>0&&(0,a.jsx)("div",{children:(0,a.jsx)("div",{className:"overflow-x-auto rounded-md border border-gray-200 shadow-sm bg-white",children:(0,a.jsxs)("table",{className:"min-w-full text-sm",children:[(0,a.jsx)("thead",{className:"bg-gray-50",children:(0,a.jsxs)("tr",{children:[(0,a.jsxs)("th",{className:"p-3 text-left font-medium text-gray-600 w-1/4 whitespace-nowrap",children:["GPU",(0,a.jsxs)("span",{className:"ml-2 px-2 py-0.5 bg-green-100 text-green-800 rounded-full text-xs font-medium whitespace-nowrap",children:[d.reduce((e,s)=>e+s.gpu_free,0)," ","of"," ",d.reduce((e,s)=>e+s.gpu_total,0)," ","free"]})]}),(0,a.jsx)("th",{className:"p-3 text-left font-medium text-gray-600 w-1/4",children:"Requestable"}),(0,a.jsx)("th",{className:"p-3 text-left font-medium text-gray-600 w-1/2",children:(0,a.jsx)("div",{className:"flex items-center",children:(0,a.jsx)("span",{children:"Utilization"})})})]})}),(0,a.jsx)("tbody",{className:"bg-white divide-y divide-gray-200 ".concat(d.length>5?"max-h-[250px] overflow-y-auto block":""),children:d.map(e=>{let s=e.gpu_total-e.gpu_free,t=e.gpu_total>0?e.gpu_free/e.gpu_total*100:0,l=e.gpu_total>0?s/e.gpu_total*100:0,r=c?Object.values(c).flat().filter(s=>s.gpu_name===e.gpu_name&&(m?s.context.startsWith("ssh-"):!s.context.startsWith("ssh-"))).map(e=>e.gpu_requestable_qty_per_node).filter((e,s,t)=>t.indexOf(e)===s).join(", "):"-";return(0,a.jsxs)("tr",{children:[(0,a.jsx)("td",{className:"p-3 font-medium w-24 whitespace-nowrap",children:e.gpu_name}),(0,a.jsxs)("td",{className:"p-3 text-xs text-gray-600",children:[r||"-"," / node"]}),(0,a.jsx)("td",{className:"p-3 w-2/3",children:(0,a.jsx)("div",{className:"flex items-center gap-3",children:(0,a.jsxs)("div",{className:"flex-1 bg-gray-100 rounded-md h-5 flex overflow-hidden shadow-sm min-w-[100px] w-full",children:[l>0&&(0,a.jsx)("div",{style:{width:"".concat(l,"%")},className:"bg-yellow-500 h-full flex items-center justify-center text-white text-xs font-medium",children:l>15&&"".concat(s," used")}),t>0&&(0,a.jsx)("div",{style:{width:"".concat(t,"%")},className:"bg-green-700 h-full flex items-center justify-center text-white text-xs font-medium",children:t>15&&"".concat(e.gpu_free," free")})]})})})]},e.gpu_name)})})]})})})]})]})}):null}function w(e){let{contextName:s,gpusInContext:t,nodesInContext:l}=e;return s.startsWith("ssh-"),(0,a.jsx)("div",{className:"mb-4",children:(0,a.jsx)("div",{className:"rounded-lg border bg-card text-card-foreground shadow-sm h-full",children:(0,a.jsxs)("div",{className:"p-5",children:[(0,a.jsx)("h4",{className:"text-lg font-semibold mb-4",children:"Available GPUs"}),(0,a.jsx)("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4 mb-6",children:t.map(e=>{let s=e.gpu_total-e.gpu_free,t=e.gpu_total>0?e.gpu_free/e.gpu_total*100:0,l=e.gpu_total>0?s/e.gpu_total*100:0;return(0,a.jsxs)("div",{className:"p-3 bg-gray-50 rounded-md border border-gray-200 shadow-sm",children:[(0,a.jsxs)("div",{className:"flex justify-between items-center mb-1.5 flex-wrap",children:[(0,a.jsxs)("div",{className:"font-medium text-gray-800 text-sm",children:[e.gpu_name,(0,a.jsxs)("span",{className:"text-xs text-gray-500 ml-2",children:["(Requestable: ",e.gpu_requestable_qty_per_node," / node)"]})]}),(0,a.jsxs)("span",{className:"text-xs font-medium",children:[e.gpu_free," free / ",e.gpu_total," total"]})]}),(0,a.jsxs)("div",{className:"w-full bg-gray-100 rounded-md h-4 flex overflow-hidden shadow-sm",children:[l>0&&(0,a.jsx)("div",{style:{width:"".concat(l,"%")},className:"bg-yellow-500 h-full flex items-center justify-center text-white text-xs",children:l>15&&"".concat(s," used")}),t>0&&(0,a.jsx)("div",{style:{width:"".concat(t,"%")},className:"bg-green-700 h-full flex items-center justify-center text-white text-xs",children:t>15&&"".concat(e.gpu_free," free")})]})]},e.gpu_name)})}),l.length>0&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("h4",{className:"text-lg font-semibold mb-4",children:"Nodes"}),(0,a.jsx)("div",{className:"overflow-x-auto rounded-md border border-gray-200 shadow-sm",children:(0,a.jsxs)("table",{className:"min-w-full text-sm",children:[(0,a.jsx)("thead",{className:"bg-gray-100",children:(0,a.jsxs)("tr",{children:[(0,a.jsx)("th",{className:"p-3 text-left font-medium text-gray-600",children:"Node"}),(0,a.jsx)("th",{className:"p-3 text-left font-medium text-gray-600",children:"GPU"}),(0,a.jsx)("th",{className:"p-3 text-right font-medium text-gray-600",children:"Availability"})]})}),(0,a.jsx)("tbody",{className:"bg-white divide-y divide-gray-200",children:l.map((e,s)=>(0,a.jsxs)("tr",{className:"hover:bg-gray-50",children:[(0,a.jsx)("td",{className:"p-3 whitespace-nowrap text-gray-700",children:e.node_name}),(0,a.jsx)("td",{className:"p-3 whitespace-nowrap text-gray-700",children:e.gpu_name}),(0,a.jsx)("td",{className:"p-3 whitespace-nowrap text-right text-gray-700",children:"".concat(e.gpu_free," of ").concat(e.gpu_total," free")})]},"".concat(e.node_name,"-").concat(s)))})]})})]})]})})})}function v(){let[e,s]=(0,l.useState)(!0),[t,u]=(0,l.useState)(!0),[f,j]=(0,l.useState)(!0),b=l.useRef(null),v=(0,c.X)(),[_,C]=(0,l.useState)(!1),[S,P]=(0,l.useState)(!1),k=(0,g.useRouter)(),[L,U]=(0,l.useState)([]),[E,I]=(0,l.useState)([]),[M,R]=(0,l.useState)([]),[G,Z]=(0,l.useState)([]),[q,W]=(0,l.useState)([]),[A,z]=(0,l.useState)(0),[H,F]=(0,l.useState)(0),[T,O]=(0,l.useState)({}),[D,J]=(0,l.useState)(null),K=l.useCallback(async function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{showLoadingIndicators:!0};e.showLoadingIndicators&&(s(!0),u(!0));try{let{gpuData:e,cloudData:s}=await m.ZP.get(i.l4),{allContextNames:t,allGPUs:a,perContextGPUs:l,perNodeGPUs:r,contextStats:n}=e;U(t||[]),I(a||[]),R(l||[]),Z(r||[]),O(n||{}),C(!0),W((null==s?void 0:s.clouds)||[]),z((null==s?void 0:s.totalClouds)||0),F((null==s?void 0:s.enabledClouds)||0),P(!0)}catch(e){console.error("Error in fetchData:",e)}finally{s(!1),u(!1),f&&e.showLoadingIndicators&&j(!1)}},[f]);(0,l.useEffect)(()=>{b.current=K},[K]),(0,l.useEffect)(()=>{(async()=>{await h.ZP.preloadForPage("infra"),K({showLoadingIndicators:!0})})()},[]),(0,l.useEffect)(()=>{let e=!0,s=setInterval(()=>{e&&b.current&&b.current({showLoadingIndicators:!1})},N);return()=>{e=!1,clearInterval(s)}},[N]),E.length,E.reduce((e,s)=>e+s.gpu_total,0),E.reduce((e,s)=>e+s.gpu_free,0);let V=l.useMemo(()=>M?M.reduce((e,s)=>{let{context:t}=s;return e[t]||(e[t]=[]),e[t].push(s),e},{}):{},[M]),X=l.useMemo(()=>L.filter(e=>e.startsWith("ssh-")),[L]),B=l.useMemo(()=>L.filter(e=>!e.startsWith("ssh-")),[L]),Q=l.useMemo(()=>{if(!M)return[];let e=new Set;return M.forEach(s=>{s.context.startsWith("ssh-")&&e.add(s.gpu_name)}),E.filter(s=>e.has(s.gpu_name))},[E,M]),Y=l.useMemo(()=>{if(!M)return[];let e=new Set;return M.forEach(s=>{s.context.startsWith("ssh-")||e.add(s.gpu_name)}),E.filter(s=>e.has(s.gpu_name))},[E,M]),$=l.useMemo(()=>G?G.reduce((e,s)=>{let{context:t}=s;return e[t]||(e[t]=[]),e[t].push(s),e},{}):{},[G]);(0,l.useEffect)(()=>{k.isReady&&k.query.context&&J(decodeURIComponent(Array.isArray(k.query.context)?k.query.context[0]:k.query.context))},[k.isReady,k.query.context]);let ee=e=>{J(e),k.push("/infra/".concat(encodeURIComponent(e)))},es=e||t;return(0,a.jsxs)(n.A,{highlighted:"infra",children:[(0,a.jsxs)("div",{className:"flex items-center justify-between mb-4 h-5",children:[(0,a.jsxs)("div",{className:"text-base flex items-center",children:[(0,a.jsx)(p(),{href:"/infra",className:"text-sky-blue hover:underline ".concat(D?"":"cursor-default"),children:"Infrastructure"}),D&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("span",{className:"mx-2 text-gray-500",children:"›"}),D.startsWith("ssh-")?(0,a.jsx)(p(),{href:"/infra",className:"text-sky-blue hover:underline cursor-pointer",children:"SSH Node Pool"}):(0,a.jsx)(p(),{href:"/infra",className:"text-sky-blue hover:underline cursor-pointer",children:"Kubernetes"}),(0,a.jsx)("span",{className:"mx-2 text-gray-500",children:"›"}),(0,a.jsx)("span",{className:"text-sky-blue",children:D.startsWith("ssh-")?D.replace(/^ssh-/,""):D})]})]}),(0,a.jsxs)("div",{className:"flex items-center",children:[es&&(0,a.jsxs)("div",{className:"flex items-center mr-2",children:[(0,a.jsx)(r.Z,{size:15,className:"mt-0"}),(0,a.jsx)("span",{className:"ml-2 text-gray-500",children:"Loading..."})]}),(0,a.jsxs)("button",{onClick:()=>{m.ZP.invalidate(o.getClusters),m.ZP.invalidate(x.getManagedJobs),m.ZP.invalidate(i.l4),b.current&&b.current({showLoadingIndicators:!0})},disabled:es,className:"text-sky-blue hover:text-sky-blue-bright flex items-center",children:[(0,a.jsx)(d.Z,{className:"h-4 w-4 mr-1.5"}),!v&&"Refresh"]})]})]}),D?e&&!_?(0,a.jsxs)("div",{className:"flex flex-col items-center justify-center h-64",children:[(0,a.jsx)(r.Z,{size:32,className:"mb-4"}),(0,a.jsx)("span",{className:"text-gray-500 text-lg",children:"Loading Context..."})]}):(s=>{let t=V[s]||[],l=$[s]||[];return e&&!_?(0,a.jsxs)("div",{className:"flex flex-col items-center justify-center h-64",children:[(0,a.jsx)(r.Z,{size:32,className:"mb-4"}),(0,a.jsx)("span",{className:"text-gray-500 text-lg",children:"Loading Context..."})]}):(0,a.jsx)(w,{contextName:s,gpusInContext:t,nodesInContext:l})})(D):(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(y,{title:"SSH Node Pool",isLoading:e,isDataLoaded:_,contexts:X,gpus:Q,groupedPerContextGPUs:V,groupedPerNodeGPUs:$,handleContextClick:ee,contextStats:T,isSSH:!0}),(0,a.jsx)(y,{title:"Kubernetes",isLoading:e,isDataLoaded:_,contexts:B,gpus:Y,groupedPerContextGPUs:V,groupedPerNodeGPUs:$,handleContextClick:ee,contextStats:T,isSSH:!1}),t&&!S?(0,a.jsx)("div",{className:"rounded-lg border bg-card text-card-foreground shadow-sm mb-6",children:(0,a.jsxs)("div",{className:"p-5",children:[(0,a.jsx)("h3",{className:"text-lg font-semibold mb-4",children:"Cloud"}),(0,a.jsxs)("div",{className:"flex items-center justify-center py-6",children:[(0,a.jsx)(r.Z,{size:24,className:"mr-3"}),(0,a.jsx)("span",{className:"text-gray-500",children:"Loading Cloud..."})]})]})}):(0,a.jsx)("div",{className:"rounded-lg border bg-card text-card-foreground shadow-sm mb-6",children:(0,a.jsxs)("div",{className:"p-5",children:[(0,a.jsxs)("div",{className:"flex items-center mb-4",children:[(0,a.jsx)("h3",{className:"text-lg font-semibold",children:"Cloud"}),(0,a.jsxs)("span",{className:"ml-2 px-2 py-0.5 bg-blue-100 text-blue-800 rounded-full text-xs font-medium",children:[H," of ",A," enabled"]})]}),0===q.length?(0,a.jsx)("p",{className:"text-sm text-gray-500",children:"No enabled clouds available."}):(0,a.jsx)("div",{className:"overflow-x-auto rounded-md border border-gray-200 shadow-sm bg-white",children:(0,a.jsxs)("table",{className:"min-w-full text-sm",children:[(0,a.jsx)("thead",{className:"bg-gray-50",children:(0,a.jsxs)("tr",{children:[(0,a.jsx)("th",{className:"p-3 text-left font-medium text-gray-600 w-32",children:"Cloud"}),(0,a.jsx)("th",{className:"p-3 text-left font-medium text-gray-600 w-24",children:"Clusters"}),(0,a.jsx)("th",{className:"p-3 text-left font-medium text-gray-600 w-24",children:"Jobs"})]})}),(0,a.jsx)("tbody",{className:"bg-white divide-y divide-gray-200",children:q.map(e=>(0,a.jsxs)("tr",{className:"hover:bg-gray-50",children:[(0,a.jsx)("td",{className:"p-3 font-medium text-gray-700",children:e.name}),(0,a.jsx)("td",{className:"p-3",children:e.clusters>0?(0,a.jsx)("span",{className:"px-2 py-0.5 bg-blue-100 text-blue-800 rounded text-xs font-medium",children:e.clusters}):(0,a.jsx)("span",{className:"px-2 py-0.5 bg-gray-100 text-gray-500 rounded text-xs font-medium",children:"0"})}),(0,a.jsx)("td",{className:"p-3",children:e.jobs>0?(0,a.jsx)("span",{className:"px-2 py-0.5 bg-green-100 text-green-800 rounded text-xs font-medium",children:e.jobs}):(0,a.jsx)("span",{className:"px-2 py-0.5 bg-gray-100 text-gray-500 rounded text-xs font-medium",children:"0"})})]},e.name))})]})})]})})]})]})}},9008:function(e,s,t){e.exports=t(7219)}}]);
|