skypilot-nightly 1.0.0.dev20250218__tar.gz → 1.0.0.dev20250219__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (365) hide show
  1. {skypilot_nightly-1.0.0.dev20250218/skypilot_nightly.egg-info → skypilot_nightly-1.0.0.dev20250219}/PKG-INFO +1 -1
  2. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/__init__.py +2 -2
  3. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/cli.py +15 -24
  4. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/client/cli.py +15 -24
  5. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/clouds/service_catalog/data_fetchers/fetch_gcp.py +2 -2
  6. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/jobs/server/core.py +22 -17
  7. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/jobs/server/dashboard_utils.py +6 -1
  8. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/jobs/server/server.py +8 -10
  9. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/serve/server/core.py +10 -7
  10. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/serve/server/server.py +6 -11
  11. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/server/common.py +0 -20
  12. skypilot_nightly-1.0.0.dev20250219/sky/utils/common.py +54 -0
  13. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/utils/controller_utils.py +7 -6
  14. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219/skypilot_nightly.egg-info}/PKG-INFO +1 -1
  15. skypilot_nightly-1.0.0.dev20250218/sky/utils/common.py +0 -74
  16. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/LICENSE +0 -0
  17. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/MANIFEST.in +0 -0
  18. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/README.md +0 -0
  19. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/pyproject.toml +0 -0
  20. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/setup.cfg +0 -0
  21. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/setup.py +0 -0
  22. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/adaptors/__init__.py +0 -0
  23. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/adaptors/aws.py +0 -0
  24. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/adaptors/azure.py +0 -0
  25. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/adaptors/cloudflare.py +0 -0
  26. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/adaptors/common.py +0 -0
  27. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/adaptors/cudo.py +0 -0
  28. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/adaptors/do.py +0 -0
  29. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/adaptors/docker.py +0 -0
  30. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/adaptors/gcp.py +0 -0
  31. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/adaptors/ibm.py +0 -0
  32. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/adaptors/kubernetes.py +0 -0
  33. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/adaptors/oci.py +0 -0
  34. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/adaptors/runpod.py +0 -0
  35. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/adaptors/vast.py +0 -0
  36. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/adaptors/vsphere.py +0 -0
  37. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/admin_policy.py +0 -0
  38. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/authentication.py +0 -0
  39. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/backends/__init__.py +0 -0
  40. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/backends/backend.py +0 -0
  41. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/backends/backend_utils.py +0 -0
  42. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/backends/cloud_vm_ray_backend.py +0 -0
  43. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/backends/docker_utils.py +0 -0
  44. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/backends/local_docker_backend.py +0 -0
  45. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/backends/monkey_patches/monkey_patch_ray_up.py +0 -0
  46. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/backends/wheel_utils.py +0 -0
  47. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/benchmark/__init__.py +0 -0
  48. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/benchmark/benchmark_state.py +0 -0
  49. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/benchmark/benchmark_utils.py +0 -0
  50. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/check.py +0 -0
  51. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/client/__init__.py +0 -0
  52. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/client/common.py +0 -0
  53. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/client/sdk.py +0 -0
  54. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/cloud_stores.py +0 -0
  55. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/clouds/__init__.py +0 -0
  56. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/clouds/aws.py +0 -0
  57. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/clouds/azure.py +0 -0
  58. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/clouds/cloud.py +0 -0
  59. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/clouds/cudo.py +0 -0
  60. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/clouds/do.py +0 -0
  61. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/clouds/fluidstack.py +0 -0
  62. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/clouds/gcp.py +0 -0
  63. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/clouds/ibm.py +0 -0
  64. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/clouds/kubernetes.py +0 -0
  65. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/clouds/lambda_cloud.py +0 -0
  66. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/clouds/oci.py +0 -0
  67. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/clouds/paperspace.py +0 -0
  68. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/clouds/runpod.py +0 -0
  69. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/clouds/scp.py +0 -0
  70. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/clouds/service_catalog/__init__.py +0 -0
  71. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/clouds/service_catalog/aws_catalog.py +0 -0
  72. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/clouds/service_catalog/azure_catalog.py +0 -0
  73. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/clouds/service_catalog/common.py +0 -0
  74. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/clouds/service_catalog/config.py +0 -0
  75. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/clouds/service_catalog/constants.py +0 -0
  76. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/clouds/service_catalog/cudo_catalog.py +0 -0
  77. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/clouds/service_catalog/data_fetchers/__init__.py +0 -0
  78. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/clouds/service_catalog/data_fetchers/fetch_aws.py +0 -0
  79. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/clouds/service_catalog/data_fetchers/fetch_azure.py +0 -0
  80. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/clouds/service_catalog/data_fetchers/fetch_cudo.py +0 -0
  81. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/clouds/service_catalog/data_fetchers/fetch_fluidstack.py +0 -0
  82. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/clouds/service_catalog/data_fetchers/fetch_lambda_cloud.py +0 -0
  83. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/clouds/service_catalog/data_fetchers/fetch_vast.py +0 -0
  84. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/clouds/service_catalog/data_fetchers/fetch_vsphere.py +0 -0
  85. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/clouds/service_catalog/do_catalog.py +0 -0
  86. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/clouds/service_catalog/fluidstack_catalog.py +0 -0
  87. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/clouds/service_catalog/gcp_catalog.py +0 -0
  88. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/clouds/service_catalog/ibm_catalog.py +0 -0
  89. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/clouds/service_catalog/kubernetes_catalog.py +0 -0
  90. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/clouds/service_catalog/lambda_catalog.py +0 -0
  91. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/clouds/service_catalog/oci_catalog.py +0 -0
  92. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/clouds/service_catalog/paperspace_catalog.py +0 -0
  93. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/clouds/service_catalog/runpod_catalog.py +0 -0
  94. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/clouds/service_catalog/scp_catalog.py +0 -0
  95. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/clouds/service_catalog/vast_catalog.py +0 -0
  96. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/clouds/service_catalog/vsphere_catalog.py +0 -0
  97. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/clouds/utils/__init__.py +0 -0
  98. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/clouds/utils/aws_utils.py +0 -0
  99. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/clouds/utils/azure_utils.py +0 -0
  100. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/clouds/utils/gcp_utils.py +0 -0
  101. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/clouds/utils/oci_utils.py +0 -0
  102. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/clouds/utils/scp_utils.py +0 -0
  103. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/clouds/vast.py +0 -0
  104. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/clouds/vsphere.py +0 -0
  105. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/core.py +0 -0
  106. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/dag.py +0 -0
  107. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/data/__init__.py +0 -0
  108. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/data/data_transfer.py +0 -0
  109. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/data/data_utils.py +0 -0
  110. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/data/mounting_utils.py +0 -0
  111. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/data/storage.py +0 -0
  112. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/data/storage_utils.py +0 -0
  113. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/exceptions.py +0 -0
  114. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/execution.py +0 -0
  115. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/global_user_state.py +0 -0
  116. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/jobs/__init__.py +0 -0
  117. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/jobs/client/__init__.py +0 -0
  118. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/jobs/client/sdk.py +0 -0
  119. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/jobs/constants.py +0 -0
  120. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/jobs/controller.py +0 -0
  121. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/jobs/dashboard/dashboard.py +0 -0
  122. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/jobs/dashboard/static/favicon.ico +0 -0
  123. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/jobs/dashboard/templates/index.html +0 -0
  124. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/jobs/recovery_strategy.py +0 -0
  125. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/jobs/scheduler.py +0 -0
  126. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/jobs/server/__init__.py +0 -0
  127. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/jobs/state.py +0 -0
  128. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/jobs/utils.py +0 -0
  129. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/models.py +0 -0
  130. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/optimizer.py +0 -0
  131. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/__init__.py +0 -0
  132. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/aws/__init__.py +0 -0
  133. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/aws/config.py +0 -0
  134. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/aws/instance.py +0 -0
  135. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/aws/utils.py +0 -0
  136. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/azure/__init__.py +0 -0
  137. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/azure/azure-config-template.json +0 -0
  138. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/azure/config.py +0 -0
  139. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/azure/instance.py +0 -0
  140. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/common.py +0 -0
  141. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/constants.py +0 -0
  142. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/cudo/__init__.py +0 -0
  143. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/cudo/config.py +0 -0
  144. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/cudo/cudo_machine_type.py +0 -0
  145. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/cudo/cudo_utils.py +0 -0
  146. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/cudo/cudo_wrapper.py +0 -0
  147. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/cudo/instance.py +0 -0
  148. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/do/__init__.py +0 -0
  149. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/do/config.py +0 -0
  150. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/do/constants.py +0 -0
  151. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/do/instance.py +0 -0
  152. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/do/utils.py +0 -0
  153. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/docker_utils.py +0 -0
  154. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/fluidstack/__init__.py +0 -0
  155. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/fluidstack/config.py +0 -0
  156. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/fluidstack/fluidstack_utils.py +0 -0
  157. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/fluidstack/instance.py +0 -0
  158. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/gcp/__init__.py +0 -0
  159. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/gcp/config.py +0 -0
  160. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/gcp/constants.py +0 -0
  161. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/gcp/instance.py +0 -0
  162. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/gcp/instance_utils.py +0 -0
  163. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/gcp/mig_utils.py +0 -0
  164. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/instance_setup.py +0 -0
  165. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/kubernetes/__init__.py +0 -0
  166. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/kubernetes/config.py +0 -0
  167. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/kubernetes/constants.py +0 -0
  168. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/kubernetes/instance.py +0 -0
  169. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/kubernetes/manifests/smarter-device-manager-configmap.yaml +0 -0
  170. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/kubernetes/manifests/smarter-device-manager-daemonset.yaml +0 -0
  171. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/kubernetes/network.py +0 -0
  172. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/kubernetes/network_utils.py +0 -0
  173. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/kubernetes/utils.py +0 -0
  174. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/lambda_cloud/__init__.py +0 -0
  175. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/lambda_cloud/config.py +0 -0
  176. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/lambda_cloud/instance.py +0 -0
  177. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/lambda_cloud/lambda_utils.py +0 -0
  178. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/logging.py +0 -0
  179. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/metadata_utils.py +0 -0
  180. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/oci/__init__.py +0 -0
  181. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/oci/config.py +0 -0
  182. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/oci/instance.py +0 -0
  183. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/oci/query_utils.py +0 -0
  184. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/paperspace/__init__.py +0 -0
  185. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/paperspace/config.py +0 -0
  186. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/paperspace/constants.py +0 -0
  187. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/paperspace/instance.py +0 -0
  188. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/paperspace/utils.py +0 -0
  189. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/provisioner.py +0 -0
  190. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/runpod/__init__.py +0 -0
  191. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/runpod/api/__init__.py +0 -0
  192. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/runpod/api/commands.py +0 -0
  193. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/runpod/api/pods.py +0 -0
  194. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/runpod/config.py +0 -0
  195. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/runpod/instance.py +0 -0
  196. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/runpod/utils.py +0 -0
  197. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/vast/__init__.py +0 -0
  198. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/vast/config.py +0 -0
  199. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/vast/instance.py +0 -0
  200. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/vast/utils.py +0 -0
  201. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/vsphere/__init__.py +0 -0
  202. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/vsphere/common/__init__.py +0 -0
  203. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/vsphere/common/cls_api_client.py +0 -0
  204. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/vsphere/common/cls_api_helper.py +0 -0
  205. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/vsphere/common/custom_script.py +0 -0
  206. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/vsphere/common/id_generator.py +0 -0
  207. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/vsphere/common/metadata_utils.py +0 -0
  208. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/vsphere/common/service_manager.py +0 -0
  209. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/vsphere/common/service_manager_factory.py +0 -0
  210. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/vsphere/common/ssl_helper.py +0 -0
  211. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/vsphere/common/vapiconnect.py +0 -0
  212. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/vsphere/common/vim_utils.py +0 -0
  213. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/vsphere/config.py +0 -0
  214. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/vsphere/instance.py +0 -0
  215. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/vsphere/vsphere_utils.py +0 -0
  216. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/resources.py +0 -0
  217. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/serve/__init__.py +0 -0
  218. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/serve/autoscalers.py +0 -0
  219. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/serve/client/__init__.py +0 -0
  220. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/serve/client/sdk.py +0 -0
  221. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/serve/constants.py +0 -0
  222. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/serve/controller.py +0 -0
  223. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/serve/load_balancer.py +0 -0
  224. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/serve/load_balancing_policies.py +0 -0
  225. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/serve/replica_managers.py +0 -0
  226. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/serve/serve_state.py +0 -0
  227. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/serve/serve_utils.py +0 -0
  228. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/serve/server/__init__.py +0 -0
  229. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/serve/service.py +0 -0
  230. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/serve/service_spec.py +0 -0
  231. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/server/__init__.py +0 -0
  232. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/server/constants.py +0 -0
  233. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/server/html/log.html +0 -0
  234. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/server/requests/__init__.py +0 -0
  235. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/server/requests/executor.py +0 -0
  236. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/server/requests/payloads.py +0 -0
  237. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/server/requests/queues/__init__.py +0 -0
  238. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/server/requests/queues/mp_queue.py +0 -0
  239. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/server/requests/requests.py +0 -0
  240. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/server/requests/serializers/__init__.py +0 -0
  241. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/server/requests/serializers/decoders.py +0 -0
  242. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/server/requests/serializers/encoders.py +0 -0
  243. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/server/server.py +0 -0
  244. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/server/stream_utils.py +0 -0
  245. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/setup_files/MANIFEST.in +0 -0
  246. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/setup_files/dependencies.py +0 -0
  247. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/setup_files/setup.py +0 -0
  248. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/sky_logging.py +0 -0
  249. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/skylet/LICENSE +0 -0
  250. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/skylet/__init__.py +0 -0
  251. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/skylet/attempt_skylet.py +0 -0
  252. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/skylet/autostop_lib.py +0 -0
  253. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/skylet/configs.py +0 -0
  254. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/skylet/constants.py +0 -0
  255. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/skylet/events.py +0 -0
  256. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/skylet/job_lib.py +0 -0
  257. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/skylet/log_lib.py +0 -0
  258. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/skylet/log_lib.pyi +0 -0
  259. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/skylet/providers/__init__.py +0 -0
  260. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/skylet/providers/command_runner.py +0 -0
  261. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/skylet/providers/ibm/__init__.py +0 -0
  262. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/skylet/providers/ibm/node_provider.py +0 -0
  263. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/skylet/providers/ibm/utils.py +0 -0
  264. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/skylet/providers/ibm/vpc_provider.py +0 -0
  265. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/skylet/providers/scp/__init__.py +0 -0
  266. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/skylet/providers/scp/config.py +0 -0
  267. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/skylet/providers/scp/node_provider.py +0 -0
  268. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/skylet/ray_patches/__init__.py +0 -0
  269. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/skylet/ray_patches/autoscaler.py.patch +0 -0
  270. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/skylet/ray_patches/cli.py.patch +0 -0
  271. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/skylet/ray_patches/command_runner.py.patch +0 -0
  272. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/skylet/ray_patches/log_monitor.py.patch +0 -0
  273. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/skylet/ray_patches/resource_demand_scheduler.py.patch +0 -0
  274. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/skylet/ray_patches/updater.py.patch +0 -0
  275. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/skylet/ray_patches/worker.py.patch +0 -0
  276. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/skylet/skylet.py +0 -0
  277. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/skylet/subprocess_daemon.py +0 -0
  278. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/skypilot_config.py +0 -0
  279. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/task.py +0 -0
  280. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/templates/aws-ray.yml.j2 +0 -0
  281. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/templates/azure-ray.yml.j2 +0 -0
  282. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/templates/cudo-ray.yml.j2 +0 -0
  283. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/templates/do-ray.yml.j2 +0 -0
  284. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/templates/fluidstack-ray.yml.j2 +0 -0
  285. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/templates/gcp-ray.yml.j2 +0 -0
  286. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/templates/ibm-ray.yml.j2 +0 -0
  287. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/templates/jobs-controller.yaml.j2 +0 -0
  288. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/templates/kubernetes-ingress.yml.j2 +0 -0
  289. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/templates/kubernetes-loadbalancer.yml.j2 +0 -0
  290. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/templates/kubernetes-port-forward-proxy-command.sh +0 -0
  291. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/templates/kubernetes-ray.yml.j2 +0 -0
  292. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/templates/kubernetes-ssh-jump.yml.j2 +0 -0
  293. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/templates/lambda-ray.yml.j2 +0 -0
  294. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/templates/local-ray.yml.j2 +0 -0
  295. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/templates/oci-ray.yml.j2 +0 -0
  296. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/templates/paperspace-ray.yml.j2 +0 -0
  297. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/templates/runpod-ray.yml.j2 +0 -0
  298. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/templates/scp-ray.yml.j2 +0 -0
  299. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/templates/sky-serve-controller.yaml.j2 +0 -0
  300. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/templates/skypilot-server-kubernetes-proxy.sh +0 -0
  301. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/templates/vast-ray.yml.j2 +0 -0
  302. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/templates/vsphere-ray.yml.j2 +0 -0
  303. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/templates/websocket_proxy.py +0 -0
  304. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/usage/__init__.py +0 -0
  305. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/usage/constants.py +0 -0
  306. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/usage/usage_lib.py +0 -0
  307. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/utils/__init__.py +0 -0
  308. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/utils/accelerator_registry.py +0 -0
  309. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/utils/admin_policy_utils.py +0 -0
  310. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/utils/annotations.py +0 -0
  311. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/utils/cli_utils/__init__.py +0 -0
  312. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/utils/cli_utils/status_utils.py +0 -0
  313. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/utils/cluster_utils.py +0 -0
  314. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/utils/command_runner.py +0 -0
  315. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/utils/command_runner.pyi +0 -0
  316. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/utils/common_utils.py +0 -0
  317. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/utils/config_utils.py +0 -0
  318. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/utils/control_master_utils.py +0 -0
  319. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/utils/dag_utils.py +0 -0
  320. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/utils/db_utils.py +0 -0
  321. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/utils/env_options.py +0 -0
  322. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/utils/kubernetes/__init__.py +0 -0
  323. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/utils/kubernetes/create_cluster.sh +0 -0
  324. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/utils/kubernetes/delete_cluster.sh +0 -0
  325. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/utils/kubernetes/deploy_remote_cluster.sh +0 -0
  326. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/utils/kubernetes/exec_kubeconfig_converter.py +0 -0
  327. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/utils/kubernetes/generate_kind_config.py +0 -0
  328. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/utils/kubernetes/generate_kubeconfig.sh +0 -0
  329. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/utils/kubernetes/gpu_labeler.py +0 -0
  330. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/utils/kubernetes/k8s_gpu_labeler_job.yaml +0 -0
  331. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/utils/kubernetes/k8s_gpu_labeler_setup.yaml +0 -0
  332. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/utils/kubernetes/kubernetes_deploy_utils.py +0 -0
  333. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/utils/kubernetes/rsync_helper.sh +0 -0
  334. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/utils/kubernetes/ssh_jump_lifecycle_manager.py +0 -0
  335. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/utils/kubernetes_enums.py +0 -0
  336. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/utils/log_utils.py +0 -0
  337. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/utils/message_utils.py +0 -0
  338. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/utils/registry.py +0 -0
  339. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/utils/resources_utils.py +0 -0
  340. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/utils/rich_utils.py +0 -0
  341. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/utils/schemas.py +0 -0
  342. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/utils/status_lib.py +0 -0
  343. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/utils/subprocess_utils.py +0 -0
  344. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/utils/timeline.py +0 -0
  345. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/utils/ux_utils.py +0 -0
  346. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/sky/utils/validator.py +0 -0
  347. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/skypilot_nightly.egg-info/SOURCES.txt +0 -0
  348. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/skypilot_nightly.egg-info/dependency_links.txt +0 -0
  349. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/skypilot_nightly.egg-info/entry_points.txt +0 -0
  350. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/skypilot_nightly.egg-info/requires.txt +0 -0
  351. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/skypilot_nightly.egg-info/top_level.txt +0 -0
  352. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/tests/test_api.py +0 -0
  353. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/tests/test_cli.py +0 -0
  354. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/tests/test_config.py +0 -0
  355. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/tests/test_global_user_state.py +0 -0
  356. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/tests/test_jobs.py +0 -0
  357. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/tests/test_jobs_and_serve.py +0 -0
  358. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/tests/test_list_accelerators.py +0 -0
  359. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/tests/test_optimizer_dryruns.py +0 -0
  360. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/tests/test_optimizer_random_dag.py +0 -0
  361. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/tests/test_serve_autoscaler.py +0 -0
  362. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/tests/test_smoke.py +0 -0
  363. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/tests/test_storage.py +0 -0
  364. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/tests/test_wheels.py +0 -0
  365. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250219}/tests/test_yaml_parser.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: skypilot-nightly
3
- Version: 1.0.0.dev20250218
3
+ Version: 1.0.0.dev20250219
4
4
  Summary: SkyPilot: An intercloud broker for the clouds
5
5
  Author: SkyPilot Team
6
6
  License: Apache 2.0
@@ -5,7 +5,7 @@ from typing import Optional
5
5
  import urllib.request
6
6
 
7
7
  # Replaced with the current commit when building the wheels.
8
- _SKYPILOT_COMMIT_SHA = '912b8293b3ebeba84941c108dbede1e6dcbc9b6f'
8
+ _SKYPILOT_COMMIT_SHA = '0ec86b2b1ec8aeaae0514b5a7ce4eb99caaa0728'
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.dev20250218'
38
+ __version__ = '1.0.0.dev20250219'
39
39
  __root_dir__ = os.path.dirname(os.path.abspath(__file__))
40
40
 
41
41
 
@@ -1419,16 +1419,16 @@ def _handle_jobs_queue_request(
1419
1419
  try:
1420
1420
  # Check the controller status again, as the RuntimeError is likely
1421
1421
  # due to the controller being autostopped when querying the jobs.
1422
- controller_type = controller_utils.Controllers.JOBS_CONTROLLER
1423
- # Query status of the controller cluster. We add a wildcard because
1424
- # the controller cluster name can have a suffix like
1425
- # '-remote-<hash>' when using remote API server.
1422
+ # Since we are client-side, we may not know the exact name of the
1423
+ # controller, so use the prefix with a wildcard.
1424
+ # Query status of the controller cluster.
1426
1425
  records = sdk.get(
1427
- sdk.status(
1428
- cluster_names=[controller_type.value.cluster_name + '*']))
1426
+ sdk.status(cluster_names=[common.JOB_CONTROLLER_PREFIX + '*'],
1427
+ all_users=True))
1429
1428
  if (not records or
1430
1429
  records[0]['status'] == status_lib.ClusterStatus.STOPPED):
1431
- msg = controller_type.value.default_hint_if_non_existent
1430
+ controller = controller_utils.Controllers.JOBS_CONTROLLER.value
1431
+ msg = controller.default_hint_if_non_existent
1432
1432
  except Exception: # pylint: disable=broad-except
1433
1433
  # This is to an best effort to find the latest controller status to
1434
1434
  # print more helpful message, so we can ignore any exception to
@@ -1494,16 +1494,18 @@ def _handle_services_request(
1494
1494
  # Check the controller status again, as the RuntimeError is likely
1495
1495
  # due to the controller being autostopped when querying the
1496
1496
  # services.
1497
- controller_type = controller_utils.Controllers.SKY_SERVE_CONTROLLER
1498
- # Query status of the controller cluster. We add a wildcard because
1499
- # the controller cluster name can have a suffix like
1500
- # '-remote-<hash>' when using remote API server.
1497
+ # Since we are client-side, we may not know the exact name of the
1498
+ # controller, so use the prefix with a wildcard.
1499
+ # Query status of the controller cluster.
1501
1500
  records = sdk.get(
1502
1501
  sdk.status(
1503
- cluster_names=[controller_type.value.cluster_name + '*']))
1502
+ cluster_names=[common.SKY_SERVE_CONTROLLER_PREFIX + '*'],
1503
+ all_users=True))
1504
1504
  if (not records or
1505
1505
  records[0]['status'] == status_lib.ClusterStatus.STOPPED):
1506
- msg = controller_type.value.default_hint_if_non_existent
1506
+ controller = (
1507
+ controller_utils.Controllers.SKY_SERVE_CONTROLLER.value)
1508
+ msg = controller.default_hint_if_non_existent
1507
1509
  except Exception: # pylint: disable=broad-except
1508
1510
  # This is to an best effort to find the latest controller status to
1509
1511
  # print more helpful message, so we can ignore any exception to
@@ -2804,11 +2806,6 @@ def _hint_or_raise_for_down_jobs_controller(controller_name: str,
2804
2806
  to be torn down (e.g., because it has jobs running or
2805
2807
  it is in init state)
2806
2808
  """
2807
- if not common.is_current_user_controller(controller_name):
2808
- with ux_utils.print_exception_no_traceback():
2809
- raise exceptions.NotSupportedError(
2810
- f'Tearing down other user\'s managed job controller '
2811
- f'{controller_name!r} is not allowed.')
2812
2809
  controller = controller_utils.Controllers.from_name(controller_name)
2813
2810
  assert controller is not None, controller_name
2814
2811
 
@@ -2868,12 +2865,6 @@ def _hint_or_raise_for_down_sky_serve_controller(controller_name: str,
2868
2865
  to be torn down (e.g., because it has services running or
2869
2866
  it is in init state)
2870
2867
  """
2871
- # TODO(zhwu): Move this check to the sdk or even API server side.
2872
- if not common.is_current_user_controller(controller_name):
2873
- with ux_utils.print_exception_no_traceback():
2874
- raise exceptions.NotSupportedError(
2875
- f'Tearing down other user\'s sky serve controller '
2876
- f'{controller_name!r} is not allowed.')
2877
2868
  controller = controller_utils.Controllers.from_name(controller_name)
2878
2869
  assert controller is not None, controller_name
2879
2870
  with rich_utils.client_status('[bold cyan]Checking for live services[/]'):
@@ -1419,16 +1419,16 @@ def _handle_jobs_queue_request(
1419
1419
  try:
1420
1420
  # Check the controller status again, as the RuntimeError is likely
1421
1421
  # due to the controller being autostopped when querying the jobs.
1422
- controller_type = controller_utils.Controllers.JOBS_CONTROLLER
1423
- # Query status of the controller cluster. We add a wildcard because
1424
- # the controller cluster name can have a suffix like
1425
- # '-remote-<hash>' when using remote API server.
1422
+ # Since we are client-side, we may not know the exact name of the
1423
+ # controller, so use the prefix with a wildcard.
1424
+ # Query status of the controller cluster.
1426
1425
  records = sdk.get(
1427
- sdk.status(
1428
- cluster_names=[controller_type.value.cluster_name + '*']))
1426
+ sdk.status(cluster_names=[common.JOB_CONTROLLER_PREFIX + '*'],
1427
+ all_users=True))
1429
1428
  if (not records or
1430
1429
  records[0]['status'] == status_lib.ClusterStatus.STOPPED):
1431
- msg = controller_type.value.default_hint_if_non_existent
1430
+ controller = controller_utils.Controllers.JOBS_CONTROLLER.value
1431
+ msg = controller.default_hint_if_non_existent
1432
1432
  except Exception: # pylint: disable=broad-except
1433
1433
  # This is to an best effort to find the latest controller status to
1434
1434
  # print more helpful message, so we can ignore any exception to
@@ -1494,16 +1494,18 @@ def _handle_services_request(
1494
1494
  # Check the controller status again, as the RuntimeError is likely
1495
1495
  # due to the controller being autostopped when querying the
1496
1496
  # services.
1497
- controller_type = controller_utils.Controllers.SKY_SERVE_CONTROLLER
1498
- # Query status of the controller cluster. We add a wildcard because
1499
- # the controller cluster name can have a suffix like
1500
- # '-remote-<hash>' when using remote API server.
1497
+ # Since we are client-side, we may not know the exact name of the
1498
+ # controller, so use the prefix with a wildcard.
1499
+ # Query status of the controller cluster.
1501
1500
  records = sdk.get(
1502
1501
  sdk.status(
1503
- cluster_names=[controller_type.value.cluster_name + '*']))
1502
+ cluster_names=[common.SKY_SERVE_CONTROLLER_PREFIX + '*'],
1503
+ all_users=True))
1504
1504
  if (not records or
1505
1505
  records[0]['status'] == status_lib.ClusterStatus.STOPPED):
1506
- msg = controller_type.value.default_hint_if_non_existent
1506
+ controller = (
1507
+ controller_utils.Controllers.SKY_SERVE_CONTROLLER.value)
1508
+ msg = controller.default_hint_if_non_existent
1507
1509
  except Exception: # pylint: disable=broad-except
1508
1510
  # This is to an best effort to find the latest controller status to
1509
1511
  # print more helpful message, so we can ignore any exception to
@@ -2804,11 +2806,6 @@ def _hint_or_raise_for_down_jobs_controller(controller_name: str,
2804
2806
  to be torn down (e.g., because it has jobs running or
2805
2807
  it is in init state)
2806
2808
  """
2807
- if not common.is_current_user_controller(controller_name):
2808
- with ux_utils.print_exception_no_traceback():
2809
- raise exceptions.NotSupportedError(
2810
- f'Tearing down other user\'s managed job controller '
2811
- f'{controller_name!r} is not allowed.')
2812
2809
  controller = controller_utils.Controllers.from_name(controller_name)
2813
2810
  assert controller is not None, controller_name
2814
2811
 
@@ -2868,12 +2865,6 @@ def _hint_or_raise_for_down_sky_serve_controller(controller_name: str,
2868
2865
  to be torn down (e.g., because it has services running or
2869
2866
  it is in init state)
2870
2867
  """
2871
- # TODO(zhwu): Move this check to the sdk or even API server side.
2872
- if not common.is_current_user_controller(controller_name):
2873
- with ux_utils.print_exception_no_traceback():
2874
- raise exceptions.NotSupportedError(
2875
- f'Tearing down other user\'s sky serve controller '
2876
- f'{controller_name!r} is not allowed.')
2877
2868
  controller = controller_utils.Controllers.from_name(controller_name)
2878
2869
  assert controller is not None, controller_name
2879
2870
  with rich_utils.client_status('[bold cyan]Checking for live services[/]'):
@@ -60,8 +60,8 @@ HIDDEN_TPU_DF = pd.read_csv(
60
60
  ,tpu-v3-2048,1,,,tpu-v3-2048,2048.0,614.4,us-east1,us-east1-d
61
61
  """)))
62
62
 
63
- # TPU V6e price for us-central2 is missing in the SKUs.
64
- TPU_V6E_MISSING_REGIONS = ['us-central2']
63
+ # TPU V6e price for the following regions is missing in the SKUs.
64
+ TPU_V6E_MISSING_REGIONS = ['us-central2', 'southamerica-west1']
65
65
 
66
66
  # TPU V5 is not visible in specific zones. We hardcode the missing zones here.
67
67
  # NOTE(dev): Keep the zones and the df in sync.
@@ -21,10 +21,11 @@ from sky.backends import backend_utils
21
21
  from sky.clouds.service_catalog import common as service_catalog_common
22
22
  from sky.jobs import constants as managed_job_constants
23
23
  from sky.jobs import utils as managed_job_utils
24
- from sky.provision import common
24
+ from sky.provision import common as provision_common
25
25
  from sky.skylet import constants as skylet_constants
26
26
  from sky.usage import usage_lib
27
27
  from sky.utils import admin_policy_utils
28
+ from sky.utils import common
28
29
  from sky.utils import common_utils
29
30
  from sky.utils import controller_utils
30
31
  from sky.utils import dag_utils
@@ -149,14 +150,18 @@ def launch(
149
150
  f'{colorama.Fore.YELLOW}'
150
151
  f'Launching managed job {dag.name!r} from jobs controller...'
151
152
  f'{colorama.Style.RESET_ALL}')
152
- return execution.launch(task=controller_task,
153
- cluster_name=controller_name,
154
- stream_logs=stream_logs,
155
- idle_minutes_to_autostop=skylet_constants.
156
- CONTROLLER_IDLE_MINUTES_TO_AUTOSTOP,
157
- retry_until_up=True,
158
- fast=True,
159
- _disable_controller_check=True)
153
+
154
+ # Launch with the api server's user hash, so that sky status does not
155
+ # show the owner of the controller as whatever user launched it first.
156
+ with common.with_server_user_hash():
157
+ return execution.launch(task=controller_task,
158
+ cluster_name=controller_name,
159
+ stream_logs=stream_logs,
160
+ idle_minutes_to_autostop=skylet_constants.
161
+ CONTROLLER_IDLE_MINUTES_TO_AUTOSTOP,
162
+ retry_until_up=True,
163
+ fast=True,
164
+ _disable_controller_check=True)
160
165
 
161
166
 
162
167
  def queue_from_kubernetes_pod(
@@ -194,16 +199,16 @@ def queue_from_kubernetes_pod(
194
199
  provider_config = {'context': context}
195
200
  instances = {
196
201
  pod_name: [
197
- common.InstanceInfo(instance_id=pod_name,
198
- internal_ip='',
199
- external_ip='',
200
- tags={})
202
+ provision_common.InstanceInfo(instance_id=pod_name,
203
+ internal_ip='',
204
+ external_ip='',
205
+ tags={})
201
206
  ]
202
207
  } # Internal IP is not required for Kubernetes
203
- cluster_info = common.ClusterInfo(provider_name='kubernetes',
204
- head_instance_id=pod_name,
205
- provider_config=provider_config,
206
- instances=instances)
208
+ cluster_info = provision_common.ClusterInfo(provider_name='kubernetes',
209
+ head_instance_id=pod_name,
210
+ provider_config=provider_config,
211
+ instances=instances)
207
212
  managed_jobs_runner = provision_lib.get_command_runners(
208
213
  'kubernetes', cluster_info)[0]
209
214
 
@@ -1,4 +1,9 @@
1
- """Persistent dashboard sessions."""
1
+ """Persistent dashboard sessions.
2
+
3
+ Note: before #4717, this was useful because we needed to tunnel to multiple
4
+ controllers - one per user. Now, there is only one controller for the whole API
5
+ server, so this is not very useful. TODO(cooperc): Remove or fix this.
6
+ """
2
7
  import pathlib
3
8
  from typing import Tuple
4
9
 
@@ -21,11 +21,6 @@ logger = sky_logging.init_logger(__name__)
21
21
  router = fastapi.APIRouter()
22
22
 
23
23
 
24
- def _get_controller_name(request_body: payloads.RequestBody) -> str:
25
- user_hash = request_body.user_hash
26
- return common.get_controller_name(common.ControllerType.JOBS, user_hash)
27
-
28
-
29
24
  @router.post('/launch')
30
25
  async def launch(request: fastapi.Request,
31
26
  jobs_launch_body: payloads.JobsLaunchBody) -> None:
@@ -35,7 +30,7 @@ async def launch(request: fastapi.Request,
35
30
  request_body=jobs_launch_body,
36
31
  func=core.launch,
37
32
  schedule_type=api_requests.ScheduleType.LONG,
38
- request_cluster_name=_get_controller_name(jobs_launch_body),
33
+ request_cluster_name=common.JOB_CONTROLLER_NAME,
39
34
  )
40
35
 
41
36
 
@@ -49,7 +44,7 @@ async def queue(request: fastapi.Request,
49
44
  func=core.queue,
50
45
  schedule_type=(api_requests.ScheduleType.LONG if jobs_queue_body.refresh
51
46
  else api_requests.ScheduleType.SHORT),
52
- request_cluster_name=_get_controller_name(jobs_queue_body),
47
+ request_cluster_name=common.JOB_CONTROLLER_NAME,
53
48
  )
54
49
 
55
50
 
@@ -62,7 +57,7 @@ async def cancel(request: fastapi.Request,
62
57
  request_body=jobs_cancel_body,
63
58
  func=core.cancel,
64
59
  schedule_type=api_requests.ScheduleType.SHORT,
65
- request_cluster_name=_get_controller_name(jobs_cancel_body),
60
+ request_cluster_name=common.JOB_CONTROLLER_NAME,
66
61
  )
67
62
 
68
63
 
@@ -78,7 +73,7 @@ async def logs(
78
73
  func=core.tail_logs,
79
74
  schedule_type=api_requests.ScheduleType.SHORT
80
75
  if jobs_logs_body.refresh else api_requests.ScheduleType.LONG,
81
- request_cluster_name=_get_controller_name(jobs_logs_body),
76
+ request_cluster_name=common.JOB_CONTROLLER_NAME,
82
77
  )
83
78
  request_task = api_requests.get_request(request.state.request_id)
84
79
 
@@ -107,13 +102,16 @@ async def download_logs(
107
102
  func=core.download_logs,
108
103
  schedule_type=api_requests.ScheduleType.LONG
109
104
  if jobs_download_logs_body.refresh else api_requests.ScheduleType.SHORT,
110
- request_cluster_name=_get_controller_name(jobs_download_logs_body),
105
+ request_cluster_name=common.JOB_CONTROLLER_NAME,
111
106
  )
112
107
 
113
108
 
114
109
  @router.get('/dashboard')
115
110
  async def dashboard(request: fastapi.Request,
116
111
  user_hash: str) -> fastapi.Response:
112
+ # Note: before #4717, each user had their own controller, and thus their own
113
+ # dashboard. Now, all users share the same controller, so this isn't really
114
+ # necessary. TODO(cooperc): clean up.
117
115
  # Find the port for the dashboard of the user
118
116
  os.environ[constants.USER_ID_ENV_VAR] = user_hash
119
117
  server_common.reload_for_new_request(client_entrypoint=None,
@@ -249,13 +249,16 @@ def up(
249
249
  # with the current job id, we know the service is up and running
250
250
  # for the first time; otherwise it is a name conflict.
251
251
  idle_minutes_to_autostop = constants.CONTROLLER_IDLE_MINUTES_TO_AUTOSTOP
252
- controller_job_id, controller_handle = execution.launch(
253
- task=controller_task,
254
- cluster_name=controller_name,
255
- idle_minutes_to_autostop=idle_minutes_to_autostop,
256
- retry_until_up=True,
257
- _disable_controller_check=True,
258
- )
252
+ # Since the controller may be shared among multiple users, launch the
253
+ # controller with the API server's user hash.
254
+ with common.with_server_user_hash():
255
+ controller_job_id, controller_handle = execution.launch(
256
+ task=controller_task,
257
+ cluster_name=controller_name,
258
+ idle_minutes_to_autostop=idle_minutes_to_autostop,
259
+ retry_until_up=True,
260
+ _disable_controller_check=True,
261
+ )
259
262
 
260
263
  style = colorama.Style
261
264
  fore = colorama.Fore
@@ -14,11 +14,6 @@ logger = sky_logging.init_logger(__name__)
14
14
  router = fastapi.APIRouter()
15
15
 
16
16
 
17
- def _get_controller_name(request_body: payloads.RequestBody) -> str:
18
- user_hash = request_body.user_hash
19
- return common.get_controller_name(common.ControllerType.SERVE, user_hash)
20
-
21
-
22
17
  @router.post('/up')
23
18
  async def up(
24
19
  request: fastapi.Request,
@@ -30,7 +25,7 @@ async def up(
30
25
  request_body=up_body,
31
26
  func=core.up,
32
27
  schedule_type=api_requests.ScheduleType.LONG,
33
- request_cluster_name=_get_controller_name(up_body),
28
+ request_cluster_name=common.SKY_SERVE_CONTROLLER_NAME,
34
29
  )
35
30
 
36
31
 
@@ -45,7 +40,7 @@ async def update(
45
40
  request_body=update_body,
46
41
  func=core.update,
47
42
  schedule_type=api_requests.ScheduleType.SHORT,
48
- request_cluster_name=_get_controller_name(update_body),
43
+ request_cluster_name=common.SKY_SERVE_CONTROLLER_NAME,
49
44
  )
50
45
 
51
46
 
@@ -60,7 +55,7 @@ async def down(
60
55
  request_body=down_body,
61
56
  func=core.down,
62
57
  schedule_type=api_requests.ScheduleType.SHORT,
63
- request_cluster_name=_get_controller_name(down_body),
58
+ request_cluster_name=common.SKY_SERVE_CONTROLLER_NAME,
64
59
  )
65
60
 
66
61
 
@@ -75,7 +70,7 @@ async def terminate_replica(
75
70
  request_body=terminate_replica_body,
76
71
  func=core.terminate_replica,
77
72
  schedule_type=api_requests.ScheduleType.SHORT,
78
- request_cluster_name=_get_controller_name(terminate_replica_body),
73
+ request_cluster_name=common.SKY_SERVE_CONTROLLER_NAME,
79
74
  )
80
75
 
81
76
 
@@ -90,7 +85,7 @@ async def status(
90
85
  request_body=status_body,
91
86
  func=core.status,
92
87
  schedule_type=api_requests.ScheduleType.SHORT,
93
- request_cluster_name=_get_controller_name(status_body),
88
+ request_cluster_name=common.SKY_SERVE_CONTROLLER_NAME,
94
89
  )
95
90
 
96
91
 
@@ -105,7 +100,7 @@ async def tail_logs(
105
100
  request_body=log_body,
106
101
  func=core.tail_logs,
107
102
  schedule_type=api_requests.ScheduleType.SHORT,
108
- request_cluster_name=_get_controller_name(log_body),
103
+ request_cluster_name=common.SKY_SERVE_CONTROLLER_NAME,
109
104
  )
110
105
 
111
106
  request_task = api_requests.get_request(request.state.request_id)
@@ -3,7 +3,6 @@
3
3
  import dataclasses
4
4
  import enum
5
5
  import functools
6
- import importlib
7
6
  import json
8
7
  import os
9
8
  import pathlib
@@ -28,14 +27,12 @@ from sky.server import constants as server_constants
28
27
  from sky.skylet import constants
29
28
  from sky.usage import usage_lib
30
29
  from sky.utils import annotations
31
- from sky.utils import common
32
30
  from sky.utils import common_utils
33
31
  from sky.utils import rich_utils
34
32
  from sky.utils import ux_utils
35
33
 
36
34
  if typing.TYPE_CHECKING:
37
35
  from sky import dag as dag_lib
38
- from sky.server.requests import payloads
39
36
 
40
37
  DEFAULT_SERVER_URL = 'http://127.0.0.1:46580'
41
38
  AVAILBLE_LOCAL_API_SERVER_HOSTS = ['0.0.0.0', 'localhost', '127.0.0.1']
@@ -407,23 +404,6 @@ def request_body_to_params(body: pydantic.BaseModel) -> Dict[str, Any]:
407
404
  def reload_for_new_request(client_entrypoint: Optional[str],
408
405
  client_command: Optional[str]):
409
406
  """Reload modules, global variables, and usage message for a new request."""
410
- # When a user request is sent to api server, it changes the user hash in the
411
- # env vars, but since controller_utils is imported before the env vars are
412
- # set, it doesn't get updated. So we need to reload it here.
413
- # pylint: disable=import-outside-toplevel
414
- from sky.utils import controller_utils
415
- common.SKY_SERVE_CONTROLLER_NAME = common.get_controller_name(
416
- common.ControllerType.SERVE)
417
- common.JOB_CONTROLLER_NAME = common.get_controller_name(
418
- common.ControllerType.JOBS)
419
- # TODO(zhwu): We should avoid reloading the controller_utils module.
420
- # Instead, we should reload required cache or global variables.
421
- # TODO(zhwu): Reloading the controller_utils module may cause the global
422
- # variables in other modules referring the `controller_utils.Controllers`
423
- # dangling, as they will be pointing to the old object. We should not use
424
- # it in global variables.
425
- importlib.reload(controller_utils)
426
-
427
407
  # Reset the client entrypoint and command for the usage message.
428
408
  common_utils.set_client_entrypoint_and_command(
429
409
  client_entrypoint=client_entrypoint,
@@ -0,0 +1,54 @@
1
+ """Common enumerators and classes."""
2
+
3
+ import contextlib
4
+ import enum
5
+ import os
6
+ from typing import Generator
7
+
8
+ from sky.skylet import constants
9
+ from sky.utils import common_utils
10
+
11
+ SKY_SERVE_CONTROLLER_PREFIX: str = 'sky-serve-controller-'
12
+ JOB_CONTROLLER_PREFIX: str = 'sky-jobs-controller-'
13
+ # We use the user hash (machine-specific) for the controller name. It will be
14
+ # the same across the whole lifecycle of the server, including:
15
+ # 1. all requests, because this global variable is set once during server
16
+ # starts.
17
+ # 2. SkyPilot API server restarts, as long as the `~/.sky` folder is persisted
18
+ # and the env var set during starting the server is the same.
19
+ # This behavior is the same for the local API server (where SERVER_ID is the
20
+ # same as the normal user hash). This ensures backwards-compatibility with jobs
21
+ # controllers from before #4660.
22
+ SERVER_ID = common_utils.get_user_hash()
23
+ SKY_SERVE_CONTROLLER_NAME: str = f'{SKY_SERVE_CONTROLLER_PREFIX}{SERVER_ID}'
24
+ JOB_CONTROLLER_NAME: str = f'{JOB_CONTROLLER_PREFIX}{SERVER_ID}'
25
+
26
+
27
+ @contextlib.contextmanager
28
+ def with_server_user_hash() -> Generator[None, None, None]:
29
+ """Temporarily set the user hash to common.SERVER_ID."""
30
+ old_env_user_hash = os.getenv(constants.USER_ID_ENV_VAR)
31
+ os.environ[constants.USER_ID_ENV_VAR] = SERVER_ID
32
+ try:
33
+ yield
34
+ finally:
35
+ if old_env_user_hash is not None:
36
+ os.environ[constants.USER_ID_ENV_VAR] = old_env_user_hash
37
+ else:
38
+ os.environ.pop(constants.USER_ID_ENV_VAR)
39
+
40
+
41
+ class StatusRefreshMode(enum.Enum):
42
+ """The mode of refreshing the status of a cluster."""
43
+ NONE = 'NONE'
44
+ """Do not refresh any clusters."""
45
+ AUTO = 'AUTO'
46
+ """Only refresh clusters if their autostop is set or have spot instances."""
47
+ FORCE = 'FORCE'
48
+ """Enforce refreshing all clusters."""
49
+
50
+
51
+ # Constants: minimize what target?
52
+ class OptimizeTarget(enum.Enum):
53
+ COST = 0
54
+ TIME = 1
@@ -91,10 +91,6 @@ class Controllers(enum.Enum):
91
91
  JOBS_CONTROLLER = _ControllerSpec(
92
92
  controller_type='jobs',
93
93
  name='managed jobs controller',
94
- # Default cluster name is the current user's controller cluster unless
95
- # caller initiate with a different controller name.
96
- # TODO(zhwu): by having the controller name loaded in common, it
97
- # will not respect the latest updated user hash.
98
94
  cluster_name=common.JOB_CONTROLLER_NAME,
99
95
  in_progress_hint=(
100
96
  '* {job_info}To see all managed jobs: '
@@ -164,13 +160,18 @@ class Controllers(enum.Enum):
164
160
  if name is None:
165
161
  return None
166
162
  controller = None
163
+ # The controller name is always the same. However, on the client-side,
164
+ # we may not know the exact name, because we are missing the server-side
165
+ # common.SERVER_ID. So, we will assume anything that matches the prefix
166
+ # is a controller.
167
167
  if name.startswith(common.SKY_SERVE_CONTROLLER_PREFIX):
168
168
  controller = cls.SKY_SERVE_CONTROLLER
169
169
  elif name.startswith(common.JOB_CONTROLLER_PREFIX):
170
170
  controller = cls.JOBS_CONTROLLER
171
171
  if controller is not None and name != controller.value.cluster_name:
172
- # Input name is not the current user's controller name,
173
- # so need to set the controller's cluster name to the input name.
172
+ # The client-side cluster_name is not accurate. Assume that `name`
173
+ # is the actual cluster name, so need to set the controller's
174
+ # cluster name to the input name.
174
175
  controller.value.cluster_name = name
175
176
  return controller
176
177
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: skypilot-nightly
3
- Version: 1.0.0.dev20250218
3
+ Version: 1.0.0.dev20250219
4
4
  Summary: SkyPilot: An intercloud broker for the clouds
5
5
  Author: SkyPilot Team
6
6
  License: Apache 2.0
@@ -1,74 +0,0 @@
1
- """Common enumerators and classes."""
2
-
3
- import enum
4
- from typing import Optional
5
-
6
- from sky.utils import common_utils
7
-
8
- SKY_SERVE_CONTROLLER_PREFIX: str = 'sky-serve-controller-'
9
- JOB_CONTROLLER_PREFIX: str = 'sky-jobs-controller-'
10
- SERVER_ID_CONNECTOR: str = '-remote-'
11
- # We use the user hash (machine-specific) hash of the server to determine if a
12
- # SkyPilot API server is started by the same user. It will be the same across
13
- # the whole lifecycle of the server, including:
14
- # 1. all requests, because this global variable is set once during server
15
- # starts.
16
- # 2. SkyPilot API server restarts, as long as the `~/.sky` folder is persisted
17
- # and the env var set during starting the server is the same.
18
- SERVER_ID = common_utils.get_user_hash()
19
-
20
-
21
- class ControllerType(enum.Enum):
22
- SERVE = 'SERVE'
23
- JOBS = 'JOBS'
24
-
25
-
26
- def get_controller_name(controller_type: ControllerType,
27
- user_hash: Optional[str] = None) -> str:
28
- prefix = JOB_CONTROLLER_PREFIX
29
- if controller_type == ControllerType.SERVE:
30
- prefix = SKY_SERVE_CONTROLLER_PREFIX
31
- if user_hash is None:
32
- user_hash = common_utils.get_user_hash()
33
- # Comparing the two IDs can determine if the caller is trying to get the
34
- # controller created by their local API server or a remote API server.
35
- if user_hash == SERVER_ID:
36
- # Not adding server ID for locally created controller because
37
- # of backward compatibility.
38
- return f'{prefix}{user_hash}'
39
- return f'{prefix}{user_hash}{SERVER_ID_CONNECTOR}{SERVER_ID}'
40
-
41
-
42
- # Controller names differ per user and per SkyPilot API server.
43
- # If local: <prefix>-<user_id>
44
- # If remote: <prefix>-<user_id>-remote-<api_server_user_id>
45
- # DO NOT use these variables on the client side because client side doesn't know
46
- # the remote server's user id, so client side will get local-version controller
47
- # name.
48
- # TODO(SKY-1106): remove dynamic constants like this.
49
- SKY_SERVE_CONTROLLER_NAME: str = get_controller_name(ControllerType.SERVE)
50
- JOB_CONTROLLER_NAME: str = get_controller_name(ControllerType.JOBS)
51
-
52
-
53
- class StatusRefreshMode(enum.Enum):
54
- """The mode of refreshing the status of a cluster."""
55
- NONE = 'NONE'
56
- """Do not refresh any clusters."""
57
- AUTO = 'AUTO'
58
- """Only refresh clusters if their autostop is set or have spot instances."""
59
- FORCE = 'FORCE'
60
- """Enforce refreshing all clusters."""
61
-
62
-
63
- # Constants: minimize what target?
64
- class OptimizeTarget(enum.Enum):
65
- COST = 0
66
- TIME = 1
67
-
68
-
69
- def is_current_user_controller(controller_name: str) -> bool:
70
- """If the controller name belongs to the current user."""
71
- if SERVER_ID_CONNECTOR in controller_name:
72
- controller_name = controller_name.split(SERVER_ID_CONNECTOR)[0]
73
- controller_user_id = controller_name.split('-')[-1]
74
- return controller_user_id == common_utils.get_user_hash()