skypilot-nightly 1.0.0.dev20250808__tar.gz → 1.0.0.dev20250812__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.
Potentially problematic release.
This version of skypilot-nightly might be problematic. Click here for more details.
- {skypilot_nightly-1.0.0.dev20250808/skypilot_nightly.egg-info → skypilot_nightly-1.0.0.dev20250812}/PKG-INFO +1 -1
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/__init__.py +2 -2
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/adaptors/kubernetes.py +5 -2
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/backends/backend_utils.py +37 -6
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/backends/cloud_vm_ray_backend.py +41 -6
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/client/cli/command.py +22 -2
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/core.py +5 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/dashboard/out/404.html +1 -1
- {skypilot_nightly-1.0.0.dev20250808/sky/dashboard/out/_next/static/-DXZksWqf2waNHeU9YTQe → skypilot_nightly-1.0.0.dev20250812/sky/dashboard/out/_next/static/Fuy7OzApYTUMz2QgoP7dP}/_buildManifest.js +1 -1
- skypilot_nightly-1.0.0.dev20250812/sky/dashboard/out/_next/static/chunks/8056-5bdeda81199c0def.js +1 -0
- skypilot_nightly-1.0.0.dev20250812/sky/dashboard/out/_next/static/chunks/pages/clusters/[cluster]/[job]-078751bad714c017.js +11 -0
- skypilot_nightly-1.0.0.dev20250812/sky/dashboard/out/_next/static/chunks/pages/clusters/[cluster]-da9cc0901349c2e9.js +1 -0
- skypilot_nightly-1.0.0.dev20250808/sky/dashboard/out/_next/static/chunks/webpack-339efec49c0cc7d0.js → skypilot_nightly-1.0.0.dev20250812/sky/dashboard/out/_next/static/chunks/webpack-7fd0cf9dbecff10f.js +1 -1
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/dashboard/out/clusters/[cluster]/[job].html +1 -1
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/dashboard/out/clusters/[cluster].html +1 -1
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/dashboard/out/clusters.html +1 -1
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/dashboard/out/config.html +1 -1
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/dashboard/out/index.html +1 -1
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/dashboard/out/infra/[context].html +1 -1
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/dashboard/out/infra.html +1 -1
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/dashboard/out/jobs/[job].html +1 -1
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/dashboard/out/jobs/pools/[pool].html +1 -1
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/dashboard/out/jobs.html +1 -1
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/dashboard/out/users.html +1 -1
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/dashboard/out/volumes.html +1 -1
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/dashboard/out/workspace/new.html +1 -1
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/dashboard/out/workspaces/[name].html +1 -1
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/dashboard/out/workspaces.html +1 -1
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/execution.py +15 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/global_user_state.py +102 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/jobs/recovery_strategy.py +3 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/jobs/server/core.py +4 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/jobs/utils.py +9 -2
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/__init__.py +3 -2
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/aws/instance.py +5 -4
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/azure/instance.py +5 -4
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/cudo/instance.py +5 -4
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/do/instance.py +5 -4
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/fluidstack/instance.py +5 -4
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/gcp/instance.py +5 -4
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/hyperbolic/instance.py +5 -4
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/kubernetes/instance.py +36 -6
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/lambda_cloud/instance.py +5 -4
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/nebius/instance.py +5 -4
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/oci/instance.py +5 -4
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/paperspace/instance.py +5 -4
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/provisioner.py +6 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/runpod/instance.py +5 -4
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/scp/instance.py +5 -5
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/vast/instance.py +5 -5
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/vsphere/instance.py +5 -4
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/schemas/db/global_user_state/001_initial_schema.py +1 -1
- skypilot_nightly-1.0.0.dev20250812/sky/schemas/db/global_user_state/005_cluster_event.py +32 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/schemas/db/serve_state/001_initial_schema.py +1 -1
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/schemas/db/spot_jobs/001_initial_schema.py +1 -1
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/serve/serve_utils.py +37 -3
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/skypilot_config.py +4 -4
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/users/permission.py +1 -1
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/utils/cli_utils/status_utils.py +9 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/utils/db/db_utils.py +22 -1
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/utils/db/migration_utils.py +1 -1
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812/skypilot_nightly.egg-info}/PKG-INFO +1 -1
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/skypilot_nightly.egg-info/SOURCES.txt +7 -6
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/tests/test_api_compatibility.py +4 -2
- skypilot_nightly-1.0.0.dev20250808/sky/dashboard/out/_next/static/chunks/8056-34d27f51e6d1c631.js +0 -1
- skypilot_nightly-1.0.0.dev20250808/sky/dashboard/out/_next/static/chunks/pages/clusters/[cluster]/[job]-ae17cec0fc6483d9.js +0 -11
- skypilot_nightly-1.0.0.dev20250808/sky/dashboard/out/_next/static/chunks/pages/clusters/[cluster]-155d477a6c3e04e2.js +0 -1
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/LICENSE +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/MANIFEST.in +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/README.md +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/pyproject.toml +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/setup.cfg +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/setup.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/adaptors/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/adaptors/aws.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/adaptors/azure.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/adaptors/cloudflare.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/adaptors/common.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/adaptors/cudo.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/adaptors/do.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/adaptors/docker.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/adaptors/gcp.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/adaptors/hyperbolic.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/adaptors/ibm.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/adaptors/nebius.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/adaptors/oci.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/adaptors/runpod.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/adaptors/vast.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/adaptors/vsphere.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/admin_policy.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/authentication.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/backends/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/backends/backend.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/backends/docker_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/backends/local_docker_backend.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/backends/monkey_patches/monkey_patch_ray_up.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/backends/wheel_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/catalog/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/catalog/aws_catalog.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/catalog/azure_catalog.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/catalog/common.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/catalog/config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/catalog/cudo_catalog.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/catalog/data_fetchers/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/catalog/data_fetchers/analyze.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/catalog/data_fetchers/fetch_aws.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/catalog/data_fetchers/fetch_azure.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/catalog/data_fetchers/fetch_cudo.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/catalog/data_fetchers/fetch_fluidstack.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/catalog/data_fetchers/fetch_gcp.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/catalog/data_fetchers/fetch_hyperbolic.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/catalog/data_fetchers/fetch_ibm.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/catalog/data_fetchers/fetch_lambda_cloud.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/catalog/data_fetchers/fetch_nebius.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/catalog/data_fetchers/fetch_vast.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/catalog/data_fetchers/fetch_vsphere.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/catalog/do_catalog.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/catalog/fluidstack_catalog.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/catalog/gcp_catalog.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/catalog/hyperbolic_catalog.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/catalog/ibm_catalog.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/catalog/kubernetes_catalog.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/catalog/lambda_catalog.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/catalog/nebius_catalog.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/catalog/oci_catalog.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/catalog/paperspace_catalog.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/catalog/runpod_catalog.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/catalog/scp_catalog.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/catalog/ssh_catalog.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/catalog/vast_catalog.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/catalog/vsphere_catalog.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/check.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/cli.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/client/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/client/cli/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/client/cli/deprecation_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/client/cli/flags.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/client/cli/git.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/client/common.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/client/oauth.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/client/sdk.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/client/sdk_async.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/client/service_account_auth.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/cloud_stores.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/clouds/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/clouds/aws.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/clouds/azure.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/clouds/cloud.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/clouds/cudo.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/clouds/do.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/clouds/fluidstack.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/clouds/gcp.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/clouds/hyperbolic.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/clouds/ibm.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/clouds/kubernetes.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/clouds/lambda_cloud.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/clouds/nebius.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/clouds/oci.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/clouds/paperspace.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/clouds/runpod.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/clouds/scp.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/clouds/ssh.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/clouds/utils/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/clouds/utils/aws_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/clouds/utils/azure_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/clouds/utils/gcp_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/clouds/utils/oci_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/clouds/utils/scp_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/clouds/vast.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/clouds/vsphere.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/dag.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808/sky/dashboard/out/_next/static/-DXZksWqf2waNHeU9YTQe → skypilot_nightly-1.0.0.dev20250812/sky/dashboard/out/_next/static/Fuy7OzApYTUMz2QgoP7dP}/_ssgManifest.js +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/dashboard/out/_next/static/chunks/1141-a8a8f1adba34c892.js +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/dashboard/out/_next/static/chunks/1272-1ef0bf0237faccdb.js +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/dashboard/out/_next/static/chunks/1559-6c00e20454194859.js +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/dashboard/out/_next/static/chunks/1871-980a395e92633a5c.js +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/dashboard/out/_next/static/chunks/2369.fc20f0c2c8ed9fe7.js +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/dashboard/out/_next/static/chunks/2641.142718b6b78a6f9b.js +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/dashboard/out/_next/static/chunks/3785.6003d293cb83eab4.js +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/dashboard/out/_next/static/chunks/3850-ff4a9a69d978632b.js +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/dashboard/out/_next/static/chunks/3937.210053269f121201.js +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/dashboard/out/_next/static/chunks/4725.29550342bd53afd8.js +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/dashboard/out/_next/static/chunks/4937.a2baa2df5572a276.js +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/dashboard/out/_next/static/chunks/5739-d67458fcb1386c92.js +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/dashboard/out/_next/static/chunks/6130-2be46d70a38f1e82.js +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/dashboard/out/_next/static/chunks/6135-85426374db04811e.js +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/dashboard/out/_next/static/chunks/616-3d59f75e2ccf9321.js +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/dashboard/out/_next/static/chunks/6212-7bd06f60ba693125.js +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/dashboard/out/_next/static/chunks/6601-06114c982db410b6.js +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/dashboard/out/_next/static/chunks/691.5eeedf82cc243343.js +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/dashboard/out/_next/static/chunks/6989-6129c1cfbcf51063.js +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/dashboard/out/_next/static/chunks/6990-0f886f16e0d55ff8.js +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/dashboard/out/_next/static/chunks/7411-b15471acd2cba716.js +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/dashboard/out/_next/static/chunks/8252.62b0d23aed618bb2.js +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/dashboard/out/_next/static/chunks/8969-c9686994ddafcf01.js +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/dashboard/out/_next/static/chunks/9025.a1bef12d672bb66d.js +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/dashboard/out/_next/static/chunks/9159-11421c0f2909236f.js +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/dashboard/out/_next/static/chunks/9360.85b0b1b4054574dd.js +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/dashboard/out/_next/static/chunks/9666.cd4273f2a5c5802c.js +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/dashboard/out/_next/static/chunks/9847.757720f3b40c0aa5.js +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/dashboard/out/_next/static/chunks/9984.c5564679e467d245.js +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/dashboard/out/_next/static/chunks/fd9d1056-86323a29a8f7e46a.js +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/dashboard/out/_next/static/chunks/framework-cf60a09ccd051a10.js +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/dashboard/out/_next/static/chunks/main-app-587214043926b3cc.js +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/dashboard/out/_next/static/chunks/main-f15ccb73239a3bf1.js +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/dashboard/out/_next/static/chunks/pages/_app-491a4d699d95e808.js +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/dashboard/out/_next/static/chunks/pages/_error-c66a4e8afc46f17b.js +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/dashboard/out/_next/static/chunks/pages/clusters-b30460f683e6ba96.js +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/dashboard/out/_next/static/chunks/pages/config-dfb9bf07b13045f4.js +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/dashboard/out/_next/static/chunks/pages/index-444f1804401f04ea.js +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/dashboard/out/_next/static/chunks/pages/infra/[context]-13d53fffc03ccb52.js +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/dashboard/out/_next/static/chunks/pages/infra-fc9222e26c8e2f0d.js +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/dashboard/out/_next/static/chunks/pages/jobs/[job]-154f55cf8af55be5.js +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/dashboard/out/_next/static/chunks/pages/jobs/pools/[pool]-f5ccf5d39d87aebe.js +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/dashboard/out/_next/static/chunks/pages/jobs-cdc60fb5d371e16a.js +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/dashboard/out/_next/static/chunks/pages/users-7ed36e44e779d5c7.js +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/dashboard/out/_next/static/chunks/pages/volumes-c9695d657f78b5dc.js +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/dashboard/out/_next/static/chunks/pages/workspace/new-3f88a1c7e86a3f86.js +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/dashboard/out/_next/static/chunks/pages/workspaces/[name]-f72f73bcef9541dc.js +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/dashboard/out/_next/static/chunks/pages/workspaces-8f67be60165724cc.js +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/dashboard/out/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/dashboard/out/_next/static/css/4614e06482d7309e.css +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/dashboard/out/favicon.ico +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/dashboard/out/skypilot.svg +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/dashboard/out/videos/cursor-small.mp4 +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/data/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/data/data_transfer.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/data/data_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/data/mounting_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/data/storage.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/data/storage_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/exceptions.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/jobs/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/jobs/client/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/jobs/client/sdk.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/jobs/client/sdk_async.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/jobs/constants.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/jobs/controller.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/jobs/scheduler.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/jobs/server/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/jobs/server/server.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/jobs/server/utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/jobs/state.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/logs/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/logs/agent.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/logs/aws.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/logs/gcp.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/metrics/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/metrics/utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/models.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/optimizer.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/aws/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/aws/config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/aws/utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/azure/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/azure/azure-config-template.json +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/azure/config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/common.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/constants.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/cudo/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/cudo/config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/cudo/cudo_machine_type.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/cudo/cudo_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/cudo/cudo_wrapper.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/do/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/do/config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/do/constants.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/do/utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/docker_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/fluidstack/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/fluidstack/config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/fluidstack/fluidstack_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/gcp/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/gcp/config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/gcp/constants.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/gcp/instance_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/gcp/mig_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/gcp/volume_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/hyperbolic/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/hyperbolic/config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/hyperbolic/utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/instance_setup.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/kubernetes/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/kubernetes/config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/kubernetes/constants.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/kubernetes/manifests/fusermount-server-daemonset.yaml +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/kubernetes/network.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/kubernetes/network_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/kubernetes/utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/kubernetes/volume.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/lambda_cloud/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/lambda_cloud/config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/lambda_cloud/lambda_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/logging.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/metadata_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/nebius/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/nebius/config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/nebius/constants.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/nebius/utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/oci/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/oci/config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/oci/query_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/paperspace/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/paperspace/config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/paperspace/constants.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/paperspace/utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/runpod/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/runpod/api/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/runpod/api/commands.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/runpod/api/pods.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/runpod/config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/runpod/utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/scp/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/scp/config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/ssh/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/vast/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/vast/config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/vast/utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/vsphere/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/vsphere/common/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/vsphere/common/cls_api_client.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/vsphere/common/cls_api_helper.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/vsphere/common/custom_script.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/vsphere/common/id_generator.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/vsphere/common/metadata_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/vsphere/common/service_manager.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/vsphere/common/service_manager_factory.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/vsphere/common/ssl_helper.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/vsphere/common/vapiconnect.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/vsphere/common/vim_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/vsphere/config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/vsphere/vsphere_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/py.typed +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/resources.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/schemas/db/README +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/schemas/db/env.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/schemas/db/global_user_state/002_add_workspace_to_cluster_history.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/schemas/db/global_user_state/003_fix_initial_revision.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/schemas/db/global_user_state/004_is_managed.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/schemas/db/script.py.mako +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/schemas/db/spot_jobs/002_cluster_pool.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/schemas/db/spot_jobs/003_pool_hash.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/serve/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/serve/autoscalers.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/serve/client/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/serve/client/impl.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/serve/client/sdk.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/serve/client/sdk_async.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/serve/constants.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/serve/controller.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/serve/load_balancer.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/serve/load_balancing_policies.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/serve/replica_managers.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/serve/serve_state.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/serve/server/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/serve/server/core.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/serve/server/impl.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/serve/server/server.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/serve/service.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/serve/service_spec.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/serve/spot_placer.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/server/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/server/auth/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/server/auth/authn.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/server/auth/oauth2_proxy.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/server/common.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/server/config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/server/constants.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/server/daemons.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/server/html/log.html +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/server/html/token_page.html +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/server/metrics.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/server/requests/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/server/requests/event_loop.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/server/requests/executor.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/server/requests/payloads.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/server/requests/preconditions.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/server/requests/process.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/server/requests/queues/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/server/requests/queues/local_queue.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/server/requests/queues/mp_queue.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/server/requests/requests.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/server/requests/serializers/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/server/requests/serializers/decoders.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/server/requests/serializers/encoders.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/server/rest.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/server/server.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/server/state.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/server/stream_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/server/uvicorn.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/server/versions.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/setup_files/MANIFEST.in +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/setup_files/alembic.ini +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/setup_files/dependencies.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/setup_files/setup.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/sky_logging.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/skylet/LICENSE +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/skylet/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/skylet/attempt_skylet.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/skylet/autostop_lib.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/skylet/configs.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/skylet/constants.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/skylet/events.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/skylet/job_lib.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/skylet/log_lib.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/skylet/log_lib.pyi +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/skylet/providers/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/skylet/providers/command_runner.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/skylet/providers/ibm/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/skylet/providers/ibm/node_provider.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/skylet/providers/ibm/utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/skylet/providers/ibm/vpc_provider.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/skylet/ray_patches/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/skylet/ray_patches/autoscaler.py.patch +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/skylet/ray_patches/cli.py.patch +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/skylet/ray_patches/command_runner.py.patch +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/skylet/ray_patches/log_monitor.py.patch +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/skylet/ray_patches/resource_demand_scheduler.py.patch +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/skylet/ray_patches/updater.py.patch +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/skylet/ray_patches/worker.py.patch +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/skylet/skylet.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/skylet/subprocess_daemon.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/ssh_node_pools/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/ssh_node_pools/core.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/ssh_node_pools/server.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/task.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/templates/aws-ray.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/templates/azure-ray.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/templates/cudo-ray.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/templates/do-ray.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/templates/fluidstack-ray.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/templates/gcp-ray.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/templates/hyperbolic-ray.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/templates/ibm-ray.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/templates/jobs-controller.yaml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/templates/kubernetes-ingress.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/templates/kubernetes-loadbalancer.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/templates/kubernetes-port-forward-proxy-command.sh +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/templates/kubernetes-ray.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/templates/kubernetes-ssh-jump.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/templates/lambda-ray.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/templates/local-ray.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/templates/nebius-ray.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/templates/oci-ray.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/templates/paperspace-ray.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/templates/runpod-ray.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/templates/scp-ray.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/templates/sky-serve-controller.yaml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/templates/skypilot-server-kubernetes-proxy.sh +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/templates/vast-ray.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/templates/vsphere-ray.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/templates/websocket_proxy.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/usage/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/usage/constants.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/usage/usage_lib.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/users/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/users/model.conf +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/users/rbac.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/users/server.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/users/token_service.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/utils/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/utils/accelerator_registry.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/utils/admin_policy_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/utils/annotations.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/utils/atomic.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/utils/aws/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/utils/aws/get_default_security_group.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/utils/cli_utils/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/utils/cluster_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/utils/command_runner.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/utils/command_runner.pyi +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/utils/common.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/utils/common_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/utils/config_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/utils/context.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/utils/context_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/utils/control_master_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/utils/controller_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/utils/dag_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/utils/db/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/utils/env_options.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/utils/git.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/utils/git_clone.sh +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/utils/infra_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/utils/kubernetes/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/utils/kubernetes/cleanup-tunnel.sh +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/utils/kubernetes/config_map_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/utils/kubernetes/create_cluster.sh +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/utils/kubernetes/delete_cluster.sh +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/utils/kubernetes/deploy_remote_cluster.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/utils/kubernetes/exec_kubeconfig_converter.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/utils/kubernetes/generate_kind_config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/utils/kubernetes/generate_kubeconfig.sh +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/utils/kubernetes/gpu_labeler.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/utils/kubernetes/k8s_gpu_labeler_job.yaml +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/utils/kubernetes/k8s_gpu_labeler_setup.yaml +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/utils/kubernetes/kubernetes_deploy_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/utils/kubernetes/rsync_helper.sh +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/utils/kubernetes/ssh-tunnel.sh +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/utils/kubernetes/ssh_jump_lifecycle_manager.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/utils/kubernetes/ssh_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/utils/kubernetes_enums.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/utils/locks.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/utils/log_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/utils/message_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/utils/registry.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/utils/resource_checker.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/utils/resources_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/utils/rich_console_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/utils/rich_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/utils/schemas.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/utils/status_lib.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/utils/subprocess_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/utils/tempstore.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/utils/timeline.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/utils/ux_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/utils/validator.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/utils/volume.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/volumes/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/volumes/client/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/volumes/client/sdk.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/volumes/server/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/volumes/server/core.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/volumes/server/server.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/volumes/utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/volumes/volume.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/workspaces/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/workspaces/core.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/workspaces/server.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/workspaces/utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/skypilot_nightly.egg-info/dependency_links.txt +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/skypilot_nightly.egg-info/entry_points.txt +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/skypilot_nightly.egg-info/requires.txt +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/skypilot_nightly.egg-info/top_level.txt +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/tests/test_api.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/tests/test_cli.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/tests/test_config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/tests/test_db_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/tests/test_failover.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/tests/test_global_user_state.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/tests/test_jobs.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/tests/test_jobs_and_serve.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/tests/test_list_accelerators.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/tests/test_no_parellel.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/tests/test_optimizer_dryruns.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/tests/test_optimizer_random_dag.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/tests/test_serve_autoscaler.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/tests/test_smoke.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/tests/test_storage.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/tests/test_wheels.py +0 -0
- {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/tests/test_yaml_parser.py +0 -0
|
@@ -5,7 +5,7 @@ from typing import Optional
|
|
|
5
5
|
import urllib.request
|
|
6
6
|
|
|
7
7
|
# Replaced with the current commit when building the wheels.
|
|
8
|
-
_SKYPILOT_COMMIT_SHA = '
|
|
8
|
+
_SKYPILOT_COMMIT_SHA = '1e311e80f4a9112a6d2c86bb78d4c225042cedbc'
|
|
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.dev20250812'
|
|
39
39
|
__root_dir__ = os.path.dirname(os.path.abspath(__file__))
|
|
40
40
|
|
|
41
41
|
|
{skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/adaptors/kubernetes.py
RENAMED
|
@@ -142,8 +142,11 @@ def _load_config(context: Optional[str] = None):
|
|
|
142
142
|
# show up in SkyPilot tasks. For now, we work around by using
|
|
143
143
|
# DNS name instead of environment variables.
|
|
144
144
|
# See issue: https://github.com/skypilot-org/skypilot/issues/2287
|
|
145
|
-
|
|
146
|
-
|
|
145
|
+
# Only set if not already present (preserving existing values)
|
|
146
|
+
if 'KUBERNETES_SERVICE_HOST' not in os.environ:
|
|
147
|
+
os.environ['KUBERNETES_SERVICE_HOST'] = 'kubernetes.default.svc'
|
|
148
|
+
if 'KUBERNETES_SERVICE_PORT' not in os.environ:
|
|
149
|
+
os.environ['KUBERNETES_SERVICE_PORT'] = '443'
|
|
147
150
|
kubernetes.config.load_incluster_config()
|
|
148
151
|
except kubernetes.config.config_exception.ConfigException:
|
|
149
152
|
_load_config_from_kubeconfig()
|
|
@@ -1773,8 +1773,9 @@ def tag_filter_for_cluster(cluster_name: str) -> Dict[str, str]:
|
|
|
1773
1773
|
|
|
1774
1774
|
def _query_cluster_status_via_cloud_api(
|
|
1775
1775
|
handle: 'cloud_vm_ray_backend.CloudVmRayResourceHandle'
|
|
1776
|
-
) -> List[status_lib.ClusterStatus]:
|
|
1777
|
-
"""Returns the status of the cluster
|
|
1776
|
+
) -> List[Tuple[status_lib.ClusterStatus, Optional[str]]]:
|
|
1777
|
+
"""Returns the status of the cluster as a list of tuples corresponding
|
|
1778
|
+
to the node status and an optional reason string for said status.
|
|
1778
1779
|
|
|
1779
1780
|
Raises:
|
|
1780
1781
|
exceptions.ClusterStatusFetchingError: the cluster status cannot be
|
|
@@ -1813,9 +1814,13 @@ def _query_cluster_status_via_cloud_api(
|
|
|
1813
1814
|
region = provider_config.get('region') or provider_config.get(
|
|
1814
1815
|
'location')
|
|
1815
1816
|
zone = ray_config['provider'].get('availability_zone')
|
|
1817
|
+
# TODO (kyuds): refactor cloud.query_status api to include reason.
|
|
1818
|
+
# Currently not refactoring as this API is actually supposed to be
|
|
1819
|
+
# deprecated soon.
|
|
1816
1820
|
node_statuses = cloud.query_status(
|
|
1817
1821
|
cluster_name_on_cloud,
|
|
1818
1822
|
tag_filter_for_cluster(cluster_name_on_cloud), region, zone)
|
|
1823
|
+
node_statuses = [(status, None) for status in node_statuses]
|
|
1819
1824
|
return node_statuses
|
|
1820
1825
|
|
|
1821
1826
|
|
|
@@ -2015,8 +2020,8 @@ def _update_cluster_status(cluster_name: str) -> Optional[Dict[str, Any]]:
|
|
|
2015
2020
|
|
|
2016
2021
|
node_statuses = _query_cluster_status_via_cloud_api(handle)
|
|
2017
2022
|
|
|
2018
|
-
all_nodes_up = (all(
|
|
2019
|
-
|
|
2023
|
+
all_nodes_up = (all(status[0] == status_lib.ClusterStatus.UP
|
|
2024
|
+
for status in node_statuses) and
|
|
2020
2025
|
len(node_statuses) == handle.launched_nodes)
|
|
2021
2026
|
|
|
2022
2027
|
def get_node_counts_from_ray_status(
|
|
@@ -2121,6 +2126,13 @@ def _update_cluster_status(cluster_name: str) -> Optional[Dict[str, Any]]:
|
|
|
2121
2126
|
# run_ray_status_to_check_all_nodes_up() is slow due to calling `ray get
|
|
2122
2127
|
# head-ip/worker-ips`.
|
|
2123
2128
|
record['status'] = status_lib.ClusterStatus.UP
|
|
2129
|
+
# Add cluster event for instance status check.
|
|
2130
|
+
global_user_state.add_cluster_event(
|
|
2131
|
+
cluster_name,
|
|
2132
|
+
status_lib.ClusterStatus.UP,
|
|
2133
|
+
'All nodes up + ray cluster healthy.',
|
|
2134
|
+
global_user_state.ClusterEventType.STATUS_CHANGE,
|
|
2135
|
+
nop_if_duplicate=True)
|
|
2124
2136
|
global_user_state.add_or_update_cluster(cluster_name,
|
|
2125
2137
|
handle,
|
|
2126
2138
|
requested_resources=None,
|
|
@@ -2205,9 +2217,19 @@ def _update_cluster_status(cluster_name: str) -> Optional[Dict[str, Any]]:
|
|
|
2205
2217
|
# regardless of the ray cluster's health.
|
|
2206
2218
|
# (2) Otherwise, we will reset the autostop setting, unless the cluster is
|
|
2207
2219
|
# autostopping/autodowning.
|
|
2208
|
-
|
|
2209
|
-
|
|
2220
|
+
some_nodes_terminated = 0 < len(node_statuses) < handle.launched_nodes
|
|
2221
|
+
some_nodes_not_stopped = any(status[0] != status_lib.ClusterStatus.STOPPED
|
|
2222
|
+
for status in node_statuses)
|
|
2223
|
+
is_abnormal = (some_nodes_terminated or some_nodes_not_stopped)
|
|
2224
|
+
|
|
2210
2225
|
if is_abnormal:
|
|
2226
|
+
status_reason = ', '.join(
|
|
2227
|
+
[status[1] for status in node_statuses if status[1] is not None])
|
|
2228
|
+
|
|
2229
|
+
if some_nodes_terminated:
|
|
2230
|
+
init_reason = f'one or more nodes terminated ({status_reason})'
|
|
2231
|
+
elif some_nodes_not_stopped:
|
|
2232
|
+
init_reason = f'some nodes are up and some nodes are stopped ({status_reason})'
|
|
2211
2233
|
logger.debug('The cluster is abnormal. Setting to INIT status. '
|
|
2212
2234
|
f'node_statuses: {node_statuses}')
|
|
2213
2235
|
if record['autostop'] >= 0:
|
|
@@ -2291,6 +2313,12 @@ def _update_cluster_status(cluster_name: str) -> Optional[Dict[str, Any]]:
|
|
|
2291
2313
|
# represent that the cluster is partially preempted.
|
|
2292
2314
|
# TODO(zhwu): the definition of INIT should be audited/changed.
|
|
2293
2315
|
# Adding a new status UNHEALTHY for abnormal status can be a choice.
|
|
2316
|
+
global_user_state.add_cluster_event(
|
|
2317
|
+
cluster_name,
|
|
2318
|
+
status_lib.ClusterStatus.INIT,
|
|
2319
|
+
f'Cluster is abnormal because {init_reason}. Transitioned to INIT.',
|
|
2320
|
+
global_user_state.ClusterEventType.STATUS_CHANGE,
|
|
2321
|
+
nop_if_duplicate=True)
|
|
2294
2322
|
global_user_state.add_or_update_cluster(cluster_name,
|
|
2295
2323
|
handle,
|
|
2296
2324
|
requested_resources=None,
|
|
@@ -2301,6 +2329,9 @@ def _update_cluster_status(cluster_name: str) -> Optional[Dict[str, Any]]:
|
|
|
2301
2329
|
# STOPPED.
|
|
2302
2330
|
backend = backends.CloudVmRayBackend()
|
|
2303
2331
|
backend.post_teardown_cleanup(handle, terminate=to_terminate, purge=False)
|
|
2332
|
+
global_user_state.add_cluster_event(
|
|
2333
|
+
cluster_name, None, 'All nodes stopped, terminating cluster.',
|
|
2334
|
+
global_user_state.ClusterEventType.STATUS_CHANGE)
|
|
2304
2335
|
return global_user_state.get_cluster_from_name(cluster_name)
|
|
2305
2336
|
|
|
2306
2337
|
|
|
@@ -1527,6 +1527,13 @@ class RetryingVmProvisioner(object):
|
|
|
1527
1527
|
is_managed=self._is_managed,
|
|
1528
1528
|
)
|
|
1529
1529
|
|
|
1530
|
+
# Add cluster event for actual provisioning start.
|
|
1531
|
+
global_user_state.add_cluster_event(
|
|
1532
|
+
cluster_name, status_lib.ClusterStatus.INIT,
|
|
1533
|
+
f'Provisioning on {to_provision.cloud.display_name()} ' +
|
|
1534
|
+
f'in {to_provision.region}',
|
|
1535
|
+
global_user_state.ClusterEventType.STATUS_CHANGE)
|
|
1536
|
+
|
|
1530
1537
|
global_user_state.set_owner_identity_for_cluster(
|
|
1531
1538
|
cluster_name, cloud_user_identity)
|
|
1532
1539
|
|
|
@@ -2936,10 +2943,13 @@ class CloudVmRayBackend(backends.Backend['CloudVmRayResourceHandle']):
|
|
|
2936
2943
|
skip_unnecessary_provisioning)
|
|
2937
2944
|
except locks.LockTimeout:
|
|
2938
2945
|
if not communicated_with_user:
|
|
2939
|
-
|
|
2940
|
-
|
|
2941
|
-
|
|
2942
|
-
|
|
2946
|
+
rich_utils.force_update_status(
|
|
2947
|
+
ux_utils.spinner_message('Launching - blocked by ' +
|
|
2948
|
+
'other requests ' +
|
|
2949
|
+
colorama.Style.RESET_ALL +
|
|
2950
|
+
colorama.Style.DIM +
|
|
2951
|
+
'Check concurrent requests: ' +
|
|
2952
|
+
'sky api status '))
|
|
2943
2953
|
|
|
2944
2954
|
def _locked_provision(
|
|
2945
2955
|
self,
|
|
@@ -3007,6 +3017,7 @@ class CloudVmRayBackend(backends.Backend['CloudVmRayResourceHandle']):
|
|
|
3007
3017
|
break
|
|
3008
3018
|
except exceptions.ResourcesUnavailableError as e:
|
|
3009
3019
|
log_path = retry_provisioner.log_dir + '/provision.log'
|
|
3020
|
+
|
|
3010
3021
|
error_message = (
|
|
3011
3022
|
f'{colorama.Fore.RED}Failed to provision all '
|
|
3012
3023
|
f'possible launchable resources.'
|
|
@@ -3023,6 +3034,13 @@ class CloudVmRayBackend(backends.Backend['CloudVmRayResourceHandle']):
|
|
|
3023
3034
|
hint_message = (f'\n{retry_message} '
|
|
3024
3035
|
f'{ux_utils.log_path_hint(log_path)}'
|
|
3025
3036
|
f'{colorama.Style.RESET_ALL}')
|
|
3037
|
+
|
|
3038
|
+
# Add cluster event for retry.
|
|
3039
|
+
global_user_state.add_cluster_event(
|
|
3040
|
+
cluster_name, status_lib.ClusterStatus.INIT,
|
|
3041
|
+
f'Retrying provisioning after {gap_seconds:.0f}s',
|
|
3042
|
+
global_user_state.ClusterEventType.STATUS_CHANGE)
|
|
3043
|
+
|
|
3026
3044
|
raise exceptions.ExecutionRetryableError(
|
|
3027
3045
|
error_message,
|
|
3028
3046
|
hint=hint_message,
|
|
@@ -3074,6 +3092,13 @@ class CloudVmRayBackend(backends.Backend['CloudVmRayResourceHandle']):
|
|
|
3074
3092
|
# and other necessary files to the VM.
|
|
3075
3093
|
# 3. Run setup commands to install dependencies.
|
|
3076
3094
|
# 4. Starting ray cluster and skylet.
|
|
3095
|
+
|
|
3096
|
+
# Add cluster event for runtime setup start
|
|
3097
|
+
global_user_state.add_cluster_event(
|
|
3098
|
+
handle.cluster_name, status_lib.ClusterStatus.INIT,
|
|
3099
|
+
'Setting up SkyPilot runtime on cluster',
|
|
3100
|
+
global_user_state.ClusterEventType.STATUS_CHANGE)
|
|
3101
|
+
|
|
3077
3102
|
cluster_info = provisioner.post_provision_runtime_setup(
|
|
3078
3103
|
repr(handle.launched_resources.cloud),
|
|
3079
3104
|
resources_utils.ClusterName(handle.cluster_name,
|
|
@@ -3259,6 +3284,14 @@ class CloudVmRayBackend(backends.Backend['CloudVmRayResourceHandle']):
|
|
|
3259
3284
|
config_hash=config_hash,
|
|
3260
3285
|
task_config=user_specified_task_config,
|
|
3261
3286
|
)
|
|
3287
|
+
|
|
3288
|
+
# Add cluster event for successful provisioning.
|
|
3289
|
+
global_user_state.add_cluster_event(
|
|
3290
|
+
handle.cluster_name, status_lib.ClusterStatus.UP,
|
|
3291
|
+
'Cluster successfully provisioned with ' +
|
|
3292
|
+
f'{handle.launched_nodes} nodes',
|
|
3293
|
+
global_user_state.ClusterEventType.STATUS_CHANGE)
|
|
3294
|
+
|
|
3262
3295
|
usage_lib.messages.usage.update_final_cluster_status(
|
|
3263
3296
|
status_lib.ClusterStatus.UP)
|
|
3264
3297
|
# We still add the cluster to ssh config file on API server, this
|
|
@@ -4631,8 +4664,10 @@ class CloudVmRayBackend(backends.Backend['CloudVmRayResourceHandle']):
|
|
|
4631
4664
|
non_terminated_only=False)
|
|
4632
4665
|
|
|
4633
4666
|
unexpected_node_state: Optional[Tuple[str, str]] = None
|
|
4634
|
-
for node_id,
|
|
4635
|
-
|
|
4667
|
+
for node_id, node_status_tuple in node_status_dict.items():
|
|
4668
|
+
node_status, reason = node_status_tuple
|
|
4669
|
+
reason = '' if reason is None else f' ({reason})'
|
|
4670
|
+
logger.debug(f'{node_id} status: {node_status}{reason}')
|
|
4636
4671
|
# FIXME(cooperc): Some clouds (e.g. GCP) do not distinguish
|
|
4637
4672
|
# between "stopping/stopped" and "terminating/terminated",
|
|
4638
4673
|
# so we allow for either status instead of casing on
|
{skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/client/cli/command.py
RENAMED
|
@@ -2981,6 +2981,8 @@ def _hint_or_raise_for_down_jobs_controller(controller_name: str,
|
|
|
2981
2981
|
controller = controller_utils.Controllers.from_name(controller_name)
|
|
2982
2982
|
assert controller is not None, controller_name
|
|
2983
2983
|
|
|
2984
|
+
# TODO(tian): We also need to check pools after we allow running pools on
|
|
2985
|
+
# jobs controller.
|
|
2984
2986
|
with rich_utils.client_status(
|
|
2985
2987
|
'[bold cyan]Checking for in-progress managed jobs[/]'):
|
|
2986
2988
|
try:
|
|
@@ -3077,6 +3079,21 @@ def _hint_or_raise_for_down_sky_serve_controller(controller_name: str,
|
|
|
3077
3079
|
# controller being STOPPED or being firstly launched, i.e., there is
|
|
3078
3080
|
# no in-prgress services.
|
|
3079
3081
|
services = []
|
|
3082
|
+
except exceptions.InconsistentConsolidationModeError:
|
|
3083
|
+
# If this error is raised, it means the user switched to the
|
|
3084
|
+
# consolidation mode but the previous controller cluster is still
|
|
3085
|
+
# running. We should allow the user to tear down the controller
|
|
3086
|
+
# cluster in this case.
|
|
3087
|
+
with skypilot_config.override_skypilot_config(
|
|
3088
|
+
{'serve': {
|
|
3089
|
+
'controller': {
|
|
3090
|
+
'consolidation_mode': False
|
|
3091
|
+
}
|
|
3092
|
+
}}):
|
|
3093
|
+
# Check again with the consolidation mode disabled. This is to
|
|
3094
|
+
# make sure there is no in-progress services.
|
|
3095
|
+
request_id = serve_lib.status(service_names=None)
|
|
3096
|
+
services = sdk.stream_and_get(request_id)
|
|
3080
3097
|
|
|
3081
3098
|
if services:
|
|
3082
3099
|
service_names = [service['name'] for service in services]
|
|
@@ -6052,8 +6069,11 @@ def api_logs(request_id: Optional[str], server_logs: bool,
|
|
|
6052
6069
|
if request_id is not None and log_path is not None:
|
|
6053
6070
|
raise click.BadParameter(
|
|
6054
6071
|
'Only one of request ID and log path can be provided.')
|
|
6055
|
-
|
|
6056
|
-
|
|
6072
|
+
# Only wrap request_id when it is provided; otherwise pass None so the
|
|
6073
|
+
# server accepts log_path-only streaming.
|
|
6074
|
+
req_id = (server_common.RequestId[None](request_id)
|
|
6075
|
+
if request_id is not None else None)
|
|
6076
|
+
sdk.stream_and_get(req_id, log_path, tail, follow=follow)
|
|
6057
6077
|
|
|
6058
6078
|
|
|
6059
6079
|
@api.command('cancel', cls=_DocumentedCodeCommand)
|
|
@@ -633,6 +633,11 @@ def stop(cluster_name: str, purge: bool = False) -> None:
|
|
|
633
633
|
raise exceptions.ClusterDoesNotExist(
|
|
634
634
|
f'Cluster {cluster_name!r} does not exist.')
|
|
635
635
|
|
|
636
|
+
global_user_state.add_cluster_event(
|
|
637
|
+
cluster_name, status_lib.ClusterStatus.STOPPED,
|
|
638
|
+
'Cluster was stopped by user.',
|
|
639
|
+
global_user_state.ClusterEventType.STATUS_CHANGE)
|
|
640
|
+
|
|
636
641
|
backend = backend_utils.get_backend_from_handle(handle)
|
|
637
642
|
|
|
638
643
|
if isinstance(backend, backends.CloudVmRayBackend):
|
{skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/dashboard/out/404.html
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
<!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><meta name="next-head-count" content="2"/><link rel="preload" href="/dashboard/_next/static/css/4614e06482d7309e.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/4614e06482d7309e.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-
|
|
1
|
+
<!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><meta name="next-head-count" content="2"/><link rel="preload" href="/dashboard/_next/static/css/4614e06482d7309e.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/4614e06482d7309e.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-7fd0cf9dbecff10f.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-cf60a09ccd051a10.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-f15ccb73239a3bf1.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-491a4d699d95e808.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_error-c66a4e8afc46f17b.js" defer=""></script><script src="/dashboard/_next/static/Fuy7OzApYTUMz2QgoP7dP/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/Fuy7OzApYTUMz2QgoP7dP/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{"statusCode":404}},"page":"/_error","query":{},"buildId":"Fuy7OzApYTUMz2QgoP7dP","assetPrefix":"/dashboard","nextExport":true,"isFallback":false,"gip":true,"scriptLoader":[]}</script></body></html>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
self.__BUILD_MANIFEST=function(s,c,e,
|
|
1
|
+
self.__BUILD_MANIFEST=function(s,c,a,e,t,f,u,n,o,r,j,i,b,k,h){return{__rewrites:{afterFiles:[],beforeFiles:[],fallback:[]},"/":["static/chunks/pages/index-444f1804401f04ea.js"],"/_error":["static/chunks/pages/_error-c66a4e8afc46f17b.js"],"/clusters":["static/chunks/pages/clusters-b30460f683e6ba96.js"],"/clusters/[cluster]":[s,c,a,f,u,j,r,e,t,n,i,b,o,k,h,"static/chunks/1871-980a395e92633a5c.js","static/chunks/pages/clusters/[cluster]-da9cc0901349c2e9.js"],"/clusters/[cluster]/[job]":[s,c,a,f,e,t,o,"static/chunks/pages/clusters/[cluster]/[job]-078751bad714c017.js"],"/config":["static/chunks/pages/config-dfb9bf07b13045f4.js"],"/infra":["static/chunks/pages/infra-fc9222e26c8e2f0d.js"],"/infra/[context]":["static/chunks/pages/infra/[context]-13d53fffc03ccb52.js"],"/jobs":["static/chunks/pages/jobs-cdc60fb5d371e16a.js"],"/jobs/pools/[pool]":[s,c,a,u,r,e,t,n,"static/chunks/pages/jobs/pools/[pool]-f5ccf5d39d87aebe.js"],"/jobs/[job]":[s,c,a,f,u,r,e,t,n,o,"static/chunks/pages/jobs/[job]-154f55cf8af55be5.js"],"/users":["static/chunks/pages/users-7ed36e44e779d5c7.js"],"/volumes":["static/chunks/pages/volumes-c9695d657f78b5dc.js"],"/workspace/new":["static/chunks/pages/workspace/new-3f88a1c7e86a3f86.js"],"/workspaces":["static/chunks/pages/workspaces-8f67be60165724cc.js"],"/workspaces/[name]":[s,c,a,f,u,j,e,t,n,i,b,o,k,h,"static/chunks/1141-a8a8f1adba34c892.js","static/chunks/pages/workspaces/[name]-f72f73bcef9541dc.js"],sortedPages:["/","/_app","/_error","/clusters","/clusters/[cluster]","/clusters/[cluster]/[job]","/config","/infra","/infra/[context]","/jobs","/jobs/pools/[pool]","/jobs/[job]","/users","/volumes","/workspace/new","/workspaces","/workspaces/[name]"]}}("static/chunks/616-3d59f75e2ccf9321.js","static/chunks/6130-2be46d70a38f1e82.js","static/chunks/5739-d67458fcb1386c92.js","static/chunks/6989-6129c1cfbcf51063.js","static/chunks/3850-ff4a9a69d978632b.js","static/chunks/7411-b15471acd2cba716.js","static/chunks/1272-1ef0bf0237faccdb.js","static/chunks/8969-c9686994ddafcf01.js","static/chunks/6135-85426374db04811e.js","static/chunks/6212-7bd06f60ba693125.js","static/chunks/1559-6c00e20454194859.js","static/chunks/6990-0f886f16e0d55ff8.js","static/chunks/8056-5bdeda81199c0def.js","static/chunks/6601-06114c982db410b6.js","static/chunks/9159-11421c0f2909236f.js"),self.__BUILD_MANIFEST_CB&&self.__BUILD_MANIFEST_CB();
|
skypilot_nightly-1.0.0.dev20250812/sky/dashboard/out/_next/static/chunks/8056-5bdeda81199c0def.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[8056],{50326:function(e,t,a){a.d(t,{$N:function(){return p},Be:function(){return _},Vq:function(){return c},cN:function(){return f},cZ:function(){return d},fK:function(){return g}});var r=a(85893),s=a(67294),o=a(6327),n=a(32350),l=a(43767);let c=o.fC;o.xz;let u=o.h_;o.x8;let i=s.forwardRef((e,t)=>{let{className:a,...s}=e;return(0,r.jsx)(o.aV,{ref:t,className:(0,n.cn)("fixed inset-0 z-50 bg-black/50 backdrop-blur-sm data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",a),...s})});i.displayName=o.aV.displayName;let d=s.forwardRef((e,t)=>{let{className:a,children:s,...c}=e;return(0,r.jsxs)(u,{children:[(0,r.jsx)(i,{}),(0,r.jsxs)(o.VY,{ref:t,className:(0,n.cn)("fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border border-gray-200 bg-white p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg",a),...c,children:[s,(0,r.jsxs)(o.x8,{className:"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-white transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-gray-400 focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-gray-100 data-[state=open]:text-gray-500",children:[(0,r.jsx)(l.Z,{className:"h-4 w-4"}),(0,r.jsx)("span",{className:"sr-only",children:"Close"})]})]})]})});d.displayName=o.VY.displayName;let g=e=>{let{className:t,...a}=e;return(0,r.jsx)("div",{className:(0,n.cn)("flex flex-col space-y-1.5 text-center sm:text-left",t),...a})};g.displayName="DialogHeader";let f=e=>{let{className:t,...a}=e;return(0,r.jsx)("div",{className:(0,n.cn)("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",t),...a})};f.displayName="DialogFooter";let p=s.forwardRef((e,t)=>{let{className:a,...s}=e;return(0,r.jsx)(o.Dx,{ref:t,className:(0,n.cn)("text-lg font-semibold leading-none tracking-tight",a),...s})});p.displayName=o.Dx.displayName;let _=s.forwardRef((e,t)=>{let{className:a,...s}=e;return(0,r.jsx)(o.dk,{ref:t,className:(0,n.cn)("text-sm text-gray-500",a),...s})});_.displayName=o.dk.displayName},23266:function(e,t,a){a.d(t,{QL:function(){return g},Sl:function(){return i},getClusters:function(){return c},uR:function(){return u}});var r=a(67294),s=a(15821),o=a(47145),n=a(6378);let l={UP:"RUNNING",STOPPED:"STOPPED",INIT:"LAUNCHING",null:"TERMINATED"};async function c(){let{clusterNames:e=null}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};try{return(await o.x.fetch("/status",{cluster_names:e,all_users:!0})).map(e=>{let t="",a=t=e.zone?e.zone:e.region;return t&&t.length>25&&(t=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:15;if(!e||e.length<=t)return e;if(t<=3)return"...";let a=Math.floor((t-3)/2),r=a+(t-3)%2;return 0===a?e.substring(0,r)+"...":e.substring(0,r)+"..."+e.substring(e.length-a)}(t,25)),{status:l[e.status],cluster:e.name,user:e.user_name,user_hash:e.user_hash,cluster_hash:e.cluster_hash,cloud:e.cloud,region:e.region,infra:t?e.cloud+" ("+t+")":e.cloud,full_infra:a?"".concat(e.cloud," (").concat(a,")"):e.cloud,cpus:e.cpus,mem:e.memory,gpus:e.accelerators,resources_str:e.resources_str,resources_str_full:e.resources_str_full,time:new Date(1e3*e.launched_at),num_nodes:e.nodes,workspace:e.workspace,autostop:e.autostop,last_event:e.last_event,to_down:e.to_down,jobs:[],command:e.last_creation_command||e.last_use,task_yaml:e.last_creation_yaml||"{}",events:[{time:new Date(1e3*e.launched_at),event:"Cluster created."}]}})}catch(e){return console.error("Error fetching clusters:",e),[]}}async function u(){try{let e=await o.x.fetch("/cost_report",{days:30});console.log("Raw cluster history data:",e);let t=e.map(e=>{let t="Unknown";e.cloud?t=e.cloud:e.resources&&e.resources.cloud&&(t=e.resources.cloud);let a=e.user_name||"-";return{status:e.status?l[e.status]:"TERMINATED",cluster:e.name,user:a,user_hash:e.user_hash,cluster_hash:e.cluster_hash,cloud:t,region:"",infra:t,full_infra:t,resources_str:e.resources_str,resources_str_full:e.resources_str_full,time:e.launched_at?new Date(1e3*e.launched_at):null,num_nodes:e.num_nodes||1,duration:e.duration,total_cost:e.total_cost,workspace:e.workspace||"default",autostop:-1,to_down:!1,usage_intervals:e.usage_intervals,command:e.last_creation_command||"",task_yaml:e.last_creation_yaml||"{}",events:[{time:e.launched_at?new Date(1e3*e.launched_at):new Date,event:"Cluster created."}]}});return console.log("Processed cluster history data:",t),t}catch(e){return console.error("Error fetching cluster history:",e),[]}}async function i(e){let{clusterName:t,jobId:a,onNewLog:r,workspace:n}=e;try{await o.x.stream("/logs",{follow:!1,cluster_name:t,job_id:a,tail:1e4,override_skypilot_config:{active_workspace:n||"default"}},r)}catch(e){console.error("Error in streamClusterJobLogs:",e),(0,s.C)("Error in streamClusterJobLogs: ".concat(e.message),"error")}}async function d(e){let{clusterName:t,workspace:a}=e;try{return(await o.x.fetch("/queue",{cluster_name:t,all_users:!0,override_skypilot_config:{active_workspace:a}})).map(e=>{var r;let s=e.end_at?e.end_at:Date.now()/1e3,o=0,n=0;return e.submitted_at&&(o=s-e.submitted_at),e.start_at&&(n=s-e.start_at),{id:e.job_id,status:e.status,job:e.job_name,user:e.username,user_hash:e.user_hash,gpus:e.accelerators||{},submitted_at:e.submitted_at?new Date(1e3*e.submitted_at):null,resources:e.resources,cluster:t,total_duration:o,job_duration:n,infra:"",logs:"",workspace:a||"default",git_commit:(null===(r=e.metadata)||void 0===r?void 0:r.git_commit)||"-"}})}catch(e){return console.error("Error fetching cluster jobs:",e),[]}}function g(e){let{cluster:t,job:a=null}=e,[s,o]=(0,r.useState)(null),[l,u]=(0,r.useState)(null),[i,g]=(0,r.useState)(!0),[f,p]=(0,r.useState)(!0),_=(0,r.useCallback)(async()=>{if(t)try{g(!0);let e=await n.default.get(c,[{clusterNames:[t]}]);return o(e[0]),e[0]}catch(e){console.error("Error fetching cluster data:",e)}finally{g(!1)}return null},[t]),h=(0,r.useCallback)(async e=>{if(t)try{p(!0);let a=await n.default.get(d,[{clusterName:t,workspace:e||"default"}]);u(a)}catch(e){console.error("Error fetching cluster job data:",e)}finally{p(!1)}},[t]),m=(0,r.useCallback)(async()=>{n.default.invalidate(c,[{clusterNames:[t]}]);let e=await _();e&&(n.default.invalidate(d,[{clusterName:t,workspace:e.workspace||"default"}]),await h(e.workspace))},[_,h,t]),y=(0,r.useCallback)(async()=>{s&&(n.default.invalidate(d,[{clusterName:t,workspace:s.workspace||"default"}]),await h(s.workspace))},[h,s,t]);return(0,r.useEffect)(()=>{(async()=>{let e=await _();e&&h(e.workspace)})()},[t,a,_,h]),{clusterData:s,clusterJobData:l,loading:i,clusterDetailsLoading:i,clusterJobsLoading:f,refreshData:m,refreshClusterJobsOnly:y}}},32045:function(e,t,a){a.d(t,{l4:function(){return n}});var r=a(93225),s=a(47145);async function o(e,t){let a=arguments.length>2&&void 0!==arguments[2]&&arguments[2];try{let o=[];try{if(a){console.log("Force refreshing clouds by running sky check...");try{let e=await s.x.post("/check",{}),t=e.headers.get("X-Skypilot-Request-ID")||e.headers.get("X-Request-ID"),a=await s.x.get("/api/get?request_id=".concat(t)),r=await a.json();console.log("Sky check completed:",r)}catch(e){console.error("Error running sky check:",e)}}let e=await s.x.get("/enabled_clouds"),t=e.headers.get("X-Skypilot-Request-ID")||e.headers.get("X-Request-ID"),r=await s.x.get("/api/get?request_id=".concat(t)),n=await r.json();o=n.return_value?JSON.parse(n.return_value):[],console.log("Enabled clouds:",o)}catch(e){console.error("Error fetching enabled clouds:",e),o=[]}let n={};r.$m.forEach(e=>{let t=o.includes(e.toLowerCase());n[e]={name:e,clusters:0,jobs:0,enabled:t}}),e.forEach(e=>{if(e.cloud){let t=e.cloud;n[t]&&(n[t].clusters+=1,n[t].enabled=!0)}}),t.forEach(e=>{if(e.cloud){let t=e.cloud;n[t]&&(n[t].jobs+=1,n[t].enabled=!0)}});let l=r.$m.length,c=Object.values(n).filter(e=>e.enabled).length;return{clouds:Object.values(n).filter(e=>e.enabled).sort((e,t)=>e.name.localeCompare(t.name)),totalClouds:l,enabledClouds:c}}catch(e){return console.error("Error fetching cloud infrastructure:",e),{clouds:[],totalClouds:r.$m.length,enabledClouds:0}}}async function n(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],{getClusters:t}=await Promise.resolve().then(a.bind(a,23266)),{getManagedJobs:r}=await Promise.resolve().then(a.bind(a,68969)),s=(await Promise.resolve().then(a.bind(a,6378))).default,[n,c]=await Promise.all([s.get(t),s.get(r,[{allUsers:!0}])]),u=n||[],i=(null==c?void 0:c.jobs)||[],[d,g]=await Promise.all([l(u,i),o(u,i,e)]);return{gpuData:d,cloudData:g}}async function l(e,t){return await g({clusters:e||[],jobs:t||[]})}async function c(){try{let e=await s.x.post("/realtime_kubernetes_gpu_availability",{context:null,name_filter:null,quantity_filter:null});if(!e.ok)return console.error("Error fetching Kubernetes context GPUs (in getKubernetesContextGPUs): ".concat(e.status," ").concat(e.statusText)),[];let t=e.headers.get("X-Skypilot-Request-ID")||e.headers.get("x-request-id");if(!t)return console.error("No request ID returned for Kubernetes GPU availability (in getKubernetesContextGPUs)"),[];let a=await s.x.get("/api/get?request_id=".concat(t)),r=await a.text();if(500===a.status){try{let e=JSON.parse(r);if(e.detail&&e.detail.error)try{let t=JSON.parse(e.detail.error);console.error("[infra.jsx] getKubernetesContextGPUs: Server error detail:",t.message)}catch(t){console.error("[infra.jsx] getKubernetesContextGPUs: Error parsing server error JSON:",t,"Original error text:",e.detail.error)}}catch(e){console.error("[infra.jsx] getKubernetesContextGPUs: Error parsing 500 error response JSON:",e,"Raw text was:",r)}return[]}let o=JSON.parse(r);return o.return_value?JSON.parse(o.return_value):[]}catch(e){return console.error("[infra.jsx] Outer error in getKubernetesContextGPUs:",e),[]}}async function u(){try{let e=await s.x.get("/all_contexts");if(!e.ok)return console.error("Error fetching all contexts: ".concat(e.status," ").concat(e.statusText)),[];let t=e.headers.get("X-Skypilot-Request-ID")||e.headers.get("x-request-id");if(!t)return console.error("No request ID returned for /all_contexts"),[];let a=await s.x.get("/api/get?request_id=".concat(t)),r=await a.json();return r.return_value?JSON.parse(r.return_value):[]}catch(e){return console.error("[infra.jsx] Error in getAllContexts:",e),[]}}async function i(e){try{let t=await s.x.post("/kubernetes_node_info",{context:e}),a=t.headers.get("X-Skypilot-Request-ID")||t.headers.get("x-request-id"),r=await s.x.get("/api/get?request_id=".concat(a));if(500===r.status){try{let e=await r.json();if(e.detail&&e.detail.error)try{let t=JSON.parse(e.detail.error);console.error("Error fetching Kubernetes per node GPUs:",t.message)}catch(e){console.error("Error parsing JSON:",e)}}catch(e){console.error("Error parsing JSON:",e)}return{}}let o=await r.json();return(o.return_value?JSON.parse(o.return_value):{}).node_info_dict||{}}catch(t){return console.error("[infra.jsx] Error in getKubernetesPerNodeGPUs for context",e,":",t),{}}}async function d(e){try{let t=e.clusters,a=e.jobs,r={};return t.forEach(e=>{let t=null;if("Kubernetes"===e.cloud)(t=e.region)&&(t="kubernetes/".concat(t));else if("SSH"===e.cloud&&(t=e.region)){let e=t.startsWith("ssh-")?t.substring(4):t;t="ssh/".concat(e)}t&&(r[t]||(r[t]={clusters:0,jobs:0}),r[t].clusters+=1)}),a.forEach(e=>{let t=null;if("Kubernetes"===e.cloud)(t=e.region)&&(t="kubernetes/".concat(t));else if("SSH"===e.cloud&&(t=e.region)){let e=t.startsWith("ssh-")?t.substring(4):t;t="ssh/".concat(e)}t&&(r[t]||(r[t]={clusters:0,jobs:0}),r[t].jobs+=1)}),r}catch(e){return console.error("=== Error in getContextClustersAndJobs ===",e),{}}}async function g(e){try{let o=await u();if(!o||0===o.length)return console.log("No contexts found from /all_contexts endpoint."),{allContextNames:[],allGPUs:[],perContextGPUs:[],perNodeGPUs:[],contextStats:{}};let n=await d(e),l=await c(),g=new Map;l&&l.forEach(e=>{g.set(e[0],e[1])});let f={},p={},_={};for(let e of o){p[e]||(p[e]=[]);let o=g.get(e);if(o&&o.length>0)for(let t of o){let a=t[0],r=t[1].join(", "),s=t[2],o=t[3];a in f?(f[a].gpu_total+=s,f[a].gpu_free+=o):f[a]={gpu_total:s,gpu_free:o,gpu_name:a},p[e].push({gpu_name:a,gpu_requestable_qty_per_node:r,gpu_total:s,gpu_free:o,context:e})}let n=await i(e);if(n&&Object.keys(n).length>0)for(let o in n){var t,a,r,s;let l=n[o],c=l.accelerator_type||"-",u=null!==(r=null===(t=l.total)||void 0===t?void 0:t.accelerator_count)&&void 0!==r?r:0,i=null!==(s=null===(a=l.free)||void 0===a?void 0:a.accelerators_available)&&void 0!==s?s:0;_["".concat(e,"/").concat(o)]={node_name:l.name,gpu_name:c,gpu_total:u,gpu_free:i,ip_address:l.ip_address||null,context:e},"-"===c||p[e].some(e=>e.gpu_name===c)||(c in f||(f[c]={gpu_total:0,gpu_free:0,gpu_name:c}),p[e].find(e=>e.gpu_name===c)||p[e].push({gpu_name:c,gpu_requestable_qty_per_node:"-",gpu_total:0,gpu_free:0,context:e}))}0===p[e].length&&n&&Object.keys(n).length}return{allContextNames:o.sort(),allGPUs:Object.values(f).sort((e,t)=>e.gpu_name.localeCompare(t.gpu_name)),perContextGPUs:Object.values(p).flat().sort((e,t)=>e.context.localeCompare(t.context)||e.gpu_name.localeCompare(t.gpu_name)),perNodeGPUs:Object.values(_).sort((e,t)=>e.context.localeCompare(t.context)||e.node_name.localeCompare(t.node_name)||e.gpu_name.localeCompare(t.gpu_name)),contextStats:n}}catch(e){return console.error("[infra.jsx] Outer error in getKubernetesGPUs:",e),{allContextNames:[],allGPUs:[],perContextGPUs:[],perNodeGPUs:[],contextStats:{}}}}},53081:function(e,t,a){a.d(t,{R:function(){return s}}),a(23266),a(68969);var r=a(47145);async function s(){try{let e=await r.x.get("/users");if(!e.ok)throw Error("HTTP error! status: ".concat(e.status));return(await e.json()).map(e=>({userId:e.id,username:e.name,role:e.role,created_at:e.created_at}))||[]}catch(e){return console.error("Failed to fetch users:",e),[]}}},19238:function(e,t,a){a.d(t,{C:function(){return s},w:function(){return o}});var r=a(47145);async function s(){try{return(await r.x.fetch("/volumes",{},"GET")).map(e=>{var t,a,r;let s=e.cloud||"";return e.region&&(s+="/".concat(e.region)),e.zone&&(s+="/".concat(e.zone)),{name:e.name,launched_at:e.launched_at,user_hash:e.user_hash,user_name:e.user_name||"-",workspace:e.workspace||"-",last_attached_at:e.last_attached_at,status:e.status,type:e.type,cloud:e.cloud,region:e.region,zone:e.zone,infra:s,size:"".concat(e.size,"Gi"),config:e.config,storage_class:(null===(t=e.config)||void 0===t?void 0:t.storage_class_name)||"-",access_mode:(null===(a=e.config)||void 0===a?void 0:a.access_mode)||"-",namespace:(null===(r=e.config)||void 0===r?void 0:r.namespace)||"-",name_on_cloud:e.name_on_cloud,usedby_pods:e.usedby_pods,usedby_clusters:e.usedby_clusters}})||[]}catch(e){return console.error("Failed to fetch volumes:",e),[]}}async function o(e){let t="";try{let a=await r.x.post("/volumes/delete",{names:[e]}),s=a.headers.get("X-SkyPilot-Request-ID")||a.headers.get("X-Request-ID"),o=await r.x.get("/api/get?request_id=".concat(s));if(500===o.status){try{let e=await o.json();if(e.detail&&e.detail.error)try{t=JSON.parse(e.detail.error).message}catch(e){console.error("Error parsing JSON:",e)}}catch(e){console.error("Error parsing JSON:",e)}return{success:!1,msg:t}}return{success:!0}}catch(e){return console.error("Failed to delete volume:",e),{success:!1,msg:e.message}}}},23001:function(e,t,a){a.d(t,{X:function(){return s}});var r=a(67294);function s(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:768,[t,a]=(0,r.useState)(!1);return(0,r.useEffect)(()=>{let t=()=>{a(window.innerWidth<e)};return t(),window.addEventListener("resize",t),()=>{window.removeEventListener("resize",t)}},[e]),t}},36856:function(e,t,a){var r=a(6378),s=a(23266),o=a(68969),n=a(17324),l=a(53081),c=a(32045),u=a(19238);let i={base:{getClusters:{fn:s.getClusters,args:[]},getClusterHistory:{fn:s.uR,args:[]},getManagedJobs:{fn:o.getManagedJobs,args:[{allUsers:!0}]},getWorkspaces:{fn:n.fX,args:[]},getUsers:{fn:l.R,args:[]},getInfraData:{fn:c.l4,args:[]},getVolumes:{fn:u.C,args:[]}},dynamic:{getEnabledClouds:{fn:n.yz,requiresWorkspaces:!0}},pages:{clusters:["getClusters","getClusterHistory","getWorkspaces","getUsers"],jobs:["getManagedJobs","getClusters","getWorkspaces","getUsers"],infra:["getInfraData","getClusters","getManagedJobs"],workspaces:["getWorkspaces","getClusters","getManagedJobs","getEnabledClouds"],users:["getUsers","getClusters","getManagedJobs"],volumes:["getVolumes"]}};class d{async preloadForPage(e,t){let{backgroundPreload:a=!0,force:r=!1}=t||{};if(!i.pages[e]){console.warn("Unknown page: ".concat(e));return}console.log("[CachePreloader] Preloading cache for page: ".concat(e));try{await this._loadPageData(e,r),a&&this._backgroundPreloadOtherPages(e)}catch(t){console.error("[CachePreloader] Error preloading for page ".concat(e,":"),t)}}async _loadPageData(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],a=i.pages[e],s=[];for(let e of a)if(i.base[e]){let{fn:a,args:o}=i.base[e];t&&r.default.invalidate(a,o),s.push(r.default.get(a,o))}else"getEnabledClouds"===e&&s.push(this._loadEnabledCloudsForAllWorkspaces(t));await Promise.allSettled(s),console.log("[CachePreloader] Loaded data for page: ".concat(e))}async _loadEnabledCloudsForAllWorkspaces(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];try{e&&r.default.invalidate(n.fX);let t=await r.default.get(n.fX),a=Object.keys(t||{}).map(t=>(e&&r.default.invalidate(n.yz,[t]),r.default.get(n.yz,[t])));await Promise.allSettled(a)}catch(e){console.error("[CachePreloader] Error loading enabled clouds:",e)}}_backgroundPreloadOtherPages(e){if(this.isPreloading)return;this.isPreloading=!0;let t=Object.keys(i.pages).filter(t=>t!==e);console.log("[CachePreloader] Background preloading pages: ".concat(t.join(", "))),Promise.allSettled(t.map(async e=>{try{await this._loadPageData(e,!1),console.log("[CachePreloader] Background loaded: ".concat(e))}catch(t){console.error("[CachePreloader] Background load failed for ".concat(e,":"),t)}})).then(()=>{this.isPreloading=!1,console.log("[CachePreloader] Background preloading complete")})}async preloadBaseFunctions(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];console.log("[CachePreloader] Preloading all base functions");let t=Object.entries(i.base).map(t=>{let[a,{fn:s,args:o}]=t;return e&&r.default.invalidate(s,o),r.default.get(s,o).catch(e=>{console.error("[CachePreloader] Failed to preload ".concat(a,":"),e)})});await Promise.allSettled(t),console.log("[CachePreloader] Base functions preloaded")}getCacheStats(){return{...r.default.getStats(),isPreloading:this.isPreloading}}clearCache(){r.default.clear(),this.isPreloading=!1,this.preloadPromises.clear(),console.log("[CachePreloader] Cache cleared")}constructor(){this.isPreloading=!1,this.preloadPromises=new Map}}let g=new d;t.ZP=g}}]);
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[9826,9666],{94966:function(e,t,s){(window.__NEXT_P=window.__NEXT_P||[]).push(["/clusters/[cluster]/[job]",function(){return s(50190)}])},27325:function(e,t,s){"use strict";s.d(t,{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,s(60998).Z)("Copy",[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]])},13626:function(e,t,s){"use strict";s.d(t,{Z:function(){return a}});/**
|
|
7
|
+
* @license lucide-react v0.407.0 - ISC
|
|
8
|
+
*
|
|
9
|
+
* This source code is licensed under the ISC license.
|
|
10
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
11
|
+
*/let a=(0,s(60998).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"}]])},99307:function(e,t,s){"use strict";s.d(t,{Cl:function(){return l},OE:function(){return u}});var a=s(85893);s(67294);var r=s(55739),n=s(36989),c=s(53850);let l=e=>{switch(e){case"LAUNCHING":return"bg-blue-100 text-sky-blue";case"RUNNING":case"IN_USE":case"READY":return"bg-green-50 text-green-700";case"STOPPED":return"bg-yellow-100 text-yellow-800";case"TERMINATED":case"PENDING":case"UNKNOWN":default:return"bg-gray-100 text-gray-800";case"SUCCEEDED":case"PROVISIONING":case"CONTROLLER_INIT":case"REPLICA_INIT":return"bg-blue-50 text-blue-700";case"FAILED":case"FAILED_PRECHECKS":case"FAILED_NO_RESOURCE":case"FAILED_CONTROLLER":case"FAILED_INITIAL_DELAY":case"FAILED_PROBING":case"FAILED_PROVISION":case"FAILED_CLEANUP":case"CONTROLLER_FAILED":return"bg-red-50 text-red-700";case"CANCELLED":case"CANCELLING":case"NOT_READY":return"bg-yellow-50 text-yellow-700";case"RECOVERING":case"SHUTTING_DOWN":return"bg-orange-50 text-orange-700";case"SUBMITTED":return"bg-indigo-50 text-indigo-700";case"STARTING":return"bg-cyan-50 text-cyan-700";case"FAILED_SETUP":return"bg-pink-50 text-pink-700";case"PREEMPTED":case"NO_REPLICA":return"bg-purple-50 text-purple-700"}},i=e=>{switch(e){case"LAUNCHING":case"STARTING":case"PROVISIONING":case"SHUTTING_DOWN":return(0,a.jsx)(r.Z,{size:12,className:"w-3 h-3 mr-1"});case"RUNNING":case"IN_USE":default:return(0,a.jsx)(c.W2,{className:"w-3 h-3 mr-1"});case"STOPPED":case"PREEMPTED":return(0,a.jsx)(c.fp,{className:"w-3 h-3 mr-1"});case"TERMINATED":case"FAILED":case"CANCELLED":case"FAILED_INITIAL_DELAY":case"FAILED_PROBING":case"FAILED_PROVISION":case"FAILED_CLEANUP":case"CONTROLLER_FAILED":case"UNKNOWN":return(0,a.jsx)(c.Ps,{className:"w-3 h-3 mr-1"});case"SUCCEEDED":return(0,a.jsx)(c.Ye,{className:"w-3 h-3 mr-1"});case"PENDING":case"RECOVERING":case"SUBMITTED":case"CANCELLING":case"FAILED_SETUP":case"FAILED_PRECHECKS":case"FAILED_NO_RESOURCE":case"FAILED_CONTROLLER":case"READY":case"NOT_READY":case"CONTROLLER_INIT":case"REPLICA_INIT":case"NO_REPLICA":return(0,a.jsx)(c.J$,{className:"w-3 h-3 mr-1"})}},o=e=>{let t=l(e),s=i(e);return(0,a.jsxs)("span",{className:"".concat("inline-flex items-center px-2 py-1 rounded-full text-sm"," ").concat(t),children:[s,e]})},u=e=>{let{status:t}=e;return(0,a.jsx)(n.WH,{content:t,className:"text-muted-foreground text-sm",children:(0,a.jsx)("span",{children:o(t)})})}},20546:function(e,t,s){"use strict";s.d(t,{H:function(){return u}});var a=s(85893);s(67294);var r=s(41664),n=s.n(r),c=s(45697),l=s.n(c);function i(e){return!!e&&"string"==typeof e&&e.toLowerCase().startsWith("sa-")}let o=()=>(0,a.jsx)("span",{className:"px-2 py-0.5 text-xs bg-blue-100 text-blue-700 rounded font-medium ml-1",children:"SA"}),u=e=>{let{username:t,userHash:s,className:r="flex items-center gap-1",linkClassName:c="text-gray-700 hover:text-blue-600 hover:underline",showBadge:l=!0}=e,u=i(s),d=i(s)?"/users?tab=service-accounts":"/users";return(0,a.jsxs)("div",{className:r,children:[(0,a.jsx)(n(),{href:d,className:c,children:t}),l&&u&&(0,a.jsx)(o,{})]})};u.propTypes={username:l().string.isRequired,userHash:l().string,className:l().string,linkClassName:l().string,showBadge:l().bool}},37673:function(e,t,s){"use strict";s.d(t,{Ol:function(){return o},Zb:function(){return i},aY:function(){return h},ll:function(){return u}});var a=s(85893),r=s(67294),n=s(45697),c=s.n(n),l=s(32350);let i=r.forwardRef((e,t)=>{let{className:s,children:r,...n}=e;return(0,a.jsx)("div",{ref:t,className:(0,l.cn)("rounded-lg border bg-card text-card-foreground shadow-sm",s),...n,children:r})});i.displayName="Card",i.propTypes={className:c().string,children:c().node};let o=r.forwardRef((e,t)=>{let{className:s,children:r,...n}=e;return(0,a.jsx)("div",{ref:t,className:(0,l.cn)("flex flex-col space-y-1.5 p-6",s),...n,children:r})});o.displayName="CardHeader",o.propTypes={className:c().string,children:c().node};let u=r.forwardRef((e,t)=>{let{className:s,children:r,...n}=e;return(0,a.jsx)("h3",{ref:t,className:(0,l.cn)("text-2xl font-semibold leading-none tracking-tight",s),...n,children:r})});u.displayName="CardTitle",u.propTypes={className:c().string,children:c().node};let d=r.forwardRef((e,t)=>{let{className:s,children:r,...n}=e;return(0,a.jsx)("p",{ref:t,className:(0,l.cn)("text-sm text-muted-foreground",s),...n,children:r})});d.displayName="CardDescription",d.propTypes={className:c().string,children:c().node};let h=r.forwardRef((e,t)=>{let{className:s,children:r,...n}=e;return(0,a.jsx)("div",{ref:t,className:(0,l.cn)("p-6 pt-0",s),...n,children:r})});h.displayName="CardContent",h.propTypes={className:c().string,children:c().node};let m=r.forwardRef((e,t)=>{let{className:s,children:r,...n}=e;return(0,a.jsx)("div",{ref:t,className:(0,l.cn)("flex items-center p-6 pt-0",s),...n,children:r})});m.displayName="CardFooter",m.propTypes={className:c().string,children:c().node}},47145:function(e,t,s){"use strict";s.d(t,{x:function(){return r}});var a=s(93225);let r={fetch:async function(e,t){let s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"POST",r=window.location.origin,n="".concat(r).concat(a.f4).concat(e),c=await fetch(n,{method:s,headers:"POST"===s?{"Content-Type":"application/json"}:{},body:"POST"===s?JSON.stringify(t):void 0}),l=c.headers.get("X-Skypilot-Request-ID")||c.headers.get("X-Request-ID"),i=await fetch("".concat(r).concat(a.f4,"/api/get?request_id=").concat(l)),o=await i.json();return o.return_value?JSON.parse(o.return_value):[]},post:async(e,t)=>{let s=window.location.origin,r="".concat(s).concat(a.f4).concat(e);return await fetch(r,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)})},stream:async(e,t,s)=>{let a=(await r.post(e,t)).body.getReader();try{for(;;){let{done:e,value:t}=await a.read();if(e)break;let r=new TextDecoder().decode(t);s(r)}}catch(e){throw console.error("Error in stream:",e),e}},get:async e=>{let t=window.location.origin,s="".concat(t).concat(a.f4).concat(e);return await fetch(s)}}},23266:function(e,t,s){"use strict";s.d(t,{QL:function(){return h},Sl:function(){return u},getClusters:function(){return i},uR:function(){return o}});var a=s(67294),r=s(15821),n=s(47145),c=s(6378);let l={UP:"RUNNING",STOPPED:"STOPPED",INIT:"LAUNCHING",null:"TERMINATED"};async function i(){let{clusterNames:e=null}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};try{return(await n.x.fetch("/status",{cluster_names:e,all_users:!0})).map(e=>{let t="",s=t=e.zone?e.zone:e.region;return t&&t.length>25&&(t=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:15;if(!e||e.length<=t)return e;if(t<=3)return"...";let s=Math.floor((t-3)/2),a=s+(t-3)%2;return 0===s?e.substring(0,a)+"...":e.substring(0,a)+"..."+e.substring(e.length-s)}(t,25)),{status:l[e.status],cluster:e.name,user:e.user_name,user_hash:e.user_hash,cluster_hash:e.cluster_hash,cloud:e.cloud,region:e.region,infra:t?e.cloud+" ("+t+")":e.cloud,full_infra:s?"".concat(e.cloud," (").concat(s,")"):e.cloud,cpus:e.cpus,mem:e.memory,gpus:e.accelerators,resources_str:e.resources_str,resources_str_full:e.resources_str_full,time:new Date(1e3*e.launched_at),num_nodes:e.nodes,workspace:e.workspace,autostop:e.autostop,last_event:e.last_event,to_down:e.to_down,jobs:[],command:e.last_creation_command||e.last_use,task_yaml:e.last_creation_yaml||"{}",events:[{time:new Date(1e3*e.launched_at),event:"Cluster created."}]}})}catch(e){return console.error("Error fetching clusters:",e),[]}}async function o(){try{let e=await n.x.fetch("/cost_report",{days:30});console.log("Raw cluster history data:",e);let t=e.map(e=>{let t="Unknown";e.cloud?t=e.cloud:e.resources&&e.resources.cloud&&(t=e.resources.cloud);let s=e.user_name||"-";return{status:e.status?l[e.status]:"TERMINATED",cluster:e.name,user:s,user_hash:e.user_hash,cluster_hash:e.cluster_hash,cloud:t,region:"",infra:t,full_infra:t,resources_str:e.resources_str,resources_str_full:e.resources_str_full,time:e.launched_at?new Date(1e3*e.launched_at):null,num_nodes:e.num_nodes||1,duration:e.duration,total_cost:e.total_cost,workspace:e.workspace||"default",autostop:-1,to_down:!1,usage_intervals:e.usage_intervals,command:e.last_creation_command||"",task_yaml:e.last_creation_yaml||"{}",events:[{time:e.launched_at?new Date(1e3*e.launched_at):new Date,event:"Cluster created."}]}});return console.log("Processed cluster history data:",t),t}catch(e){return console.error("Error fetching cluster history:",e),[]}}async function u(e){let{clusterName:t,jobId:s,onNewLog:a,workspace:c}=e;try{await n.x.stream("/logs",{follow:!1,cluster_name:t,job_id:s,tail:1e4,override_skypilot_config:{active_workspace:c||"default"}},a)}catch(e){console.error("Error in streamClusterJobLogs:",e),(0,r.C)("Error in streamClusterJobLogs: ".concat(e.message),"error")}}async function d(e){let{clusterName:t,workspace:s}=e;try{return(await n.x.fetch("/queue",{cluster_name:t,all_users:!0,override_skypilot_config:{active_workspace:s}})).map(e=>{var a;let r=e.end_at?e.end_at:Date.now()/1e3,n=0,c=0;return e.submitted_at&&(n=r-e.submitted_at),e.start_at&&(c=r-e.start_at),{id:e.job_id,status:e.status,job:e.job_name,user:e.username,user_hash:e.user_hash,gpus:e.accelerators||{},submitted_at:e.submitted_at?new Date(1e3*e.submitted_at):null,resources:e.resources,cluster:t,total_duration:n,job_duration:c,infra:"",logs:"",workspace:s||"default",git_commit:(null===(a=e.metadata)||void 0===a?void 0:a.git_commit)||"-"}})}catch(e){return console.error("Error fetching cluster jobs:",e),[]}}function h(e){let{cluster:t,job:s=null}=e,[r,n]=(0,a.useState)(null),[l,o]=(0,a.useState)(null),[u,h]=(0,a.useState)(!0),[m,f]=(0,a.useState)(!0),x=(0,a.useCallback)(async()=>{if(t)try{h(!0);let e=await c.default.get(i,[{clusterNames:[t]}]);return n(e[0]),e[0]}catch(e){console.error("Error fetching cluster data:",e)}finally{h(!1)}return null},[t]),g=(0,a.useCallback)(async e=>{if(t)try{f(!0);let s=await c.default.get(d,[{clusterName:t,workspace:e||"default"}]);o(s)}catch(e){console.error("Error fetching cluster job data:",e)}finally{f(!1)}},[t]),N=(0,a.useCallback)(async()=>{c.default.invalidate(i,[{clusterNames:[t]}]);let e=await x();e&&(c.default.invalidate(d,[{clusterName:t,workspace:e.workspace||"default"}]),await g(e.workspace))},[x,g,t]),b=(0,a.useCallback)(async()=>{r&&(c.default.invalidate(d,[{clusterName:t,workspace:r.workspace||"default"}]),await g(r.workspace))},[g,r,t]);return(0,a.useEffect)(()=>{(async()=>{let e=await x();e&&g(e.workspace)})()},[t,s,x,g]),{clusterData:r,clusterJobData:l,loading:u,clusterDetailsLoading:u,clusterJobsLoading:m,refreshData:N,refreshClusterJobsOnly:b}}},15821:function(e,t,s){"use strict";function a(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"info",s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:5e3,a=document.getElementById("toast-container");a||((a=document.createElement("div")).id="toast-container",a.className="fixed top-0 right-0 p-4 z-[9999] flex flex-col items-end space-y-2",document.body.appendChild(a));let r=document.createElement("div");switch(r.className="rounded-md border-l-4 p-4 shadow-md flex items-center justify-between max-w-md w-full mb-2 pointer-events-auto",t){case"success":r.className+=" bg-green-100 border-green-500 text-green-800";break;case"error":r.className+=" bg-red-100 border-red-500 text-red-800";break;case"warning":r.className+=" bg-yellow-100 border-yellow-500 text-yellow-800";break;default:r.className+=" bg-blue-100 border-blue-500 text-blue-800"}return r.innerHTML='\n <div class="flex-1 mr-2">\n <p class="text-sm font-medium">'.concat(e,'</p>\n </div>\n <button class="text-gray-500 hover:text-gray-700 focus:outline-none" aria-label="Close toast">\n <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">\n <line x1="18" y1="6" x2="6" y2="18"></line>\n <line x1="6" y1="6" x2="18" y2="18"></line>\n </svg>\n </button>\n '),a.appendChild(r),r.querySelector("button").addEventListener("click",()=>{a.removeChild(r)}),setTimeout(()=>{a.contains(r)&&a.removeChild(r)},s),r}s.d(t,{C:function(){return a}})},23001:function(e,t,s){"use strict";s.d(t,{X:function(){return r}});var a=s(67294);function r(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:768,[t,s]=(0,a.useState)(!1);return(0,a.useEffect)(()=>{let t=()=>{s(window.innerWidth<e)};return t(),window.addEventListener("resize",t),()=>{window.removeEventListener("resize",t)}},[e]),t}},6378:function(e,t,s){"use strict";s.r(t),s.d(t,{DashboardCache:function(){return r},dashboardCache:function(){return n}});let a=s(51214).ej.DEFAULT_TTL;class r{async get(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=s.ttl||a,n=!1!==s.refreshOnAccess,c=this._generateKey(e,t),l=e.name||"anonymous",i=this.cache.get(c),o=Date.now();if(i&&o-i.lastUpdated<r){let s=Math.round((o-i.lastUpdated)/1e3);return this._debug("Cache HIT for ".concat(l," (age: ").concat(s,"s, TTL: ").concat(Math.round(r/1e3),"s)")),n&&(this.cache.set(c,{data:i.data,lastUpdated:o}),this._debug("Cache TTL refreshed for ".concat(l))),this.backgroundJobs.has(c)||this._refreshInBackground(e,t,c),i.data}try{let s=await e(...t);return this.cache.set(c,{data:s,lastUpdated:o}),s}catch(e){if(i)return console.warn("Failed to fetch fresh data for ".concat(c,", returning stale data:"),e),i.data;throw e}}invalidate(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],s=this._generateKey(e,t);this.cache.delete(s),this.backgroundJobs.delete(s)}invalidateFunction(e){let t=e.name||"anonymous",s=[];for(let e of this.cache.keys())e.startsWith("".concat(t,"_"))&&s.push(e);s.forEach(e=>{this.cache.delete(e),this.backgroundJobs.delete(e)})}clear(){this.cache.clear(),this.backgroundJobs.clear()}getStats(){return{cacheSize:this.cache.size,backgroundJobs:this.backgroundJobs.size,keys:Array.from(this.cache.keys())}}getDetailedStats(){let e=Date.now(),t=[];for(let[s,a]of this.cache.entries()){let r=e-a.lastUpdated;t.push({key:s,age:Math.round(r/1e3),lastUpdated:new Date(a.lastUpdated).toISOString(),hasBackgroundJob:this.backgroundJobs.has(s)})}return{cacheSize:this.cache.size,backgroundJobs:this.backgroundJobs.size,entries:t.sort((e,t)=>e.age-t.age)}}setDebugMode(e){this.debugMode=e}_debug(e){for(var t=arguments.length,s=Array(t>1?t-1:0),a=1;a<t;a++)s[a-1]=arguments[a];this.debugMode&&console.log("[DashboardCache] ".concat(e),...s)}_refreshInBackground(e,t,s){this.backgroundJobs.set(s,!0),e(...t).then(e=>{this.cache.set(s,{data:e,lastUpdated:Date.now()})}).catch(e=>{console.warn("Background refresh failed for ".concat(s,":"),e)}).finally(()=>{this.backgroundJobs.delete(s)})}_generateKey(e,t){let s=function(e){let t=5381;for(let s=0;s<e.length;s++)t=(t<<5)+t+e.charCodeAt(s);return t>>>0}(e.toString()),a=t.length>0?JSON.stringify(t):"";return"".concat(s,"_").concat(a)}constructor(){this.cache=new Map,this.backgroundJobs=new Map,this.debugMode=!1}}let n=new r;t.default=n},32350:function(e,t,s){"use strict";s.d(t,{cn:function(){return n}});var a=s(90512),r=s(98388);function n(){for(var e=arguments.length,t=Array(e),s=0;s<e;s++)t[s]=arguments[s];return(0,r.m6)((0,a.W)(t))}},50190:function(e,t,s){"use strict";s.r(t),s.d(t,{JobDetailPage:function(){return y}});var a=s(85893),r=s(67294);s(6135);var n=s(37673),c=s(41664),l=s.n(c),i=s(11163),o=s(23266),u=s(36989),d=s(13626),h=s(55739),m=s(99307),f=s(23001),x=s(9008),g=s.n(x),N=s(20546),b=s(70282),p=s(27325);function _(e){let{cluster:t,job:s,jobData:r,onRefresh:n,isRefreshing:c,loading:i}=e,o=(0,f.X)();return(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)(l(),{href:"/clusters",className:"text-sky-blue hover:underline",children:"Sky Clusters"}),(0,a.jsx)("span",{className:"mx-2 text-gray-500",children:"›"}),(0,a.jsx)(l(),{href:"/clusters/".concat(t),className:"text-sky-blue hover:underline",children:t}),(0,a.jsx)("span",{className:"mx-2 text-gray-500",children:"›"}),(0,a.jsxs)(l(),{href:"/clusters/".concat(t,"/").concat(s),className:"text-sky-blue hover:underline",children:[s,r.job&&"-"!=r.job?" (".concat(r.job,")"):""]})]}),(0,a.jsxs)("div",{className:"flex items-center",children:[(i||c)&&(0,a.jsxs)("div",{className:"flex items-center mr-2",children:[(0,a.jsx)(h.Z,{size:15,className:"mt-0"}),(0,a.jsx)("span",{className:"text-sm ml-2 text-gray-500",children:"Loading..."})]}),(0,a.jsx)(u.WH,{content:"Refresh",className:"text-muted-foreground",children:(0,a.jsxs)("button",{onClick:n,disabled:i||c,className:"text-sm text-sky-blue hover:text-sky-blue-bright font-medium mx-2 flex items-center",children:[(0,a.jsx)(d.Z,{className:"w-4 h-4 mr-1.5"}),!o&&(0,a.jsx)("span",{children:"Refresh"})]})})]})]})}function y(){let e=(0,i.useRouter)(),{cluster:t,job:s}=e.query,{clusterData:c,clusterJobData:f,loading:x,refreshData:y}=(0,o.QL)({cluster:t}),[j,w]=(0,r.useState)(!1),[v,E]=(0,r.useState)(!0),[I,k]=(0,r.useState)(!1),[C,D]=(0,r.useState)(""),[L,T]=(0,r.useState)(!1),[R,S]=(0,r.useState)(!1),A=(0,r.useMemo)(()=>["INIT","PENDING","SETTING_UP"],[]),O=(0,r.useMemo)(()=>{if(!f||!s)return!0;let e=f.find(e=>e.id==s);return e&&A.includes(e.status)},[f,s,A]);r.useEffect(()=>{!x&&v&&E(!1)},[x,v]),(0,r.useEffect)(()=>{let e=!0;return t&&s&&!O?(k(!0),(0,o.Sl)({clusterName:t,jobId:s,onNewLog:t=>{e&&D(e=>{let s=t.split("\n").filter(e=>e.trim()),a=e;for(let e of s){let t=(0,u.Zn)(e);if(/\d+%\s*\|/.test(t)){let e=t.match(/^\(([^)]+)\)/);if(e&&a){let s=a.split("\n"),r=!1;for(let n=s.length-1;n>=0;n--){let c=s[n];if(/\d+%\s*\|/.test(c)){let l=c.match(/^\(([^)]+)\)/);if(l&&l[1]===e[1]){s[n]=t,a=s.join("\n"),r=!0;break}}}r||(a+=(a?"\n":"")+t)}else a+=(a?"\n":"")+t}else a+=(a?"\n":"")+t}return a})},workspace:null==c?void 0:c.workspace}).then(()=>{e&&k(!1)}).catch(t=>{e&&(console.error("Error streaming logs:",t),k(!1))})):k(!1),()=>{e=!1}},[t,s,L,O,c]);let P=async()=>{w(!0),T(e=>!e),D("");try{y&&await y()}catch(e){console.error("Error refreshing data:",e)}finally{w(!1)}};if(!e.isReady)return(0,a.jsx)("div",{children:"Loading..."});let U={id:s};if(c&&f){let e=f.find(e=>e.id==s);e&&(U={...e,infra:c.infra,cluster:c.cluster,user:c.user,user_hash:c.user_hash})}let F=t&&s?"Job: ".concat(s," @ ").concat(t," | SkyPilot Dashboard"):"Job Details | SkyPilot Dashboard";return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(g(),{children:(0,a.jsx)("title",{children:F})}),(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(_,{cluster:t,job:s,jobData:U,onRefresh:P,isRefreshing:j,loading:x}),x&&v?(0,a.jsxs)("div",{className:"flex items-center justify-center h-64",children:[(0,a.jsx)(h.Z,{size:24,className:"mr-2"}),(0,a.jsx)("span",{children:"Loading..."})]}):(0,a.jsxs)("div",{className:"space-y-8",children:[(0,a.jsx)("div",{id:"details",children:(0,a.jsxs)(n.Zb,{children:[(0,a.jsx)("div",{className:"flex items-center justify-between px-4 pt-4",children:(0,a.jsx)("h2",{className:"text-lg font-semibold",children:"Details"})}),(0,a.jsx)("div",{className:"p-4",children:(0,a.jsxs)("div",{className:"grid grid-cols-2 gap-6",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("div",{className:"text-gray-600 font-medium text-base",children:"Job ID"}),(0,a.jsx)("div",{className:"text-base mt-1",children:U.id})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("div",{className:"text-gray-600 font-medium text-base",children:"Job Name"}),(0,a.jsx)("div",{className:"text-base mt-1",children:U.job})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("div",{className:"text-gray-600 font-medium text-base",children:"Status"}),(0,a.jsx)("div",{className:"text-base mt-1",children:(0,a.jsx)(m.OE,{status:U.status})})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("div",{className:"text-gray-600 font-medium text-base",children:"User"}),(0,a.jsx)("div",{className:"text-base mt-1",children:(0,a.jsx)(N.H,{username:U.user,userHash:U.user_hash})})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("div",{className:"text-gray-600 font-medium text-base",children:"Submitted"}),(0,a.jsx)("div",{className:"text-base mt-1",children:U.submitted_at?(0,u.xn)(U.submitted_at):"N/A"})]}),U.resources&&(0,a.jsxs)("div",{children:[(0,a.jsx)("div",{className:"text-gray-600 font-medium text-base",children:"Requested Resources"}),(0,a.jsx)("div",{className:"text-base mt-1",children:U.resources||"N/A"})]}),U.cluster&&(0,a.jsxs)("div",{children:[(0,a.jsx)("div",{className:"text-gray-600 font-medium text-base",children:"Cluster"}),(0,a.jsx)("div",{className:"text-base mt-1",children:(0,a.jsx)(l(),{href:"/clusters/".concat(U.cluster),className:"text-sky-blue hover:underline",children:U.cluster})})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("div",{className:"text-gray-600 font-medium text-base",children:"Git Commit"}),(0,a.jsx)("div",{className:"text-base mt-1 flex items-center",children:U.git_commit&&"-"!==U.git_commit?(0,a.jsxs)("span",{className:"flex items-center mr-2",children:[U.git_commit,(0,a.jsx)(u.WH,{content:R?"Copied!":"Copy commit",className:"text-muted-foreground",children:(0,a.jsx)("button",{onClick:async()=>{await navigator.clipboard.writeText(U.git_commit),S(!0),setTimeout(()=>S(!1),2e3)},className:"flex items-center text-gray-500 hover:text-gray-700 transition-colors duration-200 p-1 ml-2",children:R?(0,a.jsx)(b.Z,{className:"w-4 h-4 text-green-600"}):(0,a.jsx)(p.Z,{className:"w-4 h-4"})})})]}):(0,a.jsx)("span",{className:"text-gray-400",children:"-"})})]})]})})]})}),(0,a.jsx)("div",{id:"logs",className:"mt-6",children:(0,a.jsxs)(n.Zb,{children:[(0,a.jsxs)("div",{className:"flex items-center justify-between px-4 pt-4",children:[(0,a.jsxs)("div",{className:"flex items-center",children:[(0,a.jsx)("h2",{className:"text-lg font-semibold",children:"Logs"}),(0,a.jsx)("span",{className:"ml-2 text-xs text-gray-500",children:"(Logs are not streaming; click refresh to fetch the latest logs.)"})]}),(0,a.jsx)(u.WH,{content:"Refresh logs",className:"text-muted-foreground",children:(0,a.jsx)("button",{onClick:()=>{T(e=>!e),D("")},disabled:I,className:"text-sky-blue hover:text-sky-blue-bright flex items-center",children:(0,a.jsx)(d.Z,{className:"w-4 h-4 ".concat(I?"animate-spin":"")})})})]}),(0,a.jsx)("div",{className:"p-4",children:O?(0,a.jsx)("div",{className:"bg-[#f7f7f7] flex items-center justify-center py-4 text-gray-500",children:(0,a.jsx)("span",{children:"Waiting for the job to start; refresh in a few moments."})}):I?(0,a.jsxs)("div",{className:"flex items-center justify-center py-4",children:[(0,a.jsx)(h.Z,{size:20,className:"mr-2"}),(0,a.jsx)("span",{children:"Loading..."})]}):(0,a.jsx)("div",{className:"max-h-96 overflow-y-auto",children:(0,a.jsx)(u.$B,{logs:C})})})]})})]})]})]})}t.default=y},9008:function(e,t,s){e.exports=s(37219)}},function(e){e.O(0,[616,6130,5739,7411,6989,3850,6135,2888,9774,179],function(){return e(e.s=94966)}),_N_E=e.O()}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[722],{58706:function(e,t,s){(window.__NEXT_P=window.__NEXT_P||[]).push(["/clusters/[cluster]",function(){return s(56996)}])},1125:function(e,t,s){"use strict";s.d(t,{C:function(){return c}});var a=s(85893),l=s(67294),r=s(34209),n=s(84283);let i=e=>{if(!e||"string"!=typeof e)return e;let t=e.split("\n"),s=[];for(let e=0;e<t.length;e++){let a=t[e];if(""===a.trim()){let l=!1,r=0;for(let s=e-1;s>=0;s--){let e=t[s],a=e.trim();if(a&&e.match(/:\s*[|>]\s*$/)){l=!0;for(let e=s+1;e<t.length;e++){let s=t[e];if(s.trim()){r=s.search(/\S/);break}}break}if(a&&0===e.search(/\S/))break}if(l)for(let l=e+1;l<t.length;l++){let e=t[l];if(e.trim()){e.search(/\S/)>=r?s.push(" #YAML_BLANK_LINE_MARKER#"):s.push(a);break}}else s.push(a)}else s.push(a)}return s.join("\n")};function c(e){let{children:t,className:s=""}=e,c=(0,l.useRef)(null),o=i(t);(0,l.useEffect)(()=>{if(c.current){let e=c.current;setTimeout(()=>{let t;let s=document.createTreeWalker(e,NodeFilter.SHOW_TEXT,null);for(;t=s.nextNode();)t.textContent&&t.textContent.includes("#YAML_BLANK_LINE_MARKER#")&&(t.textContent=t.textContent.replace(/#YAML_BLANK_LINE_MARKER#/g,""))},0)}},[o]);let d={...n.mQ,'code[class*="language-"]':{...n.mQ['code[class*="language-"]'],whiteSpace:"pre !important"},'pre[class*="language-"]':{...n.mQ['pre[class*="language-"]'],whiteSpace:"pre !important"}};return(0,a.jsx)("div",{ref:c,className:s,children:(0,a.jsx)(r.Z,{language:"yaml",style:d,customStyle:{margin:0,padding:0,background:"transparent",fontSize:"0.875rem",fontFamily:'ui-monospace, SFMono-Regular, "SF Mono", Consolas, "Liberation Mono", Menlo, monospace'},wrapLines:!0,wrapLongLines:!0,showLineNumbers:!1,useInlineStyles:!0,children:o})})}},84303:function(e,t,s){"use strict";s.d(t,{_q:function(){return r},pJ:function(){return c}});var a=s(1272);let l={lineWidth:-1,quotingType:"'",forceQuotes:!1,noRefs:!0,sortKeys:!1,condenseFlow:!1,indent:2},r=e=>{if(!e)return"No YAML available";try{let t=a.ZP.load(e),s=a.ZP.dump(t,l).split("\n"),r=[],n=-1;for(let e=0;e<s.length;e++){let t=s[e],a=t.search(/\S/);0===a&&n>=0&&e>0&&r.push(""),r.push(t),n=a}return r.join("\n").trim()}catch(t){return console.error("YAML formatting error:",t),e}},n=e=>"string"==typeof e?e.substring(0,50)+"...":e&&e.name?"name: ".concat(e.name):e&&e.resources?"Task configuration":"YAML document",i=(e,t)=>{try{let s=a.ZP.load(e),r=a.ZP.dump(s,l).split("\n"),i=[],c=-1;for(let e=0;e<r.length;e++){let t=r[e],s=t.search(/\S/);0===s&&c>=0&&e>0&&i.push(""),i.push(t),c=s}return{index:t,content:i.join("\n").trim(),preview:n(s)}}catch(s){return console.error("YAML formatting error for document ".concat(t,":"),s),{index:t,content:e,preview:"Invalid YAML"}}},c=e=>{if(!e)return[];try{let t=[],s=e.split(/^---$/m);for(let e=0;e<s.length;e++){let a=s[e].trim();a&&""!==a&&t.push(a)}return(t.length>1?t.slice(1):t).map((e,t)=>i(e,t))}catch(t){return console.error("YAML formatting error:",t),[{index:0,content:e,preview:"Invalid YAML"}]}}},56996:function(e,t,s){"use strict";s.r(t);var a=s(85893),l=s(67294),r=s(55739),n=s(9159),i=s(11163);s(6135);var c=s(41664),o=s.n(c),d=s(39037),m=s(99307);s(37673);var u=s(23266),x=s(6378),h=s(13626),f=s(70282),g=s(27325),v=s(45895),j=s(6639);s(1272);var b=s(36989),p=s(17853),N=s(92128),y=s(23001),_=s(9008),w=s.n(_),S=s(84303),C=s(20546),k=s(1125);let M=(e,t)=>{let s="",a="";return e>=0&&(s=e+"m",a=" "),t&&(s+="".concat(a,"(down)")),""===s&&(s="-"),s};function L(e){var t,s;let{clusterData:r,clusterJobData:i,clusterJobsLoading:c,refreshClusterJobsOnly:d,isVSCodeModalOpen:u,setIsVSCodeModalOpen:x,timeRange:h,handleTimeRangePreset:p,buildGrafanaMetricsUrl:N,matchedClusterName:y,isLoadingClusterMatch:_,isGrafanaAvailable:w,isHistoricalCluster:L=!1}=e,[A,E]=(0,l.useState)(!1),[R,T]=(0,l.useState)(!1),[O,P]=(0,l.useState)(!1),I=async()=>{try{let e=r.task_yaml||r.last_creation_yaml,t=(0,S._q)(e);await navigator.clipboard.writeText(t),T(!0),setTimeout(()=>T(!1),2e3)}catch(e){console.error("Failed to copy YAML to clipboard:",e)}},Z=async()=>{try{let e=r.command||r.last_creation_command;await navigator.clipboard.writeText(e),P(!0),setTimeout(()=>P(!1),2e3)}catch(e){console.error("Failed to copy command to clipboard:",e)}},U=(null==r?void 0:r.last_creation_command)||(null==r?void 0:r.last_creation_yaml)||(null==r?void 0:r.command)||(null==r?void 0:r.task_yaml);return(0,a.jsxs)("div",{children:[(0,a.jsx)("div",{className:"mb-6",children:(0,a.jsxs)("div",{className:"rounded-lg border bg-card text-card-foreground shadow-sm",children:[(0,a.jsx)("div",{className:"flex items-center justify-between px-4 pt-4",children:(0,a.jsx)("h3",{className:"text-lg font-semibold",children:L?"Historical Cluster Details":"Details"})}),(0,a.jsx)("div",{className:"p-4",children:(0,a.jsxs)("div",{className:"grid grid-cols-2 gap-6",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("div",{className:"text-gray-600 font-medium text-base",children:"Status"}),(0,a.jsx)("div",{className:"text-base mt-1",children:(0,a.jsx)(m.OE,{status:r.status})})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("div",{className:"text-gray-600 font-medium text-base",children:"Cluster"}),(0,a.jsx)("div",{className:"text-base mt-1",children:r.cluster||r.name})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("div",{className:"text-gray-600 font-medium text-base",children:"User"}),(0,a.jsx)("div",{className:"text-base mt-1",children:(0,a.jsx)(C.H,{username:r.user,userHash:r.user_hash})})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("div",{className:"text-gray-600 font-medium text-base",children:L?"Cloud":"Infra"}),(0,a.jsx)("div",{className:"text-base mt-1",children:L?r.cloud||"N/A":r.infra?(0,a.jsx)(b.Md,{content:r.full_infra||r.infra,className:"text-sm text-muted-foreground",children:(0,a.jsxs)("span",{children:[(0,a.jsx)(o(),{href:"/infra",className:"text-blue-600 hover:underline",children:r.cloud||r.infra.split("(")[0].trim()}),r.infra.includes("(")&&(0,a.jsx)("span",{children:" "+r.infra.substring(r.infra.indexOf("("))})]})}):"N/A"})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("div",{className:"text-gray-600 font-medium text-base",children:"Resources"}),(0,a.jsx)("div",{className:"text-base mt-1",children:r.resources_str_full||r.resources_str||"N/A"})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("div",{className:"text-gray-600 font-medium text-base",children:"Started"}),(0,a.jsx)("div",{className:"text-base mt-1",children:r.time?(0,b.xn)(new Date(r.time)):"N/A"})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("div",{className:"text-gray-600 font-medium text-base",children:"Last Event"}),(0,a.jsx)("div",{className:"text-base mt-1",children:(0,a.jsx)(b.Md,{content:r.last_event||"-",className:"text-sm text-muted-foreground",children:(0,a.jsx)("span",{children:r.last_event||"-"})})})]}),L?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("div",{className:"text-gray-600 font-medium text-base",children:"Duration"}),(0,a.jsx)("div",{className:"text-base mt-1",children:(e=>{if(!e||0===e)return"-";let t=e=Math.floor(e),s="",a=0;for(let e of[{value:31536e3,label:"y"},{value:2592e3,label:"mo"},{value:86400,label:"d"},{value:3600,label:"h"},{value:60,label:"m"},{value:1,label:"s"}])if(t>=e.value&&a<2){let l=Math.floor(t/e.value);s+="".concat(l).concat(e.label," "),t%=e.value,a++}return s.trim()||"0s"})(r.duration)})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("div",{className:"text-gray-600 font-medium text-base",children:"Cost"}),(0,a.jsx)("div",{className:"text-base mt-1",children:(e=>{if(null==e||0===e)return"-";let t=Number(e);return isNaN(t)?"-":"$".concat(t.toFixed(2))})(r.total_cost)})]})]}):(0,a.jsxs)("div",{children:[(0,a.jsx)("div",{className:"text-gray-600 font-medium text-base",children:"Autostop"}),(0,a.jsx)("div",{className:"text-base mt-1",children:M(r.autostop,r.to_down)})]}),U&&(0,a.jsxs)("div",{className:"col-span-2",children:[(r.command||r.last_creation_command)&&(0,a.jsxs)("div",{className:"flex items-center",children:[(0,a.jsx)("div",{className:"text-gray-600 font-medium text-base",children:"Entrypoint"}),r.command&&(0,a.jsx)(b.WH,{content:O?"Copied!":"Copy command",className:"text-muted-foreground",children:(0,a.jsx)("button",{onClick:Z,className:"flex items-center text-gray-500 hover:text-gray-700 transition-colors duration-200 p-1 ml-2",children:O?(0,a.jsx)(f.Z,{className:"w-4 h-4 text-green-600"}):(0,a.jsx)(g.Z,{className:"w-4 h-4"})})})]}),(0,a.jsxs)("div",{className:"space-y-4 mt-3",children:[(r.command||r.last_creation_command)&&(0,a.jsx)("div",{children:(0,a.jsx)("div",{className:"bg-gray-50 border border-gray-200 rounded-md p-3",children:(0,a.jsx)("code",{className:"text-sm text-gray-800 font-mono break-all",children:r.command||r.last_creation_command})})}),(r.task_yaml||r.last_creation_yaml)&&"{}"!==r.task_yaml&&"{}"!==r.last_creation_yaml&&!(null===(t=r.cluster||r.name)||void 0===t?void 0:t.startsWith("sky-jobs-controller-"))&&!(null===(s=r.cluster||r.name)||void 0===s?void 0:s.startsWith("sky-serve-controller-"))&&(0,a.jsxs)("div",{children:[(0,a.jsxs)("div",{className:"flex items-center mb-2",children:[(0,a.jsxs)("button",{onClick:()=>{E(!A)},className:"flex items-center text-left focus:outline-none text-gray-700 hover:text-gray-900 transition-colors duration-200",children:[A?(0,a.jsx)(v.Z,{className:"w-4 h-4 mr-1"}):(0,a.jsx)(j.Z,{className:"w-4 h-4 mr-1"}),(0,a.jsx)("span",{className:"text-base",children:"Show SkyPilot YAML"})]}),(0,a.jsx)(b.WH,{content:R?"Copied!":"Copy YAML",className:"text-muted-foreground",children:(0,a.jsx)("button",{onClick:I,className:"flex items-center text-gray-500 hover:text-gray-700 transition-colors duration-200 p-1 ml-2",children:R?(0,a.jsx)(f.Z,{className:"w-4 h-4 text-green-600"}):(0,a.jsx)(g.Z,{className:"w-4 h-4"})})})]}),A&&(0,a.jsx)("div",{className:"bg-gray-50 border border-gray-200 rounded-md p-3 max-h-96 overflow-y-auto",children:(0,a.jsx)(k.C,{className:"whitespace-pre-wrap",children:(0,S._q)(r.task_yaml||r.last_creation_yaml)})})]})]})]})]})})]})}),r&&r.full_infra&&r.full_infra.includes("Kubernetes")&&!r.full_infra.includes("SSH")&&!r.full_infra.includes("ssh")&&w&&(0,a.jsx)("div",{className:"mb-6",children:(0,a.jsx)("div",{className:"rounded-lg border bg-card text-card-foreground shadow-sm",children:(0,a.jsxs)("div",{className:"p-5",children:[(0,a.jsx)("div",{className:"flex items-center justify-between mb-4",children:(0,a.jsx)("h3",{className:"text-lg font-semibold",children:"GPU Metrics"})}),(0,a.jsxs)("div",{className:"mb-4 p-4 bg-gray-50 rounded-md border border-gray-200",children:[(0,a.jsx)("div",{className:"flex flex-col sm:flex-row gap-4 items-start sm:items-center",children:(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)("label",{className:"text-sm font-medium text-gray-700 whitespace-nowrap",children:"Time Range:"}),(0,a.jsx)("div",{className:"flex gap-1",children:[{label:"15m",value:"15m"},{label:"1h",value:"1h"},{label:"6h",value:"6h"},{label:"24h",value:"24h"},{label:"7d",value:"7d"}].map(e=>(0,a.jsx)("button",{onClick:()=>p(e.value),className:"px-2 py-1 text-xs font-medium rounded border transition-colors ".concat(h.from==="now-".concat(e.value)&&"now"===h.to?"bg-sky-blue text-white border-sky-blue":"bg-white text-gray-600 border-gray-300 hover:bg-gray-50"),children:e.label},e.value))})]})}),(0,a.jsxs)("div",{className:"mt-2 text-xs text-gray-500",children:["Showing: ",null==r?void 0:r.cluster," • Time: ",h.from," to"," ",h.to,_&&(0,a.jsx)("span",{children:" • Finding cluster data..."})]})]}),(0,a.jsxs)("div",{className:"grid grid-cols-1 lg:grid-cols-3 gap-4",children:[(0,a.jsx)("div",{className:"bg-white rounded-md border border-gray-200 shadow-sm",children:(0,a.jsx)("div",{className:"p-2",children:(0,a.jsx)("iframe",{src:N("1"),width:"100%",height:"400",frameBorder:"0",title:"GPU Utilization",className:"rounded"},"gpu-util-".concat(null==r?void 0:r.cluster,"-").concat(h.from,"-").concat(h.to))})}),(0,a.jsx)("div",{className:"bg-white rounded-md border border-gray-200 shadow-sm",children:(0,a.jsx)("div",{className:"p-2",children:(0,a.jsx)("iframe",{src:N("2"),width:"100%",height:"400",frameBorder:"0",title:"GPU Memory Utilization",className:"rounded"},"gpu-memory-".concat(null==r?void 0:r.cluster,"-").concat(h.from,"-").concat(h.to))})}),(0,a.jsx)("div",{className:"bg-white rounded-md border border-gray-200 shadow-sm",children:(0,a.jsx)("div",{className:"p-2",children:(0,a.jsx)("iframe",{src:N("4"),width:"100%",height:"400",frameBorder:"0",title:"GPU Power Usage",className:"rounded"},"gpu-power-".concat(null==r?void 0:r.cluster,"-").concat(h.from,"-").concat(h.to))})})]})]})})}),!L&&(0,a.jsx)("div",{className:"mb-8",children:(0,a.jsx)(n.ClusterJobs,{clusterName:r.cluster,clusterJobData:i,loading:c,refreshClusterJobsOnly:d})})]})}t.default=function(){let e=(0,i.useRouter)(),{cluster:t}=e.query,[s,n]=(0,l.useState)(!1),[c,m]=(0,l.useState)(!0),[f,g]=(0,l.useState)(!1),[v,j]=(0,l.useState)(!1),[_,S]=(0,l.useState)(null),[C,k]=(0,l.useState)(!1),[M,A]=(0,l.useState)(!1),E=(0,y.X)(),[R,T]=(0,l.useState)({from:"now-1h",to:"now"}),{clusterData:O,clusterJobData:P,loading:I,clusterDetailsLoading:Z,clusterJobsLoading:U,refreshData:Y,refreshClusterJobsOnly:D}=(0,u.QL)({cluster:t}),[F,G]=(0,l.useState)(null),[H,J]=(0,l.useState)(!1),[W,K]=(0,l.useState)(!1);(0,l.useEffect)(()=>{(async()=>{K(await (0,p.TO)())})()},[]);let z=(0,l.useCallback)(async()=>{if(W&&(null==O?void 0:O.cluster)){J(!0);try{let e=(0,p.ki)(),t=await fetch("".concat(e).concat("/api/datasources/proxy/1/api/v1/label/label_skypilot_cluster/values"),{method:"GET",credentials:"include",headers:{Accept:"application/json"}});if(t.ok){let e=await t.json();if(e.data&&e.data.length>0){let t=e.data.find(e=>e.startsWith(O.cluster));t&&G(t)}}}catch(e){console.error("Error fetching matching cluster:",e)}finally{J(!1)}}},[null==O?void 0:O.cluster,W]);(0,l.useEffect)(()=>{W&&(null==O?void 0:O.cluster)&&z()},[null==O?void 0:O.cluster,z,W]);let B=e=>{let t=(0,p.ki)(),s=F||(null==O?void 0:O.cluster)||"$__all";return"".concat(t,"/d-solo/skypilot-dcgm-gpu/skypilot-dcgm-gpu-metrics?orgId=1&from=").concat(encodeURIComponent(R.from),"&to=").concat(encodeURIComponent(R.to),"&timezone=browser&var-cluster=").concat(encodeURIComponent(s),"&var-node=$__all&var-gpu=$__all&theme=light&panelId=").concat(e,"&__feature.dashboardSceneSolo")};l.useEffect(()=>{!Z&&c&&m(!1)},[Z,c]),l.useEffect(()=>{let e=async()=>{if(t&&!Z&&!O){A(!0);try{let e=(await x.default.get(u.uR)).find(e=>e.cluster_hash===t||e.cluster===t);e&&(S(e),k(!0))}catch(e){console.error("Error fetching cluster history:",e)}finally{A(!1)}}};Z||O||e()},[t,Z,O]);let $=async()=>{n(!0),await Y(),n(!1)},q=e=>{T({from:"now-".concat(e),to:"now"})};if(!e.isReady)return(0,a.jsx)("div",{children:"Loading..."});let Q=t?"Cluster: ".concat(t," | SkyPilot Dashboard"):"Cluster Details | SkyPilot Dashboard";return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(w(),{children:(0,a.jsx)("title",{children:Q})}),(0,a.jsxs)(a.Fragment,{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)(o(),{href:"/clusters",className:"text-sky-blue hover:underline",children:"Sky Clusters"}),(0,a.jsx)("span",{className:"mx-2 text-gray-500",children:"›"}),(0,a.jsx)(o(),{href:"/clusters/".concat(t),className:"text-sky-blue hover:underline",children:t})]}),(0,a.jsx)("div",{className:"text-sm flex items-center",children:(0,a.jsxs)("div",{className:"text-sm flex items-center",children:[(Z||s)&&(0,a.jsxs)("div",{className:"flex items-center mr-4",children:[(0,a.jsx)(r.Z,{size:15,className:"mt-0"}),(0,a.jsx)("span",{className:"ml-2 text-gray-500",children:"Loading..."})]}),O&&(0,a.jsxs)("div",{className:"flex items-center space-x-4",children:[(0,a.jsx)(b.WH,{content:"Refresh",className:"text-sm text-muted-foreground",children:(0,a.jsxs)("button",{onClick:$,disabled:Z||s,className:"text-sky-blue hover:text-sky-blue-bright font-medium inline-flex items-center",children:[(0,a.jsx)(h.Z,{className:"w-4 h-4 mr-1.5"}),!E&&(0,a.jsx)("span",{children:"Refresh"})]})}),(0,a.jsx)(d.Status2Actions,{withLabel:!0,cluster:O.cluster,status:O.status,onOpenSSHModal:()=>{g(!0)},onOpenVSCodeModal:()=>{j(!0)}})]})]})})]}),Z&&c||M?(0,a.jsxs)("div",{className:"flex justify-center items-center py-12",children:[(0,a.jsx)(r.Z,{size:24,className:"mr-2"}),(0,a.jsx)("span",{className:"text-gray-500",children:"Loading cluster details..."})]}):O?(0,a.jsx)(L,{clusterData:O,clusterJobData:P,clusterJobsLoading:U,refreshClusterJobsOnly:D,isVSCodeModalOpen:v,setIsVSCodeModalOpen:j,timeRange:R,handleTimeRangePreset:q,buildGrafanaMetricsUrl:B,matchedClusterName:F,isLoadingClusterMatch:H,isGrafanaAvailable:W,isHistoricalCluster:!1}):C&&_?(0,a.jsx)(L,{clusterData:_,clusterJobData:[],clusterJobsLoading:!1,refreshClusterJobsOnly:()=>{},isVSCodeModalOpen:!1,setIsVSCodeModalOpen:()=>{},timeRange:R,handleTimeRangePreset:q,buildGrafanaMetricsUrl:B,matchedClusterName:null,isLoadingClusterMatch:!1,isGrafanaAvailable:!1,isHistoricalCluster:!0}):(0,a.jsx)("div",{className:"flex justify-center items-center py-12",children:(0,a.jsx)("span",{className:"text-gray-500",children:"Cluster not found in active clusters or history."})}),(0,a.jsx)(N.Oh,{isOpen:f,onClose:()=>g(!1),cluster:t}),(0,a.jsx)(N._R,{isOpen:v,onClose:()=>j(!1),cluster:t})]})]})}},17853:function(e,t,s){"use strict";s.d(t,{TO:function(){return r},ki:function(){return n}});let a=null,l=null,r=async()=>null!==a?a:l||(l=(async()=>{try{let e="".concat(window.location.origin,"/grafana"),t=await fetch("".concat(e,"/api/health"),{method:"GET",credentials:"include",headers:{Accept:"application/json"},signal:AbortSignal.timeout(5e3)});return 200==t.status}catch(e){return console.debug("Grafana availability check failed:",e),a=!1,!1}finally{l=null}})()),n=()=>"".concat(window.location.origin,"/grafana")}},function(e){e.O(0,[616,6130,5739,7411,1272,1559,6212,6989,3850,8969,6990,8056,6135,6601,9159,1871,2888,9774,179],function(){return e(e.s=58706)}),_N_E=e.O()}]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
!function(){"use strict";var t,e,n,r,c,o,u,a,i,f={},s={};function d(t){var e=s[t];if(void 0!==e)return e.exports;var n=s[t]={exports:{}},r=!0;try{f[t](n,n.exports,d),r=!1}finally{r&&delete s[t]}return n.exports}d.m=f,t=[],d.O=function(e,n,r,c){if(n){c=c||0;for(var o=t.length;o>0&&t[o-1][2]>c;o--)t[o]=t[o-1];t[o]=[n,r,c];return}for(var u=1/0,o=0;o<t.length;o++){for(var n=t[o][0],r=t[o][1],c=t[o][2],a=!0,i=0;i<n.length;i++)u>=c&&Object.keys(d.O).every(function(t){return d.O[t](n[i])})?n.splice(i--,1):(a=!1,c<u&&(u=c));if(a){t.splice(o--,1);var f=r();void 0!==f&&(e=f)}}return e},d.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return d.d(e,{a:e}),e},n=Object.getPrototypeOf?function(t){return Object.getPrototypeOf(t)}:function(t){return t.__proto__},d.t=function(t,r){if(1&r&&(t=this(t)),8&r||"object"==typeof t&&t&&(4&r&&t.__esModule||16&r&&"function"==typeof t.then))return t;var c=Object.create(null);d.r(c);var o={};e=e||[null,n({}),n([]),n(n)];for(var u=2&r&&t;"object"==typeof u&&!~e.indexOf(u);u=n(u))Object.getOwnPropertyNames(u).forEach(function(e){o[e]=function(){return t[e]}});return o.default=function(){return t},d.d(c,o),c},d.d=function(t,e){for(var n in e)d.o(e,n)&&!d.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},d.f={},d.e=function(t){return Promise.all(Object.keys(d.f).reduce(function(e,n){return d.f[n](t,e),e},[]))},d.u=function(t){return 9666===t?"static/chunks/9666.cd4273f2a5c5802c.js":
|
|
1
|
+
!function(){"use strict";var t,e,n,r,c,o,u,a,i,f={},s={};function d(t){var e=s[t];if(void 0!==e)return e.exports;var n=s[t]={exports:{}},r=!0;try{f[t](n,n.exports,d),r=!1}finally{r&&delete s[t]}return n.exports}d.m=f,t=[],d.O=function(e,n,r,c){if(n){c=c||0;for(var o=t.length;o>0&&t[o-1][2]>c;o--)t[o]=t[o-1];t[o]=[n,r,c];return}for(var u=1/0,o=0;o<t.length;o++){for(var n=t[o][0],r=t[o][1],c=t[o][2],a=!0,i=0;i<n.length;i++)u>=c&&Object.keys(d.O).every(function(t){return d.O[t](n[i])})?n.splice(i--,1):(a=!1,c<u&&(u=c));if(a){t.splice(o--,1);var f=r();void 0!==f&&(e=f)}}return e},d.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return d.d(e,{a:e}),e},n=Object.getPrototypeOf?function(t){return Object.getPrototypeOf(t)}:function(t){return t.__proto__},d.t=function(t,r){if(1&r&&(t=this(t)),8&r||"object"==typeof t&&t&&(4&r&&t.__esModule||16&r&&"function"==typeof t.then))return t;var c=Object.create(null);d.r(c);var o={};e=e||[null,n({}),n([]),n(n)];for(var u=2&r&&t;"object"==typeof u&&!~e.indexOf(u);u=n(u))Object.getOwnPropertyNames(u).forEach(function(e){o[e]=function(){return t[e]}});return o.default=function(){return t},d.d(c,o),c},d.d=function(t,e){for(var n in e)d.o(e,n)&&!d.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},d.f={},d.e=function(t){return Promise.all(Object.keys(d.f).reduce(function(e,n){return d.f[n](t,e),e},[]))},d.u=function(t){return 9666===t?"static/chunks/9666.cd4273f2a5c5802c.js":2369===t?"static/chunks/2369.fc20f0c2c8ed9fe7.js":3937===t?"static/chunks/3937.210053269f121201.js":9025===t?"static/chunks/9025.a1bef12d672bb66d.js":4937===t?"static/chunks/4937.a2baa2df5572a276.js":9984===t?"static/chunks/9984.c5564679e467d245.js":8252===t?"static/chunks/8252.62b0d23aed618bb2.js":691===t?"static/chunks/691.5eeedf82cc243343.js":2641===t?"static/chunks/2641.142718b6b78a6f9b.js":9847===t?"static/chunks/9847.757720f3b40c0aa5.js":4725===t?"static/chunks/4725.29550342bd53afd8.js":3785===t?"static/chunks/3785.6003d293cb83eab4.js":9360===t?"static/chunks/9360.85b0b1b4054574dd.js":"static/chunks/"+t+"-"+({616:"3d59f75e2ccf9321",1141:"a8a8f1adba34c892",1272:"1ef0bf0237faccdb",1559:"6c00e20454194859",1871:"980a395e92633a5c",3850:"ff4a9a69d978632b",5739:"d67458fcb1386c92",6130:"2be46d70a38f1e82",6135:"85426374db04811e",6601:"06114c982db410b6",6989:"6129c1cfbcf51063",6990:"0f886f16e0d55ff8",7411:"b15471acd2cba716",8056:"5bdeda81199c0def",8969:"c9686994ddafcf01",9159:"11421c0f2909236f"})[t]+".js"},d.miniCssF=function(t){},d.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||Function("return this")()}catch(t){if("object"==typeof window)return window}}(),d.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},r={},c="_N_E:",d.l=function(t,e,n,o){if(r[t]){r[t].push(e);return}if(void 0!==n)for(var u,a,i=document.getElementsByTagName("script"),f=0;f<i.length;f++){var s=i[f];if(s.getAttribute("src")==t||s.getAttribute("data-webpack")==c+n){u=s;break}}u||(a=!0,(u=document.createElement("script")).charset="utf-8",u.timeout=120,d.nc&&u.setAttribute("nonce",d.nc),u.setAttribute("data-webpack",c+n),u.src=d.tu(t)),r[t]=[e];var l=function(e,n){u.onerror=u.onload=null,clearTimeout(b);var c=r[t];if(delete r[t],u.parentNode&&u.parentNode.removeChild(u),c&&c.forEach(function(t){return t(n)}),e)return e(n)},b=setTimeout(l.bind(null,void 0,{type:"timeout",target:u}),12e4);u.onerror=l.bind(null,u.onerror),u.onload=l.bind(null,u.onload),a&&document.head.appendChild(u)},d.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},d.tt=function(){return void 0===o&&(o={createScriptURL:function(t){return t}},"undefined"!=typeof trustedTypes&&trustedTypes.createPolicy&&(o=trustedTypes.createPolicy("nextjs#bundler",o))),o},d.tu=function(t){return d.tt().createScriptURL(t)},d.p="/dashboard/_next/",u={2272:0},d.f.j=function(t,e){var n=d.o(u,t)?u[t]:void 0;if(0!==n){if(n)e.push(n[2]);else if(2272!=t){var r=new Promise(function(e,r){n=u[t]=[e,r]});e.push(n[2]=r);var c=d.p+d.u(t),o=Error();d.l(c,function(e){if(d.o(u,t)&&(0!==(n=u[t])&&(u[t]=void 0),n)){var r=e&&("load"===e.type?"missing":e.type),c=e&&e.target&&e.target.src;o.message="Loading chunk "+t+" failed.\n("+r+": "+c+")",o.name="ChunkLoadError",o.type=r,o.request=c,n[1](o)}},"chunk-"+t,t)}else u[t]=0}},d.O.j=function(t){return 0===u[t]},a=function(t,e){var n,r,c=e[0],o=e[1],a=e[2],i=0;if(c.some(function(t){return 0!==u[t]})){for(n in o)d.o(o,n)&&(d.m[n]=o[n]);if(a)var f=a(d)}for(t&&t(e);i<c.length;i++)r=c[i],d.o(u,r)&&u[r]&&u[r][0](),u[r]=0;return d.O(f)},(i=self.webpackChunk_N_E=self.webpackChunk_N_E||[]).forEach(a.bind(null,0)),i.push=a.bind(null,i.push.bind(i)),d.nc=void 0}();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
<!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><meta name="next-head-count" content="2"/><link rel="preload" href="/dashboard/_next/static/css/4614e06482d7309e.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/4614e06482d7309e.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-
|
|
1
|
+
<!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><meta name="next-head-count" content="2"/><link rel="preload" href="/dashboard/_next/static/css/4614e06482d7309e.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/4614e06482d7309e.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-7fd0cf9dbecff10f.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-cf60a09ccd051a10.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-f15ccb73239a3bf1.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-491a4d699d95e808.js" defer=""></script><script src="/dashboard/_next/static/chunks/616-3d59f75e2ccf9321.js" defer=""></script><script src="/dashboard/_next/static/chunks/6130-2be46d70a38f1e82.js" defer=""></script><script src="/dashboard/_next/static/chunks/5739-d67458fcb1386c92.js" defer=""></script><script src="/dashboard/_next/static/chunks/7411-b15471acd2cba716.js" defer=""></script><script src="/dashboard/_next/static/chunks/6989-6129c1cfbcf51063.js" defer=""></script><script src="/dashboard/_next/static/chunks/3850-ff4a9a69d978632b.js" defer=""></script><script src="/dashboard/_next/static/chunks/6135-85426374db04811e.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/clusters/%5Bcluster%5D/%5Bjob%5D-078751bad714c017.js" defer=""></script><script src="/dashboard/_next/static/Fuy7OzApYTUMz2QgoP7dP/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/Fuy7OzApYTUMz2QgoP7dP/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/clusters/[cluster]/[job]","query":{},"buildId":"Fuy7OzApYTUMz2QgoP7dP","assetPrefix":"/dashboard","nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
<!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><meta name="next-head-count" content="2"/><link rel="preload" href="/dashboard/_next/static/css/4614e06482d7309e.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/4614e06482d7309e.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-
|
|
1
|
+
<!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><meta name="next-head-count" content="2"/><link rel="preload" href="/dashboard/_next/static/css/4614e06482d7309e.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/4614e06482d7309e.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-7fd0cf9dbecff10f.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-cf60a09ccd051a10.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-f15ccb73239a3bf1.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-491a4d699d95e808.js" defer=""></script><script src="/dashboard/_next/static/chunks/616-3d59f75e2ccf9321.js" defer=""></script><script src="/dashboard/_next/static/chunks/6130-2be46d70a38f1e82.js" defer=""></script><script src="/dashboard/_next/static/chunks/5739-d67458fcb1386c92.js" defer=""></script><script src="/dashboard/_next/static/chunks/7411-b15471acd2cba716.js" defer=""></script><script src="/dashboard/_next/static/chunks/1272-1ef0bf0237faccdb.js" defer=""></script><script src="/dashboard/_next/static/chunks/1559-6c00e20454194859.js" defer=""></script><script src="/dashboard/_next/static/chunks/6212-7bd06f60ba693125.js" defer=""></script><script src="/dashboard/_next/static/chunks/6989-6129c1cfbcf51063.js" defer=""></script><script src="/dashboard/_next/static/chunks/3850-ff4a9a69d978632b.js" defer=""></script><script src="/dashboard/_next/static/chunks/8969-c9686994ddafcf01.js" defer=""></script><script src="/dashboard/_next/static/chunks/6990-0f886f16e0d55ff8.js" defer=""></script><script src="/dashboard/_next/static/chunks/8056-5bdeda81199c0def.js" defer=""></script><script src="/dashboard/_next/static/chunks/6135-85426374db04811e.js" defer=""></script><script src="/dashboard/_next/static/chunks/6601-06114c982db410b6.js" defer=""></script><script src="/dashboard/_next/static/chunks/9159-11421c0f2909236f.js" defer=""></script><script src="/dashboard/_next/static/chunks/1871-980a395e92633a5c.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/clusters/%5Bcluster%5D-da9cc0901349c2e9.js" defer=""></script><script src="/dashboard/_next/static/Fuy7OzApYTUMz2QgoP7dP/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/Fuy7OzApYTUMz2QgoP7dP/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/clusters/[cluster]","query":{},"buildId":"Fuy7OzApYTUMz2QgoP7dP","assetPrefix":"/dashboard","nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
<!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><meta name="next-head-count" content="2"/><link rel="preload" href="/dashboard/_next/static/css/4614e06482d7309e.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/4614e06482d7309e.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-
|
|
1
|
+
<!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><meta name="next-head-count" content="2"/><link rel="preload" href="/dashboard/_next/static/css/4614e06482d7309e.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/4614e06482d7309e.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-7fd0cf9dbecff10f.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-cf60a09ccd051a10.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-f15ccb73239a3bf1.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-491a4d699d95e808.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/clusters-b30460f683e6ba96.js" defer=""></script><script src="/dashboard/_next/static/Fuy7OzApYTUMz2QgoP7dP/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/Fuy7OzApYTUMz2QgoP7dP/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/clusters","query":{},"buildId":"Fuy7OzApYTUMz2QgoP7dP","assetPrefix":"/dashboard","nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html>
|