skypilot-nightly 1.0.0.dev20250927__py3-none-any.whl → 1.0.0.dev20251002__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.

Potentially problematic release.


This version of skypilot-nightly might be problematic. Click here for more details.

Files changed (54) hide show
  1. sky/__init__.py +2 -2
  2. sky/backends/backend_utils.py +18 -10
  3. sky/backends/cloud_vm_ray_backend.py +2 -2
  4. sky/check.py +0 -29
  5. sky/client/cli/command.py +48 -28
  6. sky/client/cli/table_utils.py +279 -1
  7. sky/client/sdk.py +7 -18
  8. sky/core.py +15 -16
  9. sky/dashboard/out/404.html +1 -1
  10. sky/dashboard/out/_next/static/{UDSEoDB67vwFMZyCJ4HWU → 16g0-hgEgk6Db72hpE8MY}/_buildManifest.js +1 -1
  11. sky/dashboard/out/_next/static/chunks/pages/jobs/pools/{[pool]-07349868f7905d37.js → [pool]-509b2977a6373bf6.js} +1 -1
  12. sky/dashboard/out/clusters/[cluster]/[job].html +1 -1
  13. sky/dashboard/out/clusters/[cluster].html +1 -1
  14. sky/dashboard/out/clusters.html +1 -1
  15. sky/dashboard/out/config.html +1 -1
  16. sky/dashboard/out/index.html +1 -1
  17. sky/dashboard/out/infra/[context].html +1 -1
  18. sky/dashboard/out/infra.html +1 -1
  19. sky/dashboard/out/jobs/[job].html +1 -1
  20. sky/dashboard/out/jobs/pools/[pool].html +1 -1
  21. sky/dashboard/out/jobs.html +1 -1
  22. sky/dashboard/out/users.html +1 -1
  23. sky/dashboard/out/volumes.html +1 -1
  24. sky/dashboard/out/workspace/new.html +1 -1
  25. sky/dashboard/out/workspaces/[name].html +1 -1
  26. sky/dashboard/out/workspaces.html +1 -1
  27. sky/data/storage.py +11 -0
  28. sky/data/storage_utils.py +1 -45
  29. sky/jobs/client/sdk.py +3 -2
  30. sky/jobs/controller.py +15 -0
  31. sky/jobs/server/core.py +24 -2
  32. sky/jobs/server/server.py +1 -1
  33. sky/jobs/utils.py +2 -1
  34. sky/provision/kubernetes/instance.py +1 -1
  35. sky/provision/kubernetes/utils.py +50 -28
  36. sky/schemas/api/responses.py +76 -0
  37. sky/server/common.py +2 -1
  38. sky/server/requests/serializers/decoders.py +16 -4
  39. sky/server/requests/serializers/encoders.py +12 -5
  40. sky/task.py +4 -0
  41. sky/utils/cluster_utils.py +23 -5
  42. sky/utils/command_runner.py +21 -5
  43. sky/utils/command_runner.pyi +11 -0
  44. sky/utils/volume.py +5 -0
  45. sky/volumes/client/sdk.py +3 -2
  46. sky/volumes/server/core.py +3 -2
  47. {skypilot_nightly-1.0.0.dev20250927.dist-info → skypilot_nightly-1.0.0.dev20251002.dist-info}/METADATA +33 -33
  48. {skypilot_nightly-1.0.0.dev20250927.dist-info → skypilot_nightly-1.0.0.dev20251002.dist-info}/RECORD +53 -54
  49. sky/volumes/utils.py +0 -224
  50. /sky/dashboard/out/_next/static/{UDSEoDB67vwFMZyCJ4HWU → 16g0-hgEgk6Db72hpE8MY}/_ssgManifest.js +0 -0
  51. {skypilot_nightly-1.0.0.dev20250927.dist-info → skypilot_nightly-1.0.0.dev20251002.dist-info}/WHEEL +0 -0
  52. {skypilot_nightly-1.0.0.dev20250927.dist-info → skypilot_nightly-1.0.0.dev20251002.dist-info}/entry_points.txt +0 -0
  53. {skypilot_nightly-1.0.0.dev20250927.dist-info → skypilot_nightly-1.0.0.dev20251002.dist-info}/licenses/LICENSE +0 -0
  54. {skypilot_nightly-1.0.0.dev20250927.dist-info → skypilot_nightly-1.0.0.dev20251002.dist-info}/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: skypilot-nightly
3
- Version: 1.0.0.dev20250927
3
+ Version: 1.0.0.dev20251002
4
4
  Summary: SkyPilot: Run AI on Any Infra — Unified, Faster, Cheaper.
5
5
  Author: SkyPilot Team
6
6
  License: Apache 2.0
@@ -154,51 +154,51 @@ Requires-Dist: protobuf<7.0.0,>=5.26.1; extra == "server"
154
154
  Requires-Dist: aiosqlite; extra == "server"
155
155
  Requires-Dist: greenlet; extra == "server"
156
156
  Provides-Extra: all
157
+ Requires-Dist: casbin; extra == "all"
157
158
  Requires-Dist: azure-core>=1.31.0; extra == "all"
158
- Requires-Dist: runpod>=1.6.1; extra == "all"
159
- Requires-Dist: ibm-cos-sdk; extra == "all"
160
- Requires-Dist: botocore>=1.29.10; extra == "all"
161
- Requires-Dist: msgraph-sdk; extra == "all"
159
+ Requires-Dist: azure-identity>=1.19.0; extra == "all"
160
+ Requires-Dist: ray[default]>=2.6.1; extra == "all"
162
161
  Requires-Dist: vastai-sdk>=0.1.12; extra == "all"
162
+ Requires-Dist: passlib; extra == "all"
163
+ Requires-Dist: protobuf<7.0.0,>=5.26.1; extra == "all"
164
+ Requires-Dist: nebius>=0.2.47; extra == "all"
163
165
  Requires-Dist: google-api-python-client>=2.69.0; extra == "all"
164
- Requires-Dist: websockets; extra == "all"
165
- Requires-Dist: azure-identity>=1.19.0; extra == "all"
166
- Requires-Dist: sqlalchemy_adapter; extra == "all"
167
- Requires-Dist: boto3>=1.26.1; extra == "all"
168
- Requires-Dist: ecsapi>=0.2.0; extra == "all"
166
+ Requires-Dist: tomli; python_version < "3.11" and extra == "all"
169
167
  Requires-Dist: ibm-platform-services>=0.48.0; extra == "all"
168
+ Requires-Dist: runpod>=1.6.1; extra == "all"
170
169
  Requires-Dist: azure-mgmt-compute>=33.0.0; extra == "all"
171
- Requires-Dist: google-cloud-storage; extra == "all"
172
- Requires-Dist: ibm-cloud-sdk-core; extra == "all"
173
- Requires-Dist: colorama<0.4.5; extra == "all"
174
- Requires-Dist: docker; extra == "all"
175
- Requires-Dist: tomli; python_version < "3.11" and extra == "all"
176
- Requires-Dist: ray[default]>=2.6.1; extra == "all"
177
- Requires-Dist: pyjwt; extra == "all"
178
- Requires-Dist: kubernetes!=32.0.0,>=20.0.0; extra == "all"
179
- Requires-Dist: pyvmomi==8.0.1.0.2; extra == "all"
180
- Requires-Dist: grpcio>=1.63.0; extra == "all"
181
- Requires-Dist: msrestazure; extra == "all"
182
- Requires-Dist: oci; extra == "all"
183
- Requires-Dist: protobuf<7.0.0,>=5.26.1; extra == "all"
184
170
  Requires-Dist: pydo>=0.3.0; extra == "all"
185
- Requires-Dist: casbin; extra == "all"
171
+ Requires-Dist: oci; extra == "all"
172
+ Requires-Dist: botocore>=1.29.10; extra == "all"
173
+ Requires-Dist: websockets; extra == "all"
186
174
  Requires-Dist: pyopenssl<24.3.0,>=23.2.0; extra == "all"
187
- Requires-Dist: cudo-compute>=0.1.10; extra == "all"
175
+ Requires-Dist: msrestazure; extra == "all"
176
+ Requires-Dist: azure-common; extra == "all"
188
177
  Requires-Dist: azure-mgmt-network>=27.0.0; extra == "all"
189
- Requires-Dist: azure-cli>=2.65.0; extra == "all"
190
178
  Requires-Dist: azure-storage-blob>=12.23.1; extra == "all"
191
- Requires-Dist: greenlet; extra == "all"
192
- Requires-Dist: azure-common; extra == "all"
179
+ Requires-Dist: sqlalchemy_adapter; extra == "all"
180
+ Requires-Dist: ibm-cos-sdk; extra == "all"
193
181
  Requires-Dist: aiosqlite; extra == "all"
194
- Requires-Dist: anyio; extra == "all"
195
- Requires-Dist: python-dateutil; extra == "all"
182
+ Requires-Dist: cudo-compute>=0.1.10; extra == "all"
183
+ Requires-Dist: ecsapi>=0.2.0; extra == "all"
196
184
  Requires-Dist: awscli>=1.27.10; extra == "all"
185
+ Requires-Dist: pyjwt; extra == "all"
186
+ Requires-Dist: docker; extra == "all"
197
187
  Requires-Dist: azure-core>=1.24.0; extra == "all"
198
- Requires-Dist: ibm-vpc; extra == "all"
199
- Requires-Dist: nebius>=0.2.47; extra == "all"
200
- Requires-Dist: passlib; extra == "all"
201
188
  Requires-Dist: aiohttp; extra == "all"
189
+ Requires-Dist: boto3>=1.26.1; extra == "all"
190
+ Requires-Dist: ibm-cloud-sdk-core; extra == "all"
191
+ Requires-Dist: google-cloud-storage; extra == "all"
192
+ Requires-Dist: ibm-vpc; extra == "all"
193
+ Requires-Dist: azure-cli>=2.65.0; extra == "all"
194
+ Requires-Dist: pyvmomi==8.0.1.0.2; extra == "all"
195
+ Requires-Dist: anyio; extra == "all"
196
+ Requires-Dist: greenlet; extra == "all"
197
+ Requires-Dist: python-dateutil; extra == "all"
198
+ Requires-Dist: colorama<0.4.5; extra == "all"
199
+ Requires-Dist: grpcio>=1.63.0; extra == "all"
200
+ Requires-Dist: kubernetes!=32.0.0,>=20.0.0; extra == "all"
201
+ Requires-Dist: msgraph-sdk; extra == "all"
202
202
  Dynamic: author
203
203
  Dynamic: classifier
204
204
  Dynamic: description
@@ -1,10 +1,10 @@
1
- sky/__init__.py,sha256=D7BBwbnxQrvtvfgtKQSnKZnUU5veyZhtKzG-gu-N4pU,6713
1
+ sky/__init__.py,sha256=nMC8gkI6jwgRQgL3S_BincyuzBdKIM206s8my9xVaTI,6713
2
2
  sky/admin_policy.py,sha256=XdcJnYqmude-LGGop-8U-FeiJcqtfYsYtIy4rmoCJnM,9799
3
3
  sky/authentication.py,sha256=xWdnHD4b172-FPTcVFmRhYvt_JNVLYvgFkaFS5qvs-k,28210
4
- sky/check.py,sha256=Z7D6txaOAEL7fyEQ8q-Zxk1aWaHpEcl412Rj2mThbQ0,31025
4
+ sky/check.py,sha256=hBDTkiADC3HFfO6brZV819FVWcdOs3aiuhB6x6mY4Q4,29728
5
5
  sky/cli.py,sha256=VXIZryeTtJPYpPTBKymVPmuOCyh8knfWrq-qnkr6R-4,178
6
6
  sky/cloud_stores.py,sha256=Ln5GBpel-sEs7rVx7bBrMkfLwA_bctI05Rox2uoz7Lo,26388
7
- sky/core.py,sha256=h-aXltbwlC5CEELQmC4mIrBE9Xe36zjvd6rhwI1Q8QY,58272
7
+ sky/core.py,sha256=VTHly9kJmwtmdiKwkrSrzuJ_8V8t-aI9weADd0SqDWA,58305
8
8
  sky/dag.py,sha256=0ZpAEDXuIFo1SP7YJpF9vXiFxpRwqP8od-UXMg95td8,3929
9
9
  sky/exceptions.py,sha256=IprWNwo6z5cHE-vTuQ5bMcjCfE2kgwZ3PRuawLPucXY,20466
10
10
  sky/execution.py,sha256=1DtEne4EXROfnHKq6rrin69jtXvBmtRvrP7FUXBQCbk,35086
@@ -15,7 +15,7 @@ sky/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
15
15
  sky/resources.py,sha256=jojeuFmMEi-_7MJtR1i8SoEoUG89FrFHoZk1NQx7DzA,107795
16
16
  sky/sky_logging.py,sha256=BQtgSnt-4TLeMLLoxhk9jE7JCnXGko1cTim9ouuefAY,9755
17
17
  sky/skypilot_config.py,sha256=h0lCf0NC3ml19S4_Oc52w7QLEyzFgejFQAoLbVOydO4,37594
18
- sky/task.py,sha256=654W75Q8xwsqc4e_8lCowKplJQUNDf_Cde_cvU3JkcQ,78524
18
+ sky/task.py,sha256=KcrfY3Rp1q3LzfMYJSPbRXpxJ7Ol9E9UBq56EixOQfQ,78707
19
19
  sky/adaptors/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
20
20
  sky/adaptors/aws.py,sha256=4caUTO5nxZQyDVPyQdoPljaF-Lz_Fa6NEnu3FfmLZd4,8633
21
21
  sky/adaptors/azure.py,sha256=7l5jobSTsTUcTo3ptrgOpRgngHY92U64eQBPxvDe1HA,21986
@@ -37,8 +37,8 @@ sky/adaptors/vast.py,sha256=tpvmHi7IkQNzbbHVkeo04kUSajoEpSzXr2XgeO_I1LU,695
37
37
  sky/adaptors/vsphere.py,sha256=zJP9SeObEoLrpgHW2VHvZE48EhgVf8GfAEIwBeaDMfM,2129
38
38
  sky/backends/__init__.py,sha256=l1xXpkzPFMma0ZkT4GzVMu7uvgS3AsECg6zLc0S3JHQ,702
39
39
  sky/backends/backend.py,sha256=6bvW1K1hVgxWiD4B8NiBD8OJ9ihfEdhyY5p60-3aQf4,8433
40
- sky/backends/backend_utils.py,sha256=oIY4EwpIZb-DAIAWuWVdtlj9RF9yWo0C-5Cyd32vcHI,176993
41
- sky/backends/cloud_vm_ray_backend.py,sha256=rNHbs2wYpr2IMFk85hUbKbLI1JoGc0Y4kPd3m1TVXkc,306963
40
+ sky/backends/backend_utils.py,sha256=qbewVFNHQlinc4Wvn6ewocv3nash0X6RuDPOgyLXvFY,177499
41
+ sky/backends/cloud_vm_ray_backend.py,sha256=yYkC5keYQ1y55hjhnV59VrLd0zF8jVamFEWkV5km3u4,306949
42
42
  sky/backends/docker_utils.py,sha256=_EhM6NStZDAwcegppQqExaB5iuSn1qL4xFFUqXAz2Uk,8392
43
43
  sky/backends/local_docker_backend.py,sha256=EyLYwJSihhOEOwpgzXVtykjByEJuZOrqEr9N0cta3k4,17563
44
44
  sky/backends/wheel_utils.py,sha256=DE71Muq5qLRhGpCVg1Rb6YOI7S_BzT8Hak27Pz8L4yw,12486
@@ -83,14 +83,14 @@ sky/catalog/data_fetchers/fetch_vsphere.py,sha256=Yf7tKzwJsQ_4f64IT1EAP108C1D3Rg
83
83
  sky/client/__init__.py,sha256=pz6xvVSd9X-gwqbsDL0E9QOojYqM0KAD0j-NCyCIF1k,38
84
84
  sky/client/common.py,sha256=j8ENgeRN3KdKBf0-pi1K9w1HtkqrkBR12QtF_wGWG8M,16950
85
85
  sky/client/oauth.py,sha256=sNJ_DMsSTcxluj5FeNQ2IafZJLImRFmCAZ79bXeABn4,2871
86
- sky/client/sdk.py,sha256=wdZA7Ulk8iap5k5fhPnVdKMzdj4KxCiy8zRezgzYyv8,107655
86
+ sky/client/sdk.py,sha256=IwdheaffnHmmjEDzvqhrDuH8jPBlCYMrBjLYa4RL2O0,107259
87
87
  sky/client/sdk_async.py,sha256=8G_E9Dn4d80rV-wxRH4zZUXZGAm6rLw3C8PI07fXwwQ,31106
88
88
  sky/client/service_account_auth.py,sha256=5jXk0G6ufuW-SHCO7BEHQeTO0_2a8KfFmA63auXFRj4,1529
89
89
  sky/client/cli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
90
- sky/client/cli/command.py,sha256=X-QczFTS6XsXKSei21Y0Wkvvf3G6ro9YAyjMGVAc94c,249775
90
+ sky/client/cli/command.py,sha256=FBYtW17BNPNBHRipWsBMrzeKj8OCxM-A6QN2msaZq7o,250804
91
91
  sky/client/cli/deprecation_utils.py,sha256=H_d5UyF2CekEoThduAzt5cihBO8hwKYMu0-Wqfbjv5E,3370
92
92
  sky/client/cli/flags.py,sha256=lLXHooU4HEslbHJuGAiCrKYkJZx99hAKaJbstw7s1bc,12136
93
- sky/client/cli/table_utils.py,sha256=UrQ0VTEM0P_WIPtm2oShu6L9VurGSIFZuxpjnWBQXh8,1106
93
+ sky/client/cli/table_utils.py,sha256=HT_y__9_tZLKJ0aJu-hh67cu3NXfWDoiHir5fTmWaDw,10156
94
94
  sky/clouds/__init__.py,sha256=hX6oZM4U6WuXQclg9-8mP2OAeFbzTbaVuPzJxqudKIc,1750
95
95
  sky/clouds/aws.py,sha256=PrvbWuSAkPC18HsLVHx8NBJQiduz32NpDm1XXr6NPLo,63737
96
96
  sky/clouds/azure.py,sha256=qnabVjfS3em-TvxOIqZ6mMiipnt51MBVf7R0pnyB7bo,33233
@@ -119,19 +119,19 @@ sky/clouds/utils/azure_utils.py,sha256=NToRBnhEyuUvb-nBnsKTxjhOBRkMcrelL8LK4w6s4
119
119
  sky/clouds/utils/gcp_utils.py,sha256=09MF4Vx0EW7S-GXGpyxpl2aQlHrqeu9ioV0nyionAyk,9890
120
120
  sky/clouds/utils/oci_utils.py,sha256=TFqAqRLggg4Z0bhxrrq8nouSSomZy-ub1frHXEkud2M,7302
121
121
  sky/clouds/utils/scp_utils.py,sha256=VGuccVO5uFGr8-yolWSoYrgr11z6cIeDBGcqkBzAyOs,18409
122
- sky/dashboard/out/404.html,sha256=bfzW2sWtif8fUGIw-FqL6_LclTzIRCLjC1KHbbmXW9w,1423
123
- sky/dashboard/out/clusters.html,sha256=ZBcroBhlvc0_ho9HxNZSTW5Mmq9tOXz9wbzo7mz2NTk,1418
124
- sky/dashboard/out/config.html,sha256=5wzLhkZpib1KtIrKt0j6QYFC5F2FJ-OD5YY213CLYnw,1414
122
+ sky/dashboard/out/404.html,sha256=xPuLcuzkNwxUxwL0A9WU4ohiurrxxYC99HrMG2S7unU,1423
123
+ sky/dashboard/out/clusters.html,sha256=kzlxfvfDnd956s4CM_-fBYSGrq6RXn9gn67bOFzE9Jk,1418
124
+ sky/dashboard/out/config.html,sha256=IzCOdv9I2T2_ry-OwxlUA6gGJRlQucjaJy213T5-GxE,1414
125
125
  sky/dashboard/out/favicon.ico,sha256=XilUZZglAl_1zRsg85QsbQgmQAzGPQjcUIJ-A3AzYn8,93590
126
- sky/dashboard/out/index.html,sha256=r2_dY8vHe5WOH6-q15sVFdCTL8h14La8TWM3_gJAIJ8,1407
127
- sky/dashboard/out/infra.html,sha256=n2bvRftsp7MBxFwEuKyBhBrjUlvHP8to2nGj3RnIUi8,1412
128
- sky/dashboard/out/jobs.html,sha256=iEWl5zDK4HOQ_sUvaVFq2zt6DA0xm26AT9eqrAkzHk0,1410
126
+ sky/dashboard/out/index.html,sha256=6LtAMwUL3HTcuj9RmQJM1esUVXovUAcsAO2Jt72gCdY,1407
127
+ sky/dashboard/out/infra.html,sha256=keqc8bKIwoNV2ViZ82ifWWnf7pydRts65VQinOXTw_A,1412
128
+ sky/dashboard/out/jobs.html,sha256=jpzr-tP9NkW2iot2sWBEJlHTO9gexNtXoWzJSV1HKhU,1410
129
129
  sky/dashboard/out/skypilot.svg,sha256=c0iRtlfLlaUm2p0rG9NFmo5FN0Qhf3pq5Xph-AeMPJw,5064
130
- sky/dashboard/out/users.html,sha256=HVMSHYyqHJh59CetF62XVbSZSq0KXCsn3d11w8Ze8yw,1412
131
- sky/dashboard/out/volumes.html,sha256=X7MySG-6S9bKI0tS2Ehvbjp0vk6HwT6QVD3HSicObLY,1416
132
- sky/dashboard/out/workspaces.html,sha256=tRodIGA_GnMt2f4xqSYhWl0X10WzD9HxviZhIIbXRXI,1422
133
- sky/dashboard/out/_next/static/UDSEoDB67vwFMZyCJ4HWU/_buildManifest.js,sha256=TpmiOwMtm71CTmPMh3PC5RdUpcsp8LqJJO9_cJpAiuQ,2428
134
- sky/dashboard/out/_next/static/UDSEoDB67vwFMZyCJ4HWU/_ssgManifest.js,sha256=Z49s4suAsf5y_GfnQSvm4qtq2ggxEbZPfEDTXjy6XgA,80
130
+ sky/dashboard/out/users.html,sha256=2G4F2coIOFa7aeGdJqw4R8JfDyx2GesPcCotEv9z4Kc,1412
131
+ sky/dashboard/out/volumes.html,sha256=qLJcuaVujo5NFoDJA4ht40QKMYzQG-YOBLSkURlX0Rc,1416
132
+ sky/dashboard/out/workspaces.html,sha256=W0WSU4jzH9dQikYXh_lo8_pz1h-023Kt7oSuXDAW2ZI,1422
133
+ sky/dashboard/out/_next/static/16g0-hgEgk6Db72hpE8MY/_buildManifest.js,sha256=mMC3UH_Lvw0kpZIoqEC4oqGNdMpV9qsiBQ_VWHw0QKI,2428
134
+ sky/dashboard/out/_next/static/16g0-hgEgk6Db72hpE8MY/_ssgManifest.js,sha256=Z49s4suAsf5y_GfnQSvm4qtq2ggxEbZPfEDTXjy6XgA,80
135
135
  sky/dashboard/out/_next/static/chunks/1121-d0782b9251f0fcd3.js,sha256=jIvnDxaTleAz3HdZK9-RScSB0ZMg8-D63KQmn8avaHI,8883
136
136
  sky/dashboard/out/_next/static/chunks/1141-159df2d4c441a9d1.js,sha256=kdYh_Ek9hdib5emC7Iezojh3qASBnOIUHH5zX_ScR0U,17355
137
137
  sky/dashboard/out/_next/static/chunks/1272-1ef0bf0237faccdb.js,sha256=VJ6y-Z6Eg2T93hQIRfWAbjAkQ7nQhglmIaVbEpKSILY,38451
@@ -182,37 +182,37 @@ sky/dashboard/out/_next/static/chunks/pages/clusters/[cluster]-e052384df65ef200.
182
182
  sky/dashboard/out/_next/static/chunks/pages/clusters/[cluster]/[job]-ad77b12fc736dca3.js,sha256=DJ5SwyD8Jl58gx8M3uU1aBAaQJX6fL_fjFlIEXpLXA4,26086
183
183
  sky/dashboard/out/_next/static/chunks/pages/infra/[context]-6563820e094f68ca.js,sha256=P3fWbG3DX-Q1SusyuaCuJILvs9suIxNsdo1SRAenZpc,847
184
184
  sky/dashboard/out/_next/static/chunks/pages/jobs/[job]-dd64309c3fe67ed2.js,sha256=pDCMgJauG-gMgWzCSTF3CBcc_WduZw75NhuyRBbm8bg,29203
185
- sky/dashboard/out/_next/static/chunks/pages/jobs/pools/[pool]-07349868f7905d37.js,sha256=Q0LIzBnqZxcH4wL87way-kjcfK74u2K75ytBzz4W0PY,25590
185
+ sky/dashboard/out/_next/static/chunks/pages/jobs/pools/[pool]-509b2977a6373bf6.js,sha256=mCtSCJGhIG3YzwZnne61lhyfTy-Cmy80wTX0GThDWNo,25754
186
186
  sky/dashboard/out/_next/static/chunks/pages/workspace/new-3f88a1c7e86a3f86.js,sha256=83s5N5CZwIaRcmYMfqn2we60n2VRmgFw6Tbx18b8-e0,762
187
187
  sky/dashboard/out/_next/static/chunks/pages/workspaces/[name]-af76bb06dbb3954f.js,sha256=cGCpDszMI6ckUHVelwAh9ZVk1erfz_UXSLz9GCqGUAE,1495
188
188
  sky/dashboard/out/_next/static/css/4614e06482d7309e.css,sha256=nk6GriyGVd1aGXrLd7BcMibnN4v0z-Q_mXGxrHFWqrE,56126
189
- sky/dashboard/out/clusters/[cluster].html,sha256=hUN7fic1SLLEsq6N7YvkLSBxQ4dLmFYy_1B_mezSXLY,2936
190
- sky/dashboard/out/clusters/[cluster]/[job].html,sha256=U3zfdmoqPWewyy-FoS0aTkzQw-7y3JMPYmhqjOzkgG4,2073
191
- sky/dashboard/out/infra/[context].html,sha256=fQG0Vx31P8P28keSthe50t7qEt4auT78y6GNHgMO9nQ,1436
192
- sky/dashboard/out/jobs/[job].html,sha256=pxAKj7CWoGI5hauOeWs1-DDFL8Qv7bU4nKFv7DbPVS8,2304
193
- sky/dashboard/out/jobs/pools/[pool].html,sha256=syFATHtIFgC30L-NIPz-yI1VbY5HHOEGIDsFDE0urko,2142
189
+ sky/dashboard/out/clusters/[cluster].html,sha256=Vz4m_srz-dx7C1QQgzlkX8H0TquKzaqu9mfNqe6wH_I,2936
190
+ sky/dashboard/out/clusters/[cluster]/[job].html,sha256=kIkcWVv-jRgxmBfgI1zjBxCvOlMkiule1MB1xFSfHl0,2073
191
+ sky/dashboard/out/infra/[context].html,sha256=Ky0Ml2pJMSyQqKKPh56EDCR2quPtYuALB--Jzqt1NsE,1436
192
+ sky/dashboard/out/jobs/[job].html,sha256=rJIcyDeHdpTkVt8-FfXXlsBDD6-ZC6gZW9C5e_YNsgM,2304
193
+ sky/dashboard/out/jobs/pools/[pool].html,sha256=YXKz0phFAiGGHSdzfC7gZYBjdqVskn2_3XVZTgxLI1A,2142
194
194
  sky/dashboard/out/videos/cursor-small.mp4,sha256=8tRdp1vjawOrXUar1cfjOc-nkaKmcwCPZx_LO0XlCvQ,203285
195
- sky/dashboard/out/workspace/new.html,sha256=RlU7ynPj83xRHbQpujjliZTazvyXlEQEYF_q20sOqWc,1428
196
- sky/dashboard/out/workspaces/[name].html,sha256=eEdAlxlDiA4C_L3cog9ynikvT1lByruFATBgeslGXb0,2759
195
+ sky/dashboard/out/workspace/new.html,sha256=pkvuikcDcOc5N1sPdeJrngSOhUatL2afBCO9v_fm2kk,1428
196
+ sky/dashboard/out/workspaces/[name].html,sha256=xaM0lQcg9R3qORztI5SmC2MHnhxnljB8dkWdcYPEBPs,2759
197
197
  sky/data/__init__.py,sha256=Nhaf1NURisXpZuwWANa2IuCyppIuc720FRwqSE2oEwY,184
198
198
  sky/data/data_transfer.py,sha256=N8b0CQebDuHieXjvEVwlYmK6DbQxUGG1RQJEyTbh3dU,12040
199
199
  sky/data/data_utils.py,sha256=AjEA_JRjo9NBMlv-Lq5iV4lBED_YZ1VqBR9pG6fGVWE,35179
200
200
  sky/data/mounting_utils.py,sha256=QZjcSNB3HiQgzIodbx0I-IyKaW_XUzUuNTpgJAZAfEk,24594
201
- sky/data/storage.py,sha256=T26wy8eFQRaP-gH1PPp6fhIaVdPfyeb0RKvKf8oZjl0,208910
202
- sky/data/storage_utils.py,sha256=YVLrBdZvQr5wvug0TYOpuSuSriySIiqkD-xsdAIB84s,14978
201
+ sky/data/storage.py,sha256=y6cIgfmhgL8ldjHR7whg2q71TzFQ3Lxiyv6d3anC62I,209290
202
+ sky/data/storage_utils.py,sha256=rQIV-qvNXyvq2h1pVM5Vp8vBRUj1WZG00Hdh00oDPls,13803
203
203
  sky/jobs/__init__.py,sha256=BiABNdlab7xZDOv4C34kc1XuxG6C_Ip7Q96mT2iCnIg,1686
204
204
  sky/jobs/constants.py,sha256=74kv_hCMbzDCYIXqa8Tc2BmECweNZIO2s5mP0IDunmg,3500
205
- sky/jobs/controller.py,sha256=G9uaLk8hkc5MTSgMTcU5EHbA5mzQsws11FGGPBiaK0E,56048
205
+ sky/jobs/controller.py,sha256=SymwS24D0nLuVJ_yBgF6055TQptglDiOdssCPNWHy-g,57020
206
206
  sky/jobs/recovery_strategy.py,sha256=w8HqSnnVJ10nH-ENFO3NpIM70cyxBzTijzH6EFggiaM,36948
207
207
  sky/jobs/scheduler.py,sha256=rUait5vQoIxAMuxWDRkR6DtFpmmVqQHxECHyhhrY9HI,16564
208
208
  sky/jobs/state.py,sha256=TaE7NWPcL9gB4ezCUgAikcS2GmxFESm9WnhniXvRNC4,84400
209
- sky/jobs/utils.py,sha256=eiPS9FupTumf8Wi9nF640Xz9fC1YzOPd7LdK88oEDro,93813
209
+ sky/jobs/utils.py,sha256=Q2QgbP8OPO8iCh-vcFQdEY9cxo0QnjggkytwgLRq4YA,93892
210
210
  sky/jobs/client/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
211
- sky/jobs/client/sdk.py,sha256=IL2zVKiXLbgiZY0ewCPv42dFvQ5FAB_QwwGwZlMqMBo,17071
211
+ sky/jobs/client/sdk.py,sha256=HQdnZtK-yWXvOX5XEVZU145vIzfCvYZFtL6uzQEm6-c,17133
212
212
  sky/jobs/client/sdk_async.py,sha256=hsyPshdpbKG0RUzw2ntDeAJAkOIl-O9WDoSREV_km3o,4875
213
213
  sky/jobs/server/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
214
- sky/jobs/server/core.py,sha256=zqf1O2SmVWFK4a8WvsjEYc90SdGNK7RQCaPRHw-j4Wk,46579
215
- sky/jobs/server/server.py,sha256=mklShi9XBUyyF8Wv_hdK8ag0_8mK4Bh769NzGLWYBeg,8890
214
+ sky/jobs/server/core.py,sha256=LhRKWhm8KkNOSsZ2zX2l_-GCW9p9PrY86eLi4rQpKM4,47440
215
+ sky/jobs/server/server.py,sha256=oCFOE58oSXspgxIj4BaPIkqTrH0SUzgH0c__OG4Wc60,8894
216
216
  sky/jobs/server/utils.py,sha256=rI_fVyEJhHjuapcB6JefkKgRuT_VeLiubAixsPo5jj0,5023
217
217
  sky/logs/__init__.py,sha256=zW4gAEvWDz5S53FlLp3krAuKrmTSJ0e3kZDnhxSbW4E,722
218
218
  sky/logs/agent.py,sha256=Jwpzio10P45BS6cugt6Ovu3_ZhysuXVcL_aneYZQENE,4766
@@ -265,10 +265,10 @@ sky/provision/hyperbolic/utils.py,sha256=NCa3ULvIi64-YHYoOnPd3SShlJ6VuQsEwaTBqHF
265
265
  sky/provision/kubernetes/__init__.py,sha256=xUHCbN5fkbnM5_E1trFHHOndTsvEwBdi-8qvvpK92io,1030
266
266
  sky/provision/kubernetes/config.py,sha256=MwGp1mVa0M1hERCZMYz5Lweky7Q3MLo7Qt9mZaCiTvo,29717
267
267
  sky/provision/kubernetes/constants.py,sha256=vZJQsAVjAgwsOskB48tIFSXtNw7IFnJOQE_H6N-vOYQ,1130
268
- sky/provision/kubernetes/instance.py,sha256=hjaDsASvfY-hz9ZOp4MS-rGz7sKRMZ57UiMEmMZV7Zk,77946
268
+ sky/provision/kubernetes/instance.py,sha256=HvdJvh-BD41xvw8KcJ1ykcv9r1hLdPPwheUjyVZbWHs,77947
269
269
  sky/provision/kubernetes/network.py,sha256=Dgj8u7IQBHKHt-mSDhYzue1wfDk96FR_8fO89TwuZ2E,12846
270
270
  sky/provision/kubernetes/network_utils.py,sha256=XYgZ6BEO-YB2o3Y_eXgr2Czk9wxGdWSs0mEJnpLU77Q,12256
271
- sky/provision/kubernetes/utils.py,sha256=zYdoevehd-sax0yBe3SY5b8gYcw8USp-C3WvXcsvITk,160499
271
+ sky/provision/kubernetes/utils.py,sha256=YZfFiuI6JJVtDUp25YvVABvCRQjXQvJQ98QzQedoS-8,161542
272
272
  sky/provision/kubernetes/volume.py,sha256=b5mozvUCw9rsGxiUS9LxR-MyELK-EQHYglJkGTFNobY,11473
273
273
  sky/provision/kubernetes/manifests/fusermount-server-daemonset.yaml,sha256=S87GNAbDqgTrLuxF-afPAqQ0V-i41El4s_9KBZMuaag,1331
274
274
  sky/provision/lambda_cloud/__init__.py,sha256=6EEvSgtUeEiup9ivIFevHmgv0GqleroO2X0K7TRa2nE,612
@@ -329,7 +329,7 @@ sky/provision/vsphere/common/vapiconnect.py,sha256=piU29ZfdYCJQMV5n-5J0EQ8G56AWO
329
329
  sky/provision/vsphere/common/vim_utils.py,sha256=TjDgxIzV5Iuc5j1aFNL3NpaOwS0KKXhEUEwq7dzQT-s,17849
330
330
  sky/schemas/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
331
331
  sky/schemas/api/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
332
- sky/schemas/api/responses.py,sha256=UqIQ9xjEk8sD8H1QfwLzeRUF1JEh10YMBX8C-H4tWW0,4354
332
+ sky/schemas/api/responses.py,sha256=4KEvw8-lhI81JPRK3gw5Y4AgYJNOqi0bYHPO0KzuiKA,6778
333
333
  sky/schemas/db/README,sha256=M93NBw29groxXu-Gy7sgqSyxpppXpRBbXxEXANLhVCo,122
334
334
  sky/schemas/db/env.py,sha256=T-2a00Z9RcaIqcMu90R-RNA_lCutsWBRopDy4LQFnoM,2918
335
335
  sky/schemas/db/script.py.mako,sha256=04kgeBtNMa4cCnG8CfQcKt6P6rnloIfj8wy0u_DBydM,704
@@ -381,7 +381,7 @@ sky/serve/server/core.py,sha256=4w79PONDX5hAem95U1MRDHZ1VNMaBZJkI6hv5d2IKjQ,1101
381
381
  sky/serve/server/impl.py,sha256=oQL6qd-rTq9M7Qs3n-fCv0vyQe1F9dAid_OgmRCjyjs,48982
382
382
  sky/serve/server/server.py,sha256=DzTOQ69FcNoSmA_wCV0RcHD66_nuDzXVcULhTpMqOhU,4519
383
383
  sky/server/__init__.py,sha256=MPPBqFzXz6Jv5QSk6td_IcvnfXfNErDZVcizu4MLRow,27
384
- sky/server/common.py,sha256=V3n_-8im0vpnYHr4AJRye_yiYxsu8xedYcs2xMPUPWw,40191
384
+ sky/server/common.py,sha256=od_YDC5MboWEjdh7mOe922UmN-O3HTXWFJ8D9gxLx7Y,40269
385
385
  sky/server/config.py,sha256=Ivim-8YmFzNJpOub0QrEMfhK88hI3jap2vuEpPg4vNM,11049
386
386
  sky/server/constants.py,sha256=9hLNn1FsBegnMxoQzYfgHIVPIqon7KufzG4G9yqhS-o,2456
387
387
  sky/server/daemons.py,sha256=XQdqRMVyxyqS9fY2HLqW_cxVR6qgqoQ7irPvRYWvG7E,9092
@@ -408,8 +408,8 @@ sky/server/requests/queues/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJ
408
408
  sky/server/requests/queues/local_queue.py,sha256=X6VkBiUmgd_kfqIK1hCtMWG1b8GiZbY70TBiBR6c6GY,416
409
409
  sky/server/requests/queues/mp_queue.py,sha256=jDqP4Jd28U3ibSFyMR1DF9I2OWZrPZqFJrG5S6RFpyw,3403
410
410
  sky/server/requests/serializers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
411
- sky/server/requests/serializers/decoders.py,sha256=jidC6NzEAOzQUw7G0ZLqvFKLMZouVOIKa-fQvWS9dtY,7724
412
- sky/server/requests/serializers/encoders.py,sha256=Nib5a40nNeidNz9OYlGIWw_Mz7QgbEeI9Zry4Bx11lU,8036
411
+ sky/server/requests/serializers/decoders.py,sha256=4V3muIPH_QU_CfGyoHD99IXuJbKZKZ6rhmA7S-N2L58,8201
412
+ sky/server/requests/serializers/encoders.py,sha256=kEGUqUDx5mpc2DBxhzcGrSP325R1aMPg5NXUVScXfUs,8425
413
413
  sky/setup_files/MANIFEST.in,sha256=4gbgHHwSdP6BbMJv5XOt-2K6wUVWF_T9CGsdESvh918,776
414
414
  sky/setup_files/alembic.ini,sha256=854_UKvCaFmZ8vI16tSHbGgP9IMFQ42Td6c9Zmn2Oxs,5079
415
415
  sky/setup_files/dependencies.py,sha256=sgsKCFkGlZXFm1xi50X9TvwM4L_pIhxls-ySAbfZJ94,8888
@@ -494,9 +494,9 @@ sky/utils/admin_policy_utils.py,sha256=VkE3FGzv5a7KnRO0R1PX0buJ274vF__n1xgXJ_9yk
494
494
  sky/utils/annotations.py,sha256=No49yFuNIGtFgxU1bmBh2REx_Yn08o7Is-c56QynDIs,1910
495
495
  sky/utils/atomic.py,sha256=vrw-7XCnckF0xCx-ttamao7evPdGtVsnjaTtgMlBXIE,1280
496
496
  sky/utils/benchmark_utils.py,sha256=vBqvgS-7XBat9N4UvtmxXS70i2EQUa4BUv4fsF8g58A,1635
497
- sky/utils/cluster_utils.py,sha256=FgHAaMxQ7gATg0siu18Hlp30hPOuKvdsCyFlcFULXY8,14640
498
- sky/utils/command_runner.py,sha256=0NOPa3z70LM92p26M3yAjVEbaRKmNViNeyyAiFt_Z_w,50236
499
- sky/utils/command_runner.pyi,sha256=USW2ctncMtqCY5FbhGoZMBHm70RMGc6i5OZNmV3vzc8,10297
497
+ sky/utils/cluster_utils.py,sha256=PxVIVCBPA8qKkKvrF7bImDC1jhUZeJDADYtV-ELTZXE,15527
498
+ sky/utils/command_runner.py,sha256=Q30y89HaxMUZ_57h1TAWxhI3c6V_QGwL0yuvkZ3eR48,51241
499
+ sky/utils/command_runner.pyi,sha256=FE8lFyxsh6528uSeSS38yk9Yu9HSJ8LFJT0ylMWNR6k,10618
500
500
  sky/utils/common.py,sha256=yJc110y8rwcBIKEJgb8kUD4e1OeolFEVtonwmqtAxCM,2729
501
501
  sky/utils/common_utils.py,sha256=5_dNGrFtvylmi38HTMLSgxHLbeBgNCr9UH8BDSUbQeI,39053
502
502
  sky/utils/config_utils.py,sha256=agfDWJi79DH5XKD_GBvUwhRwmB0-ZkYbKCjcEgV6gP4,13861
@@ -529,7 +529,7 @@ sky/utils/tempstore.py,sha256=3S5fJ3UjnE12ve38c3MpTXpoRWfDSGndZpqNe7P_8aU,2148
529
529
  sky/utils/timeline.py,sha256=W_HrRBWS9glV25CyCBGUTn1OBe7b0S7kBL8_jv18CZU,3060
530
530
  sky/utils/ux_utils.py,sha256=JTEMwWdvNvXWTVTsQnsh9Du5Bh_g1y5z4yXDriZuJvI,12581
531
531
  sky/utils/validator.py,sha256=AHIYEBpxzpC2Eg8TulruFqQSjTxeynB0Dc7cfP1RX2M,1159
532
- sky/utils/volume.py,sha256=kIxnjgzv7VsvnOxAP2v-4OwwDOuytoZPmWScYtZblqU,2952
532
+ sky/utils/volume.py,sha256=wV-p9lM0E7qHscWtTCsi0RC_dIl2Fvc6BGa8QG-z_Mk,3107
533
533
  sky/utils/yaml_utils.py,sha256=atDwwOjx92l-8uOUIKPeWqs_s1yDLAuBjiOYIOSwK_k,3117
534
534
  sky/utils/aws/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
535
535
  sky/utils/aws/get_default_security_group.py,sha256=LPzz5133ZUMbzDD3iqqACL9PdlgqiQR5hKZIn-D1zhw,228
@@ -556,20 +556,19 @@ sky/utils/kubernetes/ssh-tunnel.sh,sha256=60eHKF7phJe9pFEkGlqdwWzI80tpog8QCkL7fA
556
556
  sky/utils/kubernetes/ssh_jump_lifecycle_manager.py,sha256=Kq1MDygF2IxFmu9FXpCxqucXLmeUrvs6OtRij6XTQbo,6554
557
557
  sky/utils/kubernetes/ssh_utils.py,sha256=hPV2gU6j3j1aVf8kFvkux_KE88R5j8-JUDEopG6v70o,9046
558
558
  sky/volumes/__init__.py,sha256=oy7JTgRXxkK2nOOF-OWivr0xeSL1-Syz703kZEuUnn0,241
559
- sky/volumes/utils.py,sha256=rBUDbR2nGmoreVXGs_6DbxHKzp9Yyg36eTnsqo4JKQk,7408
560
559
  sky/volumes/volume.py,sha256=8K0EfriVslXmVnbIj0FJEv0TAoCvUpls9pSrdLAMujc,7842
561
560
  sky/volumes/client/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
562
- sky/volumes/client/sdk.py,sha256=o6facpXM6s2CYxTeVsKgkeGoXYMBK84HfYTBLnFkhCA,4148
561
+ sky/volumes/client/sdk.py,sha256=VNZPmx09FSSpn7oVoYWtiY71DLA3BBhM1XXlAWipJmU,4183
563
562
  sky/volumes/server/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
564
- sky/volumes/server/core.py,sha256=IqqcmZiPo46Kz_69_P2pHubhXvwIDPYidRajil3Or5Q,9902
563
+ sky/volumes/server/core.py,sha256=ZdKcedOZQEZYT-s-4qQIce5KgIw5AfVNLaPnsIblZkg,9974
565
564
  sky/volumes/server/server.py,sha256=eCRCygyGeaTkrae7gxjscqTpJ3EaaRjS_mnsHBkrR5E,4552
566
565
  sky/workspaces/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
567
566
  sky/workspaces/core.py,sha256=kRrdh-8MhX1953pML1B_DoStnDuNrsmHcZlnWoAxVo0,27218
568
567
  sky/workspaces/server.py,sha256=Box45DS54xXGHy7I3tGKGy-JP0a8G_z6IhfvGlEXtsA,3439
569
568
  sky/workspaces/utils.py,sha256=IIAiFoS6sdb2t0X5YoX9AietpTanZUQNTK8cePun-sY,2143
570
- skypilot_nightly-1.0.0.dev20250927.dist-info/licenses/LICENSE,sha256=emRJAvE7ngL6x0RhQvlns5wJzGI3NEQ_WMjNmd9TZc4,12170
571
- skypilot_nightly-1.0.0.dev20250927.dist-info/METADATA,sha256=bXpRa4tNr_mRJ8zh_17y-RqcVzpzc6R1uXLjjcJvKR4,20433
572
- skypilot_nightly-1.0.0.dev20250927.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
573
- skypilot_nightly-1.0.0.dev20250927.dist-info/entry_points.txt,sha256=StA6HYpuHj-Y61L2Ze-hK2IcLWgLZcML5gJu8cs6nU4,36
574
- skypilot_nightly-1.0.0.dev20250927.dist-info/top_level.txt,sha256=qA8QuiNNb6Y1OF-pCUtPEr6sLEwy2xJX06Bd_CrtrHY,4
575
- skypilot_nightly-1.0.0.dev20250927.dist-info/RECORD,,
569
+ skypilot_nightly-1.0.0.dev20251002.dist-info/licenses/LICENSE,sha256=emRJAvE7ngL6x0RhQvlns5wJzGI3NEQ_WMjNmd9TZc4,12170
570
+ skypilot_nightly-1.0.0.dev20251002.dist-info/METADATA,sha256=8KvNYdvi3kOUMSKDzsJFwdooROQr66sZj0uFXOwcKZw,20433
571
+ skypilot_nightly-1.0.0.dev20251002.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
572
+ skypilot_nightly-1.0.0.dev20251002.dist-info/entry_points.txt,sha256=StA6HYpuHj-Y61L2Ze-hK2IcLWgLZcML5gJu8cs6nU4,36
573
+ skypilot_nightly-1.0.0.dev20251002.dist-info/top_level.txt,sha256=qA8QuiNNb6Y1OF-pCUtPEr6sLEwy2xJX06Bd_CrtrHY,4
574
+ skypilot_nightly-1.0.0.dev20251002.dist-info/RECORD,,
sky/volumes/utils.py DELETED
@@ -1,224 +0,0 @@
1
- """Volume utils."""
2
- import abc
3
- from datetime import datetime
4
- from typing import Any, Dict, List, Optional
5
-
6
- import prettytable
7
-
8
- from sky import sky_logging
9
- from sky.skylet import constants
10
- from sky.utils import common_utils
11
- from sky.utils import log_utils
12
- from sky.utils import volume
13
-
14
- logger = sky_logging.init_logger(__name__)
15
-
16
- _BASIC_COLUMNS = [
17
- 'NAME',
18
- 'TYPE',
19
- 'INFRA',
20
- 'SIZE',
21
- 'USER',
22
- 'WORKSPACE',
23
- 'AGE',
24
- 'STATUS',
25
- 'LAST_USE',
26
- 'USED_BY',
27
- ]
28
-
29
-
30
- def _get_infra_str(cloud: Optional[str], region: Optional[str],
31
- zone: Optional[str]) -> str:
32
- """Get the infrastructure string for the volume."""
33
- infra = ''
34
- if cloud:
35
- infra += cloud
36
- if region:
37
- infra += f'/{region}'
38
- if zone:
39
- infra += f'/{zone}'
40
- return infra
41
-
42
-
43
- class VolumeTable(abc.ABC):
44
- """The volume table."""
45
-
46
- def __init__(self, volumes: List[Dict[str, Any]], show_all: bool = False):
47
- super().__init__()
48
- self.table = self._create_table(show_all)
49
- self._add_rows(volumes, show_all)
50
-
51
- def _get_row_base_columns(self,
52
- row: Dict[str, Any],
53
- show_all: bool = False) -> List[str]:
54
- """Get the base columns for a row."""
55
- # Convert last_attached_at timestamp to human readable string
56
- last_attached_at = row.get('last_attached_at')
57
- if last_attached_at is not None:
58
- last_attached_at_str = datetime.fromtimestamp(
59
- last_attached_at).strftime('%Y-%m-%d %H:%M:%S')
60
- else:
61
- last_attached_at_str = '-'
62
- size = row.get('size', '')
63
- if size:
64
- size = f'{size}Gi'
65
- usedby_str = '-'
66
- usedby_clusters = row.get('usedby_clusters')
67
- usedby_pods = row.get('usedby_pods')
68
- if usedby_clusters:
69
- usedby_str = f'{", ".join(usedby_clusters)}'
70
- elif usedby_pods:
71
- usedby_str = f'{", ".join(usedby_pods)}'
72
- if show_all:
73
- usedby = usedby_str
74
- else:
75
- usedby = common_utils.truncate_long_string(
76
- usedby_str, constants.USED_BY_TRUNC_LENGTH)
77
- infra = _get_infra_str(row.get('cloud'), row.get('region'),
78
- row.get('zone'))
79
- return [
80
- row.get('name', ''),
81
- row.get('type', ''),
82
- infra,
83
- size,
84
- row.get('user_name', '-'),
85
- row.get('workspace', '-'),
86
- log_utils.human_duration(row.get('launched_at', 0)),
87
- row.get('status', ''),
88
- last_attached_at_str,
89
- usedby,
90
- ]
91
-
92
- def _create_table(self, show_all: bool = False) -> prettytable.PrettyTable:
93
- """Create the volume table."""
94
- raise NotImplementedError
95
-
96
- def _add_rows(self,
97
- volumes: List[Dict[str, Any]],
98
- show_all: bool = False) -> None:
99
- """Add rows to the volume table."""
100
- raise NotImplementedError
101
-
102
- @abc.abstractmethod
103
- def format(self) -> str:
104
- """Format the volume table for display."""
105
- raise NotImplementedError
106
-
107
-
108
- class PVCVolumeTable(VolumeTable):
109
- """The PVC volume table."""
110
-
111
- def _create_table(self, show_all: bool = False) -> prettytable.PrettyTable:
112
- """Create the PVC volume table."""
113
- # If show_all is False, show the table with the columns:
114
- # NAME, TYPE, INFRA, SIZE, USER, WORKSPACE,
115
- # AGE, STATUS, LAST_USE, USED_BY
116
- # If show_all is True, show the table with the columns:
117
- # NAME, TYPE, INFRA, SIZE, USER, WORKSPACE,
118
- # AGE, STATUS, LAST_USE, USED_BY, NAME_ON_CLOUD
119
- # STORAGE_CLASS, ACCESS_MODE
120
-
121
- if show_all:
122
- columns = _BASIC_COLUMNS + [
123
- 'NAME_ON_CLOUD',
124
- 'STORAGE_CLASS',
125
- 'ACCESS_MODE',
126
- ]
127
- else:
128
- columns = _BASIC_COLUMNS
129
-
130
- table = log_utils.create_table(columns)
131
- return table
132
-
133
- def _add_rows(self,
134
- volumes: List[Dict[str, Any]],
135
- show_all: bool = False) -> None:
136
- """Add rows to the PVC volume table."""
137
- for row in volumes:
138
- table_row = self._get_row_base_columns(row, show_all)
139
- if show_all:
140
- table_row.append(row.get('name_on_cloud', ''))
141
- table_row.append(
142
- row.get('config', {}).get('storage_class_name', '-'))
143
- table_row.append(row.get('config', {}).get('access_mode', ''))
144
-
145
- self.table.add_row(table_row)
146
-
147
- def format(self) -> str:
148
- """Format the PVC volume table for display."""
149
- return 'Kubernetes PVCs:\n' + str(self.table)
150
-
151
-
152
- class RunPodVolumeTable(VolumeTable):
153
- """The RunPod volume table."""
154
-
155
- def _create_table(self, show_all: bool = False) -> prettytable.PrettyTable:
156
- """Create the RunPod volume table."""
157
- # If show_all is False, show the table with the columns:
158
- # NAME, TYPE, INFRA, SIZE, USER, WORKSPACE,
159
- # AGE, STATUS, LAST_USE, USED_BY
160
- # If show_all is True, show the table with the columns:
161
- # NAME, TYPE, INFRA, SIZE, USER, WORKSPACE,
162
- # AGE, STATUS, LAST_USE, USED_BY, NAME_ON_CLOUD
163
-
164
- if show_all:
165
- columns = _BASIC_COLUMNS + ['NAME_ON_CLOUD']
166
- else:
167
- columns = _BASIC_COLUMNS
168
-
169
- table = log_utils.create_table(columns)
170
- return table
171
-
172
- def _add_rows(self,
173
- volumes: List[Dict[str, Any]],
174
- show_all: bool = False) -> None:
175
- """Add rows to the RunPod volume table."""
176
- for row in volumes:
177
- table_row = self._get_row_base_columns(row, show_all)
178
- if show_all:
179
- table_row.append(row.get('name_on_cloud', ''))
180
-
181
- self.table.add_row(table_row)
182
-
183
- def format(self) -> str:
184
- """Format the RunPod volume table for display."""
185
- return 'RunPod Network Volumes:\n' + str(self.table)
186
-
187
-
188
- def format_volume_table(volumes: List[Dict[str, Any]],
189
- show_all: bool = False) -> str:
190
- """Format the volume table for display.
191
-
192
- Args:
193
- volume_table (dict): The volume table.
194
-
195
- Returns:
196
- str: The formatted volume table.
197
- """
198
- volumes_per_type: Dict[str, List[Dict[str, Any]]] = {}
199
- supported_volume_types = [
200
- volume_type.value for volume_type in volume.VolumeType
201
- ]
202
- for row in volumes:
203
- volume_type = row.get('type', '')
204
- if volume_type in supported_volume_types:
205
- if volume_type not in volumes_per_type:
206
- volumes_per_type[volume_type] = []
207
- volumes_per_type[volume_type].append(row)
208
- else:
209
- logger.warning(f'Unknown volume type: {volume_type}')
210
- continue
211
- table_str = ''
212
- for volume_type, volume_list in volumes_per_type.items():
213
- if table_str:
214
- table_str += '\n\n'
215
- if volume_type == volume.VolumeType.PVC.value:
216
- pvc_table = PVCVolumeTable(volume_list, show_all)
217
- table_str += pvc_table.format()
218
- elif volume_type == volume.VolumeType.RUNPOD_NETWORK_VOLUME.value:
219
- runpod_table = RunPodVolumeTable(volume_list, show_all)
220
- table_str += runpod_table.format()
221
- if table_str:
222
- return table_str
223
- else:
224
- return 'No existing volumes.'