skypilot-nightly 1.0.0.dev20250603__py3-none-any.whl → 1.0.0.dev20250605__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.
- sky/__init__.py +3 -3
- sky/adaptors/kubernetes.py +8 -0
- sky/admin_policy.py +5 -0
- sky/backends/backend_utils.py +1 -0
- sky/backends/cloud_vm_ray_backend.py +8 -4
- sky/{clouds/service_catalog → catalog}/__init__.py +6 -17
- sky/{clouds/service_catalog → catalog}/aws_catalog.py +3 -3
- sky/{clouds/service_catalog → catalog}/azure_catalog.py +2 -2
- sky/{clouds/service_catalog → catalog}/common.py +2 -2
- sky/{clouds/service_catalog → catalog}/cudo_catalog.py +1 -1
- sky/{clouds/service_catalog → catalog}/data_fetchers/analyze.py +1 -1
- sky/{clouds/service_catalog → catalog}/data_fetchers/fetch_aws.py +1 -1
- sky/{clouds/service_catalog → catalog}/data_fetchers/fetch_vsphere.py +1 -1
- sky/{clouds/service_catalog → catalog}/do_catalog.py +1 -1
- sky/{clouds/service_catalog → catalog}/fluidstack_catalog.py +1 -1
- sky/{clouds/service_catalog → catalog}/gcp_catalog.py +2 -2
- sky/{clouds/service_catalog → catalog}/ibm_catalog.py +1 -1
- sky/{clouds/service_catalog → catalog}/kubernetes_catalog.py +2 -2
- sky/{clouds/service_catalog → catalog}/lambda_catalog.py +1 -1
- sky/{clouds/service_catalog → catalog}/nebius_catalog.py +1 -1
- sky/{clouds/service_catalog → catalog}/oci_catalog.py +1 -1
- sky/{clouds/service_catalog → catalog}/paperspace_catalog.py +1 -1
- sky/{clouds/service_catalog → catalog}/runpod_catalog.py +1 -1
- sky/{clouds/service_catalog → catalog}/scp_catalog.py +1 -1
- sky/{clouds/service_catalog → catalog}/ssh_catalog.py +3 -3
- sky/{clouds/service_catalog → catalog}/vast_catalog.py +1 -1
- sky/{clouds/service_catalog → catalog}/vsphere_catalog.py +1 -1
- sky/cli.py +16 -13
- sky/client/cli.py +16 -13
- sky/client/sdk.py +30 -12
- sky/clouds/aws.py +41 -40
- sky/clouds/azure.py +31 -34
- sky/clouds/cloud.py +8 -8
- sky/clouds/cudo.py +26 -26
- sky/clouds/do.py +24 -24
- sky/clouds/fluidstack.py +27 -29
- sky/clouds/gcp.py +42 -42
- sky/clouds/ibm.py +26 -26
- sky/clouds/kubernetes.py +24 -12
- sky/clouds/lambda_cloud.py +28 -30
- sky/clouds/nebius.py +26 -28
- sky/clouds/oci.py +32 -32
- sky/clouds/paperspace.py +24 -26
- sky/clouds/runpod.py +26 -28
- sky/clouds/scp.py +37 -36
- sky/clouds/utils/gcp_utils.py +3 -2
- sky/clouds/vast.py +27 -27
- sky/clouds/vsphere.py +12 -15
- sky/core.py +2 -2
- sky/dashboard/out/404.html +1 -1
- sky/dashboard/out/_next/static/chunks/614-635a84e87800f99e.js +66 -0
- sky/dashboard/out/_next/static/chunks/{856-f1b1f7f47edde2e8.js → 856-3a32da4b84176f6d.js} +1 -1
- sky/dashboard/out/_next/static/chunks/937.3759f538f11a0953.js +1 -0
- sky/dashboard/out/_next/static/chunks/pages/config-1a1eeb949dab8897.js +6 -0
- sky/dashboard/out/_next/static/chunks/pages/users-262aab38b9baaf3a.js +16 -0
- sky/dashboard/out/_next/static/chunks/pages/workspaces-384ea5fa0cea8f28.js +1 -0
- sky/dashboard/out/_next/static/chunks/{webpack-f27c9a32aa3d9c6d.js → webpack-65d465f948974c0d.js} +1 -1
- sky/dashboard/out/_next/static/css/667d941a2888ce6e.css +3 -0
- sky/dashboard/out/_next/static/qjhIe-yC6nHcLKBqpzO1M/_buildManifest.js +1 -0
- sky/dashboard/out/clusters/[cluster]/[job].html +1 -1
- sky/dashboard/out/clusters/[cluster].html +1 -1
- sky/dashboard/out/clusters.html +1 -1
- sky/dashboard/out/config.html +1 -1
- sky/dashboard/out/index.html +1 -1
- sky/dashboard/out/infra/[context].html +1 -1
- sky/dashboard/out/infra.html +1 -1
- sky/dashboard/out/jobs/[job].html +1 -1
- sky/dashboard/out/jobs.html +1 -1
- sky/dashboard/out/users.html +1 -1
- sky/dashboard/out/workspace/new.html +1 -1
- sky/dashboard/out/workspaces/[name].html +1 -1
- sky/dashboard/out/workspaces.html +1 -1
- sky/data/storage_utils.py +5 -2
- sky/execution.py +44 -46
- sky/global_user_state.py +119 -86
- sky/jobs/client/sdk.py +4 -1
- sky/jobs/server/core.py +6 -2
- sky/models.py +1 -0
- sky/optimizer.py +1 -1
- sky/provision/cudo/cudo_machine_type.py +1 -1
- sky/provision/kubernetes/utils.py +35 -22
- sky/provision/vast/utils.py +1 -1
- sky/provision/vsphere/common/vim_utils.py +1 -2
- sky/provision/vsphere/instance.py +1 -1
- sky/provision/vsphere/vsphere_utils.py +7 -11
- sky/resources.py +24 -3
- sky/serve/server/core.py +1 -1
- sky/server/constants.py +3 -1
- sky/server/requests/executor.py +4 -1
- sky/server/requests/payloads.py +25 -0
- sky/server/requests/serializers/decoders.py +1 -1
- sky/server/server.py +33 -12
- sky/server/stream_utils.py +2 -38
- sky/setup_files/MANIFEST.in +1 -0
- sky/setup_files/dependencies.py +2 -0
- sky/skylet/constants.py +10 -4
- sky/skypilot_config.py +92 -39
- sky/templates/websocket_proxy.py +11 -1
- sky/usage/usage_lib.py +4 -3
- sky/users/__init__.py +0 -0
- sky/users/model.conf +15 -0
- sky/users/permission.py +178 -0
- sky/users/rbac.py +86 -0
- sky/users/server.py +66 -0
- sky/utils/accelerator_registry.py +3 -3
- sky/utils/kubernetes/deploy_remote_cluster.py +2 -1
- sky/utils/schemas.py +20 -10
- sky/workspaces/core.py +2 -2
- {skypilot_nightly-1.0.0.dev20250603.dist-info → skypilot_nightly-1.0.0.dev20250605.dist-info}/METADATA +3 -1
- {skypilot_nightly-1.0.0.dev20250603.dist-info → skypilot_nightly-1.0.0.dev20250605.dist-info}/RECORD +134 -130
- sky/clouds/service_catalog/constants.py +0 -8
- sky/dashboard/out/_next/static/chunks/614-3d29f98e0634b179.js +0 -66
- sky/dashboard/out/_next/static/chunks/937.f97f83652028e944.js +0 -1
- sky/dashboard/out/_next/static/chunks/pages/config-35383adcb0edb5e2.js +0 -6
- sky/dashboard/out/_next/static/chunks/pages/users-07b523ccb19317ad.js +0 -6
- sky/dashboard/out/_next/static/chunks/pages/workspaces-f54921ec9eb20965.js +0 -1
- sky/dashboard/out/_next/static/css/63d3995d8b528eb1.css +0 -3
- sky/dashboard/out/_next/static/zTAFq_Iv6_yxQj3fXvJWR/_buildManifest.js +0 -1
- /sky/{clouds/service_catalog → catalog}/config.py +0 -0
- /sky/{clouds/service_catalog → catalog}/data_fetchers/__init__.py +0 -0
- /sky/{clouds/service_catalog → catalog}/data_fetchers/fetch_azure.py +0 -0
- /sky/{clouds/service_catalog → catalog}/data_fetchers/fetch_cudo.py +0 -0
- /sky/{clouds/service_catalog → catalog}/data_fetchers/fetch_fluidstack.py +0 -0
- /sky/{clouds/service_catalog → catalog}/data_fetchers/fetch_gcp.py +0 -0
- /sky/{clouds/service_catalog → catalog}/data_fetchers/fetch_ibm.py +0 -0
- /sky/{clouds/service_catalog → catalog}/data_fetchers/fetch_lambda_cloud.py +0 -0
- /sky/{clouds/service_catalog → catalog}/data_fetchers/fetch_vast.py +0 -0
- /sky/dashboard/out/_next/static/chunks/{121-8f55ee3fa6301784.js → 121-865d2bf8a3b84c6a.js} +0 -0
- /sky/dashboard/out/_next/static/chunks/{236-fef38aa6e5639300.js → 236-4c0dc6f63ccc6319.js} +0 -0
- /sky/dashboard/out/_next/static/chunks/{37-947904ccc5687bac.js → 37-beedd583fea84cc8.js} +0 -0
- /sky/dashboard/out/_next/static/chunks/{682-2be9b0f169727f2f.js → 682-6647f0417d5662f0.js} +0 -0
- /sky/dashboard/out/_next/static/chunks/{843-a097338acb89b7d7.js → 843-c296541442d4af88.js} +0 -0
- /sky/dashboard/out/_next/static/chunks/{969-d7b6fb7f602bfcb3.js → 969-c7abda31c10440ac.js} +0 -0
- /sky/dashboard/out/_next/static/chunks/pages/{_app-67925f5e6382e22f.js → _app-cb81dc4d27f4d009.js} +0 -0
- /sky/dashboard/out/_next/static/chunks/pages/clusters/[cluster]/{[job]-158b70da336d8607.js → [job]-65d04d5d77cbb6b6.js} +0 -0
- /sky/dashboard/out/_next/static/chunks/pages/clusters/{[cluster]-62c9982dc3675725.js → [cluster]-beabbcd7606c1a23.js} +0 -0
- /sky/dashboard/out/_next/static/chunks/pages/jobs/{[job]-a62a3c65dc9bc57c.js → [job]-86c47edc500f15f9.js} +0 -0
- /sky/dashboard/out/_next/static/{zTAFq_Iv6_yxQj3fXvJWR → qjhIe-yC6nHcLKBqpzO1M}/_ssgManifest.js +0 -0
- {skypilot_nightly-1.0.0.dev20250603.dist-info → skypilot_nightly-1.0.0.dev20250605.dist-info}/WHEEL +0 -0
- {skypilot_nightly-1.0.0.dev20250603.dist-info → skypilot_nightly-1.0.0.dev20250605.dist-info}/entry_points.txt +0 -0
- {skypilot_nightly-1.0.0.dev20250603.dist-info → skypilot_nightly-1.0.0.dev20250605.dist-info}/licenses/LICENSE +0 -0
- {skypilot_nightly-1.0.0.dev20250603.dist-info → skypilot_nightly-1.0.0.dev20250605.dist-info}/top_level.txt +0 -0
sky/clouds/vast.py
CHANGED
@@ -3,8 +3,8 @@
|
|
3
3
|
import typing
|
4
4
|
from typing import Dict, Iterator, List, Optional, Tuple, Union
|
5
5
|
|
6
|
+
from sky import catalog
|
6
7
|
from sky import clouds
|
7
|
-
from sky.clouds import service_catalog
|
8
8
|
from sky.utils import registry
|
9
9
|
from sky.utils import resources_utils
|
10
10
|
|
@@ -73,7 +73,7 @@ class Vast(clouds.Cloud):
|
|
73
73
|
zone: Optional[str]) -> List[clouds.Region]:
|
74
74
|
assert zone is None, 'Vast does not support zones.'
|
75
75
|
del accelerators, zone # unused
|
76
|
-
regions =
|
76
|
+
regions = catalog.get_region_zones_for_instance_type(
|
77
77
|
instance_type, use_spot, 'vast')
|
78
78
|
|
79
79
|
if region is not None:
|
@@ -85,8 +85,8 @@ class Vast(clouds.Cloud):
|
|
85
85
|
cls,
|
86
86
|
instance_type: str,
|
87
87
|
) -> Tuple[Optional[float], Optional[float]]:
|
88
|
-
return
|
89
|
-
|
88
|
+
return catalog.get_vcpus_mem_from_instance_type(instance_type,
|
89
|
+
clouds='vast')
|
90
90
|
|
91
91
|
@classmethod
|
92
92
|
def zones_provision_loop(
|
@@ -113,11 +113,11 @@ class Vast(clouds.Cloud):
|
|
113
113
|
use_spot: bool,
|
114
114
|
region: Optional[str] = None,
|
115
115
|
zone: Optional[str] = None) -> float:
|
116
|
-
return
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
116
|
+
return catalog.get_hourly_cost(instance_type,
|
117
|
+
use_spot=use_spot,
|
118
|
+
region=region,
|
119
|
+
zone=zone,
|
120
|
+
clouds='vast')
|
121
121
|
|
122
122
|
def accelerators_to_hourly_cost(self,
|
123
123
|
accelerators: Dict[str, int],
|
@@ -139,16 +139,16 @@ class Vast(clouds.Cloud):
|
|
139
139
|
disk_tier: Optional[resources_utils.DiskTier] = None
|
140
140
|
) -> Optional[str]:
|
141
141
|
"""Returns the default instance type for Vast."""
|
142
|
-
return
|
143
|
-
|
144
|
-
|
145
|
-
|
142
|
+
return catalog.get_default_instance_type(cpus=cpus,
|
143
|
+
memory=memory,
|
144
|
+
disk_tier=disk_tier,
|
145
|
+
clouds='vast')
|
146
146
|
|
147
147
|
@classmethod
|
148
148
|
def get_accelerators_from_instance_type(
|
149
149
|
cls, instance_type: str) -> Optional[Dict[str, Union[int, float]]]:
|
150
|
-
return
|
151
|
-
|
150
|
+
return catalog.get_accelerators_from_instance_type(instance_type,
|
151
|
+
clouds='vast')
|
152
152
|
|
153
153
|
@classmethod
|
154
154
|
def get_zone_shell_cmd(cls) -> Optional[str]:
|
@@ -223,16 +223,16 @@ class Vast(clouds.Cloud):
|
|
223
223
|
|
224
224
|
assert len(accelerators) == 1, resources
|
225
225
|
acc, acc_count = list(accelerators.items())[0]
|
226
|
-
(instance_list,
|
227
|
-
|
228
|
-
|
229
|
-
|
230
|
-
|
231
|
-
|
232
|
-
|
233
|
-
|
234
|
-
|
235
|
-
|
226
|
+
(instance_list,
|
227
|
+
fuzzy_candidate_list) = catalog.get_instance_type_for_accelerator(
|
228
|
+
acc,
|
229
|
+
acc_count,
|
230
|
+
use_spot=resources.use_spot,
|
231
|
+
cpus=resources.cpus,
|
232
|
+
region=resources.region,
|
233
|
+
zone=resources.zone,
|
234
|
+
memory=resources.memory,
|
235
|
+
clouds='vast')
|
236
236
|
if instance_list is None:
|
237
237
|
return resources_utils.FeasibleResources([], fuzzy_candidate_list,
|
238
238
|
None)
|
@@ -276,10 +276,10 @@ class Vast(clouds.Cloud):
|
|
276
276
|
return None
|
277
277
|
|
278
278
|
def instance_type_exists(self, instance_type: str) -> bool:
|
279
|
-
return
|
279
|
+
return catalog.instance_type_exists(instance_type, 'vast')
|
280
280
|
|
281
281
|
def validate_region_zone(self, region: Optional[str], zone: Optional[str]):
|
282
|
-
return
|
282
|
+
return catalog.validate_region_zone(region, zone, clouds='vast')
|
283
283
|
|
284
284
|
@classmethod
|
285
285
|
def get_image_size(cls, image_id: str, region: Optional[str]) -> float:
|
sky/clouds/vsphere.py
CHANGED
@@ -3,9 +3,9 @@ import subprocess
|
|
3
3
|
import typing
|
4
4
|
from typing import Dict, Iterator, List, Optional, Tuple, Union
|
5
5
|
|
6
|
+
from sky import catalog
|
6
7
|
from sky import clouds
|
7
8
|
from sky.adaptors import common as adaptors_common
|
8
|
-
from sky.clouds import service_catalog
|
9
9
|
from sky.provision.vsphere import vsphere_utils
|
10
10
|
from sky.provision.vsphere.vsphere_utils import get_vsphere_credentials
|
11
11
|
from sky.provision.vsphere.vsphere_utils import initialize_vsphere_data
|
@@ -90,7 +90,7 @@ class Vsphere(clouds.Cloud):
|
|
90
90
|
zone: Optional[str],
|
91
91
|
) -> List[clouds.Region]:
|
92
92
|
del accelerators, zone # unused
|
93
|
-
regions =
|
93
|
+
regions = catalog.get_region_zones_for_instance_type(
|
94
94
|
instance_type, use_spot, _CLOUD_VSPHERE)
|
95
95
|
|
96
96
|
if region is not None:
|
@@ -151,17 +151,17 @@ class Vsphere(clouds.Cloud):
|
|
151
151
|
memory: Optional[str] = None,
|
152
152
|
disk_tier: Optional[resources_utils.DiskTier] = None,
|
153
153
|
) -> Optional[str]:
|
154
|
-
return
|
155
|
-
|
156
|
-
|
157
|
-
|
154
|
+
return catalog.get_default_instance_type(cpus=cpus,
|
155
|
+
memory=memory,
|
156
|
+
disk_tier=disk_tier,
|
157
|
+
clouds=_CLOUD_VSPHERE)
|
158
158
|
|
159
159
|
@classmethod
|
160
160
|
def get_accelerators_from_instance_type(
|
161
161
|
cls,
|
162
162
|
instance_type: str,
|
163
163
|
) -> Optional[Dict[str, Union[int, float]]]:
|
164
|
-
return
|
164
|
+
return catalog.get_accelerators_from_instance_type(
|
165
165
|
instance_type, clouds=_CLOUD_VSPHERE)
|
166
166
|
|
167
167
|
@classmethod
|
@@ -169,8 +169,8 @@ class Vsphere(clouds.Cloud):
|
|
169
169
|
cls,
|
170
170
|
instance_type: str,
|
171
171
|
) -> Tuple[Optional[float], Optional[float]]:
|
172
|
-
return
|
173
|
-
|
172
|
+
return catalog.get_vcpus_mem_from_instance_type(instance_type,
|
173
|
+
clouds=_CLOUD_VSPHERE)
|
174
174
|
|
175
175
|
@classmethod
|
176
176
|
def get_zone_shell_cmd(cls) -> Optional[str]:
|
@@ -247,7 +247,7 @@ class Vsphere(clouds.Cloud):
|
|
247
247
|
(
|
248
248
|
instance_list,
|
249
249
|
fuzzy_candidate_list,
|
250
|
-
) =
|
250
|
+
) = catalog.get_instance_type_for_accelerator(
|
251
251
|
acc,
|
252
252
|
acc_count,
|
253
253
|
use_spot=resources.use_spot,
|
@@ -325,10 +325,7 @@ class Vsphere(clouds.Cloud):
|
|
325
325
|
return None
|
326
326
|
|
327
327
|
def instance_type_exists(self, instance_type: str) -> bool:
|
328
|
-
return
|
329
|
-
_CLOUD_VSPHERE)
|
328
|
+
return catalog.instance_type_exists(instance_type, _CLOUD_VSPHERE)
|
330
329
|
|
331
330
|
def validate_region_zone(self, region: Optional[str], zone: Optional[str]):
|
332
|
-
return
|
333
|
-
zone,
|
334
|
-
clouds=_CLOUD_VSPHERE)
|
331
|
+
return catalog.validate_region_zone(region, zone, clouds=_CLOUD_VSPHERE)
|
sky/core.py
CHANGED
@@ -8,6 +8,7 @@ import colorama
|
|
8
8
|
|
9
9
|
from sky import admin_policy
|
10
10
|
from sky import backends
|
11
|
+
from sky import catalog
|
11
12
|
from sky import check as sky_check
|
12
13
|
from sky import clouds
|
13
14
|
from sky import dag as dag_lib
|
@@ -21,7 +22,6 @@ from sky import skypilot_config
|
|
21
22
|
from sky import task as task_lib
|
22
23
|
from sky.backends import backend_utils
|
23
24
|
from sky.clouds import cloud as sky_cloud
|
24
|
-
from sky.clouds import service_catalog
|
25
25
|
from sky.jobs.server import core as managed_jobs_core
|
26
26
|
from sky.provision.kubernetes import constants as kubernetes_constants
|
27
27
|
from sky.provision.kubernetes import utils as kubernetes_utils
|
@@ -1061,7 +1061,7 @@ def realtime_kubernetes_gpu_availability(
|
|
1061
1061
|
name_filter: Optional[str] = None,
|
1062
1062
|
quantity_filter: Optional[int] = None
|
1063
1063
|
) -> List[models.RealtimeGpuAvailability]:
|
1064
|
-
counts, capacity, available =
|
1064
|
+
counts, capacity, available = catalog.list_accelerator_realtime(
|
1065
1065
|
gpus_only=True,
|
1066
1066
|
clouds='ssh' if is_ssh else 'kubernetes',
|
1067
1067
|
name_filter=name_filter,
|
sky/dashboard/out/404.html
CHANGED
@@ -1 +1 @@
|
|
1
|
-
<!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><title>404: This page could not be found</title><meta name="next-head-count" content="3"/><link rel="preload" href="/dashboard/_next/static/css/
|
1
|
+
<!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><title>404: This page could not be found</title><meta name="next-head-count" content="3"/><link rel="preload" href="/dashboard/_next/static/css/667d941a2888ce6e.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/667d941a2888ce6e.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/dashboard/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js"></script><script src="/dashboard/_next/static/chunks/webpack-65d465f948974c0d.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-87d061ee6ed71b28.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-e0e2335212e72357.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-cb81dc4d27f4d009.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_error-1be831200e60c5c0.js" defer=""></script><script src="/dashboard/_next/static/qjhIe-yC6nHcLKBqpzO1M/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/qjhIe-yC6nHcLKBqpzO1M/_ssgManifest.js" defer=""></script></head><body><div id="__next"><div style="font-family:system-ui,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div style="line-height:48px"><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding-right:23px;font-size:24px;font-weight:500;vertical-align:top">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:28px">This page could not be found<!-- -->.</h2></div></div></div></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{"statusCode":404}},"page":"/_error","query":{},"buildId":"qjhIe-yC6nHcLKBqpzO1M","assetPrefix":"/dashboard","nextExport":true,"isFallback":false,"gip":true,"scriptLoader":[]}</script></body></html>
|