skypilot-nightly 1.0.0.dev20250109__tar.gz → 1.0.0.dev20250111__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 (317) hide show
  1. {skypilot_nightly-1.0.0.dev20250109/skypilot_nightly.egg-info → skypilot_nightly-1.0.0.dev20250111}/PKG-INFO +1 -1
  2. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/__init__.py +2 -2
  3. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/backends/cloud_vm_ray_backend.py +146 -0
  4. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/cli.py +19 -7
  5. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/clouds/aws.py +17 -12
  6. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/jobs/__init__.py +2 -0
  7. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/jobs/core.py +46 -0
  8. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/jobs/state.py +27 -0
  9. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/jobs/utils.py +9 -0
  10. skypilot_nightly-1.0.0.dev20250111/sky/templates/jobs-controller.yaml.j2 +73 -0
  11. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/utils/controller_utils.py +3 -0
  12. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111/skypilot_nightly.egg-info}/PKG-INFO +1 -1
  13. skypilot_nightly-1.0.0.dev20250109/sky/templates/jobs-controller.yaml.j2 +0 -43
  14. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/LICENSE +0 -0
  15. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/MANIFEST.in +0 -0
  16. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/README.md +0 -0
  17. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/pyproject.toml +0 -0
  18. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/setup.cfg +0 -0
  19. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/setup.py +0 -0
  20. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/adaptors/__init__.py +0 -0
  21. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/adaptors/aws.py +0 -0
  22. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/adaptors/azure.py +0 -0
  23. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/adaptors/cloudflare.py +0 -0
  24. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/adaptors/common.py +0 -0
  25. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/adaptors/cudo.py +0 -0
  26. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/adaptors/do.py +0 -0
  27. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/adaptors/docker.py +0 -0
  28. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/adaptors/gcp.py +0 -0
  29. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/adaptors/ibm.py +0 -0
  30. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/adaptors/kubernetes.py +0 -0
  31. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/adaptors/oci.py +0 -0
  32. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/adaptors/runpod.py +0 -0
  33. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/adaptors/vsphere.py +0 -0
  34. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/admin_policy.py +0 -0
  35. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/authentication.py +0 -0
  36. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/backends/__init__.py +0 -0
  37. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/backends/backend.py +0 -0
  38. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/backends/backend_utils.py +0 -0
  39. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/backends/docker_utils.py +0 -0
  40. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/backends/local_docker_backend.py +0 -0
  41. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/backends/monkey_patches/monkey_patch_ray_up.py +0 -0
  42. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/backends/wheel_utils.py +0 -0
  43. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/benchmark/__init__.py +0 -0
  44. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/benchmark/benchmark_state.py +0 -0
  45. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/benchmark/benchmark_utils.py +0 -0
  46. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/check.py +0 -0
  47. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/cloud_stores.py +0 -0
  48. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/clouds/__init__.py +0 -0
  49. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/clouds/azure.py +0 -0
  50. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/clouds/cloud.py +0 -0
  51. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/clouds/cloud_registry.py +0 -0
  52. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/clouds/cudo.py +0 -0
  53. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/clouds/do.py +0 -0
  54. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/clouds/fluidstack.py +0 -0
  55. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/clouds/gcp.py +0 -0
  56. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/clouds/ibm.py +0 -0
  57. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/clouds/kubernetes.py +0 -0
  58. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/clouds/lambda_cloud.py +0 -0
  59. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/clouds/oci.py +0 -0
  60. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/clouds/paperspace.py +0 -0
  61. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/clouds/runpod.py +0 -0
  62. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/clouds/scp.py +0 -0
  63. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/clouds/service_catalog/__init__.py +0 -0
  64. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/clouds/service_catalog/aws_catalog.py +0 -0
  65. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/clouds/service_catalog/azure_catalog.py +0 -0
  66. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/clouds/service_catalog/common.py +0 -0
  67. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/clouds/service_catalog/config.py +0 -0
  68. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/clouds/service_catalog/constants.py +0 -0
  69. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/clouds/service_catalog/cudo_catalog.py +0 -0
  70. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/clouds/service_catalog/data_fetchers/__init__.py +0 -0
  71. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/clouds/service_catalog/data_fetchers/fetch_aws.py +0 -0
  72. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/clouds/service_catalog/data_fetchers/fetch_azure.py +0 -0
  73. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/clouds/service_catalog/data_fetchers/fetch_cudo.py +0 -0
  74. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/clouds/service_catalog/data_fetchers/fetch_fluidstack.py +0 -0
  75. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/clouds/service_catalog/data_fetchers/fetch_gcp.py +0 -0
  76. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/clouds/service_catalog/data_fetchers/fetch_lambda_cloud.py +0 -0
  77. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/clouds/service_catalog/data_fetchers/fetch_vsphere.py +0 -0
  78. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/clouds/service_catalog/do_catalog.py +0 -0
  79. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/clouds/service_catalog/fluidstack_catalog.py +0 -0
  80. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/clouds/service_catalog/gcp_catalog.py +0 -0
  81. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/clouds/service_catalog/ibm_catalog.py +0 -0
  82. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/clouds/service_catalog/kubernetes_catalog.py +0 -0
  83. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/clouds/service_catalog/lambda_catalog.py +0 -0
  84. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/clouds/service_catalog/oci_catalog.py +0 -0
  85. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/clouds/service_catalog/paperspace_catalog.py +0 -0
  86. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/clouds/service_catalog/runpod_catalog.py +0 -0
  87. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/clouds/service_catalog/scp_catalog.py +0 -0
  88. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/clouds/service_catalog/vsphere_catalog.py +0 -0
  89. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/clouds/utils/__init__.py +0 -0
  90. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/clouds/utils/aws_utils.py +0 -0
  91. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/clouds/utils/azure_utils.py +0 -0
  92. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/clouds/utils/gcp_utils.py +0 -0
  93. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/clouds/utils/oci_utils.py +0 -0
  94. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/clouds/utils/scp_utils.py +0 -0
  95. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/clouds/vsphere.py +0 -0
  96. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/core.py +0 -0
  97. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/dag.py +0 -0
  98. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/data/__init__.py +0 -0
  99. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/data/data_transfer.py +0 -0
  100. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/data/data_utils.py +0 -0
  101. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/data/mounting_utils.py +0 -0
  102. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/data/storage.py +0 -0
  103. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/data/storage_utils.py +0 -0
  104. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/exceptions.py +0 -0
  105. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/execution.py +0 -0
  106. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/global_user_state.py +0 -0
  107. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/jobs/constants.py +0 -0
  108. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/jobs/controller.py +0 -0
  109. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/jobs/dashboard/dashboard.py +0 -0
  110. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/jobs/dashboard/static/favicon.ico +0 -0
  111. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/jobs/dashboard/templates/index.html +0 -0
  112. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/jobs/recovery_strategy.py +0 -0
  113. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/optimizer.py +0 -0
  114. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/provision/__init__.py +0 -0
  115. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/provision/aws/__init__.py +0 -0
  116. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/provision/aws/config.py +0 -0
  117. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/provision/aws/instance.py +0 -0
  118. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/provision/aws/utils.py +0 -0
  119. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/provision/azure/__init__.py +0 -0
  120. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/provision/azure/azure-config-template.json +0 -0
  121. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/provision/azure/config.py +0 -0
  122. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/provision/azure/instance.py +0 -0
  123. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/provision/common.py +0 -0
  124. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/provision/constants.py +0 -0
  125. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/provision/cudo/__init__.py +0 -0
  126. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/provision/cudo/config.py +0 -0
  127. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/provision/cudo/cudo_machine_type.py +0 -0
  128. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/provision/cudo/cudo_utils.py +0 -0
  129. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/provision/cudo/cudo_wrapper.py +0 -0
  130. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/provision/cudo/instance.py +0 -0
  131. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/provision/do/__init__.py +0 -0
  132. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/provision/do/config.py +0 -0
  133. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/provision/do/constants.py +0 -0
  134. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/provision/do/instance.py +0 -0
  135. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/provision/do/utils.py +0 -0
  136. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/provision/docker_utils.py +0 -0
  137. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/provision/fluidstack/__init__.py +0 -0
  138. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/provision/fluidstack/config.py +0 -0
  139. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/provision/fluidstack/fluidstack_utils.py +0 -0
  140. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/provision/fluidstack/instance.py +0 -0
  141. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/provision/gcp/__init__.py +0 -0
  142. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/provision/gcp/config.py +0 -0
  143. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/provision/gcp/constants.py +0 -0
  144. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/provision/gcp/instance.py +0 -0
  145. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/provision/gcp/instance_utils.py +0 -0
  146. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/provision/gcp/mig_utils.py +0 -0
  147. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/provision/instance_setup.py +0 -0
  148. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/provision/kubernetes/__init__.py +0 -0
  149. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/provision/kubernetes/config.py +0 -0
  150. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/provision/kubernetes/instance.py +0 -0
  151. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/provision/kubernetes/manifests/smarter-device-manager-configmap.yaml +0 -0
  152. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/provision/kubernetes/manifests/smarter-device-manager-daemonset.yaml +0 -0
  153. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/provision/kubernetes/network.py +0 -0
  154. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/provision/kubernetes/network_utils.py +0 -0
  155. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/provision/kubernetes/utils.py +0 -0
  156. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/provision/lambda_cloud/__init__.py +0 -0
  157. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/provision/lambda_cloud/config.py +0 -0
  158. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/provision/lambda_cloud/instance.py +0 -0
  159. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/provision/lambda_cloud/lambda_utils.py +0 -0
  160. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/provision/logging.py +0 -0
  161. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/provision/metadata_utils.py +0 -0
  162. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/provision/oci/__init__.py +0 -0
  163. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/provision/oci/config.py +0 -0
  164. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/provision/oci/instance.py +0 -0
  165. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/provision/oci/query_utils.py +0 -0
  166. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/provision/paperspace/__init__.py +0 -0
  167. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/provision/paperspace/config.py +0 -0
  168. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/provision/paperspace/constants.py +0 -0
  169. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/provision/paperspace/instance.py +0 -0
  170. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/provision/paperspace/utils.py +0 -0
  171. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/provision/provisioner.py +0 -0
  172. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/provision/runpod/__init__.py +0 -0
  173. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/provision/runpod/api/__init__.py +0 -0
  174. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/provision/runpod/api/commands.py +0 -0
  175. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/provision/runpod/api/pods.py +0 -0
  176. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/provision/runpod/config.py +0 -0
  177. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/provision/runpod/instance.py +0 -0
  178. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/provision/runpod/utils.py +0 -0
  179. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/provision/vsphere/__init__.py +0 -0
  180. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/provision/vsphere/common/__init__.py +0 -0
  181. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/provision/vsphere/common/cls_api_client.py +0 -0
  182. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/provision/vsphere/common/cls_api_helper.py +0 -0
  183. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/provision/vsphere/common/custom_script.py +0 -0
  184. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/provision/vsphere/common/id_generator.py +0 -0
  185. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/provision/vsphere/common/metadata_utils.py +0 -0
  186. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/provision/vsphere/common/service_manager.py +0 -0
  187. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/provision/vsphere/common/service_manager_factory.py +0 -0
  188. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/provision/vsphere/common/ssl_helper.py +0 -0
  189. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/provision/vsphere/common/vapiconnect.py +0 -0
  190. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/provision/vsphere/common/vim_utils.py +0 -0
  191. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/provision/vsphere/config.py +0 -0
  192. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/provision/vsphere/instance.py +0 -0
  193. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/provision/vsphere/vsphere_utils.py +0 -0
  194. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/resources.py +0 -0
  195. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/serve/__init__.py +0 -0
  196. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/serve/autoscalers.py +0 -0
  197. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/serve/constants.py +0 -0
  198. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/serve/controller.py +0 -0
  199. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/serve/core.py +0 -0
  200. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/serve/load_balancer.py +0 -0
  201. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/serve/load_balancing_policies.py +0 -0
  202. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/serve/replica_managers.py +0 -0
  203. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/serve/serve_state.py +0 -0
  204. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/serve/serve_utils.py +0 -0
  205. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/serve/service.py +0 -0
  206. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/serve/service_spec.py +0 -0
  207. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/setup_files/MANIFEST.in +0 -0
  208. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/setup_files/dependencies.py +0 -0
  209. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/setup_files/setup.py +0 -0
  210. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/sky_logging.py +0 -0
  211. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/skylet/LICENSE +0 -0
  212. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/skylet/__init__.py +0 -0
  213. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/skylet/attempt_skylet.py +0 -0
  214. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/skylet/autostop_lib.py +0 -0
  215. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/skylet/configs.py +0 -0
  216. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/skylet/constants.py +0 -0
  217. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/skylet/events.py +0 -0
  218. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/skylet/job_lib.py +0 -0
  219. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/skylet/log_lib.py +0 -0
  220. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/skylet/log_lib.pyi +0 -0
  221. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/skylet/providers/__init__.py +0 -0
  222. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/skylet/providers/command_runner.py +0 -0
  223. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/skylet/providers/ibm/__init__.py +0 -0
  224. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/skylet/providers/ibm/node_provider.py +0 -0
  225. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/skylet/providers/ibm/utils.py +0 -0
  226. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/skylet/providers/ibm/vpc_provider.py +0 -0
  227. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/skylet/providers/scp/__init__.py +0 -0
  228. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/skylet/providers/scp/config.py +0 -0
  229. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/skylet/providers/scp/node_provider.py +0 -0
  230. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/skylet/ray_patches/__init__.py +0 -0
  231. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/skylet/ray_patches/autoscaler.py.patch +0 -0
  232. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/skylet/ray_patches/cli.py.patch +0 -0
  233. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/skylet/ray_patches/command_runner.py.patch +0 -0
  234. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/skylet/ray_patches/log_monitor.py.patch +0 -0
  235. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/skylet/ray_patches/resource_demand_scheduler.py.patch +0 -0
  236. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/skylet/ray_patches/updater.py.patch +0 -0
  237. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/skylet/ray_patches/worker.py.patch +0 -0
  238. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/skylet/skylet.py +0 -0
  239. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/skylet/subprocess_daemon.py +0 -0
  240. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/skypilot_config.py +0 -0
  241. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/status_lib.py +0 -0
  242. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/task.py +0 -0
  243. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/templates/aws-ray.yml.j2 +0 -0
  244. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/templates/azure-ray.yml.j2 +0 -0
  245. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/templates/cudo-ray.yml.j2 +0 -0
  246. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/templates/do-ray.yml.j2 +0 -0
  247. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/templates/fluidstack-ray.yml.j2 +0 -0
  248. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/templates/gcp-ray.yml.j2 +0 -0
  249. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/templates/ibm-ray.yml.j2 +0 -0
  250. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/templates/kubernetes-ingress.yml.j2 +0 -0
  251. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/templates/kubernetes-loadbalancer.yml.j2 +0 -0
  252. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/templates/kubernetes-port-forward-proxy-command.sh +0 -0
  253. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/templates/kubernetes-ray.yml.j2 +0 -0
  254. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/templates/kubernetes-ssh-jump.yml.j2 +0 -0
  255. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/templates/lambda-ray.yml.j2 +0 -0
  256. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/templates/local-ray.yml.j2 +0 -0
  257. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/templates/oci-ray.yml.j2 +0 -0
  258. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/templates/paperspace-ray.yml.j2 +0 -0
  259. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/templates/runpod-ray.yml.j2 +0 -0
  260. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/templates/scp-ray.yml.j2 +0 -0
  261. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/templates/sky-serve-controller.yaml.j2 +0 -0
  262. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/templates/vsphere-ray.yml.j2 +0 -0
  263. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/usage/__init__.py +0 -0
  264. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/usage/constants.py +0 -0
  265. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/usage/usage_lib.py +0 -0
  266. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/utils/__init__.py +0 -0
  267. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/utils/accelerator_registry.py +0 -0
  268. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/utils/admin_policy_utils.py +0 -0
  269. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/utils/cli_utils/__init__.py +0 -0
  270. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/utils/cli_utils/status_utils.py +0 -0
  271. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/utils/cluster_yaml_utils.py +0 -0
  272. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/utils/command_runner.py +0 -0
  273. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/utils/command_runner.pyi +0 -0
  274. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/utils/common_utils.py +0 -0
  275. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/utils/control_master_utils.py +0 -0
  276. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/utils/dag_utils.py +0 -0
  277. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/utils/db_utils.py +0 -0
  278. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/utils/env_options.py +0 -0
  279. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/utils/kubernetes/__init__.py +0 -0
  280. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/utils/kubernetes/create_cluster.sh +0 -0
  281. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/utils/kubernetes/delete_cluster.sh +0 -0
  282. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/utils/kubernetes/deploy_remote_cluster.sh +0 -0
  283. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/utils/kubernetes/generate_kind_config.py +0 -0
  284. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/utils/kubernetes/generate_kubeconfig.sh +0 -0
  285. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/utils/kubernetes/gpu_labeler.py +0 -0
  286. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/utils/kubernetes/k8s_gpu_labeler_job.yaml +0 -0
  287. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/utils/kubernetes/k8s_gpu_labeler_setup.yaml +0 -0
  288. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/utils/kubernetes/rsync_helper.sh +0 -0
  289. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/utils/kubernetes/ssh_jump_lifecycle_manager.py +0 -0
  290. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/utils/kubernetes_enums.py +0 -0
  291. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/utils/log_utils.py +0 -0
  292. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/utils/resources_utils.py +0 -0
  293. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/utils/rich_utils.py +0 -0
  294. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/utils/schemas.py +0 -0
  295. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/utils/subprocess_utils.py +0 -0
  296. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/utils/timeline.py +0 -0
  297. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/utils/ux_utils.py +0 -0
  298. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/sky/utils/validator.py +0 -0
  299. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/skypilot_nightly.egg-info/SOURCES.txt +0 -0
  300. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/skypilot_nightly.egg-info/dependency_links.txt +0 -0
  301. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/skypilot_nightly.egg-info/entry_points.txt +0 -0
  302. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/skypilot_nightly.egg-info/requires.txt +0 -0
  303. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/skypilot_nightly.egg-info/top_level.txt +0 -0
  304. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/tests/test_api.py +0 -0
  305. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/tests/test_cli.py +0 -0
  306. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/tests/test_config.py +0 -0
  307. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/tests/test_global_user_state.py +0 -0
  308. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/tests/test_jobs.py +0 -0
  309. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/tests/test_jobs_and_serve.py +0 -0
  310. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/tests/test_list_accelerators.py +0 -0
  311. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/tests/test_optimizer_dryruns.py +0 -0
  312. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/tests/test_optimizer_random_dag.py +0 -0
  313. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/tests/test_serve_autoscaler.py +0 -0
  314. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/tests/test_smoke.py +0 -0
  315. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/tests/test_storage.py +0 -0
  316. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/tests/test_wheels.py +0 -0
  317. {skypilot_nightly-1.0.0.dev20250109 → skypilot_nightly-1.0.0.dev20250111}/tests/test_yaml_parser.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: skypilot-nightly
3
- Version: 1.0.0.dev20250109
3
+ Version: 1.0.0.dev20250111
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 = '544c34e2e7eb995530c05fe10148aad87a4d0501'
8
+ _SKYPILOT_COMMIT_SHA = 'fd1ac0e6fbde830ac6be9e42f523a0e460fd84e8'
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.dev20250109'
38
+ __version__ = '1.0.0.dev20250111'
39
39
  __root_dir__ = os.path.dirname(os.path.abspath(__file__))
40
40
 
41
41
 
@@ -3891,6 +3891,152 @@ class CloudVmRayBackend(backends.Backend['CloudVmRayResourceHandle']):
3891
3891
  stdin=subprocess.DEVNULL,
3892
3892
  )
3893
3893
 
3894
+ def sync_down_managed_job_logs(
3895
+ self,
3896
+ handle: CloudVmRayResourceHandle,
3897
+ job_id: Optional[int] = None,
3898
+ job_name: Optional[str] = None,
3899
+ controller: bool = False,
3900
+ local_dir: str = constants.SKY_LOGS_DIRECTORY) -> Dict[str, str]:
3901
+ """Sync down logs for a managed job.
3902
+
3903
+ Args:
3904
+ handle: The handle to the cluster.
3905
+ job_id: The job ID to sync down logs for.
3906
+ job_name: The job name to sync down logs for.
3907
+ controller: Whether to sync down logs for the controller.
3908
+ local_dir: The local directory to sync down logs to.
3909
+
3910
+ Returns:
3911
+ A dictionary mapping job_id to log path.
3912
+ """
3913
+ # if job_name is not None, job_id should be None
3914
+ assert job_name is None or job_id is None, (job_name, job_id)
3915
+ if job_id is None and job_name is not None:
3916
+ # generate code to get the job_id
3917
+ code = managed_jobs.ManagedJobCodeGen.get_all_job_ids_by_name(
3918
+ job_name=job_name)
3919
+ returncode, run_timestamps, stderr = self.run_on_head(
3920
+ handle,
3921
+ code,
3922
+ stream_logs=False,
3923
+ require_outputs=True,
3924
+ separate_stderr=True)
3925
+ subprocess_utils.handle_returncode(returncode, code,
3926
+ 'Failed to sync down logs.',
3927
+ stderr)
3928
+ job_ids = common_utils.decode_payload(run_timestamps)
3929
+ if not job_ids:
3930
+ logger.info(f'{colorama.Fore.YELLOW}'
3931
+ 'No matching job found'
3932
+ f'{colorama.Style.RESET_ALL}')
3933
+ return {}
3934
+ elif len(job_ids) > 1:
3935
+ logger.info(
3936
+ f'{colorama.Fore.YELLOW}'
3937
+ f'Multiple jobs IDs found under the name {job_name}. '
3938
+ 'Downloading the latest job logs.'
3939
+ f'{colorama.Style.RESET_ALL}')
3940
+ job_ids = [job_ids[0]] # descending order
3941
+ else:
3942
+ job_ids = [job_id]
3943
+
3944
+ # get the run_timestamp
3945
+ # the function takes in [job_id]
3946
+ code = job_lib.JobLibCodeGen.get_run_timestamp_with_globbing(job_ids)
3947
+ returncode, run_timestamps, stderr = self.run_on_head(
3948
+ handle,
3949
+ code,
3950
+ stream_logs=False,
3951
+ require_outputs=True,
3952
+ separate_stderr=True)
3953
+ subprocess_utils.handle_returncode(returncode, code,
3954
+ 'Failed to sync logs.', stderr)
3955
+ # returns with a dict of {job_id: run_timestamp}
3956
+ run_timestamps = common_utils.decode_payload(run_timestamps)
3957
+ if not run_timestamps:
3958
+ logger.info(f'{colorama.Fore.YELLOW}'
3959
+ 'No matching log directories found'
3960
+ f'{colorama.Style.RESET_ALL}')
3961
+ return {}
3962
+
3963
+ run_timestamp = list(run_timestamps.values())[0]
3964
+ job_id = list(run_timestamps.keys())[0]
3965
+ local_log_dir = ''
3966
+ if controller: # download controller logs
3967
+ remote_log_dir = os.path.join(constants.SKY_LOGS_DIRECTORY,
3968
+ run_timestamp)
3969
+ local_log_dir = os.path.expanduser(
3970
+ os.path.join(local_dir, run_timestamp))
3971
+
3972
+ logger.info(f'{colorama.Fore.CYAN}'
3973
+ f'Job {job_ids} local logs: {local_log_dir}'
3974
+ f'{colorama.Style.RESET_ALL}')
3975
+
3976
+ runners = handle.get_command_runners()
3977
+
3978
+ def _rsync_down(args) -> None:
3979
+ """Rsync down logs from remote nodes.
3980
+
3981
+ Args:
3982
+ args: A tuple of (runner, local_log_dir, remote_log_dir)
3983
+ """
3984
+ (runner, local_log_dir, remote_log_dir) = args
3985
+ try:
3986
+ os.makedirs(local_log_dir, exist_ok=True)
3987
+ runner.rsync(
3988
+ source=f'{remote_log_dir}/',
3989
+ target=local_log_dir,
3990
+ up=False,
3991
+ stream_logs=False,
3992
+ )
3993
+ except exceptions.CommandError as e:
3994
+ if e.returncode == exceptions.RSYNC_FILE_NOT_FOUND_CODE:
3995
+ # Raised by rsync_down. Remote log dir may not exist
3996
+ # since the job can be run on some part of the nodes.
3997
+ logger.debug(
3998
+ f'{runner.node_id} does not have the tasks/*.')
3999
+ else:
4000
+ raise
4001
+
4002
+ parallel_args = [[runner, *item]
4003
+ for item in zip([local_log_dir], [remote_log_dir])
4004
+ for runner in runners]
4005
+ subprocess_utils.run_in_parallel(_rsync_down, parallel_args)
4006
+ else: # download job logs
4007
+ local_log_dir = os.path.expanduser(
4008
+ os.path.join(local_dir, 'managed_jobs', run_timestamp))
4009
+ os.makedirs(os.path.dirname(local_log_dir), exist_ok=True)
4010
+ log_file = os.path.join(local_log_dir, 'run.log')
4011
+
4012
+ code = managed_jobs.ManagedJobCodeGen.stream_logs(job_name=None,
4013
+ job_id=job_id,
4014
+ follow=False,
4015
+ controller=False)
4016
+
4017
+ # With the stdin=subprocess.DEVNULL, the ctrl-c will not
4018
+ # kill the process, so we need to handle it manually here.
4019
+ if threading.current_thread() is threading.main_thread():
4020
+ signal.signal(signal.SIGINT, backend_utils.interrupt_handler)
4021
+ signal.signal(signal.SIGTSTP, backend_utils.stop_handler)
4022
+
4023
+ # We redirect the output to the log file
4024
+ # and disable the STDOUT and STDERR
4025
+ self.run_on_head(
4026
+ handle,
4027
+ code,
4028
+ log_path=log_file,
4029
+ stream_logs=False,
4030
+ process_stream=False,
4031
+ ssh_mode=command_runner.SshMode.INTERACTIVE,
4032
+ stdin=subprocess.DEVNULL,
4033
+ )
4034
+
4035
+ logger.info(f'{colorama.Fore.CYAN}'
4036
+ f'Job {job_id} logs: {local_log_dir}'
4037
+ f'{colorama.Style.RESET_ALL}')
4038
+ return {str(job_id): local_log_dir}
4039
+
3894
4040
  def tail_serve_logs(self, handle: CloudVmRayResourceHandle,
3895
4041
  service_name: str, target: serve_lib.ServiceComponent,
3896
4042
  replica_id: Optional[int], follow: bool) -> None:
@@ -3933,17 +3933,29 @@ def jobs_cancel(name: Optional[str], job_ids: Tuple[int], all: bool, yes: bool):
3933
3933
  required=False,
3934
3934
  help='Query the latest job logs, restarting the jobs controller if stopped.'
3935
3935
  )
3936
+ @click.option('--sync-down',
3937
+ '-s',
3938
+ default=False,
3939
+ is_flag=True,
3940
+ required=False,
3941
+ help='Download logs for all jobs shown in the queue.')
3936
3942
  @click.argument('job_id', required=False, type=int)
3937
3943
  @usage_lib.entrypoint
3938
3944
  def jobs_logs(name: Optional[str], job_id: Optional[int], follow: bool,
3939
- controller: bool, refresh: bool):
3940
- """Tail the log of a managed job."""
3945
+ controller: bool, refresh: bool, sync_down: bool):
3946
+ """Tail or sync down the log of a managed job."""
3941
3947
  try:
3942
- managed_jobs.tail_logs(name=name,
3943
- job_id=job_id,
3944
- follow=follow,
3945
- controller=controller,
3946
- refresh=refresh)
3948
+ if sync_down:
3949
+ managed_jobs.sync_down_logs(name=name,
3950
+ job_id=job_id,
3951
+ controller=controller,
3952
+ refresh=refresh)
3953
+ else:
3954
+ managed_jobs.tail_logs(name=name,
3955
+ job_id=job_id,
3956
+ follow=follow,
3957
+ controller=controller,
3958
+ refresh=refresh)
3947
3959
  except exceptions.ClusterNotUpError:
3948
3960
  with ux_utils.print_exception_no_traceback():
3949
3961
  raise
@@ -97,6 +97,8 @@ class AWSIdentityType(enum.Enum):
97
97
 
98
98
  CUSTOM_PROCESS = 'custom-process'
99
99
 
100
+ ASSUME_ROLE = 'assume-role'
101
+
100
102
  # Name Value Type Location
101
103
  # ---- ----- ---- --------
102
104
  # profile <not set> None None
@@ -626,6 +628,17 @@ class AWS(clouds.Cloud):
626
628
  # the file. i.e. the custom process will be assigned the IAM role of the
627
629
  # task: skypilot-v1.
628
630
  hints = f'AWS custom-process is set.{single_cloud_hint}'
631
+ elif identity_type == AWSIdentityType.ASSUME_ROLE:
632
+ # When using ASSUME ROLE, the credentials are coming from a different
633
+ # source profile. So we don't check for the existence of ~/.aws/credentials.
634
+ # i.e. the assumed role will be assigned the IAM role of the
635
+ # task: skypilot-v1.
636
+ hints = f'AWS assume-role is set.{single_cloud_hint}'
637
+ elif identity_type == AWSIdentityType.ENV:
638
+ # When using ENV vars, the credentials are coming from the environment
639
+ # variables. So we don't check for the existence of ~/.aws/credentials.
640
+ # i.e. the identity is not determined by the file.
641
+ hints = f'AWS env is set.{single_cloud_hint}'
629
642
  else:
630
643
  # This file is required because it is required by the VMs launched on
631
644
  # other clouds to access private s3 buckets and resources like EC2.
@@ -677,18 +690,10 @@ class AWS(clouds.Cloud):
677
690
  f'Unexpected `aws configure list` output:\n{output}')
678
691
  return len(results) == 1
679
692
 
680
- if _is_access_key_of_type(AWSIdentityType.SSO.value):
681
- return AWSIdentityType.SSO
682
- elif _is_access_key_of_type(AWSIdentityType.IAM_ROLE.value):
683
- return AWSIdentityType.IAM_ROLE
684
- elif _is_access_key_of_type(AWSIdentityType.CONTAINER_ROLE.value):
685
- return AWSIdentityType.CONTAINER_ROLE
686
- elif _is_access_key_of_type(AWSIdentityType.ENV.value):
687
- return AWSIdentityType.ENV
688
- elif _is_access_key_of_type(AWSIdentityType.CUSTOM_PROCESS.value):
689
- return AWSIdentityType.CUSTOM_PROCESS
690
- else:
691
- return AWSIdentityType.SHARED_CREDENTIALS_FILE
693
+ for identity_type in AWSIdentityType:
694
+ if _is_access_key_of_type(identity_type.value):
695
+ return identity_type
696
+ return AWSIdentityType.SHARED_CREDENTIALS_FILE
692
697
 
693
698
  @classmethod
694
699
  @functools.lru_cache(maxsize=1)
@@ -9,6 +9,7 @@ from sky.jobs.core import cancel
9
9
  from sky.jobs.core import launch
10
10
  from sky.jobs.core import queue
11
11
  from sky.jobs.core import queue_from_kubernetes_pod
12
+ from sky.jobs.core import sync_down_logs
12
13
  from sky.jobs.core import tail_logs
13
14
  from sky.jobs.recovery_strategy import DEFAULT_RECOVERY_STRATEGY
14
15
  from sky.jobs.recovery_strategy import RECOVERY_STRATEGIES
@@ -37,6 +38,7 @@ __all__ = [
37
38
  'queue',
38
39
  'queue_from_kubernetes_pod',
39
40
  'tail_logs',
41
+ 'sync_down_logs',
40
42
  # utils
41
43
  'ManagedJobCodeGen',
42
44
  'format_job_table',
@@ -427,6 +427,52 @@ def tail_logs(name: Optional[str], job_id: Optional[int], follow: bool,
427
427
  controller=controller)
428
428
 
429
429
 
430
+ @usage_lib.entrypoint
431
+ def sync_down_logs(
432
+ name: Optional[str],
433
+ job_id: Optional[int],
434
+ refresh: bool,
435
+ controller: bool,
436
+ local_dir: str = skylet_constants.SKY_LOGS_DIRECTORY) -> None:
437
+ """Sync down logs of managed jobs.
438
+
439
+ Please refer to sky.cli.job_logs for documentation.
440
+
441
+ Raises:
442
+ ValueError: invalid arguments.
443
+ sky.exceptions.ClusterNotUpError: the jobs controller is not up.
444
+ """
445
+ # TODO(zhwu): Automatically restart the jobs controller
446
+ if name is not None and job_id is not None:
447
+ with ux_utils.print_exception_no_traceback():
448
+ raise ValueError('Cannot specify both name and job_id.')
449
+
450
+ jobs_controller_type = controller_utils.Controllers.JOBS_CONTROLLER
451
+ job_name_or_id_str = ''
452
+ if job_id is not None:
453
+ job_name_or_id_str = str(job_id)
454
+ elif name is not None:
455
+ job_name_or_id_str = f'-n {name}'
456
+ else:
457
+ job_name_or_id_str = ''
458
+ handle = _maybe_restart_controller(
459
+ refresh,
460
+ stopped_message=(
461
+ f'{jobs_controller_type.value.name.capitalize()} is stopped. To '
462
+ f'get the logs, run: {colorama.Style.BRIGHT}sky jobs logs '
463
+ f'-r --sync-down {job_name_or_id_str}{colorama.Style.RESET_ALL}'),
464
+ spinner_message='Retrieving job logs')
465
+
466
+ backend = backend_utils.get_backend_from_handle(handle)
467
+ assert isinstance(backend, backends.CloudVmRayBackend), backend
468
+
469
+ backend.sync_down_managed_job_logs(handle,
470
+ job_id=job_id,
471
+ job_name=name,
472
+ controller=controller,
473
+ local_dir=local_dir)
474
+
475
+
430
476
  spot_launch = common_utils.deprecated_function(
431
477
  launch,
432
478
  name='sky.jobs.launch',
@@ -564,6 +564,33 @@ def get_nonterminal_job_ids_by_name(name: Optional[str]) -> List[int]:
564
564
  return job_ids
565
565
 
566
566
 
567
+ def get_all_job_ids_by_name(name: Optional[str]) -> List[int]:
568
+ """Get all job ids by name."""
569
+ name_filter = ''
570
+ field_values = []
571
+ if name is not None:
572
+ # We match the job name from `job_info` for the jobs submitted after
573
+ # #1982, and from `spot` for the jobs submitted before #1982, whose
574
+ # job_info is not available.
575
+ name_filter = ('WHERE (job_info.name=(?) OR '
576
+ '(job_info.name IS NULL AND spot.task_name=(?)))')
577
+ field_values = [name, name]
578
+
579
+ # Left outer join is used here instead of join, because the job_info does
580
+ # not contain the managed jobs submitted before #1982.
581
+ with db_utils.safe_cursor(_DB_PATH) as cursor:
582
+ rows = cursor.execute(
583
+ f"""\
584
+ SELECT DISTINCT spot.spot_job_id
585
+ FROM spot
586
+ LEFT OUTER JOIN job_info
587
+ ON spot.spot_job_id=job_info.spot_job_id
588
+ {name_filter}
589
+ ORDER BY spot.spot_job_id DESC""", field_values).fetchall()
590
+ job_ids = [row[0] for row in rows if row[0] is not None]
591
+ return job_ids
592
+
593
+
567
594
  def _get_all_task_ids_statuses(
568
595
  job_id: int) -> List[Tuple[int, ManagedJobStatus]]:
569
596
  with db_utils.safe_cursor(_DB_PATH) as cursor:
@@ -855,6 +855,15 @@ class ManagedJobCodeGen:
855
855
  """)
856
856
  return cls._build(code)
857
857
 
858
+ @classmethod
859
+ def get_all_job_ids_by_name(cls, job_name: str) -> str:
860
+ code = textwrap.dedent(f"""\
861
+ from sky.utils import common_utils
862
+ job_id = managed_job_state.get_all_job_ids_by_name({job_name!r})
863
+ print(common_utils.encode_payload(job_id), end="", flush=True)
864
+ """)
865
+ return cls._build(code)
866
+
858
867
  @classmethod
859
868
  def stream_logs(cls,
860
869
  job_name: Optional[str],
@@ -0,0 +1,73 @@
1
+ # The template for the jobs controller
2
+
3
+ name: {{dag_name}}
4
+
5
+ file_mounts:
6
+ {{remote_user_yaml_path}}: {{user_yaml_path}}
7
+ {%- if local_user_config_path is not none %}
8
+ {{remote_user_config_path}}: {{local_user_config_path}}
9
+ {%- endif %}
10
+ {%- for remote_catalog_path, local_catalog_path in modified_catalogs.items() %}
11
+ {{remote_catalog_path}}: {{local_catalog_path}}
12
+ {%- endfor %}
13
+
14
+ setup: |
15
+ {{ sky_activate_python_env }}
16
+ # Disable the pip version check to avoid the warning message, which makes the
17
+ # output hard to read.
18
+ export PIP_DISABLE_PIP_VERSION_CHECK=1
19
+
20
+ {%- for cmd in cloud_dependencies_installation_commands %}
21
+ {{cmd}}
22
+ {%- endfor %}
23
+
24
+ {% if is_dev %}
25
+ # Internal: disable logging for manually logging into the jobs controller for debugging.
26
+ echo 'export SKYPILOT_DEV=1' >> ~/.bashrc
27
+ {% endif %}
28
+
29
+ # Create systemd service file
30
+ mkdir -p ~/.config/systemd/user/
31
+
32
+ # Create systemd user service file
33
+ cat << EOF > ~/.config/systemd/user/skypilot-dashboard.service
34
+ [Unit]
35
+ Description=SkyPilot Jobs Dashboard
36
+ After=network.target
37
+
38
+ [Service]
39
+ Environment="PATH={{ sky_python_env_path }}:\$PATH"
40
+ Environment="SKYPILOT_USER_ID={{controller_envs.SKYPILOT_USER_ID}}"
41
+ Environment="SKYPILOT_USER={{controller_envs.SKYPILOT_USER}}"
42
+ Restart=always
43
+ StandardOutput=append:/home/$USER/.sky/job-dashboard.log
44
+ StandardError=append:/home/$USER/.sky/job-dashboard.log
45
+ ExecStart={{ sky_python_cmd }} -m sky.jobs.dashboard.dashboard
46
+
47
+ [Install]
48
+ WantedBy=default.target
49
+ EOF
50
+
51
+ if command -v systemctl &>/dev/null && systemctl --user show &>/dev/null; then
52
+ systemctl --user daemon-reload
53
+ systemctl --user enable --now skypilot-dashboard
54
+ else
55
+ echo "Systemd user services not found. Setting up SkyPilot dashboard manually."
56
+ # Kill any old dashboard processes
57
+ ps aux | grep -v nohup | grep -v grep | grep -- '-m sky.jobs.dashboard.dashboard' \
58
+ | awk '{print $2}' | xargs kill > /dev/null 2>&1 || true
59
+ # Launch the dashboard in the background if not already running
60
+ (ps aux | grep -v nohup | grep -v grep | grep -q -- '-m sky.jobs.dashboard.dashboard') || \
61
+ (nohup {{ sky_python_cmd }} -m sky.jobs.dashboard.dashboard >> ~/.sky/job-dashboard.log 2>&1 &)
62
+ fi
63
+
64
+ run: |
65
+ {{ sky_activate_python_env }}
66
+ # Start the controller for the current managed job.
67
+ python -u -m sky.jobs.controller {{remote_user_yaml_path}} \
68
+ --job-id $SKYPILOT_INTERNAL_JOB_ID {% if retry_until_up %}--retry-until-up{% endif %}
69
+
70
+ envs:
71
+ {%- for env_name, env_value in controller_envs.items() %}
72
+ {{env_name}}: {{env_value}}
73
+ {%- endfor %}
@@ -206,6 +206,9 @@ def _get_cloud_dependencies_installation_commands(
206
206
  # installed, so we don't check that.
207
207
  python_packages: Set[str] = set()
208
208
 
209
+ # add flask to the controller dependencies for dashboard
210
+ python_packages.add('flask')
211
+
209
212
  step_prefix = prefix_str.replace('<step>', str(len(commands) + 1))
210
213
  commands.append(f'echo -en "\\r{step_prefix}uv{empty_str}" &&'
211
214
  f'{constants.SKY_UV_INSTALL_CMD} >/dev/null 2>&1')
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: skypilot-nightly
3
- Version: 1.0.0.dev20250109
3
+ Version: 1.0.0.dev20250111
4
4
  Summary: SkyPilot: An intercloud broker for the clouds
5
5
  Author: SkyPilot Team
6
6
  License: Apache 2.0
@@ -1,43 +0,0 @@
1
- # The template for the jobs controller
2
-
3
- name: {{dag_name}}
4
-
5
- file_mounts:
6
- {{remote_user_yaml_path}}: {{user_yaml_path}}
7
- {%- if local_user_config_path is not none %}
8
- {{remote_user_config_path}}: {{local_user_config_path}}
9
- {%- endif %}
10
- {%- for remote_catalog_path, local_catalog_path in modified_catalogs.items() %}
11
- {{remote_catalog_path}}: {{local_catalog_path}}
12
- {%- endfor %}
13
-
14
- setup: |
15
- {{ sky_activate_python_env }}
16
- # Disable the pip version check to avoid the warning message, which makes the
17
- # output hard to read.
18
- export PIP_DISABLE_PIP_VERSION_CHECK=1
19
-
20
- {%- for cmd in cloud_dependencies_installation_commands %}
21
- {{cmd}}
22
- {%- endfor %}
23
-
24
- {% if is_dev %}
25
- # Internal: disable logging for manually logging into the jobs controller for debugging.
26
- echo 'export SKYPILOT_DEV=1' >> ~/.bashrc
27
- {% endif %}
28
-
29
- # Dashboard.
30
- ps aux | grep -v nohup | grep -v grep | grep -- "-m sky.spot.dashboard" | awk '{print $2}' | xargs kill > /dev/null 2>&1 || true
31
- pip list | grep flask > /dev/null 2>&1 || pip install flask 2>&1 > /dev/null
32
- ((ps aux | grep -v nohup | grep -v grep | grep -q -- "-m sky.jobs.dashboard.dashboard") || (nohup {{ sky_python_cmd }} -m sky.jobs.dashboard.dashboard >> ~/.sky/job-dashboard.log 2>&1 &));
33
-
34
- run: |
35
- {{ sky_activate_python_env }}
36
- # Start the controller for the current managed job.
37
- python -u -m sky.jobs.controller {{remote_user_yaml_path}} \
38
- --job-id $SKYPILOT_INTERNAL_JOB_ID {% if retry_until_up %}--retry-until-up{% endif %}
39
-
40
- envs:
41
- {%- for env_name, env_value in controller_envs.items() %}
42
- {{env_name}}: {{env_value}}
43
- {%- endfor %}