skypilot-nightly 1.0.0.dev20250217__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.dev20250217/skypilot_nightly.egg-info → skypilot_nightly-1.0.0.dev20250219}/PKG-INFO +1 -1
  2. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/__init__.py +2 -2
  3. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/cli.py +15 -24
  4. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/client/cli.py +15 -24
  5. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/clouds/do.py +5 -2
  6. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/clouds/service_catalog/data_fetchers/fetch_gcp.py +2 -2
  7. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/clouds/service_catalog/data_fetchers/fetch_lambda_cloud.py +1 -0
  8. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/jobs/server/core.py +22 -17
  9. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/jobs/server/dashboard_utils.py +6 -1
  10. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/jobs/server/server.py +8 -10
  11. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/optimizer.py +13 -11
  12. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/resources.py +8 -7
  13. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/serve/server/core.py +10 -7
  14. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/serve/server/server.py +6 -11
  15. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/server/common.py +3 -22
  16. skypilot_nightly-1.0.0.dev20250219/sky/utils/common.py +54 -0
  17. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/utils/controller_utils.py +7 -6
  18. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219/skypilot_nightly.egg-info}/PKG-INFO +1 -1
  19. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/tests/test_optimizer_dryruns.py +19 -3
  20. skypilot_nightly-1.0.0.dev20250217/sky/utils/common.py +0 -74
  21. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/LICENSE +0 -0
  22. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/MANIFEST.in +0 -0
  23. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/README.md +0 -0
  24. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/pyproject.toml +0 -0
  25. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/setup.cfg +0 -0
  26. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/setup.py +0 -0
  27. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/adaptors/__init__.py +0 -0
  28. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/adaptors/aws.py +0 -0
  29. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/adaptors/azure.py +0 -0
  30. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/adaptors/cloudflare.py +0 -0
  31. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/adaptors/common.py +0 -0
  32. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/adaptors/cudo.py +0 -0
  33. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/adaptors/do.py +0 -0
  34. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/adaptors/docker.py +0 -0
  35. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/adaptors/gcp.py +0 -0
  36. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/adaptors/ibm.py +0 -0
  37. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/adaptors/kubernetes.py +0 -0
  38. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/adaptors/oci.py +0 -0
  39. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/adaptors/runpod.py +0 -0
  40. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/adaptors/vast.py +0 -0
  41. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/adaptors/vsphere.py +0 -0
  42. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/admin_policy.py +0 -0
  43. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/authentication.py +0 -0
  44. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/backends/__init__.py +0 -0
  45. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/backends/backend.py +0 -0
  46. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/backends/backend_utils.py +0 -0
  47. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/backends/cloud_vm_ray_backend.py +0 -0
  48. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/backends/docker_utils.py +0 -0
  49. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/backends/local_docker_backend.py +0 -0
  50. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/backends/monkey_patches/monkey_patch_ray_up.py +0 -0
  51. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/backends/wheel_utils.py +0 -0
  52. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/benchmark/__init__.py +0 -0
  53. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/benchmark/benchmark_state.py +0 -0
  54. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/benchmark/benchmark_utils.py +0 -0
  55. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/check.py +0 -0
  56. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/client/__init__.py +0 -0
  57. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/client/common.py +0 -0
  58. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/client/sdk.py +0 -0
  59. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/cloud_stores.py +0 -0
  60. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/clouds/__init__.py +0 -0
  61. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/clouds/aws.py +0 -0
  62. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/clouds/azure.py +0 -0
  63. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/clouds/cloud.py +0 -0
  64. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/clouds/cudo.py +0 -0
  65. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/clouds/fluidstack.py +0 -0
  66. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/clouds/gcp.py +0 -0
  67. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/clouds/ibm.py +0 -0
  68. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/clouds/kubernetes.py +0 -0
  69. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/clouds/lambda_cloud.py +0 -0
  70. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/clouds/oci.py +0 -0
  71. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/clouds/paperspace.py +0 -0
  72. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/clouds/runpod.py +0 -0
  73. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/clouds/scp.py +0 -0
  74. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/clouds/service_catalog/__init__.py +0 -0
  75. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/clouds/service_catalog/aws_catalog.py +0 -0
  76. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/clouds/service_catalog/azure_catalog.py +0 -0
  77. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/clouds/service_catalog/common.py +0 -0
  78. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/clouds/service_catalog/config.py +0 -0
  79. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/clouds/service_catalog/constants.py +0 -0
  80. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/clouds/service_catalog/cudo_catalog.py +0 -0
  81. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/clouds/service_catalog/data_fetchers/__init__.py +0 -0
  82. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/clouds/service_catalog/data_fetchers/fetch_aws.py +0 -0
  83. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/clouds/service_catalog/data_fetchers/fetch_azure.py +0 -0
  84. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/clouds/service_catalog/data_fetchers/fetch_cudo.py +0 -0
  85. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/clouds/service_catalog/data_fetchers/fetch_fluidstack.py +0 -0
  86. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/clouds/service_catalog/data_fetchers/fetch_vast.py +0 -0
  87. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/clouds/service_catalog/data_fetchers/fetch_vsphere.py +0 -0
  88. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/clouds/service_catalog/do_catalog.py +0 -0
  89. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/clouds/service_catalog/fluidstack_catalog.py +0 -0
  90. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/clouds/service_catalog/gcp_catalog.py +0 -0
  91. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/clouds/service_catalog/ibm_catalog.py +0 -0
  92. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/clouds/service_catalog/kubernetes_catalog.py +0 -0
  93. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/clouds/service_catalog/lambda_catalog.py +0 -0
  94. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/clouds/service_catalog/oci_catalog.py +0 -0
  95. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/clouds/service_catalog/paperspace_catalog.py +0 -0
  96. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/clouds/service_catalog/runpod_catalog.py +0 -0
  97. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/clouds/service_catalog/scp_catalog.py +0 -0
  98. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/clouds/service_catalog/vast_catalog.py +0 -0
  99. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/clouds/service_catalog/vsphere_catalog.py +0 -0
  100. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/clouds/utils/__init__.py +0 -0
  101. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/clouds/utils/aws_utils.py +0 -0
  102. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/clouds/utils/azure_utils.py +0 -0
  103. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/clouds/utils/gcp_utils.py +0 -0
  104. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/clouds/utils/oci_utils.py +0 -0
  105. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/clouds/utils/scp_utils.py +0 -0
  106. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/clouds/vast.py +0 -0
  107. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/clouds/vsphere.py +0 -0
  108. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/core.py +0 -0
  109. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/dag.py +0 -0
  110. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/data/__init__.py +0 -0
  111. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/data/data_transfer.py +0 -0
  112. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/data/data_utils.py +0 -0
  113. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/data/mounting_utils.py +0 -0
  114. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/data/storage.py +0 -0
  115. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/data/storage_utils.py +0 -0
  116. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/exceptions.py +0 -0
  117. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/execution.py +0 -0
  118. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/global_user_state.py +0 -0
  119. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/jobs/__init__.py +0 -0
  120. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/jobs/client/__init__.py +0 -0
  121. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/jobs/client/sdk.py +0 -0
  122. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/jobs/constants.py +0 -0
  123. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/jobs/controller.py +0 -0
  124. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/jobs/dashboard/dashboard.py +0 -0
  125. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/jobs/dashboard/static/favicon.ico +0 -0
  126. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/jobs/dashboard/templates/index.html +0 -0
  127. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/jobs/recovery_strategy.py +0 -0
  128. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/jobs/scheduler.py +0 -0
  129. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/jobs/server/__init__.py +0 -0
  130. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/jobs/state.py +0 -0
  131. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/jobs/utils.py +0 -0
  132. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/models.py +0 -0
  133. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/__init__.py +0 -0
  134. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/aws/__init__.py +0 -0
  135. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/aws/config.py +0 -0
  136. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/aws/instance.py +0 -0
  137. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/aws/utils.py +0 -0
  138. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/azure/__init__.py +0 -0
  139. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/azure/azure-config-template.json +0 -0
  140. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/azure/config.py +0 -0
  141. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/azure/instance.py +0 -0
  142. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/common.py +0 -0
  143. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/constants.py +0 -0
  144. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/cudo/__init__.py +0 -0
  145. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/cudo/config.py +0 -0
  146. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/cudo/cudo_machine_type.py +0 -0
  147. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/cudo/cudo_utils.py +0 -0
  148. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/cudo/cudo_wrapper.py +0 -0
  149. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/cudo/instance.py +0 -0
  150. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/do/__init__.py +0 -0
  151. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/do/config.py +0 -0
  152. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/do/constants.py +0 -0
  153. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/do/instance.py +0 -0
  154. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/do/utils.py +0 -0
  155. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/docker_utils.py +0 -0
  156. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/fluidstack/__init__.py +0 -0
  157. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/fluidstack/config.py +0 -0
  158. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/fluidstack/fluidstack_utils.py +0 -0
  159. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/fluidstack/instance.py +0 -0
  160. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/gcp/__init__.py +0 -0
  161. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/gcp/config.py +0 -0
  162. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/gcp/constants.py +0 -0
  163. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/gcp/instance.py +0 -0
  164. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/gcp/instance_utils.py +0 -0
  165. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/gcp/mig_utils.py +0 -0
  166. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/instance_setup.py +0 -0
  167. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/kubernetes/__init__.py +0 -0
  168. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/kubernetes/config.py +0 -0
  169. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/kubernetes/constants.py +0 -0
  170. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/kubernetes/instance.py +0 -0
  171. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/kubernetes/manifests/smarter-device-manager-configmap.yaml +0 -0
  172. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/kubernetes/manifests/smarter-device-manager-daemonset.yaml +0 -0
  173. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/kubernetes/network.py +0 -0
  174. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/kubernetes/network_utils.py +0 -0
  175. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/kubernetes/utils.py +0 -0
  176. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/lambda_cloud/__init__.py +0 -0
  177. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/lambda_cloud/config.py +0 -0
  178. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/lambda_cloud/instance.py +0 -0
  179. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/lambda_cloud/lambda_utils.py +0 -0
  180. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/logging.py +0 -0
  181. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/metadata_utils.py +0 -0
  182. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/oci/__init__.py +0 -0
  183. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/oci/config.py +0 -0
  184. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/oci/instance.py +0 -0
  185. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/oci/query_utils.py +0 -0
  186. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/paperspace/__init__.py +0 -0
  187. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/paperspace/config.py +0 -0
  188. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/paperspace/constants.py +0 -0
  189. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/paperspace/instance.py +0 -0
  190. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/paperspace/utils.py +0 -0
  191. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/provisioner.py +0 -0
  192. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/runpod/__init__.py +0 -0
  193. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/runpod/api/__init__.py +0 -0
  194. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/runpod/api/commands.py +0 -0
  195. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/runpod/api/pods.py +0 -0
  196. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/runpod/config.py +0 -0
  197. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/runpod/instance.py +0 -0
  198. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/runpod/utils.py +0 -0
  199. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/vast/__init__.py +0 -0
  200. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/vast/config.py +0 -0
  201. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/vast/instance.py +0 -0
  202. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/vast/utils.py +0 -0
  203. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/vsphere/__init__.py +0 -0
  204. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/vsphere/common/__init__.py +0 -0
  205. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/vsphere/common/cls_api_client.py +0 -0
  206. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/vsphere/common/cls_api_helper.py +0 -0
  207. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/vsphere/common/custom_script.py +0 -0
  208. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/vsphere/common/id_generator.py +0 -0
  209. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/vsphere/common/metadata_utils.py +0 -0
  210. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/vsphere/common/service_manager.py +0 -0
  211. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/vsphere/common/service_manager_factory.py +0 -0
  212. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/vsphere/common/ssl_helper.py +0 -0
  213. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/vsphere/common/vapiconnect.py +0 -0
  214. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/vsphere/common/vim_utils.py +0 -0
  215. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/vsphere/config.py +0 -0
  216. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/vsphere/instance.py +0 -0
  217. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/provision/vsphere/vsphere_utils.py +0 -0
  218. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/serve/__init__.py +0 -0
  219. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/serve/autoscalers.py +0 -0
  220. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/serve/client/__init__.py +0 -0
  221. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/serve/client/sdk.py +0 -0
  222. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/serve/constants.py +0 -0
  223. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/serve/controller.py +0 -0
  224. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/serve/load_balancer.py +0 -0
  225. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/serve/load_balancing_policies.py +0 -0
  226. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/serve/replica_managers.py +0 -0
  227. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/serve/serve_state.py +0 -0
  228. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/serve/serve_utils.py +0 -0
  229. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/serve/server/__init__.py +0 -0
  230. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/serve/service.py +0 -0
  231. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/serve/service_spec.py +0 -0
  232. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/server/__init__.py +0 -0
  233. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/server/constants.py +0 -0
  234. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/server/html/log.html +0 -0
  235. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/server/requests/__init__.py +0 -0
  236. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/server/requests/executor.py +0 -0
  237. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/server/requests/payloads.py +0 -0
  238. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/server/requests/queues/__init__.py +0 -0
  239. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/server/requests/queues/mp_queue.py +0 -0
  240. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/server/requests/requests.py +0 -0
  241. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/server/requests/serializers/__init__.py +0 -0
  242. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/server/requests/serializers/decoders.py +0 -0
  243. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/server/requests/serializers/encoders.py +0 -0
  244. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/server/server.py +0 -0
  245. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/server/stream_utils.py +0 -0
  246. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/setup_files/MANIFEST.in +0 -0
  247. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/setup_files/dependencies.py +0 -0
  248. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/setup_files/setup.py +0 -0
  249. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/sky_logging.py +0 -0
  250. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/skylet/LICENSE +0 -0
  251. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/skylet/__init__.py +0 -0
  252. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/skylet/attempt_skylet.py +0 -0
  253. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/skylet/autostop_lib.py +0 -0
  254. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/skylet/configs.py +0 -0
  255. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/skylet/constants.py +0 -0
  256. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/skylet/events.py +0 -0
  257. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/skylet/job_lib.py +0 -0
  258. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/skylet/log_lib.py +0 -0
  259. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/skylet/log_lib.pyi +0 -0
  260. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/skylet/providers/__init__.py +0 -0
  261. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/skylet/providers/command_runner.py +0 -0
  262. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/skylet/providers/ibm/__init__.py +0 -0
  263. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/skylet/providers/ibm/node_provider.py +0 -0
  264. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/skylet/providers/ibm/utils.py +0 -0
  265. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/skylet/providers/ibm/vpc_provider.py +0 -0
  266. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/skylet/providers/scp/__init__.py +0 -0
  267. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/skylet/providers/scp/config.py +0 -0
  268. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/skylet/providers/scp/node_provider.py +0 -0
  269. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/skylet/ray_patches/__init__.py +0 -0
  270. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/skylet/ray_patches/autoscaler.py.patch +0 -0
  271. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/skylet/ray_patches/cli.py.patch +0 -0
  272. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/skylet/ray_patches/command_runner.py.patch +0 -0
  273. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/skylet/ray_patches/log_monitor.py.patch +0 -0
  274. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/skylet/ray_patches/resource_demand_scheduler.py.patch +0 -0
  275. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/skylet/ray_patches/updater.py.patch +0 -0
  276. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/skylet/ray_patches/worker.py.patch +0 -0
  277. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/skylet/skylet.py +0 -0
  278. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/skylet/subprocess_daemon.py +0 -0
  279. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/skypilot_config.py +0 -0
  280. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/task.py +0 -0
  281. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/templates/aws-ray.yml.j2 +0 -0
  282. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/templates/azure-ray.yml.j2 +0 -0
  283. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/templates/cudo-ray.yml.j2 +0 -0
  284. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/templates/do-ray.yml.j2 +0 -0
  285. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/templates/fluidstack-ray.yml.j2 +0 -0
  286. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/templates/gcp-ray.yml.j2 +0 -0
  287. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/templates/ibm-ray.yml.j2 +0 -0
  288. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/templates/jobs-controller.yaml.j2 +0 -0
  289. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/templates/kubernetes-ingress.yml.j2 +0 -0
  290. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/templates/kubernetes-loadbalancer.yml.j2 +0 -0
  291. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/templates/kubernetes-port-forward-proxy-command.sh +0 -0
  292. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/templates/kubernetes-ray.yml.j2 +0 -0
  293. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/templates/kubernetes-ssh-jump.yml.j2 +0 -0
  294. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/templates/lambda-ray.yml.j2 +0 -0
  295. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/templates/local-ray.yml.j2 +0 -0
  296. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/templates/oci-ray.yml.j2 +0 -0
  297. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/templates/paperspace-ray.yml.j2 +0 -0
  298. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/templates/runpod-ray.yml.j2 +0 -0
  299. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/templates/scp-ray.yml.j2 +0 -0
  300. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/templates/sky-serve-controller.yaml.j2 +0 -0
  301. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/templates/skypilot-server-kubernetes-proxy.sh +0 -0
  302. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/templates/vast-ray.yml.j2 +0 -0
  303. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/templates/vsphere-ray.yml.j2 +0 -0
  304. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/templates/websocket_proxy.py +0 -0
  305. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/usage/__init__.py +0 -0
  306. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/usage/constants.py +0 -0
  307. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/usage/usage_lib.py +0 -0
  308. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/utils/__init__.py +0 -0
  309. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/utils/accelerator_registry.py +0 -0
  310. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/utils/admin_policy_utils.py +0 -0
  311. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/utils/annotations.py +0 -0
  312. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/utils/cli_utils/__init__.py +0 -0
  313. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/utils/cli_utils/status_utils.py +0 -0
  314. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/utils/cluster_utils.py +0 -0
  315. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/utils/command_runner.py +0 -0
  316. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/utils/command_runner.pyi +0 -0
  317. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/utils/common_utils.py +0 -0
  318. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/utils/config_utils.py +0 -0
  319. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/utils/control_master_utils.py +0 -0
  320. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/utils/dag_utils.py +0 -0
  321. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/utils/db_utils.py +0 -0
  322. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/utils/env_options.py +0 -0
  323. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/utils/kubernetes/__init__.py +0 -0
  324. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/utils/kubernetes/create_cluster.sh +0 -0
  325. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/utils/kubernetes/delete_cluster.sh +0 -0
  326. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/utils/kubernetes/deploy_remote_cluster.sh +0 -0
  327. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/utils/kubernetes/exec_kubeconfig_converter.py +0 -0
  328. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/utils/kubernetes/generate_kind_config.py +0 -0
  329. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/utils/kubernetes/generate_kubeconfig.sh +0 -0
  330. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/utils/kubernetes/gpu_labeler.py +0 -0
  331. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/utils/kubernetes/k8s_gpu_labeler_job.yaml +0 -0
  332. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/utils/kubernetes/k8s_gpu_labeler_setup.yaml +0 -0
  333. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/utils/kubernetes/kubernetes_deploy_utils.py +0 -0
  334. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/utils/kubernetes/rsync_helper.sh +0 -0
  335. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/utils/kubernetes/ssh_jump_lifecycle_manager.py +0 -0
  336. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/utils/kubernetes_enums.py +0 -0
  337. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/utils/log_utils.py +0 -0
  338. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/utils/message_utils.py +0 -0
  339. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/utils/registry.py +0 -0
  340. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/utils/resources_utils.py +0 -0
  341. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/utils/rich_utils.py +0 -0
  342. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/utils/schemas.py +0 -0
  343. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/utils/status_lib.py +0 -0
  344. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/utils/subprocess_utils.py +0 -0
  345. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/utils/timeline.py +0 -0
  346. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/utils/ux_utils.py +0 -0
  347. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/sky/utils/validator.py +0 -0
  348. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/skypilot_nightly.egg-info/SOURCES.txt +0 -0
  349. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/skypilot_nightly.egg-info/dependency_links.txt +0 -0
  350. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/skypilot_nightly.egg-info/entry_points.txt +0 -0
  351. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/skypilot_nightly.egg-info/requires.txt +0 -0
  352. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/skypilot_nightly.egg-info/top_level.txt +0 -0
  353. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/tests/test_api.py +0 -0
  354. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/tests/test_cli.py +0 -0
  355. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/tests/test_config.py +0 -0
  356. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/tests/test_global_user_state.py +0 -0
  357. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/tests/test_jobs.py +0 -0
  358. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/tests/test_jobs_and_serve.py +0 -0
  359. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/tests/test_list_accelerators.py +0 -0
  360. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/tests/test_optimizer_random_dag.py +0 -0
  361. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/tests/test_serve_autoscaler.py +0 -0
  362. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/tests/test_smoke.py +0 -0
  363. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/tests/test_storage.py +0 -0
  364. {skypilot_nightly-1.0.0.dev20250217 → skypilot_nightly-1.0.0.dev20250219}/tests/test_wheels.py +0 -0
  365. {skypilot_nightly-1.0.0.dev20250217 → 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.dev20250217
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 = '7775d44c4c91d1474982fbdb3b1e03cfbbf2385e'
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.dev20250217'
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[/]'):
@@ -233,8 +233,11 @@ class DO(clouds.Cloud):
233
233
  cpus=resources.cpus,
234
234
  memory=resources.memory,
235
235
  disk_tier=resources.disk_tier)
236
- return resources_utils.FeasibleResources(
237
- _make([default_instance_type]), [], None)
236
+ if default_instance_type is None:
237
+ return resources_utils.FeasibleResources([], [], None)
238
+ else:
239
+ return resources_utils.FeasibleResources(
240
+ _make([default_instance_type]), [], None)
238
241
 
239
242
  assert len(accelerators) == 1, resources
240
243
  acc, acc_count = list(accelerators.items())[0]
@@ -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.
@@ -26,6 +26,7 @@ REGIONS = [
26
26
  'europe-south-1',
27
27
  'asia-northeast-1',
28
28
  'asia-northeast-2',
29
+ 'australia-east-1',
29
30
  'us-east-1',
30
31
  'us-east-2',
31
32
  'us-east-3',
@@ -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,
@@ -285,8 +285,6 @@ class Optimizer:
285
285
 
286
286
  # Don't print for the last node, Sink.
287
287
  do_print = node_i != len(topo_order) - 1
288
- if do_print:
289
- logger.debug('#### {} ####'.format(node))
290
288
 
291
289
  fuzzy_candidates: List[str] = []
292
290
  if node_i < len(topo_order) - 1:
@@ -297,6 +295,10 @@ class Optimizer:
297
295
  blocked_resources=blocked_resources,
298
296
  quiet=quiet))
299
297
  node_to_candidate_map[node] = cloud_candidates
298
+ # Has to call the printing after the launchable resources are
299
+ # computed, because the missing fields of the resources are
300
+ # inferred in the _fill_in_launchable_resources function.
301
+ logger.debug('#### {} ####'.format(node))
300
302
  else:
301
303
  # Dummy sink node.
302
304
  launchable_resources = {
@@ -1324,17 +1326,17 @@ def _fill_in_launchable_resources(
1324
1326
  f'{colorama.Fore.CYAN}'
1325
1327
  f'{sorted(all_fuzzy_candidates)}'
1326
1328
  f'{colorama.Style.RESET_ALL}')
1329
+ else:
1330
+ if resources.cpus is not None:
1331
+ logger.info('Try specifying a different CPU count, '
1332
+ 'or add "+" to the end of the CPU count '
1333
+ 'to allow for larger instances.')
1334
+ if resources.memory is not None:
1335
+ logger.info('Try specifying a different memory size, '
1336
+ 'or add "+" to the end of the memory size '
1337
+ 'to allow for larger instances.')
1327
1338
  for cloud, hint in hints.items():
1328
1339
  logger.info(f'{repr(cloud)}: {hint}')
1329
- else:
1330
- if resources.cpus is not None:
1331
- logger.info('Try specifying a different CPU count, '
1332
- 'or add "+" to the end of the CPU count '
1333
- 'to allow for larger instances.')
1334
- if resources.memory is not None:
1335
- logger.info('Try specifying a different memory size, '
1336
- 'or add "+" to the end of the memory size '
1337
- 'to allow for larger instances.')
1338
1340
 
1339
1341
  launchable[resources] = _filter_out_blocked_launchable_resources(
1340
1342
  launchable[resources], blocked_resources)
@@ -251,6 +251,7 @@ class Resources:
251
251
  self._set_accelerators(accelerators, accelerator_args)
252
252
 
253
253
  def validate(self):
254
+ """Validate the resources and infer the missing fields if possible."""
254
255
  self._try_canonicalize_accelerators()
255
256
  self._try_validate_and_set_region_zone()
256
257
  self._try_validate_instance_type()
@@ -1267,17 +1268,17 @@ class Resources:
1267
1268
  def is_empty(self) -> bool:
1268
1269
  """Is this Resources an empty request (all fields None)?"""
1269
1270
  return all([
1270
- self.cloud is None,
1271
+ self._cloud is None,
1271
1272
  self._instance_type is None,
1272
1273
  self._cpus is None,
1273
- self.memory is None,
1274
- self.accelerators is None,
1275
- self.accelerator_args is None,
1274
+ self._memory is None,
1275
+ self._accelerators is None,
1276
+ self._accelerator_args is None,
1276
1277
  not self._use_spot_specified,
1277
- self.disk_size == _DEFAULT_DISK_SIZE_GB,
1278
- self.disk_tier is None,
1278
+ self._disk_size == _DEFAULT_DISK_SIZE_GB,
1279
+ self._disk_tier is None,
1279
1280
  self._image_id is None,
1280
- self.ports is None,
1281
+ self._ports is None,
1281
1282
  self._docker_login_config is None,
1282
1283
  ])
1283
1284
 
@@ -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,11 +3,11 @@
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
10
9
  import subprocess
10
+ import sys
11
11
  import time
12
12
  import typing
13
13
  from typing import Any, Dict, Optional
@@ -27,14 +27,12 @@ from sky.server import constants as server_constants
27
27
  from sky.skylet import constants
28
28
  from sky.usage import usage_lib
29
29
  from sky.utils import annotations
30
- from sky.utils import common
31
30
  from sky.utils import common_utils
32
31
  from sky.utils import rich_utils
33
32
  from sky.utils import ux_utils
34
33
 
35
34
  if typing.TYPE_CHECKING:
36
35
  from sky import dag as dag_lib
37
- from sky.server.requests import payloads
38
36
 
39
37
  DEFAULT_SERVER_URL = 'http://127.0.0.1:46580'
40
38
  AVAILBLE_LOCAL_API_SERVER_HOSTS = ['0.0.0.0', 'localhost', '127.0.0.1']
@@ -42,7 +40,7 @@ AVAILABLE_LOCAL_API_SERVER_URLS = [
42
40
  f'http://{host}:46580' for host in AVAILBLE_LOCAL_API_SERVER_HOSTS
43
41
  ]
44
42
 
45
- API_SERVER_CMD = 'python -m sky.server.server'
43
+ API_SERVER_CMD = '-m sky.server.server'
46
44
  # The client dir on the API server for storing user-specific data, such as file
47
45
  # mounts, logs, etc. This dir is empheral and will be cleaned up when the API
48
46
  # server is restarted.
@@ -172,7 +170,7 @@ def start_uvicorn_in_background(deploy: bool = False, host: str = '127.0.0.1'):
172
170
  api_server_cmd += ' --deploy'
173
171
  if host is not None:
174
172
  api_server_cmd += f' --host {host}'
175
- cmd = f'{api_server_cmd} > {log_path} 2>&1'
173
+ cmd = f'{sys.executable} {api_server_cmd} > {log_path} 2>&1'
176
174
 
177
175
  # Start the uvicorn process in the background and don't wait for it.
178
176
  # If this is called from a CLI invocation, we need start_new_session=True so
@@ -406,23 +404,6 @@ def request_body_to_params(body: pydantic.BaseModel) -> Dict[str, Any]:
406
404
  def reload_for_new_request(client_entrypoint: Optional[str],
407
405
  client_command: Optional[str]):
408
406
  """Reload modules, global variables, and usage message for a new request."""
409
- # When a user request is sent to api server, it changes the user hash in the
410
- # env vars, but since controller_utils is imported before the env vars are
411
- # set, it doesn't get updated. So we need to reload it here.
412
- # pylint: disable=import-outside-toplevel
413
- from sky.utils import controller_utils
414
- common.SKY_SERVE_CONTROLLER_NAME = common.get_controller_name(
415
- common.ControllerType.SERVE)
416
- common.JOB_CONTROLLER_NAME = common.get_controller_name(
417
- common.ControllerType.JOBS)
418
- # TODO(zhwu): We should avoid reloading the controller_utils module.
419
- # Instead, we should reload required cache or global variables.
420
- # TODO(zhwu): Reloading the controller_utils module may cause the global
421
- # variables in other modules referring the `controller_utils.Controllers`
422
- # dangling, as they will be pointing to the old object. We should not use
423
- # it in global variables.
424
- importlib.reload(controller_utils)
425
-
426
407
  # Reset the client entrypoint and command for the usage message.
427
408
  common_utils.set_client_entrypoint_and_command(
428
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