skypilot-nightly 1.0.0.dev20250224__py3-none-any.whl → 1.0.0.dev20250225__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/adaptors/nebius.py +15 -0
- sky/clouds/nebius.py +4 -1
- sky/global_user_state.py +3 -3
- sky/jobs/state.py +3 -0
- sky/provision/nebius/utils.py +11 -3
- {skypilot_nightly-1.0.0.dev20250224.dist-info → skypilot_nightly-1.0.0.dev20250225.dist-info}/METADATA +1 -1
- {skypilot_nightly-1.0.0.dev20250224.dist-info → skypilot_nightly-1.0.0.dev20250225.dist-info}/RECORD +12 -12
- {skypilot_nightly-1.0.0.dev20250224.dist-info → skypilot_nightly-1.0.0.dev20250225.dist-info}/LICENSE +0 -0
- {skypilot_nightly-1.0.0.dev20250224.dist-info → skypilot_nightly-1.0.0.dev20250225.dist-info}/WHEEL +0 -0
- {skypilot_nightly-1.0.0.dev20250224.dist-info → skypilot_nightly-1.0.0.dev20250225.dist-info}/entry_points.txt +0 -0
- {skypilot_nightly-1.0.0.dev20250224.dist-info → skypilot_nightly-1.0.0.dev20250225.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 = '546c0864e0f1e32e3d1080d9b7a5fdf293bc1ad9'
|
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.dev20250225'
|
39
39
|
__root_dir__ = os.path.dirname(os.path.abspath(__file__))
|
40
40
|
|
41
41
|
|
sky/adaptors/nebius.py
CHANGED
@@ -5,8 +5,10 @@ from sky.adaptors import common
|
|
5
5
|
|
6
6
|
NEBIUS_TENANT_ID_FILENAME = 'NEBIUS_TENANT_ID.txt'
|
7
7
|
NEBIUS_IAM_TOKEN_FILENAME = 'NEBIUS_IAM_TOKEN.txt'
|
8
|
+
NEBIUS_PROJECT_ID_FILENAME = 'NEBIUS_PROJECT_ID.txt'
|
8
9
|
NEBIUS_TENANT_ID_PATH = '~/.nebius/' + NEBIUS_TENANT_ID_FILENAME
|
9
10
|
NEBIUS_IAM_TOKEN_PATH = '~/.nebius/' + NEBIUS_IAM_TOKEN_FILENAME
|
11
|
+
NEBIUS_PROJECT_ID_PATH = '~/.nebius/' + NEBIUS_PROJECT_ID_FILENAME
|
10
12
|
|
11
13
|
MAX_RETRIES_TO_DISK_CREATE = 120
|
12
14
|
MAX_RETRIES_TO_INSTANCE_STOP = 120
|
@@ -20,6 +22,7 @@ POLL_INTERVAL = 5
|
|
20
22
|
|
21
23
|
_iam_token = None
|
22
24
|
_tenant_id = None
|
25
|
+
_project_id = None
|
23
26
|
|
24
27
|
nebius = common.LazyImport(
|
25
28
|
'nebius',
|
@@ -69,6 +72,18 @@ def get_iam_token():
|
|
69
72
|
return _iam_token
|
70
73
|
|
71
74
|
|
75
|
+
def get_project_id():
|
76
|
+
global _project_id
|
77
|
+
if _project_id is None:
|
78
|
+
try:
|
79
|
+
with open(os.path.expanduser(NEBIUS_PROJECT_ID_PATH),
|
80
|
+
encoding='utf-8') as file:
|
81
|
+
_project_id = file.read().strip()
|
82
|
+
except FileNotFoundError:
|
83
|
+
return None
|
84
|
+
return _project_id
|
85
|
+
|
86
|
+
|
72
87
|
def get_tenant_id():
|
73
88
|
global _tenant_id
|
74
89
|
if _tenant_id is None:
|
sky/clouds/nebius.py
CHANGED
@@ -15,7 +15,8 @@ if typing.TYPE_CHECKING:
|
|
15
15
|
_CREDENTIAL_FILES = [
|
16
16
|
# credential files for Nebius
|
17
17
|
nebius.NEBIUS_TENANT_ID_FILENAME,
|
18
|
-
nebius.NEBIUS_IAM_TOKEN_FILENAME
|
18
|
+
nebius.NEBIUS_IAM_TOKEN_FILENAME,
|
19
|
+
nebius.NEBIUS_PROJECT_ID_FILENAME,
|
19
20
|
]
|
20
21
|
|
21
22
|
|
@@ -255,6 +256,8 @@ class Nebius(clouds.Cloud):
|
|
255
256
|
token_msg = (' Credentials can be set up by running: \n'\
|
256
257
|
f' $ nebius iam get-access-token > {nebius.NEBIUS_IAM_TOKEN_PATH} \n') # pylint: disable=line-too-long
|
257
258
|
tenant_msg = (' Copy your tenat ID from the web console and save it to file \n' # pylint: disable=line-too-long
|
259
|
+
f' $ echo $NEBIUS_TENANT_ID_PATH > {nebius.NEBIUS_TENANT_ID_PATH} \n' # pylint: disable=line-too-long
|
260
|
+
' Or if you have 1 tenant you can run:\n' # pylint: disable=line-too-long
|
258
261
|
f' $ nebius --format json iam whoami|jq -r \'.user_profile.tenants[0].tenant_id\' > {nebius.NEBIUS_TENANT_ID_PATH} \n') # pylint: disable=line-too-long
|
259
262
|
if token is None:
|
260
263
|
return False, f'{token_msg}'
|
sky/global_user_state.py
CHANGED
@@ -60,7 +60,7 @@ def create_table(cursor, conn):
|
|
60
60
|
last_use TEXT,
|
61
61
|
status TEXT,
|
62
62
|
autostop INTEGER DEFAULT -1,
|
63
|
-
metadata TEXT DEFAULT
|
63
|
+
metadata TEXT DEFAULT '{}',
|
64
64
|
to_down INTEGER DEFAULT 0,
|
65
65
|
owner TEXT DEFAULT null,
|
66
66
|
cluster_hash TEXT DEFAULT null,
|
@@ -118,7 +118,7 @@ def create_table(cursor, conn):
|
|
118
118
|
'INTEGER DEFAULT -1')
|
119
119
|
|
120
120
|
db_utils.add_column_to_table(cursor, conn, 'clusters', 'metadata',
|
121
|
-
'TEXT DEFAULT
|
121
|
+
'TEXT DEFAULT \'{}\'')
|
122
122
|
|
123
123
|
db_utils.add_column_to_table(cursor, conn, 'clusters', 'to_down',
|
124
124
|
'INTEGER DEFAULT 0')
|
@@ -271,7 +271,7 @@ def add_or_update_cluster(cluster_name: str,
|
|
271
271
|
# Keep the old metadata value if it exists, otherwise set it to
|
272
272
|
# default {}.
|
273
273
|
'COALESCE('
|
274
|
-
'(SELECT metadata FROM clusters WHERE name=?),
|
274
|
+
'(SELECT metadata FROM clusters WHERE name=?), \'{}\'),'
|
275
275
|
# Keep the old owner value if it exists, otherwise set it to
|
276
276
|
# default null.
|
277
277
|
'COALESCE('
|
sky/jobs/state.py
CHANGED
@@ -212,6 +212,7 @@ class ManagedJobStatus(enum.Enum):
|
|
212
212
|
is dedicated to a managed job, i.e. there should always be enough resource
|
213
213
|
to run the job and the job will be immediately transitioned to RUNNING.
|
214
214
|
|
215
|
+
You can see a state diagram for ManagedJobStatus in sky/jobs/README.md.
|
215
216
|
"""
|
216
217
|
# PENDING: Waiting for the jobs controller to have a slot to run the
|
217
218
|
# controller process.
|
@@ -332,6 +333,8 @@ class ManagedJobScheduleState(enum.Enum):
|
|
332
333
|
to transition directly from WAITING or even INACTIVE to DONE if the job is
|
333
334
|
cancelled.
|
334
335
|
|
336
|
+
You can see a state diagram in sky/jobs/README.md.
|
337
|
+
|
335
338
|
There is no well-defined mapping from the managed job status to schedule
|
336
339
|
state or vice versa. (In fact, schedule state is defined on the job and
|
337
340
|
status on the task.)
|
sky/provision/nebius/utils.py
CHANGED
@@ -44,13 +44,21 @@ def get_project_by_region(region: str) -> str:
|
|
44
44
|
# Project id looks like project-e00xxxxxxxxxxxxxx where
|
45
45
|
# e00 - id of region 'eu-north1'
|
46
46
|
# e01 - id of region 'eu-west1'
|
47
|
+
region_ids = {'eu-north1': 'e00', 'eu-west1': 'e01'}
|
47
48
|
# TODO(SalikovAlex): fix when info about region will be in projects list
|
48
49
|
# Currently, Nebius cloud supports 2 regions. We manually enumerate
|
49
50
|
# them here. Reference: https://docs.nebius.com/overview/regions
|
51
|
+
|
52
|
+
# Check is there project if in config
|
53
|
+
preferable_project_id = nebius.get_project_id()
|
54
|
+
if preferable_project_id is not None:
|
55
|
+
if preferable_project_id[8:11] == region_ids[region]:
|
56
|
+
return preferable_project_id
|
57
|
+
logger.warning(
|
58
|
+
f'Can\'t use customized NEBIUS_PROJECT_ID ({preferable_project_id})'
|
59
|
+
f' for region {region}. Please check if the project ID is correct.')
|
50
60
|
for project in projects.items:
|
51
|
-
if
|
52
|
-
return project.metadata.id
|
53
|
-
if region == 'eu-west1' and project.metadata.id[8:11] == 'e01':
|
61
|
+
if project.metadata.id[8:11] == region_ids[region]:
|
54
62
|
return project.metadata.id
|
55
63
|
raise Exception(f'No project found for region "{region}".')
|
56
64
|
|
{skypilot_nightly-1.0.0.dev20250224.dist-info → skypilot_nightly-1.0.0.dev20250225.dist-info}/RECORD
RENAMED
@@ -1,4 +1,4 @@
|
|
1
|
-
sky/__init__.py,sha256=
|
1
|
+
sky/__init__.py,sha256=KSl1VCjCC3uU-BihR5aIRst73gWU1IOO1xhIx-4pmso,6428
|
2
2
|
sky/admin_policy.py,sha256=hPo02f_A32gCqhUueF0QYy1fMSSKqRwYEg_9FxScN_s,3248
|
3
3
|
sky/authentication.py,sha256=hCEqi77nprQEg3ktfRL51xiiw16zwZOmFEDB_Z7fWVU,22384
|
4
4
|
sky/check.py,sha256=NDKx_Zm7YRxPjMv82wz3ESLnGIPljaACyqVdVNM0PzY,11258
|
@@ -8,7 +8,7 @@ sky/core.py,sha256=X83hdpPTiWyEJLamrguCd03PUjkRiGgqTFfEBEQkzWc,45471
|
|
8
8
|
sky/dag.py,sha256=Yl7Ry26Vql5cv4YMz8g9kOUgtoCihJnw7c8NgZYakMY,3242
|
9
9
|
sky/exceptions.py,sha256=cGepNlBkjjgvi3fazc3DbdYLKhhF_sHCuGX0-hu_QMQ,13685
|
10
10
|
sky/execution.py,sha256=0M4RTEzWn-B9oz221XdZOIGH12XOACmNq0j-WGUT_No,28023
|
11
|
-
sky/global_user_state.py,sha256=
|
11
|
+
sky/global_user_state.py,sha256=sUDdSsJeiJkbgmZNwy8YGFK0XeNh-RBr1VDUvbmjf0g,33246
|
12
12
|
sky/models.py,sha256=4xSW05BdDPEjW8Ubvj3VlVOVnzv0TbrolsFvR5R5v1U,638
|
13
13
|
sky/optimizer.py,sha256=C82l9N3umdrJ2AaM-pSg0aK5rpOAX3lEAfFU7r6hqPo,60183
|
14
14
|
sky/resources.py,sha256=f2Qo_Wt0kFruKmYm6cgYbICH_wn0Zkb8uIv6LA82SRs,72153
|
@@ -26,7 +26,7 @@ sky/adaptors/docker.py,sha256=_kzpZ0fkWHqqQAVVl0llTsCE31KYz3Sjn8psTBQHVkA,468
|
|
26
26
|
sky/adaptors/gcp.py,sha256=OQ9RaqjR0r0iaWYpjvEtIx5vnEhyB4LhUCwbtdxsmVk,3115
|
27
27
|
sky/adaptors/ibm.py,sha256=H87vD6izq_wQI8oQC7cx9iVtRgPi_QkAcrfa1Z3PNqU,4906
|
28
28
|
sky/adaptors/kubernetes.py,sha256=fvNeqqyW4WbUDT-isU_fWLN-zqywayyRkVsj7sJ4Vc8,6645
|
29
|
-
sky/adaptors/nebius.py,sha256=
|
29
|
+
sky/adaptors/nebius.py,sha256=JOvwniQT-Pkp9-af6IdL_FUkjIbsEAUXVNUkwdaEeb0,2732
|
30
30
|
sky/adaptors/oci.py,sha256=LfMSFUmkkNT6Yoz9FZHNl6UFSg4X1lJO4-x4ZbDdXTs,2831
|
31
31
|
sky/adaptors/runpod.py,sha256=4Nt_BfZhJAKQNA3wO8cxvvNI8x4NsDGHu_4EhRDlGYQ,225
|
32
32
|
sky/adaptors/vast.py,sha256=tpvmHi7IkQNzbbHVkeo04kUSajoEpSzXr2XgeO_I1LU,695
|
@@ -57,7 +57,7 @@ sky/clouds/gcp.py,sha256=0QpsI0Dso1xs3LhGlUq-Sq6WK-u11wN-57-vfcyhI5I,55154
|
|
57
57
|
sky/clouds/ibm.py,sha256=R4JR96YfXstZ2B_IgFNVEX2SBAq3q0lSWz4y7FoFoeE,21474
|
58
58
|
sky/clouds/kubernetes.py,sha256=7ki_zJZKnkhOPrHgVFq6azy5UhNKeeBOCSTjKCgj3vk,31709
|
59
59
|
sky/clouds/lambda_cloud.py,sha256=ejqA_Wj5-325Y_QjQ__FY4HMO8sv_2tSRsufmaldcmI,12699
|
60
|
-
sky/clouds/nebius.py,sha256=
|
60
|
+
sky/clouds/nebius.py,sha256=4180IruRMib7L9o60lrxrUDJtYhpX4lWFfAznbZoY6Q,12560
|
61
61
|
sky/clouds/oci.py,sha256=irINbQsQ6YxRxGTMaCNsms3mZkIun2oJMMA1fMCRJyA,27072
|
62
62
|
sky/clouds/paperspace.py,sha256=O7bH8YaHBLFuyj6rDz2bPDz_6OYWmNB9OLqnZH70yfY,10922
|
63
63
|
sky/clouds/runpod.py,sha256=hzYB4td6qaged83xMAVKZ96bH40oZnrHXL7a_CKxXIw,11926
|
@@ -111,7 +111,7 @@ sky/jobs/constants.py,sha256=HrQbQA41Khor89ZoH112kjHRgehge-k4o0R9T9UbbaM,3088
|
|
111
111
|
sky/jobs/controller.py,sha256=4G1CKI7M7D1BgJLbJMeqzg0iDDv7FR4ObB1BKZFFjhk,29585
|
112
112
|
sky/jobs/recovery_strategy.py,sha256=RLrqq8B1likxTknPzt3_BqO26sFVpoatxzUuGfwc18A,26170
|
113
113
|
sky/jobs/scheduler.py,sha256=IUW0a_69Pkvs4jqsWCXkeMDIZn-TTuPNyZvPLGRUYUM,12306
|
114
|
-
sky/jobs/state.py,sha256=
|
114
|
+
sky/jobs/state.py,sha256=dIONpSuo5oolbCH1j7IWPlK97s5-NSl3whxH5Gn5DYI,43660
|
115
115
|
sky/jobs/utils.py,sha256=SEeoXDWM-n2kg-eLd39kLWXbK7cavMst9s3xFVqaJg4,52580
|
116
116
|
sky/jobs/client/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
117
117
|
sky/jobs/client/sdk.py,sha256=mblI0hRH1It-I1hfs2_TdQTh_mtixcYJEZCWyKbqaaE,9707
|
@@ -175,7 +175,7 @@ sky/provision/lambda_cloud/lambda_utils.py,sha256=H2Qx4xdJyyEu2IXaj5AyppuPJW385n
|
|
175
175
|
sky/provision/nebius/__init__.py,sha256=30I3181mu0W5g9fNvaWMPoBJZoGZ9RibuTpBH9P2pDg,558
|
176
176
|
sky/provision/nebius/config.py,sha256=LK9kTDp2w6zZrn3vNdcSGgsgS-dL_j63Nh4_u3pqNiA,321
|
177
177
|
sky/provision/nebius/instance.py,sha256=kfpZqwh56XV7h6XsX5dGJYilsVdRhC1EUgk0flaCo_E,11889
|
178
|
-
sky/provision/nebius/utils.py,sha256=
|
178
|
+
sky/provision/nebius/utils.py,sha256=o1Jr_pzH-2uk34obt9pSGXf2i2tljOo-uhXcryfFUxs,13145
|
179
179
|
sky/provision/oci/__init__.py,sha256=5E6EUtTK3mqGVREw5TuVl5DxteBYTZigIii7c8gHExU,612
|
180
180
|
sky/provision/oci/config.py,sha256=diSDTyHLokcuXGB2XgZCHFvsXa8bah1PP2XuMouW_UU,1650
|
181
181
|
sky/provision/oci/instance.py,sha256=rVGee5y0qkoeLIP5vPDmLq1N8G1n8mru62VHb0Bv5iY,16784
|
@@ -344,9 +344,9 @@ sky/utils/kubernetes/k8s_gpu_labeler_setup.yaml,sha256=VLKT2KKimZu1GDg_4AIlIt488
|
|
344
344
|
sky/utils/kubernetes/kubernetes_deploy_utils.py,sha256=iAjfyPclOs8qlALACcfxLpRAO9CZ-h16leFqXZ6tNaY,10096
|
345
345
|
sky/utils/kubernetes/rsync_helper.sh,sha256=h4YwrPFf9727CACnMJvF3EyK_0OeOYKKt4su_daKekw,1256
|
346
346
|
sky/utils/kubernetes/ssh_jump_lifecycle_manager.py,sha256=Kq1MDygF2IxFmu9FXpCxqucXLmeUrvs6OtRij6XTQbo,6554
|
347
|
-
skypilot_nightly-1.0.0.
|
348
|
-
skypilot_nightly-1.0.0.
|
349
|
-
skypilot_nightly-1.0.0.
|
350
|
-
skypilot_nightly-1.0.0.
|
351
|
-
skypilot_nightly-1.0.0.
|
352
|
-
skypilot_nightly-1.0.0.
|
347
|
+
skypilot_nightly-1.0.0.dev20250225.dist-info/LICENSE,sha256=emRJAvE7ngL6x0RhQvlns5wJzGI3NEQ_WMjNmd9TZc4,12170
|
348
|
+
skypilot_nightly-1.0.0.dev20250225.dist-info/METADATA,sha256=n0NjxuYEKzBIVHBricBiNx4ILxluNGwheNot34KQd2M,19055
|
349
|
+
skypilot_nightly-1.0.0.dev20250225.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
|
350
|
+
skypilot_nightly-1.0.0.dev20250225.dist-info/entry_points.txt,sha256=StA6HYpuHj-Y61L2Ze-hK2IcLWgLZcML5gJu8cs6nU4,36
|
351
|
+
skypilot_nightly-1.0.0.dev20250225.dist-info/top_level.txt,sha256=qA8QuiNNb6Y1OF-pCUtPEr6sLEwy2xJX06Bd_CrtrHY,4
|
352
|
+
skypilot_nightly-1.0.0.dev20250225.dist-info/RECORD,,
|
File without changes
|
{skypilot_nightly-1.0.0.dev20250224.dist-info → skypilot_nightly-1.0.0.dev20250225.dist-info}/WHEEL
RENAMED
File without changes
|
File without changes
|
File without changes
|