skypilot-nightly 1.0.0.dev20241031__tar.gz → 1.0.0.dev20241102__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 (302) hide show
  1. {skypilot_nightly-1.0.0.dev20241031/skypilot_nightly.egg-info → skypilot_nightly-1.0.0.dev20241102}/PKG-INFO +1 -1
  2. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/__init__.py +2 -2
  3. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/backends/backend_utils.py +5 -3
  4. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/backends/cloud_vm_ray_backend.py +6 -3
  5. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/cli.py +24 -2
  6. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/clouds/kubernetes.py +2 -2
  7. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/clouds/service_catalog/kubernetes_catalog.py +13 -1
  8. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/data/storage.py +17 -2
  9. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/execution.py +35 -2
  10. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/jobs/core.py +5 -0
  11. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/skylet/constants.py +4 -6
  12. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102/skypilot_nightly.egg-info}/PKG-INFO +1 -1
  13. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/tests/test_smoke.py +86 -1
  14. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/LICENSE +0 -0
  15. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/MANIFEST.in +0 -0
  16. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/README.md +0 -0
  17. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/pyproject.toml +0 -0
  18. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/setup.cfg +0 -0
  19. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/setup.py +0 -0
  20. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/adaptors/__init__.py +0 -0
  21. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/adaptors/aws.py +0 -0
  22. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/adaptors/azure.py +0 -0
  23. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/adaptors/cloudflare.py +0 -0
  24. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/adaptors/common.py +0 -0
  25. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/adaptors/cudo.py +0 -0
  26. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/adaptors/docker.py +0 -0
  27. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/adaptors/gcp.py +0 -0
  28. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/adaptors/ibm.py +0 -0
  29. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/adaptors/kubernetes.py +0 -0
  30. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/adaptors/oci.py +0 -0
  31. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/adaptors/runpod.py +0 -0
  32. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/adaptors/vsphere.py +0 -0
  33. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/admin_policy.py +0 -0
  34. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/authentication.py +0 -0
  35. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/backends/__init__.py +0 -0
  36. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/backends/backend.py +0 -0
  37. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/backends/docker_utils.py +0 -0
  38. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/backends/local_docker_backend.py +0 -0
  39. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/backends/monkey_patches/monkey_patch_ray_up.py +0 -0
  40. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/backends/wheel_utils.py +0 -0
  41. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/benchmark/__init__.py +0 -0
  42. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/benchmark/benchmark_state.py +0 -0
  43. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/benchmark/benchmark_utils.py +0 -0
  44. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/check.py +0 -0
  45. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/cloud_stores.py +0 -0
  46. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/clouds/__init__.py +0 -0
  47. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/clouds/aws.py +0 -0
  48. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/clouds/azure.py +0 -0
  49. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/clouds/cloud.py +0 -0
  50. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/clouds/cloud_registry.py +0 -0
  51. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/clouds/cudo.py +0 -0
  52. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/clouds/fluidstack.py +0 -0
  53. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/clouds/gcp.py +0 -0
  54. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/clouds/ibm.py +0 -0
  55. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/clouds/lambda_cloud.py +0 -0
  56. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/clouds/oci.py +0 -0
  57. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/clouds/paperspace.py +0 -0
  58. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/clouds/runpod.py +0 -0
  59. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/clouds/scp.py +0 -0
  60. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/clouds/service_catalog/__init__.py +0 -0
  61. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/clouds/service_catalog/aws_catalog.py +0 -0
  62. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/clouds/service_catalog/azure_catalog.py +0 -0
  63. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/clouds/service_catalog/common.py +0 -0
  64. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/clouds/service_catalog/config.py +0 -0
  65. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/clouds/service_catalog/constants.py +0 -0
  66. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/clouds/service_catalog/cudo_catalog.py +0 -0
  67. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/clouds/service_catalog/data_fetchers/__init__.py +0 -0
  68. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/clouds/service_catalog/data_fetchers/fetch_aws.py +0 -0
  69. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/clouds/service_catalog/data_fetchers/fetch_azure.py +0 -0
  70. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/clouds/service_catalog/data_fetchers/fetch_cudo.py +0 -0
  71. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/clouds/service_catalog/data_fetchers/fetch_fluidstack.py +0 -0
  72. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/clouds/service_catalog/data_fetchers/fetch_gcp.py +0 -0
  73. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/clouds/service_catalog/data_fetchers/fetch_lambda_cloud.py +0 -0
  74. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/clouds/service_catalog/data_fetchers/fetch_vsphere.py +0 -0
  75. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/clouds/service_catalog/fluidstack_catalog.py +0 -0
  76. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/clouds/service_catalog/gcp_catalog.py +0 -0
  77. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/clouds/service_catalog/ibm_catalog.py +0 -0
  78. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/clouds/service_catalog/lambda_catalog.py +0 -0
  79. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/clouds/service_catalog/oci_catalog.py +0 -0
  80. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/clouds/service_catalog/paperspace_catalog.py +0 -0
  81. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/clouds/service_catalog/runpod_catalog.py +0 -0
  82. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/clouds/service_catalog/scp_catalog.py +0 -0
  83. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/clouds/service_catalog/vsphere_catalog.py +0 -0
  84. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/clouds/utils/__init__.py +0 -0
  85. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/clouds/utils/aws_utils.py +0 -0
  86. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/clouds/utils/azure_utils.py +0 -0
  87. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/clouds/utils/gcp_utils.py +0 -0
  88. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/clouds/utils/oci_utils.py +0 -0
  89. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/clouds/utils/scp_utils.py +0 -0
  90. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/clouds/vsphere.py +0 -0
  91. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/core.py +0 -0
  92. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/dag.py +0 -0
  93. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/data/__init__.py +0 -0
  94. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/data/data_transfer.py +0 -0
  95. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/data/data_utils.py +0 -0
  96. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/data/mounting_utils.py +0 -0
  97. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/data/storage_utils.py +0 -0
  98. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/exceptions.py +0 -0
  99. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/global_user_state.py +0 -0
  100. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/jobs/__init__.py +0 -0
  101. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/jobs/constants.py +0 -0
  102. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/jobs/controller.py +0 -0
  103. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/jobs/dashboard/dashboard.py +0 -0
  104. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/jobs/dashboard/static/favicon.ico +0 -0
  105. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/jobs/dashboard/templates/index.html +0 -0
  106. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/jobs/recovery_strategy.py +0 -0
  107. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/jobs/state.py +0 -0
  108. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/jobs/utils.py +0 -0
  109. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/optimizer.py +0 -0
  110. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/provision/__init__.py +0 -0
  111. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/provision/aws/__init__.py +0 -0
  112. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/provision/aws/config.py +0 -0
  113. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/provision/aws/instance.py +0 -0
  114. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/provision/aws/utils.py +0 -0
  115. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/provision/azure/__init__.py +0 -0
  116. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/provision/azure/azure-config-template.json +0 -0
  117. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/provision/azure/config.py +0 -0
  118. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/provision/azure/instance.py +0 -0
  119. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/provision/common.py +0 -0
  120. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/provision/constants.py +0 -0
  121. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/provision/cudo/__init__.py +0 -0
  122. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/provision/cudo/config.py +0 -0
  123. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/provision/cudo/cudo_machine_type.py +0 -0
  124. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/provision/cudo/cudo_utils.py +0 -0
  125. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/provision/cudo/cudo_wrapper.py +0 -0
  126. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/provision/cudo/instance.py +0 -0
  127. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/provision/docker_utils.py +0 -0
  128. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/provision/fluidstack/__init__.py +0 -0
  129. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/provision/fluidstack/config.py +0 -0
  130. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/provision/fluidstack/fluidstack_utils.py +0 -0
  131. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/provision/fluidstack/instance.py +0 -0
  132. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/provision/gcp/__init__.py +0 -0
  133. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/provision/gcp/config.py +0 -0
  134. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/provision/gcp/constants.py +0 -0
  135. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/provision/gcp/instance.py +0 -0
  136. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/provision/gcp/instance_utils.py +0 -0
  137. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/provision/gcp/mig_utils.py +0 -0
  138. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/provision/instance_setup.py +0 -0
  139. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/provision/kubernetes/__init__.py +0 -0
  140. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/provision/kubernetes/config.py +0 -0
  141. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/provision/kubernetes/instance.py +0 -0
  142. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/provision/kubernetes/manifests/smarter-device-manager-configmap.yaml +0 -0
  143. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/provision/kubernetes/manifests/smarter-device-manager-daemonset.yaml +0 -0
  144. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/provision/kubernetes/network.py +0 -0
  145. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/provision/kubernetes/network_utils.py +0 -0
  146. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/provision/kubernetes/utils.py +0 -0
  147. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/provision/lambda_cloud/__init__.py +0 -0
  148. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/provision/lambda_cloud/config.py +0 -0
  149. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/provision/lambda_cloud/instance.py +0 -0
  150. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/provision/lambda_cloud/lambda_utils.py +0 -0
  151. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/provision/logging.py +0 -0
  152. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/provision/metadata_utils.py +0 -0
  153. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/provision/paperspace/__init__.py +0 -0
  154. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/provision/paperspace/config.py +0 -0
  155. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/provision/paperspace/constants.py +0 -0
  156. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/provision/paperspace/instance.py +0 -0
  157. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/provision/paperspace/utils.py +0 -0
  158. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/provision/provisioner.py +0 -0
  159. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/provision/runpod/__init__.py +0 -0
  160. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/provision/runpod/config.py +0 -0
  161. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/provision/runpod/instance.py +0 -0
  162. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/provision/runpod/utils.py +0 -0
  163. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/provision/vsphere/__init__.py +0 -0
  164. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/provision/vsphere/common/__init__.py +0 -0
  165. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/provision/vsphere/common/cls_api_client.py +0 -0
  166. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/provision/vsphere/common/cls_api_helper.py +0 -0
  167. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/provision/vsphere/common/custom_script.py +0 -0
  168. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/provision/vsphere/common/id_generator.py +0 -0
  169. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/provision/vsphere/common/metadata_utils.py +0 -0
  170. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/provision/vsphere/common/service_manager.py +0 -0
  171. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/provision/vsphere/common/service_manager_factory.py +0 -0
  172. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/provision/vsphere/common/ssl_helper.py +0 -0
  173. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/provision/vsphere/common/vapiconnect.py +0 -0
  174. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/provision/vsphere/common/vim_utils.py +0 -0
  175. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/provision/vsphere/config.py +0 -0
  176. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/provision/vsphere/instance.py +0 -0
  177. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/provision/vsphere/vsphere_utils.py +0 -0
  178. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/resources.py +0 -0
  179. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/serve/__init__.py +0 -0
  180. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/serve/autoscalers.py +0 -0
  181. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/serve/constants.py +0 -0
  182. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/serve/controller.py +0 -0
  183. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/serve/core.py +0 -0
  184. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/serve/load_balancer.py +0 -0
  185. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/serve/load_balancing_policies.py +0 -0
  186. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/serve/replica_managers.py +0 -0
  187. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/serve/serve_state.py +0 -0
  188. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/serve/serve_utils.py +0 -0
  189. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/serve/service.py +0 -0
  190. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/serve/service_spec.py +0 -0
  191. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/setup_files/MANIFEST.in +0 -0
  192. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/setup_files/setup.py +0 -0
  193. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/sky_logging.py +0 -0
  194. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/skylet/LICENSE +0 -0
  195. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/skylet/__init__.py +0 -0
  196. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/skylet/attempt_skylet.py +0 -0
  197. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/skylet/autostop_lib.py +0 -0
  198. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/skylet/configs.py +0 -0
  199. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/skylet/events.py +0 -0
  200. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/skylet/job_lib.py +0 -0
  201. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/skylet/log_lib.py +0 -0
  202. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/skylet/log_lib.pyi +0 -0
  203. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/skylet/providers/__init__.py +0 -0
  204. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/skylet/providers/command_runner.py +0 -0
  205. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/skylet/providers/ibm/__init__.py +0 -0
  206. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/skylet/providers/ibm/node_provider.py +0 -0
  207. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/skylet/providers/ibm/utils.py +0 -0
  208. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/skylet/providers/ibm/vpc_provider.py +0 -0
  209. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/skylet/providers/oci/__init__.py +0 -0
  210. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/skylet/providers/oci/node_provider.py +0 -0
  211. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/skylet/providers/oci/query_helper.py +0 -0
  212. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/skylet/providers/oci/utils.py +0 -0
  213. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/skylet/providers/scp/__init__.py +0 -0
  214. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/skylet/providers/scp/config.py +0 -0
  215. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/skylet/providers/scp/node_provider.py +0 -0
  216. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/skylet/ray_patches/__init__.py +0 -0
  217. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/skylet/ray_patches/autoscaler.py.patch +0 -0
  218. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/skylet/ray_patches/cli.py.patch +0 -0
  219. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/skylet/ray_patches/command_runner.py.patch +0 -0
  220. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/skylet/ray_patches/log_monitor.py.patch +0 -0
  221. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/skylet/ray_patches/resource_demand_scheduler.py.patch +0 -0
  222. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/skylet/ray_patches/updater.py.patch +0 -0
  223. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/skylet/ray_patches/worker.py.patch +0 -0
  224. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/skylet/skylet.py +0 -0
  225. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/skylet/subprocess_daemon.py +0 -0
  226. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/skypilot_config.py +0 -0
  227. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/status_lib.py +0 -0
  228. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/task.py +0 -0
  229. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/templates/aws-ray.yml.j2 +0 -0
  230. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/templates/azure-ray.yml.j2 +0 -0
  231. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/templates/cudo-ray.yml.j2 +0 -0
  232. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/templates/fluidstack-ray.yml.j2 +0 -0
  233. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/templates/gcp-ray.yml.j2 +0 -0
  234. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/templates/ibm-ray.yml.j2 +0 -0
  235. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/templates/jobs-controller.yaml.j2 +0 -0
  236. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/templates/kubernetes-ingress.yml.j2 +0 -0
  237. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/templates/kubernetes-loadbalancer.yml.j2 +0 -0
  238. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/templates/kubernetes-port-forward-proxy-command.sh +0 -0
  239. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/templates/kubernetes-ray.yml.j2 +0 -0
  240. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/templates/kubernetes-ssh-jump.yml.j2 +0 -0
  241. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/templates/lambda-ray.yml.j2 +0 -0
  242. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/templates/local-ray.yml.j2 +0 -0
  243. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/templates/oci-ray.yml.j2 +0 -0
  244. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/templates/paperspace-ray.yml.j2 +0 -0
  245. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/templates/runpod-ray.yml.j2 +0 -0
  246. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/templates/scp-ray.yml.j2 +0 -0
  247. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/templates/sky-serve-controller.yaml.j2 +0 -0
  248. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/templates/vsphere-ray.yml.j2 +0 -0
  249. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/usage/__init__.py +0 -0
  250. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/usage/constants.py +0 -0
  251. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/usage/usage_lib.py +0 -0
  252. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/utils/__init__.py +0 -0
  253. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/utils/accelerator_registry.py +0 -0
  254. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/utils/admin_policy_utils.py +0 -0
  255. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/utils/cli_utils/__init__.py +0 -0
  256. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/utils/cli_utils/status_utils.py +0 -0
  257. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/utils/cluster_yaml_utils.py +0 -0
  258. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/utils/command_runner.py +0 -0
  259. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/utils/command_runner.pyi +0 -0
  260. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/utils/common_utils.py +0 -0
  261. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/utils/controller_utils.py +0 -0
  262. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/utils/dag_utils.py +0 -0
  263. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/utils/db_utils.py +0 -0
  264. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/utils/env_options.py +0 -0
  265. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/utils/kubernetes/__init__.py +0 -0
  266. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/utils/kubernetes/create_cluster.sh +0 -0
  267. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/utils/kubernetes/delete_cluster.sh +0 -0
  268. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/utils/kubernetes/deploy_remote_cluster.sh +0 -0
  269. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/utils/kubernetes/generate_kind_config.py +0 -0
  270. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/utils/kubernetes/generate_kubeconfig.sh +0 -0
  271. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/utils/kubernetes/gpu_labeler.py +0 -0
  272. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/utils/kubernetes/k8s_gpu_labeler_job.yaml +0 -0
  273. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/utils/kubernetes/k8s_gpu_labeler_setup.yaml +0 -0
  274. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/utils/kubernetes/rsync_helper.sh +0 -0
  275. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/utils/kubernetes/ssh_jump_lifecycle_manager.py +0 -0
  276. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/utils/kubernetes_enums.py +0 -0
  277. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/utils/log_utils.py +0 -0
  278. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/utils/resources_utils.py +0 -0
  279. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/utils/rich_utils.py +0 -0
  280. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/utils/schemas.py +0 -0
  281. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/utils/subprocess_utils.py +0 -0
  282. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/utils/timeline.py +0 -0
  283. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/utils/ux_utils.py +0 -0
  284. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/sky/utils/validator.py +0 -0
  285. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/skypilot_nightly.egg-info/SOURCES.txt +0 -0
  286. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/skypilot_nightly.egg-info/dependency_links.txt +0 -0
  287. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/skypilot_nightly.egg-info/entry_points.txt +0 -0
  288. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/skypilot_nightly.egg-info/requires.txt +0 -0
  289. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/skypilot_nightly.egg-info/top_level.txt +0 -0
  290. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/tests/test_api.py +0 -0
  291. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/tests/test_cli.py +0 -0
  292. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/tests/test_config.py +0 -0
  293. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/tests/test_global_user_state.py +0 -0
  294. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/tests/test_jobs.py +0 -0
  295. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/tests/test_jobs_and_serve.py +0 -0
  296. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/tests/test_list_accelerators.py +0 -0
  297. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/tests/test_optimizer_dryruns.py +0 -0
  298. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/tests/test_optimizer_random_dag.py +0 -0
  299. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/tests/test_serve_autoscaler.py +0 -0
  300. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/tests/test_storage.py +0 -0
  301. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/tests/test_wheels.py +0 -0
  302. {skypilot_nightly-1.0.0.dev20241031 → skypilot_nightly-1.0.0.dev20241102}/tests/test_yaml_parser.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: skypilot-nightly
3
- Version: 1.0.0.dev20241031
3
+ Version: 1.0.0.dev20241102
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 = 'c4eeeb5fb3ef64be0f05a727e119ac9266f8940f'
8
+ _SKYPILOT_COMMIT_SHA = '0f0008d41ecf4919b169541fb86a4ec60d1485ab'
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.dev20241031'
38
+ __version__ = '1.0.0.dev20241102'
39
39
  __root_dir__ = os.path.dirname(os.path.abspath(__file__))
40
40
 
41
41
 
@@ -2498,10 +2498,12 @@ def get_task_resources_str(task: 'task_lib.Task',
2498
2498
  the accelerator demands (if any). Otherwise, the CPU demand is shown.
2499
2499
  """
2500
2500
  spot_str = ''
2501
+ is_controller_task = task.is_controller_task()
2501
2502
  task_cpu_demand = (str(constants.CONTROLLER_PROCESS_CPU_DEMAND)
2502
- if task.is_controller_task() else
2503
- str(DEFAULT_TASK_CPU_DEMAND))
2504
- if task.best_resources is not None:
2503
+ if is_controller_task else str(DEFAULT_TASK_CPU_DEMAND))
2504
+ if is_controller_task:
2505
+ resources_str = f'CPU:{task_cpu_demand}'
2506
+ elif task.best_resources is not None:
2505
2507
  accelerator_dict = task.best_resources.accelerators
2506
2508
  if is_managed_job:
2507
2509
  if task.best_resources.use_spot:
@@ -2114,8 +2114,11 @@ class CloudVmRayResourceHandle(backends.backend.ResourceHandle):
2114
2114
  self._version = self._VERSION
2115
2115
  self.cluster_name = cluster_name
2116
2116
  self.cluster_name_on_cloud = cluster_name_on_cloud
2117
- self._cluster_yaml = cluster_yaml.replace(os.path.expanduser('~'), '~',
2118
- 1)
2117
+ # Replace the home directory with ~ for better robustness across systems
2118
+ # with different home directories.
2119
+ if cluster_yaml.startswith(os.path.expanduser('~')):
2120
+ cluster_yaml = cluster_yaml.replace(os.path.expanduser('~'), '~', 1)
2121
+ self._cluster_yaml = cluster_yaml
2119
2122
  # List of (internal_ip, feasible_ip) tuples for all the nodes in the
2120
2123
  # cluster, sorted by the feasible ips. The feasible ips can be either
2121
2124
  # internal or external ips, depending on the use_internal_ips flag.
@@ -2705,7 +2708,7 @@ class CloudVmRayBackend(backends.Backend['CloudVmRayResourceHandle']):
2705
2708
  (e.g., cluster name invalid) or a region/zone throwing
2706
2709
  resource unavailability.
2707
2710
  exceptions.CommandError: any ssh command error.
2708
- RuntimeErorr: raised when 'rsync' is not installed.
2711
+ RuntimeError: raised when 'rsync' is not installed.
2709
2712
  # TODO(zhwu): complete the list of exceptions.
2710
2713
  """
2711
2714
  # FIXME: ray up for Azure with different cluster_names will overwrite
@@ -555,6 +555,7 @@ def _launch_with_confirm(
555
555
  retry_until_up: bool = False,
556
556
  no_setup: bool = False,
557
557
  clone_disk_from: Optional[str] = None,
558
+ fast: bool = False,
558
559
  ):
559
560
  """Launch a cluster with a Task."""
560
561
  if cluster is None:
@@ -619,6 +620,7 @@ def _launch_with_confirm(
619
620
  retry_until_up=retry_until_up,
620
621
  no_setup=no_setup,
621
622
  clone_disk_from=clone_disk_from,
623
+ fast=fast,
622
624
  )
623
625
 
624
626
 
@@ -1040,6 +1042,13 @@ def cli():
1040
1042
  help=('[Experimental] Clone disk from an existing cluster to launch '
1041
1043
  'a new one. This is useful when the new cluster needs to have '
1042
1044
  'the same data on the boot disk as an existing cluster.'))
1045
+ @click.option(
1046
+ '--fast',
1047
+ is_flag=True,
1048
+ default=False,
1049
+ required=False,
1050
+ help=('[Experimental] If the cluster is already up and available, skip '
1051
+ 'provisioning and setup steps.'))
1043
1052
  @usage_lib.entrypoint
1044
1053
  def launch(
1045
1054
  entrypoint: Tuple[str, ...],
@@ -1071,6 +1080,7 @@ def launch(
1071
1080
  yes: bool,
1072
1081
  no_setup: bool,
1073
1082
  clone_disk_from: Optional[str],
1083
+ fast: bool,
1074
1084
  ):
1075
1085
  """Launch a cluster or task.
1076
1086
 
@@ -1139,7 +1149,8 @@ def launch(
1139
1149
  down=down,
1140
1150
  retry_until_up=retry_until_up,
1141
1151
  no_setup=no_setup,
1142
- clone_disk_from=clone_disk_from)
1152
+ clone_disk_from=clone_disk_from,
1153
+ fast=fast)
1143
1154
 
1144
1155
 
1145
1156
  @cli.command(cls=_DocumentedCodeCommand)
@@ -3549,6 +3560,15 @@ def jobs():
3549
3560
  default=False,
3550
3561
  required=False,
3551
3562
  help='Skip confirmation prompt.')
3563
+ # TODO(cooperc): remove this flag once --fast can robustly detect cluster
3564
+ # yaml config changes
3565
+ @click.option('--fast',
3566
+ default=False,
3567
+ is_flag=True,
3568
+ help='[Experimental] Launch the job faster by skipping '
3569
+ 'controller initialization steps. If you update SkyPilot or '
3570
+ 'your local cloud credentials, they will not be reflected until '
3571
+ 'you run `sky jobs launch` at least once without this flag.')
3552
3572
  @timeline.event
3553
3573
  @usage_lib.entrypoint
3554
3574
  def jobs_launch(
@@ -3575,6 +3595,7 @@ def jobs_launch(
3575
3595
  detach_run: bool,
3576
3596
  retry_until_up: bool,
3577
3597
  yes: bool,
3598
+ fast: bool,
3578
3599
  ):
3579
3600
  """Launch a managed job from a YAML or a command.
3580
3601
 
@@ -3658,7 +3679,8 @@ def jobs_launch(
3658
3679
  managed_jobs.launch(dag,
3659
3680
  name,
3660
3681
  detach_run=detach_run,
3661
- retry_until_up=retry_until_up)
3682
+ retry_until_up=retry_until_up,
3683
+ fast=fast)
3662
3684
 
3663
3685
 
3664
3686
  @jobs.command('queue', cls=_DocumentedCodeCommand)
@@ -68,8 +68,8 @@ class Kubernetes(clouds.Cloud):
68
68
  'Kubernetes.',
69
69
  }
70
70
 
71
- IMAGE_CPU = 'skypilot:cpu-ubuntu-2004'
72
- IMAGE_GPU = 'skypilot:gpu-ubuntu-2004'
71
+ IMAGE_CPU = 'skypilot:custom-cpu-ubuntu-2004'
72
+ IMAGE_GPU = 'skypilot:custom-gpu-ubuntu-2004'
73
73
 
74
74
  PROVISIONER_VERSION = clouds.ProvisionerVersion.SKYPILOT
75
75
  STATUS_VERSION = clouds.StatusVersion.SKYPILOT
@@ -8,12 +8,15 @@ import typing
8
8
  from typing import Dict, List, Optional, Set, Tuple
9
9
 
10
10
  from sky import check as sky_check
11
+ from sky import sky_logging
11
12
  from sky.adaptors import common as adaptors_common
12
13
  from sky.clouds import Kubernetes
13
14
  from sky.clouds.service_catalog import CloudFilter
14
15
  from sky.clouds.service_catalog import common
15
16
  from sky.provision.kubernetes import utils as kubernetes_utils
16
17
 
18
+ logger = sky_logging.init_logger(__name__)
19
+
17
20
  if typing.TYPE_CHECKING:
18
21
  import pandas as pd
19
22
  else:
@@ -31,7 +34,16 @@ _image_df = common.read_catalog('kubernetes/images.csv',
31
34
 
32
35
  def get_image_id_from_tag(tag: str, region: Optional[str]) -> Optional[str]:
33
36
  """Returns the image id from the tag."""
34
- return common.get_image_id_from_tag_impl(_image_df, tag, region)
37
+ global _image_df
38
+ image_id = common.get_image_id_from_tag_impl(_image_df, tag, region)
39
+ if image_id is None:
40
+ # Refresh the image catalog and try again, if the image tag is not
41
+ # found.
42
+ logger.debug('Refreshing the image catalog and trying again.')
43
+ _image_df = common.read_catalog('kubernetes/images.csv',
44
+ pull_frequency_hours=0)
45
+ image_id = common.get_image_id_from_tag_impl(_image_df, tag, region)
46
+ return image_id
35
47
 
36
48
 
37
49
  def is_image_tag_valid(tag: str, region: Optional[str]) -> bool:
@@ -1082,16 +1082,31 @@ class S3Store(AbstractStore):
1082
1082
  for S3 buckets.
1083
1083
  """
1084
1084
 
1085
+ _DEFAULT_REGION = 'us-east-1'
1085
1086
  _ACCESS_DENIED_MESSAGE = 'Access Denied'
1087
+ _CUSTOM_ENDPOINT_REGIONS = [
1088
+ 'ap-east-1', 'me-south-1', 'af-south-1', 'eu-south-1', 'eu-south-2',
1089
+ 'ap-south-2', 'ap-southeast-3', 'ap-southeast-4', 'me-central-1',
1090
+ 'il-central-1'
1091
+ ]
1086
1092
 
1087
1093
  def __init__(self,
1088
1094
  name: str,
1089
1095
  source: str,
1090
- region: Optional[str] = 'us-east-2',
1096
+ region: Optional[str] = _DEFAULT_REGION,
1091
1097
  is_sky_managed: Optional[bool] = None,
1092
1098
  sync_on_reconstruction: bool = True):
1093
1099
  self.client: 'boto3.client.Client'
1094
1100
  self.bucket: 'StorageHandle'
1101
+ # TODO(romilb): This is purely a stopgap fix for
1102
+ # https://github.com/skypilot-org/skypilot/issues/3405
1103
+ # We should eventually make all opt-in regions also work for S3 by
1104
+ # passing the right endpoint flags.
1105
+ if region in self._CUSTOM_ENDPOINT_REGIONS:
1106
+ logger.warning('AWS opt-in regions are not supported for S3. '
1107
+ f'Falling back to default region '
1108
+ f'{self._DEFAULT_REGION} for bucket {name!r}.')
1109
+ region = self._DEFAULT_REGION
1095
1110
  super().__init__(name, source, region, is_sky_managed,
1096
1111
  sync_on_reconstruction)
1097
1112
 
@@ -1424,7 +1439,7 @@ class S3Store(AbstractStore):
1424
1439
 
1425
1440
  def _create_s3_bucket(self,
1426
1441
  bucket_name: str,
1427
- region='us-east-2') -> StorageHandle:
1442
+ region=_DEFAULT_REGION) -> StorageHandle:
1428
1443
  """Creates S3 bucket with specific name in specific region
1429
1444
 
1430
1445
  Args:
@@ -11,6 +11,7 @@ import sky
11
11
  from sky import admin_policy
12
12
  from sky import backends
13
13
  from sky import clouds
14
+ from sky import exceptions
14
15
  from sky import global_user_state
15
16
  from sky import optimizer
16
17
  from sky import sky_logging
@@ -216,7 +217,8 @@ def _execute(
216
217
  '(after all jobs finish).'
217
218
  f'{colorama.Style.RESET_ALL}')
218
219
  idle_minutes_to_autostop = 1
219
- stages.remove(Stage.DOWN)
220
+ if Stage.DOWN in stages:
221
+ stages.remove(Stage.DOWN)
220
222
  if idle_minutes_to_autostop >= 0:
221
223
  requested_features.add(
222
224
  clouds.CloudImplementationFeatures.AUTO_TERMINATE)
@@ -355,6 +357,7 @@ def launch(
355
357
  detach_run: bool = False,
356
358
  no_setup: bool = False,
357
359
  clone_disk_from: Optional[str] = None,
360
+ fast: bool = False,
358
361
  # Internal only:
359
362
  # pylint: disable=invalid-name
360
363
  _is_launched_by_jobs_controller: bool = False,
@@ -409,6 +412,8 @@ def launch(
409
412
  clone_disk_from: [Experimental] if set, clone the disk from the
410
413
  specified cluster. This is useful to migrate the cluster to a
411
414
  different availability zone or region.
415
+ fast: [Experimental] If the cluster is already up and available,
416
+ skip provisioning and setup steps.
412
417
 
413
418
  Example:
414
419
  .. code-block:: python
@@ -452,15 +457,43 @@ def launch(
452
457
  controller_utils.check_cluster_name_not_controller(
453
458
  cluster_name, operation_str='sky.launch')
454
459
 
460
+ handle = None
461
+ stages = None
462
+ # Check if cluster exists and we are doing fast provisioning
463
+ if fast and cluster_name is not None:
464
+ maybe_handle = global_user_state.get_handle_from_cluster_name(
465
+ cluster_name)
466
+ if maybe_handle is not None:
467
+ try:
468
+ # This will throw if the cluster is not available
469
+ backend_utils.check_cluster_available(
470
+ cluster_name,
471
+ operation='executing tasks',
472
+ check_cloud_vm_ray_backend=False,
473
+ dryrun=dryrun)
474
+ handle = maybe_handle
475
+ # Get all stages
476
+ stages = [
477
+ Stage.SYNC_WORKDIR,
478
+ Stage.SYNC_FILE_MOUNTS,
479
+ Stage.PRE_EXEC,
480
+ Stage.EXEC,
481
+ Stage.DOWN,
482
+ ]
483
+ except exceptions.ClusterNotUpError:
484
+ # Proceed with normal provisioning
485
+ pass
486
+
455
487
  return _execute(
456
488
  entrypoint=entrypoint,
457
489
  dryrun=dryrun,
458
490
  down=down,
459
491
  stream_logs=stream_logs,
460
- handle=None,
492
+ handle=handle,
461
493
  backend=backend,
462
494
  retry_until_up=retry_until_up,
463
495
  optimize_target=optimize_target,
496
+ stages=stages,
464
497
  cluster_name=cluster_name,
465
498
  detach_setup=detach_setup,
466
499
  detach_run=detach_run,
@@ -36,6 +36,7 @@ def launch(
36
36
  stream_logs: bool = True,
37
37
  detach_run: bool = False,
38
38
  retry_until_up: bool = False,
39
+ fast: bool = False,
39
40
  ) -> None:
40
41
  # NOTE(dev): Keep the docstring consistent between the Python API and CLI.
41
42
  """Launch a managed job.
@@ -47,6 +48,9 @@ def launch(
47
48
  managed job.
48
49
  name: Name of the managed job.
49
50
  detach_run: Whether to detach the run.
51
+ fast: Whether to use sky.launch(fast=True) for the jobs controller. If
52
+ True, the SkyPilot wheel and the cloud credentials may not be updated
53
+ on the jobs controller.
50
54
 
51
55
  Raises:
52
56
  ValueError: cluster does not exist. Or, the entrypoint is not a valid
@@ -138,6 +142,7 @@ def launch(
138
142
  idle_minutes_to_autostop=skylet_constants.
139
143
  CONTROLLER_IDLE_MINUTES_TO_AUTOSTOP,
140
144
  retry_until_up=True,
145
+ fast=fast,
141
146
  _disable_controller_check=True)
142
147
 
143
148
 
@@ -44,9 +44,6 @@ SKY_PIP_CMD = f'{SKY_PYTHON_CMD} -m pip'
44
44
  # We need to add SKY_PYTHON_CMD before ray executable because:
45
45
  # The ray executable is a python script with a header like:
46
46
  # #!/opt/conda/bin/python3
47
- # When we create the skypilot-runtime venv, the previously installed ray
48
- # executable will be reused (due to --system-site-packages), and that will cause
49
- # running ray CLI commands to use the wrong python executable.
50
47
  SKY_RAY_CMD = (f'{SKY_PYTHON_CMD} $([ -s {SKY_RAY_PATH_FILE} ] && '
51
48
  f'cat {SKY_RAY_PATH_FILE} 2> /dev/null || which ray)')
52
49
  # Separate env for SkyPilot runtime dependencies.
@@ -152,10 +149,11 @@ CONDA_INSTALLATION_COMMANDS = (
152
149
  f'conda create -y -n {SKY_REMOTE_PYTHON_ENV_NAME} python=3.10 && '
153
150
  f'conda activate {SKY_REMOTE_PYTHON_ENV_NAME};'
154
151
  # Create a separate conda environment for SkyPilot dependencies.
155
- # We use --system-site-packages to reuse the system site packages to avoid
156
- # the overhead of installing the same packages in the new environment.
157
152
  f'[ -d {SKY_REMOTE_PYTHON_ENV} ] || '
158
- f'{SKY_PYTHON_CMD} -m venv {SKY_REMOTE_PYTHON_ENV} --system-site-packages;'
153
+ # Do NOT use --system-site-packages here, because if users upgrade any
154
+ # packages in the base env, they interfere with skypilot dependencies.
155
+ # Reference: https://github.com/skypilot-org/skypilot/issues/4097
156
+ f'{SKY_PYTHON_CMD} -m venv {SKY_REMOTE_PYTHON_ENV};'
159
157
  f'echo "$(echo {SKY_REMOTE_PYTHON_ENV})/bin/python" > {SKY_PYTHON_PATH_FILE};'
160
158
  )
161
159
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: skypilot-nightly
3
- Version: 1.0.0.dev20241031
3
+ Version: 1.0.0.dev20241102
4
4
  Summary: SkyPilot: An intercloud broker for the clouds
5
5
  Author: SkyPilot Team
6
6
  License: Apache 2.0
@@ -360,6 +360,69 @@ def test_minimal(generic_cloud: str):
360
360
  run_one_test(test)
361
361
 
362
362
 
363
+ # ---------- Test fast launch ----------
364
+ def test_launch_fast(generic_cloud: str):
365
+ name = _get_cluster_name()
366
+
367
+ test = Test(
368
+ 'test_launch_fast',
369
+ [
370
+ # First launch to create the cluster
371
+ f'unset SKYPILOT_DEBUG; s=$(sky launch -y -c {name} --cloud {generic_cloud} --fast tests/test_yamls/minimal.yaml) && {_VALIDATE_LAUNCH_OUTPUT}',
372
+ f'sky logs {name} 1 --status',
373
+
374
+ # Second launch to test fast launch - should not reprovision
375
+ f'unset SKYPILOT_DEBUG; s=$(sky launch -y -c {name} --fast tests/test_yamls/minimal.yaml) && '
376
+ ' echo "$s" && '
377
+ # Validate that cluster was not re-launched.
378
+ '! echo "$s" | grep -A 1 "Launching on" | grep "is up." && '
379
+ # Validate that setup was not re-run.
380
+ '! echo "$s" | grep -A 1 "Running setup on" | grep "running setup" && '
381
+ # Validate that the task ran and finished.
382
+ 'echo "$s" | grep -A 1 "task run finish" | grep "Job finished (status: SUCCEEDED)"',
383
+ f'sky logs {name} 2 --status',
384
+ f'sky status -r {name} | grep UP',
385
+ ],
386
+ f'sky down -y {name}',
387
+ timeout=_get_timeout(generic_cloud),
388
+ )
389
+ run_one_test(test)
390
+
391
+
392
+ # See cloud exclusion explanations in test_autostop
393
+ @pytest.mark.no_fluidstack
394
+ @pytest.mark.no_lambda_cloud
395
+ @pytest.mark.no_ibm
396
+ @pytest.mark.no_kubernetes
397
+ def test_launch_fast_with_autostop(generic_cloud: str):
398
+ name = _get_cluster_name()
399
+ # Azure takes ~ 7m15s (435s) to autostop a VM, so here we use 600 to ensure
400
+ # the VM is stopped.
401
+ autostop_timeout = 600 if generic_cloud == 'azure' else 250
402
+
403
+ test = Test(
404
+ 'test_launch_fast_with_autostop',
405
+ [
406
+ # First launch to create the cluster with a short autostop
407
+ f'unset SKYPILOT_DEBUG; s=$(sky launch -y -c {name} --cloud {generic_cloud} --fast -i 1 tests/test_yamls/minimal.yaml) && {_VALIDATE_LAUNCH_OUTPUT}',
408
+ f'sky logs {name} 1 --status',
409
+ f'sky status -r {name} | grep UP',
410
+ f'sleep {autostop_timeout}',
411
+
412
+ # Ensure cluster is stopped
413
+ f's=$(sky status {name} --refresh); echo "$s"; echo; echo; echo "$s" | grep {name} | grep STOPPED',
414
+
415
+ # Launch again. Do full output validation - we expect the cluster to re-launch
416
+ f'unset SKYPILOT_DEBUG; s=$(sky launch -y -c {name} --fast -i 1 tests/test_yamls/minimal.yaml) && {_VALIDATE_LAUNCH_OUTPUT}',
417
+ f'sky logs {name} 2 --status',
418
+ f'sky status -r {name} | grep UP',
419
+ ],
420
+ f'sky down -y {name}',
421
+ timeout=_get_timeout(generic_cloud) + autostop_timeout,
422
+ )
423
+ run_one_test(test)
424
+
425
+
363
426
  # ---------- Test region ----------
364
427
  @pytest.mark.aws
365
428
  def test_aws_region():
@@ -3039,7 +3102,7 @@ def test_managed_jobs_cancellation_aws(aws_config_region):
3039
3102
  # Test cancellation during spot cluster being launched.
3040
3103
  f'sky jobs launch --cloud aws --region {region} -n {name} --use-spot "sleep 1000" -y -d',
3041
3104
  'sleep 60',
3042
- f'{_GET_JOB_QUEUE} | grep {name} | head -n1 | grep "STARTING"',
3105
+ f'{_GET_JOB_QUEUE} | grep {name} | head -n1 | grep "STARTING\|RUNNING"',
3043
3106
  f'sky jobs cancel -y -n {name}',
3044
3107
  'sleep 5',
3045
3108
  f'{_GET_JOB_QUEUE} | grep {name} | head -n1 | grep "CANCELLING\|CANCELLED"',
@@ -4376,6 +4439,28 @@ def test_core_api_sky_launch_exec():
4376
4439
  sky.down(name)
4377
4440
 
4378
4441
 
4442
+ # The sky launch CLI has some additional checks to make sure the cluster is up/
4443
+ # restarted. However, the core API doesn't have these; make sure it still works
4444
+ def test_core_api_sky_launch_fast(generic_cloud: str):
4445
+ name = _get_cluster_name()
4446
+ cloud = sky.clouds.CLOUD_REGISTRY.from_str(generic_cloud)
4447
+ try:
4448
+ task = sky.Task(run="whoami").set_resources(sky.Resources(cloud=cloud))
4449
+ sky.launch(task,
4450
+ cluster_name=name,
4451
+ idle_minutes_to_autostop=1,
4452
+ fast=True)
4453
+ # Sleep to let the cluster autostop
4454
+ time.sleep(120)
4455
+ # Run it again - should work with fast=True
4456
+ sky.launch(task,
4457
+ cluster_name=name,
4458
+ idle_minutes_to_autostop=1,
4459
+ fast=True)
4460
+ finally:
4461
+ sky.down(name)
4462
+
4463
+
4379
4464
  # ---------- Testing Storage ----------
4380
4465
  class TestStorageWithCredentials:
4381
4466
  """Storage tests which require credentials and network connection"""