skypilot-nightly 1.0.0.dev20250218__tar.gz → 1.0.0.dev20250220__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.dev20250220}/PKG-INFO +1 -1
  2. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/__init__.py +2 -2
  3. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/cli.py +15 -24
  4. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/client/cli.py +15 -24
  5. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/clouds/service_catalog/data_fetchers/fetch_gcp.py +2 -2
  6. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/jobs/server/core.py +22 -17
  7. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/jobs/server/dashboard_utils.py +6 -1
  8. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/jobs/server/server.py +8 -10
  9. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/serve/server/core.py +10 -7
  10. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/serve/server/server.py +6 -11
  11. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/server/common.py +5 -27
  12. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/server/requests/executor.py +94 -87
  13. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/server/server.py +10 -5
  14. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/server/stream_utils.py +8 -11
  15. skypilot_nightly-1.0.0.dev20250220/sky/utils/common.py +54 -0
  16. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/utils/common_utils.py +38 -0
  17. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/utils/controller_utils.py +7 -6
  18. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220/skypilot_nightly.egg-info}/PKG-INFO +1 -1
  19. skypilot_nightly-1.0.0.dev20250218/sky/utils/common.py +0 -74
  20. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/LICENSE +0 -0
  21. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/MANIFEST.in +0 -0
  22. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/README.md +0 -0
  23. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/pyproject.toml +0 -0
  24. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/setup.cfg +0 -0
  25. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/setup.py +0 -0
  26. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/adaptors/__init__.py +0 -0
  27. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/adaptors/aws.py +0 -0
  28. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/adaptors/azure.py +0 -0
  29. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/adaptors/cloudflare.py +0 -0
  30. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/adaptors/common.py +0 -0
  31. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/adaptors/cudo.py +0 -0
  32. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/adaptors/do.py +0 -0
  33. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/adaptors/docker.py +0 -0
  34. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/adaptors/gcp.py +0 -0
  35. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/adaptors/ibm.py +0 -0
  36. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/adaptors/kubernetes.py +0 -0
  37. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/adaptors/oci.py +0 -0
  38. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/adaptors/runpod.py +0 -0
  39. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/adaptors/vast.py +0 -0
  40. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/adaptors/vsphere.py +0 -0
  41. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/admin_policy.py +0 -0
  42. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/authentication.py +0 -0
  43. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/backends/__init__.py +0 -0
  44. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/backends/backend.py +0 -0
  45. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/backends/backend_utils.py +0 -0
  46. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/backends/cloud_vm_ray_backend.py +0 -0
  47. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/backends/docker_utils.py +0 -0
  48. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/backends/local_docker_backend.py +0 -0
  49. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/backends/monkey_patches/monkey_patch_ray_up.py +0 -0
  50. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/backends/wheel_utils.py +0 -0
  51. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/benchmark/__init__.py +0 -0
  52. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/benchmark/benchmark_state.py +0 -0
  53. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/benchmark/benchmark_utils.py +0 -0
  54. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/check.py +0 -0
  55. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/client/__init__.py +0 -0
  56. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/client/common.py +0 -0
  57. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/client/sdk.py +0 -0
  58. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/cloud_stores.py +0 -0
  59. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/clouds/__init__.py +0 -0
  60. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/clouds/aws.py +0 -0
  61. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/clouds/azure.py +0 -0
  62. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/clouds/cloud.py +0 -0
  63. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/clouds/cudo.py +0 -0
  64. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/clouds/do.py +0 -0
  65. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/clouds/fluidstack.py +0 -0
  66. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/clouds/gcp.py +0 -0
  67. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/clouds/ibm.py +0 -0
  68. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/clouds/kubernetes.py +0 -0
  69. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/clouds/lambda_cloud.py +0 -0
  70. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/clouds/oci.py +0 -0
  71. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/clouds/paperspace.py +0 -0
  72. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/clouds/runpod.py +0 -0
  73. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/clouds/scp.py +0 -0
  74. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/clouds/service_catalog/__init__.py +0 -0
  75. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/clouds/service_catalog/aws_catalog.py +0 -0
  76. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/clouds/service_catalog/azure_catalog.py +0 -0
  77. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/clouds/service_catalog/common.py +0 -0
  78. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/clouds/service_catalog/config.py +0 -0
  79. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/clouds/service_catalog/constants.py +0 -0
  80. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/clouds/service_catalog/cudo_catalog.py +0 -0
  81. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/clouds/service_catalog/data_fetchers/__init__.py +0 -0
  82. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/clouds/service_catalog/data_fetchers/fetch_aws.py +0 -0
  83. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/clouds/service_catalog/data_fetchers/fetch_azure.py +0 -0
  84. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/clouds/service_catalog/data_fetchers/fetch_cudo.py +0 -0
  85. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/clouds/service_catalog/data_fetchers/fetch_fluidstack.py +0 -0
  86. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/clouds/service_catalog/data_fetchers/fetch_lambda_cloud.py +0 -0
  87. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/clouds/service_catalog/data_fetchers/fetch_vast.py +0 -0
  88. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/clouds/service_catalog/data_fetchers/fetch_vsphere.py +0 -0
  89. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/clouds/service_catalog/do_catalog.py +0 -0
  90. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/clouds/service_catalog/fluidstack_catalog.py +0 -0
  91. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/clouds/service_catalog/gcp_catalog.py +0 -0
  92. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/clouds/service_catalog/ibm_catalog.py +0 -0
  93. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/clouds/service_catalog/kubernetes_catalog.py +0 -0
  94. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/clouds/service_catalog/lambda_catalog.py +0 -0
  95. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/clouds/service_catalog/oci_catalog.py +0 -0
  96. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/clouds/service_catalog/paperspace_catalog.py +0 -0
  97. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/clouds/service_catalog/runpod_catalog.py +0 -0
  98. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/clouds/service_catalog/scp_catalog.py +0 -0
  99. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/clouds/service_catalog/vast_catalog.py +0 -0
  100. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/clouds/service_catalog/vsphere_catalog.py +0 -0
  101. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/clouds/utils/__init__.py +0 -0
  102. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/clouds/utils/aws_utils.py +0 -0
  103. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/clouds/utils/azure_utils.py +0 -0
  104. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/clouds/utils/gcp_utils.py +0 -0
  105. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/clouds/utils/oci_utils.py +0 -0
  106. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/clouds/utils/scp_utils.py +0 -0
  107. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/clouds/vast.py +0 -0
  108. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/clouds/vsphere.py +0 -0
  109. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/core.py +0 -0
  110. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/dag.py +0 -0
  111. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/data/__init__.py +0 -0
  112. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/data/data_transfer.py +0 -0
  113. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/data/data_utils.py +0 -0
  114. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/data/mounting_utils.py +0 -0
  115. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/data/storage.py +0 -0
  116. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/data/storage_utils.py +0 -0
  117. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/exceptions.py +0 -0
  118. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/execution.py +0 -0
  119. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/global_user_state.py +0 -0
  120. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/jobs/__init__.py +0 -0
  121. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/jobs/client/__init__.py +0 -0
  122. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/jobs/client/sdk.py +0 -0
  123. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/jobs/constants.py +0 -0
  124. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/jobs/controller.py +0 -0
  125. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/jobs/dashboard/dashboard.py +0 -0
  126. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/jobs/dashboard/static/favicon.ico +0 -0
  127. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/jobs/dashboard/templates/index.html +0 -0
  128. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/jobs/recovery_strategy.py +0 -0
  129. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/jobs/scheduler.py +0 -0
  130. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/jobs/server/__init__.py +0 -0
  131. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/jobs/state.py +0 -0
  132. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/jobs/utils.py +0 -0
  133. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/models.py +0 -0
  134. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/optimizer.py +0 -0
  135. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/provision/__init__.py +0 -0
  136. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/provision/aws/__init__.py +0 -0
  137. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/provision/aws/config.py +0 -0
  138. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/provision/aws/instance.py +0 -0
  139. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/provision/aws/utils.py +0 -0
  140. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/provision/azure/__init__.py +0 -0
  141. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/provision/azure/azure-config-template.json +0 -0
  142. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/provision/azure/config.py +0 -0
  143. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/provision/azure/instance.py +0 -0
  144. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/provision/common.py +0 -0
  145. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/provision/constants.py +0 -0
  146. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/provision/cudo/__init__.py +0 -0
  147. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/provision/cudo/config.py +0 -0
  148. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/provision/cudo/cudo_machine_type.py +0 -0
  149. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/provision/cudo/cudo_utils.py +0 -0
  150. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/provision/cudo/cudo_wrapper.py +0 -0
  151. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/provision/cudo/instance.py +0 -0
  152. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/provision/do/__init__.py +0 -0
  153. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/provision/do/config.py +0 -0
  154. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/provision/do/constants.py +0 -0
  155. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/provision/do/instance.py +0 -0
  156. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/provision/do/utils.py +0 -0
  157. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/provision/docker_utils.py +0 -0
  158. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/provision/fluidstack/__init__.py +0 -0
  159. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/provision/fluidstack/config.py +0 -0
  160. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/provision/fluidstack/fluidstack_utils.py +0 -0
  161. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/provision/fluidstack/instance.py +0 -0
  162. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/provision/gcp/__init__.py +0 -0
  163. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/provision/gcp/config.py +0 -0
  164. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/provision/gcp/constants.py +0 -0
  165. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/provision/gcp/instance.py +0 -0
  166. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/provision/gcp/instance_utils.py +0 -0
  167. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/provision/gcp/mig_utils.py +0 -0
  168. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/provision/instance_setup.py +0 -0
  169. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/provision/kubernetes/__init__.py +0 -0
  170. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/provision/kubernetes/config.py +0 -0
  171. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/provision/kubernetes/constants.py +0 -0
  172. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/provision/kubernetes/instance.py +0 -0
  173. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/provision/kubernetes/manifests/smarter-device-manager-configmap.yaml +0 -0
  174. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/provision/kubernetes/manifests/smarter-device-manager-daemonset.yaml +0 -0
  175. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/provision/kubernetes/network.py +0 -0
  176. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/provision/kubernetes/network_utils.py +0 -0
  177. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/provision/kubernetes/utils.py +0 -0
  178. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/provision/lambda_cloud/__init__.py +0 -0
  179. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/provision/lambda_cloud/config.py +0 -0
  180. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/provision/lambda_cloud/instance.py +0 -0
  181. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/provision/lambda_cloud/lambda_utils.py +0 -0
  182. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/provision/logging.py +0 -0
  183. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/provision/metadata_utils.py +0 -0
  184. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/provision/oci/__init__.py +0 -0
  185. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/provision/oci/config.py +0 -0
  186. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/provision/oci/instance.py +0 -0
  187. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/provision/oci/query_utils.py +0 -0
  188. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/provision/paperspace/__init__.py +0 -0
  189. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/provision/paperspace/config.py +0 -0
  190. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/provision/paperspace/constants.py +0 -0
  191. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/provision/paperspace/instance.py +0 -0
  192. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/provision/paperspace/utils.py +0 -0
  193. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/provision/provisioner.py +0 -0
  194. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/provision/runpod/__init__.py +0 -0
  195. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/provision/runpod/api/__init__.py +0 -0
  196. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/provision/runpod/api/commands.py +0 -0
  197. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/provision/runpod/api/pods.py +0 -0
  198. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/provision/runpod/config.py +0 -0
  199. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/provision/runpod/instance.py +0 -0
  200. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/provision/runpod/utils.py +0 -0
  201. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/provision/vast/__init__.py +0 -0
  202. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/provision/vast/config.py +0 -0
  203. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/provision/vast/instance.py +0 -0
  204. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/provision/vast/utils.py +0 -0
  205. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/provision/vsphere/__init__.py +0 -0
  206. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/provision/vsphere/common/__init__.py +0 -0
  207. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/provision/vsphere/common/cls_api_client.py +0 -0
  208. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/provision/vsphere/common/cls_api_helper.py +0 -0
  209. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/provision/vsphere/common/custom_script.py +0 -0
  210. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/provision/vsphere/common/id_generator.py +0 -0
  211. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/provision/vsphere/common/metadata_utils.py +0 -0
  212. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/provision/vsphere/common/service_manager.py +0 -0
  213. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/provision/vsphere/common/service_manager_factory.py +0 -0
  214. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/provision/vsphere/common/ssl_helper.py +0 -0
  215. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/provision/vsphere/common/vapiconnect.py +0 -0
  216. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/provision/vsphere/common/vim_utils.py +0 -0
  217. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/provision/vsphere/config.py +0 -0
  218. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/provision/vsphere/instance.py +0 -0
  219. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/provision/vsphere/vsphere_utils.py +0 -0
  220. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/resources.py +0 -0
  221. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/serve/__init__.py +0 -0
  222. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/serve/autoscalers.py +0 -0
  223. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/serve/client/__init__.py +0 -0
  224. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/serve/client/sdk.py +0 -0
  225. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/serve/constants.py +0 -0
  226. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/serve/controller.py +0 -0
  227. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/serve/load_balancer.py +0 -0
  228. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/serve/load_balancing_policies.py +0 -0
  229. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/serve/replica_managers.py +0 -0
  230. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/serve/serve_state.py +0 -0
  231. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/serve/serve_utils.py +0 -0
  232. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/serve/server/__init__.py +0 -0
  233. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/serve/service.py +0 -0
  234. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/serve/service_spec.py +0 -0
  235. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/server/__init__.py +0 -0
  236. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/server/constants.py +0 -0
  237. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/server/html/log.html +0 -0
  238. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/server/requests/__init__.py +0 -0
  239. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/server/requests/payloads.py +0 -0
  240. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/server/requests/queues/__init__.py +0 -0
  241. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/server/requests/queues/mp_queue.py +0 -0
  242. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/server/requests/requests.py +0 -0
  243. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/server/requests/serializers/__init__.py +0 -0
  244. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/server/requests/serializers/decoders.py +0 -0
  245. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/server/requests/serializers/encoders.py +0 -0
  246. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/setup_files/MANIFEST.in +0 -0
  247. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/setup_files/dependencies.py +0 -0
  248. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/setup_files/setup.py +0 -0
  249. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/sky_logging.py +0 -0
  250. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/skylet/LICENSE +0 -0
  251. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/skylet/__init__.py +0 -0
  252. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/skylet/attempt_skylet.py +0 -0
  253. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/skylet/autostop_lib.py +0 -0
  254. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/skylet/configs.py +0 -0
  255. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/skylet/constants.py +0 -0
  256. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/skylet/events.py +0 -0
  257. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/skylet/job_lib.py +0 -0
  258. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/skylet/log_lib.py +0 -0
  259. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/skylet/log_lib.pyi +0 -0
  260. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/skylet/providers/__init__.py +0 -0
  261. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/skylet/providers/command_runner.py +0 -0
  262. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/skylet/providers/ibm/__init__.py +0 -0
  263. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/skylet/providers/ibm/node_provider.py +0 -0
  264. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/skylet/providers/ibm/utils.py +0 -0
  265. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/skylet/providers/ibm/vpc_provider.py +0 -0
  266. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/skylet/providers/scp/__init__.py +0 -0
  267. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/skylet/providers/scp/config.py +0 -0
  268. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/skylet/providers/scp/node_provider.py +0 -0
  269. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/skylet/ray_patches/__init__.py +0 -0
  270. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/skylet/ray_patches/autoscaler.py.patch +0 -0
  271. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/skylet/ray_patches/cli.py.patch +0 -0
  272. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/skylet/ray_patches/command_runner.py.patch +0 -0
  273. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/skylet/ray_patches/log_monitor.py.patch +0 -0
  274. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/skylet/ray_patches/resource_demand_scheduler.py.patch +0 -0
  275. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/skylet/ray_patches/updater.py.patch +0 -0
  276. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/skylet/ray_patches/worker.py.patch +0 -0
  277. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/skylet/skylet.py +0 -0
  278. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/skylet/subprocess_daemon.py +0 -0
  279. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/skypilot_config.py +0 -0
  280. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/task.py +0 -0
  281. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/templates/aws-ray.yml.j2 +0 -0
  282. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/templates/azure-ray.yml.j2 +0 -0
  283. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/templates/cudo-ray.yml.j2 +0 -0
  284. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/templates/do-ray.yml.j2 +0 -0
  285. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/templates/fluidstack-ray.yml.j2 +0 -0
  286. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/templates/gcp-ray.yml.j2 +0 -0
  287. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/templates/ibm-ray.yml.j2 +0 -0
  288. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/templates/jobs-controller.yaml.j2 +0 -0
  289. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/templates/kubernetes-ingress.yml.j2 +0 -0
  290. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/templates/kubernetes-loadbalancer.yml.j2 +0 -0
  291. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/templates/kubernetes-port-forward-proxy-command.sh +0 -0
  292. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/templates/kubernetes-ray.yml.j2 +0 -0
  293. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/templates/kubernetes-ssh-jump.yml.j2 +0 -0
  294. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/templates/lambda-ray.yml.j2 +0 -0
  295. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/templates/local-ray.yml.j2 +0 -0
  296. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/templates/oci-ray.yml.j2 +0 -0
  297. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/templates/paperspace-ray.yml.j2 +0 -0
  298. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/templates/runpod-ray.yml.j2 +0 -0
  299. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/templates/scp-ray.yml.j2 +0 -0
  300. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/templates/sky-serve-controller.yaml.j2 +0 -0
  301. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/templates/skypilot-server-kubernetes-proxy.sh +0 -0
  302. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/templates/vast-ray.yml.j2 +0 -0
  303. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/templates/vsphere-ray.yml.j2 +0 -0
  304. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/templates/websocket_proxy.py +0 -0
  305. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/usage/__init__.py +0 -0
  306. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/usage/constants.py +0 -0
  307. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/usage/usage_lib.py +0 -0
  308. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/utils/__init__.py +0 -0
  309. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/utils/accelerator_registry.py +0 -0
  310. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/utils/admin_policy_utils.py +0 -0
  311. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/utils/annotations.py +0 -0
  312. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/utils/cli_utils/__init__.py +0 -0
  313. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/utils/cli_utils/status_utils.py +0 -0
  314. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/utils/cluster_utils.py +0 -0
  315. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/utils/command_runner.py +0 -0
  316. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/utils/command_runner.pyi +0 -0
  317. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/utils/config_utils.py +0 -0
  318. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/utils/control_master_utils.py +0 -0
  319. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/utils/dag_utils.py +0 -0
  320. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/utils/db_utils.py +0 -0
  321. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/utils/env_options.py +0 -0
  322. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/utils/kubernetes/__init__.py +0 -0
  323. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/utils/kubernetes/create_cluster.sh +0 -0
  324. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/utils/kubernetes/delete_cluster.sh +0 -0
  325. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/utils/kubernetes/deploy_remote_cluster.sh +0 -0
  326. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/utils/kubernetes/exec_kubeconfig_converter.py +0 -0
  327. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/utils/kubernetes/generate_kind_config.py +0 -0
  328. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/utils/kubernetes/generate_kubeconfig.sh +0 -0
  329. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/utils/kubernetes/gpu_labeler.py +0 -0
  330. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/utils/kubernetes/k8s_gpu_labeler_job.yaml +0 -0
  331. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/utils/kubernetes/k8s_gpu_labeler_setup.yaml +0 -0
  332. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/utils/kubernetes/kubernetes_deploy_utils.py +0 -0
  333. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/utils/kubernetes/rsync_helper.sh +0 -0
  334. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/utils/kubernetes/ssh_jump_lifecycle_manager.py +0 -0
  335. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/utils/kubernetes_enums.py +0 -0
  336. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/utils/log_utils.py +0 -0
  337. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/utils/message_utils.py +0 -0
  338. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/utils/registry.py +0 -0
  339. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/utils/resources_utils.py +0 -0
  340. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/utils/rich_utils.py +0 -0
  341. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/utils/schemas.py +0 -0
  342. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/utils/status_lib.py +0 -0
  343. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/utils/subprocess_utils.py +0 -0
  344. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/utils/timeline.py +0 -0
  345. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/utils/ux_utils.py +0 -0
  346. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/sky/utils/validator.py +0 -0
  347. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/skypilot_nightly.egg-info/SOURCES.txt +0 -0
  348. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/skypilot_nightly.egg-info/dependency_links.txt +0 -0
  349. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/skypilot_nightly.egg-info/entry_points.txt +0 -0
  350. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/skypilot_nightly.egg-info/requires.txt +0 -0
  351. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/skypilot_nightly.egg-info/top_level.txt +0 -0
  352. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/tests/test_api.py +0 -0
  353. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/tests/test_cli.py +0 -0
  354. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/tests/test_config.py +0 -0
  355. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/tests/test_global_user_state.py +0 -0
  356. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/tests/test_jobs.py +0 -0
  357. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/tests/test_jobs_and_serve.py +0 -0
  358. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/tests/test_list_accelerators.py +0 -0
  359. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/tests/test_optimizer_dryruns.py +0 -0
  360. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/tests/test_optimizer_random_dag.py +0 -0
  361. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/tests/test_serve_autoscaler.py +0 -0
  362. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/tests/test_smoke.py +0 -0
  363. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/tests/test_storage.py +0 -0
  364. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/tests/test_wheels.py +0 -0
  365. {skypilot_nightly-1.0.0.dev20250218 → skypilot_nightly-1.0.0.dev20250220}/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.dev20250220
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 = '6b2b31d8358f3ff8394a7a33ec49e9985ada230f'
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.dev20250220'
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
@@ -16,7 +15,6 @@ import uuid
16
15
 
17
16
  import colorama
18
17
  import filelock
19
- import psutil
20
18
  import pydantic
21
19
  import requests
22
20
 
@@ -28,14 +26,12 @@ from sky.server import constants as server_constants
28
26
  from sky.skylet import constants
29
27
  from sky.usage import usage_lib
30
28
  from sky.utils import annotations
31
- from sky.utils import common
32
29
  from sky.utils import common_utils
33
30
  from sky.utils import rich_utils
34
31
  from sky.utils import ux_utils
35
32
 
36
33
  if typing.TYPE_CHECKING:
37
34
  from sky import dag as dag_lib
38
- from sky.server.requests import payloads
39
35
 
40
36
  DEFAULT_SERVER_URL = 'http://127.0.0.1:46580'
41
37
  AVAILBLE_LOCAL_API_SERVER_HOSTS = ['0.0.0.0', 'localhost', '127.0.0.1']
@@ -149,13 +145,14 @@ def get_api_server_status(endpoint: Optional[str] = None) -> ApiServerInfo:
149
145
  return ApiServerInfo(status=ApiServerStatus.UNHEALTHY, api_version=None)
150
146
 
151
147
 
152
- def start_uvicorn_in_background(deploy: bool = False, host: str = '127.0.0.1'):
148
+ def start_api_server_in_background(deploy: bool = False,
149
+ host: str = '127.0.0.1'):
153
150
  if not is_api_server_local():
154
151
  raise RuntimeError(
155
152
  f'Cannot start API server: {get_server_url()} is not a local URL')
156
153
 
157
154
  # Check available memory before starting the server.
158
- avail_mem_size_gb: float = psutil.virtual_memory().available / (1024**3)
155
+ avail_mem_size_gb: float = common_utils.get_mem_size_gb()
159
156
  if avail_mem_size_gb <= server_constants.MIN_AVAIL_MEM_GB:
160
157
  logger.warning(
161
158
  f'{colorama.Fore.YELLOW}Your SkyPilot API server machine only has '
@@ -166,8 +163,6 @@ def start_uvicorn_in_background(deploy: bool = False, host: str = '127.0.0.1'):
166
163
  log_path = os.path.expanduser(constants.API_SERVER_LOGS)
167
164
  os.makedirs(os.path.dirname(log_path), exist_ok=True)
168
165
 
169
- # The command to run uvicorn. Adjust the app:app to your application's
170
- # location.
171
166
  api_server_cmd = API_SERVER_CMD
172
167
  if deploy:
173
168
  api_server_cmd += ' --deploy'
@@ -175,7 +170,7 @@ def start_uvicorn_in_background(deploy: bool = False, host: str = '127.0.0.1'):
175
170
  api_server_cmd += f' --host {host}'
176
171
  cmd = f'{sys.executable} {api_server_cmd} > {log_path} 2>&1'
177
172
 
178
- # Start the uvicorn process in the background and don't wait for it.
173
+ # Start the API server process in the background and don't wait for it.
179
174
  # If this is called from a CLI invocation, we need start_new_session=True so
180
175
  # that SIGINT on the CLI will not also kill the API server.
181
176
  subprocess.Popen(cmd, shell=True, start_new_session=True)
@@ -235,7 +230,7 @@ def _start_api_server(deploy: bool = False, host: str = '127.0.0.1'):
235
230
  f'SkyPilot API server at {server_url}. '
236
231
  'Starting a local server.'
237
232
  f'{colorama.Style.RESET_ALL}')
238
- start_uvicorn_in_background(deploy=deploy, host=host)
233
+ start_api_server_in_background(deploy=deploy, host=host)
239
234
  logger.info(ux_utils.finishing_message('SkyPilot API server started.'))
240
235
 
241
236
 
@@ -407,23 +402,6 @@ def request_body_to_params(body: pydantic.BaseModel) -> Dict[str, Any]:
407
402
  def reload_for_new_request(client_entrypoint: Optional[str],
408
403
  client_command: Optional[str]):
409
404
  """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
405
  # Reset the client entrypoint and command for the usage message.
428
406
  common_utils.set_client_entrypoint_and_command(
429
407
  client_entrypoint=client_entrypoint,