skypilot-nightly 1.0.0.dev20250103__py3-none-any.whl → 1.0.0.dev20250104__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 +2 -2
- sky/backends/backend_utils.py +7 -0
- sky/backends/wheel_utils.py +4 -1
- sky/clouds/aws.py +87 -39
- sky/clouds/oci.py +20 -9
- sky/provision/kubernetes/utils.py +46 -0
- sky/provision/oci/query_utils.py +5 -2
- {skypilot_nightly-1.0.0.dev20250103.dist-info → skypilot_nightly-1.0.0.dev20250104.dist-info}/METADATA +1 -1
- {skypilot_nightly-1.0.0.dev20250103.dist-info → skypilot_nightly-1.0.0.dev20250104.dist-info}/RECORD +13 -13
- {skypilot_nightly-1.0.0.dev20250103.dist-info → skypilot_nightly-1.0.0.dev20250104.dist-info}/LICENSE +0 -0
- {skypilot_nightly-1.0.0.dev20250103.dist-info → skypilot_nightly-1.0.0.dev20250104.dist-info}/WHEEL +0 -0
- {skypilot_nightly-1.0.0.dev20250103.dist-info → skypilot_nightly-1.0.0.dev20250104.dist-info}/entry_points.txt +0 -0
- {skypilot_nightly-1.0.0.dev20250103.dist-info → skypilot_nightly-1.0.0.dev20250104.dist-info}/top_level.txt +0 -0
sky/__init__.py
CHANGED
@@ -5,7 +5,7 @@ from typing import Optional
|
|
5
5
|
import urllib.request
|
6
6
|
|
7
7
|
# Replaced with the current commit when building the wheels.
|
8
|
-
_SKYPILOT_COMMIT_SHA = '
|
8
|
+
_SKYPILOT_COMMIT_SHA = '4ab8e1668053fef8ae87ba9c832073c444078e49'
|
9
9
|
|
10
10
|
|
11
11
|
def _get_git_commit():
|
@@ -35,7 +35,7 @@ def _get_git_commit():
|
|
35
35
|
|
36
36
|
|
37
37
|
__commit__ = _get_git_commit()
|
38
|
-
__version__ = '1.0.0.
|
38
|
+
__version__ = '1.0.0.dev20250104'
|
39
39
|
__root_dir__ = os.path.dirname(os.path.abspath(__file__))
|
40
40
|
|
41
41
|
|
sky/backends/backend_utils.py
CHANGED
@@ -926,6 +926,13 @@ def write_cluster_config(
|
|
926
926
|
tmp_yaml_path,
|
927
927
|
cluster_config_overrides=to_provision.cluster_config_overrides)
|
928
928
|
kubernetes_utils.combine_metadata_fields(tmp_yaml_path)
|
929
|
+
yaml_obj = common_utils.read_yaml(tmp_yaml_path)
|
930
|
+
pod_config = yaml_obj['available_node_types']['ray_head_default'][
|
931
|
+
'node_config']
|
932
|
+
valid, message = kubernetes_utils.check_pod_config(pod_config)
|
933
|
+
if not valid:
|
934
|
+
raise exceptions.InvalidCloudConfigs(
|
935
|
+
f'Invalid pod_config. Details: {message}')
|
929
936
|
|
930
937
|
if dryrun:
|
931
938
|
# If dryrun, return the unfinished tmp yaml path.
|
sky/backends/wheel_utils.py
CHANGED
@@ -153,7 +153,10 @@ def build_sky_wheel() -> Tuple[pathlib.Path, str]:
|
|
153
153
|
if not path.exists():
|
154
154
|
return -1.
|
155
155
|
try:
|
156
|
-
return max(
|
156
|
+
return max(
|
157
|
+
os.path.getmtime(os.path.join(root, f))
|
158
|
+
for root, dirs, files in os.walk(path)
|
159
|
+
for f in (*dirs, *files))
|
157
160
|
except ValueError:
|
158
161
|
return -1.
|
159
162
|
|
sky/clouds/aws.py
CHANGED
@@ -2,6 +2,8 @@
|
|
2
2
|
import enum
|
3
3
|
import fnmatch
|
4
4
|
import functools
|
5
|
+
import hashlib
|
6
|
+
import json
|
5
7
|
import os
|
6
8
|
import re
|
7
9
|
import subprocess
|
@@ -16,6 +18,7 @@ from sky import sky_logging
|
|
16
18
|
from sky import skypilot_config
|
17
19
|
from sky.adaptors import aws
|
18
20
|
from sky.clouds import service_catalog
|
21
|
+
from sky.clouds.service_catalog import common as catalog_common
|
19
22
|
from sky.clouds.utils import aws_utils
|
20
23
|
from sky.skylet import constants
|
21
24
|
from sky.utils import common_utils
|
@@ -624,14 +627,10 @@ class AWS(clouds.Cloud):
|
|
624
627
|
|
625
628
|
@classmethod
|
626
629
|
def _current_identity_type(cls) -> Optional[AWSIdentityType]:
|
627
|
-
|
628
|
-
|
629
|
-
check=False,
|
630
|
-
stdout=subprocess.PIPE,
|
631
|
-
stderr=subprocess.PIPE)
|
632
|
-
if proc.returncode != 0:
|
630
|
+
stdout = cls._aws_configure_list()
|
631
|
+
if stdout is None:
|
633
632
|
return None
|
634
|
-
|
633
|
+
output = stdout.decode()
|
635
634
|
|
636
635
|
# We determine the identity type by looking at the output of
|
637
636
|
# `aws configure list`. The output looks like:
|
@@ -646,10 +645,10 @@ class AWS(clouds.Cloud):
|
|
646
645
|
|
647
646
|
def _is_access_key_of_type(type_str: str) -> bool:
|
648
647
|
# The dot (.) does not match line separators.
|
649
|
-
results = re.findall(fr'access_key.*{type_str}',
|
648
|
+
results = re.findall(fr'access_key.*{type_str}', output)
|
650
649
|
if len(results) > 1:
|
651
650
|
raise RuntimeError(
|
652
|
-
f'Unexpected `aws configure list` output:\n{
|
651
|
+
f'Unexpected `aws configure list` output:\n{output}')
|
653
652
|
return len(results) == 1
|
654
653
|
|
655
654
|
if _is_access_key_of_type(AWSIdentityType.SSO.value):
|
@@ -664,37 +663,20 @@ class AWS(clouds.Cloud):
|
|
664
663
|
return AWSIdentityType.SHARED_CREDENTIALS_FILE
|
665
664
|
|
666
665
|
@classmethod
|
667
|
-
@functools.lru_cache(maxsize=1)
|
668
|
-
def
|
669
|
-
|
670
|
-
|
671
|
-
|
672
|
-
|
673
|
-
|
674
|
-
|
675
|
-
|
676
|
-
|
677
|
-
|
678
|
-
- within the same root account, switch between different IAM
|
679
|
-
users, and treat [user_id=1234, account=A] and
|
680
|
-
[user_id=4567, account=A] to be the *same*. Namely, switching
|
681
|
-
between these IAM roles within the same root account will cause
|
682
|
-
the first element of the returned list to differ, and will allow
|
683
|
-
the same actual user to continue to interact with their clusters.
|
684
|
-
Note: this is not 100% safe, since the IAM users can have very
|
685
|
-
specific permissions, that disallow them to access the clusters
|
686
|
-
but it is a reasonable compromise as that could be rare.
|
687
|
-
|
688
|
-
Returns:
|
689
|
-
A list of strings that uniquely identifies the user on this cloud.
|
690
|
-
For identity check, we will fallback through the list of strings
|
691
|
-
until we find a match, and print a warning if we fail for the
|
692
|
-
first string.
|
666
|
+
@functools.lru_cache(maxsize=1)
|
667
|
+
def _aws_configure_list(cls) -> Optional[bytes]:
|
668
|
+
proc = subprocess.run('aws configure list',
|
669
|
+
shell=True,
|
670
|
+
check=False,
|
671
|
+
stdout=subprocess.PIPE,
|
672
|
+
stderr=subprocess.PIPE)
|
673
|
+
if proc.returncode != 0:
|
674
|
+
return None
|
675
|
+
return proc.stdout
|
693
676
|
|
694
|
-
|
695
|
-
|
696
|
-
|
697
|
-
"""
|
677
|
+
@classmethod
|
678
|
+
@functools.lru_cache(maxsize=1) # Cache since getting identity is slow.
|
679
|
+
def _sts_get_caller_identity(cls) -> Optional[List[List[str]]]:
|
698
680
|
try:
|
699
681
|
sts = aws.client('sts')
|
700
682
|
# The caller identity contains 3 fields: UserId, Account, Arn.
|
@@ -773,6 +755,72 @@ class AWS(clouds.Cloud):
|
|
773
755
|
# automatic switching for AWS. Currently we only support one identity.
|
774
756
|
return [user_ids]
|
775
757
|
|
758
|
+
@classmethod
|
759
|
+
@functools.lru_cache(maxsize=1) # Cache since getting identity is slow.
|
760
|
+
def get_user_identities(cls) -> Optional[List[List[str]]]:
|
761
|
+
"""Returns a [UserId, Account] list that uniquely identifies the user.
|
762
|
+
|
763
|
+
These fields come from `aws sts get-caller-identity` and are cached
|
764
|
+
locally by `aws configure list` output. The identities are assumed to
|
765
|
+
be stable for the duration of the `sky` process. Modifying the
|
766
|
+
credentials while the `sky` process is running will not affect the
|
767
|
+
identity returned by this function.
|
768
|
+
|
769
|
+
We permit the same actual user to:
|
770
|
+
|
771
|
+
- switch between different root accounts (after which both elements
|
772
|
+
of the list will be different) and have their clusters owned by
|
773
|
+
each account be protected; or
|
774
|
+
|
775
|
+
- within the same root account, switch between different IAM
|
776
|
+
users, and treat [user_id=1234, account=A] and
|
777
|
+
[user_id=4567, account=A] to be the *same*. Namely, switching
|
778
|
+
between these IAM roles within the same root account will cause
|
779
|
+
the first element of the returned list to differ, and will allow
|
780
|
+
the same actual user to continue to interact with their clusters.
|
781
|
+
Note: this is not 100% safe, since the IAM users can have very
|
782
|
+
specific permissions, that disallow them to access the clusters
|
783
|
+
but it is a reasonable compromise as that could be rare.
|
784
|
+
|
785
|
+
Returns:
|
786
|
+
A list of strings that uniquely identifies the user on this cloud.
|
787
|
+
For identity check, we will fallback through the list of strings
|
788
|
+
until we find a match, and print a warning if we fail for the
|
789
|
+
first string.
|
790
|
+
|
791
|
+
Raises:
|
792
|
+
exceptions.CloudUserIdentityError: if the user identity cannot be
|
793
|
+
retrieved.
|
794
|
+
"""
|
795
|
+
stdout = cls._aws_configure_list()
|
796
|
+
if stdout is None:
|
797
|
+
# `aws configure list` is not available, possible reasons:
|
798
|
+
# - awscli is not installed but credentials are valid, e.g. run from
|
799
|
+
# an EC2 instance with IAM role
|
800
|
+
# - aws credentials are not set, proceed anyway to get unified error
|
801
|
+
# message for users
|
802
|
+
return cls._sts_get_caller_identity()
|
803
|
+
config_hash = hashlib.md5(stdout).hexdigest()[:8]
|
804
|
+
# Getting aws identity cost ~1s, so we cache the result with the output of
|
805
|
+
# `aws configure list` as cache key. Different `aws configure list` output
|
806
|
+
# can have same aws identity, our assumption is the output would be stable
|
807
|
+
# in real world, so the number of cache files would be limited.
|
808
|
+
# TODO(aylei): consider using a more stable cache key and evalute eviction.
|
809
|
+
cache_path = catalog_common.get_catalog_path(
|
810
|
+
f'aws/.cache/user-identity-{config_hash}.txt')
|
811
|
+
if os.path.exists(cache_path):
|
812
|
+
try:
|
813
|
+
with open(cache_path, 'r', encoding='utf-8') as f:
|
814
|
+
return json.loads(f.read())
|
815
|
+
except json.JSONDecodeError:
|
816
|
+
# cache is invalid, ignore it and fetch identity again
|
817
|
+
pass
|
818
|
+
|
819
|
+
result = cls._sts_get_caller_identity()
|
820
|
+
with open(cache_path, 'w', encoding='utf-8') as f:
|
821
|
+
f.write(json.dumps(result))
|
822
|
+
return result
|
823
|
+
|
776
824
|
@classmethod
|
777
825
|
def get_active_user_identity_str(cls) -> Optional[str]:
|
778
826
|
user_identity = cls.get_active_user_identity()
|
sky/clouds/oci.py
CHANGED
@@ -232,6 +232,14 @@ class OCI(clouds.Cloud):
|
|
232
232
|
listing_id = None
|
233
233
|
res_ver = None
|
234
234
|
|
235
|
+
os_type = None
|
236
|
+
if ':' in image_id:
|
237
|
+
# OS type provided in the --image-id. This is the case where
|
238
|
+
# custom image's ocid provided in the --image-id parameter.
|
239
|
+
# - ocid1.image...aaa:oraclelinux (os type is oraclelinux)
|
240
|
+
# - ocid1.image...aaa (OS not provided)
|
241
|
+
image_id, os_type = image_id.replace(' ', '').split(':')
|
242
|
+
|
235
243
|
cpus = resources.cpus
|
236
244
|
instance_type_arr = resources.instance_type.split(
|
237
245
|
oci_utils.oci_config.INSTANCE_TYPE_RES_SPERATOR)
|
@@ -297,15 +305,18 @@ class OCI(clouds.Cloud):
|
|
297
305
|
cpus=None if cpus is None else float(cpus),
|
298
306
|
disk_tier=resources.disk_tier)
|
299
307
|
|
300
|
-
|
301
|
-
|
302
|
-
|
303
|
-
|
304
|
-
|
305
|
-
|
306
|
-
|
307
|
-
|
308
|
-
|
308
|
+
if os_type is None:
|
309
|
+
# OS type is not determined yet. So try to get it from vms.csv
|
310
|
+
image_str = self._get_image_str(
|
311
|
+
image_id=resources.image_id,
|
312
|
+
instance_type=resources.instance_type,
|
313
|
+
region=region.name)
|
314
|
+
|
315
|
+
# pylint: disable=import-outside-toplevel
|
316
|
+
from sky.clouds.service_catalog import oci_catalog
|
317
|
+
os_type = oci_catalog.get_image_os_from_tag(tag=image_str,
|
318
|
+
region=region.name)
|
319
|
+
logger.debug(f'OS type for the image {image_id} is {os_type}')
|
309
320
|
|
310
321
|
return {
|
311
322
|
'instance_type': instance_type,
|
@@ -893,6 +893,52 @@ def check_credentials(context: Optional[str],
|
|
893
893
|
return True, None
|
894
894
|
|
895
895
|
|
896
|
+
def check_pod_config(pod_config: dict) \
|
897
|
+
-> Tuple[bool, Optional[str]]:
|
898
|
+
"""Check if the pod_config is a valid pod config
|
899
|
+
|
900
|
+
Using deserialize api to check the pod_config is valid or not.
|
901
|
+
|
902
|
+
Returns:
|
903
|
+
bool: True if pod_config is valid.
|
904
|
+
str: Error message about why the pod_config is invalid, None otherwise.
|
905
|
+
"""
|
906
|
+
errors = []
|
907
|
+
# This api_client won't be used to send any requests, so there is no need to
|
908
|
+
# load kubeconfig
|
909
|
+
api_client = kubernetes.kubernetes.client.ApiClient()
|
910
|
+
|
911
|
+
# Used for kubernetes api_client deserialize function, the function will use
|
912
|
+
# data attr, the detail ref:
|
913
|
+
# https://github.com/kubernetes-client/python/blob/master/kubernetes/client/api_client.py#L244
|
914
|
+
class InnerResponse():
|
915
|
+
|
916
|
+
def __init__(self, data: dict):
|
917
|
+
self.data = json.dumps(data)
|
918
|
+
|
919
|
+
try:
|
920
|
+
# Validate metadata if present
|
921
|
+
if 'metadata' in pod_config:
|
922
|
+
try:
|
923
|
+
value = InnerResponse(pod_config['metadata'])
|
924
|
+
api_client.deserialize(
|
925
|
+
value, kubernetes.kubernetes.client.V1ObjectMeta)
|
926
|
+
except ValueError as e:
|
927
|
+
errors.append(f'Invalid metadata: {str(e)}')
|
928
|
+
# Validate spec if present
|
929
|
+
if 'spec' in pod_config:
|
930
|
+
try:
|
931
|
+
value = InnerResponse(pod_config['spec'])
|
932
|
+
api_client.deserialize(value,
|
933
|
+
kubernetes.kubernetes.client.V1PodSpec)
|
934
|
+
except ValueError as e:
|
935
|
+
errors.append(f'Invalid spec: {str(e)}')
|
936
|
+
return len(errors) == 0, '.'.join(errors)
|
937
|
+
except Exception as e: # pylint: disable=broad-except
|
938
|
+
errors.append(f'Validation error: {str(e)}')
|
939
|
+
return False, '.'.join(errors)
|
940
|
+
|
941
|
+
|
896
942
|
def is_kubeconfig_exec_auth(
|
897
943
|
context: Optional[str] = None) -> Tuple[bool, Optional[str]]:
|
898
944
|
"""Checks if the kubeconfig file uses exec-based authentication
|
sky/provision/oci/query_utils.py
CHANGED
@@ -506,8 +506,11 @@ class QueryHelper:
|
|
506
506
|
raise exceptions.ResourcesUnavailableError(
|
507
507
|
'The VCN is not available')
|
508
508
|
|
509
|
-
# Get the primary vnic.
|
510
|
-
|
509
|
+
# Get the primary vnic. The vnic might be an empty list for the
|
510
|
+
# corner case when the cluster was exited during provision.
|
511
|
+
if not list_vcns_resp.data:
|
512
|
+
return None
|
513
|
+
|
511
514
|
vcn = list_vcns_resp.data[0]
|
512
515
|
|
513
516
|
list_nsg_resp = net_client.list_network_security_groups(
|
{skypilot_nightly-1.0.0.dev20250103.dist-info → skypilot_nightly-1.0.0.dev20250104.dist-info}/RECORD
RENAMED
@@ -1,4 +1,4 @@
|
|
1
|
-
sky/__init__.py,sha256=
|
1
|
+
sky/__init__.py,sha256=BO90WuPTSZLoKf4Igzd5q-GnX5nufJohOesyurtbOJA,5944
|
2
2
|
sky/admin_policy.py,sha256=hPo02f_A32gCqhUueF0QYy1fMSSKqRwYEg_9FxScN_s,3248
|
3
3
|
sky/authentication.py,sha256=kACHmiZgWgRpYd1wx1ofbXRMErfMcFmWrkw4a9NxYrY,20988
|
4
4
|
sky/check.py,sha256=s8deMVL-k9y8gd519K7NWZc3DqWsEySwiAr0uH3Vvcc,9459
|
@@ -31,17 +31,17 @@ sky/adaptors/runpod.py,sha256=4Nt_BfZhJAKQNA3wO8cxvvNI8x4NsDGHu_4EhRDlGYQ,225
|
|
31
31
|
sky/adaptors/vsphere.py,sha256=zJP9SeObEoLrpgHW2VHvZE48EhgVf8GfAEIwBeaDMfM,2129
|
32
32
|
sky/backends/__init__.py,sha256=UDjwbUgpTRApbPJnNfR786GadUuwgRk3vsWoVu5RB_c,536
|
33
33
|
sky/backends/backend.py,sha256=iBs5gnMaaUoH2OIQ3xhAjWdrJWqj8T61Za9TGsBFpvQ,7515
|
34
|
-
sky/backends/backend_utils.py,sha256=
|
34
|
+
sky/backends/backend_utils.py,sha256=3sJAV99BobQmy2_aFm4H1IONcN83kRAc6qO4QNv-Iyw,135722
|
35
35
|
sky/backends/cloud_vm_ray_backend.py,sha256=ou2MfE1aLz-k3ODL2GAaFLw6JUm3kYV99KgRcPrMXr8,239251
|
36
36
|
sky/backends/docker_utils.py,sha256=Hyw1YY20EyghhEbYx6O2FIMDcGkNzBzV9TM7LFynei8,8358
|
37
37
|
sky/backends/local_docker_backend.py,sha256=nSYCjms3HOPjPNOrcCqsUKm1WV3AAovRFjEQ7hcEXW4,17021
|
38
|
-
sky/backends/wheel_utils.py,sha256=
|
38
|
+
sky/backends/wheel_utils.py,sha256=5BUzBqfYz7p1ME6_0PXGmcsAkLVb8NrFt317p7a4X8s,8278
|
39
39
|
sky/backends/monkey_patches/monkey_patch_ray_up.py,sha256=76-y2fCaE3JINj8lEwHT1eirYzCbpD8O1ySsysuGu8o,3450
|
40
40
|
sky/benchmark/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
41
41
|
sky/benchmark/benchmark_state.py,sha256=X8CXmuU9KgsDRhKedhFgjeRMUFWtQsjFs1qECvPG2yg,8723
|
42
42
|
sky/benchmark/benchmark_utils.py,sha256=mP8Ox2WiKfthq6LcUAZnHknFQ0n8v9o_rCh1LXLgkqc,26192
|
43
43
|
sky/clouds/__init__.py,sha256=iORaV6auqMxa6-6FKgt1C9f3UqRk1GASUtakua3tb9A,1395
|
44
|
-
sky/clouds/aws.py,sha256=
|
44
|
+
sky/clouds/aws.py,sha256=2_0zUYs0-f15G9lo5_eTMNLrfuOHiie_9vxLiL8iCbw,51880
|
45
45
|
sky/clouds/azure.py,sha256=KtnnNZn4ZEr7xndBHxX91v0YXSI1QWPgIefuM1zDUBA,30784
|
46
46
|
sky/clouds/cloud.py,sha256=NIODnzroLwMA3VJq3DOFt1voUoZJB8aielpDkX61iD0,35240
|
47
47
|
sky/clouds/cloud_registry.py,sha256=oLoYFjm_SDTgdHokY7b6A5Utq80HXRQNxV0fLjDdVsQ,2361
|
@@ -52,7 +52,7 @@ sky/clouds/gcp.py,sha256=GYlMsM9gAg0tfZF7pGcw4cFxsLPUSwMC8rCL3-Cyw8Q,54674
|
|
52
52
|
sky/clouds/ibm.py,sha256=0ArRTQx1_DpTNGByFhukzFedEDzmVjBsGiiques1bQ0,21447
|
53
53
|
sky/clouds/kubernetes.py,sha256=OSkglBxvSimmdR8rctb3PfSzkIf5I7vLb5vT0Z18lkw,31544
|
54
54
|
sky/clouds/lambda_cloud.py,sha256=42AmcN2X_wdBMuAw606nR_pQCBAy5QFiAo711_WRqDE,12672
|
55
|
-
sky/clouds/oci.py,sha256=
|
55
|
+
sky/clouds/oci.py,sha256=VpPxpMJv52QePVdwdK9EuiMyqjp70dk8_rgUVv5Y-2w,27028
|
56
56
|
sky/clouds/paperspace.py,sha256=F0Sj1RcqRb5fPjrr8qbdeY-JdfAHcRPc902pZOi4erw,10889
|
57
57
|
sky/clouds/runpod.py,sha256=Wtaarp27_LTu5_E2agC7tTr2vhN1D4sblr2vZTT4vBI,11580
|
58
58
|
sky/clouds/scp.py,sha256=JHyMqkAAqr9lJq79IVjj3rU1g-ZCCGLZTJEzIhYsw7c,15845
|
@@ -148,7 +148,7 @@ sky/provision/kubernetes/config.py,sha256=bXwOGdSAnXCkDreew0KsSUqSv3ZrptNeevqat7
|
|
148
148
|
sky/provision/kubernetes/instance.py,sha256=2pju1RDzH5vOXbOTgPzCToGdCjmqIouhA0wRUFytLnc,50257
|
149
149
|
sky/provision/kubernetes/network.py,sha256=EpNjRQ131CXepqbdkoRKFu4szVrm0oKEpv1l8EgOkjU,12364
|
150
150
|
sky/provision/kubernetes/network_utils.py,sha256=52BZY_5ynCH6IXlivKObYyAHDgQCJyAJIjmM7J4MpFo,11393
|
151
|
-
sky/provision/kubernetes/utils.py,sha256=
|
151
|
+
sky/provision/kubernetes/utils.py,sha256=BklPlHXKNTNKamdAygnQ_sOIROq1bN3xbIPxwNRqMV0,104774
|
152
152
|
sky/provision/kubernetes/manifests/smarter-device-manager-configmap.yaml,sha256=AMzYzlY0JIlfBWj5eX054Rc1XDW2thUcLSOGMJVhIdA,229
|
153
153
|
sky/provision/kubernetes/manifests/smarter-device-manager-daemonset.yaml,sha256=RtTq4F1QUmR2Uunb6zuuRaPhV7hpesz4saHjn3Ncsb4,2010
|
154
154
|
sky/provision/lambda_cloud/__init__.py,sha256=6EEvSgtUeEiup9ivIFevHmgv0GqleroO2X0K7TRa2nE,612
|
@@ -158,7 +158,7 @@ sky/provision/lambda_cloud/lambda_utils.py,sha256=H2Qx4xdJyyEu2IXaj5AyppuPJW385n
|
|
158
158
|
sky/provision/oci/__init__.py,sha256=5E6EUtTK3mqGVREw5TuVl5DxteBYTZigIii7c8gHExU,612
|
159
159
|
sky/provision/oci/config.py,sha256=diSDTyHLokcuXGB2XgZCHFvsXa8bah1PP2XuMouW_UU,1650
|
160
160
|
sky/provision/oci/instance.py,sha256=hsJa4ItkOI3vU5HpNMrbrge9BmJalSPnxX8SwmFJDhk,16728
|
161
|
-
sky/provision/oci/query_utils.py,sha256=
|
161
|
+
sky/provision/oci/query_utils.py,sha256=pIZ_3oYFdopYO73kvKiiO86sJHipPl5gx9dG6UXgnk4,28254
|
162
162
|
sky/provision/paperspace/__init__.py,sha256=1nbUPWio7UA5gCQkO_rfEDfgXT17u5OtuByxQx4Ez6g,598
|
163
163
|
sky/provision/paperspace/config.py,sha256=oNmffSt-V466pE0DmML8hOCX1CiA24jAqE5JEKuqpyI,1541
|
164
164
|
sky/provision/paperspace/constants.py,sha256=NcLJGivJxshJwhR28yVHysWQ2gtMAkTVmHC91d3kyKM,957
|
@@ -288,9 +288,9 @@ sky/utils/kubernetes/k8s_gpu_labeler_job.yaml,sha256=k0TBoQ4zgf79-sVkixKSGYFHQ7Z
|
|
288
288
|
sky/utils/kubernetes/k8s_gpu_labeler_setup.yaml,sha256=VLKT2KKimZu1GDg_4AIlIt488oMQvhRZWwsj9vBbPUg,3812
|
289
289
|
sky/utils/kubernetes/rsync_helper.sh,sha256=h4YwrPFf9727CACnMJvF3EyK_0OeOYKKt4su_daKekw,1256
|
290
290
|
sky/utils/kubernetes/ssh_jump_lifecycle_manager.py,sha256=Kq1MDygF2IxFmu9FXpCxqucXLmeUrvs6OtRij6XTQbo,6554
|
291
|
-
skypilot_nightly-1.0.0.
|
292
|
-
skypilot_nightly-1.0.0.
|
293
|
-
skypilot_nightly-1.0.0.
|
294
|
-
skypilot_nightly-1.0.0.
|
295
|
-
skypilot_nightly-1.0.0.
|
296
|
-
skypilot_nightly-1.0.0.
|
291
|
+
skypilot_nightly-1.0.0.dev20250104.dist-info/LICENSE,sha256=emRJAvE7ngL6x0RhQvlns5wJzGI3NEQ_WMjNmd9TZc4,12170
|
292
|
+
skypilot_nightly-1.0.0.dev20250104.dist-info/METADATA,sha256=tGFXChw9SJYKFkyKzMDdrff1QPwNtJ3giHhLa5R8I9k,20439
|
293
|
+
skypilot_nightly-1.0.0.dev20250104.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
|
294
|
+
skypilot_nightly-1.0.0.dev20250104.dist-info/entry_points.txt,sha256=StA6HYpuHj-Y61L2Ze-hK2IcLWgLZcML5gJu8cs6nU4,36
|
295
|
+
skypilot_nightly-1.0.0.dev20250104.dist-info/top_level.txt,sha256=qA8QuiNNb6Y1OF-pCUtPEr6sLEwy2xJX06Bd_CrtrHY,4
|
296
|
+
skypilot_nightly-1.0.0.dev20250104.dist-info/RECORD,,
|
File without changes
|
{skypilot_nightly-1.0.0.dev20250103.dist-info → skypilot_nightly-1.0.0.dev20250104.dist-info}/WHEEL
RENAMED
File without changes
|
File without changes
|
File without changes
|