skypilot-nightly 1.0.0.dev20250611__tar.gz → 1.0.0.dev20250612__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 (472) hide show
  1. {skypilot_nightly-1.0.0.dev20250611/skypilot_nightly.egg-info → skypilot_nightly-1.0.0.dev20250612}/PKG-INFO +1 -1
  2. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/__init__.py +2 -2
  3. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/check.py +41 -2
  4. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/clouds/kubernetes.py +1 -1
  5. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/dashboard/out/404.html +1 -1
  6. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/dashboard/out/clusters/[cluster]/[job].html +1 -1
  7. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/dashboard/out/clusters/[cluster].html +1 -1
  8. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/dashboard/out/clusters.html +1 -1
  9. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/dashboard/out/config.html +1 -1
  10. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/dashboard/out/index.html +1 -1
  11. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/dashboard/out/infra/[context].html +1 -1
  12. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/dashboard/out/infra.html +1 -1
  13. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/dashboard/out/jobs/[job].html +1 -1
  14. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/dashboard/out/jobs.html +1 -1
  15. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/dashboard/out/users.html +1 -1
  16. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/dashboard/out/workspace/new.html +1 -1
  17. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/dashboard/out/workspaces/[name].html +1 -1
  18. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/dashboard/out/workspaces.html +1 -1
  19. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/global_user_state.py +38 -0
  20. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/jobs/server/core.py +1 -68
  21. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/templates/jobs-controller.yaml.j2 +0 -23
  22. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/utils/controller_utils.py +10 -0
  23. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612/skypilot_nightly.egg-info}/PKG-INFO +1 -1
  24. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/skypilot_nightly.egg-info/SOURCES.txt +2 -6
  25. skypilot_nightly-1.0.0.dev20250611/sky/jobs/dashboard/dashboard.py +0 -223
  26. skypilot_nightly-1.0.0.dev20250611/sky/jobs/dashboard/static/favicon.ico +0 -0
  27. skypilot_nightly-1.0.0.dev20250611/sky/jobs/dashboard/templates/index.html +0 -831
  28. skypilot_nightly-1.0.0.dev20250611/sky/jobs/server/dashboard_utils.py +0 -69
  29. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/LICENSE +0 -0
  30. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/MANIFEST.in +0 -0
  31. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/README.md +0 -0
  32. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/pyproject.toml +0 -0
  33. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/setup.cfg +0 -0
  34. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/setup.py +0 -0
  35. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/adaptors/__init__.py +0 -0
  36. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/adaptors/aws.py +0 -0
  37. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/adaptors/azure.py +0 -0
  38. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/adaptors/cloudflare.py +0 -0
  39. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/adaptors/common.py +0 -0
  40. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/adaptors/cudo.py +0 -0
  41. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/adaptors/do.py +0 -0
  42. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/adaptors/docker.py +0 -0
  43. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/adaptors/gcp.py +0 -0
  44. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/adaptors/ibm.py +0 -0
  45. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/adaptors/kubernetes.py +0 -0
  46. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/adaptors/nebius.py +0 -0
  47. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/adaptors/oci.py +0 -0
  48. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/adaptors/runpod.py +0 -0
  49. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/adaptors/vast.py +0 -0
  50. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/adaptors/vsphere.py +0 -0
  51. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/admin_policy.py +0 -0
  52. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/authentication.py +0 -0
  53. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/backends/__init__.py +0 -0
  54. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/backends/backend.py +0 -0
  55. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/backends/backend_utils.py +0 -0
  56. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/backends/cloud_vm_ray_backend.py +0 -0
  57. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/backends/docker_utils.py +0 -0
  58. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/backends/local_docker_backend.py +0 -0
  59. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/backends/monkey_patches/monkey_patch_ray_up.py +0 -0
  60. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/backends/wheel_utils.py +0 -0
  61. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/benchmark/__init__.py +0 -0
  62. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/benchmark/benchmark_state.py +0 -0
  63. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/benchmark/benchmark_utils.py +0 -0
  64. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/catalog/__init__.py +0 -0
  65. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/catalog/aws_catalog.py +0 -0
  66. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/catalog/azure_catalog.py +0 -0
  67. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/catalog/common.py +0 -0
  68. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/catalog/config.py +0 -0
  69. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/catalog/cudo_catalog.py +0 -0
  70. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/catalog/data_fetchers/__init__.py +0 -0
  71. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/catalog/data_fetchers/analyze.py +0 -0
  72. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/catalog/data_fetchers/fetch_aws.py +0 -0
  73. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/catalog/data_fetchers/fetch_azure.py +0 -0
  74. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/catalog/data_fetchers/fetch_cudo.py +0 -0
  75. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/catalog/data_fetchers/fetch_fluidstack.py +0 -0
  76. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/catalog/data_fetchers/fetch_gcp.py +0 -0
  77. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/catalog/data_fetchers/fetch_ibm.py +0 -0
  78. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/catalog/data_fetchers/fetch_lambda_cloud.py +0 -0
  79. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/catalog/data_fetchers/fetch_vast.py +0 -0
  80. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/catalog/data_fetchers/fetch_vsphere.py +0 -0
  81. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/catalog/do_catalog.py +0 -0
  82. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/catalog/fluidstack_catalog.py +0 -0
  83. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/catalog/gcp_catalog.py +0 -0
  84. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/catalog/ibm_catalog.py +0 -0
  85. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/catalog/kubernetes_catalog.py +0 -0
  86. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/catalog/lambda_catalog.py +0 -0
  87. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/catalog/nebius_catalog.py +0 -0
  88. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/catalog/oci_catalog.py +0 -0
  89. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/catalog/paperspace_catalog.py +0 -0
  90. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/catalog/runpod_catalog.py +0 -0
  91. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/catalog/scp_catalog.py +0 -0
  92. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/catalog/ssh_catalog.py +0 -0
  93. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/catalog/vast_catalog.py +0 -0
  94. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/catalog/vsphere_catalog.py +0 -0
  95. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/cli.py +0 -0
  96. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/client/__init__.py +0 -0
  97. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/client/cli.py +0 -0
  98. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/client/common.py +0 -0
  99. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/client/oauth.py +0 -0
  100. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/client/sdk.py +0 -0
  101. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/cloud_stores.py +0 -0
  102. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/clouds/__init__.py +0 -0
  103. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/clouds/aws.py +0 -0
  104. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/clouds/azure.py +0 -0
  105. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/clouds/cloud.py +0 -0
  106. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/clouds/cudo.py +0 -0
  107. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/clouds/do.py +0 -0
  108. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/clouds/fluidstack.py +0 -0
  109. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/clouds/gcp.py +0 -0
  110. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/clouds/ibm.py +0 -0
  111. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/clouds/lambda_cloud.py +0 -0
  112. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/clouds/nebius.py +0 -0
  113. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/clouds/oci.py +0 -0
  114. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/clouds/paperspace.py +0 -0
  115. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/clouds/runpod.py +0 -0
  116. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/clouds/scp.py +0 -0
  117. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/clouds/ssh.py +0 -0
  118. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/clouds/utils/__init__.py +0 -0
  119. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/clouds/utils/aws_utils.py +0 -0
  120. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/clouds/utils/azure_utils.py +0 -0
  121. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/clouds/utils/gcp_utils.py +0 -0
  122. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/clouds/utils/oci_utils.py +0 -0
  123. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/clouds/utils/scp_utils.py +0 -0
  124. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/clouds/vast.py +0 -0
  125. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/clouds/vsphere.py +0 -0
  126. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/core.py +0 -0
  127. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/dag.py +0 -0
  128. {skypilot_nightly-1.0.0.dev20250611/sky/dashboard/out/_next/static/zJqasksBQ3HcqMpA2wTUZ → skypilot_nightly-1.0.0.dev20250612/sky/dashboard/out/_next/static/G3DXdMFu2Jzd-Dody9iq1}/_buildManifest.js +0 -0
  129. {skypilot_nightly-1.0.0.dev20250611/sky/dashboard/out/_next/static/zJqasksBQ3HcqMpA2wTUZ → skypilot_nightly-1.0.0.dev20250612/sky/dashboard/out/_next/static/G3DXdMFu2Jzd-Dody9iq1}/_ssgManifest.js +0 -0
  130. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/dashboard/out/_next/static/chunks/211.692afc57e812ae1a.js +0 -0
  131. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/dashboard/out/_next/static/chunks/350.9e123a4551f68b0d.js +0 -0
  132. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/dashboard/out/_next/static/chunks/37-d8aebf1683522a0b.js +0 -0
  133. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/dashboard/out/_next/static/chunks/42.d39e24467181b06b.js +0 -0
  134. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/dashboard/out/_next/static/chunks/443.b2242d0efcdf5f47.js +0 -0
  135. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/dashboard/out/_next/static/chunks/470-4d1a5dbe58a8a2b9.js +0 -0
  136. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/dashboard/out/_next/static/chunks/491.b3d264269613fe09.js +0 -0
  137. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/dashboard/out/_next/static/chunks/513.211357a2914a34b2.js +0 -0
  138. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/dashboard/out/_next/static/chunks/600.15a0009177e86b86.js +0 -0
  139. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/dashboard/out/_next/static/chunks/616-d6128fa9e7cae6e6.js +0 -0
  140. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/dashboard/out/_next/static/chunks/664-047bc03493fda379.js +0 -0
  141. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/dashboard/out/_next/static/chunks/682.4dd5dc116f740b5f.js +0 -0
  142. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/dashboard/out/_next/static/chunks/760-a89d354797ce7af5.js +0 -0
  143. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/dashboard/out/_next/static/chunks/798-c0525dc3f21e488d.js +0 -0
  144. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/dashboard/out/_next/static/chunks/799-3625946b2ec2eb30.js +0 -0
  145. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/dashboard/out/_next/static/chunks/804-4c9fc53aa74bc191.js +0 -0
  146. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/dashboard/out/_next/static/chunks/843-6fcc4bf91ac45b39.js +0 -0
  147. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/dashboard/out/_next/static/chunks/856-0776dc6ed6000c39.js +0 -0
  148. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/dashboard/out/_next/static/chunks/901-b424d293275e1fd7.js +0 -0
  149. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/dashboard/out/_next/static/chunks/937.3759f538f11a0953.js +0 -0
  150. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/dashboard/out/_next/static/chunks/938-ab185187a63f9cdb.js +0 -0
  151. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/dashboard/out/_next/static/chunks/947-6620842ef80ae879.js +0 -0
  152. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/dashboard/out/_next/static/chunks/969-20d54a9d998dc102.js +0 -0
  153. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/dashboard/out/_next/static/chunks/973-c807fc34f09c7df3.js +0 -0
  154. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/dashboard/out/_next/static/chunks/fd9d1056-2821b0f0cabcd8bd.js +0 -0
  155. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/dashboard/out/_next/static/chunks/framework-87d061ee6ed71b28.js +0 -0
  156. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/dashboard/out/_next/static/chunks/main-app-241eb28595532291.js +0 -0
  157. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/dashboard/out/_next/static/chunks/main-e0e2335212e72357.js +0 -0
  158. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/dashboard/out/_next/static/chunks/pages/_app-7bbd9d39d6f9a98a.js +0 -0
  159. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/dashboard/out/_next/static/chunks/pages/_error-1be831200e60c5c0.js +0 -0
  160. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/dashboard/out/_next/static/chunks/pages/clusters/[cluster]/[job]-89216c616dbaa9c5.js +0 -0
  161. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/dashboard/out/_next/static/chunks/pages/clusters/[cluster]-451a14e7e755ebbc.js +0 -0
  162. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/dashboard/out/_next/static/chunks/pages/clusters-e56b17fd85d0ba58.js +0 -0
  163. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/dashboard/out/_next/static/chunks/pages/config-497a35a7ed49734a.js +0 -0
  164. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/dashboard/out/_next/static/chunks/pages/index-6b0d9e5031b70c58.js +0 -0
  165. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/dashboard/out/_next/static/chunks/pages/infra/[context]-d2910be98e9227cb.js +0 -0
  166. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/dashboard/out/_next/static/chunks/pages/infra-780860bcc1103945.js +0 -0
  167. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/dashboard/out/_next/static/chunks/pages/jobs/[job]-b3dbf38b51cb29be.js +0 -0
  168. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/dashboard/out/_next/static/chunks/pages/jobs-fe233baf3d073491.js +0 -0
  169. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/dashboard/out/_next/static/chunks/pages/users-c69ffcab9d6e5269.js +0 -0
  170. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/dashboard/out/_next/static/chunks/pages/workspace/new-31aa8bdcb7592635.js +0 -0
  171. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/dashboard/out/_next/static/chunks/pages/workspaces/[name]-c8c2191328532b7d.js +0 -0
  172. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/dashboard/out/_next/static/chunks/pages/workspaces-82e6601baa5dd280.js +0 -0
  173. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/dashboard/out/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js +0 -0
  174. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/dashboard/out/_next/static/chunks/webpack-208a9812ab4f61c9.js +0 -0
  175. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/dashboard/out/_next/static/css/5d71bfc09f184bab.css +0 -0
  176. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/dashboard/out/favicon.ico +0 -0
  177. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/dashboard/out/skypilot.svg +0 -0
  178. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/dashboard/out/videos/cursor-small.mp4 +0 -0
  179. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/data/__init__.py +0 -0
  180. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/data/data_transfer.py +0 -0
  181. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/data/data_utils.py +0 -0
  182. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/data/mounting_utils.py +0 -0
  183. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/data/storage.py +0 -0
  184. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/data/storage_utils.py +0 -0
  185. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/exceptions.py +0 -0
  186. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/execution.py +0 -0
  187. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/jobs/__init__.py +0 -0
  188. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/jobs/client/__init__.py +0 -0
  189. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/jobs/client/sdk.py +0 -0
  190. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/jobs/constants.py +0 -0
  191. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/jobs/controller.py +0 -0
  192. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/jobs/recovery_strategy.py +0 -0
  193. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/jobs/scheduler.py +0 -0
  194. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/jobs/server/__init__.py +0 -0
  195. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/jobs/server/server.py +0 -0
  196. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/jobs/state.py +0 -0
  197. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/jobs/utils.py +0 -0
  198. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/models.py +0 -0
  199. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/optimizer.py +0 -0
  200. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/provision/__init__.py +0 -0
  201. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/provision/aws/__init__.py +0 -0
  202. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/provision/aws/config.py +0 -0
  203. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/provision/aws/instance.py +0 -0
  204. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/provision/aws/utils.py +0 -0
  205. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/provision/azure/__init__.py +0 -0
  206. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/provision/azure/azure-config-template.json +0 -0
  207. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/provision/azure/config.py +0 -0
  208. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/provision/azure/instance.py +0 -0
  209. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/provision/common.py +0 -0
  210. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/provision/constants.py +0 -0
  211. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/provision/cudo/__init__.py +0 -0
  212. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/provision/cudo/config.py +0 -0
  213. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/provision/cudo/cudo_machine_type.py +0 -0
  214. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/provision/cudo/cudo_utils.py +0 -0
  215. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/provision/cudo/cudo_wrapper.py +0 -0
  216. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/provision/cudo/instance.py +0 -0
  217. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/provision/do/__init__.py +0 -0
  218. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/provision/do/config.py +0 -0
  219. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/provision/do/constants.py +0 -0
  220. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/provision/do/instance.py +0 -0
  221. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/provision/do/utils.py +0 -0
  222. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/provision/docker_utils.py +0 -0
  223. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/provision/fluidstack/__init__.py +0 -0
  224. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/provision/fluidstack/config.py +0 -0
  225. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/provision/fluidstack/fluidstack_utils.py +0 -0
  226. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/provision/fluidstack/instance.py +0 -0
  227. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/provision/gcp/__init__.py +0 -0
  228. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/provision/gcp/config.py +0 -0
  229. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/provision/gcp/constants.py +0 -0
  230. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/provision/gcp/instance.py +0 -0
  231. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/provision/gcp/instance_utils.py +0 -0
  232. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/provision/gcp/mig_utils.py +0 -0
  233. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/provision/gcp/volume_utils.py +0 -0
  234. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/provision/instance_setup.py +0 -0
  235. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/provision/kubernetes/__init__.py +0 -0
  236. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/provision/kubernetes/config.py +0 -0
  237. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/provision/kubernetes/constants.py +0 -0
  238. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/provision/kubernetes/instance.py +0 -0
  239. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/provision/kubernetes/manifests/fusermount-server-daemonset.yaml +0 -0
  240. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/provision/kubernetes/network.py +0 -0
  241. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/provision/kubernetes/network_utils.py +0 -0
  242. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/provision/kubernetes/utils.py +0 -0
  243. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/provision/lambda_cloud/__init__.py +0 -0
  244. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/provision/lambda_cloud/config.py +0 -0
  245. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/provision/lambda_cloud/instance.py +0 -0
  246. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/provision/lambda_cloud/lambda_utils.py +0 -0
  247. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/provision/logging.py +0 -0
  248. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/provision/metadata_utils.py +0 -0
  249. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/provision/nebius/__init__.py +0 -0
  250. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/provision/nebius/config.py +0 -0
  251. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/provision/nebius/constants.py +0 -0
  252. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/provision/nebius/instance.py +0 -0
  253. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/provision/nebius/utils.py +0 -0
  254. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/provision/oci/__init__.py +0 -0
  255. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/provision/oci/config.py +0 -0
  256. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/provision/oci/instance.py +0 -0
  257. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/provision/oci/query_utils.py +0 -0
  258. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/provision/paperspace/__init__.py +0 -0
  259. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/provision/paperspace/config.py +0 -0
  260. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/provision/paperspace/constants.py +0 -0
  261. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/provision/paperspace/instance.py +0 -0
  262. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/provision/paperspace/utils.py +0 -0
  263. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/provision/provisioner.py +0 -0
  264. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/provision/runpod/__init__.py +0 -0
  265. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/provision/runpod/api/__init__.py +0 -0
  266. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/provision/runpod/api/commands.py +0 -0
  267. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/provision/runpod/api/pods.py +0 -0
  268. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/provision/runpod/config.py +0 -0
  269. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/provision/runpod/instance.py +0 -0
  270. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/provision/runpod/utils.py +0 -0
  271. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/provision/ssh/__init__.py +0 -0
  272. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/provision/vast/__init__.py +0 -0
  273. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/provision/vast/config.py +0 -0
  274. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/provision/vast/instance.py +0 -0
  275. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/provision/vast/utils.py +0 -0
  276. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/provision/vsphere/__init__.py +0 -0
  277. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/provision/vsphere/common/__init__.py +0 -0
  278. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/provision/vsphere/common/cls_api_client.py +0 -0
  279. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/provision/vsphere/common/cls_api_helper.py +0 -0
  280. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/provision/vsphere/common/custom_script.py +0 -0
  281. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/provision/vsphere/common/id_generator.py +0 -0
  282. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/provision/vsphere/common/metadata_utils.py +0 -0
  283. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/provision/vsphere/common/service_manager.py +0 -0
  284. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/provision/vsphere/common/service_manager_factory.py +0 -0
  285. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/provision/vsphere/common/ssl_helper.py +0 -0
  286. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/provision/vsphere/common/vapiconnect.py +0 -0
  287. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/provision/vsphere/common/vim_utils.py +0 -0
  288. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/provision/vsphere/config.py +0 -0
  289. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/provision/vsphere/instance.py +0 -0
  290. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/provision/vsphere/vsphere_utils.py +0 -0
  291. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/resources.py +0 -0
  292. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/serve/__init__.py +0 -0
  293. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/serve/autoscalers.py +0 -0
  294. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/serve/client/__init__.py +0 -0
  295. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/serve/client/sdk.py +0 -0
  296. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/serve/constants.py +0 -0
  297. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/serve/controller.py +0 -0
  298. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/serve/load_balancer.py +0 -0
  299. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/serve/load_balancing_policies.py +0 -0
  300. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/serve/replica_managers.py +0 -0
  301. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/serve/serve_state.py +0 -0
  302. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/serve/serve_utils.py +0 -0
  303. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/serve/server/__init__.py +0 -0
  304. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/serve/server/core.py +0 -0
  305. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/serve/server/server.py +0 -0
  306. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/serve/service.py +0 -0
  307. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/serve/service_spec.py +0 -0
  308. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/serve/spot_placer.py +0 -0
  309. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/server/__init__.py +0 -0
  310. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/server/common.py +0 -0
  311. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/server/config.py +0 -0
  312. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/server/constants.py +0 -0
  313. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/server/html/log.html +0 -0
  314. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/server/html/token_page.html +0 -0
  315. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/server/requests/__init__.py +0 -0
  316. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/server/requests/event_loop.py +0 -0
  317. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/server/requests/executor.py +0 -0
  318. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/server/requests/payloads.py +0 -0
  319. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/server/requests/preconditions.py +0 -0
  320. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/server/requests/process.py +0 -0
  321. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/server/requests/queues/__init__.py +0 -0
  322. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/server/requests/queues/local_queue.py +0 -0
  323. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/server/requests/queues/mp_queue.py +0 -0
  324. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/server/requests/requests.py +0 -0
  325. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/server/requests/serializers/__init__.py +0 -0
  326. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/server/requests/serializers/decoders.py +0 -0
  327. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/server/requests/serializers/encoders.py +0 -0
  328. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/server/server.py +0 -0
  329. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/server/stream_utils.py +0 -0
  330. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/server/uvicorn.py +0 -0
  331. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/setup_files/MANIFEST.in +0 -0
  332. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/setup_files/dependencies.py +0 -0
  333. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/setup_files/setup.py +0 -0
  334. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/sky_logging.py +0 -0
  335. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/skylet/LICENSE +0 -0
  336. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/skylet/__init__.py +0 -0
  337. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/skylet/attempt_skylet.py +0 -0
  338. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/skylet/autostop_lib.py +0 -0
  339. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/skylet/configs.py +0 -0
  340. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/skylet/constants.py +0 -0
  341. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/skylet/events.py +0 -0
  342. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/skylet/job_lib.py +0 -0
  343. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/skylet/log_lib.py +0 -0
  344. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/skylet/log_lib.pyi +0 -0
  345. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/skylet/providers/__init__.py +0 -0
  346. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/skylet/providers/command_runner.py +0 -0
  347. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/skylet/providers/ibm/__init__.py +0 -0
  348. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/skylet/providers/ibm/node_provider.py +0 -0
  349. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/skylet/providers/ibm/utils.py +0 -0
  350. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/skylet/providers/ibm/vpc_provider.py +0 -0
  351. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/skylet/providers/scp/__init__.py +0 -0
  352. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/skylet/providers/scp/config.py +0 -0
  353. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/skylet/providers/scp/node_provider.py +0 -0
  354. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/skylet/ray_patches/__init__.py +0 -0
  355. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/skylet/ray_patches/autoscaler.py.patch +0 -0
  356. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/skylet/ray_patches/cli.py.patch +0 -0
  357. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/skylet/ray_patches/command_runner.py.patch +0 -0
  358. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/skylet/ray_patches/log_monitor.py.patch +0 -0
  359. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/skylet/ray_patches/resource_demand_scheduler.py.patch +0 -0
  360. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/skylet/ray_patches/updater.py.patch +0 -0
  361. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/skylet/ray_patches/worker.py.patch +0 -0
  362. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/skylet/skylet.py +0 -0
  363. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/skylet/subprocess_daemon.py +0 -0
  364. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/skypilot_config.py +0 -0
  365. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/task.py +0 -0
  366. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/templates/aws-ray.yml.j2 +0 -0
  367. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/templates/azure-ray.yml.j2 +0 -0
  368. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/templates/cudo-ray.yml.j2 +0 -0
  369. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/templates/do-ray.yml.j2 +0 -0
  370. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/templates/fluidstack-ray.yml.j2 +0 -0
  371. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/templates/gcp-ray.yml.j2 +0 -0
  372. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/templates/ibm-ray.yml.j2 +0 -0
  373. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/templates/kubernetes-ingress.yml.j2 +0 -0
  374. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/templates/kubernetes-loadbalancer.yml.j2 +0 -0
  375. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/templates/kubernetes-port-forward-proxy-command.sh +0 -0
  376. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/templates/kubernetes-ray.yml.j2 +0 -0
  377. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/templates/kubernetes-ssh-jump.yml.j2 +0 -0
  378. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/templates/lambda-ray.yml.j2 +0 -0
  379. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/templates/local-ray.yml.j2 +0 -0
  380. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/templates/nebius-ray.yml.j2 +0 -0
  381. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/templates/oci-ray.yml.j2 +0 -0
  382. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/templates/paperspace-ray.yml.j2 +0 -0
  383. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/templates/runpod-ray.yml.j2 +0 -0
  384. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/templates/scp-ray.yml.j2 +0 -0
  385. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/templates/sky-serve-controller.yaml.j2 +0 -0
  386. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/templates/skypilot-server-kubernetes-proxy.sh +0 -0
  387. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/templates/vast-ray.yml.j2 +0 -0
  388. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/templates/vsphere-ray.yml.j2 +0 -0
  389. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/templates/websocket_proxy.py +0 -0
  390. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/usage/__init__.py +0 -0
  391. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/usage/constants.py +0 -0
  392. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/usage/usage_lib.py +0 -0
  393. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/users/__init__.py +0 -0
  394. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/users/model.conf +0 -0
  395. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/users/permission.py +0 -0
  396. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/users/rbac.py +0 -0
  397. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/users/server.py +0 -0
  398. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/utils/__init__.py +0 -0
  399. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/utils/accelerator_registry.py +0 -0
  400. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/utils/admin_policy_utils.py +0 -0
  401. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/utils/annotations.py +0 -0
  402. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/utils/atomic.py +0 -0
  403. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/utils/aws/__init__.py +0 -0
  404. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/utils/aws/get_default_security_group.py +0 -0
  405. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/utils/cli_utils/__init__.py +0 -0
  406. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/utils/cli_utils/status_utils.py +0 -0
  407. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/utils/cluster_utils.py +0 -0
  408. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/utils/command_runner.py +0 -0
  409. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/utils/command_runner.pyi +0 -0
  410. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/utils/common.py +0 -0
  411. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/utils/common_utils.py +0 -0
  412. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/utils/config_utils.py +0 -0
  413. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/utils/context.py +0 -0
  414. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/utils/context_utils.py +0 -0
  415. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/utils/control_master_utils.py +0 -0
  416. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/utils/dag_utils.py +0 -0
  417. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/utils/db_utils.py +0 -0
  418. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/utils/env_options.py +0 -0
  419. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/utils/infra_utils.py +0 -0
  420. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/utils/kubernetes/__init__.py +0 -0
  421. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/utils/kubernetes/cleanup-tunnel.sh +0 -0
  422. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/utils/kubernetes/config_map_utils.py +0 -0
  423. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/utils/kubernetes/create_cluster.sh +0 -0
  424. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/utils/kubernetes/delete_cluster.sh +0 -0
  425. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/utils/kubernetes/deploy_remote_cluster.py +0 -0
  426. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/utils/kubernetes/exec_kubeconfig_converter.py +0 -0
  427. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/utils/kubernetes/generate_kind_config.py +0 -0
  428. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/utils/kubernetes/generate_kubeconfig.sh +0 -0
  429. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/utils/kubernetes/gpu_labeler.py +0 -0
  430. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/utils/kubernetes/k8s_gpu_labeler_job.yaml +0 -0
  431. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/utils/kubernetes/k8s_gpu_labeler_setup.yaml +0 -0
  432. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/utils/kubernetes/kubernetes_deploy_utils.py +0 -0
  433. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/utils/kubernetes/rsync_helper.sh +0 -0
  434. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/utils/kubernetes/ssh-tunnel.sh +0 -0
  435. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/utils/kubernetes/ssh_jump_lifecycle_manager.py +0 -0
  436. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/utils/kubernetes_enums.py +0 -0
  437. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/utils/log_utils.py +0 -0
  438. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/utils/message_utils.py +0 -0
  439. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/utils/registry.py +0 -0
  440. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/utils/resources_utils.py +0 -0
  441. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/utils/rich_console_utils.py +0 -0
  442. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/utils/rich_utils.py +0 -0
  443. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/utils/schemas.py +0 -0
  444. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/utils/status_lib.py +0 -0
  445. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/utils/subprocess_utils.py +0 -0
  446. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/utils/timeline.py +0 -0
  447. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/utils/ux_utils.py +0 -0
  448. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/utils/validator.py +0 -0
  449. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/workspaces/__init__.py +0 -0
  450. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/workspaces/core.py +0 -0
  451. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/workspaces/server.py +0 -0
  452. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/sky/workspaces/utils.py +0 -0
  453. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/skypilot_nightly.egg-info/dependency_links.txt +0 -0
  454. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/skypilot_nightly.egg-info/entry_points.txt +0 -0
  455. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/skypilot_nightly.egg-info/requires.txt +0 -0
  456. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/skypilot_nightly.egg-info/top_level.txt +0 -0
  457. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/tests/test_api.py +0 -0
  458. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/tests/test_cli.py +0 -0
  459. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/tests/test_config.py +0 -0
  460. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/tests/test_db_utils.py +0 -0
  461. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/tests/test_failover.py +0 -0
  462. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/tests/test_global_user_state.py +0 -0
  463. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/tests/test_jobs.py +0 -0
  464. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/tests/test_jobs_and_serve.py +0 -0
  465. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/tests/test_list_accelerators.py +0 -0
  466. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/tests/test_optimizer_dryruns.py +0 -0
  467. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/tests/test_optimizer_random_dag.py +0 -0
  468. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/tests/test_serve_autoscaler.py +0 -0
  469. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/tests/test_smoke.py +0 -0
  470. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/tests/test_storage.py +0 -0
  471. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/tests/test_wheels.py +0 -0
  472. {skypilot_nightly-1.0.0.dev20250611 → skypilot_nightly-1.0.0.dev20250612}/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.dev20250611
3
+ Version: 1.0.0.dev20250612
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 = 'b85fa521454fb935e9609773c4cfe52e2237e60f'
8
+ _SKYPILOT_COMMIT_SHA = '88962061c851edfe5dfcfe12a1c3cf63a703dfd8'
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.dev20250611'
38
+ __version__ = '1.0.0.dev20250612'
39
39
  __root_dir__ = os.path.dirname(os.path.abspath(__file__))
40
40
 
41
41
 
@@ -11,6 +11,7 @@ import colorama
11
11
  from sky import clouds as sky_clouds
12
12
  from sky import exceptions
13
13
  from sky import global_user_state
14
+ from sky import sky_logging
14
15
  from sky import skypilot_config
15
16
  from sky.adaptors import cloudflare
16
17
  from sky.clouds import cloud as sky_cloud
@@ -23,6 +24,30 @@ from sky.utils import ux_utils
23
24
  CHECK_MARK_EMOJI = '\U00002714' # Heavy check mark unicode
24
25
  PARTY_POPPER_EMOJI = '\U0001F389' # Party popper unicode
25
26
 
27
+ logger = sky_logging.init_logger(__name__)
28
+
29
+
30
+ def _get_workspace_allowed_clouds(workspace: str) -> List[str]:
31
+ # Use allowed_clouds from config if it exists, otherwise check all
32
+ # clouds. Also validate names with get_cloud_tuple.
33
+ config_allowed_cloud_names = skypilot_config.get_nested(
34
+ ('allowed_clouds',),
35
+ [repr(c) for c in registry.CLOUD_REGISTRY.values()] + [cloudflare.NAME])
36
+ # filter out the clouds that are disabled in the workspace config
37
+ workspace_disabled_clouds = []
38
+ for cloud in config_allowed_cloud_names:
39
+ cloud_config = skypilot_config.get_workspace_cloud(cloud.lower(),
40
+ workspace=workspace)
41
+ cloud_disabled = cloud_config.get('disabled', False)
42
+ if cloud_disabled:
43
+ workspace_disabled_clouds.append(cloud.lower())
44
+
45
+ config_allowed_cloud_names = [
46
+ c for c in config_allowed_cloud_names
47
+ if c.lower() not in workspace_disabled_clouds
48
+ ]
49
+ return config_allowed_cloud_names
50
+
26
51
 
27
52
  def check_capabilities(
28
53
  quiet: bool = False,
@@ -132,6 +157,8 @@ def check_capabilities(
132
157
  c for c in config_allowed_cloud_names
133
158
  if c not in workspace_disabled_clouds
134
159
  ]
160
+ global_user_state.set_allowed_clouds(
161
+ [c for c in config_allowed_cloud_names], current_workspace_name)
135
162
 
136
163
  # Use disallowed_cloud_names for logging the clouds that will be
137
164
  # disabled because they are not included in allowed_clouds in
@@ -341,11 +368,22 @@ def get_cached_enabled_clouds_or_refresh(
341
368
  raise_if_no_cloud_access is set to True.
342
369
  """
343
370
  active_workspace = skypilot_config.get_active_workspace()
371
+ allowed_clouds_changed = False
372
+ cached_allowed_clouds = global_user_state.get_allowed_clouds(
373
+ active_workspace)
374
+ skypilot_config_allowed_clouds = _get_workspace_allowed_clouds(
375
+ active_workspace)
376
+ if sorted(cached_allowed_clouds) != sorted(skypilot_config_allowed_clouds):
377
+ allowed_clouds_changed = True
378
+
344
379
  cached_enabled_clouds = global_user_state.get_cached_enabled_clouds(
345
380
  capability, active_workspace)
346
- if not cached_enabled_clouds:
381
+ if not cached_enabled_clouds or allowed_clouds_changed:
347
382
  try:
348
383
  check_capability(capability, quiet=True, workspace=active_workspace)
384
+ if allowed_clouds_changed:
385
+ global_user_state.set_allowed_clouds(
386
+ skypilot_config_allowed_clouds, active_workspace)
349
387
  except SystemExit:
350
388
  # If no cloud is enabled, check() will raise SystemExit.
351
389
  # Here we catch it and raise the exception later only if
@@ -382,7 +420,8 @@ def get_cloud_credential_file_mounts(
382
420
  cloud_file_mounts = cloud.get_credential_file_mounts()
383
421
  for remote_path, local_path in cloud_file_mounts.items():
384
422
  if os.path.exists(os.path.expanduser(local_path)):
385
- file_mounts[remote_path] = local_path
423
+ file_mounts[remote_path] = os.path.realpath(
424
+ os.path.expanduser(local_path))
386
425
  # Currently, get_cached_enabled_clouds_or_refresh() does not support r2 as
387
426
  # only clouds with computing instances are marked as enabled by skypilot.
388
427
  # This will be removed when cloudflare/r2 is added as a 'cloud'.
@@ -772,7 +772,7 @@ class Kubernetes(clouds.Cloud):
772
772
  """Checks if the user has access credentials to
773
773
  Kubernetes."""
774
774
  # Check for port forward dependencies
775
- logger.info(f'Checking compute credentials for {cls.canonical_name()}')
775
+ logger.debug(f'Checking compute credentials for {cls.canonical_name()}')
776
776
  reasons = kubernetes_utils.check_port_forward_mode_dependencies(False)
777
777
  if reasons is not None:
778
778
  formatted = '\n'.join(
@@ -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/5d71bfc09f184bab.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/5d71bfc09f184bab.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/dashboard/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js"></script><script src="/dashboard/_next/static/chunks/webpack-208a9812ab4f61c9.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-87d061ee6ed71b28.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-e0e2335212e72357.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-7bbd9d39d6f9a98a.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_error-1be831200e60c5c0.js" defer=""></script><script src="/dashboard/_next/static/zJqasksBQ3HcqMpA2wTUZ/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/zJqasksBQ3HcqMpA2wTUZ/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{"statusCode":404}},"page":"/_error","query":{},"buildId":"zJqasksBQ3HcqMpA2wTUZ","assetPrefix":"/dashboard","nextExport":true,"isFallback":false,"gip":true,"scriptLoader":[]}</script></body></html>
1
+ <!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><meta name="next-head-count" content="2"/><link rel="preload" href="/dashboard/_next/static/css/5d71bfc09f184bab.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/5d71bfc09f184bab.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/dashboard/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js"></script><script src="/dashboard/_next/static/chunks/webpack-208a9812ab4f61c9.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-87d061ee6ed71b28.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-e0e2335212e72357.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-7bbd9d39d6f9a98a.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_error-1be831200e60c5c0.js" defer=""></script><script src="/dashboard/_next/static/G3DXdMFu2Jzd-Dody9iq1/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/G3DXdMFu2Jzd-Dody9iq1/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{"statusCode":404}},"page":"/_error","query":{},"buildId":"G3DXdMFu2Jzd-Dody9iq1","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/5d71bfc09f184bab.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/5d71bfc09f184bab.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/dashboard/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js"></script><script src="/dashboard/_next/static/chunks/webpack-208a9812ab4f61c9.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-87d061ee6ed71b28.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-e0e2335212e72357.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-7bbd9d39d6f9a98a.js" defer=""></script><script src="/dashboard/_next/static/chunks/616-d6128fa9e7cae6e6.js" defer=""></script><script src="/dashboard/_next/static/chunks/760-a89d354797ce7af5.js" defer=""></script><script src="/dashboard/_next/static/chunks/799-3625946b2ec2eb30.js" defer=""></script><script src="/dashboard/_next/static/chunks/804-4c9fc53aa74bc191.js" defer=""></script><script src="/dashboard/_next/static/chunks/664-047bc03493fda379.js" defer=""></script><script src="/dashboard/_next/static/chunks/470-4d1a5dbe58a8a2b9.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/clusters/%5Bcluster%5D/%5Bjob%5D-89216c616dbaa9c5.js" defer=""></script><script src="/dashboard/_next/static/zJqasksBQ3HcqMpA2wTUZ/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/zJqasksBQ3HcqMpA2wTUZ/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/clusters/[cluster]/[job]","query":{},"buildId":"zJqasksBQ3HcqMpA2wTUZ","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/5d71bfc09f184bab.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/5d71bfc09f184bab.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/dashboard/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js"></script><script src="/dashboard/_next/static/chunks/webpack-208a9812ab4f61c9.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-87d061ee6ed71b28.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-e0e2335212e72357.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-7bbd9d39d6f9a98a.js" defer=""></script><script src="/dashboard/_next/static/chunks/616-d6128fa9e7cae6e6.js" defer=""></script><script src="/dashboard/_next/static/chunks/760-a89d354797ce7af5.js" defer=""></script><script src="/dashboard/_next/static/chunks/799-3625946b2ec2eb30.js" defer=""></script><script src="/dashboard/_next/static/chunks/804-4c9fc53aa74bc191.js" defer=""></script><script src="/dashboard/_next/static/chunks/664-047bc03493fda379.js" defer=""></script><script src="/dashboard/_next/static/chunks/470-4d1a5dbe58a8a2b9.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/clusters/%5Bcluster%5D/%5Bjob%5D-89216c616dbaa9c5.js" defer=""></script><script src="/dashboard/_next/static/G3DXdMFu2Jzd-Dody9iq1/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/G3DXdMFu2Jzd-Dody9iq1/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/clusters/[cluster]/[job]","query":{},"buildId":"G3DXdMFu2Jzd-Dody9iq1","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/5d71bfc09f184bab.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/5d71bfc09f184bab.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/dashboard/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js"></script><script src="/dashboard/_next/static/chunks/webpack-208a9812ab4f61c9.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-87d061ee6ed71b28.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-e0e2335212e72357.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-7bbd9d39d6f9a98a.js" defer=""></script><script src="/dashboard/_next/static/chunks/616-d6128fa9e7cae6e6.js" defer=""></script><script src="/dashboard/_next/static/chunks/760-a89d354797ce7af5.js" defer=""></script><script src="/dashboard/_next/static/chunks/799-3625946b2ec2eb30.js" defer=""></script><script src="/dashboard/_next/static/chunks/804-4c9fc53aa74bc191.js" defer=""></script><script src="/dashboard/_next/static/chunks/664-047bc03493fda379.js" defer=""></script><script src="/dashboard/_next/static/chunks/798-c0525dc3f21e488d.js" defer=""></script><script src="/dashboard/_next/static/chunks/947-6620842ef80ae879.js" defer=""></script><script src="/dashboard/_next/static/chunks/470-4d1a5dbe58a8a2b9.js" defer=""></script><script src="/dashboard/_next/static/chunks/901-b424d293275e1fd7.js" defer=""></script><script src="/dashboard/_next/static/chunks/969-20d54a9d998dc102.js" defer=""></script><script src="/dashboard/_next/static/chunks/856-0776dc6ed6000c39.js" defer=""></script><script src="/dashboard/_next/static/chunks/973-c807fc34f09c7df3.js" defer=""></script><script src="/dashboard/_next/static/chunks/938-ab185187a63f9cdb.js" defer=""></script><script src="/dashboard/_next/static/chunks/37-d8aebf1683522a0b.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/clusters/%5Bcluster%5D-451a14e7e755ebbc.js" defer=""></script><script src="/dashboard/_next/static/zJqasksBQ3HcqMpA2wTUZ/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/zJqasksBQ3HcqMpA2wTUZ/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/clusters/[cluster]","query":{},"buildId":"zJqasksBQ3HcqMpA2wTUZ","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/5d71bfc09f184bab.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/5d71bfc09f184bab.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/dashboard/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js"></script><script src="/dashboard/_next/static/chunks/webpack-208a9812ab4f61c9.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-87d061ee6ed71b28.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-e0e2335212e72357.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-7bbd9d39d6f9a98a.js" defer=""></script><script src="/dashboard/_next/static/chunks/616-d6128fa9e7cae6e6.js" defer=""></script><script src="/dashboard/_next/static/chunks/760-a89d354797ce7af5.js" defer=""></script><script src="/dashboard/_next/static/chunks/799-3625946b2ec2eb30.js" defer=""></script><script src="/dashboard/_next/static/chunks/804-4c9fc53aa74bc191.js" defer=""></script><script src="/dashboard/_next/static/chunks/664-047bc03493fda379.js" defer=""></script><script src="/dashboard/_next/static/chunks/798-c0525dc3f21e488d.js" defer=""></script><script src="/dashboard/_next/static/chunks/947-6620842ef80ae879.js" defer=""></script><script src="/dashboard/_next/static/chunks/470-4d1a5dbe58a8a2b9.js" defer=""></script><script src="/dashboard/_next/static/chunks/901-b424d293275e1fd7.js" defer=""></script><script src="/dashboard/_next/static/chunks/969-20d54a9d998dc102.js" defer=""></script><script src="/dashboard/_next/static/chunks/856-0776dc6ed6000c39.js" defer=""></script><script src="/dashboard/_next/static/chunks/973-c807fc34f09c7df3.js" defer=""></script><script src="/dashboard/_next/static/chunks/938-ab185187a63f9cdb.js" defer=""></script><script src="/dashboard/_next/static/chunks/37-d8aebf1683522a0b.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/clusters/%5Bcluster%5D-451a14e7e755ebbc.js" defer=""></script><script src="/dashboard/_next/static/G3DXdMFu2Jzd-Dody9iq1/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/G3DXdMFu2Jzd-Dody9iq1/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/clusters/[cluster]","query":{},"buildId":"G3DXdMFu2Jzd-Dody9iq1","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/5d71bfc09f184bab.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/5d71bfc09f184bab.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/dashboard/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js"></script><script src="/dashboard/_next/static/chunks/webpack-208a9812ab4f61c9.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-87d061ee6ed71b28.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-e0e2335212e72357.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-7bbd9d39d6f9a98a.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/clusters-e56b17fd85d0ba58.js" defer=""></script><script src="/dashboard/_next/static/zJqasksBQ3HcqMpA2wTUZ/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/zJqasksBQ3HcqMpA2wTUZ/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/clusters","query":{},"buildId":"zJqasksBQ3HcqMpA2wTUZ","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/5d71bfc09f184bab.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/5d71bfc09f184bab.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/dashboard/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js"></script><script src="/dashboard/_next/static/chunks/webpack-208a9812ab4f61c9.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-87d061ee6ed71b28.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-e0e2335212e72357.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-7bbd9d39d6f9a98a.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/clusters-e56b17fd85d0ba58.js" defer=""></script><script src="/dashboard/_next/static/G3DXdMFu2Jzd-Dody9iq1/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/G3DXdMFu2Jzd-Dody9iq1/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/clusters","query":{},"buildId":"G3DXdMFu2Jzd-Dody9iq1","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/5d71bfc09f184bab.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/5d71bfc09f184bab.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/dashboard/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js"></script><script src="/dashboard/_next/static/chunks/webpack-208a9812ab4f61c9.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-87d061ee6ed71b28.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-e0e2335212e72357.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-7bbd9d39d6f9a98a.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/config-497a35a7ed49734a.js" defer=""></script><script src="/dashboard/_next/static/zJqasksBQ3HcqMpA2wTUZ/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/zJqasksBQ3HcqMpA2wTUZ/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/config","query":{},"buildId":"zJqasksBQ3HcqMpA2wTUZ","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/5d71bfc09f184bab.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/5d71bfc09f184bab.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/dashboard/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js"></script><script src="/dashboard/_next/static/chunks/webpack-208a9812ab4f61c9.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-87d061ee6ed71b28.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-e0e2335212e72357.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-7bbd9d39d6f9a98a.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/config-497a35a7ed49734a.js" defer=""></script><script src="/dashboard/_next/static/G3DXdMFu2Jzd-Dody9iq1/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/G3DXdMFu2Jzd-Dody9iq1/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/config","query":{},"buildId":"G3DXdMFu2Jzd-Dody9iq1","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/5d71bfc09f184bab.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/5d71bfc09f184bab.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/dashboard/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js"></script><script src="/dashboard/_next/static/chunks/webpack-208a9812ab4f61c9.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-87d061ee6ed71b28.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-e0e2335212e72357.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-7bbd9d39d6f9a98a.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/index-6b0d9e5031b70c58.js" defer=""></script><script src="/dashboard/_next/static/zJqasksBQ3HcqMpA2wTUZ/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/zJqasksBQ3HcqMpA2wTUZ/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/","query":{},"buildId":"zJqasksBQ3HcqMpA2wTUZ","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/5d71bfc09f184bab.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/5d71bfc09f184bab.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/dashboard/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js"></script><script src="/dashboard/_next/static/chunks/webpack-208a9812ab4f61c9.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-87d061ee6ed71b28.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-e0e2335212e72357.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-7bbd9d39d6f9a98a.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/index-6b0d9e5031b70c58.js" defer=""></script><script src="/dashboard/_next/static/G3DXdMFu2Jzd-Dody9iq1/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/G3DXdMFu2Jzd-Dody9iq1/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/","query":{},"buildId":"G3DXdMFu2Jzd-Dody9iq1","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/5d71bfc09f184bab.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/5d71bfc09f184bab.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/dashboard/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js"></script><script src="/dashboard/_next/static/chunks/webpack-208a9812ab4f61c9.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-87d061ee6ed71b28.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-e0e2335212e72357.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-7bbd9d39d6f9a98a.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/infra/%5Bcontext%5D-d2910be98e9227cb.js" defer=""></script><script src="/dashboard/_next/static/zJqasksBQ3HcqMpA2wTUZ/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/zJqasksBQ3HcqMpA2wTUZ/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/infra/[context]","query":{},"buildId":"zJqasksBQ3HcqMpA2wTUZ","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/5d71bfc09f184bab.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/5d71bfc09f184bab.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/dashboard/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js"></script><script src="/dashboard/_next/static/chunks/webpack-208a9812ab4f61c9.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-87d061ee6ed71b28.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-e0e2335212e72357.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-7bbd9d39d6f9a98a.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/infra/%5Bcontext%5D-d2910be98e9227cb.js" defer=""></script><script src="/dashboard/_next/static/G3DXdMFu2Jzd-Dody9iq1/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/G3DXdMFu2Jzd-Dody9iq1/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/infra/[context]","query":{},"buildId":"G3DXdMFu2Jzd-Dody9iq1","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/5d71bfc09f184bab.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/5d71bfc09f184bab.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/dashboard/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js"></script><script src="/dashboard/_next/static/chunks/webpack-208a9812ab4f61c9.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-87d061ee6ed71b28.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-e0e2335212e72357.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-7bbd9d39d6f9a98a.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/infra-780860bcc1103945.js" defer=""></script><script src="/dashboard/_next/static/zJqasksBQ3HcqMpA2wTUZ/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/zJqasksBQ3HcqMpA2wTUZ/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/infra","query":{},"buildId":"zJqasksBQ3HcqMpA2wTUZ","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/5d71bfc09f184bab.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/5d71bfc09f184bab.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/dashboard/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js"></script><script src="/dashboard/_next/static/chunks/webpack-208a9812ab4f61c9.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-87d061ee6ed71b28.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-e0e2335212e72357.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-7bbd9d39d6f9a98a.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/infra-780860bcc1103945.js" defer=""></script><script src="/dashboard/_next/static/G3DXdMFu2Jzd-Dody9iq1/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/G3DXdMFu2Jzd-Dody9iq1/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/infra","query":{},"buildId":"G3DXdMFu2Jzd-Dody9iq1","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/5d71bfc09f184bab.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/5d71bfc09f184bab.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/dashboard/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js"></script><script src="/dashboard/_next/static/chunks/webpack-208a9812ab4f61c9.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-87d061ee6ed71b28.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-e0e2335212e72357.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-7bbd9d39d6f9a98a.js" defer=""></script><script src="/dashboard/_next/static/chunks/616-d6128fa9e7cae6e6.js" defer=""></script><script src="/dashboard/_next/static/chunks/760-a89d354797ce7af5.js" defer=""></script><script src="/dashboard/_next/static/chunks/799-3625946b2ec2eb30.js" defer=""></script><script src="/dashboard/_next/static/chunks/804-4c9fc53aa74bc191.js" defer=""></script><script src="/dashboard/_next/static/chunks/664-047bc03493fda379.js" defer=""></script><script src="/dashboard/_next/static/chunks/798-c0525dc3f21e488d.js" defer=""></script><script src="/dashboard/_next/static/chunks/470-4d1a5dbe58a8a2b9.js" defer=""></script><script src="/dashboard/_next/static/chunks/969-20d54a9d998dc102.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/jobs/%5Bjob%5D-b3dbf38b51cb29be.js" defer=""></script><script src="/dashboard/_next/static/zJqasksBQ3HcqMpA2wTUZ/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/zJqasksBQ3HcqMpA2wTUZ/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/jobs/[job]","query":{},"buildId":"zJqasksBQ3HcqMpA2wTUZ","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/5d71bfc09f184bab.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/5d71bfc09f184bab.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/dashboard/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js"></script><script src="/dashboard/_next/static/chunks/webpack-208a9812ab4f61c9.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-87d061ee6ed71b28.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-e0e2335212e72357.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-7bbd9d39d6f9a98a.js" defer=""></script><script src="/dashboard/_next/static/chunks/616-d6128fa9e7cae6e6.js" defer=""></script><script src="/dashboard/_next/static/chunks/760-a89d354797ce7af5.js" defer=""></script><script src="/dashboard/_next/static/chunks/799-3625946b2ec2eb30.js" defer=""></script><script src="/dashboard/_next/static/chunks/804-4c9fc53aa74bc191.js" defer=""></script><script src="/dashboard/_next/static/chunks/664-047bc03493fda379.js" defer=""></script><script src="/dashboard/_next/static/chunks/798-c0525dc3f21e488d.js" defer=""></script><script src="/dashboard/_next/static/chunks/470-4d1a5dbe58a8a2b9.js" defer=""></script><script src="/dashboard/_next/static/chunks/969-20d54a9d998dc102.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/jobs/%5Bjob%5D-b3dbf38b51cb29be.js" defer=""></script><script src="/dashboard/_next/static/G3DXdMFu2Jzd-Dody9iq1/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/G3DXdMFu2Jzd-Dody9iq1/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/jobs/[job]","query":{},"buildId":"G3DXdMFu2Jzd-Dody9iq1","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/5d71bfc09f184bab.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/5d71bfc09f184bab.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/dashboard/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js"></script><script src="/dashboard/_next/static/chunks/webpack-208a9812ab4f61c9.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-87d061ee6ed71b28.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-e0e2335212e72357.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-7bbd9d39d6f9a98a.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/jobs-fe233baf3d073491.js" defer=""></script><script src="/dashboard/_next/static/zJqasksBQ3HcqMpA2wTUZ/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/zJqasksBQ3HcqMpA2wTUZ/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/jobs","query":{},"buildId":"zJqasksBQ3HcqMpA2wTUZ","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/5d71bfc09f184bab.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/5d71bfc09f184bab.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/dashboard/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js"></script><script src="/dashboard/_next/static/chunks/webpack-208a9812ab4f61c9.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-87d061ee6ed71b28.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-e0e2335212e72357.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-7bbd9d39d6f9a98a.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/jobs-fe233baf3d073491.js" defer=""></script><script src="/dashboard/_next/static/G3DXdMFu2Jzd-Dody9iq1/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/G3DXdMFu2Jzd-Dody9iq1/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/jobs","query":{},"buildId":"G3DXdMFu2Jzd-Dody9iq1","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/5d71bfc09f184bab.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/5d71bfc09f184bab.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/dashboard/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js"></script><script src="/dashboard/_next/static/chunks/webpack-208a9812ab4f61c9.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-87d061ee6ed71b28.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-e0e2335212e72357.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-7bbd9d39d6f9a98a.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/users-c69ffcab9d6e5269.js" defer=""></script><script src="/dashboard/_next/static/zJqasksBQ3HcqMpA2wTUZ/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/zJqasksBQ3HcqMpA2wTUZ/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/users","query":{},"buildId":"zJqasksBQ3HcqMpA2wTUZ","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/5d71bfc09f184bab.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/5d71bfc09f184bab.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/dashboard/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js"></script><script src="/dashboard/_next/static/chunks/webpack-208a9812ab4f61c9.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-87d061ee6ed71b28.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-e0e2335212e72357.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-7bbd9d39d6f9a98a.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/users-c69ffcab9d6e5269.js" defer=""></script><script src="/dashboard/_next/static/G3DXdMFu2Jzd-Dody9iq1/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/G3DXdMFu2Jzd-Dody9iq1/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/users","query":{},"buildId":"G3DXdMFu2Jzd-Dody9iq1","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/5d71bfc09f184bab.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/5d71bfc09f184bab.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/dashboard/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js"></script><script src="/dashboard/_next/static/chunks/webpack-208a9812ab4f61c9.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-87d061ee6ed71b28.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-e0e2335212e72357.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-7bbd9d39d6f9a98a.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/workspace/new-31aa8bdcb7592635.js" defer=""></script><script src="/dashboard/_next/static/zJqasksBQ3HcqMpA2wTUZ/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/zJqasksBQ3HcqMpA2wTUZ/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/workspace/new","query":{},"buildId":"zJqasksBQ3HcqMpA2wTUZ","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/5d71bfc09f184bab.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/5d71bfc09f184bab.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/dashboard/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js"></script><script src="/dashboard/_next/static/chunks/webpack-208a9812ab4f61c9.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-87d061ee6ed71b28.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-e0e2335212e72357.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-7bbd9d39d6f9a98a.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/workspace/new-31aa8bdcb7592635.js" defer=""></script><script src="/dashboard/_next/static/G3DXdMFu2Jzd-Dody9iq1/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/G3DXdMFu2Jzd-Dody9iq1/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/workspace/new","query":{},"buildId":"G3DXdMFu2Jzd-Dody9iq1","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/5d71bfc09f184bab.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/5d71bfc09f184bab.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/dashboard/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js"></script><script src="/dashboard/_next/static/chunks/webpack-208a9812ab4f61c9.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-87d061ee6ed71b28.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-e0e2335212e72357.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-7bbd9d39d6f9a98a.js" defer=""></script><script src="/dashboard/_next/static/chunks/616-d6128fa9e7cae6e6.js" defer=""></script><script src="/dashboard/_next/static/chunks/760-a89d354797ce7af5.js" defer=""></script><script src="/dashboard/_next/static/chunks/799-3625946b2ec2eb30.js" defer=""></script><script src="/dashboard/_next/static/chunks/804-4c9fc53aa74bc191.js" defer=""></script><script src="/dashboard/_next/static/chunks/664-047bc03493fda379.js" defer=""></script><script src="/dashboard/_next/static/chunks/798-c0525dc3f21e488d.js" defer=""></script><script src="/dashboard/_next/static/chunks/947-6620842ef80ae879.js" defer=""></script><script src="/dashboard/_next/static/chunks/470-4d1a5dbe58a8a2b9.js" defer=""></script><script src="/dashboard/_next/static/chunks/901-b424d293275e1fd7.js" defer=""></script><script src="/dashboard/_next/static/chunks/969-20d54a9d998dc102.js" defer=""></script><script src="/dashboard/_next/static/chunks/856-0776dc6ed6000c39.js" defer=""></script><script src="/dashboard/_next/static/chunks/973-c807fc34f09c7df3.js" defer=""></script><script src="/dashboard/_next/static/chunks/938-ab185187a63f9cdb.js" defer=""></script><script src="/dashboard/_next/static/chunks/843-6fcc4bf91ac45b39.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/workspaces/%5Bname%5D-c8c2191328532b7d.js" defer=""></script><script src="/dashboard/_next/static/zJqasksBQ3HcqMpA2wTUZ/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/zJqasksBQ3HcqMpA2wTUZ/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/workspaces/[name]","query":{},"buildId":"zJqasksBQ3HcqMpA2wTUZ","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/5d71bfc09f184bab.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/5d71bfc09f184bab.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/dashboard/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js"></script><script src="/dashboard/_next/static/chunks/webpack-208a9812ab4f61c9.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-87d061ee6ed71b28.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-e0e2335212e72357.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-7bbd9d39d6f9a98a.js" defer=""></script><script src="/dashboard/_next/static/chunks/616-d6128fa9e7cae6e6.js" defer=""></script><script src="/dashboard/_next/static/chunks/760-a89d354797ce7af5.js" defer=""></script><script src="/dashboard/_next/static/chunks/799-3625946b2ec2eb30.js" defer=""></script><script src="/dashboard/_next/static/chunks/804-4c9fc53aa74bc191.js" defer=""></script><script src="/dashboard/_next/static/chunks/664-047bc03493fda379.js" defer=""></script><script src="/dashboard/_next/static/chunks/798-c0525dc3f21e488d.js" defer=""></script><script src="/dashboard/_next/static/chunks/947-6620842ef80ae879.js" defer=""></script><script src="/dashboard/_next/static/chunks/470-4d1a5dbe58a8a2b9.js" defer=""></script><script src="/dashboard/_next/static/chunks/901-b424d293275e1fd7.js" defer=""></script><script src="/dashboard/_next/static/chunks/969-20d54a9d998dc102.js" defer=""></script><script src="/dashboard/_next/static/chunks/856-0776dc6ed6000c39.js" defer=""></script><script src="/dashboard/_next/static/chunks/973-c807fc34f09c7df3.js" defer=""></script><script src="/dashboard/_next/static/chunks/938-ab185187a63f9cdb.js" defer=""></script><script src="/dashboard/_next/static/chunks/843-6fcc4bf91ac45b39.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/workspaces/%5Bname%5D-c8c2191328532b7d.js" defer=""></script><script src="/dashboard/_next/static/G3DXdMFu2Jzd-Dody9iq1/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/G3DXdMFu2Jzd-Dody9iq1/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/workspaces/[name]","query":{},"buildId":"G3DXdMFu2Jzd-Dody9iq1","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/5d71bfc09f184bab.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/5d71bfc09f184bab.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/dashboard/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js"></script><script src="/dashboard/_next/static/chunks/webpack-208a9812ab4f61c9.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-87d061ee6ed71b28.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-e0e2335212e72357.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-7bbd9d39d6f9a98a.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/workspaces-82e6601baa5dd280.js" defer=""></script><script src="/dashboard/_next/static/zJqasksBQ3HcqMpA2wTUZ/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/zJqasksBQ3HcqMpA2wTUZ/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/workspaces","query":{},"buildId":"zJqasksBQ3HcqMpA2wTUZ","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/5d71bfc09f184bab.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/5d71bfc09f184bab.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/dashboard/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js"></script><script src="/dashboard/_next/static/chunks/webpack-208a9812ab4f61c9.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-87d061ee6ed71b28.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-e0e2335212e72357.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-7bbd9d39d6f9a98a.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/workspaces-82e6601baa5dd280.js" defer=""></script><script src="/dashboard/_next/static/G3DXdMFu2Jzd-Dody9iq1/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/G3DXdMFu2Jzd-Dody9iq1/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/workspaces","query":{},"buildId":"G3DXdMFu2Jzd-Dody9iq1","assetPrefix":"/dashboard","nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html>
@@ -45,6 +45,7 @@ if typing.TYPE_CHECKING:
45
45
  logger = sky_logging.init_logger(__name__)
46
46
 
47
47
  _ENABLED_CLOUDS_KEY_PREFIX = 'enabled_clouds_'
48
+ _ALLOWED_CLOUDS_KEY_PREFIX = 'allowed_clouds_'
48
49
 
49
50
  _SQLALCHEMY_ENGINE: Optional[sqlalchemy.engine.Engine] = None
50
51
  _DB_INIT_LOCK = threading.Lock()
@@ -1087,6 +1088,43 @@ def _get_enabled_clouds_key(cloud_capability: 'cloud.CloudCapability',
1087
1088
  return _ENABLED_CLOUDS_KEY_PREFIX + workspace + '_' + cloud_capability.value
1088
1089
 
1089
1090
 
1091
+ @_init_db
1092
+ def get_allowed_clouds(workspace: str) -> List[str]:
1093
+ assert _SQLALCHEMY_ENGINE is not None
1094
+ with orm.Session(_SQLALCHEMY_ENGINE) as session:
1095
+ row = session.query(config_table).filter_by(
1096
+ key=_get_allowed_clouds_key(workspace)).first()
1097
+ if row:
1098
+ return json.loads(row.value)
1099
+ return []
1100
+
1101
+
1102
+ @_init_db
1103
+ def set_allowed_clouds(allowed_clouds: List[str], workspace: str) -> None:
1104
+ assert _SQLALCHEMY_ENGINE is not None
1105
+ with orm.Session(_SQLALCHEMY_ENGINE) as session:
1106
+ if (_SQLALCHEMY_ENGINE.dialect.name ==
1107
+ db_utils.SQLAlchemyDialect.SQLITE.value):
1108
+ insert_func = sqlite.insert
1109
+ elif (_SQLALCHEMY_ENGINE.dialect.name ==
1110
+ db_utils.SQLAlchemyDialect.POSTGRESQL.value):
1111
+ insert_func = postgresql.insert
1112
+ else:
1113
+ raise ValueError('Unsupported database dialect')
1114
+ insert_stmnt = insert_func(config_table).values(
1115
+ key=_get_allowed_clouds_key(workspace),
1116
+ value=json.dumps(allowed_clouds))
1117
+ do_update_stmt = insert_stmnt.on_conflict_do_update(
1118
+ index_elements=[config_table.c.key],
1119
+ set_={config_table.c.value: json.dumps(allowed_clouds)})
1120
+ session.execute(do_update_stmt)
1121
+ session.commit()
1122
+
1123
+
1124
+ def _get_allowed_clouds_key(workspace: str) -> str:
1125
+ return _ALLOWED_CLOUDS_KEY_PREFIX + workspace
1126
+
1127
+
1090
1128
  @_init_db
1091
1129
  def add_or_update_storage(storage_name: str,
1092
1130
  storage_handle: 'Storage.StorageMetadata',
@@ -1,9 +1,6 @@
1
1
  """SDK functions for managed jobs."""
2
2
  import os
3
- import signal
4
- import subprocess
5
3
  import tempfile
6
- import time
7
4
  import typing
8
5
  from typing import Any, Dict, List, Optional, Tuple, Union
9
6
  import uuid
@@ -213,8 +210,6 @@ def launch(
213
210
  'remote_env_file_path': remote_env_file_path,
214
211
  'modified_catalogs':
215
212
  service_catalog_common.get_modified_catalog_file_mounts(),
216
- 'dashboard_setup_cmd': managed_job_constants.DASHBOARD_SETUP_CMD,
217
- 'dashboard_user_id': common.SERVER_ID,
218
213
  'priority': priority,
219
214
  **controller_utils.shared_controller_vars_to_fill(
220
215
  controller,
@@ -368,20 +363,7 @@ def _maybe_restart_controller(
368
363
  skylet_constants.SKYPILOT_DEFAULT_WORKSPACE):
369
364
  handle = core.start(
370
365
  cluster_name=jobs_controller_type.value.cluster_name)
371
- # Make sure the dashboard is running when the controller is restarted.
372
- # We should not directly use execution.launch() and have the dashboard cmd
373
- # in the task setup because since we are using detached_setup, it will
374
- # become a job on controller which messes up the job IDs (we assume the
375
- # job ID in controller's job queue is consistent with managed job IDs).
376
- with rich_utils.safe_status(
377
- ux_utils.spinner_message('Starting dashboard...')):
378
- runner = handle.get_command_runners()[0]
379
- runner.run(
380
- f'export '
381
- f'{skylet_constants.USER_ID_ENV_VAR}={common.SERVER_ID!r}; '
382
- f'{managed_job_constants.DASHBOARD_SETUP_CMD}',
383
- stream_logs=True,
384
- )
366
+
385
367
  controller_status = status_lib.ClusterStatus.UP
386
368
  rich_utils.force_update_status(ux_utils.spinner_message(spinner_message))
387
369
 
@@ -598,55 +580,6 @@ def tail_logs(name: Optional[str],
598
580
  tail=tail)
599
581
 
600
582
 
601
- def start_dashboard_forwarding(refresh: bool = False) -> Tuple[int, int]:
602
- """Opens a dashboard for managed jobs (needs controller to be UP)."""
603
- # TODO(SKY-1212): ideally, the controller/dashboard server should expose the
604
- # API perhaps via REST. Then here we would (1) not have to use SSH to try to
605
- # see if the controller is UP first, which is slow; (2) not have to run SSH
606
- # port forwarding first (we'd just launch a local dashboard which would make
607
- # REST API calls to the controller dashboard server).
608
- logger.info('Starting dashboard')
609
- hint = ('Dashboard is not available if jobs controller is not up. Run '
610
- 'a managed job first or run: sky jobs queue --refresh')
611
- handle = _maybe_restart_controller(
612
- refresh=refresh,
613
- stopped_message=hint,
614
- spinner_message='Checking jobs controller')
615
-
616
- # SSH forward a free local port to remote's dashboard port.
617
- remote_port = skylet_constants.SPOT_DASHBOARD_REMOTE_PORT
618
- free_port = common_utils.find_free_port(remote_port)
619
- runner = handle.get_command_runners()[0]
620
- port_forward_command = ' '.join(
621
- runner.port_forward_command(port_forward=[(free_port, remote_port)],
622
- connect_timeout=1))
623
- port_forward_command = (
624
- f'{port_forward_command} '
625
- f'> ~/sky_logs/api_server/dashboard-{common_utils.get_user_hash()}.log '
626
- '2>&1')
627
- logger.info(f'Forwarding port: {colorama.Style.DIM}{port_forward_command}'
628
- f'{colorama.Style.RESET_ALL}')
629
-
630
- ssh_process = subprocess.Popen(port_forward_command,
631
- shell=True,
632
- start_new_session=True)
633
- time.sleep(3) # Added delay for ssh_command to initialize.
634
- logger.info(f'{colorama.Fore.GREEN}Dashboard is now available at: '
635
- f'http://127.0.0.1:{free_port}{colorama.Style.RESET_ALL}')
636
-
637
- return free_port, ssh_process.pid
638
-
639
-
640
- def stop_dashboard_forwarding(pid: int) -> None:
641
- # Exit the ssh command when the context manager is closed.
642
- try:
643
- os.killpg(os.getpgid(pid), signal.SIGTERM)
644
- except ProcessLookupError:
645
- # This happens if jobs controller is auto-stopped.
646
- pass
647
- logger.info('Forwarding port closed. Exiting.')
648
-
649
-
650
583
  @usage_lib.entrypoint
651
584
  def download_logs(
652
585
  name: Optional[str],
@@ -29,29 +29,6 @@ setup: |
29
29
  grep -q 'export SKYPILOT_DEV=' ~/.bashrc || echo 'export SKYPILOT_DEV=1' >> ~/.bashrc
30
30
  grep -q 'alias sky-env=' ~/.bashrc || echo 'alias sky-env="{{ sky_activate_python_env }}"' >> ~/.bashrc
31
31
  {% endif %}
32
-
33
- # Create systemd service file
34
- mkdir -p ~/.config/systemd/user/
35
-
36
- # Create systemd user service file
37
- cat << EOF > ~/.config/systemd/user/skypilot-dashboard.service
38
- [Unit]
39
- Description=SkyPilot Jobs Dashboard
40
- After=network.target
41
-
42
- [Service]
43
- Environment="SKYPILOT_USER_ID={{ dashboard_user_id }}"
44
- Restart=always
45
- StandardOutput=append:/home/$USER/.sky/job-dashboard.log
46
- StandardError=append:/home/$USER/.sky/job-dashboard.log
47
- ExecStart={{ sky_python_cmd }} -m sky.jobs.dashboard.dashboard
48
-
49
- [Install]
50
- WantedBy=default.target
51
- EOF
52
-
53
- export SKYPILOT_USER_ID="{{ dashboard_user_id }}"
54
- {{ dashboard_setup_cmd }}
55
32
 
56
33
  run: |
57
34
  {{ sky_activate_python_env }}
@@ -285,6 +285,16 @@ def _get_cloud_dependencies_installation_commands(
285
285
  commands.append(
286
286
  '(command -v gke-gcloud-auth-plugin &>/dev/null || '
287
287
  '(gcloud components install gke-gcloud-auth-plugin --quiet &>/dev/null))') # pylint: disable=line-too-long
288
+ elif isinstance(cloud, clouds.Nebius):
289
+ step_prefix = prefix_str.replace('<step>', str(len(commands) + 1))
290
+ commands.append(
291
+ f'echo -en "\\r{step_prefix}Nebius{empty_str}" && '
292
+ 'curl -sSL https://storage.eu-north1.nebius.cloud/cli/install.sh ' # pylint: disable=line-too-long
293
+ '| sudo NEBIUS_INSTALL_FOLDER=/usr/local/bin bash &> /dev/null && '
294
+ 'nebius profile create --profile sky '
295
+ '--endpoint api.nebius.cloud '
296
+ '--service-account-file $HOME/.nebius/credentials.json '
297
+ '&> /dev/null || echo "Unable to create Nebius profile."')
288
298
  elif isinstance(cloud, clouds.Kubernetes):
289
299
  step_prefix = prefix_str.replace('<step>', str(len(commands) + 1))
290
300
  commands.append(
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: skypilot-nightly
3
- Version: 1.0.0.dev20250611
3
+ Version: 1.0.0.dev20250612
4
4
  Summary: SkyPilot: Run AI on Any Infra — Unified, Faster, Cheaper.
5
5
  Author: SkyPilot Team
6
6
  License: Apache 2.0
@@ -118,6 +118,8 @@ sky/dashboard/out/jobs.html
118
118
  sky/dashboard/out/skypilot.svg
119
119
  sky/dashboard/out/users.html
120
120
  sky/dashboard/out/workspaces.html
121
+ sky/dashboard/out/_next/static/G3DXdMFu2Jzd-Dody9iq1/_buildManifest.js
122
+ sky/dashboard/out/_next/static/G3DXdMFu2Jzd-Dody9iq1/_ssgManifest.js
121
123
  sky/dashboard/out/_next/static/chunks/211.692afc57e812ae1a.js
122
124
  sky/dashboard/out/_next/static/chunks/350.9e123a4551f68b0d.js
123
125
  sky/dashboard/out/_next/static/chunks/37-d8aebf1683522a0b.js
@@ -164,8 +166,6 @@ sky/dashboard/out/_next/static/chunks/pages/jobs/[job]-b3dbf38b51cb29be.js
164
166
  sky/dashboard/out/_next/static/chunks/pages/workspace/new-31aa8bdcb7592635.js
165
167
  sky/dashboard/out/_next/static/chunks/pages/workspaces/[name]-c8c2191328532b7d.js
166
168
  sky/dashboard/out/_next/static/css/5d71bfc09f184bab.css
167
- sky/dashboard/out/_next/static/zJqasksBQ3HcqMpA2wTUZ/_buildManifest.js
168
- sky/dashboard/out/_next/static/zJqasksBQ3HcqMpA2wTUZ/_ssgManifest.js
169
169
  sky/dashboard/out/clusters/[cluster].html
170
170
  sky/dashboard/out/clusters/[cluster]/[job].html
171
171
  sky/dashboard/out/infra/[context].html
@@ -188,12 +188,8 @@ sky/jobs/state.py
188
188
  sky/jobs/utils.py
189
189
  sky/jobs/client/__init__.py
190
190
  sky/jobs/client/sdk.py
191
- sky/jobs/dashboard/dashboard.py
192
- sky/jobs/dashboard/static/favicon.ico
193
- sky/jobs/dashboard/templates/index.html
194
191
  sky/jobs/server/__init__.py
195
192
  sky/jobs/server/core.py
196
- sky/jobs/server/dashboard_utils.py
197
193
  sky/jobs/server/server.py
198
194
  sky/provision/__init__.py
199
195
  sky/provision/common.py