skypilot-nightly 1.0.0.dev20250812__tar.gz → 1.0.0.dev20250815__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of skypilot-nightly might be problematic. Click here for more details.

Files changed (589) hide show
  1. {skypilot_nightly-1.0.0.dev20250812/skypilot_nightly.egg-info → skypilot_nightly-1.0.0.dev20250815}/PKG-INFO +5 -7
  2. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/__init__.py +4 -2
  3. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/adaptors/nebius.py +43 -1
  4. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/backends/backend_utils.py +74 -7
  5. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/backends/cloud_vm_ray_backend.py +169 -29
  6. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/catalog/cudo_catalog.py +1 -1
  7. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/catalog/data_fetchers/fetch_cudo.py +1 -1
  8. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/catalog/data_fetchers/fetch_nebius.py +6 -3
  9. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/client/cli/command.py +62 -85
  10. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/client/common.py +1 -1
  11. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/client/sdk.py +69 -19
  12. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/client/sdk_async.py +5 -4
  13. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/clouds/aws.py +52 -1
  14. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/clouds/kubernetes.py +15 -5
  15. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/clouds/nebius.py +3 -1
  16. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/dag.py +1 -0
  17. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/dashboard/out/404.html +1 -1
  18. skypilot_nightly-1.0.0.dev20250815/sky/dashboard/out/_next/static/I-djf3wB8zZl_bI67BOyZ/_buildManifest.js +1 -0
  19. skypilot_nightly-1.0.0.dev20250815/sky/dashboard/out/_next/static/chunks/1141-a96678fed5043c12.js +1 -0
  20. skypilot_nightly-1.0.0.dev20250815/sky/dashboard/out/_next/static/chunks/2350.fab69e61bac57b23.js +1 -0
  21. skypilot_nightly-1.0.0.dev20250815/sky/dashboard/out/_next/static/chunks/3015-77d22ae2fad4071c.js +1 -0
  22. skypilot_nightly-1.0.0.dev20250815/sky/dashboard/out/_next/static/chunks/3785.8ce85b31e5c602e9.js +1 -0
  23. skypilot_nightly-1.0.0.dev20250815/sky/dashboard/out/_next/static/chunks/4045.b30465273dc5e468.js +21 -0
  24. skypilot_nightly-1.0.0.dev20250815/sky/dashboard/out/_next/static/chunks/4509-fa63866741388427.js +1 -0
  25. skypilot_nightly-1.0.0.dev20250815/sky/dashboard/out/_next/static/chunks/4676-9da7fdbde90b5549.js +10 -0
  26. skypilot_nightly-1.0.0.dev20250815/sky/dashboard/out/_next/static/chunks/4725.68d5ce4d6bcb7991.js +1 -0
  27. skypilot_nightly-1.0.0.dev20250815/sky/dashboard/out/_next/static/chunks/6014.d466a44b73af8348.js +6 -0
  28. skypilot_nightly-1.0.0.dev20250812/sky/dashboard/out/_next/static/chunks/6135-85426374db04811e.js → skypilot_nightly-1.0.0.dev20250815/sky/dashboard/out/_next/static/chunks/6135-4b4d5e824b7f9d3c.js +1 -1
  29. skypilot_nightly-1.0.0.dev20250815/sky/dashboard/out/_next/static/chunks/6633-efe924b9b8136699.js +40 -0
  30. skypilot_nightly-1.0.0.dev20250815/sky/dashboard/out/_next/static/chunks/6856-58370d8c9a79f72b.js +1 -0
  31. skypilot_nightly-1.0.0.dev20250812/sky/dashboard/out/_next/static/chunks/6989-6129c1cfbcf51063.js → skypilot_nightly-1.0.0.dev20250815/sky/dashboard/out/_next/static/chunks/6989-01359c57e018caa4.js +1 -1
  32. skypilot_nightly-1.0.0.dev20250815/sky/dashboard/out/_next/static/chunks/6990-08b2a1cae076a943.js +1 -0
  33. skypilot_nightly-1.0.0.dev20250815/sky/dashboard/out/_next/static/chunks/7325.b4bc99ce0892dcd5.js +6 -0
  34. skypilot_nightly-1.0.0.dev20250815/sky/dashboard/out/_next/static/chunks/754-d0da8ab45f9509e9.js +18 -0
  35. skypilot_nightly-1.0.0.dev20250815/sky/dashboard/out/_next/static/chunks/7557-5855617d0421ed55.js +1 -0
  36. skypilot_nightly-1.0.0.dev20250815/sky/dashboard/out/_next/static/chunks/8310.4ae62d5937045bf3.js +31 -0
  37. skypilot_nightly-1.0.0.dev20250815/sky/dashboard/out/_next/static/chunks/8838.e7953f42af2b0544.js +45 -0
  38. skypilot_nightly-1.0.0.dev20250815/sky/dashboard/out/_next/static/chunks/8969-6d493b1e2fa45826.js +1 -0
  39. skypilot_nightly-1.0.0.dev20250812/sky/dashboard/out/_next/static/chunks/1871-980a395e92633a5c.js → skypilot_nightly-1.0.0.dev20250815/sky/dashboard/out/_next/static/chunks/9037-f71c3c42670a4be0.js +2 -2
  40. skypilot_nightly-1.0.0.dev20250815/sky/dashboard/out/_next/static/chunks/9277.71481d5b2e606e33.js +51 -0
  41. skypilot_nightly-1.0.0.dev20250812/sky/dashboard/out/_next/static/chunks/pages/_app-491a4d699d95e808.js → skypilot_nightly-1.0.0.dev20250815/sky/dashboard/out/_next/static/chunks/pages/_app-ce361c6959bc2001.js +2 -2
  42. skypilot_nightly-1.0.0.dev20250812/sky/dashboard/out/_next/static/chunks/pages/clusters/[cluster]/[job]-078751bad714c017.js → skypilot_nightly-1.0.0.dev20250815/sky/dashboard/out/_next/static/chunks/pages/clusters/[cluster]/[job]-6d43d6a6bd1d4c77.js +2 -2
  43. skypilot_nightly-1.0.0.dev20250815/sky/dashboard/out/_next/static/chunks/pages/clusters/[cluster]-30c5954a7b1f67d7.js +16 -0
  44. skypilot_nightly-1.0.0.dev20250815/sky/dashboard/out/_next/static/chunks/pages/clusters-fa94c3548b5834aa.js +1 -0
  45. skypilot_nightly-1.0.0.dev20250812/sky/dashboard/out/_next/static/chunks/pages/infra/[context]-13d53fffc03ccb52.js → skypilot_nightly-1.0.0.dev20250815/sky/dashboard/out/_next/static/chunks/pages/infra/[context]-5264c5645299cde9.js +1 -1
  46. skypilot_nightly-1.0.0.dev20250812/sky/dashboard/out/_next/static/chunks/pages/infra-fc9222e26c8e2f0d.js → skypilot_nightly-1.0.0.dev20250815/sky/dashboard/out/_next/static/chunks/pages/infra-83991650ae4bd083.js +1 -1
  47. skypilot_nightly-1.0.0.dev20250815/sky/dashboard/out/_next/static/chunks/pages/jobs/[job]-ad2cd5aab787bc15.js +6 -0
  48. skypilot_nightly-1.0.0.dev20250812/sky/dashboard/out/_next/static/chunks/pages/jobs/pools/[pool]-f5ccf5d39d87aebe.js → skypilot_nightly-1.0.0.dev20250815/sky/dashboard/out/_next/static/chunks/pages/jobs/pools/[pool]-7d4182df6625fe10.js +2 -7
  49. skypilot_nightly-1.0.0.dev20250815/sky/dashboard/out/_next/static/chunks/pages/jobs-c6a6a8a737ad7e2d.js +1 -0
  50. skypilot_nightly-1.0.0.dev20250815/sky/dashboard/out/_next/static/chunks/pages/users-d112a9b3d854abb2.js +1 -0
  51. skypilot_nightly-1.0.0.dev20250815/sky/dashboard/out/_next/static/chunks/pages/volumes-b87fec189298a0c0.js +1 -0
  52. skypilot_nightly-1.0.0.dev20250812/sky/dashboard/out/_next/static/chunks/pages/workspaces/[name]-f72f73bcef9541dc.js → skypilot_nightly-1.0.0.dev20250815/sky/dashboard/out/_next/static/chunks/pages/workspaces/[name]-8a86ca4c98812df9.js +1 -1
  53. skypilot_nightly-1.0.0.dev20250815/sky/dashboard/out/_next/static/chunks/pages/workspaces-74ef46fc370f7c71.js +1 -0
  54. skypilot_nightly-1.0.0.dev20250815/sky/dashboard/out/_next/static/chunks/webpack-aba778a6d6eb496d.js +1 -0
  55. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/dashboard/out/clusters/[cluster]/[job].html +1 -1
  56. skypilot_nightly-1.0.0.dev20250815/sky/dashboard/out/clusters/[cluster].html +1 -0
  57. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/dashboard/out/clusters.html +1 -1
  58. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/dashboard/out/config.html +1 -1
  59. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/dashboard/out/index.html +1 -1
  60. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/dashboard/out/infra/[context].html +1 -1
  61. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/dashboard/out/infra.html +1 -1
  62. skypilot_nightly-1.0.0.dev20250815/sky/dashboard/out/jobs/[job].html +1 -0
  63. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/dashboard/out/jobs/pools/[pool].html +1 -1
  64. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/dashboard/out/jobs.html +1 -1
  65. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/dashboard/out/users.html +1 -1
  66. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/dashboard/out/volumes.html +1 -1
  67. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/dashboard/out/workspace/new.html +1 -1
  68. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/dashboard/out/workspaces/[name].html +1 -1
  69. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/dashboard/out/workspaces.html +1 -1
  70. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/data/storage.py +11 -1
  71. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/exceptions.py +5 -0
  72. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/execution.py +13 -10
  73. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/global_user_state.py +191 -8
  74. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/jobs/constants.py +1 -1
  75. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/jobs/controller.py +0 -1
  76. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/jobs/recovery_strategy.py +3 -3
  77. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/jobs/scheduler.py +35 -87
  78. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/jobs/server/core.py +82 -22
  79. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/jobs/server/utils.py +1 -1
  80. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/jobs/state.py +7 -5
  81. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/jobs/utils.py +167 -8
  82. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/provision/__init__.py +1 -0
  83. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/provision/aws/config.py +25 -0
  84. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/provision/aws/instance.py +37 -13
  85. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/provision/azure/instance.py +2 -0
  86. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/provision/cudo/cudo_wrapper.py +1 -1
  87. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/provision/cudo/instance.py +2 -0
  88. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/provision/do/instance.py +2 -0
  89. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/provision/fluidstack/instance.py +2 -0
  90. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/provision/gcp/instance.py +2 -0
  91. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/provision/hyperbolic/instance.py +2 -1
  92. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/provision/kubernetes/instance.py +133 -0
  93. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/provision/lambda_cloud/instance.py +2 -0
  94. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/provision/nebius/instance.py +2 -0
  95. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/provision/nebius/utils.py +101 -86
  96. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/provision/oci/instance.py +2 -0
  97. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/provision/paperspace/instance.py +2 -1
  98. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/provision/paperspace/utils.py +1 -1
  99. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/provision/provisioner.py +13 -8
  100. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/provision/runpod/instance.py +2 -0
  101. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/provision/runpod/utils.py +1 -1
  102. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/provision/scp/instance.py +2 -0
  103. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/provision/vast/instance.py +2 -0
  104. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/provision/vsphere/instance.py +2 -0
  105. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/resources.py +6 -7
  106. skypilot_nightly-1.0.0.dev20250815/sky/schemas/api/responses.py +70 -0
  107. skypilot_nightly-1.0.0.dev20250815/sky/schemas/db/global_user_state/006_provision_log.py +41 -0
  108. skypilot_nightly-1.0.0.dev20250815/sky/schemas/generated/autostopv1_pb2.py +36 -0
  109. skypilot_nightly-1.0.0.dev20250815/sky/schemas/generated/autostopv1_pb2.pyi +43 -0
  110. skypilot_nightly-1.0.0.dev20250815/sky/schemas/generated/autostopv1_pb2_grpc.py +146 -0
  111. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/serve/constants.py +3 -7
  112. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/serve/replica_managers.py +138 -117
  113. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/serve/serve_state.py +42 -0
  114. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/serve/serve_utils.py +58 -36
  115. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/serve/server/impl.py +15 -19
  116. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/serve/service.py +82 -33
  117. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/server/constants.py +1 -1
  118. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/server/requests/payloads.py +6 -0
  119. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/server/requests/serializers/decoders.py +12 -2
  120. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/server/requests/serializers/encoders.py +10 -2
  121. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/server/server.py +64 -16
  122. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/setup_files/dependencies.py +11 -10
  123. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/skylet/autostop_lib.py +38 -5
  124. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/skylet/constants.py +3 -1
  125. skypilot_nightly-1.0.0.dev20250815/sky/skylet/services.py +44 -0
  126. skypilot_nightly-1.0.0.dev20250815/sky/skylet/skylet.py +82 -0
  127. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/task.py +19 -16
  128. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/templates/aws-ray.yml.j2 +2 -2
  129. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/templates/jobs-controller.yaml.j2 +6 -0
  130. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/templates/kubernetes-ray.yml.j2 +1 -0
  131. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/utils/command_runner.py +1 -1
  132. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/utils/common_utils.py +20 -0
  133. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/utils/config_utils.py +29 -5
  134. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/utils/controller_utils.py +86 -0
  135. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/utils/db/db_utils.py +17 -0
  136. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/utils/db/migration_utils.py +1 -1
  137. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/utils/log_utils.py +14 -5
  138. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/utils/resources_utils.py +25 -1
  139. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/utils/schemas.py +6 -0
  140. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/utils/ux_utils.py +36 -5
  141. skypilot_nightly-1.0.0.dev20250815/sky/volumes/client/__init__.py +0 -0
  142. skypilot_nightly-1.0.0.dev20250815/sky/volumes/server/__init__.py +0 -0
  143. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/volumes/server/core.py +2 -2
  144. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/volumes/server/server.py +2 -2
  145. skypilot_nightly-1.0.0.dev20250815/sky/workspaces/__init__.py +0 -0
  146. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815/skypilot_nightly.egg-info}/PKG-INFO +5 -7
  147. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/skypilot_nightly.egg-info/SOURCES.txt +47 -38
  148. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/skypilot_nightly.egg-info/requires.txt +4 -14
  149. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/tests/test_failover.py +37 -30
  150. skypilot_nightly-1.0.0.dev20250815/tests/test_global_user_state.py +53 -0
  151. skypilot_nightly-1.0.0.dev20250812/sky/dashboard/out/_next/static/Fuy7OzApYTUMz2QgoP7dP/_buildManifest.js +0 -1
  152. skypilot_nightly-1.0.0.dev20250812/sky/dashboard/out/_next/static/chunks/1141-a8a8f1adba34c892.js +0 -11
  153. skypilot_nightly-1.0.0.dev20250812/sky/dashboard/out/_next/static/chunks/1559-6c00e20454194859.js +0 -30
  154. skypilot_nightly-1.0.0.dev20250812/sky/dashboard/out/_next/static/chunks/2369.fc20f0c2c8ed9fe7.js +0 -15
  155. skypilot_nightly-1.0.0.dev20250812/sky/dashboard/out/_next/static/chunks/2641.142718b6b78a6f9b.js +0 -1
  156. skypilot_nightly-1.0.0.dev20250812/sky/dashboard/out/_next/static/chunks/3785.6003d293cb83eab4.js +0 -1
  157. skypilot_nightly-1.0.0.dev20250812/sky/dashboard/out/_next/static/chunks/4725.29550342bd53afd8.js +0 -1
  158. skypilot_nightly-1.0.0.dev20250812/sky/dashboard/out/_next/static/chunks/4937.a2baa2df5572a276.js +0 -15
  159. skypilot_nightly-1.0.0.dev20250812/sky/dashboard/out/_next/static/chunks/6212-7bd06f60ba693125.js +0 -13
  160. skypilot_nightly-1.0.0.dev20250812/sky/dashboard/out/_next/static/chunks/6601-06114c982db410b6.js +0 -1
  161. skypilot_nightly-1.0.0.dev20250812/sky/dashboard/out/_next/static/chunks/691.5eeedf82cc243343.js +0 -55
  162. skypilot_nightly-1.0.0.dev20250812/sky/dashboard/out/_next/static/chunks/6990-0f886f16e0d55ff8.js +0 -1
  163. skypilot_nightly-1.0.0.dev20250812/sky/dashboard/out/_next/static/chunks/8056-5bdeda81199c0def.js +0 -1
  164. skypilot_nightly-1.0.0.dev20250812/sky/dashboard/out/_next/static/chunks/8252.62b0d23aed618bb2.js +0 -16
  165. skypilot_nightly-1.0.0.dev20250812/sky/dashboard/out/_next/static/chunks/8969-c9686994ddafcf01.js +0 -1
  166. skypilot_nightly-1.0.0.dev20250812/sky/dashboard/out/_next/static/chunks/9159-11421c0f2909236f.js +0 -1
  167. skypilot_nightly-1.0.0.dev20250812/sky/dashboard/out/_next/static/chunks/9360.85b0b1b4054574dd.js +0 -31
  168. skypilot_nightly-1.0.0.dev20250812/sky/dashboard/out/_next/static/chunks/9666.cd4273f2a5c5802c.js +0 -1
  169. skypilot_nightly-1.0.0.dev20250812/sky/dashboard/out/_next/static/chunks/9847.757720f3b40c0aa5.js +0 -30
  170. skypilot_nightly-1.0.0.dev20250812/sky/dashboard/out/_next/static/chunks/9984.c5564679e467d245.js +0 -1
  171. skypilot_nightly-1.0.0.dev20250812/sky/dashboard/out/_next/static/chunks/pages/clusters/[cluster]-da9cc0901349c2e9.js +0 -1
  172. skypilot_nightly-1.0.0.dev20250812/sky/dashboard/out/_next/static/chunks/pages/clusters-b30460f683e6ba96.js +0 -1
  173. skypilot_nightly-1.0.0.dev20250812/sky/dashboard/out/_next/static/chunks/pages/jobs/[job]-154f55cf8af55be5.js +0 -11
  174. skypilot_nightly-1.0.0.dev20250812/sky/dashboard/out/_next/static/chunks/pages/jobs-cdc60fb5d371e16a.js +0 -1
  175. skypilot_nightly-1.0.0.dev20250812/sky/dashboard/out/_next/static/chunks/pages/users-7ed36e44e779d5c7.js +0 -1
  176. skypilot_nightly-1.0.0.dev20250812/sky/dashboard/out/_next/static/chunks/pages/volumes-c9695d657f78b5dc.js +0 -1
  177. skypilot_nightly-1.0.0.dev20250812/sky/dashboard/out/_next/static/chunks/pages/workspaces-8f67be60165724cc.js +0 -1
  178. skypilot_nightly-1.0.0.dev20250812/sky/dashboard/out/_next/static/chunks/webpack-7fd0cf9dbecff10f.js +0 -1
  179. skypilot_nightly-1.0.0.dev20250812/sky/dashboard/out/clusters/[cluster].html +0 -1
  180. skypilot_nightly-1.0.0.dev20250812/sky/dashboard/out/jobs/[job].html +0 -1
  181. skypilot_nightly-1.0.0.dev20250812/sky/skylet/skylet.py +0 -37
  182. skypilot_nightly-1.0.0.dev20250812/tests/test_global_user_state.py +0 -12
  183. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/LICENSE +0 -0
  184. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/MANIFEST.in +0 -0
  185. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/README.md +0 -0
  186. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/pyproject.toml +0 -0
  187. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/setup.cfg +0 -0
  188. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/setup.py +0 -0
  189. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/adaptors/__init__.py +0 -0
  190. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/adaptors/aws.py +0 -0
  191. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/adaptors/azure.py +0 -0
  192. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/adaptors/cloudflare.py +0 -0
  193. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/adaptors/common.py +0 -0
  194. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/adaptors/cudo.py +0 -0
  195. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/adaptors/do.py +0 -0
  196. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/adaptors/docker.py +0 -0
  197. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/adaptors/gcp.py +0 -0
  198. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/adaptors/hyperbolic.py +0 -0
  199. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/adaptors/ibm.py +0 -0
  200. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/adaptors/kubernetes.py +0 -0
  201. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/adaptors/oci.py +0 -0
  202. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/adaptors/runpod.py +0 -0
  203. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/adaptors/vast.py +0 -0
  204. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/adaptors/vsphere.py +0 -0
  205. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/admin_policy.py +0 -0
  206. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/authentication.py +0 -0
  207. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/backends/__init__.py +0 -0
  208. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/backends/backend.py +0 -0
  209. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/backends/docker_utils.py +0 -0
  210. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/backends/local_docker_backend.py +0 -0
  211. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/backends/monkey_patches/monkey_patch_ray_up.py +0 -0
  212. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/backends/wheel_utils.py +0 -0
  213. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/catalog/__init__.py +0 -0
  214. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/catalog/aws_catalog.py +0 -0
  215. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/catalog/azure_catalog.py +0 -0
  216. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/catalog/common.py +0 -0
  217. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/catalog/config.py +0 -0
  218. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/catalog/data_fetchers/__init__.py +0 -0
  219. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/catalog/data_fetchers/analyze.py +0 -0
  220. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/catalog/data_fetchers/fetch_aws.py +0 -0
  221. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/catalog/data_fetchers/fetch_azure.py +0 -0
  222. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/catalog/data_fetchers/fetch_fluidstack.py +0 -0
  223. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/catalog/data_fetchers/fetch_gcp.py +0 -0
  224. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/catalog/data_fetchers/fetch_hyperbolic.py +0 -0
  225. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/catalog/data_fetchers/fetch_ibm.py +0 -0
  226. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/catalog/data_fetchers/fetch_lambda_cloud.py +0 -0
  227. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/catalog/data_fetchers/fetch_vast.py +0 -0
  228. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/catalog/data_fetchers/fetch_vsphere.py +0 -0
  229. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/catalog/do_catalog.py +0 -0
  230. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/catalog/fluidstack_catalog.py +0 -0
  231. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/catalog/gcp_catalog.py +0 -0
  232. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/catalog/hyperbolic_catalog.py +0 -0
  233. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/catalog/ibm_catalog.py +0 -0
  234. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/catalog/kubernetes_catalog.py +0 -0
  235. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/catalog/lambda_catalog.py +0 -0
  236. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/catalog/nebius_catalog.py +0 -0
  237. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/catalog/oci_catalog.py +0 -0
  238. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/catalog/paperspace_catalog.py +0 -0
  239. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/catalog/runpod_catalog.py +0 -0
  240. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/catalog/scp_catalog.py +0 -0
  241. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/catalog/ssh_catalog.py +0 -0
  242. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/catalog/vast_catalog.py +0 -0
  243. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/catalog/vsphere_catalog.py +0 -0
  244. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/check.py +0 -0
  245. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/cli.py +0 -0
  246. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/client/__init__.py +0 -0
  247. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/client/cli/__init__.py +0 -0
  248. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/client/cli/deprecation_utils.py +0 -0
  249. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/client/cli/flags.py +0 -0
  250. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/client/cli/git.py +0 -0
  251. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/client/oauth.py +0 -0
  252. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/client/service_account_auth.py +0 -0
  253. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/cloud_stores.py +0 -0
  254. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/clouds/__init__.py +0 -0
  255. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/clouds/azure.py +0 -0
  256. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/clouds/cloud.py +0 -0
  257. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/clouds/cudo.py +0 -0
  258. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/clouds/do.py +0 -0
  259. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/clouds/fluidstack.py +0 -0
  260. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/clouds/gcp.py +0 -0
  261. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/clouds/hyperbolic.py +0 -0
  262. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/clouds/ibm.py +0 -0
  263. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/clouds/lambda_cloud.py +0 -0
  264. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/clouds/oci.py +0 -0
  265. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/clouds/paperspace.py +0 -0
  266. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/clouds/runpod.py +0 -0
  267. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/clouds/scp.py +0 -0
  268. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/clouds/ssh.py +0 -0
  269. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/clouds/utils/__init__.py +0 -0
  270. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/clouds/utils/aws_utils.py +0 -0
  271. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/clouds/utils/azure_utils.py +0 -0
  272. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/clouds/utils/gcp_utils.py +0 -0
  273. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/clouds/utils/oci_utils.py +0 -0
  274. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/clouds/utils/scp_utils.py +0 -0
  275. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/clouds/vast.py +0 -0
  276. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/clouds/vsphere.py +0 -0
  277. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/core.py +0 -0
  278. {skypilot_nightly-1.0.0.dev20250812/sky/dashboard/out/_next/static/Fuy7OzApYTUMz2QgoP7dP → skypilot_nightly-1.0.0.dev20250815/sky/dashboard/out/_next/static/I-djf3wB8zZl_bI67BOyZ}/_ssgManifest.js +0 -0
  279. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/dashboard/out/_next/static/chunks/1272-1ef0bf0237faccdb.js +0 -0
  280. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/dashboard/out/_next/static/chunks/3850-ff4a9a69d978632b.js +0 -0
  281. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/dashboard/out/_next/static/chunks/3937.210053269f121201.js +0 -0
  282. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/dashboard/out/_next/static/chunks/5739-d67458fcb1386c92.js +0 -0
  283. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/dashboard/out/_next/static/chunks/6130-2be46d70a38f1e82.js +0 -0
  284. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/dashboard/out/_next/static/chunks/616-3d59f75e2ccf9321.js +0 -0
  285. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/dashboard/out/_next/static/chunks/7411-b15471acd2cba716.js +0 -0
  286. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/dashboard/out/_next/static/chunks/9025.a1bef12d672bb66d.js +0 -0
  287. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/dashboard/out/_next/static/chunks/fd9d1056-86323a29a8f7e46a.js +0 -0
  288. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/dashboard/out/_next/static/chunks/framework-cf60a09ccd051a10.js +0 -0
  289. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/dashboard/out/_next/static/chunks/main-app-587214043926b3cc.js +0 -0
  290. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/dashboard/out/_next/static/chunks/main-f15ccb73239a3bf1.js +0 -0
  291. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/dashboard/out/_next/static/chunks/pages/_error-c66a4e8afc46f17b.js +0 -0
  292. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/dashboard/out/_next/static/chunks/pages/config-dfb9bf07b13045f4.js +0 -0
  293. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/dashboard/out/_next/static/chunks/pages/index-444f1804401f04ea.js +0 -0
  294. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/dashboard/out/_next/static/chunks/pages/workspace/new-3f88a1c7e86a3f86.js +0 -0
  295. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/dashboard/out/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js +0 -0
  296. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/dashboard/out/_next/static/css/4614e06482d7309e.css +0 -0
  297. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/dashboard/out/favicon.ico +0 -0
  298. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/dashboard/out/skypilot.svg +0 -0
  299. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/dashboard/out/videos/cursor-small.mp4 +0 -0
  300. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/data/__init__.py +0 -0
  301. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/data/data_transfer.py +0 -0
  302. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/data/data_utils.py +0 -0
  303. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/data/mounting_utils.py +0 -0
  304. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/data/storage_utils.py +0 -0
  305. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/jobs/__init__.py +0 -0
  306. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/jobs/client/__init__.py +0 -0
  307. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/jobs/client/sdk.py +0 -0
  308. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/jobs/client/sdk_async.py +0 -0
  309. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/jobs/server/__init__.py +0 -0
  310. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/jobs/server/server.py +0 -0
  311. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/logs/__init__.py +0 -0
  312. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/logs/agent.py +0 -0
  313. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/logs/aws.py +0 -0
  314. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/logs/gcp.py +0 -0
  315. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/metrics/__init__.py +0 -0
  316. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/metrics/utils.py +0 -0
  317. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/models.py +0 -0
  318. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/optimizer.py +0 -0
  319. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/provision/aws/__init__.py +0 -0
  320. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/provision/aws/utils.py +0 -0
  321. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/provision/azure/__init__.py +0 -0
  322. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/provision/azure/azure-config-template.json +0 -0
  323. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/provision/azure/config.py +0 -0
  324. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/provision/common.py +0 -0
  325. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/provision/constants.py +0 -0
  326. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/provision/cudo/__init__.py +0 -0
  327. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/provision/cudo/config.py +0 -0
  328. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/provision/cudo/cudo_machine_type.py +0 -0
  329. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/provision/cudo/cudo_utils.py +0 -0
  330. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/provision/do/__init__.py +0 -0
  331. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/provision/do/config.py +0 -0
  332. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/provision/do/constants.py +0 -0
  333. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/provision/do/utils.py +0 -0
  334. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/provision/docker_utils.py +0 -0
  335. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/provision/fluidstack/__init__.py +0 -0
  336. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/provision/fluidstack/config.py +0 -0
  337. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/provision/fluidstack/fluidstack_utils.py +0 -0
  338. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/provision/gcp/__init__.py +0 -0
  339. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/provision/gcp/config.py +0 -0
  340. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/provision/gcp/constants.py +0 -0
  341. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/provision/gcp/instance_utils.py +0 -0
  342. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/provision/gcp/mig_utils.py +0 -0
  343. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/provision/gcp/volume_utils.py +0 -0
  344. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/provision/hyperbolic/__init__.py +0 -0
  345. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/provision/hyperbolic/config.py +0 -0
  346. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/provision/hyperbolic/utils.py +0 -0
  347. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/provision/instance_setup.py +0 -0
  348. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/provision/kubernetes/__init__.py +0 -0
  349. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/provision/kubernetes/config.py +0 -0
  350. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/provision/kubernetes/constants.py +0 -0
  351. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/provision/kubernetes/manifests/fusermount-server-daemonset.yaml +0 -0
  352. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/provision/kubernetes/network.py +0 -0
  353. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/provision/kubernetes/network_utils.py +0 -0
  354. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/provision/kubernetes/utils.py +0 -0
  355. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/provision/kubernetes/volume.py +0 -0
  356. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/provision/lambda_cloud/__init__.py +0 -0
  357. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/provision/lambda_cloud/config.py +0 -0
  358. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/provision/lambda_cloud/lambda_utils.py +0 -0
  359. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/provision/logging.py +0 -0
  360. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/provision/metadata_utils.py +0 -0
  361. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/provision/nebius/__init__.py +0 -0
  362. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/provision/nebius/config.py +0 -0
  363. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/provision/nebius/constants.py +0 -0
  364. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/provision/oci/__init__.py +0 -0
  365. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/provision/oci/config.py +0 -0
  366. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/provision/oci/query_utils.py +0 -0
  367. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/provision/paperspace/__init__.py +0 -0
  368. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/provision/paperspace/config.py +0 -0
  369. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/provision/paperspace/constants.py +0 -0
  370. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/provision/runpod/__init__.py +0 -0
  371. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/provision/runpod/api/__init__.py +0 -0
  372. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/provision/runpod/api/commands.py +0 -0
  373. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/provision/runpod/api/pods.py +0 -0
  374. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/provision/runpod/config.py +0 -0
  375. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/provision/scp/__init__.py +0 -0
  376. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/provision/scp/config.py +0 -0
  377. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/provision/ssh/__init__.py +0 -0
  378. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/provision/vast/__init__.py +0 -0
  379. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/provision/vast/config.py +0 -0
  380. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/provision/vast/utils.py +0 -0
  381. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/provision/vsphere/__init__.py +0 -0
  382. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/provision/vsphere/common/__init__.py +0 -0
  383. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/provision/vsphere/common/cls_api_client.py +0 -0
  384. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/provision/vsphere/common/cls_api_helper.py +0 -0
  385. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/provision/vsphere/common/custom_script.py +0 -0
  386. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/provision/vsphere/common/id_generator.py +0 -0
  387. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/provision/vsphere/common/metadata_utils.py +0 -0
  388. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/provision/vsphere/common/service_manager.py +0 -0
  389. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/provision/vsphere/common/service_manager_factory.py +0 -0
  390. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/provision/vsphere/common/ssl_helper.py +0 -0
  391. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/provision/vsphere/common/vapiconnect.py +0 -0
  392. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/provision/vsphere/common/vim_utils.py +0 -0
  393. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/provision/vsphere/config.py +0 -0
  394. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/provision/vsphere/vsphere_utils.py +0 -0
  395. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/py.typed +0 -0
  396. {skypilot_nightly-1.0.0.dev20250812/sky/serve/client → skypilot_nightly-1.0.0.dev20250815/sky/schemas}/__init__.py +0 -0
  397. {skypilot_nightly-1.0.0.dev20250812/sky/serve/server → skypilot_nightly-1.0.0.dev20250815/sky/schemas/api}/__init__.py +0 -0
  398. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/schemas/db/README +0 -0
  399. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/schemas/db/env.py +0 -0
  400. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/schemas/db/global_user_state/001_initial_schema.py +0 -0
  401. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/schemas/db/global_user_state/002_add_workspace_to_cluster_history.py +0 -0
  402. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/schemas/db/global_user_state/003_fix_initial_revision.py +0 -0
  403. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/schemas/db/global_user_state/004_is_managed.py +0 -0
  404. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/schemas/db/global_user_state/005_cluster_event.py +0 -0
  405. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/schemas/db/script.py.mako +0 -0
  406. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/schemas/db/serve_state/001_initial_schema.py +0 -0
  407. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/schemas/db/spot_jobs/001_initial_schema.py +0 -0
  408. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/schemas/db/spot_jobs/002_cluster_pool.py +0 -0
  409. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/schemas/db/spot_jobs/003_pool_hash.py +0 -0
  410. {skypilot_nightly-1.0.0.dev20250812/sky/server/auth → skypilot_nightly-1.0.0.dev20250815/sky/schemas/generated}/__init__.py +0 -0
  411. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/serve/__init__.py +0 -0
  412. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/serve/autoscalers.py +0 -0
  413. {skypilot_nightly-1.0.0.dev20250812/sky/server/requests → skypilot_nightly-1.0.0.dev20250815/sky/serve/client}/__init__.py +0 -0
  414. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/serve/client/impl.py +0 -0
  415. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/serve/client/sdk.py +0 -0
  416. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/serve/client/sdk_async.py +0 -0
  417. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/serve/controller.py +0 -0
  418. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/serve/load_balancer.py +0 -0
  419. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/serve/load_balancing_policies.py +0 -0
  420. {skypilot_nightly-1.0.0.dev20250812/sky/server/requests/queues → skypilot_nightly-1.0.0.dev20250815/sky/serve/server}/__init__.py +0 -0
  421. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/serve/server/core.py +0 -0
  422. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/serve/server/server.py +0 -0
  423. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/serve/service_spec.py +0 -0
  424. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/serve/spot_placer.py +0 -0
  425. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/server/__init__.py +0 -0
  426. {skypilot_nightly-1.0.0.dev20250812/sky/server/requests/serializers → skypilot_nightly-1.0.0.dev20250815/sky/server/auth}/__init__.py +0 -0
  427. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/server/auth/authn.py +0 -0
  428. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/server/auth/oauth2_proxy.py +0 -0
  429. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/server/common.py +0 -0
  430. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/server/config.py +0 -0
  431. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/server/daemons.py +0 -0
  432. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/server/html/log.html +0 -0
  433. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/server/html/token_page.html +0 -0
  434. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/server/metrics.py +0 -0
  435. {skypilot_nightly-1.0.0.dev20250812/sky/skylet → skypilot_nightly-1.0.0.dev20250815/sky/server/requests}/__init__.py +0 -0
  436. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/server/requests/event_loop.py +0 -0
  437. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/server/requests/executor.py +0 -0
  438. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/server/requests/preconditions.py +0 -0
  439. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/server/requests/process.py +0 -0
  440. {skypilot_nightly-1.0.0.dev20250812/sky/skylet/providers → skypilot_nightly-1.0.0.dev20250815/sky/server/requests/queues}/__init__.py +0 -0
  441. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/server/requests/queues/local_queue.py +0 -0
  442. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/server/requests/queues/mp_queue.py +0 -0
  443. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/server/requests/requests.py +0 -0
  444. {skypilot_nightly-1.0.0.dev20250812/sky/usage → skypilot_nightly-1.0.0.dev20250815/sky/server/requests/serializers}/__init__.py +0 -0
  445. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/server/rest.py +0 -0
  446. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/server/state.py +0 -0
  447. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/server/stream_utils.py +0 -0
  448. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/server/uvicorn.py +0 -0
  449. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/server/versions.py +0 -0
  450. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/setup_files/MANIFEST.in +0 -0
  451. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/setup_files/alembic.ini +0 -0
  452. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/setup_files/setup.py +0 -0
  453. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/sky_logging.py +0 -0
  454. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/skylet/LICENSE +0 -0
  455. {skypilot_nightly-1.0.0.dev20250812/sky/users → skypilot_nightly-1.0.0.dev20250815/sky/skylet}/__init__.py +0 -0
  456. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/skylet/attempt_skylet.py +0 -0
  457. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/skylet/configs.py +0 -0
  458. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/skylet/events.py +0 -0
  459. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/skylet/job_lib.py +0 -0
  460. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/skylet/log_lib.py +0 -0
  461. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/skylet/log_lib.pyi +0 -0
  462. {skypilot_nightly-1.0.0.dev20250812/sky/utils → skypilot_nightly-1.0.0.dev20250815/sky/skylet/providers}/__init__.py +0 -0
  463. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/skylet/providers/command_runner.py +0 -0
  464. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/skylet/providers/ibm/__init__.py +0 -0
  465. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/skylet/providers/ibm/node_provider.py +0 -0
  466. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/skylet/providers/ibm/utils.py +0 -0
  467. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/skylet/providers/ibm/vpc_provider.py +0 -0
  468. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/skylet/ray_patches/__init__.py +0 -0
  469. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/skylet/ray_patches/autoscaler.py.patch +0 -0
  470. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/skylet/ray_patches/cli.py.patch +0 -0
  471. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/skylet/ray_patches/command_runner.py.patch +0 -0
  472. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/skylet/ray_patches/log_monitor.py.patch +0 -0
  473. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/skylet/ray_patches/resource_demand_scheduler.py.patch +0 -0
  474. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/skylet/ray_patches/updater.py.patch +0 -0
  475. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/skylet/ray_patches/worker.py.patch +0 -0
  476. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/skylet/subprocess_daemon.py +0 -0
  477. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/skypilot_config.py +0 -0
  478. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/ssh_node_pools/__init__.py +0 -0
  479. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/ssh_node_pools/core.py +0 -0
  480. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/ssh_node_pools/server.py +0 -0
  481. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/templates/azure-ray.yml.j2 +0 -0
  482. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/templates/cudo-ray.yml.j2 +0 -0
  483. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/templates/do-ray.yml.j2 +0 -0
  484. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/templates/fluidstack-ray.yml.j2 +0 -0
  485. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/templates/gcp-ray.yml.j2 +0 -0
  486. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/templates/hyperbolic-ray.yml.j2 +0 -0
  487. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/templates/ibm-ray.yml.j2 +0 -0
  488. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/templates/kubernetes-ingress.yml.j2 +0 -0
  489. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/templates/kubernetes-loadbalancer.yml.j2 +0 -0
  490. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/templates/kubernetes-port-forward-proxy-command.sh +0 -0
  491. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/templates/kubernetes-ssh-jump.yml.j2 +0 -0
  492. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/templates/lambda-ray.yml.j2 +0 -0
  493. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/templates/local-ray.yml.j2 +0 -0
  494. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/templates/nebius-ray.yml.j2 +0 -0
  495. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/templates/oci-ray.yml.j2 +0 -0
  496. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/templates/paperspace-ray.yml.j2 +0 -0
  497. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/templates/runpod-ray.yml.j2 +0 -0
  498. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/templates/scp-ray.yml.j2 +0 -0
  499. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/templates/sky-serve-controller.yaml.j2 +0 -0
  500. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/templates/skypilot-server-kubernetes-proxy.sh +0 -0
  501. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/templates/vast-ray.yml.j2 +0 -0
  502. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/templates/vsphere-ray.yml.j2 +0 -0
  503. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/templates/websocket_proxy.py +0 -0
  504. {skypilot_nightly-1.0.0.dev20250812/sky/utils/aws → skypilot_nightly-1.0.0.dev20250815/sky/usage}/__init__.py +0 -0
  505. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/usage/constants.py +0 -0
  506. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/usage/usage_lib.py +0 -0
  507. {skypilot_nightly-1.0.0.dev20250812/sky/utils/cli_utils → skypilot_nightly-1.0.0.dev20250815/sky/users}/__init__.py +0 -0
  508. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/users/model.conf +0 -0
  509. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/users/permission.py +0 -0
  510. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/users/rbac.py +0 -0
  511. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/users/server.py +0 -0
  512. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/users/token_service.py +0 -0
  513. {skypilot_nightly-1.0.0.dev20250812/sky/utils/db → skypilot_nightly-1.0.0.dev20250815/sky/utils}/__init__.py +0 -0
  514. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/utils/accelerator_registry.py +0 -0
  515. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/utils/admin_policy_utils.py +0 -0
  516. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/utils/annotations.py +0 -0
  517. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/utils/atomic.py +0 -0
  518. {skypilot_nightly-1.0.0.dev20250812/sky/utils/kubernetes → skypilot_nightly-1.0.0.dev20250815/sky/utils/aws}/__init__.py +0 -0
  519. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/utils/aws/get_default_security_group.py +0 -0
  520. {skypilot_nightly-1.0.0.dev20250812/sky/volumes/client → skypilot_nightly-1.0.0.dev20250815/sky/utils/cli_utils}/__init__.py +0 -0
  521. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/utils/cli_utils/status_utils.py +0 -0
  522. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/utils/cluster_utils.py +0 -0
  523. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/utils/command_runner.pyi +0 -0
  524. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/utils/common.py +0 -0
  525. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/utils/context.py +0 -0
  526. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/utils/context_utils.py +0 -0
  527. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/utils/control_master_utils.py +0 -0
  528. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/utils/dag_utils.py +0 -0
  529. {skypilot_nightly-1.0.0.dev20250812/sky/volumes/server → skypilot_nightly-1.0.0.dev20250815/sky/utils/db}/__init__.py +0 -0
  530. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/utils/env_options.py +0 -0
  531. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/utils/git.py +0 -0
  532. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/utils/git_clone.sh +0 -0
  533. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/utils/infra_utils.py +0 -0
  534. {skypilot_nightly-1.0.0.dev20250812/sky/workspaces → skypilot_nightly-1.0.0.dev20250815/sky/utils/kubernetes}/__init__.py +0 -0
  535. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/utils/kubernetes/cleanup-tunnel.sh +0 -0
  536. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/utils/kubernetes/config_map_utils.py +0 -0
  537. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/utils/kubernetes/create_cluster.sh +0 -0
  538. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/utils/kubernetes/delete_cluster.sh +0 -0
  539. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/utils/kubernetes/deploy_remote_cluster.py +0 -0
  540. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/utils/kubernetes/exec_kubeconfig_converter.py +0 -0
  541. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/utils/kubernetes/generate_kind_config.py +0 -0
  542. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/utils/kubernetes/generate_kubeconfig.sh +0 -0
  543. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/utils/kubernetes/gpu_labeler.py +0 -0
  544. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/utils/kubernetes/k8s_gpu_labeler_job.yaml +0 -0
  545. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/utils/kubernetes/k8s_gpu_labeler_setup.yaml +0 -0
  546. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/utils/kubernetes/kubernetes_deploy_utils.py +0 -0
  547. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/utils/kubernetes/rsync_helper.sh +0 -0
  548. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/utils/kubernetes/ssh-tunnel.sh +0 -0
  549. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/utils/kubernetes/ssh_jump_lifecycle_manager.py +0 -0
  550. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/utils/kubernetes/ssh_utils.py +0 -0
  551. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/utils/kubernetes_enums.py +0 -0
  552. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/utils/locks.py +0 -0
  553. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/utils/message_utils.py +0 -0
  554. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/utils/registry.py +0 -0
  555. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/utils/resource_checker.py +0 -0
  556. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/utils/rich_console_utils.py +0 -0
  557. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/utils/rich_utils.py +0 -0
  558. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/utils/status_lib.py +0 -0
  559. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/utils/subprocess_utils.py +0 -0
  560. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/utils/tempstore.py +0 -0
  561. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/utils/timeline.py +0 -0
  562. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/utils/validator.py +0 -0
  563. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/utils/volume.py +0 -0
  564. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/volumes/__init__.py +0 -0
  565. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/volumes/client/sdk.py +0 -0
  566. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/volumes/utils.py +0 -0
  567. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/volumes/volume.py +0 -0
  568. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/workspaces/core.py +0 -0
  569. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/workspaces/server.py +0 -0
  570. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/sky/workspaces/utils.py +0 -0
  571. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/skypilot_nightly.egg-info/dependency_links.txt +0 -0
  572. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/skypilot_nightly.egg-info/entry_points.txt +0 -0
  573. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/skypilot_nightly.egg-info/top_level.txt +0 -0
  574. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/tests/test_api.py +0 -0
  575. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/tests/test_api_compatibility.py +0 -0
  576. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/tests/test_cli.py +0 -0
  577. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/tests/test_config.py +0 -0
  578. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/tests/test_db_utils.py +0 -0
  579. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/tests/test_jobs.py +0 -0
  580. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/tests/test_jobs_and_serve.py +0 -0
  581. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/tests/test_list_accelerators.py +0 -0
  582. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/tests/test_no_parellel.py +0 -0
  583. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/tests/test_optimizer_dryruns.py +0 -0
  584. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/tests/test_optimizer_random_dag.py +0 -0
  585. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/tests/test_serve_autoscaler.py +0 -0
  586. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/tests/test_smoke.py +0 -0
  587. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/tests/test_storage.py +0 -0
  588. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/tests/test_wheels.py +0 -0
  589. {skypilot_nightly-1.0.0.dev20250812 → skypilot_nightly-1.0.0.dev20250815}/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.dev20250812
3
+ Version: 1.0.0.dev20250815
4
4
  Summary: SkyPilot: Run AI on Any Infra — Unified, Faster, Cheaper.
5
5
  Author: SkyPilot Team
6
6
  License: Apache 2.0
@@ -104,9 +104,8 @@ Provides-Extra: ssh
104
104
  Requires-Dist: kubernetes!=32.0.0,>=20.0.0; extra == "ssh"
105
105
  Requires-Dist: websockets; extra == "ssh"
106
106
  Provides-Extra: remote
107
- Requires-Dist: grpcio!=1.48.0,>=1.32.0; python_version < "3.10" and extra == "remote"
108
- Requires-Dist: grpcio!=1.48.0,>=1.42.0; python_version >= "3.10" and extra == "remote"
109
- Requires-Dist: protobuf!=3.19.5,>=3.15.3; extra == "remote"
107
+ Requires-Dist: grpcio>=1.63.0; extra == "remote"
108
+ Requires-Dist: protobuf<7.0.0,>=5.26.1; extra == "remote"
110
109
  Provides-Extra: runpod
111
110
  Requires-Dist: runpod>=1.6.1; extra == "runpod"
112
111
  Provides-Extra: fluidstack
@@ -169,9 +168,8 @@ Requires-Dist: kubernetes!=32.0.0,>=20.0.0; extra == "all"
169
168
  Requires-Dist: websockets; extra == "all"
170
169
  Requires-Dist: kubernetes!=32.0.0,>=20.0.0; extra == "all"
171
170
  Requires-Dist: websockets; extra == "all"
172
- Requires-Dist: grpcio!=1.48.0,>=1.32.0; python_version < "3.10" and extra == "all"
173
- Requires-Dist: grpcio!=1.48.0,>=1.42.0; python_version >= "3.10" and extra == "all"
174
- Requires-Dist: protobuf!=3.19.5,>=3.15.3; extra == "all"
171
+ Requires-Dist: grpcio>=1.63.0; extra == "all"
172
+ Requires-Dist: protobuf<7.0.0,>=5.26.1; extra == "all"
175
173
  Requires-Dist: runpod>=1.6.1; extra == "all"
176
174
  Requires-Dist: cudo-compute>=0.1.10; extra == "all"
177
175
  Requires-Dist: pydo>=0.3.0; extra == "all"
@@ -5,7 +5,7 @@ from typing import Optional
5
5
  import urllib.request
6
6
 
7
7
  # Replaced with the current commit when building the wheels.
8
- _SKYPILOT_COMMIT_SHA = '1e311e80f4a9112a6d2c86bb78d4c225042cedbc'
8
+ _SKYPILOT_COMMIT_SHA = '83f7c60583fed1ee759f73a5cf859239f86fb3f9'
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.dev20250812'
38
+ __version__ = '1.0.0.dev20250815'
39
39
  __root_dir__ = os.path.dirname(os.path.abspath(__file__))
40
40
 
41
41
 
@@ -98,6 +98,7 @@ from sky.client.sdk import cancel
98
98
  from sky.client.sdk import cost_report
99
99
  from sky.client.sdk import down
100
100
  from sky.client.sdk import download_logs
101
+ from sky.client.sdk import endpoints
101
102
  from sky.client.sdk import exec # pylint: disable=redefined-builtin
102
103
  from sky.client.sdk import get
103
104
  from sky.client.sdk import job_status
@@ -194,6 +195,7 @@ __all__ = [
194
195
  'down',
195
196
  'autostop',
196
197
  'cost_report',
198
+ 'endpoints',
197
199
  # core APIs Job Management
198
200
  'queue',
199
201
  'cancel',
@@ -1,7 +1,8 @@
1
1
  """Nebius cloud adaptor."""
2
+ import asyncio
2
3
  import os
3
4
  import threading
4
- from typing import List, Optional
5
+ from typing import Any, Awaitable, List, Optional
5
6
 
6
7
  from sky import sky_logging
7
8
  from sky import skypilot_config
@@ -9,8 +10,49 @@ from sky.adaptors import common
9
10
  from sky.utils import annotations
10
11
  from sky.utils import ux_utils
11
12
 
13
+ # Default read timeout for nebius SDK
14
+ READ_TIMEOUT = 10
15
+
12
16
  logger = sky_logging.init_logger(__name__)
13
17
 
18
+ _loop_lock = threading.Lock()
19
+ _loop = None
20
+
21
+
22
+ def _get_event_loop() -> asyncio.AbstractEventLoop:
23
+ """Get event loop for nebius sdk."""
24
+ global _loop
25
+
26
+ if _loop is not None:
27
+ return _loop
28
+
29
+ with _loop_lock:
30
+ if _loop is None:
31
+ # Create a new event loop in a dedicated thread
32
+ _loop = asyncio.new_event_loop()
33
+ threading.Thread(target=_loop.run_forever, daemon=True).start()
34
+
35
+ return _loop
36
+
37
+
38
+ def sync_call(awaitable: Awaitable[Any]) -> Any:
39
+ """Synchronously run an awaitable in coroutine.
40
+
41
+ This wrapper is used to workaround:
42
+ https://github.com/nebius/pysdk/issues/76
43
+
44
+ Uses a dedicated background event loop to avoid conflicts
45
+ with existing asyncio contexts and prevent BlockingIOError.
46
+ """
47
+ loop = _get_event_loop()
48
+ future = asyncio.run_coroutine_threadsafe(_coro(awaitable), loop)
49
+ return future.result()
50
+
51
+
52
+ async def _coro(awaitable: Awaitable[Any]) -> Any:
53
+ """Wrapper coroutine for awaitable."""
54
+ return await awaitable
55
+
14
56
 
15
57
  def tenant_id_path() -> str:
16
58
  return '~/.nebius/NEBIUS_TENANT_ID.txt'
@@ -13,11 +13,13 @@ import sys
13
13
  import tempfile
14
14
  import time
15
15
  import typing
16
- from typing import Any, Dict, List, Optional, Sequence, Set, Tuple, Union
16
+ from typing import (Any, Callable, Dict, List, Optional, Sequence, Set, Tuple,
17
+ TypeVar, Union)
17
18
  import uuid
18
19
 
19
20
  import colorama
20
21
  from packaging import version
22
+ import psutil
21
23
  from typing_extensions import Literal
22
24
 
23
25
  import sky
@@ -61,6 +63,7 @@ from sky.utils import ux_utils
61
63
  from sky.workspaces import core as workspaces_core
62
64
 
63
65
  if typing.TYPE_CHECKING:
66
+ import grpc
64
67
  import requests
65
68
  from requests import adapters
66
69
  from requests.packages.urllib3.util import retry as retry_lib
@@ -79,6 +82,8 @@ else:
79
82
  adapters = adaptors_common.LazyImport('requests.adapters')
80
83
  retry_lib = adaptors_common.LazyImport(
81
84
  'requests.packages.urllib3.util.retry')
85
+ # To avoid requiring grpcio to be installed on the client side.
86
+ grpc = adaptors_common.LazyImport('grpc')
82
87
 
83
88
  logger = sky_logging.init_logger(__name__)
84
89
 
@@ -1781,6 +1786,7 @@ def _query_cluster_status_via_cloud_api(
1781
1786
  exceptions.ClusterStatusFetchingError: the cluster status cannot be
1782
1787
  fetched from the cloud provider.
1783
1788
  """
1789
+ cluster_name = handle.cluster_name
1784
1790
  cluster_name_on_cloud = handle.cluster_name_on_cloud
1785
1791
  cluster_name_in_hint = common_utils.cluster_name_in_hint(
1786
1792
  handle.cluster_name, cluster_name_on_cloud)
@@ -1798,7 +1804,8 @@ def _query_cluster_status_via_cloud_api(
1798
1804
  cloud_name = repr(handle.launched_resources.cloud)
1799
1805
  try:
1800
1806
  node_status_dict = provision_lib.query_instances(
1801
- cloud_name, cluster_name_on_cloud, provider_config)
1807
+ cloud_name, cluster_name, cluster_name_on_cloud,
1808
+ provider_config)
1802
1809
  logger.debug(f'Querying {cloud_name} cluster '
1803
1810
  f'{cluster_name_in_hint} '
1804
1811
  f'status:\n{pprint.pformat(node_status_dict)}')
@@ -2130,7 +2137,7 @@ def _update_cluster_status(cluster_name: str) -> Optional[Dict[str, Any]]:
2130
2137
  global_user_state.add_cluster_event(
2131
2138
  cluster_name,
2132
2139
  status_lib.ClusterStatus.UP,
2133
- 'All nodes up + ray cluster healthy.',
2140
+ 'All nodes up; SkyPilot runtime healthy.',
2134
2141
  global_user_state.ClusterEventType.STATUS_CHANGE,
2135
2142
  nop_if_duplicate=True)
2136
2143
  global_user_state.add_or_update_cluster(cluster_name,
@@ -2227,9 +2234,9 @@ def _update_cluster_status(cluster_name: str) -> Optional[Dict[str, Any]]:
2227
2234
  [status[1] for status in node_statuses if status[1] is not None])
2228
2235
 
2229
2236
  if some_nodes_terminated:
2230
- init_reason = f'one or more nodes terminated ({status_reason})'
2237
+ init_reason = 'one or more nodes terminated'
2231
2238
  elif some_nodes_not_stopped:
2232
- init_reason = f'some nodes are up and some nodes are stopped ({status_reason})'
2239
+ init_reason = 'some nodes are up and some nodes are stopped'
2233
2240
  logger.debug('The cluster is abnormal. Setting to INIT status. '
2234
2241
  f'node_statuses: {node_statuses}')
2235
2242
  if record['autostop'] >= 0:
@@ -2313,12 +2320,26 @@ def _update_cluster_status(cluster_name: str) -> Optional[Dict[str, Any]]:
2313
2320
  # represent that the cluster is partially preempted.
2314
2321
  # TODO(zhwu): the definition of INIT should be audited/changed.
2315
2322
  # Adding a new status UNHEALTHY for abnormal status can be a choice.
2323
+ init_reason_regex = None
2324
+ if not status_reason:
2325
+ # If there is not a status reason, don't re-add (and overwrite) the
2326
+ # event if there is already an event with the same reason which may
2327
+ # have a status reason.
2328
+ # Some status reason clears after a certain time (e.g. k8s events
2329
+ # are only stored for an hour by default), so it is possible that
2330
+ # the previous event has a status reason, but now it does not.
2331
+ init_reason_regex = f'^Cluster is abnormal because {init_reason} .*'
2332
+ log_message = f'Cluster is abnormal because {init_reason}'
2333
+ if status_reason:
2334
+ log_message += f' ({status_reason})'
2335
+ log_message += '. Transitioned to INIT.'
2316
2336
  global_user_state.add_cluster_event(
2317
2337
  cluster_name,
2318
2338
  status_lib.ClusterStatus.INIT,
2319
- f'Cluster is abnormal because {init_reason}. Transitioned to INIT.',
2339
+ log_message,
2320
2340
  global_user_state.ClusterEventType.STATUS_CHANGE,
2321
- nop_if_duplicate=True)
2341
+ nop_if_duplicate=True,
2342
+ duplicate_regex=init_reason_regex)
2322
2343
  global_user_state.add_or_update_cluster(cluster_name,
2323
2344
  handle,
2324
2345
  requested_resources=None,
@@ -3361,3 +3382,49 @@ def cluster_file_mounts_lock_id(cluster_name: str) -> str:
3361
3382
  def workspace_lock_id(workspace_name: str) -> str:
3362
3383
  """Get the lock ID for workspace operations."""
3363
3384
  return f'{workspace_name}_workspace'
3385
+
3386
+
3387
+ T = TypeVar('T')
3388
+
3389
+
3390
+ def invoke_skylet_with_retries(
3391
+ handle: 'cloud_vm_ray_backend.CloudVmRayResourceHandle',
3392
+ func: Callable[..., T]) -> T:
3393
+ """Generic helper for making Skylet gRPC requests.
3394
+
3395
+ This method handles the common pattern of:
3396
+ 1. Try the gRPC request
3397
+ 2. If SSH tunnel is closed, recreate it and retry
3398
+ """
3399
+ max_attempts = 3
3400
+ backoff = common_utils.Backoff(initial_backoff=0.5)
3401
+ last_exception: Optional[Exception] = None
3402
+
3403
+ for _ in range(max_attempts):
3404
+ try:
3405
+ return func()
3406
+ except grpc.RpcError as e:
3407
+ last_exception = e
3408
+ if e.code() == grpc.StatusCode.INTERNAL:
3409
+ with ux_utils.print_exception_no_traceback():
3410
+ raise exceptions.SkyletInternalError(e.details())
3411
+ elif e.code() == grpc.StatusCode.UNAVAILABLE:
3412
+ recreate_tunnel = True
3413
+ try:
3414
+ if handle.skylet_ssh_tunnel is not None:
3415
+ proc = psutil.Process(handle.skylet_ssh_tunnel.pid)
3416
+ if proc.is_running(
3417
+ ) and proc.status() != psutil.STATUS_ZOMBIE:
3418
+ recreate_tunnel = False
3419
+ except psutil.NoSuchProcess:
3420
+ pass
3421
+
3422
+ if recreate_tunnel:
3423
+ handle.open_and_update_skylet_tunnel()
3424
+
3425
+ time.sleep(backoff.current_backoff())
3426
+ else:
3427
+ raise e
3428
+
3429
+ raise RuntimeError(f'Failed to invoke Skylet after {max_attempts} attempts'
3430
+ ) from last_exception
@@ -1,5 +1,6 @@
1
1
  """Backend: runs on cloud virtual machines, managed by Ray."""
2
2
  import copy
3
+ import dataclasses
3
4
  import enum
4
5
  import inspect
5
6
  import json
@@ -20,6 +21,7 @@ from typing import (Any, Callable, Dict, Iterable, List, Optional, Set, Tuple,
20
21
  Union)
21
22
 
22
23
  import colorama
24
+ import psutil
23
25
  import yaml
24
26
 
25
27
  import sky
@@ -37,6 +39,7 @@ from sky import resources as resources_lib
37
39
  from sky import sky_logging
38
40
  from sky import skypilot_config
39
41
  from sky import task as task_lib
42
+ from sky.adaptors import common as adaptors_common
40
43
  from sky.backends import backend_utils
41
44
  from sky.backends import wheel_utils
42
45
  from sky.clouds import cloud as sky_cloud
@@ -76,7 +79,18 @@ from sky.utils import ux_utils
76
79
  from sky.utils import volume as volume_lib
77
80
 
78
81
  if typing.TYPE_CHECKING:
82
+ import grpc
83
+
79
84
  from sky import dag
85
+ from sky.schemas.generated import autostopv1_pb2
86
+ from sky.schemas.generated import autostopv1_pb2_grpc
87
+ else:
88
+ # To avoid requiring grpcio to be installed on the client side.
89
+ grpc = adaptors_common.LazyImport('grpc')
90
+ autostopv1_pb2 = adaptors_common.LazyImport(
91
+ 'sky.schemas.generated.autostopv1_pb2')
92
+ autostopv1_pb2_grpc = adaptors_common.LazyImport(
93
+ 'sky.schemas.generated.autostopv1_pb2_grpc')
80
94
 
81
95
  Path = str
82
96
 
@@ -1354,8 +1368,11 @@ class RetryingVmProvisioner(object):
1354
1368
  if not dryrun:
1355
1369
  os.makedirs(os.path.expanduser(self.log_dir), exist_ok=True)
1356
1370
  os.system(f'touch {log_path}')
1371
+
1357
1372
  rich_utils.force_update_status(
1358
- ux_utils.spinner_message('Launching', log_path))
1373
+ ux_utils.spinner_message('Launching',
1374
+ log_path,
1375
+ cluster_name=cluster_name))
1359
1376
 
1360
1377
  # Get previous cluster status
1361
1378
  cluster_exists = prev_cluster_status is not None
@@ -1525,6 +1542,7 @@ class RetryingVmProvisioner(object):
1525
1542
  requested_resources=requested_resources,
1526
1543
  ready=False,
1527
1544
  is_managed=self._is_managed,
1545
+ provision_log_path=log_abs_path,
1528
1546
  )
1529
1547
 
1530
1548
  # Add cluster event for actual provisioning start.
@@ -1670,7 +1688,9 @@ class RetryingVmProvisioner(object):
1670
1688
  config_dict['handle'] = handle
1671
1689
  logger.info(
1672
1690
  ux_utils.finishing_message(
1673
- f'Cluster launched: {cluster_name!r}.', log_path))
1691
+ f'Cluster launched: {cluster_name!r}.',
1692
+ log_path,
1693
+ cluster_name=cluster_name))
1674
1694
  return config_dict
1675
1695
 
1676
1696
  # The cluster is not ready. We must perform error recording and/or
@@ -1804,7 +1824,8 @@ class RetryingVmProvisioner(object):
1804
1824
  log_abs_path,
1805
1825
  stream_logs=False,
1806
1826
  start_streaming_at='Shared connection to',
1807
- line_processor=log_utils.RayUpLineProcessor(log_abs_path),
1827
+ line_processor=log_utils.RayUpLineProcessor(
1828
+ log_abs_path, cluster_name=cluster_handle.cluster_name),
1808
1829
  # Reduce BOTO_MAX_RETRIES from 12 to 5 to avoid long hanging
1809
1830
  # time during 'ray up' if insufficient capacity occurs.
1810
1831
  env=dict(
@@ -2206,6 +2227,12 @@ class RetryingVmProvisioner(object):
2206
2227
  return config_dict
2207
2228
 
2208
2229
 
2230
+ @dataclasses.dataclass
2231
+ class SSHTunnelInfo:
2232
+ port: int
2233
+ pid: int
2234
+
2235
+
2209
2236
  class CloudVmRayResourceHandle(backends.backend.ResourceHandle):
2210
2237
  """A pickle-able handle to a cluster created by CloudVmRayBackend.
2211
2238
 
@@ -2225,10 +2252,11 @@ class CloudVmRayResourceHandle(backends.backend.ResourceHandle):
2225
2252
  - (optional) Launched resources
2226
2253
  - (optional) Docker user name
2227
2254
  - (optional) If TPU(s) are managed, a path to a deletion script.
2255
+ - (optional) Skylet SSH tunnel info.
2228
2256
  """
2229
2257
  # Bump if any fields get added/removed/changed, and add backward
2230
2258
  # compaitibility logic in __setstate__.
2231
- _VERSION = 10
2259
+ _VERSION = 11
2232
2260
 
2233
2261
  def __init__(
2234
2262
  self,
@@ -2261,6 +2289,8 @@ class CloudVmRayResourceHandle(backends.backend.ResourceHandle):
2261
2289
  self.launched_nodes = launched_nodes
2262
2290
  self.launched_resources = launched_resources
2263
2291
  self.docker_user: Optional[str] = None
2292
+ self.is_grpc_enabled = True
2293
+ self.skylet_ssh_tunnel: Optional[SSHTunnelInfo] = None
2264
2294
 
2265
2295
  def __repr__(self):
2266
2296
  return (f'ResourceHandle('
@@ -2276,7 +2306,9 @@ class CloudVmRayResourceHandle(backends.backend.ResourceHandle):
2276
2306
  f'\n\tlaunched_resources={self.launched_nodes}x '
2277
2307
  f'{self.launched_resources}, '
2278
2308
  f'\n\tdocker_user={self.docker_user},'
2279
- f'\n\tssh_user={self.ssh_user}')
2309
+ f'\n\tssh_user={self.ssh_user},'
2310
+ f'\n\tis_grpc_enabled={self.is_grpc_enabled},'
2311
+ f'\n\tskylet_ssh_tunnel={self.skylet_ssh_tunnel}')
2280
2312
 
2281
2313
  def get_cluster_name(self):
2282
2314
  return self.cluster_name
@@ -2600,6 +2632,66 @@ class CloudVmRayResourceHandle(backends.backend.ResourceHandle):
2600
2632
  cluster_config_file)
2601
2633
  self.docker_user = docker_user
2602
2634
 
2635
+ def get_grpc_channel(self) -> 'grpc.Channel':
2636
+ if self.skylet_ssh_tunnel is None:
2637
+ self.open_and_update_skylet_tunnel()
2638
+ assert self.skylet_ssh_tunnel is not None
2639
+ return grpc.insecure_channel(f'localhost:{self.skylet_ssh_tunnel.port}')
2640
+
2641
+ def _cleanup_ssh_tunnel(self, tunnel_info: SSHTunnelInfo) -> None:
2642
+ """Clean up an SSH tunnel by terminating the process."""
2643
+ try:
2644
+ proc = psutil.Process(tunnel_info.pid)
2645
+ if proc.is_running() and proc.status() != psutil.STATUS_ZOMBIE:
2646
+ logger.debug(
2647
+ f'Terminating SSH tunnel process {tunnel_info.pid}')
2648
+ proc.terminate()
2649
+ try:
2650
+ proc.wait(timeout=3)
2651
+ except psutil.TimeoutExpired:
2652
+ proc.kill()
2653
+ proc.wait(timeout=1)
2654
+ except psutil.NoSuchProcess:
2655
+ pass
2656
+ except Exception as e: # pylint: disable=broad-except
2657
+ logger.warning(
2658
+ f'Failed to cleanup SSH tunnel process {tunnel_info.pid}: {e}')
2659
+
2660
+ def open_and_update_skylet_tunnel(self) -> None:
2661
+ """Opens an SSH tunnel to the Skylet on the head node,
2662
+ updates the cluster handle, and persists it to the database."""
2663
+ local_port = common_utils.find_free_port(10000)
2664
+ runners = self.get_command_runners()
2665
+ head_runner = runners[0]
2666
+ if isinstance(head_runner, command_runner.SSHCommandRunner):
2667
+ # Disabling ControlMaster makes things easier to reason about
2668
+ # with respect to resource management/ownership,
2669
+ # as killing the process will close the tunnel too.
2670
+ head_runner.disable_control_master = True
2671
+
2672
+ cmd = head_runner.port_forward_command([(local_port,
2673
+ constants.SKYLET_GRPC_PORT)])
2674
+ ssh_tunnel_proc = subprocess.Popen(cmd)
2675
+ tunnel_info = SSHTunnelInfo(port=local_port, pid=ssh_tunnel_proc.pid)
2676
+ try:
2677
+ grpc.channel_ready_future(
2678
+ grpc.insecure_channel(f'localhost:{tunnel_info.port}')).result(
2679
+ timeout=constants.SKYLET_GRPC_TIMEOUT_SECONDS)
2680
+ # Clean up existing tunnel before setting up the new one.
2681
+ if self.skylet_ssh_tunnel is not None:
2682
+ self._cleanup_ssh_tunnel(self.skylet_ssh_tunnel)
2683
+ self.skylet_ssh_tunnel = tunnel_info
2684
+ global_user_state.update_cluster_handle(self.cluster_name, self)
2685
+ except grpc.FutureTimeoutError as e:
2686
+ self._cleanup_ssh_tunnel(tunnel_info)
2687
+ logger.warning(
2688
+ f'Skylet gRPC channel for cluster {self.cluster_name} not '
2689
+ f'ready after {constants.SKYLET_GRPC_TIMEOUT_SECONDS}s')
2690
+ raise e
2691
+ except Exception as e:
2692
+ self._cleanup_ssh_tunnel(tunnel_info)
2693
+ raise e
2694
+
2603
2695
  @property
2604
2696
  def cluster_yaml(self) -> Optional[str]:
2605
2697
  if self._cluster_yaml is None:
@@ -2697,6 +2789,10 @@ class CloudVmRayResourceHandle(backends.backend.ResourceHandle):
2697
2789
  os.path.expanduser(state['_cluster_yaml'])):
2698
2790
  state['_cluster_yaml'] = None
2699
2791
 
2792
+ if version < 11:
2793
+ state['is_grpc_enabled'] = False
2794
+ state['skylet_ssh_tunnel'] = None
2795
+
2700
2796
  self.__dict__.update(state)
2701
2797
 
2702
2798
  # Because the update_cluster_ips and update_ssh_ports
@@ -2736,6 +2832,27 @@ class LocalResourcesHandle(CloudVmRayResourceHandle):
2736
2832
  return [command_runner.LocalProcessCommandRunner()]
2737
2833
 
2738
2834
 
2835
+ class SkyletClient:
2836
+ """The client to interact with a remote cluster through Skylet."""
2837
+
2838
+ def __init__(self, channel: 'grpc.Channel'):
2839
+ self._autostop_stub = autostopv1_pb2_grpc.AutostopServiceStub(channel)
2840
+
2841
+ def set_autostop(
2842
+ self,
2843
+ request: 'autostopv1_pb2.SetAutostopRequest',
2844
+ timeout: float = constants.SKYLET_GRPC_TIMEOUT_SECONDS
2845
+ ) -> 'autostopv1_pb2.SetAutostopResponse':
2846
+ return self._autostop_stub.SetAutostop(request, timeout=timeout)
2847
+
2848
+ def is_autostopping(
2849
+ self,
2850
+ request: 'autostopv1_pb2.IsAutostoppingRequest',
2851
+ timeout: float = constants.SKYLET_GRPC_TIMEOUT_SECONDS
2852
+ ) -> 'autostopv1_pb2.IsAutostoppingResponse':
2853
+ return self._autostop_stub.IsAutostopping(request, timeout=timeout)
2854
+
2855
+
2739
2856
  @registry.BACKEND_REGISTRY.type_register(name='cloudvmray')
2740
2857
  class CloudVmRayBackend(backends.Backend['CloudVmRayResourceHandle']):
2741
2858
  """Backend: runs on cloud virtual machines, managed by Ray.
@@ -3010,7 +3127,9 @@ class CloudVmRayBackend(backends.Backend['CloudVmRayResourceHandle']):
3010
3127
  is_managed=self._is_managed)
3011
3128
  log_path = os.path.join(self.log_dir, 'provision.log')
3012
3129
  rich_utils.force_update_status(
3013
- ux_utils.spinner_message('Launching', log_path))
3130
+ ux_utils.spinner_message('Launching',
3131
+ log_path,
3132
+ cluster_name=cluster_name))
3014
3133
  config_dict = retry_provisioner.provision_with_retries(
3015
3134
  task, to_provision_config, dryrun, stream_logs,
3016
3135
  skip_unnecessary_provisioning)
@@ -4659,6 +4778,7 @@ class CloudVmRayBackend(backends.Backend['CloudVmRayResourceHandle']):
4659
4778
  logger.debug(f'instance statuses attempt {attempts + 1}')
4660
4779
  node_status_dict = provision_lib.query_instances(
4661
4780
  repr(cloud),
4781
+ handle.cluster_name,
4662
4782
  cluster_name_on_cloud,
4663
4783
  config['provider'],
4664
4784
  non_terminated_only=False)
@@ -4768,17 +4888,30 @@ class CloudVmRayBackend(backends.Backend['CloudVmRayResourceHandle']):
4768
4888
  # Check if we're stopping spot
4769
4889
  assert (handle.launched_resources is not None and
4770
4890
  handle.launched_resources.cloud is not None), handle
4771
- code = autostop_lib.AutostopCodeGen.set_autostop(
4772
- idle_minutes_to_autostop, self.NAME, wait_for, down)
4773
- returncode, _, stderr = self.run_on_head(handle,
4774
- code,
4775
- require_outputs=True,
4776
- stream_logs=stream_logs)
4777
- subprocess_utils.handle_returncode(returncode,
4778
- code,
4779
- 'Failed to set autostop',
4780
- stderr=stderr,
4781
- stream_logs=stream_logs)
4891
+ if handle.is_grpc_enabled:
4892
+ request = autostopv1_pb2.SetAutostopRequest(
4893
+ idle_minutes=idle_minutes_to_autostop,
4894
+ backend=self.NAME,
4895
+ wait_for=wait_for.to_protobuf() if wait_for is not None else
4896
+ autostopv1_pb2.AUTOSTOP_WAIT_FOR_UNSPECIFIED,
4897
+ down=down,
4898
+ )
4899
+ backend_utils.invoke_skylet_with_retries(
4900
+ handle, lambda: SkyletClient(handle.get_grpc_channel()).
4901
+ set_autostop(request))
4902
+ else:
4903
+ logger.info(
4904
+ 'Using legacy remote execution for set_autostop on '
4905
+ 'cluster %s.', handle.cluster_name)
4906
+ code = autostop_lib.AutostopCodeGen.set_autostop(
4907
+ idle_minutes_to_autostop, self.NAME, wait_for, down)
4908
+ returncode, _, stderr = self.run_on_head(
4909
+ handle, code, require_outputs=True, stream_logs=stream_logs)
4910
+ subprocess_utils.handle_returncode(returncode,
4911
+ code,
4912
+ 'Failed to set autostop',
4913
+ stderr=stderr,
4914
+ stream_logs=stream_logs)
4782
4915
  global_user_state.set_cluster_autostop_value(
4783
4916
  handle.cluster_name, idle_minutes_to_autostop, down)
4784
4917
 
@@ -4803,18 +4936,25 @@ class CloudVmRayBackend(backends.Backend['CloudVmRayResourceHandle']):
4803
4936
  # The head node of the cluster is not UP or in an abnormal state.
4804
4937
  # We cannot check if the cluster is autostopping.
4805
4938
  return False
4806
- code = autostop_lib.AutostopCodeGen.is_autostopping()
4807
- returncode, stdout, stderr = self.run_on_head(handle,
4808
- code,
4809
- require_outputs=True,
4810
- stream_logs=stream_logs)
4811
-
4812
- if returncode == 0:
4813
- return message_utils.decode_payload(stdout)
4814
- logger.debug('Failed to check if cluster is autostopping with '
4815
- f'{returncode}: {stdout+stderr}\n'
4816
- f'Command: {code}')
4817
- return False
4939
+ if handle.is_grpc_enabled:
4940
+ request = autostopv1_pb2.IsAutostoppingRequest()
4941
+ response = backend_utils.invoke_skylet_with_retries(
4942
+ handle, lambda: SkyletClient(handle.get_grpc_channel()).
4943
+ is_autostopping(request))
4944
+ return response.is_autostopping
4945
+ else:
4946
+ logger.info(
4947
+ 'Using legacy remote execution for is_autostopping on '
4948
+ 'cluster %s.', handle.cluster_name)
4949
+ code = autostop_lib.AutostopCodeGen.is_autostopping()
4950
+ returncode, stdout, stderr = self.run_on_head(
4951
+ handle, code, require_outputs=True, stream_logs=stream_logs)
4952
+ if returncode == 0:
4953
+ return message_utils.decode_payload(stdout)
4954
+ logger.debug('Failed to check if cluster is autostopping with '
4955
+ f'{returncode}: {stdout+stderr}\n'
4956
+ f'Command: {code}')
4957
+ return False
4818
4958
 
4819
4959
  # TODO(zhwu): Refactor this to a CommandRunner class, so different backends
4820
4960
  # can support its own command runner.
@@ -4,7 +4,7 @@ import typing
4
4
  from typing import Dict, List, Optional, Tuple, Union
5
5
 
6
6
  from sky.catalog import common
7
- import sky.provision.cudo.cudo_machine_type as cudo_mt
7
+ from sky.provision.cudo import cudo_machine_type as cudo_mt
8
8
  from sky.utils import ux_utils
9
9
 
10
10
  if typing.TYPE_CHECKING:
@@ -9,7 +9,7 @@ import os
9
9
 
10
10
  import cudo_compute
11
11
 
12
- import sky.provision.cudo.cudo_utils as utils
12
+ from sky.provision.cudo import cudo_utils as utils
13
13
 
14
14
  VMS_CSV = 'cudo/vms.csv'
15
15
 
@@ -22,6 +22,8 @@ TIMEOUT = 10
22
22
  PARENT_ID_TEMPLATE = 'project-{}public-images'
23
23
  ACCELERATOR_MANUFACTURER = 'NVIDIA'
24
24
 
25
+ VRAM = {'L40S': 49152, 'H100': 81920, 'H200': 144384, 'B200': 184320}
26
+
25
27
 
26
28
  @dataclass
27
29
  class PresetInfo:
@@ -196,17 +198,18 @@ def _write_preset_prices(presets: List[PresetInfo], output_file: str) -> None:
196
198
  key=lambda x:
197
199
  (bool(x.gpu), x.region, x.platform_name, x.vcpu)):
198
200
  gpu_info = ''
199
- if preset.gpu > 0:
201
+ if preset.gpu > 0 and preset.accelerator_name:
200
202
  gpu_info_dict = {
201
203
  'Gpus': [{
202
204
  'Name': preset.accelerator_name,
203
205
  'Manufacturer': preset.accelerator_manufacturer,
204
206
  'Count': preset.gpu,
205
207
  'MemoryInfo': {
206
- 'SizeInMiB': preset.memory_gib * 1024 // preset.gpu
208
+ 'SizeInMiB': VRAM.get(preset.accelerator_name, 0)
207
209
  },
208
210
  }],
209
- 'TotalGpuMemoryInMiB': preset.memory_gib * 1024,
211
+ 'TotalGpuMemoryInMiB': VRAM.get(preset.accelerator_name, 0)
212
+ * preset.gpu,
210
213
  }
211
214
  gpu_info = json.dumps(gpu_info_dict).replace('"', '\'')
212
215