skypilot-nightly 1.0.0.dev20250905__py3-none-any.whl → 1.0.0.dev20251210__py3-none-any.whl

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 (429) hide show
  1. sky/__init__.py +12 -2
  2. sky/adaptors/aws.py +27 -22
  3. sky/adaptors/common.py +25 -2
  4. sky/adaptors/coreweave.py +278 -0
  5. sky/adaptors/do.py +8 -2
  6. sky/adaptors/gcp.py +11 -0
  7. sky/adaptors/ibm.py +5 -2
  8. sky/adaptors/kubernetes.py +64 -0
  9. sky/adaptors/nebius.py +3 -1
  10. sky/adaptors/primeintellect.py +1 -0
  11. sky/adaptors/seeweb.py +183 -0
  12. sky/adaptors/shadeform.py +89 -0
  13. sky/adaptors/slurm.py +478 -0
  14. sky/admin_policy.py +20 -0
  15. sky/authentication.py +157 -263
  16. sky/backends/__init__.py +3 -2
  17. sky/backends/backend.py +11 -3
  18. sky/backends/backend_utils.py +630 -185
  19. sky/backends/cloud_vm_ray_backend.py +1111 -928
  20. sky/backends/local_docker_backend.py +9 -5
  21. sky/backends/task_codegen.py +971 -0
  22. sky/backends/wheel_utils.py +18 -0
  23. sky/catalog/__init__.py +8 -3
  24. sky/catalog/aws_catalog.py +4 -0
  25. sky/catalog/common.py +19 -1
  26. sky/catalog/data_fetchers/fetch_aws.py +102 -80
  27. sky/catalog/data_fetchers/fetch_gcp.py +30 -3
  28. sky/catalog/data_fetchers/fetch_nebius.py +9 -6
  29. sky/catalog/data_fetchers/fetch_runpod.py +698 -0
  30. sky/catalog/data_fetchers/fetch_seeweb.py +329 -0
  31. sky/catalog/data_fetchers/fetch_shadeform.py +142 -0
  32. sky/catalog/kubernetes_catalog.py +36 -32
  33. sky/catalog/primeintellect_catalog.py +95 -0
  34. sky/catalog/runpod_catalog.py +5 -1
  35. sky/catalog/seeweb_catalog.py +184 -0
  36. sky/catalog/shadeform_catalog.py +165 -0
  37. sky/catalog/slurm_catalog.py +243 -0
  38. sky/check.py +87 -46
  39. sky/client/cli/command.py +1004 -434
  40. sky/client/cli/flags.py +4 -2
  41. sky/{volumes/utils.py → client/cli/table_utils.py} +111 -13
  42. sky/client/cli/utils.py +79 -0
  43. sky/client/common.py +12 -2
  44. sky/client/sdk.py +188 -65
  45. sky/client/sdk_async.py +34 -33
  46. sky/cloud_stores.py +82 -3
  47. sky/clouds/__init__.py +8 -0
  48. sky/clouds/aws.py +337 -129
  49. sky/clouds/azure.py +24 -18
  50. sky/clouds/cloud.py +47 -13
  51. sky/clouds/cudo.py +16 -13
  52. sky/clouds/do.py +9 -7
  53. sky/clouds/fluidstack.py +12 -5
  54. sky/clouds/gcp.py +14 -7
  55. sky/clouds/hyperbolic.py +12 -5
  56. sky/clouds/ibm.py +12 -5
  57. sky/clouds/kubernetes.py +80 -45
  58. sky/clouds/lambda_cloud.py +12 -5
  59. sky/clouds/nebius.py +23 -9
  60. sky/clouds/oci.py +19 -12
  61. sky/clouds/paperspace.py +4 -1
  62. sky/clouds/primeintellect.py +317 -0
  63. sky/clouds/runpod.py +85 -24
  64. sky/clouds/scp.py +12 -8
  65. sky/clouds/seeweb.py +477 -0
  66. sky/clouds/shadeform.py +400 -0
  67. sky/clouds/slurm.py +578 -0
  68. sky/clouds/ssh.py +6 -3
  69. sky/clouds/utils/scp_utils.py +61 -50
  70. sky/clouds/vast.py +43 -27
  71. sky/clouds/vsphere.py +14 -16
  72. sky/core.py +296 -195
  73. sky/dashboard/out/404.html +1 -1
  74. sky/dashboard/out/_next/static/KYAhEFa3FTfq4JyKVgo-s/_buildManifest.js +1 -0
  75. sky/dashboard/out/_next/static/chunks/1141-9c810f01ff4f398a.js +11 -0
  76. sky/dashboard/out/_next/static/chunks/1871-7e202677c42f43fe.js +6 -0
  77. sky/dashboard/out/_next/static/chunks/2260-7703229c33c5ebd5.js +1 -0
  78. sky/dashboard/out/_next/static/chunks/2369.fc20f0c2c8ed9fe7.js +15 -0
  79. sky/dashboard/out/_next/static/chunks/2755.edd818326d489a1d.js +26 -0
  80. sky/dashboard/out/_next/static/chunks/3294.ddda8c6c6f9f24dc.js +1 -0
  81. sky/dashboard/out/_next/static/chunks/3785.7e245f318f9d1121.js +1 -0
  82. sky/dashboard/out/_next/static/chunks/{6601-06114c982db410b6.js → 3800-b589397dc09c5b4e.js} +1 -1
  83. sky/dashboard/out/_next/static/chunks/3850-fd5696f3bbbaddae.js +1 -0
  84. sky/dashboard/out/_next/static/chunks/4725.172ede95d1b21022.js +1 -0
  85. sky/dashboard/out/_next/static/chunks/4937.a2baa2df5572a276.js +15 -0
  86. sky/dashboard/out/_next/static/chunks/6212-7bd06f60ba693125.js +13 -0
  87. sky/dashboard/out/_next/static/chunks/6856-da20c5fd999f319c.js +1 -0
  88. sky/dashboard/out/_next/static/chunks/6990-09cbf02d3cd518c3.js +1 -0
  89. sky/dashboard/out/_next/static/chunks/7359-c8d04e06886000b3.js +30 -0
  90. sky/dashboard/out/_next/static/chunks/7615-019513abc55b3b47.js +1 -0
  91. sky/dashboard/out/_next/static/chunks/8640.5b9475a2d18c5416.js +16 -0
  92. sky/dashboard/out/_next/static/chunks/8969-452f9d5cbdd2dc73.js +1 -0
  93. sky/dashboard/out/_next/static/chunks/9025.fa408f3242e9028d.js +6 -0
  94. sky/dashboard/out/_next/static/chunks/9353-8369df1cf105221c.js +1 -0
  95. sky/dashboard/out/_next/static/chunks/9360.a536cf6b1fa42355.js +31 -0
  96. sky/dashboard/out/_next/static/chunks/9847.3aaca6bb33455140.js +30 -0
  97. sky/dashboard/out/_next/static/chunks/pages/_app-68b647e26f9d2793.js +34 -0
  98. sky/dashboard/out/_next/static/chunks/pages/clusters/[cluster]/[job]-33f525539665fdfd.js +16 -0
  99. sky/dashboard/out/_next/static/chunks/pages/clusters/[cluster]-a7565f586ef86467.js +1 -0
  100. sky/dashboard/out/_next/static/chunks/pages/clusters-9e5d47818b9bdadd.js +1 -0
  101. sky/dashboard/out/_next/static/chunks/pages/{config-dfb9bf07b13045f4.js → config-718cdc365de82689.js} +1 -1
  102. sky/dashboard/out/_next/static/chunks/pages/infra/{[context]-6563820e094f68ca.js → [context]-12c559ec4d81fdbd.js} +1 -1
  103. sky/dashboard/out/_next/static/chunks/pages/{infra-aabba60d57826e0f.js → infra-d187cd0413d72475.js} +1 -1
  104. sky/dashboard/out/_next/static/chunks/pages/jobs/[job]-895847b6cf200b04.js +16 -0
  105. sky/dashboard/out/_next/static/chunks/pages/jobs/pools/[pool]-8d0f4655400b4eb9.js +21 -0
  106. sky/dashboard/out/_next/static/chunks/pages/jobs-e5a98f17f8513a96.js +1 -0
  107. sky/dashboard/out/_next/static/chunks/pages/plugins/[...slug]-4f46050ca065d8f8.js +1 -0
  108. sky/dashboard/out/_next/static/chunks/pages/users-2f7646eb77785a2c.js +1 -0
  109. sky/dashboard/out/_next/static/chunks/pages/volumes-ef19d49c6d0e8500.js +1 -0
  110. sky/dashboard/out/_next/static/chunks/pages/workspaces/{[name]-af76bb06dbb3954f.js → [name]-96e0f298308da7e2.js} +1 -1
  111. sky/dashboard/out/_next/static/chunks/pages/{workspaces-7598c33a746cdc91.js → workspaces-cb4da3abe08ebf19.js} +1 -1
  112. sky/dashboard/out/_next/static/chunks/webpack-fba3de387ff6bb08.js +1 -0
  113. sky/dashboard/out/_next/static/css/c5a4cfd2600fc715.css +3 -0
  114. sky/dashboard/out/clusters/[cluster]/[job].html +1 -1
  115. sky/dashboard/out/clusters/[cluster].html +1 -1
  116. sky/dashboard/out/clusters.html +1 -1
  117. sky/dashboard/out/config.html +1 -1
  118. sky/dashboard/out/index.html +1 -1
  119. sky/dashboard/out/infra/[context].html +1 -1
  120. sky/dashboard/out/infra.html +1 -1
  121. sky/dashboard/out/jobs/[job].html +1 -1
  122. sky/dashboard/out/jobs/pools/[pool].html +1 -1
  123. sky/dashboard/out/jobs.html +1 -1
  124. sky/dashboard/out/plugins/[...slug].html +1 -0
  125. sky/dashboard/out/users.html +1 -1
  126. sky/dashboard/out/volumes.html +1 -1
  127. sky/dashboard/out/workspace/new.html +1 -1
  128. sky/dashboard/out/workspaces/[name].html +1 -1
  129. sky/dashboard/out/workspaces.html +1 -1
  130. sky/data/data_utils.py +92 -1
  131. sky/data/mounting_utils.py +177 -30
  132. sky/data/storage.py +200 -19
  133. sky/data/storage_utils.py +10 -45
  134. sky/exceptions.py +18 -7
  135. sky/execution.py +74 -31
  136. sky/global_user_state.py +605 -191
  137. sky/jobs/__init__.py +2 -0
  138. sky/jobs/client/sdk.py +101 -4
  139. sky/jobs/client/sdk_async.py +31 -5
  140. sky/jobs/constants.py +15 -8
  141. sky/jobs/controller.py +726 -284
  142. sky/jobs/file_content_utils.py +128 -0
  143. sky/jobs/log_gc.py +193 -0
  144. sky/jobs/recovery_strategy.py +250 -100
  145. sky/jobs/scheduler.py +271 -173
  146. sky/jobs/server/core.py +367 -114
  147. sky/jobs/server/server.py +81 -35
  148. sky/jobs/server/utils.py +89 -35
  149. sky/jobs/state.py +1498 -620
  150. sky/jobs/utils.py +771 -306
  151. sky/logs/agent.py +40 -5
  152. sky/logs/aws.py +9 -19
  153. sky/metrics/utils.py +282 -39
  154. sky/models.py +2 -0
  155. sky/optimizer.py +7 -6
  156. sky/provision/__init__.py +38 -1
  157. sky/provision/aws/config.py +34 -13
  158. sky/provision/aws/instance.py +5 -2
  159. sky/provision/azure/instance.py +5 -3
  160. sky/provision/common.py +22 -0
  161. sky/provision/cudo/instance.py +4 -3
  162. sky/provision/do/instance.py +4 -3
  163. sky/provision/docker_utils.py +112 -28
  164. sky/provision/fluidstack/instance.py +6 -5
  165. sky/provision/gcp/config.py +6 -1
  166. sky/provision/gcp/instance.py +4 -2
  167. sky/provision/hyperbolic/instance.py +4 -2
  168. sky/provision/instance_setup.py +66 -20
  169. sky/provision/kubernetes/__init__.py +2 -0
  170. sky/provision/kubernetes/config.py +7 -44
  171. sky/provision/kubernetes/constants.py +0 -1
  172. sky/provision/kubernetes/instance.py +609 -213
  173. sky/provision/kubernetes/manifests/fusermount-server-daemonset.yaml +1 -2
  174. sky/provision/kubernetes/network.py +12 -8
  175. sky/provision/kubernetes/network_utils.py +8 -25
  176. sky/provision/kubernetes/utils.py +422 -422
  177. sky/provision/kubernetes/volume.py +150 -18
  178. sky/provision/lambda_cloud/instance.py +16 -13
  179. sky/provision/nebius/instance.py +6 -2
  180. sky/provision/nebius/utils.py +103 -86
  181. sky/provision/oci/instance.py +4 -2
  182. sky/provision/paperspace/instance.py +4 -3
  183. sky/provision/primeintellect/__init__.py +10 -0
  184. sky/provision/primeintellect/config.py +11 -0
  185. sky/provision/primeintellect/instance.py +454 -0
  186. sky/provision/primeintellect/utils.py +398 -0
  187. sky/provision/provisioner.py +45 -15
  188. sky/provision/runpod/__init__.py +2 -0
  189. sky/provision/runpod/instance.py +4 -3
  190. sky/provision/runpod/volume.py +69 -13
  191. sky/provision/scp/instance.py +307 -130
  192. sky/provision/seeweb/__init__.py +11 -0
  193. sky/provision/seeweb/config.py +13 -0
  194. sky/provision/seeweb/instance.py +812 -0
  195. sky/provision/shadeform/__init__.py +11 -0
  196. sky/provision/shadeform/config.py +12 -0
  197. sky/provision/shadeform/instance.py +351 -0
  198. sky/provision/shadeform/shadeform_utils.py +83 -0
  199. sky/provision/slurm/__init__.py +12 -0
  200. sky/provision/slurm/config.py +13 -0
  201. sky/provision/slurm/instance.py +572 -0
  202. sky/provision/slurm/utils.py +583 -0
  203. sky/provision/vast/instance.py +9 -4
  204. sky/provision/vast/utils.py +10 -6
  205. sky/provision/volume.py +164 -0
  206. sky/provision/vsphere/common/ssl_helper.py +1 -1
  207. sky/provision/vsphere/common/vapiconnect.py +2 -1
  208. sky/provision/vsphere/common/vim_utils.py +3 -2
  209. sky/provision/vsphere/instance.py +8 -6
  210. sky/provision/vsphere/vsphere_utils.py +8 -1
  211. sky/resources.py +11 -3
  212. sky/schemas/api/responses.py +107 -6
  213. sky/schemas/db/global_user_state/008_skylet_ssh_tunnel_metadata.py +34 -0
  214. sky/schemas/db/global_user_state/009_last_activity_and_launched_at.py +89 -0
  215. sky/schemas/db/global_user_state/010_save_ssh_key.py +66 -0
  216. sky/schemas/db/global_user_state/011_is_ephemeral.py +34 -0
  217. sky/schemas/db/kv_cache/001_initial_schema.py +29 -0
  218. sky/schemas/db/serve_state/002_yaml_content.py +34 -0
  219. sky/schemas/db/skypilot_config/001_initial_schema.py +30 -0
  220. sky/schemas/db/spot_jobs/002_cluster_pool.py +3 -3
  221. sky/schemas/db/spot_jobs/004_job_file_contents.py +42 -0
  222. sky/schemas/db/spot_jobs/005_logs_gc.py +38 -0
  223. sky/schemas/db/spot_jobs/006_controller_pid_started_at.py +34 -0
  224. sky/schemas/db/spot_jobs/007_config_file_content.py +34 -0
  225. sky/schemas/generated/jobsv1_pb2.py +86 -0
  226. sky/schemas/generated/jobsv1_pb2.pyi +254 -0
  227. sky/schemas/generated/jobsv1_pb2_grpc.py +542 -0
  228. sky/schemas/generated/managed_jobsv1_pb2.py +76 -0
  229. sky/schemas/generated/managed_jobsv1_pb2.pyi +278 -0
  230. sky/schemas/generated/managed_jobsv1_pb2_grpc.py +278 -0
  231. sky/schemas/generated/servev1_pb2.py +58 -0
  232. sky/schemas/generated/servev1_pb2.pyi +115 -0
  233. sky/schemas/generated/servev1_pb2_grpc.py +322 -0
  234. sky/serve/autoscalers.py +2 -0
  235. sky/serve/client/impl.py +55 -21
  236. sky/serve/constants.py +4 -3
  237. sky/serve/controller.py +17 -11
  238. sky/serve/load_balancing_policies.py +1 -1
  239. sky/serve/replica_managers.py +219 -142
  240. sky/serve/serve_rpc_utils.py +179 -0
  241. sky/serve/serve_state.py +63 -54
  242. sky/serve/serve_utils.py +145 -109
  243. sky/serve/server/core.py +46 -25
  244. sky/serve/server/impl.py +311 -162
  245. sky/serve/server/server.py +21 -19
  246. sky/serve/service.py +84 -68
  247. sky/serve/service_spec.py +45 -7
  248. sky/server/auth/loopback.py +38 -0
  249. sky/server/auth/oauth2_proxy.py +12 -7
  250. sky/server/common.py +47 -24
  251. sky/server/config.py +62 -28
  252. sky/server/constants.py +9 -1
  253. sky/server/daemons.py +109 -38
  254. sky/server/metrics.py +76 -96
  255. sky/server/middleware_utils.py +166 -0
  256. sky/server/plugins.py +222 -0
  257. sky/server/requests/executor.py +384 -145
  258. sky/server/requests/payloads.py +83 -19
  259. sky/server/requests/preconditions.py +15 -13
  260. sky/server/requests/request_names.py +123 -0
  261. sky/server/requests/requests.py +511 -157
  262. sky/server/requests/serializers/decoders.py +48 -17
  263. sky/server/requests/serializers/encoders.py +102 -20
  264. sky/server/requests/serializers/return_value_serializers.py +60 -0
  265. sky/server/requests/threads.py +117 -0
  266. sky/server/rest.py +116 -24
  267. sky/server/server.py +497 -179
  268. sky/server/server_utils.py +30 -0
  269. sky/server/stream_utils.py +219 -45
  270. sky/server/uvicorn.py +30 -19
  271. sky/setup_files/MANIFEST.in +6 -1
  272. sky/setup_files/alembic.ini +8 -0
  273. sky/setup_files/dependencies.py +64 -19
  274. sky/setup_files/setup.py +44 -44
  275. sky/sky_logging.py +13 -5
  276. sky/skylet/attempt_skylet.py +116 -24
  277. sky/skylet/configs.py +3 -1
  278. sky/skylet/constants.py +139 -29
  279. sky/skylet/events.py +74 -14
  280. sky/skylet/executor/__init__.py +1 -0
  281. sky/skylet/executor/slurm.py +189 -0
  282. sky/skylet/job_lib.py +143 -105
  283. sky/skylet/log_lib.py +252 -8
  284. sky/skylet/log_lib.pyi +47 -7
  285. sky/skylet/providers/ibm/node_provider.py +12 -8
  286. sky/skylet/providers/ibm/vpc_provider.py +13 -12
  287. sky/skylet/runtime_utils.py +21 -0
  288. sky/skylet/services.py +524 -0
  289. sky/skylet/skylet.py +27 -2
  290. sky/skylet/subprocess_daemon.py +104 -28
  291. sky/skypilot_config.py +99 -79
  292. sky/ssh_node_pools/constants.py +12 -0
  293. sky/ssh_node_pools/core.py +40 -3
  294. sky/ssh_node_pools/deploy/__init__.py +4 -0
  295. sky/ssh_node_pools/deploy/deploy.py +952 -0
  296. sky/ssh_node_pools/deploy/tunnel_utils.py +199 -0
  297. sky/ssh_node_pools/deploy/utils.py +173 -0
  298. sky/ssh_node_pools/server.py +20 -21
  299. sky/{utils/kubernetes/ssh_utils.py → ssh_node_pools/utils.py} +9 -6
  300. sky/task.py +221 -104
  301. sky/templates/aws-ray.yml.j2 +1 -0
  302. sky/templates/azure-ray.yml.j2 +1 -0
  303. sky/templates/cudo-ray.yml.j2 +1 -0
  304. sky/templates/do-ray.yml.j2 +1 -0
  305. sky/templates/fluidstack-ray.yml.j2 +1 -0
  306. sky/templates/gcp-ray.yml.j2 +1 -0
  307. sky/templates/hyperbolic-ray.yml.j2 +1 -0
  308. sky/templates/ibm-ray.yml.j2 +2 -1
  309. sky/templates/jobs-controller.yaml.j2 +3 -0
  310. sky/templates/kubernetes-ray.yml.j2 +204 -55
  311. sky/templates/lambda-ray.yml.j2 +1 -0
  312. sky/templates/nebius-ray.yml.j2 +3 -0
  313. sky/templates/oci-ray.yml.j2 +1 -0
  314. sky/templates/paperspace-ray.yml.j2 +1 -0
  315. sky/templates/primeintellect-ray.yml.j2 +72 -0
  316. sky/templates/runpod-ray.yml.j2 +1 -0
  317. sky/templates/scp-ray.yml.j2 +1 -0
  318. sky/templates/seeweb-ray.yml.j2 +171 -0
  319. sky/templates/shadeform-ray.yml.j2 +73 -0
  320. sky/templates/slurm-ray.yml.j2 +85 -0
  321. sky/templates/vast-ray.yml.j2 +2 -0
  322. sky/templates/vsphere-ray.yml.j2 +1 -0
  323. sky/templates/websocket_proxy.py +188 -43
  324. sky/usage/usage_lib.py +16 -4
  325. sky/users/model.conf +1 -1
  326. sky/users/permission.py +84 -44
  327. sky/users/rbac.py +31 -3
  328. sky/utils/accelerator_registry.py +6 -3
  329. sky/utils/admin_policy_utils.py +18 -5
  330. sky/utils/annotations.py +128 -6
  331. sky/utils/asyncio_utils.py +78 -0
  332. sky/utils/atomic.py +1 -1
  333. sky/utils/auth_utils.py +153 -0
  334. sky/utils/cli_utils/status_utils.py +12 -7
  335. sky/utils/cluster_utils.py +28 -6
  336. sky/utils/command_runner.py +283 -30
  337. sky/utils/command_runner.pyi +63 -7
  338. sky/utils/common.py +3 -1
  339. sky/utils/common_utils.py +55 -7
  340. sky/utils/config_utils.py +1 -14
  341. sky/utils/context.py +127 -40
  342. sky/utils/context_utils.py +73 -18
  343. sky/utils/controller_utils.py +229 -70
  344. sky/utils/db/db_utils.py +95 -18
  345. sky/utils/db/kv_cache.py +149 -0
  346. sky/utils/db/migration_utils.py +24 -7
  347. sky/utils/env_options.py +4 -0
  348. sky/utils/git.py +559 -1
  349. sky/utils/kubernetes/create_cluster.sh +15 -30
  350. sky/utils/kubernetes/delete_cluster.sh +10 -7
  351. sky/utils/kubernetes/generate_kind_config.py +6 -66
  352. sky/utils/kubernetes/gpu_labeler.py +13 -3
  353. sky/utils/kubernetes/k8s_gpu_labeler_job.yaml +2 -1
  354. sky/utils/kubernetes/k8s_gpu_labeler_setup.yaml +16 -16
  355. sky/utils/kubernetes/kubernetes_deploy_utils.py +187 -260
  356. sky/utils/kubernetes/rsync_helper.sh +11 -3
  357. sky/utils/kubernetes/ssh-tunnel.sh +7 -376
  358. sky/utils/kubernetes_enums.py +7 -15
  359. sky/utils/lock_events.py +4 -4
  360. sky/utils/locks.py +128 -31
  361. sky/utils/log_utils.py +0 -319
  362. sky/utils/resource_checker.py +13 -10
  363. sky/utils/resources_utils.py +53 -29
  364. sky/utils/rich_utils.py +8 -4
  365. sky/utils/schemas.py +138 -52
  366. sky/utils/subprocess_utils.py +17 -4
  367. sky/utils/thread_utils.py +91 -0
  368. sky/utils/timeline.py +2 -1
  369. sky/utils/ux_utils.py +35 -1
  370. sky/utils/volume.py +88 -4
  371. sky/utils/yaml_utils.py +9 -0
  372. sky/volumes/client/sdk.py +48 -10
  373. sky/volumes/server/core.py +59 -22
  374. sky/volumes/server/server.py +46 -17
  375. sky/volumes/volume.py +54 -42
  376. sky/workspaces/core.py +57 -21
  377. sky/workspaces/server.py +13 -12
  378. sky_templates/README.md +3 -0
  379. sky_templates/__init__.py +3 -0
  380. sky_templates/ray/__init__.py +0 -0
  381. sky_templates/ray/start_cluster +183 -0
  382. sky_templates/ray/stop_cluster +75 -0
  383. {skypilot_nightly-1.0.0.dev20250905.dist-info → skypilot_nightly-1.0.0.dev20251210.dist-info}/METADATA +343 -65
  384. skypilot_nightly-1.0.0.dev20251210.dist-info/RECORD +629 -0
  385. skypilot_nightly-1.0.0.dev20251210.dist-info/top_level.txt +2 -0
  386. sky/client/cli/git.py +0 -549
  387. sky/dashboard/out/_next/static/chunks/1121-408ed10b2f9fce17.js +0 -1
  388. sky/dashboard/out/_next/static/chunks/1141-943efc7aff0f0c06.js +0 -1
  389. sky/dashboard/out/_next/static/chunks/1836-37fede578e2da5f8.js +0 -40
  390. sky/dashboard/out/_next/static/chunks/3015-86cabed5d4669ad0.js +0 -1
  391. sky/dashboard/out/_next/static/chunks/3294.c80326aec9bfed40.js +0 -6
  392. sky/dashboard/out/_next/static/chunks/3785.4872a2f3aa489880.js +0 -1
  393. sky/dashboard/out/_next/static/chunks/3850-ff4a9a69d978632b.js +0 -1
  394. sky/dashboard/out/_next/static/chunks/4045.b30465273dc5e468.js +0 -21
  395. sky/dashboard/out/_next/static/chunks/4676-9da7fdbde90b5549.js +0 -10
  396. sky/dashboard/out/_next/static/chunks/4725.10f7a9a5d3ea8208.js +0 -1
  397. sky/dashboard/out/_next/static/chunks/5339.3fda4a4010ff4e06.js +0 -51
  398. sky/dashboard/out/_next/static/chunks/6135-4b4d5e824b7f9d3c.js +0 -1
  399. sky/dashboard/out/_next/static/chunks/649.b9d7f7d10c1b8c53.js +0 -45
  400. sky/dashboard/out/_next/static/chunks/6856-dca7962af4814e1b.js +0 -1
  401. sky/dashboard/out/_next/static/chunks/6990-08b2a1cae076a943.js +0 -1
  402. sky/dashboard/out/_next/static/chunks/7325.b4bc99ce0892dcd5.js +0 -6
  403. sky/dashboard/out/_next/static/chunks/754-d0da8ab45f9509e9.js +0 -18
  404. sky/dashboard/out/_next/static/chunks/7669.1f5d9a402bf5cc42.js +0 -36
  405. sky/dashboard/out/_next/static/chunks/8969-0be3036bf86f8256.js +0 -1
  406. sky/dashboard/out/_next/static/chunks/9025.c12318fb6a1a9093.js +0 -6
  407. sky/dashboard/out/_next/static/chunks/9037-fa1737818d0a0969.js +0 -6
  408. sky/dashboard/out/_next/static/chunks/pages/_app-ce361c6959bc2001.js +0 -34
  409. sky/dashboard/out/_next/static/chunks/pages/clusters/[cluster]/[job]-1cbba24bd1bd35f8.js +0 -16
  410. sky/dashboard/out/_next/static/chunks/pages/clusters/[cluster]-0b4b35dc1dfe046c.js +0 -16
  411. sky/dashboard/out/_next/static/chunks/pages/clusters-469814d711d63b1b.js +0 -1
  412. sky/dashboard/out/_next/static/chunks/pages/jobs/[job]-dd64309c3fe67ed2.js +0 -11
  413. sky/dashboard/out/_next/static/chunks/pages/jobs/pools/[pool]-07349868f7905d37.js +0 -16
  414. sky/dashboard/out/_next/static/chunks/pages/jobs-1f70d9faa564804f.js +0 -1
  415. sky/dashboard/out/_next/static/chunks/pages/users-018bf31cda52e11b.js +0 -1
  416. sky/dashboard/out/_next/static/chunks/pages/volumes-739726d6b823f532.js +0 -1
  417. sky/dashboard/out/_next/static/chunks/webpack-4fe903277b57b523.js +0 -1
  418. sky/dashboard/out/_next/static/css/4614e06482d7309e.css +0 -3
  419. sky/dashboard/out/_next/static/mS-4qZPSkRuA1u-g2wQhg/_buildManifest.js +0 -1
  420. sky/templates/kubernetes-ssh-jump.yml.j2 +0 -94
  421. sky/utils/kubernetes/cleanup-tunnel.sh +0 -62
  422. sky/utils/kubernetes/deploy_remote_cluster.py +0 -1299
  423. sky/utils/kubernetes/ssh_jump_lifecycle_manager.py +0 -191
  424. skypilot_nightly-1.0.0.dev20250905.dist-info/RECORD +0 -547
  425. skypilot_nightly-1.0.0.dev20250905.dist-info/top_level.txt +0 -1
  426. /sky/dashboard/out/_next/static/{mS-4qZPSkRuA1u-g2wQhg → KYAhEFa3FTfq4JyKVgo-s}/_ssgManifest.js +0 -0
  427. {skypilot_nightly-1.0.0.dev20250905.dist-info → skypilot_nightly-1.0.0.dev20251210.dist-info}/WHEEL +0 -0
  428. {skypilot_nightly-1.0.0.dev20250905.dist-info → skypilot_nightly-1.0.0.dev20251210.dist-info}/entry_points.txt +0 -0
  429. {skypilot_nightly-1.0.0.dev20250905.dist-info → skypilot_nightly-1.0.0.dev20251210.dist-info}/licenses/LICENSE +0 -0
@@ -0,0 +1,34 @@
1
+ """Columns for whether the volume is ephemeral.
2
+
3
+ Revision ID: 011
4
+ Revises: 010
5
+ Create Date: 2025-11-14
6
+
7
+ """
8
+ # pylint: disable=invalid-name
9
+ from typing import Sequence, Union
10
+
11
+ from alembic import op
12
+ import sqlalchemy as sa
13
+
14
+ from sky.utils.db import db_utils
15
+
16
+ # revision identifiers, used by Alembic.π
17
+ revision: str = '011'
18
+ down_revision: Union[str, Sequence[str], None] = '010'
19
+ branch_labels: Union[str, Sequence[str], None] = None
20
+ depends_on: Union[str, Sequence[str], None] = None
21
+
22
+
23
+ def upgrade():
24
+ """Add columns for whether the volume is ephemeral."""
25
+ with op.get_context().autocommit_block():
26
+ db_utils.add_column_to_table_alembic('volumes',
27
+ 'is_ephemeral',
28
+ sa.Integer(),
29
+ server_default='0')
30
+
31
+
32
+ def downgrade():
33
+ """Remove columns for whether the volume is ephemeral."""
34
+ pass
@@ -0,0 +1,29 @@
1
+ """Initial schema for KV cache database
2
+
3
+ Revision ID: 001
4
+ Revises:
5
+ Create Date: 2025-11-13 12:00:00.000000
6
+
7
+ """
8
+ # pylint: disable=invalid-name
9
+ from alembic import op
10
+
11
+ from sky.utils.db import db_utils
12
+ from sky.utils.db.kv_cache import Base
13
+
14
+ # revision identifiers, used by Alembic.
15
+ revision = '001'
16
+ down_revision = None
17
+ branch_labels = None
18
+ depends_on = None
19
+
20
+
21
+ def upgrade():
22
+ with op.get_context().autocommit_block():
23
+ # Create any missing tables with current schema first
24
+ db_utils.add_all_tables_to_db_sqlalchemy(Base.metadata, op.get_bind())
25
+
26
+
27
+ def downgrade():
28
+ # Drop all tables
29
+ Base.metadata.drop_all(bind=op.get_bind())
@@ -0,0 +1,34 @@
1
+ """Columns for cluster pool.
2
+
3
+ Revision ID: 002
4
+ Revises: 001
5
+ Create Date: 2025-07-18
6
+
7
+ """
8
+ # pylint: disable=invalid-name
9
+ from typing import Sequence, Union
10
+
11
+ from alembic import op
12
+ import sqlalchemy as sa
13
+
14
+ from sky.utils.db import db_utils
15
+
16
+ # revision identifiers, used by Alembic.
17
+ revision: str = '002'
18
+ down_revision: Union[str, Sequence[str], None] = '001'
19
+ branch_labels: Union[str, Sequence[str], None] = None
20
+ depends_on: Union[str, Sequence[str], None] = None
21
+
22
+
23
+ def upgrade():
24
+ """Add columns for cluster pool."""
25
+ with op.get_context().autocommit_block():
26
+ db_utils.add_column_to_table_alembic('version_specs',
27
+ 'yaml_content',
28
+ sa.Text(),
29
+ server_default=None)
30
+
31
+
32
+ def downgrade():
33
+ """Remove columns for cluster pool."""
34
+ pass
@@ -0,0 +1,30 @@
1
+ """Initial schema for sky config database
2
+
3
+ Revision ID: 001
4
+ Revises:
5
+ Create Date: 2025-10-21
6
+
7
+ """
8
+ # pylint: disable=invalid-name
9
+ from alembic import op
10
+
11
+ from sky.skypilot_config import Base
12
+ from sky.utils.db import db_utils
13
+
14
+ # revision identifiers, used by Alembic.
15
+ revision = '001'
16
+ down_revision = None
17
+ branch_labels = None
18
+ depends_on = None
19
+
20
+
21
+ def upgrade():
22
+ """Create initial schema for config_yaml table"""
23
+ with op.get_context().autocommit_block():
24
+ # Create all tables with their current schema
25
+ db_utils.add_all_tables_to_db_sqlalchemy(Base.metadata, op.get_bind())
26
+
27
+
28
+ def downgrade():
29
+ """Drop all tables"""
30
+ Base.metadata.drop_all(bind=op.get_bind())
@@ -1,4 +1,4 @@
1
- """Columns for cluster pool.
1
+ """Columns for pool.
2
2
 
3
3
  Revision ID: 002
4
4
  Revises: 001
@@ -21,7 +21,7 @@ depends_on: Union[str, Sequence[str], None] = None
21
21
 
22
22
 
23
23
  def upgrade():
24
- """Add columns for cluster pool."""
24
+ """Add columns for pool."""
25
25
  with op.get_context().autocommit_block():
26
26
  db_utils.add_column_to_table_alembic('job_info',
27
27
  'pool',
@@ -38,5 +38,5 @@ def upgrade():
38
38
 
39
39
 
40
40
  def downgrade():
41
- """Remove columns for cluster pool."""
41
+ """Remove columns for pool."""
42
42
  pass
@@ -0,0 +1,42 @@
1
+ """Add columns for stored DAG/env file contents.
2
+
3
+ Revision ID: 004
4
+ Revises: 003
5
+ Create Date: 2025-10-27
6
+
7
+ """
8
+ # pylint: disable=invalid-name
9
+ from typing import Sequence, Union
10
+
11
+ from alembic import op
12
+ import sqlalchemy as sa
13
+
14
+ from sky.utils.db import db_utils
15
+
16
+ # revision identifiers, used by Alembic.
17
+ revision: str = '004'
18
+ down_revision: Union[str, Sequence[str], None] = '003'
19
+ branch_labels: Union[str, Sequence[str], None] = None
20
+ depends_on: Union[str, Sequence[str], None] = None
21
+
22
+
23
+ def upgrade():
24
+ """Add columns to persist job file contents in the database."""
25
+ with op.get_context().autocommit_block():
26
+ db_utils.add_column_to_table_alembic('job_info',
27
+ 'dag_yaml_content',
28
+ sa.Text(),
29
+ server_default=None)
30
+ db_utils.add_column_to_table_alembic('job_info',
31
+ 'original_user_yaml_content',
32
+ sa.Text(),
33
+ server_default=None)
34
+ db_utils.add_column_to_table_alembic('job_info',
35
+ 'env_file_content',
36
+ sa.Text(),
37
+ server_default=None)
38
+
39
+
40
+ def downgrade():
41
+ """No downgrade logic."""
42
+ pass
@@ -0,0 +1,38 @@
1
+ """Adding columns for the GC time of task logs and controller logs.
2
+
3
+ Revision ID: 005
4
+ Revises: 004
5
+ Create Date: 2025-10-20
6
+
7
+ """
8
+ # pylint: disable=invalid-name
9
+ from typing import Sequence, Union
10
+
11
+ from alembic import op
12
+ import sqlalchemy as sa
13
+
14
+ from sky.utils.db import db_utils
15
+
16
+ # revision identifiers, used by Alembic.
17
+ revision: str = '005'
18
+ down_revision: Union[str, Sequence[str], None] = '004'
19
+ branch_labels: Union[str, Sequence[str], None] = None
20
+ depends_on: Union[str, Sequence[str], None] = None
21
+
22
+
23
+ def upgrade():
24
+ """Add columns for logs gc."""
25
+ with op.get_context().autocommit_block():
26
+ db_utils.add_column_to_table_alembic('job_info',
27
+ 'controller_logs_cleaned_at',
28
+ sa.Float(),
29
+ server_default=None)
30
+ db_utils.add_column_to_table_alembic('spot',
31
+ 'logs_cleaned_at',
32
+ sa.Float(),
33
+ server_default=None)
34
+
35
+
36
+ def downgrade():
37
+ """Remove columns for logs gc."""
38
+ pass
@@ -0,0 +1,34 @@
1
+ """Track controller PID start times.
2
+
3
+ Revision ID: 006
4
+ Revises: 005
5
+ Create Date: 2025-10-31
6
+
7
+ """
8
+ # pylint: disable=invalid-name
9
+ from typing import Sequence, Union
10
+
11
+ from alembic import op
12
+ import sqlalchemy as sa
13
+
14
+ from sky.utils.db import db_utils
15
+
16
+ # revision identifiers, used by Alembic.
17
+ revision: str = '006'
18
+ down_revision: Union[str, Sequence[str], None] = '005'
19
+ branch_labels: Union[str, Sequence[str], None] = None
20
+ depends_on: Union[str, Sequence[str], None] = None
21
+
22
+
23
+ def upgrade():
24
+ """Add controller PID start time column."""
25
+ with op.get_context().autocommit_block():
26
+ db_utils.add_column_to_table_alembic('job_info',
27
+ 'controller_pid_started_at',
28
+ sa.Float(),
29
+ server_default=None)
30
+
31
+
32
+ def downgrade():
33
+ """No-op downgrade for controller PID start time column."""
34
+ pass
@@ -0,0 +1,34 @@
1
+ """Add config_file_content column for persisting job config files.
2
+
3
+ Revision ID: 007
4
+ Revises: 006
5
+ Create Date: 2025-11-19
6
+
7
+ """
8
+ # pylint: disable=invalid-name
9
+ from typing import Sequence, Union
10
+
11
+ from alembic import op
12
+ import sqlalchemy as sa
13
+
14
+ from sky.utils.db import db_utils
15
+
16
+ # revision identifiers, used by Alembic.
17
+ revision: str = '007'
18
+ down_revision: Union[str, Sequence[str], None] = '006'
19
+ branch_labels: Union[str, Sequence[str], None] = None
20
+ depends_on: Union[str, Sequence[str], None] = None
21
+
22
+
23
+ def upgrade():
24
+ """Add config_file_content column to persist job config file contents."""
25
+ with op.get_context().autocommit_block():
26
+ db_utils.add_column_to_table_alembic('job_info',
27
+ 'config_file_content',
28
+ sa.Text(),
29
+ server_default=None)
30
+
31
+
32
+ def downgrade():
33
+ """No downgrade logic."""
34
+ pass
@@ -0,0 +1,86 @@
1
+ # -*- coding: utf-8 -*-
2
+ # Generated by the protocol buffer compiler. DO NOT EDIT!
3
+ # source: sky/schemas/generated/jobsv1.proto
4
+ # Protobuf Python Version: 5.26.1
5
+ """Generated protocol buffer code."""
6
+ from google.protobuf import descriptor as _descriptor
7
+ from google.protobuf import descriptor_pool as _descriptor_pool
8
+ from google.protobuf import symbol_database as _symbol_database
9
+ from google.protobuf.internal import builder as _builder
10
+ # @@protoc_insertion_point(imports)
11
+
12
+ _sym_db = _symbol_database.Default()
13
+
14
+
15
+
16
+
17
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\"sky/schemas/generated/jobsv1.proto\x12\x07jobs.v1\"\x85\x01\n\rAddJobRequest\x12\x15\n\x08job_name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x10\n\x08username\x18\x02 \x01(\t\x12\x15\n\rrun_timestamp\x18\x03 \x01(\t\x12\x15\n\rresources_str\x18\x04 \x01(\t\x12\x10\n\x08metadata\x18\x05 \x01(\tB\x0b\n\t_job_name\"1\n\x0e\x41\x64\x64JobResponse\x12\x0e\n\x06job_id\x18\x01 \x01(\x03\x12\x0f\n\x07log_dir\x18\x02 \x01(\t\"\xb3\x01\n\x0fQueueJobRequest\x12\x0e\n\x06job_id\x18\x01 \x01(\x03\x12\x14\n\x07\x63odegen\x18\x02 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x0bscript_path\x18\x03 \x01(\t\x12\x16\n\x0eremote_log_dir\x18\x04 \x01(\t\x12\x31\n\x0bmanaged_job\x18\x05 \x01(\x0b\x32\x17.jobs.v1.ManagedJobInfoH\x01\x88\x01\x01\x42\n\n\x08_codegenB\x0e\n\x0c_managed_job\"\xab\x01\n\x0eManagedJobInfo\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x11\n\x04pool\x18\x02 \x01(\tH\x00\x88\x01\x01\x12\x11\n\tworkspace\x18\x03 \x01(\t\x12\x12\n\nentrypoint\x18\x04 \x01(\t\x12&\n\x05tasks\x18\x05 \x03(\x0b\x32\x17.jobs.v1.ManagedJobTask\x12\x14\n\x07user_id\x18\x06 \x01(\tH\x01\x88\x01\x01\x42\x07\n\x05_poolB\n\n\x08_user_id\"]\n\x0eManagedJobTask\x12\x0f\n\x07task_id\x18\x01 \x01(\x05\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x15\n\rresources_str\x18\x03 \x01(\t\x12\x15\n\rmetadata_json\x18\x04 \x01(\t\"\x12\n\x10QueueJobResponse\"\x15\n\x13UpdateStatusRequest\"\x16\n\x14UpdateStatusResponse\"L\n\x12GetJobQueueRequest\x12\x16\n\tuser_hash\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x10\n\x08\x61ll_jobs\x18\x02 \x01(\x08\x42\x0c\n\n_user_hash\"\xa3\x02\n\x07JobInfo\x12\x0e\n\x06job_id\x18\x01 \x01(\x03\x12\x10\n\x08job_name\x18\x02 \x01(\t\x12\x10\n\x08username\x18\x03 \x01(\t\x12\x14\n\x0csubmitted_at\x18\x04 \x01(\x01\x12\"\n\x06status\x18\x05 \x01(\x0e\x32\x12.jobs.v1.JobStatus\x12\x15\n\rrun_timestamp\x18\x06 \x01(\t\x12\x15\n\x08start_at\x18\x07 \x01(\x01H\x00\x88\x01\x01\x12\x13\n\x06\x65nd_at\x18\x08 \x01(\x01H\x01\x88\x01\x01\x12\x11\n\tresources\x18\t \x01(\t\x12\x10\n\x03pid\x18\n \x01(\x03H\x02\x88\x01\x01\x12\x10\n\x08log_path\x18\x0b \x01(\t\x12\x10\n\x08metadata\x18\x0c \x01(\tB\x0b\n\t_start_atB\t\n\x07_end_atB\x06\n\x04_pid\"5\n\x13GetJobQueueResponse\x12\x1e\n\x04jobs\x18\x01 \x03(\x0b\x32\x10.jobs.v1.JobInfo\"^\n\x11\x43\x61ncelJobsRequest\x12\x0f\n\x07job_ids\x18\x01 \x03(\x03\x12\x12\n\ncancel_all\x18\x02 \x01(\x08\x12\x16\n\tuser_hash\x18\x03 \x01(\tH\x00\x88\x01\x01\x42\x0c\n\n_user_hash\"/\n\x12\x43\x61ncelJobsResponse\x12\x19\n\x11\x63\x61ncelled_job_ids\x18\x01 \x03(\x03\"\x1e\n\x1c\x46\x61ilAllInProgressJobsRequest\"\x1f\n\x1d\x46\x61ilAllInProgressJobsResponse\"\x7f\n\x0fTailLogsRequest\x12\x13\n\x06job_id\x18\x01 \x01(\x03H\x00\x88\x01\x01\x12\x1b\n\x0emanaged_job_id\x18\x02 \x01(\x03H\x01\x88\x01\x01\x12\x0e\n\x06\x66ollow\x18\x03 \x01(\x08\x12\x0c\n\x04tail\x18\x04 \x01(\x05\x42\t\n\x07_job_idB\x11\n\x0f_managed_job_id\"7\n\x10TailLogsResponse\x12\x10\n\x08log_line\x18\x01 \x01(\t\x12\x11\n\texit_code\x18\x02 \x01(\x05\"&\n\x13GetJobStatusRequest\x12\x0f\n\x07job_ids\x18\x01 \x03(\x03\"\xa4\x01\n\x14GetJobStatusResponse\x12\x44\n\x0cjob_statuses\x18\x01 \x03(\x0b\x32..jobs.v1.GetJobStatusResponse.JobStatusesEntry\x1a\x46\n\x10JobStatusesEntry\x12\x0b\n\x03key\x18\x01 \x01(\x03\x12!\n\x05value\x18\x02 \x01(\x0e\x32\x12.jobs.v1.JobStatus:\x02\x38\x01\"A\n\x1fGetJobSubmittedTimestampRequest\x12\x13\n\x06job_id\x18\x01 \x01(\x03H\x00\x88\x01\x01\x42\t\n\x07_job_id\"5\n GetJobSubmittedTimestampResponse\x12\x11\n\ttimestamp\x18\x01 \x01(\x02\"=\n\x1bGetJobEndedTimestampRequest\x12\x13\n\x06job_id\x18\x01 \x01(\x03H\x00\x88\x01\x01\x42\t\n\x07_job_id\"1\n\x1cGetJobEndedTimestampResponse\x12\x11\n\ttimestamp\x18\x01 \x01(\x02\"+\n\x18GetLogDirsForJobsRequest\x12\x0f\n\x07job_ids\x18\x01 \x03(\x03\"\x98\x01\n\x19GetLogDirsForJobsResponse\x12H\n\x0cjob_log_dirs\x18\x01 \x03(\x0b\x32\x32.jobs.v1.GetLogDirsForJobsResponse.JobLogDirsEntry\x1a\x31\n\x0fJobLogDirsEntry\x12\x0b\n\x03key\x18\x01 \x01(\x03\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01*\x8d\x02\n\tJobStatus\x12\x1a\n\x16JOB_STATUS_UNSPECIFIED\x10\x00\x12\x13\n\x0fJOB_STATUS_INIT\x10\x01\x12\x16\n\x12JOB_STATUS_PENDING\x10\x02\x12\x19\n\x15JOB_STATUS_SETTING_UP\x10\x03\x12\x16\n\x12JOB_STATUS_RUNNING\x10\x04\x12\x1c\n\x18JOB_STATUS_FAILED_DRIVER\x10\x05\x12\x18\n\x14JOB_STATUS_SUCCEEDED\x10\x06\x12\x15\n\x11JOB_STATUS_FAILED\x10\x07\x12\x1b\n\x17JOB_STATUS_FAILED_SETUP\x10\x08\x12\x18\n\x14JOB_STATUS_CANCELLED\x10\t2\x91\x07\n\x0bJobsService\x12\x39\n\x06\x41\x64\x64Job\x12\x16.jobs.v1.AddJobRequest\x1a\x17.jobs.v1.AddJobResponse\x12?\n\x08QueueJob\x12\x18.jobs.v1.QueueJobRequest\x1a\x19.jobs.v1.QueueJobResponse\x12K\n\x0cUpdateStatus\x12\x1c.jobs.v1.UpdateStatusRequest\x1a\x1d.jobs.v1.UpdateStatusResponse\x12H\n\x0bGetJobQueue\x12\x1b.jobs.v1.GetJobQueueRequest\x1a\x1c.jobs.v1.GetJobQueueResponse\x12\x45\n\nCancelJobs\x12\x1a.jobs.v1.CancelJobsRequest\x1a\x1b.jobs.v1.CancelJobsResponse\x12\x66\n\x15\x46\x61ilAllInProgressJobs\x12%.jobs.v1.FailAllInProgressJobsRequest\x1a&.jobs.v1.FailAllInProgressJobsResponse\x12\x41\n\x08TailLogs\x12\x18.jobs.v1.TailLogsRequest\x1a\x19.jobs.v1.TailLogsResponse0\x01\x12K\n\x0cGetJobStatus\x12\x1c.jobs.v1.GetJobStatusRequest\x1a\x1d.jobs.v1.GetJobStatusResponse\x12o\n\x18GetJobSubmittedTimestamp\x12(.jobs.v1.GetJobSubmittedTimestampRequest\x1a).jobs.v1.GetJobSubmittedTimestampResponse\x12\x63\n\x14GetJobEndedTimestamp\x12$.jobs.v1.GetJobEndedTimestampRequest\x1a%.jobs.v1.GetJobEndedTimestampResponse\x12Z\n\x11GetLogDirsForJobs\x12!.jobs.v1.GetLogDirsForJobsRequest\x1a\".jobs.v1.GetLogDirsForJobsResponseb\x06proto3')
18
+
19
+ _globals = globals()
20
+ _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
21
+ _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'sky.schemas.generated.jobsv1_pb2', _globals)
22
+ if not _descriptor._USE_C_DESCRIPTORS:
23
+ DESCRIPTOR._loaded_options = None
24
+ _globals['_GETJOBSTATUSRESPONSE_JOBSTATUSESENTRY']._loaded_options = None
25
+ _globals['_GETJOBSTATUSRESPONSE_JOBSTATUSESENTRY']._serialized_options = b'8\001'
26
+ _globals['_GETLOGDIRSFORJOBSRESPONSE_JOBLOGDIRSENTRY']._loaded_options = None
27
+ _globals['_GETLOGDIRSFORJOBSRESPONSE_JOBLOGDIRSENTRY']._serialized_options = b'8\001'
28
+ _globals['_JOBSTATUS']._serialized_start=2219
29
+ _globals['_JOBSTATUS']._serialized_end=2488
30
+ _globals['_ADDJOBREQUEST']._serialized_start=48
31
+ _globals['_ADDJOBREQUEST']._serialized_end=181
32
+ _globals['_ADDJOBRESPONSE']._serialized_start=183
33
+ _globals['_ADDJOBRESPONSE']._serialized_end=232
34
+ _globals['_QUEUEJOBREQUEST']._serialized_start=235
35
+ _globals['_QUEUEJOBREQUEST']._serialized_end=414
36
+ _globals['_MANAGEDJOBINFO']._serialized_start=417
37
+ _globals['_MANAGEDJOBINFO']._serialized_end=588
38
+ _globals['_MANAGEDJOBTASK']._serialized_start=590
39
+ _globals['_MANAGEDJOBTASK']._serialized_end=683
40
+ _globals['_QUEUEJOBRESPONSE']._serialized_start=685
41
+ _globals['_QUEUEJOBRESPONSE']._serialized_end=703
42
+ _globals['_UPDATESTATUSREQUEST']._serialized_start=705
43
+ _globals['_UPDATESTATUSREQUEST']._serialized_end=726
44
+ _globals['_UPDATESTATUSRESPONSE']._serialized_start=728
45
+ _globals['_UPDATESTATUSRESPONSE']._serialized_end=750
46
+ _globals['_GETJOBQUEUEREQUEST']._serialized_start=752
47
+ _globals['_GETJOBQUEUEREQUEST']._serialized_end=828
48
+ _globals['_JOBINFO']._serialized_start=831
49
+ _globals['_JOBINFO']._serialized_end=1122
50
+ _globals['_GETJOBQUEUERESPONSE']._serialized_start=1124
51
+ _globals['_GETJOBQUEUERESPONSE']._serialized_end=1177
52
+ _globals['_CANCELJOBSREQUEST']._serialized_start=1179
53
+ _globals['_CANCELJOBSREQUEST']._serialized_end=1273
54
+ _globals['_CANCELJOBSRESPONSE']._serialized_start=1275
55
+ _globals['_CANCELJOBSRESPONSE']._serialized_end=1322
56
+ _globals['_FAILALLINPROGRESSJOBSREQUEST']._serialized_start=1324
57
+ _globals['_FAILALLINPROGRESSJOBSREQUEST']._serialized_end=1354
58
+ _globals['_FAILALLINPROGRESSJOBSRESPONSE']._serialized_start=1356
59
+ _globals['_FAILALLINPROGRESSJOBSRESPONSE']._serialized_end=1387
60
+ _globals['_TAILLOGSREQUEST']._serialized_start=1389
61
+ _globals['_TAILLOGSREQUEST']._serialized_end=1516
62
+ _globals['_TAILLOGSRESPONSE']._serialized_start=1518
63
+ _globals['_TAILLOGSRESPONSE']._serialized_end=1573
64
+ _globals['_GETJOBSTATUSREQUEST']._serialized_start=1575
65
+ _globals['_GETJOBSTATUSREQUEST']._serialized_end=1613
66
+ _globals['_GETJOBSTATUSRESPONSE']._serialized_start=1616
67
+ _globals['_GETJOBSTATUSRESPONSE']._serialized_end=1780
68
+ _globals['_GETJOBSTATUSRESPONSE_JOBSTATUSESENTRY']._serialized_start=1710
69
+ _globals['_GETJOBSTATUSRESPONSE_JOBSTATUSESENTRY']._serialized_end=1780
70
+ _globals['_GETJOBSUBMITTEDTIMESTAMPREQUEST']._serialized_start=1782
71
+ _globals['_GETJOBSUBMITTEDTIMESTAMPREQUEST']._serialized_end=1847
72
+ _globals['_GETJOBSUBMITTEDTIMESTAMPRESPONSE']._serialized_start=1849
73
+ _globals['_GETJOBSUBMITTEDTIMESTAMPRESPONSE']._serialized_end=1902
74
+ _globals['_GETJOBENDEDTIMESTAMPREQUEST']._serialized_start=1904
75
+ _globals['_GETJOBENDEDTIMESTAMPREQUEST']._serialized_end=1965
76
+ _globals['_GETJOBENDEDTIMESTAMPRESPONSE']._serialized_start=1967
77
+ _globals['_GETJOBENDEDTIMESTAMPRESPONSE']._serialized_end=2016
78
+ _globals['_GETLOGDIRSFORJOBSREQUEST']._serialized_start=2018
79
+ _globals['_GETLOGDIRSFORJOBSREQUEST']._serialized_end=2061
80
+ _globals['_GETLOGDIRSFORJOBSRESPONSE']._serialized_start=2064
81
+ _globals['_GETLOGDIRSFORJOBSRESPONSE']._serialized_end=2216
82
+ _globals['_GETLOGDIRSFORJOBSRESPONSE_JOBLOGDIRSENTRY']._serialized_start=2167
83
+ _globals['_GETLOGDIRSFORJOBSRESPONSE_JOBLOGDIRSENTRY']._serialized_end=2216
84
+ _globals['_JOBSSERVICE']._serialized_start=2491
85
+ _globals['_JOBSSERVICE']._serialized_end=3404
86
+ # @@protoc_insertion_point(module_scope)
@@ -0,0 +1,254 @@
1
+ from google.protobuf.internal import containers as _containers
2
+ from google.protobuf.internal import enum_type_wrapper as _enum_type_wrapper
3
+ from google.protobuf import descriptor as _descriptor
4
+ from google.protobuf import message as _message
5
+ from typing import ClassVar as _ClassVar, Iterable as _Iterable, Mapping as _Mapping, Optional as _Optional, Union as _Union
6
+
7
+ DESCRIPTOR: _descriptor.FileDescriptor
8
+
9
+ class JobStatus(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
10
+ __slots__ = ()
11
+ JOB_STATUS_UNSPECIFIED: _ClassVar[JobStatus]
12
+ JOB_STATUS_INIT: _ClassVar[JobStatus]
13
+ JOB_STATUS_PENDING: _ClassVar[JobStatus]
14
+ JOB_STATUS_SETTING_UP: _ClassVar[JobStatus]
15
+ JOB_STATUS_RUNNING: _ClassVar[JobStatus]
16
+ JOB_STATUS_FAILED_DRIVER: _ClassVar[JobStatus]
17
+ JOB_STATUS_SUCCEEDED: _ClassVar[JobStatus]
18
+ JOB_STATUS_FAILED: _ClassVar[JobStatus]
19
+ JOB_STATUS_FAILED_SETUP: _ClassVar[JobStatus]
20
+ JOB_STATUS_CANCELLED: _ClassVar[JobStatus]
21
+ JOB_STATUS_UNSPECIFIED: JobStatus
22
+ JOB_STATUS_INIT: JobStatus
23
+ JOB_STATUS_PENDING: JobStatus
24
+ JOB_STATUS_SETTING_UP: JobStatus
25
+ JOB_STATUS_RUNNING: JobStatus
26
+ JOB_STATUS_FAILED_DRIVER: JobStatus
27
+ JOB_STATUS_SUCCEEDED: JobStatus
28
+ JOB_STATUS_FAILED: JobStatus
29
+ JOB_STATUS_FAILED_SETUP: JobStatus
30
+ JOB_STATUS_CANCELLED: JobStatus
31
+
32
+ class AddJobRequest(_message.Message):
33
+ __slots__ = ("job_name", "username", "run_timestamp", "resources_str", "metadata")
34
+ JOB_NAME_FIELD_NUMBER: _ClassVar[int]
35
+ USERNAME_FIELD_NUMBER: _ClassVar[int]
36
+ RUN_TIMESTAMP_FIELD_NUMBER: _ClassVar[int]
37
+ RESOURCES_STR_FIELD_NUMBER: _ClassVar[int]
38
+ METADATA_FIELD_NUMBER: _ClassVar[int]
39
+ job_name: str
40
+ username: str
41
+ run_timestamp: str
42
+ resources_str: str
43
+ metadata: str
44
+ def __init__(self, job_name: _Optional[str] = ..., username: _Optional[str] = ..., run_timestamp: _Optional[str] = ..., resources_str: _Optional[str] = ..., metadata: _Optional[str] = ...) -> None: ...
45
+
46
+ class AddJobResponse(_message.Message):
47
+ __slots__ = ("job_id", "log_dir")
48
+ JOB_ID_FIELD_NUMBER: _ClassVar[int]
49
+ LOG_DIR_FIELD_NUMBER: _ClassVar[int]
50
+ job_id: int
51
+ log_dir: str
52
+ def __init__(self, job_id: _Optional[int] = ..., log_dir: _Optional[str] = ...) -> None: ...
53
+
54
+ class QueueJobRequest(_message.Message):
55
+ __slots__ = ("job_id", "codegen", "script_path", "remote_log_dir", "managed_job")
56
+ JOB_ID_FIELD_NUMBER: _ClassVar[int]
57
+ CODEGEN_FIELD_NUMBER: _ClassVar[int]
58
+ SCRIPT_PATH_FIELD_NUMBER: _ClassVar[int]
59
+ REMOTE_LOG_DIR_FIELD_NUMBER: _ClassVar[int]
60
+ MANAGED_JOB_FIELD_NUMBER: _ClassVar[int]
61
+ job_id: int
62
+ codegen: str
63
+ script_path: str
64
+ remote_log_dir: str
65
+ managed_job: ManagedJobInfo
66
+ def __init__(self, job_id: _Optional[int] = ..., codegen: _Optional[str] = ..., script_path: _Optional[str] = ..., remote_log_dir: _Optional[str] = ..., managed_job: _Optional[_Union[ManagedJobInfo, _Mapping]] = ...) -> None: ...
67
+
68
+ class ManagedJobInfo(_message.Message):
69
+ __slots__ = ("name", "pool", "workspace", "entrypoint", "tasks", "user_id")
70
+ NAME_FIELD_NUMBER: _ClassVar[int]
71
+ POOL_FIELD_NUMBER: _ClassVar[int]
72
+ WORKSPACE_FIELD_NUMBER: _ClassVar[int]
73
+ ENTRYPOINT_FIELD_NUMBER: _ClassVar[int]
74
+ TASKS_FIELD_NUMBER: _ClassVar[int]
75
+ USER_ID_FIELD_NUMBER: _ClassVar[int]
76
+ name: str
77
+ pool: str
78
+ workspace: str
79
+ entrypoint: str
80
+ tasks: _containers.RepeatedCompositeFieldContainer[ManagedJobTask]
81
+ user_id: str
82
+ def __init__(self, name: _Optional[str] = ..., pool: _Optional[str] = ..., workspace: _Optional[str] = ..., entrypoint: _Optional[str] = ..., tasks: _Optional[_Iterable[_Union[ManagedJobTask, _Mapping]]] = ..., user_id: _Optional[str] = ...) -> None: ...
83
+
84
+ class ManagedJobTask(_message.Message):
85
+ __slots__ = ("task_id", "name", "resources_str", "metadata_json")
86
+ TASK_ID_FIELD_NUMBER: _ClassVar[int]
87
+ NAME_FIELD_NUMBER: _ClassVar[int]
88
+ RESOURCES_STR_FIELD_NUMBER: _ClassVar[int]
89
+ METADATA_JSON_FIELD_NUMBER: _ClassVar[int]
90
+ task_id: int
91
+ name: str
92
+ resources_str: str
93
+ metadata_json: str
94
+ def __init__(self, task_id: _Optional[int] = ..., name: _Optional[str] = ..., resources_str: _Optional[str] = ..., metadata_json: _Optional[str] = ...) -> None: ...
95
+
96
+ class QueueJobResponse(_message.Message):
97
+ __slots__ = ()
98
+ def __init__(self) -> None: ...
99
+
100
+ class UpdateStatusRequest(_message.Message):
101
+ __slots__ = ()
102
+ def __init__(self) -> None: ...
103
+
104
+ class UpdateStatusResponse(_message.Message):
105
+ __slots__ = ()
106
+ def __init__(self) -> None: ...
107
+
108
+ class GetJobQueueRequest(_message.Message):
109
+ __slots__ = ("user_hash", "all_jobs")
110
+ USER_HASH_FIELD_NUMBER: _ClassVar[int]
111
+ ALL_JOBS_FIELD_NUMBER: _ClassVar[int]
112
+ user_hash: str
113
+ all_jobs: bool
114
+ def __init__(self, user_hash: _Optional[str] = ..., all_jobs: bool = ...) -> None: ...
115
+
116
+ class JobInfo(_message.Message):
117
+ __slots__ = ("job_id", "job_name", "username", "submitted_at", "status", "run_timestamp", "start_at", "end_at", "resources", "pid", "log_path", "metadata")
118
+ JOB_ID_FIELD_NUMBER: _ClassVar[int]
119
+ JOB_NAME_FIELD_NUMBER: _ClassVar[int]
120
+ USERNAME_FIELD_NUMBER: _ClassVar[int]
121
+ SUBMITTED_AT_FIELD_NUMBER: _ClassVar[int]
122
+ STATUS_FIELD_NUMBER: _ClassVar[int]
123
+ RUN_TIMESTAMP_FIELD_NUMBER: _ClassVar[int]
124
+ START_AT_FIELD_NUMBER: _ClassVar[int]
125
+ END_AT_FIELD_NUMBER: _ClassVar[int]
126
+ RESOURCES_FIELD_NUMBER: _ClassVar[int]
127
+ PID_FIELD_NUMBER: _ClassVar[int]
128
+ LOG_PATH_FIELD_NUMBER: _ClassVar[int]
129
+ METADATA_FIELD_NUMBER: _ClassVar[int]
130
+ job_id: int
131
+ job_name: str
132
+ username: str
133
+ submitted_at: float
134
+ status: JobStatus
135
+ run_timestamp: str
136
+ start_at: float
137
+ end_at: float
138
+ resources: str
139
+ pid: int
140
+ log_path: str
141
+ metadata: str
142
+ def __init__(self, job_id: _Optional[int] = ..., job_name: _Optional[str] = ..., username: _Optional[str] = ..., submitted_at: _Optional[float] = ..., status: _Optional[_Union[JobStatus, str]] = ..., run_timestamp: _Optional[str] = ..., start_at: _Optional[float] = ..., end_at: _Optional[float] = ..., resources: _Optional[str] = ..., pid: _Optional[int] = ..., log_path: _Optional[str] = ..., metadata: _Optional[str] = ...) -> None: ...
143
+
144
+ class GetJobQueueResponse(_message.Message):
145
+ __slots__ = ("jobs",)
146
+ JOBS_FIELD_NUMBER: _ClassVar[int]
147
+ jobs: _containers.RepeatedCompositeFieldContainer[JobInfo]
148
+ def __init__(self, jobs: _Optional[_Iterable[_Union[JobInfo, _Mapping]]] = ...) -> None: ...
149
+
150
+ class CancelJobsRequest(_message.Message):
151
+ __slots__ = ("job_ids", "cancel_all", "user_hash")
152
+ JOB_IDS_FIELD_NUMBER: _ClassVar[int]
153
+ CANCEL_ALL_FIELD_NUMBER: _ClassVar[int]
154
+ USER_HASH_FIELD_NUMBER: _ClassVar[int]
155
+ job_ids: _containers.RepeatedScalarFieldContainer[int]
156
+ cancel_all: bool
157
+ user_hash: str
158
+ def __init__(self, job_ids: _Optional[_Iterable[int]] = ..., cancel_all: bool = ..., user_hash: _Optional[str] = ...) -> None: ...
159
+
160
+ class CancelJobsResponse(_message.Message):
161
+ __slots__ = ("cancelled_job_ids",)
162
+ CANCELLED_JOB_IDS_FIELD_NUMBER: _ClassVar[int]
163
+ cancelled_job_ids: _containers.RepeatedScalarFieldContainer[int]
164
+ def __init__(self, cancelled_job_ids: _Optional[_Iterable[int]] = ...) -> None: ...
165
+
166
+ class FailAllInProgressJobsRequest(_message.Message):
167
+ __slots__ = ()
168
+ def __init__(self) -> None: ...
169
+
170
+ class FailAllInProgressJobsResponse(_message.Message):
171
+ __slots__ = ()
172
+ def __init__(self) -> None: ...
173
+
174
+ class TailLogsRequest(_message.Message):
175
+ __slots__ = ("job_id", "managed_job_id", "follow", "tail")
176
+ JOB_ID_FIELD_NUMBER: _ClassVar[int]
177
+ MANAGED_JOB_ID_FIELD_NUMBER: _ClassVar[int]
178
+ FOLLOW_FIELD_NUMBER: _ClassVar[int]
179
+ TAIL_FIELD_NUMBER: _ClassVar[int]
180
+ job_id: int
181
+ managed_job_id: int
182
+ follow: bool
183
+ tail: int
184
+ def __init__(self, job_id: _Optional[int] = ..., managed_job_id: _Optional[int] = ..., follow: bool = ..., tail: _Optional[int] = ...) -> None: ...
185
+
186
+ class TailLogsResponse(_message.Message):
187
+ __slots__ = ("log_line", "exit_code")
188
+ LOG_LINE_FIELD_NUMBER: _ClassVar[int]
189
+ EXIT_CODE_FIELD_NUMBER: _ClassVar[int]
190
+ log_line: str
191
+ exit_code: int
192
+ def __init__(self, log_line: _Optional[str] = ..., exit_code: _Optional[int] = ...) -> None: ...
193
+
194
+ class GetJobStatusRequest(_message.Message):
195
+ __slots__ = ("job_ids",)
196
+ JOB_IDS_FIELD_NUMBER: _ClassVar[int]
197
+ job_ids: _containers.RepeatedScalarFieldContainer[int]
198
+ def __init__(self, job_ids: _Optional[_Iterable[int]] = ...) -> None: ...
199
+
200
+ class GetJobStatusResponse(_message.Message):
201
+ __slots__ = ("job_statuses",)
202
+ class JobStatusesEntry(_message.Message):
203
+ __slots__ = ("key", "value")
204
+ KEY_FIELD_NUMBER: _ClassVar[int]
205
+ VALUE_FIELD_NUMBER: _ClassVar[int]
206
+ key: int
207
+ value: JobStatus
208
+ def __init__(self, key: _Optional[int] = ..., value: _Optional[_Union[JobStatus, str]] = ...) -> None: ...
209
+ JOB_STATUSES_FIELD_NUMBER: _ClassVar[int]
210
+ job_statuses: _containers.ScalarMap[int, JobStatus]
211
+ def __init__(self, job_statuses: _Optional[_Mapping[int, JobStatus]] = ...) -> None: ...
212
+
213
+ class GetJobSubmittedTimestampRequest(_message.Message):
214
+ __slots__ = ("job_id",)
215
+ JOB_ID_FIELD_NUMBER: _ClassVar[int]
216
+ job_id: int
217
+ def __init__(self, job_id: _Optional[int] = ...) -> None: ...
218
+
219
+ class GetJobSubmittedTimestampResponse(_message.Message):
220
+ __slots__ = ("timestamp",)
221
+ TIMESTAMP_FIELD_NUMBER: _ClassVar[int]
222
+ timestamp: float
223
+ def __init__(self, timestamp: _Optional[float] = ...) -> None: ...
224
+
225
+ class GetJobEndedTimestampRequest(_message.Message):
226
+ __slots__ = ("job_id",)
227
+ JOB_ID_FIELD_NUMBER: _ClassVar[int]
228
+ job_id: int
229
+ def __init__(self, job_id: _Optional[int] = ...) -> None: ...
230
+
231
+ class GetJobEndedTimestampResponse(_message.Message):
232
+ __slots__ = ("timestamp",)
233
+ TIMESTAMP_FIELD_NUMBER: _ClassVar[int]
234
+ timestamp: float
235
+ def __init__(self, timestamp: _Optional[float] = ...) -> None: ...
236
+
237
+ class GetLogDirsForJobsRequest(_message.Message):
238
+ __slots__ = ("job_ids",)
239
+ JOB_IDS_FIELD_NUMBER: _ClassVar[int]
240
+ job_ids: _containers.RepeatedScalarFieldContainer[int]
241
+ def __init__(self, job_ids: _Optional[_Iterable[int]] = ...) -> None: ...
242
+
243
+ class GetLogDirsForJobsResponse(_message.Message):
244
+ __slots__ = ("job_log_dirs",)
245
+ class JobLogDirsEntry(_message.Message):
246
+ __slots__ = ("key", "value")
247
+ KEY_FIELD_NUMBER: _ClassVar[int]
248
+ VALUE_FIELD_NUMBER: _ClassVar[int]
249
+ key: int
250
+ value: str
251
+ def __init__(self, key: _Optional[int] = ..., value: _Optional[str] = ...) -> None: ...
252
+ JOB_LOG_DIRS_FIELD_NUMBER: _ClassVar[int]
253
+ job_log_dirs: _containers.ScalarMap[int, str]
254
+ def __init__(self, job_log_dirs: _Optional[_Mapping[int, str]] = ...) -> None: ...