skypilot-nightly 1.0.0.dev20250103__tar.gz → 1.0.0.dev20250105__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 (316) hide show
  1. {skypilot_nightly-1.0.0.dev20250103/skypilot_nightly.egg-info → skypilot_nightly-1.0.0.dev20250105}/PKG-INFO +1 -1
  2. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/__init__.py +2 -2
  3. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/backends/backend_utils.py +7 -0
  4. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/backends/wheel_utils.py +4 -1
  5. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/clouds/aws.py +87 -39
  6. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/clouds/oci.py +20 -9
  7. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/provision/kubernetes/utils.py +46 -0
  8. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/provision/oci/query_utils.py +5 -2
  9. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105/skypilot_nightly.egg-info}/PKG-INFO +1 -1
  10. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/tests/test_config.py +46 -0
  11. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/LICENSE +0 -0
  12. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/MANIFEST.in +0 -0
  13. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/README.md +0 -0
  14. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/pyproject.toml +0 -0
  15. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/setup.cfg +0 -0
  16. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/setup.py +0 -0
  17. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/adaptors/__init__.py +0 -0
  18. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/adaptors/aws.py +0 -0
  19. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/adaptors/azure.py +0 -0
  20. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/adaptors/cloudflare.py +0 -0
  21. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/adaptors/common.py +0 -0
  22. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/adaptors/cudo.py +0 -0
  23. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/adaptors/do.py +0 -0
  24. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/adaptors/docker.py +0 -0
  25. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/adaptors/gcp.py +0 -0
  26. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/adaptors/ibm.py +0 -0
  27. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/adaptors/kubernetes.py +0 -0
  28. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/adaptors/oci.py +0 -0
  29. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/adaptors/runpod.py +0 -0
  30. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/adaptors/vsphere.py +0 -0
  31. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/admin_policy.py +0 -0
  32. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/authentication.py +0 -0
  33. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/backends/__init__.py +0 -0
  34. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/backends/backend.py +0 -0
  35. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/backends/cloud_vm_ray_backend.py +0 -0
  36. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/backends/docker_utils.py +0 -0
  37. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/backends/local_docker_backend.py +0 -0
  38. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/backends/monkey_patches/monkey_patch_ray_up.py +0 -0
  39. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/benchmark/__init__.py +0 -0
  40. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/benchmark/benchmark_state.py +0 -0
  41. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/benchmark/benchmark_utils.py +0 -0
  42. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/check.py +0 -0
  43. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/cli.py +0 -0
  44. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/cloud_stores.py +0 -0
  45. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/clouds/__init__.py +0 -0
  46. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/clouds/azure.py +0 -0
  47. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/clouds/cloud.py +0 -0
  48. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/clouds/cloud_registry.py +0 -0
  49. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/clouds/cudo.py +0 -0
  50. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/clouds/do.py +0 -0
  51. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/clouds/fluidstack.py +0 -0
  52. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/clouds/gcp.py +0 -0
  53. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/clouds/ibm.py +0 -0
  54. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/clouds/kubernetes.py +0 -0
  55. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/clouds/lambda_cloud.py +0 -0
  56. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/clouds/paperspace.py +0 -0
  57. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/clouds/runpod.py +0 -0
  58. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/clouds/scp.py +0 -0
  59. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/clouds/service_catalog/__init__.py +0 -0
  60. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/clouds/service_catalog/aws_catalog.py +0 -0
  61. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/clouds/service_catalog/azure_catalog.py +0 -0
  62. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/clouds/service_catalog/common.py +0 -0
  63. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/clouds/service_catalog/config.py +0 -0
  64. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/clouds/service_catalog/constants.py +0 -0
  65. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/clouds/service_catalog/cudo_catalog.py +0 -0
  66. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/clouds/service_catalog/data_fetchers/__init__.py +0 -0
  67. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/clouds/service_catalog/data_fetchers/fetch_aws.py +0 -0
  68. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/clouds/service_catalog/data_fetchers/fetch_azure.py +0 -0
  69. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/clouds/service_catalog/data_fetchers/fetch_cudo.py +0 -0
  70. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/clouds/service_catalog/data_fetchers/fetch_fluidstack.py +0 -0
  71. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/clouds/service_catalog/data_fetchers/fetch_gcp.py +0 -0
  72. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/clouds/service_catalog/data_fetchers/fetch_lambda_cloud.py +0 -0
  73. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/clouds/service_catalog/data_fetchers/fetch_vsphere.py +0 -0
  74. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/clouds/service_catalog/do_catalog.py +0 -0
  75. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/clouds/service_catalog/fluidstack_catalog.py +0 -0
  76. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/clouds/service_catalog/gcp_catalog.py +0 -0
  77. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/clouds/service_catalog/ibm_catalog.py +0 -0
  78. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/clouds/service_catalog/kubernetes_catalog.py +0 -0
  79. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/clouds/service_catalog/lambda_catalog.py +0 -0
  80. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/clouds/service_catalog/oci_catalog.py +0 -0
  81. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/clouds/service_catalog/paperspace_catalog.py +0 -0
  82. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/clouds/service_catalog/runpod_catalog.py +0 -0
  83. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/clouds/service_catalog/scp_catalog.py +0 -0
  84. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/clouds/service_catalog/vsphere_catalog.py +0 -0
  85. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/clouds/utils/__init__.py +0 -0
  86. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/clouds/utils/aws_utils.py +0 -0
  87. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/clouds/utils/azure_utils.py +0 -0
  88. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/clouds/utils/gcp_utils.py +0 -0
  89. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/clouds/utils/oci_utils.py +0 -0
  90. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/clouds/utils/scp_utils.py +0 -0
  91. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/clouds/vsphere.py +0 -0
  92. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/core.py +0 -0
  93. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/dag.py +0 -0
  94. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/data/__init__.py +0 -0
  95. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/data/data_transfer.py +0 -0
  96. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/data/data_utils.py +0 -0
  97. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/data/mounting_utils.py +0 -0
  98. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/data/storage.py +0 -0
  99. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/data/storage_utils.py +0 -0
  100. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/exceptions.py +0 -0
  101. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/execution.py +0 -0
  102. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/global_user_state.py +0 -0
  103. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/jobs/__init__.py +0 -0
  104. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/jobs/constants.py +0 -0
  105. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/jobs/controller.py +0 -0
  106. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/jobs/core.py +0 -0
  107. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/jobs/dashboard/dashboard.py +0 -0
  108. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/jobs/dashboard/static/favicon.ico +0 -0
  109. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/jobs/dashboard/templates/index.html +0 -0
  110. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/jobs/recovery_strategy.py +0 -0
  111. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/jobs/state.py +0 -0
  112. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/jobs/utils.py +0 -0
  113. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/optimizer.py +0 -0
  114. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/provision/__init__.py +0 -0
  115. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/provision/aws/__init__.py +0 -0
  116. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/provision/aws/config.py +0 -0
  117. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/provision/aws/instance.py +0 -0
  118. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/provision/aws/utils.py +0 -0
  119. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/provision/azure/__init__.py +0 -0
  120. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/provision/azure/azure-config-template.json +0 -0
  121. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/provision/azure/config.py +0 -0
  122. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/provision/azure/instance.py +0 -0
  123. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/provision/common.py +0 -0
  124. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/provision/constants.py +0 -0
  125. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/provision/cudo/__init__.py +0 -0
  126. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/provision/cudo/config.py +0 -0
  127. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/provision/cudo/cudo_machine_type.py +0 -0
  128. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/provision/cudo/cudo_utils.py +0 -0
  129. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/provision/cudo/cudo_wrapper.py +0 -0
  130. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/provision/cudo/instance.py +0 -0
  131. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/provision/do/__init__.py +0 -0
  132. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/provision/do/config.py +0 -0
  133. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/provision/do/constants.py +0 -0
  134. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/provision/do/instance.py +0 -0
  135. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/provision/do/utils.py +0 -0
  136. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/provision/docker_utils.py +0 -0
  137. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/provision/fluidstack/__init__.py +0 -0
  138. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/provision/fluidstack/config.py +0 -0
  139. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/provision/fluidstack/fluidstack_utils.py +0 -0
  140. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/provision/fluidstack/instance.py +0 -0
  141. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/provision/gcp/__init__.py +0 -0
  142. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/provision/gcp/config.py +0 -0
  143. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/provision/gcp/constants.py +0 -0
  144. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/provision/gcp/instance.py +0 -0
  145. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/provision/gcp/instance_utils.py +0 -0
  146. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/provision/gcp/mig_utils.py +0 -0
  147. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/provision/instance_setup.py +0 -0
  148. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/provision/kubernetes/__init__.py +0 -0
  149. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/provision/kubernetes/config.py +0 -0
  150. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/provision/kubernetes/instance.py +0 -0
  151. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/provision/kubernetes/manifests/smarter-device-manager-configmap.yaml +0 -0
  152. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/provision/kubernetes/manifests/smarter-device-manager-daemonset.yaml +0 -0
  153. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/provision/kubernetes/network.py +0 -0
  154. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/provision/kubernetes/network_utils.py +0 -0
  155. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/provision/lambda_cloud/__init__.py +0 -0
  156. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/provision/lambda_cloud/config.py +0 -0
  157. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/provision/lambda_cloud/instance.py +0 -0
  158. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/provision/lambda_cloud/lambda_utils.py +0 -0
  159. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/provision/logging.py +0 -0
  160. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/provision/metadata_utils.py +0 -0
  161. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/provision/oci/__init__.py +0 -0
  162. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/provision/oci/config.py +0 -0
  163. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/provision/oci/instance.py +0 -0
  164. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/provision/paperspace/__init__.py +0 -0
  165. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/provision/paperspace/config.py +0 -0
  166. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/provision/paperspace/constants.py +0 -0
  167. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/provision/paperspace/instance.py +0 -0
  168. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/provision/paperspace/utils.py +0 -0
  169. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/provision/provisioner.py +0 -0
  170. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/provision/runpod/__init__.py +0 -0
  171. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/provision/runpod/api/__init__.py +0 -0
  172. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/provision/runpod/api/commands.py +0 -0
  173. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/provision/runpod/api/pods.py +0 -0
  174. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/provision/runpod/config.py +0 -0
  175. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/provision/runpod/instance.py +0 -0
  176. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/provision/runpod/utils.py +0 -0
  177. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/provision/vsphere/__init__.py +0 -0
  178. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/provision/vsphere/common/__init__.py +0 -0
  179. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/provision/vsphere/common/cls_api_client.py +0 -0
  180. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/provision/vsphere/common/cls_api_helper.py +0 -0
  181. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/provision/vsphere/common/custom_script.py +0 -0
  182. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/provision/vsphere/common/id_generator.py +0 -0
  183. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/provision/vsphere/common/metadata_utils.py +0 -0
  184. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/provision/vsphere/common/service_manager.py +0 -0
  185. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/provision/vsphere/common/service_manager_factory.py +0 -0
  186. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/provision/vsphere/common/ssl_helper.py +0 -0
  187. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/provision/vsphere/common/vapiconnect.py +0 -0
  188. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/provision/vsphere/common/vim_utils.py +0 -0
  189. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/provision/vsphere/config.py +0 -0
  190. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/provision/vsphere/instance.py +0 -0
  191. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/provision/vsphere/vsphere_utils.py +0 -0
  192. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/resources.py +0 -0
  193. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/serve/__init__.py +0 -0
  194. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/serve/autoscalers.py +0 -0
  195. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/serve/constants.py +0 -0
  196. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/serve/controller.py +0 -0
  197. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/serve/core.py +0 -0
  198. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/serve/load_balancer.py +0 -0
  199. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/serve/load_balancing_policies.py +0 -0
  200. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/serve/replica_managers.py +0 -0
  201. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/serve/serve_state.py +0 -0
  202. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/serve/serve_utils.py +0 -0
  203. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/serve/service.py +0 -0
  204. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/serve/service_spec.py +0 -0
  205. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/setup_files/MANIFEST.in +0 -0
  206. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/setup_files/dependencies.py +0 -0
  207. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/setup_files/setup.py +0 -0
  208. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/sky_logging.py +0 -0
  209. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/skylet/LICENSE +0 -0
  210. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/skylet/__init__.py +0 -0
  211. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/skylet/attempt_skylet.py +0 -0
  212. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/skylet/autostop_lib.py +0 -0
  213. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/skylet/configs.py +0 -0
  214. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/skylet/constants.py +0 -0
  215. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/skylet/events.py +0 -0
  216. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/skylet/job_lib.py +0 -0
  217. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/skylet/log_lib.py +0 -0
  218. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/skylet/log_lib.pyi +0 -0
  219. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/skylet/providers/__init__.py +0 -0
  220. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/skylet/providers/command_runner.py +0 -0
  221. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/skylet/providers/ibm/__init__.py +0 -0
  222. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/skylet/providers/ibm/node_provider.py +0 -0
  223. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/skylet/providers/ibm/utils.py +0 -0
  224. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/skylet/providers/ibm/vpc_provider.py +0 -0
  225. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/skylet/providers/scp/__init__.py +0 -0
  226. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/skylet/providers/scp/config.py +0 -0
  227. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/skylet/providers/scp/node_provider.py +0 -0
  228. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/skylet/ray_patches/__init__.py +0 -0
  229. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/skylet/ray_patches/autoscaler.py.patch +0 -0
  230. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/skylet/ray_patches/cli.py.patch +0 -0
  231. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/skylet/ray_patches/command_runner.py.patch +0 -0
  232. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/skylet/ray_patches/log_monitor.py.patch +0 -0
  233. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/skylet/ray_patches/resource_demand_scheduler.py.patch +0 -0
  234. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/skylet/ray_patches/updater.py.patch +0 -0
  235. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/skylet/ray_patches/worker.py.patch +0 -0
  236. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/skylet/skylet.py +0 -0
  237. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/skylet/subprocess_daemon.py +0 -0
  238. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/skypilot_config.py +0 -0
  239. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/status_lib.py +0 -0
  240. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/task.py +0 -0
  241. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/templates/aws-ray.yml.j2 +0 -0
  242. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/templates/azure-ray.yml.j2 +0 -0
  243. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/templates/cudo-ray.yml.j2 +0 -0
  244. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/templates/do-ray.yml.j2 +0 -0
  245. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/templates/fluidstack-ray.yml.j2 +0 -0
  246. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/templates/gcp-ray.yml.j2 +0 -0
  247. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/templates/ibm-ray.yml.j2 +0 -0
  248. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/templates/jobs-controller.yaml.j2 +0 -0
  249. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/templates/kubernetes-ingress.yml.j2 +0 -0
  250. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/templates/kubernetes-loadbalancer.yml.j2 +0 -0
  251. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/templates/kubernetes-port-forward-proxy-command.sh +0 -0
  252. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/templates/kubernetes-ray.yml.j2 +0 -0
  253. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/templates/kubernetes-ssh-jump.yml.j2 +0 -0
  254. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/templates/lambda-ray.yml.j2 +0 -0
  255. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/templates/local-ray.yml.j2 +0 -0
  256. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/templates/oci-ray.yml.j2 +0 -0
  257. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/templates/paperspace-ray.yml.j2 +0 -0
  258. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/templates/runpod-ray.yml.j2 +0 -0
  259. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/templates/scp-ray.yml.j2 +0 -0
  260. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/templates/sky-serve-controller.yaml.j2 +0 -0
  261. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/templates/vsphere-ray.yml.j2 +0 -0
  262. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/usage/__init__.py +0 -0
  263. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/usage/constants.py +0 -0
  264. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/usage/usage_lib.py +0 -0
  265. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/utils/__init__.py +0 -0
  266. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/utils/accelerator_registry.py +0 -0
  267. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/utils/admin_policy_utils.py +0 -0
  268. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/utils/cli_utils/__init__.py +0 -0
  269. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/utils/cli_utils/status_utils.py +0 -0
  270. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/utils/cluster_yaml_utils.py +0 -0
  271. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/utils/command_runner.py +0 -0
  272. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/utils/command_runner.pyi +0 -0
  273. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/utils/common_utils.py +0 -0
  274. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/utils/control_master_utils.py +0 -0
  275. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/utils/controller_utils.py +0 -0
  276. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/utils/dag_utils.py +0 -0
  277. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/utils/db_utils.py +0 -0
  278. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/utils/env_options.py +0 -0
  279. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/utils/kubernetes/__init__.py +0 -0
  280. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/utils/kubernetes/create_cluster.sh +0 -0
  281. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/utils/kubernetes/delete_cluster.sh +0 -0
  282. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/utils/kubernetes/deploy_remote_cluster.sh +0 -0
  283. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/utils/kubernetes/generate_kind_config.py +0 -0
  284. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/utils/kubernetes/generate_kubeconfig.sh +0 -0
  285. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/utils/kubernetes/gpu_labeler.py +0 -0
  286. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/utils/kubernetes/k8s_gpu_labeler_job.yaml +0 -0
  287. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/utils/kubernetes/k8s_gpu_labeler_setup.yaml +0 -0
  288. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/utils/kubernetes/rsync_helper.sh +0 -0
  289. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/utils/kubernetes/ssh_jump_lifecycle_manager.py +0 -0
  290. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/utils/kubernetes_enums.py +0 -0
  291. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/utils/log_utils.py +0 -0
  292. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/utils/resources_utils.py +0 -0
  293. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/utils/rich_utils.py +0 -0
  294. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/utils/schemas.py +0 -0
  295. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/utils/subprocess_utils.py +0 -0
  296. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/utils/timeline.py +0 -0
  297. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/utils/ux_utils.py +0 -0
  298. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/sky/utils/validator.py +0 -0
  299. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/skypilot_nightly.egg-info/SOURCES.txt +0 -0
  300. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/skypilot_nightly.egg-info/dependency_links.txt +0 -0
  301. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/skypilot_nightly.egg-info/entry_points.txt +0 -0
  302. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/skypilot_nightly.egg-info/requires.txt +0 -0
  303. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/skypilot_nightly.egg-info/top_level.txt +0 -0
  304. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/tests/test_api.py +0 -0
  305. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/tests/test_cli.py +0 -0
  306. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/tests/test_global_user_state.py +0 -0
  307. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/tests/test_jobs.py +0 -0
  308. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/tests/test_jobs_and_serve.py +0 -0
  309. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/tests/test_list_accelerators.py +0 -0
  310. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/tests/test_optimizer_dryruns.py +0 -0
  311. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/tests/test_optimizer_random_dag.py +0 -0
  312. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/tests/test_serve_autoscaler.py +0 -0
  313. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/tests/test_smoke.py +0 -0
  314. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/tests/test_storage.py +0 -0
  315. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/tests/test_wheels.py +0 -0
  316. {skypilot_nightly-1.0.0.dev20250103 → skypilot_nightly-1.0.0.dev20250105}/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.dev20250103
3
+ Version: 1.0.0.dev20250105
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 = '6a6d6671958c9fce56ffa314144daa1156a43342'
8
+ _SKYPILOT_COMMIT_SHA = '4ab8e1668053fef8ae87ba9c832073c444078e49'
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.dev20250103'
38
+ __version__ = '1.0.0.dev20250105'
39
39
  __root_dir__ = os.path.dirname(os.path.abspath(__file__))
40
40
 
41
41
 
@@ -926,6 +926,13 @@ def write_cluster_config(
926
926
  tmp_yaml_path,
927
927
  cluster_config_overrides=to_provision.cluster_config_overrides)
928
928
  kubernetes_utils.combine_metadata_fields(tmp_yaml_path)
929
+ yaml_obj = common_utils.read_yaml(tmp_yaml_path)
930
+ pod_config = yaml_obj['available_node_types']['ray_head_default'][
931
+ 'node_config']
932
+ valid, message = kubernetes_utils.check_pod_config(pod_config)
933
+ if not valid:
934
+ raise exceptions.InvalidCloudConfigs(
935
+ f'Invalid pod_config. Details: {message}')
929
936
 
930
937
  if dryrun:
931
938
  # If dryrun, return the unfinished tmp yaml path.
@@ -153,7 +153,10 @@ def build_sky_wheel() -> Tuple[pathlib.Path, str]:
153
153
  if not path.exists():
154
154
  return -1.
155
155
  try:
156
- return max(os.path.getmtime(root) for root, _, _ in os.walk(path))
156
+ return max(
157
+ os.path.getmtime(os.path.join(root, f))
158
+ for root, dirs, files in os.walk(path)
159
+ for f in (*dirs, *files))
157
160
  except ValueError:
158
161
  return -1.
159
162
 
@@ -2,6 +2,8 @@
2
2
  import enum
3
3
  import fnmatch
4
4
  import functools
5
+ import hashlib
6
+ import json
5
7
  import os
6
8
  import re
7
9
  import subprocess
@@ -16,6 +18,7 @@ from sky import sky_logging
16
18
  from sky import skypilot_config
17
19
  from sky.adaptors import aws
18
20
  from sky.clouds import service_catalog
21
+ from sky.clouds.service_catalog import common as catalog_common
19
22
  from sky.clouds.utils import aws_utils
20
23
  from sky.skylet import constants
21
24
  from sky.utils import common_utils
@@ -624,14 +627,10 @@ class AWS(clouds.Cloud):
624
627
 
625
628
  @classmethod
626
629
  def _current_identity_type(cls) -> Optional[AWSIdentityType]:
627
- proc = subprocess.run('aws configure list',
628
- shell=True,
629
- check=False,
630
- stdout=subprocess.PIPE,
631
- stderr=subprocess.PIPE)
632
- if proc.returncode != 0:
630
+ stdout = cls._aws_configure_list()
631
+ if stdout is None:
633
632
  return None
634
- stdout = proc.stdout.decode()
633
+ output = stdout.decode()
635
634
 
636
635
  # We determine the identity type by looking at the output of
637
636
  # `aws configure list`. The output looks like:
@@ -646,10 +645,10 @@ class AWS(clouds.Cloud):
646
645
 
647
646
  def _is_access_key_of_type(type_str: str) -> bool:
648
647
  # The dot (.) does not match line separators.
649
- results = re.findall(fr'access_key.*{type_str}', stdout)
648
+ results = re.findall(fr'access_key.*{type_str}', output)
650
649
  if len(results) > 1:
651
650
  raise RuntimeError(
652
- f'Unexpected `aws configure list` output:\n{stdout}')
651
+ f'Unexpected `aws configure list` output:\n{output}')
653
652
  return len(results) == 1
654
653
 
655
654
  if _is_access_key_of_type(AWSIdentityType.SSO.value):
@@ -664,37 +663,20 @@ class AWS(clouds.Cloud):
664
663
  return AWSIdentityType.SHARED_CREDENTIALS_FILE
665
664
 
666
665
  @classmethod
667
- @functools.lru_cache(maxsize=1) # Cache since getting identity is slow.
668
- def get_user_identities(cls) -> Optional[List[List[str]]]:
669
- """Returns a [UserId, Account] list that uniquely identifies the user.
670
-
671
- These fields come from `aws sts get-caller-identity`. We permit the same
672
- actual user to:
673
-
674
- - switch between different root accounts (after which both elements
675
- of the list will be different) and have their clusters owned by
676
- each account be protected; or
677
-
678
- - within the same root account, switch between different IAM
679
- users, and treat [user_id=1234, account=A] and
680
- [user_id=4567, account=A] to be the *same*. Namely, switching
681
- between these IAM roles within the same root account will cause
682
- the first element of the returned list to differ, and will allow
683
- the same actual user to continue to interact with their clusters.
684
- Note: this is not 100% safe, since the IAM users can have very
685
- specific permissions, that disallow them to access the clusters
686
- but it is a reasonable compromise as that could be rare.
687
-
688
- Returns:
689
- A list of strings that uniquely identifies the user on this cloud.
690
- For identity check, we will fallback through the list of strings
691
- until we find a match, and print a warning if we fail for the
692
- first string.
666
+ @functools.lru_cache(maxsize=1)
667
+ def _aws_configure_list(cls) -> Optional[bytes]:
668
+ proc = subprocess.run('aws configure list',
669
+ shell=True,
670
+ check=False,
671
+ stdout=subprocess.PIPE,
672
+ stderr=subprocess.PIPE)
673
+ if proc.returncode != 0:
674
+ return None
675
+ return proc.stdout
693
676
 
694
- Raises:
695
- exceptions.CloudUserIdentityError: if the user identity cannot be
696
- retrieved.
697
- """
677
+ @classmethod
678
+ @functools.lru_cache(maxsize=1) # Cache since getting identity is slow.
679
+ def _sts_get_caller_identity(cls) -> Optional[List[List[str]]]:
698
680
  try:
699
681
  sts = aws.client('sts')
700
682
  # The caller identity contains 3 fields: UserId, Account, Arn.
@@ -773,6 +755,72 @@ class AWS(clouds.Cloud):
773
755
  # automatic switching for AWS. Currently we only support one identity.
774
756
  return [user_ids]
775
757
 
758
+ @classmethod
759
+ @functools.lru_cache(maxsize=1) # Cache since getting identity is slow.
760
+ def get_user_identities(cls) -> Optional[List[List[str]]]:
761
+ """Returns a [UserId, Account] list that uniquely identifies the user.
762
+
763
+ These fields come from `aws sts get-caller-identity` and are cached
764
+ locally by `aws configure list` output. The identities are assumed to
765
+ be stable for the duration of the `sky` process. Modifying the
766
+ credentials while the `sky` process is running will not affect the
767
+ identity returned by this function.
768
+
769
+ We permit the same actual user to:
770
+
771
+ - switch between different root accounts (after which both elements
772
+ of the list will be different) and have their clusters owned by
773
+ each account be protected; or
774
+
775
+ - within the same root account, switch between different IAM
776
+ users, and treat [user_id=1234, account=A] and
777
+ [user_id=4567, account=A] to be the *same*. Namely, switching
778
+ between these IAM roles within the same root account will cause
779
+ the first element of the returned list to differ, and will allow
780
+ the same actual user to continue to interact with their clusters.
781
+ Note: this is not 100% safe, since the IAM users can have very
782
+ specific permissions, that disallow them to access the clusters
783
+ but it is a reasonable compromise as that could be rare.
784
+
785
+ Returns:
786
+ A list of strings that uniquely identifies the user on this cloud.
787
+ For identity check, we will fallback through the list of strings
788
+ until we find a match, and print a warning if we fail for the
789
+ first string.
790
+
791
+ Raises:
792
+ exceptions.CloudUserIdentityError: if the user identity cannot be
793
+ retrieved.
794
+ """
795
+ stdout = cls._aws_configure_list()
796
+ if stdout is None:
797
+ # `aws configure list` is not available, possible reasons:
798
+ # - awscli is not installed but credentials are valid, e.g. run from
799
+ # an EC2 instance with IAM role
800
+ # - aws credentials are not set, proceed anyway to get unified error
801
+ # message for users
802
+ return cls._sts_get_caller_identity()
803
+ config_hash = hashlib.md5(stdout).hexdigest()[:8]
804
+ # Getting aws identity cost ~1s, so we cache the result with the output of
805
+ # `aws configure list` as cache key. Different `aws configure list` output
806
+ # can have same aws identity, our assumption is the output would be stable
807
+ # in real world, so the number of cache files would be limited.
808
+ # TODO(aylei): consider using a more stable cache key and evalute eviction.
809
+ cache_path = catalog_common.get_catalog_path(
810
+ f'aws/.cache/user-identity-{config_hash}.txt')
811
+ if os.path.exists(cache_path):
812
+ try:
813
+ with open(cache_path, 'r', encoding='utf-8') as f:
814
+ return json.loads(f.read())
815
+ except json.JSONDecodeError:
816
+ # cache is invalid, ignore it and fetch identity again
817
+ pass
818
+
819
+ result = cls._sts_get_caller_identity()
820
+ with open(cache_path, 'w', encoding='utf-8') as f:
821
+ f.write(json.dumps(result))
822
+ return result
823
+
776
824
  @classmethod
777
825
  def get_active_user_identity_str(cls) -> Optional[str]:
778
826
  user_identity = cls.get_active_user_identity()
@@ -232,6 +232,14 @@ class OCI(clouds.Cloud):
232
232
  listing_id = None
233
233
  res_ver = None
234
234
 
235
+ os_type = None
236
+ if ':' in image_id:
237
+ # OS type provided in the --image-id. This is the case where
238
+ # custom image's ocid provided in the --image-id parameter.
239
+ # - ocid1.image...aaa:oraclelinux (os type is oraclelinux)
240
+ # - ocid1.image...aaa (OS not provided)
241
+ image_id, os_type = image_id.replace(' ', '').split(':')
242
+
235
243
  cpus = resources.cpus
236
244
  instance_type_arr = resources.instance_type.split(
237
245
  oci_utils.oci_config.INSTANCE_TYPE_RES_SPERATOR)
@@ -297,15 +305,18 @@ class OCI(clouds.Cloud):
297
305
  cpus=None if cpus is None else float(cpus),
298
306
  disk_tier=resources.disk_tier)
299
307
 
300
- image_str = self._get_image_str(image_id=resources.image_id,
301
- instance_type=resources.instance_type,
302
- region=region.name)
303
-
304
- # pylint: disable=import-outside-toplevel
305
- from sky.clouds.service_catalog import oci_catalog
306
- os_type = oci_catalog.get_image_os_from_tag(tag=image_str,
307
- region=region.name)
308
- logger.debug(f'OS type for the image {image_str} is {os_type}')
308
+ if os_type is None:
309
+ # OS type is not determined yet. So try to get it from vms.csv
310
+ image_str = self._get_image_str(
311
+ image_id=resources.image_id,
312
+ instance_type=resources.instance_type,
313
+ region=region.name)
314
+
315
+ # pylint: disable=import-outside-toplevel
316
+ from sky.clouds.service_catalog import oci_catalog
317
+ os_type = oci_catalog.get_image_os_from_tag(tag=image_str,
318
+ region=region.name)
319
+ logger.debug(f'OS type for the image {image_id} is {os_type}')
309
320
 
310
321
  return {
311
322
  'instance_type': instance_type,
@@ -893,6 +893,52 @@ def check_credentials(context: Optional[str],
893
893
  return True, None
894
894
 
895
895
 
896
+ def check_pod_config(pod_config: dict) \
897
+ -> Tuple[bool, Optional[str]]:
898
+ """Check if the pod_config is a valid pod config
899
+
900
+ Using deserialize api to check the pod_config is valid or not.
901
+
902
+ Returns:
903
+ bool: True if pod_config is valid.
904
+ str: Error message about why the pod_config is invalid, None otherwise.
905
+ """
906
+ errors = []
907
+ # This api_client won't be used to send any requests, so there is no need to
908
+ # load kubeconfig
909
+ api_client = kubernetes.kubernetes.client.ApiClient()
910
+
911
+ # Used for kubernetes api_client deserialize function, the function will use
912
+ # data attr, the detail ref:
913
+ # https://github.com/kubernetes-client/python/blob/master/kubernetes/client/api_client.py#L244
914
+ class InnerResponse():
915
+
916
+ def __init__(self, data: dict):
917
+ self.data = json.dumps(data)
918
+
919
+ try:
920
+ # Validate metadata if present
921
+ if 'metadata' in pod_config:
922
+ try:
923
+ value = InnerResponse(pod_config['metadata'])
924
+ api_client.deserialize(
925
+ value, kubernetes.kubernetes.client.V1ObjectMeta)
926
+ except ValueError as e:
927
+ errors.append(f'Invalid metadata: {str(e)}')
928
+ # Validate spec if present
929
+ if 'spec' in pod_config:
930
+ try:
931
+ value = InnerResponse(pod_config['spec'])
932
+ api_client.deserialize(value,
933
+ kubernetes.kubernetes.client.V1PodSpec)
934
+ except ValueError as e:
935
+ errors.append(f'Invalid spec: {str(e)}')
936
+ return len(errors) == 0, '.'.join(errors)
937
+ except Exception as e: # pylint: disable=broad-except
938
+ errors.append(f'Validation error: {str(e)}')
939
+ return False, '.'.join(errors)
940
+
941
+
896
942
  def is_kubeconfig_exec_auth(
897
943
  context: Optional[str] = None) -> Tuple[bool, Optional[str]]:
898
944
  """Checks if the kubeconfig file uses exec-based authentication
@@ -506,8 +506,11 @@ class QueryHelper:
506
506
  raise exceptions.ResourcesUnavailableError(
507
507
  'The VCN is not available')
508
508
 
509
- # Get the primary vnic.
510
- assert len(list_vcns_resp.data) > 0
509
+ # Get the primary vnic. The vnic might be an empty list for the
510
+ # corner case when the cluster was exited during provision.
511
+ if not list_vcns_resp.data:
512
+ return None
513
+
511
514
  vcn = list_vcns_resp.data[0]
512
515
 
513
516
  list_nsg_resp = net_client.list_network_security_groups(
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: skypilot-nightly
3
- Version: 1.0.0.dev20250103
3
+ Version: 1.0.0.dev20250105
4
4
  Summary: SkyPilot: An intercloud broker for the clouds
5
5
  Author: SkyPilot Team
6
6
  License: Apache 2.0
@@ -7,6 +7,7 @@ import pytest
7
7
 
8
8
  import sky
9
9
  from sky import skypilot_config
10
+ import sky.exceptions
10
11
  from sky.skylet import constants
11
12
  from sky.utils import common_utils
12
13
  from sky.utils import kubernetes_enums
@@ -99,6 +100,29 @@ def _create_task_yaml_file(task_file_path: pathlib.Path) -> None:
99
100
  """))
100
101
 
101
102
 
103
+ def _create_invalid_config_yaml_file(task_file_path: pathlib.Path) -> None:
104
+ task_file_path.write_text(
105
+ textwrap.dedent("""\
106
+ experimental:
107
+ config_overrides:
108
+ kubernetes:
109
+ pod_config:
110
+ metadata:
111
+ labels:
112
+ test-key: test-value
113
+ annotations:
114
+ abc: def
115
+ spec:
116
+ containers:
117
+ - name:
118
+ imagePullSecrets:
119
+ - name: my-secret-2
120
+
121
+ setup: echo 'Setting up...'
122
+ run: echo 'Running...'
123
+ """))
124
+
125
+
102
126
  def test_nested_config(monkeypatch) -> None:
103
127
  """Test that the nested config works."""
104
128
  config = skypilot_config.Config()
@@ -335,6 +359,28 @@ def test_k8s_config_with_override(monkeypatch, tmp_path,
335
359
  assert cluster_pod_config['spec']['runtimeClassName'] == 'nvidia'
336
360
 
337
361
 
362
+ def test_k8s_config_with_invalid_config(monkeypatch, tmp_path,
363
+ enable_all_clouds) -> None:
364
+ config_path = tmp_path / 'config.yaml'
365
+ _create_config_file(config_path)
366
+ monkeypatch.setattr(skypilot_config, 'CONFIG_PATH', config_path)
367
+
368
+ _reload_config()
369
+ task_path = tmp_path / 'task.yaml'
370
+ _create_invalid_config_yaml_file(task_path)
371
+ task = sky.Task.from_yaml(task_path)
372
+
373
+ # Test Kubernetes pod_config invalid
374
+ cluster_name = 'test_k8s_config_with_invalid_config'
375
+ task.set_resources_override({'cloud': sky.Kubernetes()})
376
+ exception_occurred = False
377
+ try:
378
+ sky.launch(task, cluster_name=cluster_name, dryrun=True)
379
+ except sky.exceptions.ResourcesUnavailableError:
380
+ exception_occurred = True
381
+ assert exception_occurred
382
+
383
+
338
384
  def test_gcp_config_with_override(monkeypatch, tmp_path,
339
385
  enable_all_clouds) -> None:
340
386
  config_path = tmp_path / 'config.yaml'