skypilot-nightly 1.0.0.dev20240926__tar.gz → 1.0.0.dev20240928__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 (301) hide show
  1. {skypilot_nightly-1.0.0.dev20240926/skypilot_nightly.egg-info → skypilot_nightly-1.0.0.dev20240928}/PKG-INFO +16 -15
  2. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/README.md +15 -14
  3. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/__init__.py +2 -2
  4. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/adaptors/kubernetes.py +10 -8
  5. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/authentication.py +10 -6
  6. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/backends/backend_utils.py +1 -0
  7. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/backends/cloud_vm_ray_backend.py +14 -1
  8. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/cli.py +129 -19
  9. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/clouds/kubernetes.py +161 -45
  10. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/clouds/oci.py +11 -8
  11. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/clouds/service_catalog/kubernetes_catalog.py +15 -7
  12. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/provision/kubernetes/network.py +34 -14
  13. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/provision/kubernetes/network_utils.py +7 -5
  14. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/provision/kubernetes/utils.py +125 -59
  15. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/provision/provisioner.py +2 -0
  16. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/templates/kubernetes-ray.yml.j2 +1 -1
  17. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/utils/command_runner.py +4 -0
  18. skypilot_nightly-1.0.0.dev20240928/sky/utils/kubernetes/deploy_remote_cluster.sh +243 -0
  19. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/utils/log_utils.py +88 -10
  20. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/utils/schemas.py +6 -0
  21. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928/skypilot_nightly.egg-info}/PKG-INFO +16 -15
  22. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/skypilot_nightly.egg-info/SOURCES.txt +1 -0
  23. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/tests/test_smoke.py +113 -16
  24. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/LICENSE +0 -0
  25. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/MANIFEST.in +0 -0
  26. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/pyproject.toml +0 -0
  27. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/setup.cfg +0 -0
  28. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/setup.py +0 -0
  29. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/adaptors/__init__.py +0 -0
  30. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/adaptors/aws.py +0 -0
  31. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/adaptors/azure.py +0 -0
  32. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/adaptors/cloudflare.py +0 -0
  33. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/adaptors/common.py +0 -0
  34. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/adaptors/cudo.py +0 -0
  35. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/adaptors/docker.py +0 -0
  36. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/adaptors/gcp.py +0 -0
  37. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/adaptors/ibm.py +0 -0
  38. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/adaptors/oci.py +0 -0
  39. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/adaptors/runpod.py +0 -0
  40. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/adaptors/vsphere.py +0 -0
  41. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/admin_policy.py +0 -0
  42. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/backends/__init__.py +0 -0
  43. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/backends/backend.py +0 -0
  44. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/backends/docker_utils.py +0 -0
  45. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/backends/local_docker_backend.py +0 -0
  46. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/backends/monkey_patches/monkey_patch_ray_up.py +0 -0
  47. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/backends/wheel_utils.py +0 -0
  48. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/benchmark/__init__.py +0 -0
  49. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/benchmark/benchmark_state.py +0 -0
  50. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/benchmark/benchmark_utils.py +0 -0
  51. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/check.py +0 -0
  52. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/cloud_stores.py +0 -0
  53. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/clouds/__init__.py +0 -0
  54. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/clouds/aws.py +0 -0
  55. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/clouds/azure.py +0 -0
  56. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/clouds/cloud.py +0 -0
  57. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/clouds/cloud_registry.py +0 -0
  58. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/clouds/cudo.py +0 -0
  59. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/clouds/fluidstack.py +0 -0
  60. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/clouds/gcp.py +0 -0
  61. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/clouds/ibm.py +0 -0
  62. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/clouds/lambda_cloud.py +0 -0
  63. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/clouds/paperspace.py +0 -0
  64. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/clouds/runpod.py +0 -0
  65. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/clouds/scp.py +0 -0
  66. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/clouds/service_catalog/__init__.py +0 -0
  67. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/clouds/service_catalog/aws_catalog.py +0 -0
  68. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/clouds/service_catalog/azure_catalog.py +0 -0
  69. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/clouds/service_catalog/common.py +0 -0
  70. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/clouds/service_catalog/config.py +0 -0
  71. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/clouds/service_catalog/constants.py +0 -0
  72. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/clouds/service_catalog/cudo_catalog.py +0 -0
  73. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/clouds/service_catalog/data_fetchers/__init__.py +0 -0
  74. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/clouds/service_catalog/data_fetchers/fetch_aws.py +0 -0
  75. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/clouds/service_catalog/data_fetchers/fetch_azure.py +0 -0
  76. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/clouds/service_catalog/data_fetchers/fetch_cudo.py +0 -0
  77. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/clouds/service_catalog/data_fetchers/fetch_fluidstack.py +0 -0
  78. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/clouds/service_catalog/data_fetchers/fetch_gcp.py +0 -0
  79. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/clouds/service_catalog/data_fetchers/fetch_lambda_cloud.py +0 -0
  80. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/clouds/service_catalog/data_fetchers/fetch_vsphere.py +0 -0
  81. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/clouds/service_catalog/fluidstack_catalog.py +0 -0
  82. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/clouds/service_catalog/gcp_catalog.py +0 -0
  83. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/clouds/service_catalog/ibm_catalog.py +0 -0
  84. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/clouds/service_catalog/lambda_catalog.py +0 -0
  85. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/clouds/service_catalog/oci_catalog.py +0 -0
  86. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/clouds/service_catalog/paperspace_catalog.py +0 -0
  87. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/clouds/service_catalog/runpod_catalog.py +0 -0
  88. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/clouds/service_catalog/scp_catalog.py +0 -0
  89. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/clouds/service_catalog/vsphere_catalog.py +0 -0
  90. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/clouds/utils/__init__.py +0 -0
  91. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/clouds/utils/aws_utils.py +0 -0
  92. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/clouds/utils/gcp_utils.py +0 -0
  93. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/clouds/utils/lambda_utils.py +0 -0
  94. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/clouds/utils/oci_utils.py +0 -0
  95. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/clouds/utils/scp_utils.py +0 -0
  96. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/clouds/vsphere.py +0 -0
  97. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/core.py +0 -0
  98. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/dag.py +0 -0
  99. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/data/__init__.py +0 -0
  100. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/data/data_transfer.py +0 -0
  101. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/data/data_utils.py +0 -0
  102. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/data/mounting_utils.py +0 -0
  103. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/data/storage.py +0 -0
  104. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/data/storage_utils.py +0 -0
  105. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/exceptions.py +0 -0
  106. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/execution.py +0 -0
  107. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/global_user_state.py +0 -0
  108. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/jobs/__init__.py +0 -0
  109. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/jobs/constants.py +0 -0
  110. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/jobs/controller.py +0 -0
  111. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/jobs/core.py +0 -0
  112. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/jobs/dashboard/dashboard.py +0 -0
  113. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/jobs/dashboard/static/favicon.ico +0 -0
  114. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/jobs/dashboard/templates/index.html +0 -0
  115. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/jobs/recovery_strategy.py +0 -0
  116. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/jobs/state.py +0 -0
  117. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/jobs/utils.py +0 -0
  118. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/optimizer.py +0 -0
  119. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/provision/__init__.py +0 -0
  120. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/provision/aws/__init__.py +0 -0
  121. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/provision/aws/config.py +0 -0
  122. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/provision/aws/instance.py +0 -0
  123. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/provision/aws/utils.py +0 -0
  124. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/provision/azure/__init__.py +0 -0
  125. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/provision/azure/azure-config-template.json +0 -0
  126. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/provision/azure/azure-vm-template.json +0 -0
  127. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/provision/azure/config.py +0 -0
  128. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/provision/azure/instance.py +0 -0
  129. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/provision/common.py +0 -0
  130. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/provision/constants.py +0 -0
  131. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/provision/cudo/__init__.py +0 -0
  132. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/provision/cudo/config.py +0 -0
  133. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/provision/cudo/cudo_machine_type.py +0 -0
  134. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/provision/cudo/cudo_utils.py +0 -0
  135. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/provision/cudo/cudo_wrapper.py +0 -0
  136. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/provision/cudo/instance.py +0 -0
  137. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/provision/docker_utils.py +0 -0
  138. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/provision/fluidstack/__init__.py +0 -0
  139. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/provision/fluidstack/config.py +0 -0
  140. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/provision/fluidstack/fluidstack_utils.py +0 -0
  141. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/provision/fluidstack/instance.py +0 -0
  142. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/provision/gcp/__init__.py +0 -0
  143. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/provision/gcp/config.py +0 -0
  144. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/provision/gcp/constants.py +0 -0
  145. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/provision/gcp/instance.py +0 -0
  146. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/provision/gcp/instance_utils.py +0 -0
  147. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/provision/gcp/mig_utils.py +0 -0
  148. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/provision/instance_setup.py +0 -0
  149. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/provision/kubernetes/__init__.py +0 -0
  150. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/provision/kubernetes/config.py +0 -0
  151. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/provision/kubernetes/instance.py +0 -0
  152. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/provision/kubernetes/manifests/smarter-device-manager-configmap.yaml +0 -0
  153. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/provision/kubernetes/manifests/smarter-device-manager-daemonset.yaml +0 -0
  154. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/provision/logging.py +0 -0
  155. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/provision/metadata_utils.py +0 -0
  156. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/provision/paperspace/__init__.py +0 -0
  157. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/provision/paperspace/config.py +0 -0
  158. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/provision/paperspace/constants.py +0 -0
  159. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/provision/paperspace/instance.py +0 -0
  160. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/provision/paperspace/utils.py +0 -0
  161. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/provision/runpod/__init__.py +0 -0
  162. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/provision/runpod/config.py +0 -0
  163. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/provision/runpod/instance.py +0 -0
  164. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/provision/runpod/utils.py +0 -0
  165. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/provision/vsphere/__init__.py +0 -0
  166. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/provision/vsphere/common/__init__.py +0 -0
  167. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/provision/vsphere/common/cls_api_client.py +0 -0
  168. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/provision/vsphere/common/cls_api_helper.py +0 -0
  169. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/provision/vsphere/common/custom_script.py +0 -0
  170. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/provision/vsphere/common/id_generator.py +0 -0
  171. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/provision/vsphere/common/metadata_utils.py +0 -0
  172. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/provision/vsphere/common/service_manager.py +0 -0
  173. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/provision/vsphere/common/service_manager_factory.py +0 -0
  174. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/provision/vsphere/common/ssl_helper.py +0 -0
  175. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/provision/vsphere/common/vapiconnect.py +0 -0
  176. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/provision/vsphere/common/vim_utils.py +0 -0
  177. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/provision/vsphere/config.py +0 -0
  178. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/provision/vsphere/instance.py +0 -0
  179. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/provision/vsphere/vsphere_utils.py +0 -0
  180. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/resources.py +0 -0
  181. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/serve/__init__.py +0 -0
  182. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/serve/autoscalers.py +0 -0
  183. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/serve/constants.py +0 -0
  184. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/serve/controller.py +0 -0
  185. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/serve/core.py +0 -0
  186. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/serve/load_balancer.py +0 -0
  187. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/serve/load_balancing_policies.py +0 -0
  188. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/serve/replica_managers.py +0 -0
  189. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/serve/serve_state.py +0 -0
  190. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/serve/serve_utils.py +0 -0
  191. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/serve/service.py +0 -0
  192. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/serve/service_spec.py +0 -0
  193. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/setup_files/MANIFEST.in +0 -0
  194. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/setup_files/setup.py +0 -0
  195. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/sky_logging.py +0 -0
  196. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/skylet/LICENSE +0 -0
  197. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/skylet/__init__.py +0 -0
  198. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/skylet/attempt_skylet.py +0 -0
  199. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/skylet/autostop_lib.py +0 -0
  200. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/skylet/configs.py +0 -0
  201. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/skylet/constants.py +0 -0
  202. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/skylet/events.py +0 -0
  203. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/skylet/job_lib.py +0 -0
  204. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/skylet/log_lib.py +0 -0
  205. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/skylet/log_lib.pyi +0 -0
  206. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/skylet/providers/__init__.py +0 -0
  207. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/skylet/providers/command_runner.py +0 -0
  208. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/skylet/providers/ibm/__init__.py +0 -0
  209. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/skylet/providers/ibm/node_provider.py +0 -0
  210. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/skylet/providers/ibm/utils.py +0 -0
  211. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/skylet/providers/ibm/vpc_provider.py +0 -0
  212. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/skylet/providers/lambda_cloud/__init__.py +0 -0
  213. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/skylet/providers/lambda_cloud/node_provider.py +0 -0
  214. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/skylet/providers/oci/__init__.py +0 -0
  215. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/skylet/providers/oci/node_provider.py +0 -0
  216. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/skylet/providers/oci/query_helper.py +0 -0
  217. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/skylet/providers/oci/utils.py +0 -0
  218. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/skylet/providers/scp/__init__.py +0 -0
  219. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/skylet/providers/scp/config.py +0 -0
  220. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/skylet/providers/scp/node_provider.py +0 -0
  221. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/skylet/ray_patches/__init__.py +0 -0
  222. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/skylet/ray_patches/autoscaler.py.patch +0 -0
  223. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/skylet/ray_patches/cli.py.patch +0 -0
  224. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/skylet/ray_patches/command_runner.py.patch +0 -0
  225. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/skylet/ray_patches/log_monitor.py.patch +0 -0
  226. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/skylet/ray_patches/resource_demand_scheduler.py.patch +0 -0
  227. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/skylet/ray_patches/updater.py.patch +0 -0
  228. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/skylet/ray_patches/worker.py.patch +0 -0
  229. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/skylet/skylet.py +0 -0
  230. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/skylet/subprocess_daemon.py +0 -0
  231. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/skypilot_config.py +0 -0
  232. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/status_lib.py +0 -0
  233. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/task.py +0 -0
  234. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/templates/aws-ray.yml.j2 +0 -0
  235. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/templates/azure-ray.yml.j2 +0 -0
  236. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/templates/cudo-ray.yml.j2 +0 -0
  237. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/templates/fluidstack-ray.yml.j2 +0 -0
  238. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/templates/gcp-ray.yml.j2 +0 -0
  239. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/templates/ibm-ray.yml.j2 +0 -0
  240. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/templates/jobs-controller.yaml.j2 +0 -0
  241. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/templates/kubernetes-ingress.yml.j2 +0 -0
  242. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/templates/kubernetes-loadbalancer.yml.j2 +0 -0
  243. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/templates/kubernetes-port-forward-proxy-command.sh +0 -0
  244. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/templates/kubernetes-ssh-jump.yml.j2 +0 -0
  245. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/templates/lambda-ray.yml.j2 +0 -0
  246. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/templates/local-ray.yml.j2 +0 -0
  247. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/templates/oci-ray.yml.j2 +0 -0
  248. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/templates/paperspace-ray.yml.j2 +0 -0
  249. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/templates/runpod-ray.yml.j2 +0 -0
  250. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/templates/scp-ray.yml.j2 +0 -0
  251. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/templates/sky-serve-controller.yaml.j2 +0 -0
  252. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/templates/vsphere-ray.yml.j2 +0 -0
  253. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/usage/__init__.py +0 -0
  254. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/usage/constants.py +0 -0
  255. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/usage/usage_lib.py +0 -0
  256. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/utils/__init__.py +0 -0
  257. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/utils/accelerator_registry.py +0 -0
  258. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/utils/admin_policy_utils.py +0 -0
  259. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/utils/cli_utils/__init__.py +0 -0
  260. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/utils/cli_utils/status_utils.py +0 -0
  261. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/utils/cluster_yaml_utils.py +0 -0
  262. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/utils/command_runner.pyi +0 -0
  263. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/utils/common_utils.py +0 -0
  264. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/utils/controller_utils.py +0 -0
  265. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/utils/dag_utils.py +0 -0
  266. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/utils/db_utils.py +0 -0
  267. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/utils/env_options.py +0 -0
  268. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/utils/kubernetes/__init__.py +0 -0
  269. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/utils/kubernetes/create_cluster.sh +0 -0
  270. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/utils/kubernetes/delete_cluster.sh +0 -0
  271. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/utils/kubernetes/generate_kind_config.py +0 -0
  272. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/utils/kubernetes/generate_kubeconfig.sh +0 -0
  273. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/utils/kubernetes/gpu_labeler.py +0 -0
  274. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/utils/kubernetes/k8s_gpu_labeler_job.yaml +0 -0
  275. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/utils/kubernetes/k8s_gpu_labeler_setup.yaml +0 -0
  276. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/utils/kubernetes/rsync_helper.sh +0 -0
  277. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/utils/kubernetes/ssh_jump_lifecycle_manager.py +0 -0
  278. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/utils/kubernetes_enums.py +0 -0
  279. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/utils/resources_utils.py +0 -0
  280. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/utils/rich_utils.py +0 -0
  281. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/utils/subprocess_utils.py +0 -0
  282. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/utils/timeline.py +0 -0
  283. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/utils/ux_utils.py +0 -0
  284. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/sky/utils/validator.py +0 -0
  285. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/skypilot_nightly.egg-info/dependency_links.txt +0 -0
  286. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/skypilot_nightly.egg-info/entry_points.txt +0 -0
  287. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/skypilot_nightly.egg-info/requires.txt +0 -0
  288. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/skypilot_nightly.egg-info/top_level.txt +0 -0
  289. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/tests/test_api.py +0 -0
  290. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/tests/test_cli.py +0 -0
  291. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/tests/test_config.py +0 -0
  292. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/tests/test_global_user_state.py +0 -0
  293. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/tests/test_jobs.py +0 -0
  294. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/tests/test_jobs_and_serve.py +0 -0
  295. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/tests/test_list_accelerators.py +0 -0
  296. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/tests/test_optimizer_dryruns.py +0 -0
  297. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/tests/test_optimizer_random_dag.py +0 -0
  298. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/tests/test_serve_autoscaler.py +0 -0
  299. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/tests/test_storage.py +0 -0
  300. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/tests/test_wheels.py +0 -0
  301. {skypilot_nightly-1.0.0.dev20240926 → skypilot_nightly-1.0.0.dev20240928}/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.dev20240926
3
+ Version: 1.0.0.dev20240928
4
4
  Summary: SkyPilot: An intercloud broker for the clouds
5
5
  Author: SkyPilot Team
6
6
  License: Apache 2.0
@@ -163,27 +163,27 @@ Requires-Dist: pyvmomi==8.0.1.0.2; extra == "all"
163
163
 
164
164
  ----
165
165
  :fire: *News* :fire:
166
- - [Sep, 2024] Point, Lanuch and Serve **Llama 3.2** on on Kubernetes or Any Cloud: [**example**](./llm/llama-3_2/)
167
- - [Sep, 2024] Run and deploy [Pixtral](./llm/pixtral), the first open-source multimodal model from Mistral AI.
168
- - [Jul, 2024] [Finetune](./llm/llama-3_1-finetuning/) and [serve](./llm/llama-3_1/) **Llama 3.1** on your infra
166
+ - [Sep, 2024] Point, Launch and Serve **Llama 3.2** on on Kubernetes or Any Cloud: [**example**](./llm/llama-3_2/)
167
+ - [Sep, 2024] Run and deploy [**Pixtral**](./llm/pixtral), the first open-source multimodal model from Mistral AI.
168
+ - [Jul, 2024] [**Finetune**](./llm/llama-3_1-finetuning/) and [**serve**](./llm/llama-3_1/) **Llama 3.1** on your infra
169
169
  - [Jun, 2024] Reproduce **GPT** with [llm.c](https://github.com/karpathy/llm.c/discussions/481) on any cloud: [**guide**](./llm/gpt-2/)
170
- - [Apr, 2024] Serve [**Qwen-110B**](https://qwenlm.github.io/blog/qwen1.5-110b/) on your infra: [**example**](./llm/qwen/)
171
- - [Apr, 2024] Using [**Ollama**](https://github.com/ollama/ollama) to deploy quantized LLMs on CPUs and GPUs: [**example**](./llm/ollama/)
172
- - [Feb, 2024] Deploying and scaling [**Gemma**](https://blog.google/technology/developers/gemma-open-models/) with SkyServe: [**example**](./llm/gemma/)
173
- - [Feb, 2024] Serving [**Code Llama 70B**](https://ai.meta.com/blog/code-llama-large-language-model-coding/) with vLLM and SkyServe: [**example**](./llm/codellama/)
174
- - [Dec, 2023] [**Mixtral 8x7B**](https://mistral.ai/news/mixtral-of-experts/), a high quality sparse mixture-of-experts model, was released by Mistral AI! Deploy via SkyPilot on any cloud: [**example**](./llm/mixtral/)
175
- - [Nov, 2023] Using [**Axolotl**](https://github.com/OpenAccess-AI-Collective/axolotl) to finetune Mistral 7B on the cloud (on-demand and spot): [**example**](./llm/axolotl/)
176
- - [Sep, 2023] Case study: [**Covariant**](https://covariant.ai/) transformed AI development on the cloud using SkyPilot, delivering models 4x faster cost-effectively: [**read the case study**](https://blog.skypilot.co/covariant/)
177
- - [Aug, 2023] **Finetuning Cookbook**: Finetuning Llama 2 in your own cloud environment, privately: [**example**](./llm/vicuna-llama-2/), [**blog post**](https://blog.skypilot.co/finetuning-llama2-operational-guide/)
170
+ - [Apr, 2024] Serve **Qwen-110B** on your infra: [**example**](./llm/qwen/)
171
+ - [Apr, 2024] Using **Ollama** to deploy quantized LLMs on CPUs and GPUs: [**example**](./llm/ollama/)
172
+ - [Feb, 2024] Deploying and scaling **Gemma** with SkyServe: [**example**](./llm/gemma/)
173
+ - [Feb, 2024] Serving **Code Llama 70B** with vLLM and SkyServe: [**example**](./llm/codellama/)
174
+ - [Dec, 2023] **Mixtral 8x7B**, a high quality sparse mixture-of-experts model, was released by Mistral AI! Deploy via SkyPilot on any cloud: [**example**](./llm/mixtral/)
175
+ - [Nov, 2023] Using **Axolotl** to finetune Mistral 7B on the cloud (on-demand and spot): [**example**](./llm/axolotl/)
178
176
 
179
177
  <details>
180
178
  <summary>Archived</summary>
181
-
179
+
182
180
  - [Apr, 2024] Serve and finetune [**Llama 3**](https://skypilot.readthedocs.io/en/latest/gallery/llms/llama-3.html) on any cloud or Kubernetes: [**example**](./llm/llama-3/)
183
181
  - [Mar, 2024] Serve and deploy [**Databricks DBRX**](https://www.databricks.com/blog/introducing-dbrx-new-state-art-open-llm) on your infra: [**example**](./llm/dbrx/)
184
182
  - [Feb, 2024] Speed up your LLM deployments with [**SGLang**](https://github.com/sgl-project/sglang) for 5x throughput on SkyServe: [**example**](./llm/sglang/)
185
183
  - [Dec, 2023] Using [**LoRAX**](https://github.com/predibase/lorax) to serve 1000s of finetuned LLMs on a single instance in the cloud: [**example**](./llm/lorax/)
186
184
  - [Sep, 2023] [**Mistral 7B**](https://mistral.ai/news/announcing-mistral-7b/), a high-quality open LLM, was released! Deploy via SkyPilot on any cloud: [**Mistral docs**](https://docs.mistral.ai/self-deployment/skypilot)
185
+ - [Sep, 2023] Case study: [**Covariant**](https://covariant.ai/) transformed AI development on the cloud using SkyPilot, delivering models 4x faster cost-effectively: [**read the case study**](https://blog.skypilot.co/covariant/)
186
+ - [Aug, 2023] **Finetuning Cookbook**: Finetuning Llama 2 in your own cloud environment, privately: [**example**](./llm/vicuna-llama-2/), [**blog post**](https://blog.skypilot.co/finetuning-llama2-operational-guide/)
187
187
  - [July, 2023] Self-Hosted **Llama-2 Chatbot** on Any Cloud: [**example**](./llm/llama-2/)
188
188
  - [June, 2023] Serving LLM 24x Faster On the Cloud [**with vLLM**](https://vllm.ai/) and SkyPilot: [**example**](./llm/vllm/), [**blog post**](https://blog.skypilot.co/serving-llm-24x-faster-on-the-cloud-with-vllm-and-skypilot/)
189
189
  - [April, 2023] [SkyPilot YAMLs](./llm/vicuna/) for finetuning & serving the [Vicuna LLM](https://lmsys.org/blog/2023-03-30-vicuna/) with a single command!
@@ -287,11 +287,12 @@ SkyPilot then performs the heavy-lifting for you, including:
287
287
  Refer to [Quickstart](https://skypilot.readthedocs.io/en/latest/getting-started/quickstart.html) to get started with SkyPilot.
288
288
 
289
289
  ## More Information
290
- To learn more, see our [Documentation](https://skypilot.readthedocs.io/en/latest/) and [Tutorials](https://github.com/skypilot-org/skypilot-tutorial).
290
+ To learn more, see our [documentation](https://skypilot.readthedocs.io/en/latest/), [blog](https://blog.skypilot.co/), and [community integrations](https://blog.skypilot.co/community/).
291
291
 
292
292
  <!-- Keep this section in sync with index.rst in SkyPilot Docs -->
293
293
  Runnable examples:
294
294
  - LLMs on SkyPilot
295
+ - [Llama 3.2: lightweight and vision models](./llm/llama-3_2/)
295
296
  - [Pixtral](./llm/pixtral/)
296
297
  - [Llama 3.1 finetuning](./llm/llama-3_1-finetuning/) and [serving](./llm/llama-3_1/)
297
298
  - [GPT-2 via `llm.c`](./llm/gpt-2/)
@@ -337,4 +338,4 @@ We are excited to hear your feedback!
337
338
  For general discussions, join us on the [SkyPilot Slack](http://slack.skypilot.co).
338
339
 
339
340
  ## Contributing
340
- We welcome and value all contributions to the project! Please refer to [CONTRIBUTING](CONTRIBUTING.md) for how to get involved.
341
+ We welcome all contributions to the project! See [CONTRIBUTING](CONTRIBUTING.md) for how to get involved.
@@ -26,27 +26,27 @@
26
26
 
27
27
  ----
28
28
  :fire: *News* :fire:
29
- - [Sep, 2024] Point, Lanuch and Serve **Llama 3.2** on on Kubernetes or Any Cloud: [**example**](./llm/llama-3_2/)
30
- - [Sep, 2024] Run and deploy [Pixtral](./llm/pixtral), the first open-source multimodal model from Mistral AI.
31
- - [Jul, 2024] [Finetune](./llm/llama-3_1-finetuning/) and [serve](./llm/llama-3_1/) **Llama 3.1** on your infra
29
+ - [Sep, 2024] Point, Launch and Serve **Llama 3.2** on on Kubernetes or Any Cloud: [**example**](./llm/llama-3_2/)
30
+ - [Sep, 2024] Run and deploy [**Pixtral**](./llm/pixtral), the first open-source multimodal model from Mistral AI.
31
+ - [Jul, 2024] [**Finetune**](./llm/llama-3_1-finetuning/) and [**serve**](./llm/llama-3_1/) **Llama 3.1** on your infra
32
32
  - [Jun, 2024] Reproduce **GPT** with [llm.c](https://github.com/karpathy/llm.c/discussions/481) on any cloud: [**guide**](./llm/gpt-2/)
33
- - [Apr, 2024] Serve [**Qwen-110B**](https://qwenlm.github.io/blog/qwen1.5-110b/) on your infra: [**example**](./llm/qwen/)
34
- - [Apr, 2024] Using [**Ollama**](https://github.com/ollama/ollama) to deploy quantized LLMs on CPUs and GPUs: [**example**](./llm/ollama/)
35
- - [Feb, 2024] Deploying and scaling [**Gemma**](https://blog.google/technology/developers/gemma-open-models/) with SkyServe: [**example**](./llm/gemma/)
36
- - [Feb, 2024] Serving [**Code Llama 70B**](https://ai.meta.com/blog/code-llama-large-language-model-coding/) with vLLM and SkyServe: [**example**](./llm/codellama/)
37
- - [Dec, 2023] [**Mixtral 8x7B**](https://mistral.ai/news/mixtral-of-experts/), a high quality sparse mixture-of-experts model, was released by Mistral AI! Deploy via SkyPilot on any cloud: [**example**](./llm/mixtral/)
38
- - [Nov, 2023] Using [**Axolotl**](https://github.com/OpenAccess-AI-Collective/axolotl) to finetune Mistral 7B on the cloud (on-demand and spot): [**example**](./llm/axolotl/)
39
- - [Sep, 2023] Case study: [**Covariant**](https://covariant.ai/) transformed AI development on the cloud using SkyPilot, delivering models 4x faster cost-effectively: [**read the case study**](https://blog.skypilot.co/covariant/)
40
- - [Aug, 2023] **Finetuning Cookbook**: Finetuning Llama 2 in your own cloud environment, privately: [**example**](./llm/vicuna-llama-2/), [**blog post**](https://blog.skypilot.co/finetuning-llama2-operational-guide/)
33
+ - [Apr, 2024] Serve **Qwen-110B** on your infra: [**example**](./llm/qwen/)
34
+ - [Apr, 2024] Using **Ollama** to deploy quantized LLMs on CPUs and GPUs: [**example**](./llm/ollama/)
35
+ - [Feb, 2024] Deploying and scaling **Gemma** with SkyServe: [**example**](./llm/gemma/)
36
+ - [Feb, 2024] Serving **Code Llama 70B** with vLLM and SkyServe: [**example**](./llm/codellama/)
37
+ - [Dec, 2023] **Mixtral 8x7B**, a high quality sparse mixture-of-experts model, was released by Mistral AI! Deploy via SkyPilot on any cloud: [**example**](./llm/mixtral/)
38
+ - [Nov, 2023] Using **Axolotl** to finetune Mistral 7B on the cloud (on-demand and spot): [**example**](./llm/axolotl/)
41
39
 
42
40
  <details>
43
41
  <summary>Archived</summary>
44
-
42
+
45
43
  - [Apr, 2024] Serve and finetune [**Llama 3**](https://skypilot.readthedocs.io/en/latest/gallery/llms/llama-3.html) on any cloud or Kubernetes: [**example**](./llm/llama-3/)
46
44
  - [Mar, 2024] Serve and deploy [**Databricks DBRX**](https://www.databricks.com/blog/introducing-dbrx-new-state-art-open-llm) on your infra: [**example**](./llm/dbrx/)
47
45
  - [Feb, 2024] Speed up your LLM deployments with [**SGLang**](https://github.com/sgl-project/sglang) for 5x throughput on SkyServe: [**example**](./llm/sglang/)
48
46
  - [Dec, 2023] Using [**LoRAX**](https://github.com/predibase/lorax) to serve 1000s of finetuned LLMs on a single instance in the cloud: [**example**](./llm/lorax/)
49
47
  - [Sep, 2023] [**Mistral 7B**](https://mistral.ai/news/announcing-mistral-7b/), a high-quality open LLM, was released! Deploy via SkyPilot on any cloud: [**Mistral docs**](https://docs.mistral.ai/self-deployment/skypilot)
48
+ - [Sep, 2023] Case study: [**Covariant**](https://covariant.ai/) transformed AI development on the cloud using SkyPilot, delivering models 4x faster cost-effectively: [**read the case study**](https://blog.skypilot.co/covariant/)
49
+ - [Aug, 2023] **Finetuning Cookbook**: Finetuning Llama 2 in your own cloud environment, privately: [**example**](./llm/vicuna-llama-2/), [**blog post**](https://blog.skypilot.co/finetuning-llama2-operational-guide/)
50
50
  - [July, 2023] Self-Hosted **Llama-2 Chatbot** on Any Cloud: [**example**](./llm/llama-2/)
51
51
  - [June, 2023] Serving LLM 24x Faster On the Cloud [**with vLLM**](https://vllm.ai/) and SkyPilot: [**example**](./llm/vllm/), [**blog post**](https://blog.skypilot.co/serving-llm-24x-faster-on-the-cloud-with-vllm-and-skypilot/)
52
52
  - [April, 2023] [SkyPilot YAMLs](./llm/vicuna/) for finetuning & serving the [Vicuna LLM](https://lmsys.org/blog/2023-03-30-vicuna/) with a single command!
@@ -153,11 +153,12 @@ SkyPilot then performs the heavy-lifting for you, including:
153
153
  Refer to [Quickstart](https://skypilot.readthedocs.io/en/latest/getting-started/quickstart.html) to get started with SkyPilot.
154
154
 
155
155
  ## More Information
156
- To learn more, see our [Documentation](https://skypilot.readthedocs.io/en/latest/) and [Tutorials](https://github.com/skypilot-org/skypilot-tutorial).
156
+ To learn more, see our [documentation](https://skypilot.readthedocs.io/en/latest/), [blog](https://blog.skypilot.co/), and [community integrations](https://blog.skypilot.co/community/).
157
157
 
158
158
  <!-- Keep this section in sync with index.rst in SkyPilot Docs -->
159
159
  Runnable examples:
160
160
  - LLMs on SkyPilot
161
+ - [Llama 3.2: lightweight and vision models](./llm/llama-3_2/)
161
162
  - [Pixtral](./llm/pixtral/)
162
163
  - [Llama 3.1 finetuning](./llm/llama-3_1-finetuning/) and [serving](./llm/llama-3_1/)
163
164
  - [GPT-2 via `llm.c`](./llm/gpt-2/)
@@ -203,4 +204,4 @@ We are excited to hear your feedback!
203
204
  For general discussions, join us on the [SkyPilot Slack](http://slack.skypilot.co).
204
205
 
205
206
  ## Contributing
206
- We welcome and value all contributions to the project! Please refer to [CONTRIBUTING](CONTRIBUTING.md) for how to get involved.
207
+ We welcome all contributions to the project! See [CONTRIBUTING](CONTRIBUTING.md) for how to get involved.
@@ -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 = 'e95332b9eb8de4cdcac464ff704bf64f3285e776'
8
+ _SKYPILOT_COMMIT_SHA = 'dacf27348ae1446c3c93d0ee2fc57702c5366eac'
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.dev20240926'
38
+ __version__ = '1.0.0.dev20240928'
39
39
  __root_dir__ = os.path.dirname(os.path.abspath(__file__))
40
40
 
41
41
 
@@ -75,15 +75,17 @@ def _load_config(context: Optional[str] = None):
75
75
  suffix += f' Error: {str(e)}'
76
76
  # Check if exception was due to no current-context
77
77
  if 'Expected key current-context' in str(e):
78
- err_str = ('Failed to load Kubernetes configuration. '
79
- 'Kubeconfig does not contain any valid context(s).'
80
- f'{suffix}\n'
81
- ' If you were running a local Kubernetes '
82
- 'cluster, run `sky local up` to start the cluster.')
78
+ err_str = (
79
+ f'Failed to load Kubernetes configuration for {context!r}. '
80
+ 'Kubeconfig does not contain any valid context(s).'
81
+ f'{suffix}\n'
82
+ ' If you were running a local Kubernetes '
83
+ 'cluster, run `sky local up` to start the cluster.')
83
84
  else:
84
- err_str = ('Failed to load Kubernetes configuration. '
85
- 'Please check if your kubeconfig file exists at '
86
- f'~/.kube/config and is valid.{suffix}')
85
+ err_str = (
86
+ f'Failed to load Kubernetes configuration for {context!r}. '
87
+ 'Please check if your kubeconfig file exists at '
88
+ f'~/.kube/config and is valid.{suffix}')
87
89
  err_str += '\nTo disable Kubernetes for SkyPilot: run `sky check`.'
88
90
  with ux_utils.print_exception_no_traceback():
89
91
  raise ValueError(err_str) from None
@@ -378,11 +378,11 @@ def setup_kubernetes_authentication(config: Dict[str, Any]) -> Dict[str, Any]:
378
378
  public_key_path = os.path.expanduser(PUBLIC_SSH_KEY_PATH)
379
379
  secret_name = clouds.Kubernetes.SKY_SSH_KEY_SECRET_NAME
380
380
  secret_field_name = clouds.Kubernetes().ssh_key_secret_field_name
381
- namespace = config['provider'].get(
382
- 'namespace',
383
- kubernetes_utils.get_current_kube_config_context_namespace())
384
381
  context = config['provider'].get(
385
382
  'context', kubernetes_utils.get_current_kube_config_context_name())
383
+ namespace = config['provider'].get(
384
+ 'namespace',
385
+ kubernetes_utils.get_kube_config_context_namespace(context))
386
386
  k8s = kubernetes.kubernetes
387
387
  with open(public_key_path, 'r', encoding='utf-8') as f:
388
388
  public_key = f.read()
@@ -425,8 +425,8 @@ def setup_kubernetes_authentication(config: Dict[str, Any]) -> Dict[str, Any]:
425
425
  ssh_jump_name,
426
426
  nodeport_mode,
427
427
  private_key_path=private_key_path,
428
- namespace=namespace,
429
- context=context)
428
+ context=context,
429
+ namespace=namespace)
430
430
  elif network_mode == port_forward_mode:
431
431
  # Using `kubectl port-forward` creates a direct tunnel to the pod and
432
432
  # does not require a ssh jump pod.
@@ -441,7 +441,11 @@ def setup_kubernetes_authentication(config: Dict[str, Any]) -> Dict[str, Any]:
441
441
  # on GKE.
442
442
  ssh_target = config['cluster_name'] + '-head'
443
443
  ssh_proxy_cmd = kubernetes_utils.get_ssh_proxy_command(
444
- ssh_target, port_forward_mode, private_key_path=private_key_path)
444
+ ssh_target,
445
+ port_forward_mode,
446
+ private_key_path=private_key_path,
447
+ context=context,
448
+ namespace=namespace)
445
449
  else:
446
450
  # This should never happen because we check for this in from_str above.
447
451
  raise ValueError(f'Unsupported networking mode: {network_mode_str}')
@@ -428,6 +428,7 @@ class SSHConfigHelper(object):
428
428
  HostName {ip}
429
429
  User {username}
430
430
  IdentityFile {ssh_key_path}
431
+ AddKeysToAgent yes
431
432
  IdentitiesOnly yes
432
433
  ForwardAgent yes
433
434
  StrictHostKeyChecking no
@@ -2082,7 +2082,7 @@ class CloudVmRayResourceHandle(backends.backend.ResourceHandle):
2082
2082
  """
2083
2083
  # Bump if any fields get added/removed/changed, and add backward
2084
2084
  # compaitibility logic in __setstate__.
2085
- _VERSION = 8
2085
+ _VERSION = 9
2086
2086
 
2087
2087
  def __init__(
2088
2088
  self,
@@ -2516,6 +2516,19 @@ class CloudVmRayResourceHandle(backends.backend.ResourceHandle):
2516
2516
  if version < 8:
2517
2517
  self.cached_cluster_info = None
2518
2518
 
2519
+ if version < 9:
2520
+ # For backward compatibility, we should update the region of a
2521
+ # SkyPilot cluster on Kubernetes to the actual context it is using.
2522
+ # pylint: disable=import-outside-toplevel
2523
+ launched_resources = state['launched_resources']
2524
+ if isinstance(launched_resources.cloud, clouds.Kubernetes):
2525
+ yaml_config = common_utils.read_yaml(
2526
+ os.path.expanduser(state['_cluster_yaml']))
2527
+ context = kubernetes_utils.get_context_from_config(
2528
+ yaml_config['provider'])
2529
+ state['launched_resources'] = launched_resources.copy(
2530
+ region=context)
2531
+
2519
2532
  self.__dict__.update(state)
2520
2533
 
2521
2534
  # Because the update_cluster_ips and update_ssh_ports
@@ -3026,14 +3026,11 @@ def show_gpus(
3026
3026
  kubernetes_is_enabled = sky_clouds.cloud_in_iterable(
3027
3027
  sky_clouds.Kubernetes(), global_user_state.get_cached_enabled_clouds())
3028
3028
 
3029
- if cloud_is_kubernetes and region is not None:
3030
- raise click.UsageError(
3031
- 'The --region flag cannot be set with --cloud kubernetes.')
3032
-
3033
3029
  def _list_to_str(lst):
3034
3030
  return ', '.join([str(e) for e in lst])
3035
3031
 
3036
3032
  def _get_kubernetes_realtime_gpu_table(
3033
+ context: Optional[str] = None,
3037
3034
  name_filter: Optional[str] = None,
3038
3035
  quantity_filter: Optional[int] = None):
3039
3036
  if quantity_filter:
@@ -3048,7 +3045,7 @@ def show_gpus(
3048
3045
  gpus_only=True,
3049
3046
  clouds='kubernetes',
3050
3047
  name_filter=name_filter,
3051
- region_filter=region,
3048
+ region_filter=context,
3052
3049
  quantity_filter=quantity_filter,
3053
3050
  case_sensitive=False)
3054
3051
  assert (set(counts.keys()) == set(capacity.keys()) == set(
@@ -3078,11 +3075,11 @@ def show_gpus(
3078
3075
  ])
3079
3076
  return realtime_gpu_table
3080
3077
 
3081
- def _get_kubernetes_node_info_table():
3078
+ def _get_kubernetes_node_info_table(context: Optional[str]):
3082
3079
  node_table = log_utils.create_table(
3083
3080
  ['NODE_NAME', 'GPU_NAME', 'TOTAL_GPUS', 'FREE_GPUS'])
3084
3081
 
3085
- node_info_dict = kubernetes_utils.get_kubernetes_node_info()
3082
+ node_info_dict = kubernetes_utils.get_kubernetes_node_info(context)
3086
3083
  for node_name, node_info in node_info_dict.items():
3087
3084
  node_table.add_row([
3088
3085
  node_name, node_info.gpu_type,
@@ -3116,11 +3113,13 @@ def show_gpus(
3116
3113
  print_section_titles = False
3117
3114
  # If cloud is kubernetes, we want to show real-time capacity
3118
3115
  if kubernetes_is_enabled and (cloud is None or cloud_is_kubernetes):
3116
+ context = region
3119
3117
  try:
3120
3118
  # If --cloud kubernetes is not specified, we want to catch
3121
3119
  # the case where no GPUs are available on the cluster and
3122
3120
  # print the warning at the end.
3123
- k8s_realtime_table = _get_kubernetes_realtime_gpu_table()
3121
+ k8s_realtime_table = _get_kubernetes_realtime_gpu_table(
3122
+ context)
3124
3123
  except ValueError as e:
3125
3124
  if not cloud_is_kubernetes:
3126
3125
  # Make it a note if cloud is not kubernetes
@@ -3129,9 +3128,10 @@ def show_gpus(
3129
3128
  else:
3130
3129
  print_section_titles = True
3131
3130
  yield (f'{colorama.Fore.CYAN}{colorama.Style.BRIGHT}'
3132
- f'Kubernetes GPUs{colorama.Style.RESET_ALL}\n')
3131
+ f'Kubernetes GPUs (Context: {context})'
3132
+ f'{colorama.Style.RESET_ALL}\n')
3133
3133
  yield from k8s_realtime_table.get_string()
3134
- k8s_node_table = _get_kubernetes_node_info_table()
3134
+ k8s_node_table = _get_kubernetes_node_info_table(context)
3135
3135
  yield '\n\n'
3136
3136
  yield (f'{colorama.Fore.CYAN}{colorama.Style.BRIGHT}'
3137
3137
  f'Kubernetes per node GPU availability'
@@ -5072,15 +5072,7 @@ def local():
5072
5072
  pass
5073
5073
 
5074
5074
 
5075
- @click.option('--gpus/--no-gpus',
5076
- default=True,
5077
- is_flag=True,
5078
- help='Launch cluster without GPU support even '
5079
- 'if GPUs are detected on the host.')
5080
- @local.command('up', cls=_DocumentedCodeCommand)
5081
- @usage_lib.entrypoint
5082
- def local_up(gpus: bool):
5083
- """Creates a local cluster."""
5075
+ def _deploy_local_cluster(gpus: bool):
5084
5076
  cluster_created = False
5085
5077
 
5086
5078
  # Check if GPUs are available on the host
@@ -5206,6 +5198,124 @@ def local_up(gpus: bool):
5206
5198
  f'{gpu_hint}')
5207
5199
 
5208
5200
 
5201
+ def _deploy_remote_cluster(ip_file: str, ssh_user: str, ssh_key_path: str,
5202
+ cleanup: bool):
5203
+ success = False
5204
+ path_to_package = os.path.dirname(os.path.dirname(__file__))
5205
+ up_script_path = os.path.join(path_to_package, 'sky/utils/kubernetes',
5206
+ 'deploy_remote_cluster.sh')
5207
+ # Get directory of script and run it from there
5208
+ cwd = os.path.dirname(os.path.abspath(up_script_path))
5209
+
5210
+ deploy_command = f'{up_script_path} {ip_file} {ssh_user} {ssh_key_path}'
5211
+ if cleanup:
5212
+ deploy_command += ' --cleanup'
5213
+
5214
+ # Convert the command to a format suitable for subprocess
5215
+ deploy_command = shlex.split(deploy_command)
5216
+
5217
+ # Setup logging paths
5218
+ run_timestamp = backend_utils.get_run_timestamp()
5219
+ log_path = os.path.join(constants.SKY_LOGS_DIRECTORY, run_timestamp,
5220
+ 'local_up.log')
5221
+ tail_cmd = 'tail -n100 -f ' + log_path
5222
+
5223
+ # Check if ~/.kube/config exists:
5224
+ if os.path.exists(os.path.expanduser('~/.kube/config')):
5225
+ click.echo('Found existing kube config. '
5226
+ 'It will be backed up to ~/.kube/config.bak.')
5227
+ style = colorama.Style
5228
+ click.echo('To view detailed progress: '
5229
+ f'{style.BRIGHT}{tail_cmd}{style.RESET_ALL}')
5230
+ if cleanup:
5231
+ msg_str = 'Cleaning up remote cluster...'
5232
+ else:
5233
+ msg_str = 'Deploying remote cluster...'
5234
+ with rich_utils.safe_status(f'[bold cyan]{msg_str}'):
5235
+ returncode, _, stderr = log_lib.run_with_log(
5236
+ cmd=deploy_command,
5237
+ log_path=log_path,
5238
+ require_outputs=True,
5239
+ stream_logs=False,
5240
+ line_processor=log_utils.SkyRemoteUpLineProcessor(),
5241
+ cwd=cwd)
5242
+ if returncode == 0:
5243
+ success = True
5244
+ else:
5245
+ with ux_utils.print_exception_no_traceback():
5246
+ raise RuntimeError(
5247
+ 'Failed to deploy remote cluster. '
5248
+ f'Full log: {log_path}'
5249
+ f'\nError: {style.BRIGHT}{stderr}{style.RESET_ALL}')
5250
+
5251
+ if success:
5252
+ if cleanup:
5253
+ click.echo(f'{colorama.Fore.GREEN}'
5254
+ '🎉 Remote cluster cleaned up successfully.'
5255
+ f'{style.RESET_ALL}')
5256
+ else:
5257
+ click.echo('Cluster deployment done. You can now run tasks on '
5258
+ 'this cluster.\nE.g., run a task with: '
5259
+ 'sky launch --cloud kubernetes -- echo hello world.'
5260
+ f'\n{colorama.Fore.GREEN}🎉 Remote cluster deployed '
5261
+ f'successfully. {style.RESET_ALL}')
5262
+
5263
+
5264
+ @click.option('--gpus/--no-gpus',
5265
+ default=True,
5266
+ is_flag=True,
5267
+ help='Launch cluster without GPU support even '
5268
+ 'if GPUs are detected on the host.')
5269
+ @click.option(
5270
+ '--ips',
5271
+ type=str,
5272
+ required=False,
5273
+ help='Path to the file containing IP addresses of remote machines.')
5274
+ @click.option('--ssh-user',
5275
+ type=str,
5276
+ required=False,
5277
+ help='SSH username for accessing remote machines.')
5278
+ @click.option('--ssh-key-path',
5279
+ type=str,
5280
+ required=False,
5281
+ help='Path to the SSH private key.')
5282
+ @click.option('--cleanup',
5283
+ is_flag=True,
5284
+ help='Clean up the remote cluster instead of deploying it.')
5285
+ @local.command('up', cls=_DocumentedCodeCommand)
5286
+ @usage_lib.entrypoint
5287
+ def local_up(gpus: bool, ips: str, ssh_user: str, ssh_key_path: str,
5288
+ cleanup: bool):
5289
+ """Creates a local or remote cluster."""
5290
+
5291
+ def _validate_args(ips, ssh_user, ssh_key_path, cleanup):
5292
+ # If any of --ips, --ssh-user, or --ssh-key-path is specified,
5293
+ # all must be specified
5294
+ if bool(ips) or bool(ssh_user) or bool(ssh_key_path):
5295
+ if not (ips and ssh_user and ssh_key_path):
5296
+ raise click.BadParameter(
5297
+ 'All --ips, --ssh-user, and --ssh-key-path '
5298
+ 'must be specified together.')
5299
+
5300
+ # --cleanup can only be used if --ips, --ssh-user and --ssh-key-path
5301
+ # are all provided
5302
+ if cleanup and not (ips and ssh_user and ssh_key_path):
5303
+ raise click.BadParameter('--cleanup can only be used with '
5304
+ '--ips, --ssh-user and --ssh-key-path.')
5305
+
5306
+ _validate_args(ips, ssh_user, ssh_key_path, cleanup)
5307
+
5308
+ # If remote deployment arguments are specified, run remote up script
5309
+ if ips and ssh_user and ssh_key_path:
5310
+ # Convert ips and ssh_key_path to absolute paths
5311
+ ips = os.path.abspath(ips)
5312
+ ssh_key_path = os.path.abspath(ssh_key_path)
5313
+ _deploy_remote_cluster(ips, ssh_user, ssh_key_path, cleanup)
5314
+ else:
5315
+ # Run local deployment (kind) if no remote args are specified
5316
+ _deploy_local_cluster(gpus)
5317
+
5318
+
5209
5319
  @local.command('down', cls=_DocumentedCodeCommand)
5210
5320
  @usage_lib.entrypoint
5211
5321
  def local_down():