skypilot-nightly 1.0.0.dev20250503__tar.gz → 1.0.0.dev20250506__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.
Files changed (417) hide show
  1. {skypilot_nightly-1.0.0.dev20250503/skypilot_nightly.egg-info → skypilot_nightly-1.0.0.dev20250506}/PKG-INFO +1 -1
  2. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/__init__.py +2 -2
  3. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/adaptors/nebius.py +0 -12
  4. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/check.py +44 -31
  5. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/clouds/nebius.py +0 -1
  6. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/dashboard/out/404.html +1 -1
  7. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/dashboard/out/clusters/[cluster]/[job].html +1 -1
  8. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/dashboard/out/clusters/[cluster].html +1 -1
  9. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/dashboard/out/clusters.html +1 -1
  10. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/dashboard/out/index.html +1 -1
  11. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/dashboard/out/jobs/[job].html +1 -1
  12. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/dashboard/out/jobs.html +1 -1
  13. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/provision/kubernetes/utils.py +6 -2
  14. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/provision/nebius/utils.py +19 -39
  15. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/server/requests/payloads.py +3 -0
  16. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/utils/common_utils.py +4 -4
  17. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/utils/controller_utils.py +13 -0
  18. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/utils/schemas.py +18 -0
  19. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506/skypilot_nightly.egg-info}/PKG-INFO +1 -1
  20. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/skypilot_nightly.egg-info/SOURCES.txt +2 -2
  21. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/LICENSE +0 -0
  22. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/MANIFEST.in +0 -0
  23. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/README.md +0 -0
  24. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/pyproject.toml +0 -0
  25. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/setup.cfg +0 -0
  26. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/setup.py +0 -0
  27. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/adaptors/__init__.py +0 -0
  28. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/adaptors/aws.py +0 -0
  29. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/adaptors/azure.py +0 -0
  30. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/adaptors/cloudflare.py +0 -0
  31. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/adaptors/common.py +0 -0
  32. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/adaptors/cudo.py +0 -0
  33. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/adaptors/do.py +0 -0
  34. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/adaptors/docker.py +0 -0
  35. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/adaptors/gcp.py +0 -0
  36. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/adaptors/ibm.py +0 -0
  37. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/adaptors/kubernetes.py +0 -0
  38. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/adaptors/oci.py +0 -0
  39. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/adaptors/runpod.py +0 -0
  40. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/adaptors/vast.py +0 -0
  41. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/adaptors/vsphere.py +0 -0
  42. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/admin_policy.py +0 -0
  43. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/authentication.py +0 -0
  44. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/backends/__init__.py +0 -0
  45. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/backends/backend.py +0 -0
  46. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/backends/backend_utils.py +0 -0
  47. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/backends/cloud_vm_ray_backend.py +0 -0
  48. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/backends/docker_utils.py +0 -0
  49. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/backends/local_docker_backend.py +0 -0
  50. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/backends/monkey_patches/monkey_patch_ray_up.py +0 -0
  51. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/backends/wheel_utils.py +0 -0
  52. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/benchmark/__init__.py +0 -0
  53. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/benchmark/benchmark_state.py +0 -0
  54. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/benchmark/benchmark_utils.py +0 -0
  55. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/cli.py +0 -0
  56. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/client/__init__.py +0 -0
  57. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/client/cli.py +0 -0
  58. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/client/common.py +0 -0
  59. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/client/sdk.py +0 -0
  60. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/cloud_stores.py +0 -0
  61. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/clouds/__init__.py +0 -0
  62. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/clouds/aws.py +0 -0
  63. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/clouds/azure.py +0 -0
  64. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/clouds/cloud.py +0 -0
  65. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/clouds/cudo.py +0 -0
  66. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/clouds/do.py +0 -0
  67. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/clouds/fluidstack.py +0 -0
  68. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/clouds/gcp.py +0 -0
  69. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/clouds/ibm.py +0 -0
  70. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/clouds/kubernetes.py +0 -0
  71. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/clouds/lambda_cloud.py +0 -0
  72. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/clouds/oci.py +0 -0
  73. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/clouds/paperspace.py +0 -0
  74. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/clouds/runpod.py +0 -0
  75. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/clouds/scp.py +0 -0
  76. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/clouds/service_catalog/__init__.py +0 -0
  77. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/clouds/service_catalog/aws_catalog.py +0 -0
  78. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/clouds/service_catalog/azure_catalog.py +0 -0
  79. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/clouds/service_catalog/common.py +0 -0
  80. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/clouds/service_catalog/config.py +0 -0
  81. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/clouds/service_catalog/constants.py +0 -0
  82. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/clouds/service_catalog/cudo_catalog.py +0 -0
  83. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/clouds/service_catalog/data_fetchers/__init__.py +0 -0
  84. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/clouds/service_catalog/data_fetchers/fetch_aws.py +0 -0
  85. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/clouds/service_catalog/data_fetchers/fetch_azure.py +0 -0
  86. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/clouds/service_catalog/data_fetchers/fetch_cudo.py +0 -0
  87. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/clouds/service_catalog/data_fetchers/fetch_fluidstack.py +0 -0
  88. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/clouds/service_catalog/data_fetchers/fetch_gcp.py +0 -0
  89. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/clouds/service_catalog/data_fetchers/fetch_ibm.py +0 -0
  90. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/clouds/service_catalog/data_fetchers/fetch_lambda_cloud.py +0 -0
  91. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/clouds/service_catalog/data_fetchers/fetch_vast.py +0 -0
  92. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/clouds/service_catalog/data_fetchers/fetch_vsphere.py +0 -0
  93. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/clouds/service_catalog/do_catalog.py +0 -0
  94. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/clouds/service_catalog/fluidstack_catalog.py +0 -0
  95. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/clouds/service_catalog/gcp_catalog.py +0 -0
  96. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/clouds/service_catalog/ibm_catalog.py +0 -0
  97. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/clouds/service_catalog/kubernetes_catalog.py +0 -0
  98. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/clouds/service_catalog/lambda_catalog.py +0 -0
  99. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/clouds/service_catalog/nebius_catalog.py +0 -0
  100. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/clouds/service_catalog/oci_catalog.py +0 -0
  101. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/clouds/service_catalog/paperspace_catalog.py +0 -0
  102. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/clouds/service_catalog/runpod_catalog.py +0 -0
  103. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/clouds/service_catalog/scp_catalog.py +0 -0
  104. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/clouds/service_catalog/vast_catalog.py +0 -0
  105. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/clouds/service_catalog/vsphere_catalog.py +0 -0
  106. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/clouds/utils/__init__.py +0 -0
  107. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/clouds/utils/aws_utils.py +0 -0
  108. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/clouds/utils/azure_utils.py +0 -0
  109. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/clouds/utils/gcp_utils.py +0 -0
  110. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/clouds/utils/oci_utils.py +0 -0
  111. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/clouds/utils/scp_utils.py +0 -0
  112. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/clouds/vast.py +0 -0
  113. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/clouds/vsphere.py +0 -0
  114. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/core.py +0 -0
  115. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/dag.py +0 -0
  116. {skypilot_nightly-1.0.0.dev20250503/sky/dashboard/out/_next/static/zldaM4b2C9dqzAfQFKH9d → skypilot_nightly-1.0.0.dev20250506/sky/dashboard/out/_next/static/XGMId9CZTvpE82L-EIMuY}/_buildManifest.js +0 -0
  117. {skypilot_nightly-1.0.0.dev20250503/sky/dashboard/out/_next/static/zldaM4b2C9dqzAfQFKH9d → skypilot_nightly-1.0.0.dev20250506/sky/dashboard/out/_next/static/XGMId9CZTvpE82L-EIMuY}/_ssgManifest.js +0 -0
  118. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/dashboard/out/_next/static/chunks/236-2db3ee3fba33dd9e.js +0 -0
  119. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/dashboard/out/_next/static/chunks/312-c3c8845990db8ffc.js +0 -0
  120. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/dashboard/out/_next/static/chunks/37-0a572fe0dbb89c4d.js +0 -0
  121. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/dashboard/out/_next/static/chunks/678-206dddca808e6d16.js +0 -0
  122. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/dashboard/out/_next/static/chunks/845-9e60713e0c441abc.js +0 -0
  123. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/dashboard/out/_next/static/chunks/979-7bf73a4c7cea0f5c.js +0 -0
  124. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/dashboard/out/_next/static/chunks/fd9d1056-2821b0f0cabcd8bd.js +0 -0
  125. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/dashboard/out/_next/static/chunks/framework-87d061ee6ed71b28.js +0 -0
  126. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/dashboard/out/_next/static/chunks/main-app-241eb28595532291.js +0 -0
  127. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/dashboard/out/_next/static/chunks/main-e0e2335212e72357.js +0 -0
  128. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/dashboard/out/_next/static/chunks/pages/_app-e6b013bc3f77ad60.js +0 -0
  129. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/dashboard/out/_next/static/chunks/pages/_error-1be831200e60c5c0.js +0 -0
  130. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/dashboard/out/_next/static/chunks/pages/clusters/[cluster]/[job]-6ac338bc2239cb45.js +0 -0
  131. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/dashboard/out/_next/static/chunks/pages/clusters/[cluster]-f383db7389368ea7.js +0 -0
  132. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/dashboard/out/_next/static/chunks/pages/clusters-a93b93e10b8b074e.js +0 -0
  133. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/dashboard/out/_next/static/chunks/pages/index-f9f039532ca8cbc4.js +0 -0
  134. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/dashboard/out/_next/static/chunks/pages/jobs/[job]-1c519e1afc523dc9.js +0 -0
  135. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/dashboard/out/_next/static/chunks/pages/jobs-a75029b67aab6a2e.js +0 -0
  136. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/dashboard/out/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js +0 -0
  137. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/dashboard/out/_next/static/chunks/webpack-830f59b8404e96b8.js +0 -0
  138. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/dashboard/out/_next/static/css/c6933bbb2ce7f4dd.css +0 -0
  139. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/dashboard/out/favicon.ico +0 -0
  140. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/dashboard/out/skypilot.svg +0 -0
  141. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/dashboard/out/videos/cursor-small.mp4 +0 -0
  142. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/data/__init__.py +0 -0
  143. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/data/data_transfer.py +0 -0
  144. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/data/data_utils.py +0 -0
  145. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/data/mounting_utils.py +0 -0
  146. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/data/storage.py +0 -0
  147. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/data/storage_utils.py +0 -0
  148. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/exceptions.py +0 -0
  149. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/execution.py +0 -0
  150. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/global_user_state.py +0 -0
  151. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/jobs/__init__.py +0 -0
  152. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/jobs/client/__init__.py +0 -0
  153. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/jobs/client/sdk.py +0 -0
  154. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/jobs/constants.py +0 -0
  155. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/jobs/controller.py +0 -0
  156. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/jobs/dashboard/dashboard.py +0 -0
  157. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/jobs/dashboard/static/favicon.ico +0 -0
  158. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/jobs/dashboard/templates/index.html +0 -0
  159. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/jobs/recovery_strategy.py +0 -0
  160. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/jobs/scheduler.py +0 -0
  161. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/jobs/server/__init__.py +0 -0
  162. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/jobs/server/core.py +0 -0
  163. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/jobs/server/dashboard_utils.py +0 -0
  164. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/jobs/server/server.py +0 -0
  165. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/jobs/state.py +0 -0
  166. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/jobs/utils.py +0 -0
  167. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/models.py +0 -0
  168. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/optimizer.py +0 -0
  169. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/provision/__init__.py +0 -0
  170. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/provision/aws/__init__.py +0 -0
  171. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/provision/aws/config.py +0 -0
  172. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/provision/aws/instance.py +0 -0
  173. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/provision/aws/utils.py +0 -0
  174. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/provision/azure/__init__.py +0 -0
  175. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/provision/azure/azure-config-template.json +0 -0
  176. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/provision/azure/config.py +0 -0
  177. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/provision/azure/instance.py +0 -0
  178. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/provision/common.py +0 -0
  179. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/provision/constants.py +0 -0
  180. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/provision/cudo/__init__.py +0 -0
  181. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/provision/cudo/config.py +0 -0
  182. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/provision/cudo/cudo_machine_type.py +0 -0
  183. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/provision/cudo/cudo_utils.py +0 -0
  184. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/provision/cudo/cudo_wrapper.py +0 -0
  185. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/provision/cudo/instance.py +0 -0
  186. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/provision/do/__init__.py +0 -0
  187. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/provision/do/config.py +0 -0
  188. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/provision/do/constants.py +0 -0
  189. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/provision/do/instance.py +0 -0
  190. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/provision/do/utils.py +0 -0
  191. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/provision/docker_utils.py +0 -0
  192. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/provision/fluidstack/__init__.py +0 -0
  193. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/provision/fluidstack/config.py +0 -0
  194. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/provision/fluidstack/fluidstack_utils.py +0 -0
  195. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/provision/fluidstack/instance.py +0 -0
  196. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/provision/gcp/__init__.py +0 -0
  197. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/provision/gcp/config.py +0 -0
  198. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/provision/gcp/constants.py +0 -0
  199. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/provision/gcp/instance.py +0 -0
  200. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/provision/gcp/instance_utils.py +0 -0
  201. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/provision/gcp/mig_utils.py +0 -0
  202. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/provision/instance_setup.py +0 -0
  203. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/provision/kubernetes/__init__.py +0 -0
  204. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/provision/kubernetes/config.py +0 -0
  205. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/provision/kubernetes/constants.py +0 -0
  206. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/provision/kubernetes/instance.py +0 -0
  207. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/provision/kubernetes/manifests/fusermount-server-daemonset.yaml +0 -0
  208. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/provision/kubernetes/network.py +0 -0
  209. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/provision/kubernetes/network_utils.py +0 -0
  210. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/provision/lambda_cloud/__init__.py +0 -0
  211. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/provision/lambda_cloud/config.py +0 -0
  212. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/provision/lambda_cloud/instance.py +0 -0
  213. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/provision/lambda_cloud/lambda_utils.py +0 -0
  214. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/provision/logging.py +0 -0
  215. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/provision/metadata_utils.py +0 -0
  216. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/provision/nebius/__init__.py +0 -0
  217. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/provision/nebius/config.py +0 -0
  218. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/provision/nebius/instance.py +0 -0
  219. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/provision/oci/__init__.py +0 -0
  220. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/provision/oci/config.py +0 -0
  221. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/provision/oci/instance.py +0 -0
  222. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/provision/oci/query_utils.py +0 -0
  223. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/provision/paperspace/__init__.py +0 -0
  224. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/provision/paperspace/config.py +0 -0
  225. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/provision/paperspace/constants.py +0 -0
  226. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/provision/paperspace/instance.py +0 -0
  227. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/provision/paperspace/utils.py +0 -0
  228. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/provision/provisioner.py +0 -0
  229. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/provision/runpod/__init__.py +0 -0
  230. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/provision/runpod/api/__init__.py +0 -0
  231. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/provision/runpod/api/commands.py +0 -0
  232. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/provision/runpod/api/pods.py +0 -0
  233. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/provision/runpod/config.py +0 -0
  234. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/provision/runpod/instance.py +0 -0
  235. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/provision/runpod/utils.py +0 -0
  236. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/provision/vast/__init__.py +0 -0
  237. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/provision/vast/config.py +0 -0
  238. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/provision/vast/instance.py +0 -0
  239. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/provision/vast/utils.py +0 -0
  240. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/provision/vsphere/__init__.py +0 -0
  241. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/provision/vsphere/common/__init__.py +0 -0
  242. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/provision/vsphere/common/cls_api_client.py +0 -0
  243. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/provision/vsphere/common/cls_api_helper.py +0 -0
  244. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/provision/vsphere/common/custom_script.py +0 -0
  245. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/provision/vsphere/common/id_generator.py +0 -0
  246. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/provision/vsphere/common/metadata_utils.py +0 -0
  247. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/provision/vsphere/common/service_manager.py +0 -0
  248. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/provision/vsphere/common/service_manager_factory.py +0 -0
  249. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/provision/vsphere/common/ssl_helper.py +0 -0
  250. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/provision/vsphere/common/vapiconnect.py +0 -0
  251. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/provision/vsphere/common/vim_utils.py +0 -0
  252. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/provision/vsphere/config.py +0 -0
  253. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/provision/vsphere/instance.py +0 -0
  254. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/provision/vsphere/vsphere_utils.py +0 -0
  255. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/resources.py +0 -0
  256. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/serve/__init__.py +0 -0
  257. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/serve/autoscalers.py +0 -0
  258. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/serve/client/__init__.py +0 -0
  259. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/serve/client/sdk.py +0 -0
  260. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/serve/constants.py +0 -0
  261. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/serve/controller.py +0 -0
  262. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/serve/load_balancer.py +0 -0
  263. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/serve/load_balancing_policies.py +0 -0
  264. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/serve/replica_managers.py +0 -0
  265. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/serve/serve_state.py +0 -0
  266. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/serve/serve_utils.py +0 -0
  267. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/serve/server/__init__.py +0 -0
  268. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/serve/server/core.py +0 -0
  269. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/serve/server/server.py +0 -0
  270. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/serve/service.py +0 -0
  271. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/serve/service_spec.py +0 -0
  272. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/serve/spot_placer.py +0 -0
  273. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/server/__init__.py +0 -0
  274. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/server/common.py +0 -0
  275. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/server/config.py +0 -0
  276. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/server/constants.py +0 -0
  277. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/server/html/log.html +0 -0
  278. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/server/requests/__init__.py +0 -0
  279. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/server/requests/event_loop.py +0 -0
  280. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/server/requests/executor.py +0 -0
  281. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/server/requests/preconditions.py +0 -0
  282. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/server/requests/process.py +0 -0
  283. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/server/requests/queues/__init__.py +0 -0
  284. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/server/requests/queues/local_queue.py +0 -0
  285. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/server/requests/queues/mp_queue.py +0 -0
  286. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/server/requests/requests.py +0 -0
  287. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/server/requests/serializers/__init__.py +0 -0
  288. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/server/requests/serializers/decoders.py +0 -0
  289. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/server/requests/serializers/encoders.py +0 -0
  290. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/server/server.py +0 -0
  291. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/server/stream_utils.py +0 -0
  292. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/server/uvicorn.py +0 -0
  293. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/setup_files/MANIFEST.in +0 -0
  294. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/setup_files/dependencies.py +0 -0
  295. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/setup_files/setup.py +0 -0
  296. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/sky_logging.py +0 -0
  297. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/skylet/LICENSE +0 -0
  298. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/skylet/__init__.py +0 -0
  299. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/skylet/attempt_skylet.py +0 -0
  300. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/skylet/autostop_lib.py +0 -0
  301. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/skylet/configs.py +0 -0
  302. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/skylet/constants.py +0 -0
  303. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/skylet/events.py +0 -0
  304. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/skylet/job_lib.py +0 -0
  305. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/skylet/log_lib.py +0 -0
  306. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/skylet/log_lib.pyi +0 -0
  307. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/skylet/providers/__init__.py +0 -0
  308. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/skylet/providers/command_runner.py +0 -0
  309. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/skylet/providers/ibm/__init__.py +0 -0
  310. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/skylet/providers/ibm/node_provider.py +0 -0
  311. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/skylet/providers/ibm/utils.py +0 -0
  312. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/skylet/providers/ibm/vpc_provider.py +0 -0
  313. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/skylet/providers/scp/__init__.py +0 -0
  314. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/skylet/providers/scp/config.py +0 -0
  315. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/skylet/providers/scp/node_provider.py +0 -0
  316. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/skylet/ray_patches/__init__.py +0 -0
  317. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/skylet/ray_patches/autoscaler.py.patch +0 -0
  318. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/skylet/ray_patches/cli.py.patch +0 -0
  319. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/skylet/ray_patches/command_runner.py.patch +0 -0
  320. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/skylet/ray_patches/log_monitor.py.patch +0 -0
  321. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/skylet/ray_patches/resource_demand_scheduler.py.patch +0 -0
  322. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/skylet/ray_patches/updater.py.patch +0 -0
  323. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/skylet/ray_patches/worker.py.patch +0 -0
  324. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/skylet/skylet.py +0 -0
  325. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/skylet/subprocess_daemon.py +0 -0
  326. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/skypilot_config.py +0 -0
  327. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/task.py +0 -0
  328. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/templates/aws-ray.yml.j2 +0 -0
  329. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/templates/azure-ray.yml.j2 +0 -0
  330. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/templates/cudo-ray.yml.j2 +0 -0
  331. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/templates/do-ray.yml.j2 +0 -0
  332. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/templates/fluidstack-ray.yml.j2 +0 -0
  333. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/templates/gcp-ray.yml.j2 +0 -0
  334. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/templates/ibm-ray.yml.j2 +0 -0
  335. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/templates/jobs-controller.yaml.j2 +0 -0
  336. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/templates/kubernetes-ingress.yml.j2 +0 -0
  337. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/templates/kubernetes-loadbalancer.yml.j2 +0 -0
  338. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/templates/kubernetes-port-forward-proxy-command.sh +0 -0
  339. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/templates/kubernetes-ray.yml.j2 +0 -0
  340. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/templates/kubernetes-ssh-jump.yml.j2 +0 -0
  341. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/templates/lambda-ray.yml.j2 +0 -0
  342. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/templates/local-ray.yml.j2 +0 -0
  343. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/templates/nebius-ray.yml.j2 +0 -0
  344. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/templates/oci-ray.yml.j2 +0 -0
  345. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/templates/paperspace-ray.yml.j2 +0 -0
  346. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/templates/runpod-ray.yml.j2 +0 -0
  347. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/templates/scp-ray.yml.j2 +0 -0
  348. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/templates/sky-serve-controller.yaml.j2 +0 -0
  349. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/templates/skypilot-server-kubernetes-proxy.sh +0 -0
  350. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/templates/vast-ray.yml.j2 +0 -0
  351. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/templates/vsphere-ray.yml.j2 +0 -0
  352. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/templates/websocket_proxy.py +0 -0
  353. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/usage/__init__.py +0 -0
  354. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/usage/constants.py +0 -0
  355. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/usage/usage_lib.py +0 -0
  356. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/utils/__init__.py +0 -0
  357. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/utils/accelerator_registry.py +0 -0
  358. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/utils/admin_policy_utils.py +0 -0
  359. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/utils/annotations.py +0 -0
  360. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/utils/atomic.py +0 -0
  361. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/utils/aws/__init__.py +0 -0
  362. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/utils/aws/get_default_security_group.py +0 -0
  363. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/utils/cli_utils/__init__.py +0 -0
  364. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/utils/cli_utils/status_utils.py +0 -0
  365. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/utils/cluster_utils.py +0 -0
  366. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/utils/command_runner.py +0 -0
  367. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/utils/command_runner.pyi +0 -0
  368. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/utils/common.py +0 -0
  369. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/utils/config_utils.py +0 -0
  370. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/utils/control_master_utils.py +0 -0
  371. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/utils/dag_utils.py +0 -0
  372. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/utils/db_utils.py +0 -0
  373. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/utils/env_options.py +0 -0
  374. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/utils/kubernetes/__init__.py +0 -0
  375. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/utils/kubernetes/create_cluster.sh +0 -0
  376. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/utils/kubernetes/delete_cluster.sh +0 -0
  377. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/utils/kubernetes/deploy_remote_cluster.sh +0 -0
  378. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/utils/kubernetes/exec_kubeconfig_converter.py +0 -0
  379. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/utils/kubernetes/generate_kind_config.py +0 -0
  380. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/utils/kubernetes/generate_kubeconfig.sh +0 -0
  381. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/utils/kubernetes/gpu_labeler.py +0 -0
  382. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/utils/kubernetes/k8s_gpu_labeler_job.yaml +0 -0
  383. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/utils/kubernetes/k8s_gpu_labeler_setup.yaml +0 -0
  384. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/utils/kubernetes/kubernetes_deploy_utils.py +0 -0
  385. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/utils/kubernetes/rsync_helper.sh +0 -0
  386. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/utils/kubernetes/ssh_jump_lifecycle_manager.py +0 -0
  387. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/utils/kubernetes_enums.py +0 -0
  388. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/utils/log_utils.py +0 -0
  389. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/utils/message_utils.py +0 -0
  390. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/utils/registry.py +0 -0
  391. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/utils/resources_utils.py +0 -0
  392. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/utils/rich_console_utils.py +0 -0
  393. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/utils/rich_utils.py +0 -0
  394. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/utils/status_lib.py +0 -0
  395. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/utils/subprocess_utils.py +0 -0
  396. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/utils/timeline.py +0 -0
  397. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/utils/ux_utils.py +0 -0
  398. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/sky/utils/validator.py +0 -0
  399. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/skypilot_nightly.egg-info/dependency_links.txt +0 -0
  400. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/skypilot_nightly.egg-info/entry_points.txt +0 -0
  401. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/skypilot_nightly.egg-info/requires.txt +0 -0
  402. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/skypilot_nightly.egg-info/top_level.txt +0 -0
  403. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/tests/test_api.py +0 -0
  404. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/tests/test_cli.py +0 -0
  405. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/tests/test_config.py +0 -0
  406. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/tests/test_failover.py +0 -0
  407. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/tests/test_global_user_state.py +0 -0
  408. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/tests/test_jobs.py +0 -0
  409. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/tests/test_jobs_and_serve.py +0 -0
  410. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/tests/test_list_accelerators.py +0 -0
  411. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/tests/test_optimizer_dryruns.py +0 -0
  412. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/tests/test_optimizer_random_dag.py +0 -0
  413. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/tests/test_serve_autoscaler.py +0 -0
  414. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/tests/test_smoke.py +0 -0
  415. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/tests/test_storage.py +0 -0
  416. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/tests/test_wheels.py +0 -0
  417. {skypilot_nightly-1.0.0.dev20250503 → skypilot_nightly-1.0.0.dev20250506}/tests/test_yaml_parser.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: skypilot-nightly
3
- Version: 1.0.0.dev20250503
3
+ Version: 1.0.0.dev20250506
4
4
  Summary: SkyPilot: Run AI on Any Infra — Unified, Faster, Cheaper.
5
5
  Author: SkyPilot Team
6
6
  License: Apache 2.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 = 'df96e4a84e06a1eb91897c1594b4c63c4eca64d2'
8
+ _SKYPILOT_COMMIT_SHA = '007c2e532e298f412319e6241d5f243e947689a5'
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.dev20250503'
38
+ __version__ = '1.0.0.dev20250506'
39
39
  __root_dir__ = os.path.dirname(os.path.abspath(__file__))
40
40
 
41
41
 
@@ -8,11 +8,9 @@ from sky.utils import ux_utils
8
8
 
9
9
  NEBIUS_TENANT_ID_FILENAME = 'NEBIUS_TENANT_ID.txt'
10
10
  NEBIUS_IAM_TOKEN_FILENAME = 'NEBIUS_IAM_TOKEN.txt'
11
- NEBIUS_PROJECT_ID_FILENAME = 'NEBIUS_PROJECT_ID.txt'
12
11
  NEBIUS_CREDENTIALS_FILENAME = 'credentials.json'
13
12
  NEBIUS_TENANT_ID_PATH = '~/.nebius/' + NEBIUS_TENANT_ID_FILENAME
14
13
  NEBIUS_IAM_TOKEN_PATH = '~/.nebius/' + NEBIUS_IAM_TOKEN_FILENAME
15
- NEBIUS_PROJECT_ID_PATH = '~/.nebius/' + NEBIUS_PROJECT_ID_FILENAME
16
14
  NEBIUS_CREDENTIALS_PATH = '~/.nebius/' + NEBIUS_CREDENTIALS_FILENAME
17
15
 
18
16
  DEFAULT_REGION = 'eu-north1'
@@ -92,16 +90,6 @@ def is_token_or_cred_file_exist():
92
90
  os.path.exists(os.path.expanduser(NEBIUS_CREDENTIALS_PATH)))
93
91
 
94
92
 
95
- @annotations.lru_cache(scope='request')
96
- def get_project_id():
97
- try:
98
- with open(os.path.expanduser(NEBIUS_PROJECT_ID_PATH),
99
- encoding='utf-8') as file:
100
- return file.read().strip()
101
- except FileNotFoundError:
102
- return None
103
-
104
-
105
93
  @annotations.lru_cache(scope='request')
106
94
  def get_tenant_id():
107
95
  try:
@@ -1,4 +1,6 @@
1
1
  """Credential checks: check cloud credentials and enable clouds."""
2
+ import collections
3
+ import itertools
2
4
  import os
3
5
  import traceback
4
6
  from types import ModuleType
@@ -16,6 +18,7 @@ from sky.adaptors import cloudflare
16
18
  from sky.clouds import cloud as sky_cloud
17
19
  from sky.utils import registry
18
20
  from sky.utils import rich_utils
21
+ from sky.utils import subprocess_utils
19
22
  from sky.utils import ux_utils
20
23
 
21
24
  CHECK_MARK_EMOJI = '\U00002714' # Heavy check mark unicode
@@ -38,32 +41,19 @@ def check_capabilities(
38
41
  enabled_clouds: Dict[str, List[sky_cloud.CloudCapability]] = {}
39
42
  disabled_clouds: Dict[str, List[sky_cloud.CloudCapability]] = {}
40
43
 
41
- def check_one_cloud(
42
- cloud_tuple: Tuple[str, Union[sky_clouds.Cloud,
43
- ModuleType]]) -> None:
44
- cloud_repr, cloud = cloud_tuple
45
- assert capabilities is not None
46
- # cloud_capabilities is a list of (capability, ok, reason)
47
- # where ok is True if the cloud credentials are valid for the capability
48
- cloud_capabilities: List[Tuple[sky_cloud.CloudCapability, bool,
49
- Optional[str]]] = []
50
- for capability in capabilities:
51
- with rich_utils.safe_status(f'Checking {cloud_repr}...'):
52
- try:
53
- ok, reason = cloud.check_credentials(capability)
54
- except exceptions.NotSupportedError:
55
- continue
56
- except Exception: # pylint: disable=broad-except
57
- # Catch all exceptions to prevent a single cloud
58
- # from blocking the check for other clouds.
59
- ok, reason = False, traceback.format_exc()
60
- cloud_capabilities.append(
61
- (capability, ok, reason.strip() if reason else None))
62
- if ok:
63
- enabled_clouds.setdefault(cloud_repr, []).append(capability)
64
- else:
65
- disabled_clouds.setdefault(cloud_repr, []).append(capability)
66
- _print_checked_cloud(echo, verbose, cloud_tuple, cloud_capabilities)
44
+ def check_one_cloud_one_capability(
45
+ payload: Tuple[Tuple[str, Union[sky_clouds.Cloud, ModuleType]],
46
+ sky_cloud.CloudCapability]
47
+ ) -> Optional[Tuple[sky_cloud.CloudCapability, bool, Optional[str]]]:
48
+ cloud_tuple, capability = payload
49
+ _, cloud = cloud_tuple
50
+ try:
51
+ ok, reason = cloud.check_credentials(capability)
52
+ except exceptions.NotSupportedError:
53
+ return None
54
+ except Exception: # pylint: disable=broad-except
55
+ ok, reason = False, traceback.format_exc()
56
+ return capability, ok, reason.strip() if reason else None
67
57
 
68
58
  def get_cloud_tuple(
69
59
  cloud_name: str) -> Tuple[str, Union[sky_clouds.Cloud, ModuleType]]:
@@ -88,10 +78,10 @@ def check_capabilities(
88
78
 
89
79
  # Use allowed_clouds from config if it exists, otherwise check all clouds.
90
80
  # Also validate names with get_cloud_tuple.
91
- config_allowed_cloud_names = [
81
+ config_allowed_cloud_names = sorted([
92
82
  get_cloud_tuple(c)[0] for c in skypilot_config.get_nested((
93
83
  'allowed_clouds',), get_all_clouds())
94
- ]
84
+ ])
95
85
  # Use disallowed_cloud_names for logging the clouds that will be disabled
96
86
  # because they are not included in allowed_clouds in config.yaml.
97
87
  disallowed_cloud_names = [
@@ -102,8 +92,30 @@ def check_capabilities(
102
92
  c for c in clouds_to_check if c[0] in config_allowed_cloud_names
103
93
  ]
104
94
 
105
- for cloud_tuple in sorted(clouds_to_check):
106
- check_one_cloud(cloud_tuple)
95
+ combinations = list(itertools.product(clouds_to_check, capabilities))
96
+ with rich_utils.safe_status('Checking Cloud(s)...'):
97
+ check_results = subprocess_utils.run_in_parallel(
98
+ check_one_cloud_one_capability, combinations)
99
+
100
+ check_results_dict: Dict[
101
+ Tuple[str, Union[sky_clouds.Cloud, ModuleType]],
102
+ List[Tuple[sky_cloud.CloudCapability, bool,
103
+ Optional[str]]]] = collections.defaultdict(list)
104
+ for combination, check_result in zip(combinations, check_results):
105
+ if check_result is None:
106
+ continue
107
+ capability, ok, _ = check_result
108
+ cloud_tuple, _ = combination
109
+ cloud_repr = cloud_tuple[0]
110
+ if ok:
111
+ enabled_clouds.setdefault(cloud_repr, []).append(capability)
112
+ else:
113
+ disabled_clouds.setdefault(cloud_repr, []).append(capability)
114
+ check_results_dict[cloud_tuple].append(check_result)
115
+
116
+ for cloud_tuple, check_result_list in sorted(check_results_dict.items(),
117
+ key=lambda item: item[0][0]):
118
+ _print_checked_cloud(echo, verbose, cloud_tuple, check_result_list)
107
119
 
108
120
  # Determine the set of enabled clouds: (previously enabled clouds + newly
109
121
  # enabled clouds - newly disabled clouds) intersected with
@@ -173,7 +185,8 @@ def check_capabilities(
173
185
  if not quiet:
174
186
  enabled_clouds_str = '\n ' + '\n '.join([
175
187
  _format_enabled_cloud(cloud, capabilities)
176
- for cloud, capabilities in enabled_clouds.items()
188
+ for cloud, capabilities in sorted(enabled_clouds.items(),
189
+ key=lambda item: item[0])
177
190
  ])
178
191
  echo(f'\n{colorama.Fore.GREEN}{PARTY_POPPER_EMOJI} '
179
192
  f'Enabled clouds {PARTY_POPPER_EMOJI}'
@@ -17,7 +17,6 @@ _CREDENTIAL_FILES = [
17
17
  # credential files for Nebius
18
18
  nebius.NEBIUS_TENANT_ID_FILENAME,
19
19
  nebius.NEBIUS_IAM_TOKEN_FILENAME,
20
- nebius.NEBIUS_PROJECT_ID_FILENAME,
21
20
  nebius.NEBIUS_CREDENTIALS_FILENAME
22
21
  ]
23
22
 
@@ -1 +1 @@
1
- <!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><title>404: This page could not be found</title><meta name="next-head-count" content="3"/><link rel="preload" href="/dashboard/_next/static/css/c6933bbb2ce7f4dd.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/c6933bbb2ce7f4dd.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-830f59b8404e96b8.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-87d061ee6ed71b28.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-e0e2335212e72357.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-e6b013bc3f77ad60.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_error-1be831200e60c5c0.js" defer=""></script><script src="/dashboard/_next/static/zldaM4b2C9dqzAfQFKH9d/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/zldaM4b2C9dqzAfQFKH9d/_ssgManifest.js" defer=""></script></head><body><div id="__next"><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div style="line-height:48px"><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding-right:23px;font-size:24px;font-weight:500;vertical-align:top">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:28px">This page could not be found<!-- -->.</h2></div></div></div></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{"statusCode":404}},"page":"/_error","query":{},"buildId":"zldaM4b2C9dqzAfQFKH9d","assetPrefix":"/dashboard","nextExport":true,"isFallback":false,"gip":true,"scriptLoader":[]}</script></body></html>
1
+ <!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><title>404: This page could not be found</title><meta name="next-head-count" content="3"/><link rel="preload" href="/dashboard/_next/static/css/c6933bbb2ce7f4dd.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/c6933bbb2ce7f4dd.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-830f59b8404e96b8.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-87d061ee6ed71b28.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-e0e2335212e72357.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-e6b013bc3f77ad60.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_error-1be831200e60c5c0.js" defer=""></script><script src="/dashboard/_next/static/XGMId9CZTvpE82L-EIMuY/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/XGMId9CZTvpE82L-EIMuY/_ssgManifest.js" defer=""></script></head><body><div id="__next"><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div style="line-height:48px"><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding-right:23px;font-size:24px;font-weight:500;vertical-align:top">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:28px">This page could not be found<!-- -->.</h2></div></div></div></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{"statusCode":404}},"page":"/_error","query":{},"buildId":"XGMId9CZTvpE82L-EIMuY","assetPrefix":"/dashboard","nextExport":true,"isFallback":false,"gip":true,"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/c6933bbb2ce7f4dd.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/c6933bbb2ce7f4dd.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-830f59b8404e96b8.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-87d061ee6ed71b28.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-e0e2335212e72357.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-e6b013bc3f77ad60.js" defer=""></script><script src="/dashboard/_next/static/chunks/678-206dddca808e6d16.js" defer=""></script><script src="/dashboard/_next/static/chunks/979-7bf73a4c7cea0f5c.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/clusters/%5Bcluster%5D/%5Bjob%5D-6ac338bc2239cb45.js" defer=""></script><script src="/dashboard/_next/static/zldaM4b2C9dqzAfQFKH9d/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/zldaM4b2C9dqzAfQFKH9d/_ssgManifest.js" defer=""></script></head><body><div id="__next"><div>Loading...</div></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/clusters/[cluster]/[job]","query":{},"buildId":"zldaM4b2C9dqzAfQFKH9d","assetPrefix":"/dashboard","nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html>
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/c6933bbb2ce7f4dd.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/c6933bbb2ce7f4dd.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-830f59b8404e96b8.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-87d061ee6ed71b28.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-e0e2335212e72357.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-e6b013bc3f77ad60.js" defer=""></script><script src="/dashboard/_next/static/chunks/678-206dddca808e6d16.js" defer=""></script><script src="/dashboard/_next/static/chunks/979-7bf73a4c7cea0f5c.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/clusters/%5Bcluster%5D/%5Bjob%5D-6ac338bc2239cb45.js" defer=""></script><script src="/dashboard/_next/static/XGMId9CZTvpE82L-EIMuY/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/XGMId9CZTvpE82L-EIMuY/_ssgManifest.js" defer=""></script></head><body><div id="__next"><div>Loading...</div></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/clusters/[cluster]/[job]","query":{},"buildId":"XGMId9CZTvpE82L-EIMuY","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/c6933bbb2ce7f4dd.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/c6933bbb2ce7f4dd.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-830f59b8404e96b8.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-87d061ee6ed71b28.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-e0e2335212e72357.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-e6b013bc3f77ad60.js" defer=""></script><script src="/dashboard/_next/static/chunks/678-206dddca808e6d16.js" defer=""></script><script src="/dashboard/_next/static/chunks/312-c3c8845990db8ffc.js" defer=""></script><script src="/dashboard/_next/static/chunks/979-7bf73a4c7cea0f5c.js" defer=""></script><script src="/dashboard/_next/static/chunks/845-9e60713e0c441abc.js" defer=""></script><script src="/dashboard/_next/static/chunks/236-2db3ee3fba33dd9e.js" defer=""></script><script src="/dashboard/_next/static/chunks/37-0a572fe0dbb89c4d.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/clusters/%5Bcluster%5D-f383db7389368ea7.js" defer=""></script><script src="/dashboard/_next/static/zldaM4b2C9dqzAfQFKH9d/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/zldaM4b2C9dqzAfQFKH9d/_ssgManifest.js" defer=""></script></head><body><div id="__next"><div>Loading...</div></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/clusters/[cluster]","query":{},"buildId":"zldaM4b2C9dqzAfQFKH9d","assetPrefix":"/dashboard","nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html>
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/c6933bbb2ce7f4dd.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/c6933bbb2ce7f4dd.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-830f59b8404e96b8.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-87d061ee6ed71b28.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-e0e2335212e72357.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-e6b013bc3f77ad60.js" defer=""></script><script src="/dashboard/_next/static/chunks/678-206dddca808e6d16.js" defer=""></script><script src="/dashboard/_next/static/chunks/312-c3c8845990db8ffc.js" defer=""></script><script src="/dashboard/_next/static/chunks/979-7bf73a4c7cea0f5c.js" defer=""></script><script src="/dashboard/_next/static/chunks/845-9e60713e0c441abc.js" defer=""></script><script src="/dashboard/_next/static/chunks/236-2db3ee3fba33dd9e.js" defer=""></script><script src="/dashboard/_next/static/chunks/37-0a572fe0dbb89c4d.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/clusters/%5Bcluster%5D-f383db7389368ea7.js" defer=""></script><script src="/dashboard/_next/static/XGMId9CZTvpE82L-EIMuY/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/XGMId9CZTvpE82L-EIMuY/_ssgManifest.js" defer=""></script></head><body><div id="__next"><div>Loading...</div></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/clusters/[cluster]","query":{},"buildId":"XGMId9CZTvpE82L-EIMuY","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"/><link rel="preload" href="/dashboard/skypilot.svg" as="image" fetchpriority="high"/><meta name="next-head-count" content="3"/><link rel="preload" href="/dashboard/_next/static/css/c6933bbb2ce7f4dd.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/c6933bbb2ce7f4dd.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-830f59b8404e96b8.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-87d061ee6ed71b28.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-e0e2335212e72357.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-e6b013bc3f77ad60.js" defer=""></script><script src="/dashboard/_next/static/chunks/678-206dddca808e6d16.js" defer=""></script><script src="/dashboard/_next/static/chunks/312-c3c8845990db8ffc.js" defer=""></script><script src="/dashboard/_next/static/chunks/979-7bf73a4c7cea0f5c.js" defer=""></script><script src="/dashboard/_next/static/chunks/845-9e60713e0c441abc.js" defer=""></script><script src="/dashboard/_next/static/chunks/37-0a572fe0dbb89c4d.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/clusters-a93b93e10b8b074e.js" defer=""></script><script src="/dashboard/_next/static/zldaM4b2C9dqzAfQFKH9d/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/zldaM4b2C9dqzAfQFKH9d/_ssgManifest.js" defer=""></script></head><body><div id="__next"><div class="min-h-screen bg-gray-50"><div class="fixed top-0 left-0 right-0 z-50 shadow-sm"><div class="fixed top-0 left-0 right-0 bg-white z-30 h-14 px-4 border-b border-gray-200 shadow-sm"><div class="flex items-center h-full"><div class="flex items-center space-x-4 mr-6"><a class="flex items-center px-1 pt-1 h-full" href="/dashboard"><div class="h-20 w-20 flex items-center justify-center"><img alt="SkyPilot Logo" fetchpriority="high" width="80" height="80" decoding="async" data-nimg="1" class="w-full h-full object-contain" style="color:transparent" src="/dashboard/skypilot.svg"/></div></a></div><div class="flex items-center space-x-2 md:space-x-6 mr-6"><a class="inline-flex items-center border-b-2 border-transparent text-blue-600 px-1 pt-1 space-x-2" href="/dashboard/clusters"><svg class="w-4 h-4" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect width="20" height="8" x="2" y="2" rx="2" ry="2"></rect><rect width="20" height="8" x="2" y="14" rx="2" ry="2"></rect><line x1="6" x2="6.01" y1="6" y2="6"></line><line x1="6" x2="6.01" y1="18" y2="18"></line></svg><span>Clusters</span></a><a class="inline-flex items-center border-b-2 border-transparent hover:text-blue-600 px-1 pt-1 space-x-2" href="/dashboard/jobs"><svg class="w-4 h-4" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M16 20V4a2 2 0 0 0-2-2h-4a2 2 0 0 0-2 2v16"></path><rect width="20" height="14" x="2" y="6" rx="2"></rect></svg><span>Jobs</span></a><div class="inline-flex items-center px-1 pt-1 text-gray-400"><svg class="w-4 h-4" viewBox="0 0 423.683 423.683" width="24" height="24" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" fill="currentColor" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><g id="SVGRepo_bgCarrier" stroke-width="0"></g><g id="SVGRepo_tracerCarrier" stroke-linecap="round" stroke-linejoin="round"></g><g id="SVGRepo_iconCarrier"><g><path d="M54.376,287.577h310.459c26.48,0,48.02-13.979,48.02-40.453c0-17.916-10.001-34.07-25.559-42.292 c-19.021-72.951-86.061-125.196-162.002-125.223v-3.431h-3.854V61.814h3.854v-9.569h-31.38v9.569h3.854v14.363h-3.854v3.431 c-75.941,0.026-142.97,52.272-161.988,125.217c-15.56,8.216-25.573,24.376-25.573,42.291 C6.36,273.597,27.896,287.577,54.376,287.577z M47.676,227.145l7.214-2.424l1.617-7.447 c13.884-64.232,71.707-110.862,137.467-110.862h31.274c65.763,0,123.582,46.63,137.473,110.862l1.607,7.447l7.223,2.424 c8.678,2.92,14.506,10.946,14.506,19.979c0,11.703-9.517,13.647-21.221,13.647H54.376c-11.7,0-21.22-1.944-21.22-13.647 C33.162,238.091,38.984,230.065,47.676,227.145z M423.683,334.602v36.836H0v-36.836h25.348v-18.418h372.99v18.418H423.683z"></path></g></g></svg><span class="ml-2">Services</span><span class="text-xs ml-2 px-1.5 py-0.5 bg-gray-100 text-gray-500 rounded">Soon</span></div></div><div class="flex items-center space-x-1 ml-auto"><a href="https://skypilot.readthedocs.io/en/latest/" target="_blank" rel="noopener noreferrer" class="inline-flex items-center px-2 py-1 text-gray-600 hover:text-blue-600 transition-colors duration-150 cursor-pointer" title="Docs"><span class="mr-1">Docs</span><svg class="w-3.5 h-3.5" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"></path><polyline points="15 3 21 3 21 9"></polyline><line x1="10" y1="14" x2="21" y2="3"></line></svg></a><div class="border-l border-gray-200 h-6 mx-1"></div><a href="https://github.com/skypilot-org/skypilot" target="_blank" rel="noopener noreferrer" class="inline-flex items-center justify-center p-2 rounded-full text-gray-600 hover:bg-gray-100 transition-colors duration-150 cursor-pointer" title="GitHub"><svg class="w-5 h-5" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="currentColor"><path d="M12 0c-6.626 0-12 5.373-12 12 0 5.302 3.438 9.8 8.207 11.387.599.111.793-.261.793-.577v-2.234c-3.338.726-4.033-1.416-4.033-1.416-.546-1.387-1.333-1.756-1.333-1.756-1.089-.745.083-.729.083-.729 1.205.084 1.839 1.237 1.839 1.237 1.07 1.834 2.807 1.304 3.492.997.107-.775.418-1.305.762-1.604-2.665-.305-5.467-1.334-5.467-5.931 0-1.311.469-2.381 1.236-3.221-.124-.303-.535-1.524.117-3.176 0 0 1.008-.322 3.301 1.23.957-.266 1.983-.399 3.003-.404 1.02.005 2.047.138 3.006.404 2.291-1.552 3.297-1.23 3.297-1.23.653 1.653.242 2.874.118 3.176.77.84 1.235 1.911 1.235 3.221 0 4.609-2.807 5.624-5.479 5.921.43.372.823 1.102.823 2.222v3.293c0 .319.192.694.801.576 4.765-1.589 8.199-6.086 8.199-11.386 0-6.627-5.373-12-12-12z"></path></svg></a><a href="https://slack.skypilot.co/" target="_blank" rel="noopener noreferrer" class="inline-flex items-center justify-center p-2 rounded-full text-gray-600 hover:bg-gray-100 transition-colors duration-150 cursor-pointer" title="Slack"><svg class="w-5 h-5" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="currentColor"><path transform="scale(0.85) translate(1.8, 1.8)" d="M5.042 15.165a2.528 2.528 0 0 1-2.52 2.523A2.528 2.528 0 0 1 0 15.165a2.527 2.527 0 0 1 2.522-2.52h2.52v2.52zM6.313 15.165a2.527 2.527 0 0 1 2.521-2.52 2.527 2.527 0 0 1 2.521 2.52v6.313A2.528 2.528 0 0 1 8.834 24a2.528 2.528 0 0 1-2.521-2.522v-6.313zM8.834 5.042a2.528 2.528 0 0 1-2.521-2.52A2.528 2.528 0 0 1 8.834 0a2.528 2.528 0 0 1 2.521 2.522v2.52H8.834zM8.834 6.313a2.528 2.528 0 0 1 2.521 2.521 2.528 2.528 0 0 1-2.521 2.521H2.522A2.528 2.528 0 0 1 0 8.834a2.528 2.528 0 0 1 2.522-2.521h6.312zM18.956 8.834a2.528 2.528 0 0 1 2.522-2.521A2.528 2.528 0 0 1 24 8.834a2.528 2.528 0 0 1-2.522 2.521h-2.522V8.834zM17.688 8.834a2.528 2.528 0 0 1-2.523 2.521 2.527 2.527 0 0 1-2.52-2.521V2.522A2.527 2.527 0 0 1 15.165 0a2.528 2.528 0 0 1 2.523 2.522v6.312zM15.165 18.956a2.528 2.528 0 0 1 2.523 2.522A2.528 2.528 0 0 1 15.165 24a2.527 2.527 0 0 1-2.52-2.522v-2.522h2.52zM15.165 17.688a2.527 2.527 0 0 1-2.52-2.523 2.526 2.526 0 0 1 2.52-2.52h6.313A2.527 2.527 0 0 1 24 15.165a2.528 2.528 0 0 1-2.522 2.523h-6.313z"></path></svg></a><a href="https://github.com/skypilot-org/skypilot/issues/new" target="_blank" rel="noopener noreferrer" class="inline-flex items-center justify-center p-2 rounded-full text-gray-600 hover:bg-gray-100 transition-colors duration-150 cursor-pointer" title="Leave Feedback"><svg class="w-5 h-5" stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><g><path fill="none" d="M0 0h24v24H0z"></path><path d="M6.455 19L2 22.5V4a1 1 0 0 1 1-1h18a1 1 0 0 1 1 1v14a1 1 0 0 1-1 1H6.455zM4 18.385L5.763 17H20V5H4v13.385zM11 13h2v2h-2v-2zm0-6h2v5h-2V7z"></path></g></svg></a></div></div></div></div><div class="transition-all duration-200 ease-in-out min-h-screen" style="padding-top:56px"><main class="p-6"><div class="flex items-center justify-between mb-4 h-5"><div class="text-base"><a class="text-sky-blue hover:underline leading-none" href="/dashboard/clusters">Sky Clusters</a></div><div class="flex items-center"><button class="justify-center whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 hover:bg-accent h-10 px-4 py-2 text-sky-blue hover:text-sky-blue-bright flex items-center"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-rotate-cw h-4 w-4 mr-1.5"><path d="M21 12a9 9 0 1 1-9-9c2.52 0 4.93 1 6.74 2.74L21 8"></path><path d="M21 3v5h-5"></path></svg><span>Refresh</span></button></div></div><div><div class="rounded-lg border bg-card text-card-foreground shadow-sm"><div class="relative w-full overflow-auto"><table class="w-full caption-bottom text-base"><thead class="[&amp;_tr]:border-b"><tr class="border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted"><th class="h-12 px-4 text-left align-middle font-medium text-[hsl(var(--text-strong))] [&amp;:has([role=checkbox])]:pr-0 sortable whitespace-nowrap">Status</th><th class="h-12 px-4 text-left align-middle font-medium text-[hsl(var(--text-strong))] [&amp;:has([role=checkbox])]:pr-0 sortable whitespace-nowrap">Cluster</th><th class="h-12 px-4 text-left align-middle font-medium text-[hsl(var(--text-strong))] [&amp;:has([role=checkbox])]:pr-0 sortable whitespace-nowrap">User</th><th class="h-12 px-4 text-left align-middle font-medium text-[hsl(var(--text-strong))] [&amp;:has([role=checkbox])]:pr-0 sortable whitespace-nowrap">Resources</th><th class="h-12 px-4 text-left align-middle font-medium text-[hsl(var(--text-strong))] [&amp;:has([role=checkbox])]:pr-0 sortable whitespace-nowrap">Region</th><th class="h-12 px-4 text-left align-middle font-medium text-[hsl(var(--text-strong))] [&amp;:has([role=checkbox])]:pr-0 sortable whitespace-nowrap">Started</th><th class="h-12 px-4 text-left align-middle font-medium text-[hsl(var(--text-strong))] [&amp;:has([role=checkbox])]:pr-0">Actions</th></tr></thead><tbody class="[&amp;_tr:last-child]:border-0"><tr class="border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted"><td class="p-4 align-middle [&amp;:has([role=checkbox])]:pr-0 text-center py-6 text-gray-500" colSpan="8">No active clusters</td></tr></tbody></table></div></div></div></main></div></div></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/clusters","query":{},"buildId":"zldaM4b2C9dqzAfQFKH9d","assetPrefix":"/dashboard","nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html>
1
+ <!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><link rel="preload" href="/dashboard/skypilot.svg" as="image" fetchpriority="high"/><meta name="next-head-count" content="3"/><link rel="preload" href="/dashboard/_next/static/css/c6933bbb2ce7f4dd.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/c6933bbb2ce7f4dd.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-830f59b8404e96b8.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-87d061ee6ed71b28.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-e0e2335212e72357.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-e6b013bc3f77ad60.js" defer=""></script><script src="/dashboard/_next/static/chunks/678-206dddca808e6d16.js" defer=""></script><script src="/dashboard/_next/static/chunks/312-c3c8845990db8ffc.js" defer=""></script><script src="/dashboard/_next/static/chunks/979-7bf73a4c7cea0f5c.js" defer=""></script><script src="/dashboard/_next/static/chunks/845-9e60713e0c441abc.js" defer=""></script><script src="/dashboard/_next/static/chunks/37-0a572fe0dbb89c4d.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/clusters-a93b93e10b8b074e.js" defer=""></script><script src="/dashboard/_next/static/XGMId9CZTvpE82L-EIMuY/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/XGMId9CZTvpE82L-EIMuY/_ssgManifest.js" defer=""></script></head><body><div id="__next"><div class="min-h-screen bg-gray-50"><div class="fixed top-0 left-0 right-0 z-50 shadow-sm"><div class="fixed top-0 left-0 right-0 bg-white z-30 h-14 px-4 border-b border-gray-200 shadow-sm"><div class="flex items-center h-full"><div class="flex items-center space-x-4 mr-6"><a class="flex items-center px-1 pt-1 h-full" href="/dashboard"><div class="h-20 w-20 flex items-center justify-center"><img alt="SkyPilot Logo" fetchpriority="high" width="80" height="80" decoding="async" data-nimg="1" class="w-full h-full object-contain" style="color:transparent" src="/dashboard/skypilot.svg"/></div></a></div><div class="flex items-center space-x-2 md:space-x-6 mr-6"><a class="inline-flex items-center border-b-2 border-transparent text-blue-600 px-1 pt-1 space-x-2" href="/dashboard/clusters"><svg class="w-4 h-4" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect width="20" height="8" x="2" y="2" rx="2" ry="2"></rect><rect width="20" height="8" x="2" y="14" rx="2" ry="2"></rect><line x1="6" x2="6.01" y1="6" y2="6"></line><line x1="6" x2="6.01" y1="18" y2="18"></line></svg><span>Clusters</span></a><a class="inline-flex items-center border-b-2 border-transparent hover:text-blue-600 px-1 pt-1 space-x-2" href="/dashboard/jobs"><svg class="w-4 h-4" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M16 20V4a2 2 0 0 0-2-2h-4a2 2 0 0 0-2 2v16"></path><rect width="20" height="14" x="2" y="6" rx="2"></rect></svg><span>Jobs</span></a><div class="inline-flex items-center px-1 pt-1 text-gray-400"><svg class="w-4 h-4" viewBox="0 0 423.683 423.683" width="24" height="24" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" fill="currentColor" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><g id="SVGRepo_bgCarrier" stroke-width="0"></g><g id="SVGRepo_tracerCarrier" stroke-linecap="round" stroke-linejoin="round"></g><g id="SVGRepo_iconCarrier"><g><path d="M54.376,287.577h310.459c26.48,0,48.02-13.979,48.02-40.453c0-17.916-10.001-34.07-25.559-42.292 c-19.021-72.951-86.061-125.196-162.002-125.223v-3.431h-3.854V61.814h3.854v-9.569h-31.38v9.569h3.854v14.363h-3.854v3.431 c-75.941,0.026-142.97,52.272-161.988,125.217c-15.56,8.216-25.573,24.376-25.573,42.291 C6.36,273.597,27.896,287.577,54.376,287.577z M47.676,227.145l7.214-2.424l1.617-7.447 c13.884-64.232,71.707-110.862,137.467-110.862h31.274c65.763,0,123.582,46.63,137.473,110.862l1.607,7.447l7.223,2.424 c8.678,2.92,14.506,10.946,14.506,19.979c0,11.703-9.517,13.647-21.221,13.647H54.376c-11.7,0-21.22-1.944-21.22-13.647 C33.162,238.091,38.984,230.065,47.676,227.145z M423.683,334.602v36.836H0v-36.836h25.348v-18.418h372.99v18.418H423.683z"></path></g></g></svg><span class="ml-2">Services</span><span class="text-xs ml-2 px-1.5 py-0.5 bg-gray-100 text-gray-500 rounded">Soon</span></div></div><div class="flex items-center space-x-1 ml-auto"><a href="https://skypilot.readthedocs.io/en/latest/" target="_blank" rel="noopener noreferrer" class="inline-flex items-center px-2 py-1 text-gray-600 hover:text-blue-600 transition-colors duration-150 cursor-pointer" title="Docs"><span class="mr-1">Docs</span><svg class="w-3.5 h-3.5" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"></path><polyline points="15 3 21 3 21 9"></polyline><line x1="10" y1="14" x2="21" y2="3"></line></svg></a><div class="border-l border-gray-200 h-6 mx-1"></div><a href="https://github.com/skypilot-org/skypilot" target="_blank" rel="noopener noreferrer" class="inline-flex items-center justify-center p-2 rounded-full text-gray-600 hover:bg-gray-100 transition-colors duration-150 cursor-pointer" title="GitHub"><svg class="w-5 h-5" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="currentColor"><path d="M12 0c-6.626 0-12 5.373-12 12 0 5.302 3.438 9.8 8.207 11.387.599.111.793-.261.793-.577v-2.234c-3.338.726-4.033-1.416-4.033-1.416-.546-1.387-1.333-1.756-1.333-1.756-1.089-.745.083-.729.083-.729 1.205.084 1.839 1.237 1.839 1.237 1.07 1.834 2.807 1.304 3.492.997.107-.775.418-1.305.762-1.604-2.665-.305-5.467-1.334-5.467-5.931 0-1.311.469-2.381 1.236-3.221-.124-.303-.535-1.524.117-3.176 0 0 1.008-.322 3.301 1.23.957-.266 1.983-.399 3.003-.404 1.02.005 2.047.138 3.006.404 2.291-1.552 3.297-1.23 3.297-1.23.653 1.653.242 2.874.118 3.176.77.84 1.235 1.911 1.235 3.221 0 4.609-2.807 5.624-5.479 5.921.43.372.823 1.102.823 2.222v3.293c0 .319.192.694.801.576 4.765-1.589 8.199-6.086 8.199-11.386 0-6.627-5.373-12-12-12z"></path></svg></a><a href="https://slack.skypilot.co/" target="_blank" rel="noopener noreferrer" class="inline-flex items-center justify-center p-2 rounded-full text-gray-600 hover:bg-gray-100 transition-colors duration-150 cursor-pointer" title="Slack"><svg class="w-5 h-5" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="currentColor"><path transform="scale(0.85) translate(1.8, 1.8)" d="M5.042 15.165a2.528 2.528 0 0 1-2.52 2.523A2.528 2.528 0 0 1 0 15.165a2.527 2.527 0 0 1 2.522-2.52h2.52v2.52zM6.313 15.165a2.527 2.527 0 0 1 2.521-2.52 2.527 2.527 0 0 1 2.521 2.52v6.313A2.528 2.528 0 0 1 8.834 24a2.528 2.528 0 0 1-2.521-2.522v-6.313zM8.834 5.042a2.528 2.528 0 0 1-2.521-2.52A2.528 2.528 0 0 1 8.834 0a2.528 2.528 0 0 1 2.521 2.522v2.52H8.834zM8.834 6.313a2.528 2.528 0 0 1 2.521 2.521 2.528 2.528 0 0 1-2.521 2.521H2.522A2.528 2.528 0 0 1 0 8.834a2.528 2.528 0 0 1 2.522-2.521h6.312zM18.956 8.834a2.528 2.528 0 0 1 2.522-2.521A2.528 2.528 0 0 1 24 8.834a2.528 2.528 0 0 1-2.522 2.521h-2.522V8.834zM17.688 8.834a2.528 2.528 0 0 1-2.523 2.521 2.527 2.527 0 0 1-2.52-2.521V2.522A2.527 2.527 0 0 1 15.165 0a2.528 2.528 0 0 1 2.523 2.522v6.312zM15.165 18.956a2.528 2.528 0 0 1 2.523 2.522A2.528 2.528 0 0 1 15.165 24a2.527 2.527 0 0 1-2.52-2.522v-2.522h2.52zM15.165 17.688a2.527 2.527 0 0 1-2.52-2.523 2.526 2.526 0 0 1 2.52-2.52h6.313A2.527 2.527 0 0 1 24 15.165a2.528 2.528 0 0 1-2.522 2.523h-6.313z"></path></svg></a><a href="https://github.com/skypilot-org/skypilot/issues/new" target="_blank" rel="noopener noreferrer" class="inline-flex items-center justify-center p-2 rounded-full text-gray-600 hover:bg-gray-100 transition-colors duration-150 cursor-pointer" title="Leave Feedback"><svg class="w-5 h-5" stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><g><path fill="none" d="M0 0h24v24H0z"></path><path d="M6.455 19L2 22.5V4a1 1 0 0 1 1-1h18a1 1 0 0 1 1 1v14a1 1 0 0 1-1 1H6.455zM4 18.385L5.763 17H20V5H4v13.385zM11 13h2v2h-2v-2zm0-6h2v5h-2V7z"></path></g></svg></a></div></div></div></div><div class="transition-all duration-200 ease-in-out min-h-screen" style="padding-top:56px"><main class="p-6"><div class="flex items-center justify-between mb-4 h-5"><div class="text-base"><a class="text-sky-blue hover:underline leading-none" href="/dashboard/clusters">Sky Clusters</a></div><div class="flex items-center"><button class="justify-center whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 hover:bg-accent h-10 px-4 py-2 text-sky-blue hover:text-sky-blue-bright flex items-center"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-rotate-cw h-4 w-4 mr-1.5"><path d="M21 12a9 9 0 1 1-9-9c2.52 0 4.93 1 6.74 2.74L21 8"></path><path d="M21 3v5h-5"></path></svg><span>Refresh</span></button></div></div><div><div class="rounded-lg border bg-card text-card-foreground shadow-sm"><div class="relative w-full overflow-auto"><table class="w-full caption-bottom text-base"><thead class="[&amp;_tr]:border-b"><tr class="border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted"><th class="h-12 px-4 text-left align-middle font-medium text-[hsl(var(--text-strong))] [&amp;:has([role=checkbox])]:pr-0 sortable whitespace-nowrap">Status</th><th class="h-12 px-4 text-left align-middle font-medium text-[hsl(var(--text-strong))] [&amp;:has([role=checkbox])]:pr-0 sortable whitespace-nowrap">Cluster</th><th class="h-12 px-4 text-left align-middle font-medium text-[hsl(var(--text-strong))] [&amp;:has([role=checkbox])]:pr-0 sortable whitespace-nowrap">User</th><th class="h-12 px-4 text-left align-middle font-medium text-[hsl(var(--text-strong))] [&amp;:has([role=checkbox])]:pr-0 sortable whitespace-nowrap">Resources</th><th class="h-12 px-4 text-left align-middle font-medium text-[hsl(var(--text-strong))] [&amp;:has([role=checkbox])]:pr-0 sortable whitespace-nowrap">Region</th><th class="h-12 px-4 text-left align-middle font-medium text-[hsl(var(--text-strong))] [&amp;:has([role=checkbox])]:pr-0 sortable whitespace-nowrap">Started</th><th class="h-12 px-4 text-left align-middle font-medium text-[hsl(var(--text-strong))] [&amp;:has([role=checkbox])]:pr-0">Actions</th></tr></thead><tbody class="[&amp;_tr:last-child]:border-0"><tr class="border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted"><td class="p-4 align-middle [&amp;:has([role=checkbox])]:pr-0 text-center py-6 text-gray-500" colSpan="8">No active clusters</td></tr></tbody></table></div></div></div></main></div></div></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/clusters","query":{},"buildId":"XGMId9CZTvpE82L-EIMuY","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/c6933bbb2ce7f4dd.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/c6933bbb2ce7f4dd.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-830f59b8404e96b8.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-87d061ee6ed71b28.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-e0e2335212e72357.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-e6b013bc3f77ad60.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/index-f9f039532ca8cbc4.js" defer=""></script><script src="/dashboard/_next/static/zldaM4b2C9dqzAfQFKH9d/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/zldaM4b2C9dqzAfQFKH9d/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/","query":{},"buildId":"zldaM4b2C9dqzAfQFKH9d","assetPrefix":"/dashboard","nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html>
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/c6933bbb2ce7f4dd.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/c6933bbb2ce7f4dd.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-830f59b8404e96b8.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-87d061ee6ed71b28.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-e0e2335212e72357.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-e6b013bc3f77ad60.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/index-f9f039532ca8cbc4.js" defer=""></script><script src="/dashboard/_next/static/XGMId9CZTvpE82L-EIMuY/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/XGMId9CZTvpE82L-EIMuY/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/","query":{},"buildId":"XGMId9CZTvpE82L-EIMuY","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/c6933bbb2ce7f4dd.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/c6933bbb2ce7f4dd.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-830f59b8404e96b8.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-87d061ee6ed71b28.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-e0e2335212e72357.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-e6b013bc3f77ad60.js" defer=""></script><script src="/dashboard/_next/static/chunks/678-206dddca808e6d16.js" defer=""></script><script src="/dashboard/_next/static/chunks/979-7bf73a4c7cea0f5c.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/jobs/%5Bjob%5D-1c519e1afc523dc9.js" defer=""></script><script src="/dashboard/_next/static/zldaM4b2C9dqzAfQFKH9d/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/zldaM4b2C9dqzAfQFKH9d/_ssgManifest.js" defer=""></script></head><body><div id="__next"><div>Loading...</div></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/jobs/[job]","query":{},"buildId":"zldaM4b2C9dqzAfQFKH9d","assetPrefix":"/dashboard","nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html>
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/c6933bbb2ce7f4dd.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/c6933bbb2ce7f4dd.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-830f59b8404e96b8.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-87d061ee6ed71b28.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-e0e2335212e72357.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-e6b013bc3f77ad60.js" defer=""></script><script src="/dashboard/_next/static/chunks/678-206dddca808e6d16.js" defer=""></script><script src="/dashboard/_next/static/chunks/979-7bf73a4c7cea0f5c.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/jobs/%5Bjob%5D-1c519e1afc523dc9.js" defer=""></script><script src="/dashboard/_next/static/XGMId9CZTvpE82L-EIMuY/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/XGMId9CZTvpE82L-EIMuY/_ssgManifest.js" defer=""></script></head><body><div id="__next"><div>Loading...</div></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/jobs/[job]","query":{},"buildId":"XGMId9CZTvpE82L-EIMuY","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"/><link rel="preload" href="/dashboard/skypilot.svg" as="image" fetchpriority="high"/><meta name="next-head-count" content="3"/><link rel="preload" href="/dashboard/_next/static/css/c6933bbb2ce7f4dd.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/c6933bbb2ce7f4dd.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-830f59b8404e96b8.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-87d061ee6ed71b28.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-e0e2335212e72357.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-e6b013bc3f77ad60.js" defer=""></script><script src="/dashboard/_next/static/chunks/678-206dddca808e6d16.js" defer=""></script><script src="/dashboard/_next/static/chunks/312-c3c8845990db8ffc.js" defer=""></script><script src="/dashboard/_next/static/chunks/979-7bf73a4c7cea0f5c.js" defer=""></script><script src="/dashboard/_next/static/chunks/845-9e60713e0c441abc.js" defer=""></script><script src="/dashboard/_next/static/chunks/236-2db3ee3fba33dd9e.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/jobs-a75029b67aab6a2e.js" defer=""></script><script src="/dashboard/_next/static/zldaM4b2C9dqzAfQFKH9d/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/zldaM4b2C9dqzAfQFKH9d/_ssgManifest.js" defer=""></script></head><body><div id="__next"><div class="min-h-screen bg-gray-50"><div class="fixed top-0 left-0 right-0 z-50 shadow-sm"><div class="fixed top-0 left-0 right-0 bg-white z-30 h-14 px-4 border-b border-gray-200 shadow-sm"><div class="flex items-center h-full"><div class="flex items-center space-x-4 mr-6"><a class="flex items-center px-1 pt-1 h-full" href="/dashboard"><div class="h-20 w-20 flex items-center justify-center"><img alt="SkyPilot Logo" fetchpriority="high" width="80" height="80" decoding="async" data-nimg="1" class="w-full h-full object-contain" style="color:transparent" src="/dashboard/skypilot.svg"/></div></a></div><div class="flex items-center space-x-2 md:space-x-6 mr-6"><a class="inline-flex items-center border-b-2 border-transparent hover:text-blue-600 px-1 pt-1 space-x-2" href="/dashboard/clusters"><svg class="w-4 h-4" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect width="20" height="8" x="2" y="2" rx="2" ry="2"></rect><rect width="20" height="8" x="2" y="14" rx="2" ry="2"></rect><line x1="6" x2="6.01" y1="6" y2="6"></line><line x1="6" x2="6.01" y1="18" y2="18"></line></svg><span>Clusters</span></a><a class="inline-flex items-center border-b-2 border-transparent text-blue-600 px-1 pt-1 space-x-2" href="/dashboard/jobs"><svg class="w-4 h-4" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M16 20V4a2 2 0 0 0-2-2h-4a2 2 0 0 0-2 2v16"></path><rect width="20" height="14" x="2" y="6" rx="2"></rect></svg><span>Jobs</span></a><div class="inline-flex items-center px-1 pt-1 text-gray-400"><svg class="w-4 h-4" viewBox="0 0 423.683 423.683" width="24" height="24" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" fill="currentColor" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><g id="SVGRepo_bgCarrier" stroke-width="0"></g><g id="SVGRepo_tracerCarrier" stroke-linecap="round" stroke-linejoin="round"></g><g id="SVGRepo_iconCarrier"><g><path d="M54.376,287.577h310.459c26.48,0,48.02-13.979,48.02-40.453c0-17.916-10.001-34.07-25.559-42.292 c-19.021-72.951-86.061-125.196-162.002-125.223v-3.431h-3.854V61.814h3.854v-9.569h-31.38v9.569h3.854v14.363h-3.854v3.431 c-75.941,0.026-142.97,52.272-161.988,125.217c-15.56,8.216-25.573,24.376-25.573,42.291 C6.36,273.597,27.896,287.577,54.376,287.577z M47.676,227.145l7.214-2.424l1.617-7.447 c13.884-64.232,71.707-110.862,137.467-110.862h31.274c65.763,0,123.582,46.63,137.473,110.862l1.607,7.447l7.223,2.424 c8.678,2.92,14.506,10.946,14.506,19.979c0,11.703-9.517,13.647-21.221,13.647H54.376c-11.7,0-21.22-1.944-21.22-13.647 C33.162,238.091,38.984,230.065,47.676,227.145z M423.683,334.602v36.836H0v-36.836h25.348v-18.418h372.99v18.418H423.683z"></path></g></g></svg><span class="ml-2">Services</span><span class="text-xs ml-2 px-1.5 py-0.5 bg-gray-100 text-gray-500 rounded">Soon</span></div></div><div class="flex items-center space-x-1 ml-auto"><a href="https://skypilot.readthedocs.io/en/latest/" target="_blank" rel="noopener noreferrer" class="inline-flex items-center px-2 py-1 text-gray-600 hover:text-blue-600 transition-colors duration-150 cursor-pointer" title="Docs"><span class="mr-1">Docs</span><svg class="w-3.5 h-3.5" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"></path><polyline points="15 3 21 3 21 9"></polyline><line x1="10" y1="14" x2="21" y2="3"></line></svg></a><div class="border-l border-gray-200 h-6 mx-1"></div><a href="https://github.com/skypilot-org/skypilot" target="_blank" rel="noopener noreferrer" class="inline-flex items-center justify-center p-2 rounded-full text-gray-600 hover:bg-gray-100 transition-colors duration-150 cursor-pointer" title="GitHub"><svg class="w-5 h-5" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="currentColor"><path d="M12 0c-6.626 0-12 5.373-12 12 0 5.302 3.438 9.8 8.207 11.387.599.111.793-.261.793-.577v-2.234c-3.338.726-4.033-1.416-4.033-1.416-.546-1.387-1.333-1.756-1.333-1.756-1.089-.745.083-.729.083-.729 1.205.084 1.839 1.237 1.839 1.237 1.07 1.834 2.807 1.304 3.492.997.107-.775.418-1.305.762-1.604-2.665-.305-5.467-1.334-5.467-5.931 0-1.311.469-2.381 1.236-3.221-.124-.303-.535-1.524.117-3.176 0 0 1.008-.322 3.301 1.23.957-.266 1.983-.399 3.003-.404 1.02.005 2.047.138 3.006.404 2.291-1.552 3.297-1.23 3.297-1.23.653 1.653.242 2.874.118 3.176.77.84 1.235 1.911 1.235 3.221 0 4.609-2.807 5.624-5.479 5.921.43.372.823 1.102.823 2.222v3.293c0 .319.192.694.801.576 4.765-1.589 8.199-6.086 8.199-11.386 0-6.627-5.373-12-12-12z"></path></svg></a><a href="https://slack.skypilot.co/" target="_blank" rel="noopener noreferrer" class="inline-flex items-center justify-center p-2 rounded-full text-gray-600 hover:bg-gray-100 transition-colors duration-150 cursor-pointer" title="Slack"><svg class="w-5 h-5" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="currentColor"><path transform="scale(0.85) translate(1.8, 1.8)" d="M5.042 15.165a2.528 2.528 0 0 1-2.52 2.523A2.528 2.528 0 0 1 0 15.165a2.527 2.527 0 0 1 2.522-2.52h2.52v2.52zM6.313 15.165a2.527 2.527 0 0 1 2.521-2.52 2.527 2.527 0 0 1 2.521 2.52v6.313A2.528 2.528 0 0 1 8.834 24a2.528 2.528 0 0 1-2.521-2.522v-6.313zM8.834 5.042a2.528 2.528 0 0 1-2.521-2.52A2.528 2.528 0 0 1 8.834 0a2.528 2.528 0 0 1 2.521 2.522v2.52H8.834zM8.834 6.313a2.528 2.528 0 0 1 2.521 2.521 2.528 2.528 0 0 1-2.521 2.521H2.522A2.528 2.528 0 0 1 0 8.834a2.528 2.528 0 0 1 2.522-2.521h6.312zM18.956 8.834a2.528 2.528 0 0 1 2.522-2.521A2.528 2.528 0 0 1 24 8.834a2.528 2.528 0 0 1-2.522 2.521h-2.522V8.834zM17.688 8.834a2.528 2.528 0 0 1-2.523 2.521 2.527 2.527 0 0 1-2.52-2.521V2.522A2.527 2.527 0 0 1 15.165 0a2.528 2.528 0 0 1 2.523 2.522v6.312zM15.165 18.956a2.528 2.528 0 0 1 2.523 2.522A2.528 2.528 0 0 1 15.165 24a2.527 2.527 0 0 1-2.52-2.522v-2.522h2.52zM15.165 17.688a2.527 2.527 0 0 1-2.52-2.523 2.526 2.526 0 0 1 2.52-2.52h6.313A2.527 2.527 0 0 1 24 15.165a2.528 2.528 0 0 1-2.522 2.523h-6.313z"></path></svg></a><a href="https://github.com/skypilot-org/skypilot/issues/new" target="_blank" rel="noopener noreferrer" class="inline-flex items-center justify-center p-2 rounded-full text-gray-600 hover:bg-gray-100 transition-colors duration-150 cursor-pointer" title="Leave Feedback"><svg class="w-5 h-5" stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><g><path fill="none" d="M0 0h24v24H0z"></path><path d="M6.455 19L2 22.5V4a1 1 0 0 1 1-1h18a1 1 0 0 1 1 1v14a1 1 0 0 1-1 1H6.455zM4 18.385L5.763 17H20V5H4v13.385zM11 13h2v2h-2v-2zm0-6h2v5h-2V7z"></path></g></svg></a></div></div></div></div><div class="transition-all duration-200 ease-in-out min-h-screen" style="padding-top:56px"><main class="p-6"><div class="flex items-center justify-between mb-4 h-5"><div class="text-base"><a class="text-sky-blue hover:underline leading-none" href="/dashboard/jobs">Managed Jobs</a></div><div class="flex items-center space-x-2"><button class="inline-flex items-center justify-center whitespace-nowrap text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 hover:bg-accent h-9 rounded-md px-3 text-sky-blue hover:text-sky-blue-bright" title="Refresh"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-rotate-cw h-4 w-4 mr-1.5"><path d="M21 12a9 9 0 1 1-9-9c2.52 0 4.93 1 6.74 2.74L21 8"></path><path d="M21 3v5h-5"></path></svg><span>Refresh</span></button></div></div><div class="relative"><div class="flex flex-col space-y-1 mb-1"><div class="flex flex-wrap items-center text-sm mb-1"><span class="mr-2 text-sm font-medium">Statuses:</span><div class="flex flex-wrap gap-2 items-center"></div></div></div><div class="rounded-lg border bg-card text-card-foreground shadow-sm"><div class="relative w-full overflow-auto"><table class="w-full caption-bottom text-base"><thead class="[&amp;_tr]:border-b"><tr class="border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted"><th class="h-12 px-4 text-left align-middle font-medium text-[hsl(var(--text-strong))] [&amp;:has([role=checkbox])]:pr-0 sortable whitespace-nowrap">ID</th><th class="h-12 px-4 text-left align-middle font-medium text-[hsl(var(--text-strong))] [&amp;:has([role=checkbox])]:pr-0 sortable whitespace-nowrap">Name</th><th class="h-12 px-4 text-left align-middle font-medium text-[hsl(var(--text-strong))] [&amp;:has([role=checkbox])]:pr-0 sortable whitespace-nowrap">User</th><th class="h-12 px-4 text-left align-middle font-medium text-[hsl(var(--text-strong))] [&amp;:has([role=checkbox])]:pr-0 sortable whitespace-nowrap">Submitted</th><th class="h-12 px-4 text-left align-middle font-medium text-[hsl(var(--text-strong))] [&amp;:has([role=checkbox])]:pr-0 sortable whitespace-nowrap">Duration</th><th class="h-12 px-4 text-left align-middle font-medium text-[hsl(var(--text-strong))] [&amp;:has([role=checkbox])]:pr-0 sortable whitespace-nowrap">Status</th><th class="h-12 px-4 text-left align-middle font-medium text-[hsl(var(--text-strong))] [&amp;:has([role=checkbox])]:pr-0 sortable whitespace-nowrap">Resources</th><th class="h-12 px-4 text-left align-middle font-medium text-[hsl(var(--text-strong))] [&amp;:has([role=checkbox])]:pr-0 sortable whitespace-nowrap">Cluster</th><th class="h-12 px-4 text-left align-middle font-medium text-[hsl(var(--text-strong))] [&amp;:has([role=checkbox])]:pr-0 sortable whitespace-nowrap">Region</th><th class="h-12 px-4 text-left align-middle font-medium text-[hsl(var(--text-strong))] [&amp;:has([role=checkbox])]:pr-0 sortable whitespace-nowrap">Recoveries</th><th class="h-12 px-4 text-left align-middle font-medium text-[hsl(var(--text-strong))] [&amp;:has([role=checkbox])]:pr-0">Details</th><th class="h-12 px-4 text-left align-middle font-medium text-[hsl(var(--text-strong))] [&amp;:has([role=checkbox])]:pr-0">Logs</th></tr></thead><tbody class="[&amp;_tr:last-child]:border-0"><tr class="border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted"><td class="p-4 align-middle [&amp;:has([role=checkbox])]:pr-0 text-center py-6" colSpan="12"><div class="flex flex-col items-center space-y-4"><p class="text-gray-500">No active jobs</p></div></td></tr></tbody></table></div></div></div></main></div></div></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/jobs","query":{},"buildId":"zldaM4b2C9dqzAfQFKH9d","assetPrefix":"/dashboard","nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html>
1
+ <!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><link rel="preload" href="/dashboard/skypilot.svg" as="image" fetchpriority="high"/><meta name="next-head-count" content="3"/><link rel="preload" href="/dashboard/_next/static/css/c6933bbb2ce7f4dd.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/c6933bbb2ce7f4dd.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-830f59b8404e96b8.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-87d061ee6ed71b28.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-e0e2335212e72357.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-e6b013bc3f77ad60.js" defer=""></script><script src="/dashboard/_next/static/chunks/678-206dddca808e6d16.js" defer=""></script><script src="/dashboard/_next/static/chunks/312-c3c8845990db8ffc.js" defer=""></script><script src="/dashboard/_next/static/chunks/979-7bf73a4c7cea0f5c.js" defer=""></script><script src="/dashboard/_next/static/chunks/845-9e60713e0c441abc.js" defer=""></script><script src="/dashboard/_next/static/chunks/236-2db3ee3fba33dd9e.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/jobs-a75029b67aab6a2e.js" defer=""></script><script src="/dashboard/_next/static/XGMId9CZTvpE82L-EIMuY/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/XGMId9CZTvpE82L-EIMuY/_ssgManifest.js" defer=""></script></head><body><div id="__next"><div class="min-h-screen bg-gray-50"><div class="fixed top-0 left-0 right-0 z-50 shadow-sm"><div class="fixed top-0 left-0 right-0 bg-white z-30 h-14 px-4 border-b border-gray-200 shadow-sm"><div class="flex items-center h-full"><div class="flex items-center space-x-4 mr-6"><a class="flex items-center px-1 pt-1 h-full" href="/dashboard"><div class="h-20 w-20 flex items-center justify-center"><img alt="SkyPilot Logo" fetchpriority="high" width="80" height="80" decoding="async" data-nimg="1" class="w-full h-full object-contain" style="color:transparent" src="/dashboard/skypilot.svg"/></div></a></div><div class="flex items-center space-x-2 md:space-x-6 mr-6"><a class="inline-flex items-center border-b-2 border-transparent hover:text-blue-600 px-1 pt-1 space-x-2" href="/dashboard/clusters"><svg class="w-4 h-4" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect width="20" height="8" x="2" y="2" rx="2" ry="2"></rect><rect width="20" height="8" x="2" y="14" rx="2" ry="2"></rect><line x1="6" x2="6.01" y1="6" y2="6"></line><line x1="6" x2="6.01" y1="18" y2="18"></line></svg><span>Clusters</span></a><a class="inline-flex items-center border-b-2 border-transparent text-blue-600 px-1 pt-1 space-x-2" href="/dashboard/jobs"><svg class="w-4 h-4" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M16 20V4a2 2 0 0 0-2-2h-4a2 2 0 0 0-2 2v16"></path><rect width="20" height="14" x="2" y="6" rx="2"></rect></svg><span>Jobs</span></a><div class="inline-flex items-center px-1 pt-1 text-gray-400"><svg class="w-4 h-4" viewBox="0 0 423.683 423.683" width="24" height="24" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" fill="currentColor" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><g id="SVGRepo_bgCarrier" stroke-width="0"></g><g id="SVGRepo_tracerCarrier" stroke-linecap="round" stroke-linejoin="round"></g><g id="SVGRepo_iconCarrier"><g><path d="M54.376,287.577h310.459c26.48,0,48.02-13.979,48.02-40.453c0-17.916-10.001-34.07-25.559-42.292 c-19.021-72.951-86.061-125.196-162.002-125.223v-3.431h-3.854V61.814h3.854v-9.569h-31.38v9.569h3.854v14.363h-3.854v3.431 c-75.941,0.026-142.97,52.272-161.988,125.217c-15.56,8.216-25.573,24.376-25.573,42.291 C6.36,273.597,27.896,287.577,54.376,287.577z M47.676,227.145l7.214-2.424l1.617-7.447 c13.884-64.232,71.707-110.862,137.467-110.862h31.274c65.763,0,123.582,46.63,137.473,110.862l1.607,7.447l7.223,2.424 c8.678,2.92,14.506,10.946,14.506,19.979c0,11.703-9.517,13.647-21.221,13.647H54.376c-11.7,0-21.22-1.944-21.22-13.647 C33.162,238.091,38.984,230.065,47.676,227.145z M423.683,334.602v36.836H0v-36.836h25.348v-18.418h372.99v18.418H423.683z"></path></g></g></svg><span class="ml-2">Services</span><span class="text-xs ml-2 px-1.5 py-0.5 bg-gray-100 text-gray-500 rounded">Soon</span></div></div><div class="flex items-center space-x-1 ml-auto"><a href="https://skypilot.readthedocs.io/en/latest/" target="_blank" rel="noopener noreferrer" class="inline-flex items-center px-2 py-1 text-gray-600 hover:text-blue-600 transition-colors duration-150 cursor-pointer" title="Docs"><span class="mr-1">Docs</span><svg class="w-3.5 h-3.5" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"></path><polyline points="15 3 21 3 21 9"></polyline><line x1="10" y1="14" x2="21" y2="3"></line></svg></a><div class="border-l border-gray-200 h-6 mx-1"></div><a href="https://github.com/skypilot-org/skypilot" target="_blank" rel="noopener noreferrer" class="inline-flex items-center justify-center p-2 rounded-full text-gray-600 hover:bg-gray-100 transition-colors duration-150 cursor-pointer" title="GitHub"><svg class="w-5 h-5" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="currentColor"><path d="M12 0c-6.626 0-12 5.373-12 12 0 5.302 3.438 9.8 8.207 11.387.599.111.793-.261.793-.577v-2.234c-3.338.726-4.033-1.416-4.033-1.416-.546-1.387-1.333-1.756-1.333-1.756-1.089-.745.083-.729.083-.729 1.205.084 1.839 1.237 1.839 1.237 1.07 1.834 2.807 1.304 3.492.997.107-.775.418-1.305.762-1.604-2.665-.305-5.467-1.334-5.467-5.931 0-1.311.469-2.381 1.236-3.221-.124-.303-.535-1.524.117-3.176 0 0 1.008-.322 3.301 1.23.957-.266 1.983-.399 3.003-.404 1.02.005 2.047.138 3.006.404 2.291-1.552 3.297-1.23 3.297-1.23.653 1.653.242 2.874.118 3.176.77.84 1.235 1.911 1.235 3.221 0 4.609-2.807 5.624-5.479 5.921.43.372.823 1.102.823 2.222v3.293c0 .319.192.694.801.576 4.765-1.589 8.199-6.086 8.199-11.386 0-6.627-5.373-12-12-12z"></path></svg></a><a href="https://slack.skypilot.co/" target="_blank" rel="noopener noreferrer" class="inline-flex items-center justify-center p-2 rounded-full text-gray-600 hover:bg-gray-100 transition-colors duration-150 cursor-pointer" title="Slack"><svg class="w-5 h-5" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="currentColor"><path transform="scale(0.85) translate(1.8, 1.8)" d="M5.042 15.165a2.528 2.528 0 0 1-2.52 2.523A2.528 2.528 0 0 1 0 15.165a2.527 2.527 0 0 1 2.522-2.52h2.52v2.52zM6.313 15.165a2.527 2.527 0 0 1 2.521-2.52 2.527 2.527 0 0 1 2.521 2.52v6.313A2.528 2.528 0 0 1 8.834 24a2.528 2.528 0 0 1-2.521-2.522v-6.313zM8.834 5.042a2.528 2.528 0 0 1-2.521-2.52A2.528 2.528 0 0 1 8.834 0a2.528 2.528 0 0 1 2.521 2.522v2.52H8.834zM8.834 6.313a2.528 2.528 0 0 1 2.521 2.521 2.528 2.528 0 0 1-2.521 2.521H2.522A2.528 2.528 0 0 1 0 8.834a2.528 2.528 0 0 1 2.522-2.521h6.312zM18.956 8.834a2.528 2.528 0 0 1 2.522-2.521A2.528 2.528 0 0 1 24 8.834a2.528 2.528 0 0 1-2.522 2.521h-2.522V8.834zM17.688 8.834a2.528 2.528 0 0 1-2.523 2.521 2.527 2.527 0 0 1-2.52-2.521V2.522A2.527 2.527 0 0 1 15.165 0a2.528 2.528 0 0 1 2.523 2.522v6.312zM15.165 18.956a2.528 2.528 0 0 1 2.523 2.522A2.528 2.528 0 0 1 15.165 24a2.527 2.527 0 0 1-2.52-2.522v-2.522h2.52zM15.165 17.688a2.527 2.527 0 0 1-2.52-2.523 2.526 2.526 0 0 1 2.52-2.52h6.313A2.527 2.527 0 0 1 24 15.165a2.528 2.528 0 0 1-2.522 2.523h-6.313z"></path></svg></a><a href="https://github.com/skypilot-org/skypilot/issues/new" target="_blank" rel="noopener noreferrer" class="inline-flex items-center justify-center p-2 rounded-full text-gray-600 hover:bg-gray-100 transition-colors duration-150 cursor-pointer" title="Leave Feedback"><svg class="w-5 h-5" stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><g><path fill="none" d="M0 0h24v24H0z"></path><path d="M6.455 19L2 22.5V4a1 1 0 0 1 1-1h18a1 1 0 0 1 1 1v14a1 1 0 0 1-1 1H6.455zM4 18.385L5.763 17H20V5H4v13.385zM11 13h2v2h-2v-2zm0-6h2v5h-2V7z"></path></g></svg></a></div></div></div></div><div class="transition-all duration-200 ease-in-out min-h-screen" style="padding-top:56px"><main class="p-6"><div class="flex items-center justify-between mb-4 h-5"><div class="text-base"><a class="text-sky-blue hover:underline leading-none" href="/dashboard/jobs">Managed Jobs</a></div><div class="flex items-center space-x-2"><button class="inline-flex items-center justify-center whitespace-nowrap text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 hover:bg-accent h-9 rounded-md px-3 text-sky-blue hover:text-sky-blue-bright" title="Refresh"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-rotate-cw h-4 w-4 mr-1.5"><path d="M21 12a9 9 0 1 1-9-9c2.52 0 4.93 1 6.74 2.74L21 8"></path><path d="M21 3v5h-5"></path></svg><span>Refresh</span></button></div></div><div class="relative"><div class="flex flex-col space-y-1 mb-1"><div class="flex flex-wrap items-center text-sm mb-1"><span class="mr-2 text-sm font-medium">Statuses:</span><div class="flex flex-wrap gap-2 items-center"></div></div></div><div class="rounded-lg border bg-card text-card-foreground shadow-sm"><div class="relative w-full overflow-auto"><table class="w-full caption-bottom text-base"><thead class="[&amp;_tr]:border-b"><tr class="border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted"><th class="h-12 px-4 text-left align-middle font-medium text-[hsl(var(--text-strong))] [&amp;:has([role=checkbox])]:pr-0 sortable whitespace-nowrap">ID</th><th class="h-12 px-4 text-left align-middle font-medium text-[hsl(var(--text-strong))] [&amp;:has([role=checkbox])]:pr-0 sortable whitespace-nowrap">Name</th><th class="h-12 px-4 text-left align-middle font-medium text-[hsl(var(--text-strong))] [&amp;:has([role=checkbox])]:pr-0 sortable whitespace-nowrap">User</th><th class="h-12 px-4 text-left align-middle font-medium text-[hsl(var(--text-strong))] [&amp;:has([role=checkbox])]:pr-0 sortable whitespace-nowrap">Submitted</th><th class="h-12 px-4 text-left align-middle font-medium text-[hsl(var(--text-strong))] [&amp;:has([role=checkbox])]:pr-0 sortable whitespace-nowrap">Duration</th><th class="h-12 px-4 text-left align-middle font-medium text-[hsl(var(--text-strong))] [&amp;:has([role=checkbox])]:pr-0 sortable whitespace-nowrap">Status</th><th class="h-12 px-4 text-left align-middle font-medium text-[hsl(var(--text-strong))] [&amp;:has([role=checkbox])]:pr-0 sortable whitespace-nowrap">Resources</th><th class="h-12 px-4 text-left align-middle font-medium text-[hsl(var(--text-strong))] [&amp;:has([role=checkbox])]:pr-0 sortable whitespace-nowrap">Cluster</th><th class="h-12 px-4 text-left align-middle font-medium text-[hsl(var(--text-strong))] [&amp;:has([role=checkbox])]:pr-0 sortable whitespace-nowrap">Region</th><th class="h-12 px-4 text-left align-middle font-medium text-[hsl(var(--text-strong))] [&amp;:has([role=checkbox])]:pr-0 sortable whitespace-nowrap">Recoveries</th><th class="h-12 px-4 text-left align-middle font-medium text-[hsl(var(--text-strong))] [&amp;:has([role=checkbox])]:pr-0">Details</th><th class="h-12 px-4 text-left align-middle font-medium text-[hsl(var(--text-strong))] [&amp;:has([role=checkbox])]:pr-0">Logs</th></tr></thead><tbody class="[&amp;_tr:last-child]:border-0"><tr class="border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted"><td class="p-4 align-middle [&amp;:has([role=checkbox])]:pr-0 text-center py-6" colSpan="12"><div class="flex flex-col items-center space-y-4"><p class="text-gray-500">No active jobs</p></div></td></tr></tbody></table></div></div></div></main></div></div></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/jobs","query":{},"buildId":"XGMId9CZTvpE82L-EIMuY","assetPrefix":"/dashboard","nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html>
@@ -980,8 +980,12 @@ def check_instance_fits(context: Optional[str],
980
980
  if node_cpus > max_cpu:
981
981
  max_cpu = node_cpus
982
982
  max_mem = node_memory_gb
983
- if (node_cpus >= candidate_instance_type.cpus and
984
- node_memory_gb >= candidate_instance_type.memory):
983
+ # We don't consider nodes that have exactly the same amount of
984
+ # CPU or memory as the candidate instance type.
985
+ # This is to account for the fact that each node always has some
986
+ # amount kube-system pods running on it and consuming resources.
987
+ if (node_cpus > candidate_instance_type.cpus and
988
+ node_memory_gb > candidate_instance_type.memory):
985
989
  return True, None
986
990
  return False, (
987
991
  'Maximum resources found on a single node: '
@@ -4,6 +4,7 @@ from typing import Any, Dict
4
4
  import uuid
5
5
 
6
6
  from sky import sky_logging
7
+ from sky import skypilot_config
7
8
  from sky.adaptors import nebius
8
9
  from sky.utils import common_utils
9
10
 
@@ -35,44 +36,22 @@ def get_project_by_region(region: str) -> str:
35
36
  service = nebius.iam().ProjectServiceClient(nebius.sdk())
36
37
  projects = service.list(nebius.iam().ListProjectsRequest(
37
38
  parent_id=nebius.get_tenant_id())).wait()
38
- # To find a project in a specific region, we rely on the project ID to
39
- # deduce the region, since there is currently no method to retrieve region
40
- # information directly from the project. Additionally, there is only one
41
- # project per region, and projects cannot be created at this time.
42
- # The region is determined from the project ID using a region-specific
43
- # identifier embedded in it.
44
- # Project id looks like project-e00xxxxxxxxxxxxxx where
45
- # e00 - id of region 'eu-north1'
46
- # e01 - id of region 'eu-west1'
47
- region_ids = {'eu-north1': 'e00', 'eu-west1': 'e01'}
48
- # TODO(SalikovAlex): fix when info about region will be in projects list
49
- # Currently, Nebius cloud supports 2 regions. We manually enumerate
50
- # them here. Reference: https://docs.nebius.com/overview/regions
51
39
 
52
40
  # Check is there project if in config
53
- preferable_project_id = nebius.get_project_id()
54
- if preferable_project_id is not None:
55
- if preferable_project_id[8:11] == region_ids[region]:
56
- return preferable_project_id
57
- logger.warning(
58
- f'Can\'t use customized NEBIUS_PROJECT_ID ({preferable_project_id})'
59
- f' for region {region}. Please check if the project ID is correct.')
41
+ project_id = skypilot_config.get_nested(('nebius', region, 'project_id'),
42
+ None)
43
+ if project_id is not None:
44
+ return project_id
60
45
  for project in projects.items:
61
- if project.metadata.id[8:11] == region_ids[region]:
46
+ if project.status.region == region:
62
47
  return project.metadata.id
63
48
  raise Exception(f'No project found for region "{region}".')
64
49
 
65
50
 
66
- def get_or_create_gpu_cluster(name: str, region: str) -> str:
51
+ def get_or_create_gpu_cluster(name: str, project_id: str, fabric: str) -> str:
67
52
  """Creates a GPU cluster.
68
- When creating a GPU cluster, select an InfiniBand fabric for it:
69
-
70
- fabric-2, fabric-3 or fabric-4 for projects in the eu-north1 region.
71
- fabric-5 for projects in the eu-west1 region.
72
-
73
53
  https://docs.nebius.com/compute/clusters/gpu
74
54
  """
75
- project_id = get_project_by_region(region)
76
55
  service = nebius.compute().GpuClusterServiceClient(nebius.sdk())
77
56
  try:
78
57
  cluster = service.get_by_name(nebius.nebius_common().GetByNameRequest(
@@ -80,14 +59,7 @@ def get_or_create_gpu_cluster(name: str, region: str) -> str:
80
59
  name=name,
81
60
  )).wait()
82
61
  cluster_id = cluster.metadata.id
83
- except nebius.request_error() as no_cluster_found_error:
84
- if region == 'eu-north1':
85
- fabric = 'fabric-4'
86
- elif region == 'eu-west1':
87
- fabric = 'fabric-5'
88
- else:
89
- raise RuntimeError(
90
- f'Unsupported region {region}.') from no_cluster_found_error
62
+ except nebius.request_error():
91
63
  cluster = service.create(nebius.compute().CreateGpuClusterRequest(
92
64
  metadata=nebius.nebius_common().ResourceMetadata(
93
65
  parent_id=project_id,
@@ -196,15 +168,23 @@ def launch(cluster_name_on_cloud: str, node_type: str, platform: str,
196
168
 
197
169
  disk_name = 'disk-' + instance_name
198
170
  cluster_id = None
171
+ project_id = get_project_by_region(region)
199
172
  # 8 GPU virtual machines can be grouped into a GPU cluster.
200
173
  # The GPU clusters are built with InfiniBand secure high-speed networking.
201
174
  # https://docs.nebius.com/compute/clusters/gpu
202
175
  if platform in ('gpu-h100-sxm', 'gpu-h200-sxm'):
203
176
  if preset == '8gpu-128vcpu-1600gb':
204
- cluster_id = get_or_create_gpu_cluster(cluster_name_on_cloud,
205
- region)
177
+ # Check is there fabric in config
178
+ fabric = skypilot_config.get_nested(('nebius', region, 'fabric'),
179
+ None)
180
+ if fabric is None:
181
+ logger.warning(
182
+ f'Set up fabric for region {region} in ~/.sky/config.yaml '
183
+ 'to use GPU clusters.')
184
+ else:
185
+ cluster_id = get_or_create_gpu_cluster(cluster_name_on_cloud,
186
+ project_id, fabric)
206
187
 
207
- project_id = get_project_by_region(region)
208
188
  service = nebius.compute().DiskServiceClient(nebius.sdk())
209
189
  disk = service.create(nebius.compute().CreateDiskRequest(
210
190
  metadata=nebius.nebius_common().ResourceMetadata(
@@ -40,8 +40,11 @@ EXTERNAL_LOCAL_ENV_VARS = [
40
40
  'AWS_PROFILE',
41
41
  'AWS_ACCESS_KEY_ID',
42
42
  'AWS_SECRET_ACCESS_KEY',
43
+ 'AWS_SESSION_TOKEN',
43
44
  # Allow overriding the GCP authentication.
44
45
  'GOOGLE_APPLICATION_CREDENTIALS',
46
+ # Allow overriding the kubeconfig.
47
+ 'KUBECONFIG',
45
48
  ]
46
49
 
47
50
 
@@ -66,7 +66,7 @@ def get_usage_run_id() -> str:
66
66
  return str(uuid.uuid4())
67
67
 
68
68
 
69
- def _is_valid_user_hash(user_hash: Optional[str]) -> bool:
69
+ def is_valid_user_hash(user_hash: Optional[str]) -> bool:
70
70
  if user_hash is None:
71
71
  return False
72
72
  try:
@@ -80,7 +80,7 @@ def generate_user_hash() -> str:
80
80
  """Generates a unique user-machine specific hash."""
81
81
  hash_str = user_and_hostname_hash()
82
82
  user_hash = hashlib.md5(hash_str.encode()).hexdigest()[:USER_HASH_LENGTH]
83
- if not _is_valid_user_hash(user_hash):
83
+ if not is_valid_user_hash(user_hash):
84
84
  # A fallback in case the hash is invalid.
85
85
  user_hash = uuid.uuid4().hex[:USER_HASH_LENGTH]
86
86
  return user_hash
@@ -93,7 +93,7 @@ def get_user_hash() -> str:
93
93
  hostname changes causing a new user hash to be generated.
94
94
  """
95
95
  user_hash = os.getenv(constants.USER_ID_ENV_VAR)
96
- if _is_valid_user_hash(user_hash):
96
+ if is_valid_user_hash(user_hash):
97
97
  assert user_hash is not None
98
98
  return user_hash
99
99
 
@@ -102,7 +102,7 @@ def get_user_hash() -> str:
102
102
  with open(_USER_HASH_FILE, 'r', encoding='utf-8') as f:
103
103
  # Remove invalid characters.
104
104
  user_hash = f.read().strip()
105
- if _is_valid_user_hash(user_hash):
105
+ if is_valid_user_hash(user_hash):
106
106
  return user_hash
107
107
 
108
108
  user_hash = generate_user_hash()