skypilot-nightly 1.0.0.dev20250718__py3-none-any.whl → 1.0.0.dev20250720__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.
- sky/__init__.py +4 -2
- sky/backends/backend_utils.py +23 -13
- sky/backends/cloud_vm_ray_backend.py +19 -11
- sky/catalog/__init__.py +3 -1
- sky/catalog/aws_catalog.py +8 -5
- sky/catalog/azure_catalog.py +8 -5
- sky/catalog/common.py +8 -2
- sky/catalog/cudo_catalog.py +5 -2
- sky/catalog/do_catalog.py +4 -1
- sky/catalog/fluidstack_catalog.py +5 -2
- sky/catalog/gcp_catalog.py +8 -5
- sky/catalog/hyperbolic_catalog.py +5 -2
- sky/catalog/ibm_catalog.py +8 -5
- sky/catalog/lambda_catalog.py +8 -5
- sky/catalog/nebius_catalog.py +8 -5
- sky/catalog/oci_catalog.py +8 -5
- sky/catalog/paperspace_catalog.py +4 -1
- sky/catalog/runpod_catalog.py +5 -2
- sky/catalog/scp_catalog.py +8 -5
- sky/catalog/vast_catalog.py +5 -2
- sky/catalog/vsphere_catalog.py +4 -1
- sky/client/cli/command.py +25 -2
- sky/client/sdk.py +9 -4
- sky/clouds/aws.py +12 -7
- sky/clouds/azure.py +12 -7
- sky/clouds/cloud.py +9 -8
- sky/clouds/cudo.py +13 -7
- sky/clouds/do.py +12 -7
- sky/clouds/fluidstack.py +11 -6
- sky/clouds/gcp.py +12 -7
- sky/clouds/hyperbolic.py +11 -6
- sky/clouds/ibm.py +11 -6
- sky/clouds/kubernetes.py +7 -3
- sky/clouds/lambda_cloud.py +11 -6
- sky/clouds/nebius.py +12 -7
- sky/clouds/oci.py +12 -7
- sky/clouds/paperspace.py +12 -7
- sky/clouds/runpod.py +12 -7
- sky/clouds/scp.py +11 -6
- sky/clouds/vast.py +12 -7
- sky/clouds/vsphere.py +11 -6
- sky/core.py +6 -1
- sky/dashboard/out/404.html +1 -1
- sky/dashboard/out/_next/static/chunks/{1043-734e57d2b27dfe5d.js → 1043-869d9c78bf5dd3df.js} +1 -1
- sky/dashboard/out/_next/static/chunks/1871-a821dcaaae2a3823.js +6 -0
- sky/dashboard/out/_next/static/chunks/{2641.35edc9ccaeaad9e3.js → 2641.5233e938f14e31a7.js} +1 -1
- sky/dashboard/out/_next/static/chunks/{4725.4c849b1e05c8e9ad.js → 4725.66125dcd9832aa5d.js} +1 -1
- sky/dashboard/out/_next/static/chunks/4869.c7c055a5c2814f33.js +16 -0
- sky/dashboard/out/_next/static/chunks/938-63fc419cb82ad9b3.js +1 -0
- sky/dashboard/out/_next/static/chunks/9470-8178183f3bae198f.js +1 -0
- sky/dashboard/out/_next/static/chunks/pages/_app-507712f30cd3cec3.js +20 -0
- sky/dashboard/out/_next/static/chunks/webpack-26cdc782eed15a7d.js +1 -0
- sky/dashboard/out/_next/static/css/5122cb0a08486fd3.css +3 -0
- sky/dashboard/out/_next/static/{FUjweqdImyeYhMYFON-Se → pTQKG61ng32Zc7gsAROFJ}/_buildManifest.js +1 -1
- 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/volumes.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/global_user_state.py +13 -143
- sky/jobs/state.py +9 -88
- sky/jobs/utils.py +28 -13
- sky/schemas/db/README +4 -0
- sky/schemas/db/env.py +90 -0
- sky/schemas/db/global_user_state/001_initial_schema.py +124 -0
- sky/schemas/db/script.py.mako +28 -0
- sky/schemas/db/skypilot_config/001_initial_schema.py +30 -0
- sky/schemas/db/spot_jobs/001_initial_schema.py +97 -0
- sky/serve/client/sdk.py +6 -2
- sky/serve/controller.py +7 -3
- sky/serve/serve_state.py +1 -1
- sky/serve/serve_utils.py +171 -75
- sky/serve/server/core.py +17 -6
- sky/server/requests/payloads.py +2 -0
- sky/server/requests/requests.py +1 -1
- sky/setup_files/MANIFEST.in +2 -0
- sky/setup_files/alembic.ini +152 -0
- sky/setup_files/dependencies.py +1 -0
- sky/skylet/configs.py +1 -1
- sky/skylet/job_lib.py +1 -1
- sky/skypilot_config.py +32 -6
- sky/users/permission.py +1 -1
- sky/utils/common_utils.py +77 -0
- sky/utils/db/__init__.py +0 -0
- sky/utils/{db_utils.py → db/db_utils.py} +59 -0
- sky/utils/db/migration_utils.py +53 -0
- {skypilot_nightly-1.0.0.dev20250718.dist-info → skypilot_nightly-1.0.0.dev20250720.dist-info}/METADATA +2 -1
- {skypilot_nightly-1.0.0.dev20250718.dist-info → skypilot_nightly-1.0.0.dev20250720.dist-info}/RECORD +102 -93
- sky/dashboard/out/_next/static/chunks/1871-76491ac174a95278.js +0 -6
- sky/dashboard/out/_next/static/chunks/4869.bdd42f14b51d1d6f.js +0 -16
- sky/dashboard/out/_next/static/chunks/938-6a9ffdaa21eee969.js +0 -1
- sky/dashboard/out/_next/static/chunks/9470-b6f6a35283863a6f.js +0 -1
- sky/dashboard/out/_next/static/chunks/pages/_app-771a40cde532309b.js +0 -20
- sky/dashboard/out/_next/static/chunks/webpack-6b0575ea521af4f3.js +0 -1
- sky/dashboard/out/_next/static/css/219887b94512388c.css +0 -3
- /sky/dashboard/out/_next/static/{FUjweqdImyeYhMYFON-Se → pTQKG61ng32Zc7gsAROFJ}/_ssgManifest.js +0 -0
- {skypilot_nightly-1.0.0.dev20250718.dist-info → skypilot_nightly-1.0.0.dev20250720.dist-info}/WHEEL +0 -0
- {skypilot_nightly-1.0.0.dev20250718.dist-info → skypilot_nightly-1.0.0.dev20250720.dist-info}/entry_points.txt +0 -0
- {skypilot_nightly-1.0.0.dev20250718.dist-info → skypilot_nightly-1.0.0.dev20250720.dist-info}/licenses/LICENSE +0 -0
- {skypilot_nightly-1.0.0.dev20250718.dist-info → skypilot_nightly-1.0.0.dev20250720.dist-info}/top_level.txt +0 -0
sky/client/sdk.py
CHANGED
|
@@ -29,7 +29,6 @@ import colorama
|
|
|
29
29
|
import filelock
|
|
30
30
|
|
|
31
31
|
from sky import admin_policy
|
|
32
|
-
from sky import backends
|
|
33
32
|
from sky import exceptions
|
|
34
33
|
from sky import sky_logging
|
|
35
34
|
from sky import skypilot_config
|
|
@@ -64,6 +63,7 @@ if typing.TYPE_CHECKING:
|
|
|
64
63
|
import requests
|
|
65
64
|
|
|
66
65
|
import sky
|
|
66
|
+
from sky import backends
|
|
67
67
|
else:
|
|
68
68
|
psutil = adaptors_common.LazyImport('psutil')
|
|
69
69
|
|
|
@@ -73,6 +73,11 @@ logging.getLogger('httpx').setLevel(logging.CRITICAL)
|
|
|
73
73
|
_LINE_PROCESSED_KEY = 'line_processed'
|
|
74
74
|
|
|
75
75
|
|
|
76
|
+
def reload_config() -> None:
|
|
77
|
+
"""Reloads the client-side config."""
|
|
78
|
+
skypilot_config.safe_reload_config()
|
|
79
|
+
|
|
80
|
+
|
|
76
81
|
def stream_response(request_id: Optional[str],
|
|
77
82
|
response: 'requests.Response',
|
|
78
83
|
output_stream: Optional['io.TextIOBase'] = None,
|
|
@@ -372,7 +377,7 @@ def launch(
|
|
|
372
377
|
idle_minutes_to_autostop: Optional[int] = None,
|
|
373
378
|
dryrun: bool = False,
|
|
374
379
|
down: bool = False, # pylint: disable=redefined-outer-name
|
|
375
|
-
backend: Optional[backends.Backend] = None,
|
|
380
|
+
backend: Optional['backends.Backend'] = None,
|
|
376
381
|
optimize_target: common.OptimizeTarget = common.OptimizeTarget.COST,
|
|
377
382
|
no_setup: bool = False,
|
|
378
383
|
clone_disk_from: Optional[str] = None,
|
|
@@ -530,7 +535,7 @@ def _launch(
|
|
|
530
535
|
idle_minutes_to_autostop: Optional[int] = None,
|
|
531
536
|
dryrun: bool = False,
|
|
532
537
|
down: bool = False, # pylint: disable=redefined-outer-name
|
|
533
|
-
backend: Optional[backends.Backend] = None,
|
|
538
|
+
backend: Optional['backends.Backend'] = None,
|
|
534
539
|
optimize_target: common.OptimizeTarget = common.OptimizeTarget.COST,
|
|
535
540
|
no_setup: bool = False,
|
|
536
541
|
clone_disk_from: Optional[str] = None,
|
|
@@ -639,7 +644,7 @@ def exec( # pylint: disable=redefined-builtin
|
|
|
639
644
|
cluster_name: Optional[str] = None,
|
|
640
645
|
dryrun: bool = False,
|
|
641
646
|
down: bool = False, # pylint: disable=redefined-outer-name
|
|
642
|
-
backend: Optional[backends.Backend] = None,
|
|
647
|
+
backend: Optional['backends.Backend'] = None,
|
|
643
648
|
) -> server_common.RequestId:
|
|
644
649
|
"""Executes a task on an existing cluster.
|
|
645
650
|
|
sky/clouds/aws.py
CHANGED
|
@@ -404,15 +404,18 @@ class AWS(clouds.Cloud):
|
|
|
404
404
|
return cost
|
|
405
405
|
|
|
406
406
|
@classmethod
|
|
407
|
-
def get_default_instance_type(
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
407
|
+
def get_default_instance_type(cls,
|
|
408
|
+
cpus: Optional[str] = None,
|
|
409
|
+
memory: Optional[str] = None,
|
|
410
|
+
disk_tier: Optional[
|
|
411
|
+
resources_utils.DiskTier] = None,
|
|
412
|
+
region: Optional[str] = None,
|
|
413
|
+
zone: Optional[str] = None) -> Optional[str]:
|
|
413
414
|
return catalog.get_default_instance_type(cpus=cpus,
|
|
414
415
|
memory=memory,
|
|
415
416
|
disk_tier=disk_tier,
|
|
417
|
+
region=region,
|
|
418
|
+
zone=zone,
|
|
416
419
|
clouds='aws')
|
|
417
420
|
|
|
418
421
|
# TODO: factor the following three methods, as they are the same logic
|
|
@@ -554,7 +557,9 @@ class AWS(clouds.Cloud):
|
|
|
554
557
|
default_instance_type = AWS.get_default_instance_type(
|
|
555
558
|
cpus=resources.cpus,
|
|
556
559
|
memory=resources.memory,
|
|
557
|
-
disk_tier=resources.disk_tier
|
|
560
|
+
disk_tier=resources.disk_tier,
|
|
561
|
+
region=resources.region,
|
|
562
|
+
zone=resources.zone)
|
|
558
563
|
if default_instance_type is None:
|
|
559
564
|
return resources_utils.FeasibleResources([], [], None)
|
|
560
565
|
else:
|
sky/clouds/azure.py
CHANGED
|
@@ -154,15 +154,18 @@ class Azure(clouds.Cloud):
|
|
|
154
154
|
return cost
|
|
155
155
|
|
|
156
156
|
@classmethod
|
|
157
|
-
def get_default_instance_type(
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
157
|
+
def get_default_instance_type(cls,
|
|
158
|
+
cpus: Optional[str] = None,
|
|
159
|
+
memory: Optional[str] = None,
|
|
160
|
+
disk_tier: Optional[
|
|
161
|
+
resources_utils.DiskTier] = None,
|
|
162
|
+
region: Optional[str] = None,
|
|
163
|
+
zone: Optional[str] = None) -> Optional[str]:
|
|
163
164
|
return catalog.get_default_instance_type(cpus=cpus,
|
|
164
165
|
memory=memory,
|
|
165
166
|
disk_tier=disk_tier,
|
|
167
|
+
region=region,
|
|
168
|
+
zone=zone,
|
|
166
169
|
clouds='azure')
|
|
167
170
|
|
|
168
171
|
@classmethod
|
|
@@ -499,7 +502,9 @@ class Azure(clouds.Cloud):
|
|
|
499
502
|
default_instance_type = Azure.get_default_instance_type(
|
|
500
503
|
cpus=resources.cpus,
|
|
501
504
|
memory=resources.memory,
|
|
502
|
-
disk_tier=resources.disk_tier
|
|
505
|
+
disk_tier=resources.disk_tier,
|
|
506
|
+
region=resources.region,
|
|
507
|
+
zone=resources.zone)
|
|
503
508
|
if default_instance_type is None:
|
|
504
509
|
return resources_utils.FeasibleResources([], [], None)
|
|
505
510
|
else:
|
sky/clouds/cloud.py
CHANGED
|
@@ -341,14 +341,15 @@ class Cloud:
|
|
|
341
341
|
raise NotImplementedError
|
|
342
342
|
|
|
343
343
|
@classmethod
|
|
344
|
-
def get_default_instance_type(
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
344
|
+
def get_default_instance_type(cls,
|
|
345
|
+
cpus: Optional[str] = None,
|
|
346
|
+
memory: Optional[str] = None,
|
|
347
|
+
disk_tier: Optional[
|
|
348
|
+
resources_utils.DiskTier] = None,
|
|
349
|
+
region: Optional[str] = None,
|
|
350
|
+
zone: Optional[str] = None) -> Optional[str]:
|
|
351
|
+
"""Returns the default instance type with the given #vCPUs, memory,
|
|
352
|
+
disk tier, region, and zone.
|
|
352
353
|
|
|
353
354
|
For example, if cpus='4', this method returns the default instance type
|
|
354
355
|
with 4 vCPUs. If cpus='4+', this method returns the default instance
|
sky/clouds/cudo.py
CHANGED
|
@@ -175,14 +175,18 @@ class Cudo(clouds.Cloud):
|
|
|
175
175
|
return 0.0
|
|
176
176
|
|
|
177
177
|
@classmethod
|
|
178
|
-
def get_default_instance_type(
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
178
|
+
def get_default_instance_type(cls,
|
|
179
|
+
cpus: Optional[str] = None,
|
|
180
|
+
memory: Optional[str] = None,
|
|
181
|
+
disk_tier: Optional[
|
|
182
|
+
resources_utils.DiskTier] = None,
|
|
183
|
+
region: Optional[str] = None,
|
|
184
|
+
zone: Optional[str] = None) -> Optional[str]:
|
|
184
185
|
return catalog.get_default_instance_type(cpus=cpus,
|
|
185
186
|
memory=memory,
|
|
187
|
+
disk_tier=disk_tier,
|
|
188
|
+
region=region,
|
|
189
|
+
zone=zone,
|
|
186
190
|
clouds='cudo')
|
|
187
191
|
|
|
188
192
|
@classmethod
|
|
@@ -251,7 +255,9 @@ class Cudo(clouds.Cloud):
|
|
|
251
255
|
default_instance_type = Cudo.get_default_instance_type(
|
|
252
256
|
cpus=resources.cpus,
|
|
253
257
|
memory=resources.memory,
|
|
254
|
-
disk_tier=resources.disk_tier
|
|
258
|
+
disk_tier=resources.disk_tier,
|
|
259
|
+
region=resources.region,
|
|
260
|
+
zone=resources.zone)
|
|
255
261
|
if default_instance_type is None:
|
|
256
262
|
return resources_utils.FeasibleResources([], [], None)
|
|
257
263
|
else:
|
sky/clouds/do.py
CHANGED
|
@@ -156,16 +156,19 @@ class DO(clouds.Cloud):
|
|
|
156
156
|
return self._REPR
|
|
157
157
|
|
|
158
158
|
@classmethod
|
|
159
|
-
def get_default_instance_type(
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
159
|
+
def get_default_instance_type(cls,
|
|
160
|
+
cpus: Optional[str] = None,
|
|
161
|
+
memory: Optional[str] = None,
|
|
162
|
+
disk_tier: Optional[
|
|
163
|
+
resources_utils.DiskTier] = None,
|
|
164
|
+
region: Optional[str] = None,
|
|
165
|
+
zone: Optional[str] = None) -> Optional[str]:
|
|
165
166
|
"""Returns the default instance type for DO."""
|
|
166
167
|
return catalog.get_default_instance_type(cpus=cpus,
|
|
167
168
|
memory=memory,
|
|
168
169
|
disk_tier=disk_tier,
|
|
170
|
+
region=region,
|
|
171
|
+
zone=zone,
|
|
169
172
|
clouds='DO')
|
|
170
173
|
|
|
171
174
|
@classmethod
|
|
@@ -246,7 +249,9 @@ class DO(clouds.Cloud):
|
|
|
246
249
|
default_instance_type = DO.get_default_instance_type(
|
|
247
250
|
cpus=resources.cpus,
|
|
248
251
|
memory=resources.memory,
|
|
249
|
-
disk_tier=resources.disk_tier
|
|
252
|
+
disk_tier=resources.disk_tier,
|
|
253
|
+
region=resources.region,
|
|
254
|
+
zone=resources.zone)
|
|
250
255
|
if default_instance_type is None:
|
|
251
256
|
return resources_utils.FeasibleResources([], [], None)
|
|
252
257
|
else:
|
sky/clouds/fluidstack.py
CHANGED
|
@@ -154,14 +154,17 @@ class Fluidstack(clouds.Cloud):
|
|
|
154
154
|
return 'Fluidstack'
|
|
155
155
|
|
|
156
156
|
@classmethod
|
|
157
|
-
def get_default_instance_type(
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
157
|
+
def get_default_instance_type(cls,
|
|
158
|
+
cpus: Optional[str] = None,
|
|
159
|
+
memory: Optional[str] = None,
|
|
160
|
+
disk_tier: Optional[DiskTier] = None,
|
|
161
|
+
region: Optional[str] = None,
|
|
162
|
+
zone: Optional[str] = None) -> Optional[str]:
|
|
162
163
|
return catalog.get_default_instance_type(cpus=cpus,
|
|
163
164
|
memory=memory,
|
|
164
165
|
disk_tier=disk_tier,
|
|
166
|
+
region=region,
|
|
167
|
+
zone=zone,
|
|
165
168
|
clouds='fluidstack')
|
|
166
169
|
|
|
167
170
|
@classmethod
|
|
@@ -243,7 +246,9 @@ class Fluidstack(clouds.Cloud):
|
|
|
243
246
|
default_instance_type = Fluidstack.get_default_instance_type(
|
|
244
247
|
cpus=resources.cpus,
|
|
245
248
|
memory=resources.memory,
|
|
246
|
-
disk_tier=resources.disk_tier
|
|
249
|
+
disk_tier=resources.disk_tier,
|
|
250
|
+
region=resources.region,
|
|
251
|
+
zone=resources.zone)
|
|
247
252
|
if default_instance_type is None:
|
|
248
253
|
return resources_utils.FeasibleResources([], [], None)
|
|
249
254
|
else:
|
sky/clouds/gcp.py
CHANGED
|
@@ -436,15 +436,18 @@ class GCP(clouds.Cloud):
|
|
|
436
436
|
return cls._get_image_size(image_id)
|
|
437
437
|
|
|
438
438
|
@classmethod
|
|
439
|
-
def get_default_instance_type(
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
439
|
+
def get_default_instance_type(cls,
|
|
440
|
+
cpus: Optional[str] = None,
|
|
441
|
+
memory: Optional[str] = None,
|
|
442
|
+
disk_tier: Optional[
|
|
443
|
+
resources_utils.DiskTier] = None,
|
|
444
|
+
region: Optional[str] = None,
|
|
445
|
+
zone: Optional[str] = None) -> Optional[str]:
|
|
445
446
|
return catalog.get_default_instance_type(cpus=cpus,
|
|
446
447
|
memory=memory,
|
|
447
448
|
disk_tier=disk_tier,
|
|
449
|
+
region=region,
|
|
450
|
+
zone=zone,
|
|
448
451
|
clouds='gcp')
|
|
449
452
|
|
|
450
453
|
@classmethod
|
|
@@ -681,7 +684,9 @@ class GCP(clouds.Cloud):
|
|
|
681
684
|
host_vm_type = GCP.get_default_instance_type(
|
|
682
685
|
cpus=resources.cpus,
|
|
683
686
|
memory=resources.memory,
|
|
684
|
-
disk_tier=resources.disk_tier
|
|
687
|
+
disk_tier=resources.disk_tier,
|
|
688
|
+
region=resources.region,
|
|
689
|
+
zone=resources.zone)
|
|
685
690
|
if host_vm_type is None:
|
|
686
691
|
# TODO: Add hints to all return values in this method to help
|
|
687
692
|
# users understand why the resources are not launchable.
|
sky/clouds/hyperbolic.py
CHANGED
|
@@ -109,14 +109,17 @@ class Hyperbolic(clouds.Cloud):
|
|
|
109
109
|
clouds='hyperbolic')
|
|
110
110
|
|
|
111
111
|
@classmethod
|
|
112
|
-
def get_default_instance_type(
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
112
|
+
def get_default_instance_type(cls,
|
|
113
|
+
cpus: Optional[str] = None,
|
|
114
|
+
memory: Optional[str] = None,
|
|
115
|
+
disk_tier: Optional[DiskTier] = None,
|
|
116
|
+
region: Optional[str] = None,
|
|
117
|
+
zone: Optional[str] = None) -> Optional[str]:
|
|
117
118
|
return catalog.get_default_instance_type(cpus=cpus,
|
|
118
119
|
memory=memory,
|
|
119
120
|
disk_tier=disk_tier,
|
|
121
|
+
region=region,
|
|
122
|
+
zone=zone,
|
|
120
123
|
clouds='hyperbolic')
|
|
121
124
|
|
|
122
125
|
@classmethod
|
|
@@ -199,7 +202,9 @@ class Hyperbolic(clouds.Cloud):
|
|
|
199
202
|
default_instance_type = self.get_default_instance_type(
|
|
200
203
|
cpus=resources.cpus,
|
|
201
204
|
memory=resources.memory,
|
|
202
|
-
disk_tier=resources.disk_tier
|
|
205
|
+
disk_tier=resources.disk_tier,
|
|
206
|
+
region=resources.region,
|
|
207
|
+
zone=resources.zone)
|
|
203
208
|
if default_instance_type is None:
|
|
204
209
|
return resources_utils.FeasibleResources([], [], None)
|
|
205
210
|
else:
|
sky/clouds/ibm.py
CHANGED
|
@@ -262,14 +262,17 @@ class IBM(clouds.Cloud):
|
|
|
262
262
|
|
|
263
263
|
@classmethod
|
|
264
264
|
def get_default_instance_type(
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
265
|
+
cls,
|
|
266
|
+
cpus: Optional[str] = None,
|
|
267
|
+
memory: Optional[str] = None,
|
|
268
|
+
disk_tier: Optional['resources_utils.DiskTier'] = None,
|
|
269
|
+
region: Optional[str] = None,
|
|
270
|
+
zone: Optional[str] = None) -> Optional[str]:
|
|
270
271
|
return catalog.get_default_instance_type(cpus=cpus,
|
|
271
272
|
memory=memory,
|
|
272
273
|
disk_tier=disk_tier,
|
|
274
|
+
region=region,
|
|
275
|
+
zone=zone,
|
|
273
276
|
clouds='ibm')
|
|
274
277
|
|
|
275
278
|
def _get_feasible_launchable_resources(
|
|
@@ -305,7 +308,9 @@ class IBM(clouds.Cloud):
|
|
|
305
308
|
default_instance_type = IBM.get_default_instance_type(
|
|
306
309
|
cpus=resources.cpus,
|
|
307
310
|
memory=resources.memory,
|
|
308
|
-
disk_tier=resources.disk_tier
|
|
311
|
+
disk_tier=resources.disk_tier,
|
|
312
|
+
region=resources.region,
|
|
313
|
+
zone=resources.zone)
|
|
309
314
|
if default_instance_type is None:
|
|
310
315
|
return resources_utils.FeasibleResources([], [], None)
|
|
311
316
|
else:
|
sky/clouds/kubernetes.py
CHANGED
|
@@ -349,10 +349,12 @@ class Kubernetes(clouds.Cloud):
|
|
|
349
349
|
cls,
|
|
350
350
|
cpus: Optional[str] = None,
|
|
351
351
|
memory: Optional[str] = None,
|
|
352
|
-
disk_tier: Optional['resources_utils.DiskTier'] = None
|
|
352
|
+
disk_tier: Optional['resources_utils.DiskTier'] = None,
|
|
353
|
+
region: Optional[str] = None,
|
|
354
|
+
zone: Optional[str] = None) -> str:
|
|
353
355
|
# TODO(romilb): In the future, we may want to move the instance type
|
|
354
356
|
# selection + availability checking to a kubernetes_catalog module.
|
|
355
|
-
del disk_tier # Unused.
|
|
357
|
+
del disk_tier, region, zone # Unused.
|
|
356
358
|
# We strip '+' from resource requests since Kubernetes can provision
|
|
357
359
|
# exactly the requested resources.
|
|
358
360
|
instance_cpus = float(
|
|
@@ -806,7 +808,9 @@ class Kubernetes(clouds.Cloud):
|
|
|
806
808
|
default_instance_type = Kubernetes.get_default_instance_type(
|
|
807
809
|
cpus=resources.cpus,
|
|
808
810
|
memory=resources.memory,
|
|
809
|
-
disk_tier=resources.disk_tier
|
|
811
|
+
disk_tier=resources.disk_tier,
|
|
812
|
+
region=resources.region,
|
|
813
|
+
zone=resources.zone)
|
|
810
814
|
|
|
811
815
|
if accelerators is None:
|
|
812
816
|
# For CPU only clusters, need no special handling
|
sky/clouds/lambda_cloud.py
CHANGED
|
@@ -132,14 +132,17 @@ class Lambda(clouds.Cloud):
|
|
|
132
132
|
|
|
133
133
|
@classmethod
|
|
134
134
|
def get_default_instance_type(
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
135
|
+
cls,
|
|
136
|
+
cpus: Optional[str] = None,
|
|
137
|
+
memory: Optional[str] = None,
|
|
138
|
+
disk_tier: Optional['resources_utils.DiskTier'] = None,
|
|
139
|
+
region: Optional[str] = None,
|
|
140
|
+
zone: Optional[str] = None) -> Optional[str]:
|
|
140
141
|
return catalog.get_default_instance_type(cpus=cpus,
|
|
141
142
|
memory=memory,
|
|
142
143
|
disk_tier=disk_tier,
|
|
144
|
+
region=region,
|
|
145
|
+
zone=zone,
|
|
143
146
|
clouds='lambda')
|
|
144
147
|
|
|
145
148
|
@classmethod
|
|
@@ -227,7 +230,9 @@ class Lambda(clouds.Cloud):
|
|
|
227
230
|
default_instance_type = Lambda.get_default_instance_type(
|
|
228
231
|
cpus=resources.cpus,
|
|
229
232
|
memory=resources.memory,
|
|
230
|
-
disk_tier=resources.disk_tier
|
|
233
|
+
disk_tier=resources.disk_tier,
|
|
234
|
+
region=resources.region,
|
|
235
|
+
zone=resources.zone)
|
|
231
236
|
if default_instance_type is None:
|
|
232
237
|
return resources_utils.FeasibleResources([], [], None)
|
|
233
238
|
else:
|
sky/clouds/nebius.py
CHANGED
|
@@ -175,16 +175,19 @@ class Nebius(clouds.Cloud):
|
|
|
175
175
|
return isinstance(other, Nebius)
|
|
176
176
|
|
|
177
177
|
@classmethod
|
|
178
|
-
def get_default_instance_type(
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
178
|
+
def get_default_instance_type(cls,
|
|
179
|
+
cpus: Optional[str] = None,
|
|
180
|
+
memory: Optional[str] = None,
|
|
181
|
+
disk_tier: Optional[
|
|
182
|
+
resources_utils.DiskTier] = None,
|
|
183
|
+
region: Optional[str] = None,
|
|
184
|
+
zone: Optional[str] = None) -> Optional[str]:
|
|
184
185
|
"""Returns the default instance type for Nebius."""
|
|
185
186
|
return catalog.get_default_instance_type(cpus=cpus,
|
|
186
187
|
memory=memory,
|
|
187
188
|
disk_tier=disk_tier,
|
|
189
|
+
region=region,
|
|
190
|
+
zone=zone,
|
|
188
191
|
clouds='nebius')
|
|
189
192
|
|
|
190
193
|
@classmethod
|
|
@@ -320,7 +323,9 @@ class Nebius(clouds.Cloud):
|
|
|
320
323
|
default_instance_type = Nebius.get_default_instance_type(
|
|
321
324
|
cpus=resources.cpus,
|
|
322
325
|
memory=resources.memory,
|
|
323
|
-
disk_tier=resources.disk_tier
|
|
326
|
+
disk_tier=resources.disk_tier,
|
|
327
|
+
region=resources.region,
|
|
328
|
+
zone=resources.zone)
|
|
324
329
|
if default_instance_type is None:
|
|
325
330
|
# TODO: Add hints to all return values in this method to help
|
|
326
331
|
# users understand why the resources are not launchable.
|
sky/clouds/oci.py
CHANGED
|
@@ -187,15 +187,18 @@ class OCI(clouds.Cloud):
|
|
|
187
187
|
return (num_gigabytes - 10 * 1024) * 0.0085
|
|
188
188
|
|
|
189
189
|
@classmethod
|
|
190
|
-
def get_default_instance_type(
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
190
|
+
def get_default_instance_type(cls,
|
|
191
|
+
cpus: Optional[str] = None,
|
|
192
|
+
memory: Optional[str] = None,
|
|
193
|
+
disk_tier: Optional[
|
|
194
|
+
resources_utils.DiskTier] = None,
|
|
195
|
+
region: Optional[str] = None,
|
|
196
|
+
zone: Optional[str] = None) -> Optional[str]:
|
|
196
197
|
return catalog.get_default_instance_type(cpus=cpus,
|
|
197
198
|
memory=memory,
|
|
198
199
|
disk_tier=disk_tier,
|
|
200
|
+
region=region,
|
|
201
|
+
zone=zone,
|
|
199
202
|
clouds='oci')
|
|
200
203
|
|
|
201
204
|
@classmethod
|
|
@@ -378,7 +381,9 @@ class OCI(clouds.Cloud):
|
|
|
378
381
|
default_instance_type = OCI.get_default_instance_type(
|
|
379
382
|
cpus=resources.cpus,
|
|
380
383
|
memory=resources.memory,
|
|
381
|
-
disk_tier=resources.disk_tier
|
|
384
|
+
disk_tier=resources.disk_tier,
|
|
385
|
+
region=resources.region,
|
|
386
|
+
zone=resources.zone)
|
|
382
387
|
|
|
383
388
|
if default_instance_type is None:
|
|
384
389
|
return resources_utils.FeasibleResources([], [], None)
|
sky/clouds/paperspace.py
CHANGED
|
@@ -160,16 +160,19 @@ class Paperspace(clouds.Cloud):
|
|
|
160
160
|
return self._REPR
|
|
161
161
|
|
|
162
162
|
@classmethod
|
|
163
|
-
def get_default_instance_type(
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
163
|
+
def get_default_instance_type(cls,
|
|
164
|
+
cpus: Optional[str] = None,
|
|
165
|
+
memory: Optional[str] = None,
|
|
166
|
+
disk_tier: Optional[
|
|
167
|
+
resources_utils.DiskTier] = None,
|
|
168
|
+
region: Optional[str] = None,
|
|
169
|
+
zone: Optional[str] = None) -> Optional[str]:
|
|
169
170
|
"""Returns the default instance type for Paperspace."""
|
|
170
171
|
return catalog.get_default_instance_type(cpus=cpus,
|
|
171
172
|
memory=memory,
|
|
172
173
|
disk_tier=disk_tier,
|
|
174
|
+
region=region,
|
|
175
|
+
zone=zone,
|
|
173
176
|
clouds='paperspace')
|
|
174
177
|
|
|
175
178
|
@classmethod
|
|
@@ -237,7 +240,9 @@ class Paperspace(clouds.Cloud):
|
|
|
237
240
|
default_instance_type = Paperspace.get_default_instance_type(
|
|
238
241
|
cpus=resources.cpus,
|
|
239
242
|
memory=resources.memory,
|
|
240
|
-
disk_tier=resources.disk_tier
|
|
243
|
+
disk_tier=resources.disk_tier,
|
|
244
|
+
region=resources.region,
|
|
245
|
+
zone=resources.zone)
|
|
241
246
|
if default_instance_type is None:
|
|
242
247
|
return resources_utils.FeasibleResources([], [], None)
|
|
243
248
|
else:
|
sky/clouds/runpod.py
CHANGED
|
@@ -141,16 +141,19 @@ class RunPod(clouds.Cloud):
|
|
|
141
141
|
return 0.0
|
|
142
142
|
|
|
143
143
|
@classmethod
|
|
144
|
-
def get_default_instance_type(
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
144
|
+
def get_default_instance_type(cls,
|
|
145
|
+
cpus: Optional[str] = None,
|
|
146
|
+
memory: Optional[str] = None,
|
|
147
|
+
disk_tier: Optional[
|
|
148
|
+
resources_utils.DiskTier] = None,
|
|
149
|
+
region: Optional[str] = None,
|
|
150
|
+
zone: Optional[str] = None) -> Optional[str]:
|
|
150
151
|
"""Returns the default instance type for RunPod."""
|
|
151
152
|
return catalog.get_default_instance_type(cpus=cpus,
|
|
152
153
|
memory=memory,
|
|
153
154
|
disk_tier=disk_tier,
|
|
155
|
+
region=region,
|
|
156
|
+
zone=zone,
|
|
154
157
|
clouds='runpod')
|
|
155
158
|
|
|
156
159
|
@classmethod
|
|
@@ -240,7 +243,9 @@ class RunPod(clouds.Cloud):
|
|
|
240
243
|
default_instance_type = RunPod.get_default_instance_type(
|
|
241
244
|
cpus=resources.cpus,
|
|
242
245
|
memory=resources.memory,
|
|
243
|
-
disk_tier=resources.disk_tier
|
|
246
|
+
disk_tier=resources.disk_tier,
|
|
247
|
+
region=resources.region,
|
|
248
|
+
zone=resources.zone)
|
|
244
249
|
if default_instance_type is None:
|
|
245
250
|
# TODO: Add hints to all return values in this method to help
|
|
246
251
|
# users understand why the resources are not launchable.
|
sky/clouds/scp.py
CHANGED
|
@@ -156,14 +156,17 @@ class SCP(clouds.Cloud):
|
|
|
156
156
|
|
|
157
157
|
@classmethod
|
|
158
158
|
def get_default_instance_type(
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
159
|
+
cls,
|
|
160
|
+
cpus: Optional[str] = None,
|
|
161
|
+
memory: Optional[str] = None,
|
|
162
|
+
disk_tier: Optional['resources_utils.DiskTier'] = None,
|
|
163
|
+
region: Optional[str] = None,
|
|
164
|
+
zone: Optional[str] = None) -> Optional[str]:
|
|
164
165
|
return catalog.get_default_instance_type(cpus=cpus,
|
|
165
166
|
memory=memory,
|
|
166
167
|
disk_tier=disk_tier,
|
|
168
|
+
region=region,
|
|
169
|
+
zone=zone,
|
|
167
170
|
clouds='scp')
|
|
168
171
|
|
|
169
172
|
@classmethod
|
|
@@ -301,7 +304,9 @@ class SCP(clouds.Cloud):
|
|
|
301
304
|
default_instance_type = SCP.get_default_instance_type(
|
|
302
305
|
cpus=resources.cpus,
|
|
303
306
|
memory=resources.memory,
|
|
304
|
-
disk_tier=resources.disk_tier
|
|
307
|
+
disk_tier=resources.disk_tier,
|
|
308
|
+
region=resources.region,
|
|
309
|
+
zone=resources.zone)
|
|
305
310
|
if default_instance_type is None:
|
|
306
311
|
return resources_utils.FeasibleResources([], [], None)
|
|
307
312
|
else:
|
sky/clouds/vast.py
CHANGED
|
@@ -136,16 +136,19 @@ class Vast(clouds.Cloud):
|
|
|
136
136
|
return 0.0
|
|
137
137
|
|
|
138
138
|
@classmethod
|
|
139
|
-
def get_default_instance_type(
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
139
|
+
def get_default_instance_type(cls,
|
|
140
|
+
cpus: Optional[str] = None,
|
|
141
|
+
memory: Optional[str] = None,
|
|
142
|
+
disk_tier: Optional[
|
|
143
|
+
resources_utils.DiskTier] = None,
|
|
144
|
+
region: Optional[str] = None,
|
|
145
|
+
zone: Optional[str] = None) -> Optional[str]:
|
|
145
146
|
"""Returns the default instance type for Vast."""
|
|
146
147
|
return catalog.get_default_instance_type(cpus=cpus,
|
|
147
148
|
memory=memory,
|
|
148
149
|
disk_tier=disk_tier,
|
|
150
|
+
region=region,
|
|
151
|
+
zone=zone,
|
|
149
152
|
clouds='vast')
|
|
150
153
|
|
|
151
154
|
@classmethod
|
|
@@ -218,7 +221,9 @@ class Vast(clouds.Cloud):
|
|
|
218
221
|
default_instance_type = Vast.get_default_instance_type(
|
|
219
222
|
cpus=resources.cpus,
|
|
220
223
|
memory=resources.memory,
|
|
221
|
-
disk_tier=resources.disk_tier
|
|
224
|
+
disk_tier=resources.disk_tier,
|
|
225
|
+
region=resources.region,
|
|
226
|
+
zone=resources.zone)
|
|
222
227
|
if default_instance_type is None:
|
|
223
228
|
# TODO: Add hints to all return values in this method to help
|
|
224
229
|
# users understand why the resources are not launchable.
|