skypilot-nightly 1.0.0.dev20250102__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 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 = '51bca2273a8e95b6458352015a91a0f15975df15'
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.dev20250102'
38
+ __version__ = '1.0.0.dev20250104'
39
39
  __root_dir__ = os.path.dirname(os.path.abspath(__file__))
40
40
 
41
41
 
@@ -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.
@@ -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(os.path.getmtime(root) for root, _, _ in os.walk(path))
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
- proc = subprocess.run('aws configure list',
628
- shell=True,
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
- stdout = proc.stdout.decode()
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}', stdout)
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{stdout}')
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) # Cache since getting identity is slow.
668
- def get_user_identities(cls) -> Optional[List[List[str]]]:
669
- """Returns a [UserId, Account] list that uniquely identifies the user.
670
-
671
- These fields come from `aws sts get-caller-identity`. We permit the same
672
- actual user to:
673
-
674
- - switch between different root accounts (after which both elements
675
- of the list will be different) and have their clusters owned by
676
- each account be protected; or
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
- Raises:
695
- exceptions.CloudUserIdentityError: if the user identity cannot be
696
- retrieved.
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
- image_str = self._get_image_str(image_id=resources.image_id,
301
- instance_type=resources.instance_type,
302
- region=region.name)
303
-
304
- # pylint: disable=import-outside-toplevel
305
- from sky.clouds.service_catalog import oci_catalog
306
- os_type = oci_catalog.get_image_os_from_tag(tag=image_str,
307
- region=region.name)
308
- logger.debug(f'OS type for the image {image_str} is {os_type}')
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,
@@ -6,6 +6,10 @@ History:
6
6
  configuration.
7
7
  - Hysun He (hysun.he@oracle.com) @ Nov.12, 2024: Add the constant
8
8
  SERVICE_PORT_RULE_TAG
9
+ - Hysun He (hysun.he@oracle.com) @ Jan.01, 2025: Set the default image
10
+ from ubuntu 20.04 to ubuntu 22.04, including:
11
+ - GPU: skypilot:gpu-ubuntu-2004 -> skypilot:gpu-ubuntu-2204
12
+ - CPU: skypilot:cpu-ubuntu-2004 -> skypilot:cpu-ubuntu-2204
9
13
  """
10
14
  import os
11
15
 
@@ -117,7 +121,7 @@ class OCIConfig:
117
121
  # the sky's user-config file (if not specified, use the hardcode one at
118
122
  # last)
119
123
  return skypilot_config.get_nested(('oci', 'default', 'image_tag_gpu'),
120
- 'skypilot:gpu-ubuntu-2004')
124
+ 'skypilot:gpu-ubuntu-2204')
121
125
 
122
126
  @classmethod
123
127
  def get_default_image_tag(cls) -> str:
@@ -125,7 +129,7 @@ class OCIConfig:
125
129
  # set the default image tag in the sky's user-config file. (if not
126
130
  # specified, use the hardcode one at last)
127
131
  return skypilot_config.get_nested(
128
- ('oci', 'default', 'image_tag_general'), 'skypilot:cpu-ubuntu-2004')
132
+ ('oci', 'default', 'image_tag_general'), 'skypilot:cpu-ubuntu-2204')
129
133
 
130
134
  @classmethod
131
135
  def get_sky_user_config_file(cls) -> str:
@@ -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
@@ -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
- assert len(list_vcns_resp.data) > 0
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(
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: skypilot-nightly
3
- Version: 1.0.0.dev20250102
3
+ Version: 1.0.0.dev20250104
4
4
  Summary: SkyPilot: An intercloud broker for the clouds
5
5
  Author: SkyPilot Team
6
6
  License: Apache 2.0
@@ -1,4 +1,4 @@
1
- sky/__init__.py,sha256=3Skp0G5uYpDz1ila9ybindujnUJkbkcTlZhL0JsFeWU,5944
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=J2_-lC-tAnf8XlO9lVbl1ESUce7XOzdipcfIczudylw,135361
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=CUVOwlBtQjOMv-RSDGx2jMQ0M1D0w9ZPm0TDafJwBDI,8180
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=EDhoMe6P20HisrPzi9yGG0y5ePvCFy4GsLeSA8DirBw,49637
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=3-ubBlzVdt0rLDQqaQAg-DUAv3Sal2OcQd6u6bgd3Ks,26546
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
@@ -88,7 +88,7 @@ sky/clouds/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,
88
88
  sky/clouds/utils/aws_utils.py,sha256=W5BRC-2F_VY4BymRA1kS6-MufsI3V8cfY_hv--4gJBU,1986
89
89
  sky/clouds/utils/azure_utils.py,sha256=NToRBnhEyuUvb-nBnsKTxjhOBRkMcrelL8LK4w6s4t8,3555
90
90
  sky/clouds/utils/gcp_utils.py,sha256=h_ezG7uq2FogLJCPSu8GIEYLOEHmUtC_Xzt4fLOw19s,6853
91
- sky/clouds/utils/oci_utils.py,sha256=e3k6GR0DBP6ansLtA3f1ojJXKrUbP-hBsLKZjJOjRtA,5792
91
+ sky/clouds/utils/oci_utils.py,sha256=jHIaKwS2H7AO3OgLg6kkUXlBCbPP4GJ8hgcrqQo98B8,6039
92
92
  sky/clouds/utils/scp_utils.py,sha256=r4lhRLtNgoz5nmkfN2ctAXYugF_-Et8TYH6ZlbbFfo8,15791
93
93
  sky/data/__init__.py,sha256=Nhaf1NURisXpZuwWANa2IuCyppIuc720FRwqSE2oEwY,184
94
94
  sky/data/data_transfer.py,sha256=wixC4_3_JaeJFdGKOp-O5ulcsMugDSgrCR0SnPpugGc,8946
@@ -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=Z3me7e67ZVlWuRalO9wsRcPtb2wrSTqHdDscF441o8A,102996
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=LeRZk-gwj9qCaL-Gftrg0BwlKeiTF9gm5ebneulgPLY,28129
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.dev20250102.dist-info/LICENSE,sha256=emRJAvE7ngL6x0RhQvlns5wJzGI3NEQ_WMjNmd9TZc4,12170
292
- skypilot_nightly-1.0.0.dev20250102.dist-info/METADATA,sha256=kQYxKaNaYviPfe84I6DK9dHuvKVJsCqECwL7ekSsQCc,20439
293
- skypilot_nightly-1.0.0.dev20250102.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
294
- skypilot_nightly-1.0.0.dev20250102.dist-info/entry_points.txt,sha256=StA6HYpuHj-Y61L2Ze-hK2IcLWgLZcML5gJu8cs6nU4,36
295
- skypilot_nightly-1.0.0.dev20250102.dist-info/top_level.txt,sha256=qA8QuiNNb6Y1OF-pCUtPEr6sLEwy2xJX06Bd_CrtrHY,4
296
- skypilot_nightly-1.0.0.dev20250102.dist-info/RECORD,,
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,,