skypilot-nightly 1.0.0.dev20251003__py3-none-any.whl → 1.0.0.dev20251005__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 +2 -2
- sky/backends/cloud_vm_ray_backend.py +42 -27
- sky/client/cli/command.py +1 -11
- sky/dashboard/out/404.html +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/pools/[pool].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/execution.py +24 -2
- sky/jobs/recovery_strategy.py +45 -0
- sky/provision/kubernetes/utils.py +118 -6
- sky/schemas/api/responses.py +2 -2
- sky/server/auth/loopback.py +38 -0
- sky/server/auth/oauth2_proxy.py +6 -0
- sky/server/server.py +6 -0
- sky/setup_files/dependencies.py +1 -0
- sky/skypilot_config.py +2 -1
- sky/utils/context.py +12 -7
- {skypilot_nightly-1.0.0.dev20251003.dist-info → skypilot_nightly-1.0.0.dev20251005.dist-info}/METADATA +37 -36
- {skypilot_nightly-1.0.0.dev20251003.dist-info → skypilot_nightly-1.0.0.dev20251005.dist-info}/RECORD +37 -36
- /sky/dashboard/out/_next/static/{Haazh5IQz6F8Wyiqxcaj8 → Vg53Kzbf7u4o6fYPeOHMe}/_buildManifest.js +0 -0
- /sky/dashboard/out/_next/static/{Haazh5IQz6F8Wyiqxcaj8 → Vg53Kzbf7u4o6fYPeOHMe}/_ssgManifest.js +0 -0
- {skypilot_nightly-1.0.0.dev20251003.dist-info → skypilot_nightly-1.0.0.dev20251005.dist-info}/WHEEL +0 -0
- {skypilot_nightly-1.0.0.dev20251003.dist-info → skypilot_nightly-1.0.0.dev20251005.dist-info}/entry_points.txt +0 -0
- {skypilot_nightly-1.0.0.dev20251003.dist-info → skypilot_nightly-1.0.0.dev20251005.dist-info}/licenses/LICENSE +0 -0
- {skypilot_nightly-1.0.0.dev20251003.dist-info → skypilot_nightly-1.0.0.dev20251005.dist-info}/top_level.txt +0 -0
sky/__init__.py
CHANGED
|
@@ -7,7 +7,7 @@ import urllib.request
|
|
|
7
7
|
from sky.utils import directory_utils
|
|
8
8
|
|
|
9
9
|
# Replaced with the current commit when building the wheels.
|
|
10
|
-
_SKYPILOT_COMMIT_SHA = '
|
|
10
|
+
_SKYPILOT_COMMIT_SHA = '4db6dccc63718d0342d70a736bfdb0ba84b6a4ad'
|
|
11
11
|
|
|
12
12
|
|
|
13
13
|
def _get_git_commit():
|
|
@@ -37,7 +37,7 @@ def _get_git_commit():
|
|
|
37
37
|
|
|
38
38
|
|
|
39
39
|
__commit__ = _get_git_commit()
|
|
40
|
-
__version__ = '1.0.0.
|
|
40
|
+
__version__ = '1.0.0.dev20251005'
|
|
41
41
|
__root_dir__ = directory_utils.get_sky_dir()
|
|
42
42
|
|
|
43
43
|
|
|
@@ -3277,6 +3277,10 @@ class CloudVmRayBackend(backends.Backend['CloudVmRayResourceHandle']):
|
|
|
3277
3277
|
self._requested_features = set()
|
|
3278
3278
|
self._dump_final_script = False
|
|
3279
3279
|
self._is_managed = False
|
|
3280
|
+
# Optional planner (via register_info): used under the per-cluster lock
|
|
3281
|
+
# to produce a fresh concrete plan when neither a reusable snapshot nor
|
|
3282
|
+
# a caller plan is available.
|
|
3283
|
+
self._planner = None
|
|
3280
3284
|
|
|
3281
3285
|
# Command for running the setup script. It is only set when the
|
|
3282
3286
|
# setup needs to be run outside the self._setup() and as part of
|
|
@@ -3294,6 +3298,9 @@ class CloudVmRayBackend(backends.Backend['CloudVmRayResourceHandle']):
|
|
|
3294
3298
|
self._requested_features)
|
|
3295
3299
|
self._dump_final_script = kwargs.pop('dump_final_script', False)
|
|
3296
3300
|
self._is_managed = kwargs.pop('is_managed', False)
|
|
3301
|
+
# Optional planner callback for a fresh plan under lock when no
|
|
3302
|
+
# reusable snapshot/caller plan exists. Keeps optimizer in upper layer.
|
|
3303
|
+
self._planner = kwargs.pop('planner', self._planner)
|
|
3297
3304
|
assert not kwargs, f'Unexpected kwargs: {kwargs}'
|
|
3298
3305
|
|
|
3299
3306
|
def check_resources_fit_cluster(
|
|
@@ -5843,33 +5850,41 @@ class CloudVmRayBackend(backends.Backend['CloudVmRayResourceHandle']):
|
|
|
5843
5850
|
common_utils.check_cluster_name_is_valid(cluster_name)
|
|
5844
5851
|
|
|
5845
5852
|
if to_provision is None:
|
|
5846
|
-
#
|
|
5847
|
-
#
|
|
5848
|
-
#
|
|
5849
|
-
#
|
|
5850
|
-
#
|
|
5851
|
-
#
|
|
5852
|
-
#
|
|
5853
|
-
|
|
5854
|
-
|
|
5855
|
-
|
|
5856
|
-
|
|
5857
|
-
handle_before_refresh,
|
|
5858
|
-
|
|
5859
|
-
|
|
5860
|
-
|
|
5861
|
-
|
|
5862
|
-
|
|
5863
|
-
|
|
5864
|
-
|
|
5865
|
-
|
|
5866
|
-
|
|
5867
|
-
|
|
5868
|
-
|
|
5869
|
-
|
|
5870
|
-
|
|
5871
|
-
|
|
5872
|
-
|
|
5853
|
+
# Recently terminated after refresh. OPTIMIZE usually ran outside
|
|
5854
|
+
# the lock, so that decision may be stale by now. Under the lock,
|
|
5855
|
+
# ensure we always have a concrete plan via the following order:
|
|
5856
|
+
# 1) Reuse last placement snapshot (if available);
|
|
5857
|
+
# 2) Else, call injected planner for a fresh plan.
|
|
5858
|
+
# If we still have a pre-refresh handle snapshot with a concrete
|
|
5859
|
+
# placement, prefer reusing it.
|
|
5860
|
+
if (isinstance(handle_before_refresh, CloudVmRayResourceHandle) and
|
|
5861
|
+
handle_before_refresh.launched_resources is not None):
|
|
5862
|
+
to_provision = handle_before_refresh.launched_resources
|
|
5863
|
+
# Ensure the requested task fits the previous placement.
|
|
5864
|
+
self.check_resources_fit_cluster(handle_before_refresh, task)
|
|
5865
|
+
# Mirror the original message for reuse path.
|
|
5866
|
+
status_before_refresh_str = None
|
|
5867
|
+
if status_before_refresh is not None:
|
|
5868
|
+
status_before_refresh_str = status_before_refresh.value
|
|
5869
|
+
logger.info(
|
|
5870
|
+
f'The cluster {cluster_name!r} (status: '
|
|
5871
|
+
f'{status_before_refresh_str}) was not found on the cloud: '
|
|
5872
|
+
'it may be autodowned, manually terminated, or its launch '
|
|
5873
|
+
'never succeeded. Provisioning a new cluster by using the '
|
|
5874
|
+
'same resources as its original launch.')
|
|
5875
|
+
elif self._planner is not None:
|
|
5876
|
+
to_provision = self._planner(task)
|
|
5877
|
+
logger.info(
|
|
5878
|
+
'Previous placement snapshot missing; computing a fresh '
|
|
5879
|
+
'plan for provisioning.')
|
|
5880
|
+
else:
|
|
5881
|
+
# Without a snapshot or planner, we cannot proceed safely.
|
|
5882
|
+
# Surface a user-friendly error without a long traceback.
|
|
5883
|
+
with ux_utils.print_exception_no_traceback():
|
|
5884
|
+
raise RuntimeError(
|
|
5885
|
+
'No concrete launch plan available after recent cloud '
|
|
5886
|
+
f'termination of cluster {cluster_name!r}. Ensure the '
|
|
5887
|
+
'OPTIMIZE stage runs or provide concrete resources.')
|
|
5873
5888
|
|
|
5874
5889
|
return RetryingVmProvisioner.ToProvisionConfig(
|
|
5875
5890
|
cluster_name,
|
sky/client/cli/command.py
CHANGED
|
@@ -1803,17 +1803,7 @@ def status(verbose: bool, refresh: bool, ip: bool, endpoints: bool,
|
|
|
1803
1803
|
return None
|
|
1804
1804
|
|
|
1805
1805
|
def submit_workspace() -> Optional[server_common.RequestId[Dict[str, Any]]]:
|
|
1806
|
-
|
|
1807
|
-
return sdk.workspaces()
|
|
1808
|
-
except RuntimeError:
|
|
1809
|
-
# Backward compatibility for API server before #5660.
|
|
1810
|
-
# TODO(zhwu): remove this after 0.10.0.
|
|
1811
|
-
logger.warning(f'{colorama.Style.DIM}SkyPilot API server is '
|
|
1812
|
-
'in an old version, and may miss feature: '
|
|
1813
|
-
'workspaces. Update with: sky api stop; '
|
|
1814
|
-
'sky api start'
|
|
1815
|
-
f'{colorama.Style.RESET_ALL}')
|
|
1816
|
-
return None
|
|
1806
|
+
return sdk.workspaces()
|
|
1817
1807
|
|
|
1818
1808
|
active_workspace = skypilot_config.get_active_workspace()
|
|
1819
1809
|
|
sky/dashboard/out/404.html
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
<!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><meta name="next-head-count" content="2"/><link rel="preload" href="/dashboard/_next/static/css/4614e06482d7309e.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/4614e06482d7309e.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-3286453d56f3c0a0.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-cf60a09ccd051a10.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-f15ccb73239a3bf1.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-ce361c6959bc2001.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_error-c66a4e8afc46f17b.js" defer=""></script><script src="/dashboard/_next/static/
|
|
1
|
+
<!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><meta name="next-head-count" content="2"/><link rel="preload" href="/dashboard/_next/static/css/4614e06482d7309e.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/4614e06482d7309e.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-3286453d56f3c0a0.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-cf60a09ccd051a10.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-f15ccb73239a3bf1.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-ce361c6959bc2001.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_error-c66a4e8afc46f17b.js" defer=""></script><script src="/dashboard/_next/static/Vg53Kzbf7u4o6fYPeOHMe/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/Vg53Kzbf7u4o6fYPeOHMe/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{"statusCode":404}},"page":"/_error","query":{},"buildId":"Vg53Kzbf7u4o6fYPeOHMe","assetPrefix":"/dashboard","nextExport":true,"isFallback":false,"gip":true,"scriptLoader":[]}</script></body></html>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
<!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><meta name="next-head-count" content="2"/><link rel="preload" href="/dashboard/_next/static/css/4614e06482d7309e.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/4614e06482d7309e.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-3286453d56f3c0a0.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-cf60a09ccd051a10.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-f15ccb73239a3bf1.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-ce361c6959bc2001.js" defer=""></script><script src="/dashboard/_next/static/chunks/616-3d59f75e2ccf9321.js" defer=""></script><script src="/dashboard/_next/static/chunks/6130-2be46d70a38f1e82.js" defer=""></script><script src="/dashboard/_next/static/chunks/5739-d67458fcb1386c92.js" defer=""></script><script src="/dashboard/_next/static/chunks/7411-b15471acd2cba716.js" defer=""></script><script src="/dashboard/_next/static/chunks/6989-01359c57e018caa4.js" defer=""></script><script src="/dashboard/_next/static/chunks/3850-ff4a9a69d978632b.js" defer=""></script><script src="/dashboard/_next/static/chunks/6135-4b4d5e824b7f9d3c.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/clusters/%5Bcluster%5D/%5Bjob%5D-72794fc3fcdd517a.js" defer=""></script><script src="/dashboard/_next/static/
|
|
1
|
+
<!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><meta name="next-head-count" content="2"/><link rel="preload" href="/dashboard/_next/static/css/4614e06482d7309e.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/4614e06482d7309e.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-3286453d56f3c0a0.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-cf60a09ccd051a10.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-f15ccb73239a3bf1.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-ce361c6959bc2001.js" defer=""></script><script src="/dashboard/_next/static/chunks/616-3d59f75e2ccf9321.js" defer=""></script><script src="/dashboard/_next/static/chunks/6130-2be46d70a38f1e82.js" defer=""></script><script src="/dashboard/_next/static/chunks/5739-d67458fcb1386c92.js" defer=""></script><script src="/dashboard/_next/static/chunks/7411-b15471acd2cba716.js" defer=""></script><script src="/dashboard/_next/static/chunks/6989-01359c57e018caa4.js" defer=""></script><script src="/dashboard/_next/static/chunks/3850-ff4a9a69d978632b.js" defer=""></script><script src="/dashboard/_next/static/chunks/6135-4b4d5e824b7f9d3c.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/clusters/%5Bcluster%5D/%5Bjob%5D-72794fc3fcdd517a.js" defer=""></script><script src="/dashboard/_next/static/Vg53Kzbf7u4o6fYPeOHMe/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/Vg53Kzbf7u4o6fYPeOHMe/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/clusters/[cluster]/[job]","query":{},"buildId":"Vg53Kzbf7u4o6fYPeOHMe","assetPrefix":"/dashboard","nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
<!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><meta name="next-head-count" content="2"/><link rel="preload" href="/dashboard/_next/static/css/4614e06482d7309e.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/4614e06482d7309e.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-3286453d56f3c0a0.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-cf60a09ccd051a10.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-f15ccb73239a3bf1.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-ce361c6959bc2001.js" defer=""></script><script src="/dashboard/_next/static/chunks/616-3d59f75e2ccf9321.js" defer=""></script><script src="/dashboard/_next/static/chunks/6130-2be46d70a38f1e82.js" defer=""></script><script src="/dashboard/_next/static/chunks/5739-d67458fcb1386c92.js" defer=""></script><script src="/dashboard/_next/static/chunks/7411-b15471acd2cba716.js" defer=""></script><script src="/dashboard/_next/static/chunks/1272-1ef0bf0237faccdb.js" defer=""></script><script src="/dashboard/_next/static/chunks/4676-9da7fdbde90b5549.js" defer=""></script><script src="/dashboard/_next/static/chunks/754-d0da8ab45f9509e9.js" defer=""></script><script src="/dashboard/_next/static/chunks/6989-01359c57e018caa4.js" defer=""></script><script src="/dashboard/_next/static/chunks/3850-ff4a9a69d978632b.js" defer=""></script><script src="/dashboard/_next/static/chunks/8969-66237729cdf9749e.js" defer=""></script><script src="/dashboard/_next/static/chunks/6990-f6818c84ed8f1c86.js" defer=""></script><script src="/dashboard/_next/static/chunks/6135-4b4d5e824b7f9d3c.js" defer=""></script><script src="/dashboard/_next/static/chunks/1121-d0782b9251f0fcd3.js" defer=""></script><script src="/dashboard/_next/static/chunks/6856-5fdc9b851a18acdb.js" defer=""></script><script src="/dashboard/_next/static/chunks/6601-06114c982db410b6.js" defer=""></script><script src="/dashboard/_next/static/chunks/3015-8d748834fcc60b46.js" defer=""></script><script src="/dashboard/_next/static/chunks/9037-d0c00018a5ba198c.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/clusters/%5Bcluster%5D-e052384df65ef200.js" defer=""></script><script src="/dashboard/_next/static/
|
|
1
|
+
<!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><meta name="next-head-count" content="2"/><link rel="preload" href="/dashboard/_next/static/css/4614e06482d7309e.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/4614e06482d7309e.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-3286453d56f3c0a0.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-cf60a09ccd051a10.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-f15ccb73239a3bf1.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-ce361c6959bc2001.js" defer=""></script><script src="/dashboard/_next/static/chunks/616-3d59f75e2ccf9321.js" defer=""></script><script src="/dashboard/_next/static/chunks/6130-2be46d70a38f1e82.js" defer=""></script><script src="/dashboard/_next/static/chunks/5739-d67458fcb1386c92.js" defer=""></script><script src="/dashboard/_next/static/chunks/7411-b15471acd2cba716.js" defer=""></script><script src="/dashboard/_next/static/chunks/1272-1ef0bf0237faccdb.js" defer=""></script><script src="/dashboard/_next/static/chunks/4676-9da7fdbde90b5549.js" defer=""></script><script src="/dashboard/_next/static/chunks/754-d0da8ab45f9509e9.js" defer=""></script><script src="/dashboard/_next/static/chunks/6989-01359c57e018caa4.js" defer=""></script><script src="/dashboard/_next/static/chunks/3850-ff4a9a69d978632b.js" defer=""></script><script src="/dashboard/_next/static/chunks/8969-66237729cdf9749e.js" defer=""></script><script src="/dashboard/_next/static/chunks/6990-f6818c84ed8f1c86.js" defer=""></script><script src="/dashboard/_next/static/chunks/6135-4b4d5e824b7f9d3c.js" defer=""></script><script src="/dashboard/_next/static/chunks/1121-d0782b9251f0fcd3.js" defer=""></script><script src="/dashboard/_next/static/chunks/6856-5fdc9b851a18acdb.js" defer=""></script><script src="/dashboard/_next/static/chunks/6601-06114c982db410b6.js" defer=""></script><script src="/dashboard/_next/static/chunks/3015-8d748834fcc60b46.js" defer=""></script><script src="/dashboard/_next/static/chunks/9037-d0c00018a5ba198c.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/clusters/%5Bcluster%5D-e052384df65ef200.js" defer=""></script><script src="/dashboard/_next/static/Vg53Kzbf7u4o6fYPeOHMe/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/Vg53Kzbf7u4o6fYPeOHMe/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/clusters/[cluster]","query":{},"buildId":"Vg53Kzbf7u4o6fYPeOHMe","assetPrefix":"/dashboard","nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html>
|
sky/dashboard/out/clusters.html
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
<!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><meta name="next-head-count" content="2"/><link rel="preload" href="/dashboard/_next/static/css/4614e06482d7309e.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/4614e06482d7309e.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-3286453d56f3c0a0.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-cf60a09ccd051a10.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-f15ccb73239a3bf1.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-ce361c6959bc2001.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/clusters-469814d711d63b1b.js" defer=""></script><script src="/dashboard/_next/static/
|
|
1
|
+
<!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><meta name="next-head-count" content="2"/><link rel="preload" href="/dashboard/_next/static/css/4614e06482d7309e.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/4614e06482d7309e.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-3286453d56f3c0a0.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-cf60a09ccd051a10.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-f15ccb73239a3bf1.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-ce361c6959bc2001.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/clusters-469814d711d63b1b.js" defer=""></script><script src="/dashboard/_next/static/Vg53Kzbf7u4o6fYPeOHMe/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/Vg53Kzbf7u4o6fYPeOHMe/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/clusters","query":{},"buildId":"Vg53Kzbf7u4o6fYPeOHMe","assetPrefix":"/dashboard","nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html>
|
sky/dashboard/out/config.html
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
<!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><meta name="next-head-count" content="2"/><link rel="preload" href="/dashboard/_next/static/css/4614e06482d7309e.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/4614e06482d7309e.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-3286453d56f3c0a0.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-cf60a09ccd051a10.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-f15ccb73239a3bf1.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-ce361c6959bc2001.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/config-dfb9bf07b13045f4.js" defer=""></script><script src="/dashboard/_next/static/
|
|
1
|
+
<!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><meta name="next-head-count" content="2"/><link rel="preload" href="/dashboard/_next/static/css/4614e06482d7309e.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/4614e06482d7309e.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-3286453d56f3c0a0.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-cf60a09ccd051a10.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-f15ccb73239a3bf1.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-ce361c6959bc2001.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/config-dfb9bf07b13045f4.js" defer=""></script><script src="/dashboard/_next/static/Vg53Kzbf7u4o6fYPeOHMe/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/Vg53Kzbf7u4o6fYPeOHMe/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/config","query":{},"buildId":"Vg53Kzbf7u4o6fYPeOHMe","assetPrefix":"/dashboard","nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html>
|
sky/dashboard/out/index.html
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
<!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><meta name="next-head-count" content="2"/><link rel="preload" href="/dashboard/_next/static/css/4614e06482d7309e.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/4614e06482d7309e.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-3286453d56f3c0a0.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-cf60a09ccd051a10.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-f15ccb73239a3bf1.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-ce361c6959bc2001.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/index-444f1804401f04ea.js" defer=""></script><script src="/dashboard/_next/static/
|
|
1
|
+
<!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><meta name="next-head-count" content="2"/><link rel="preload" href="/dashboard/_next/static/css/4614e06482d7309e.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/4614e06482d7309e.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-3286453d56f3c0a0.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-cf60a09ccd051a10.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-f15ccb73239a3bf1.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-ce361c6959bc2001.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/index-444f1804401f04ea.js" defer=""></script><script src="/dashboard/_next/static/Vg53Kzbf7u4o6fYPeOHMe/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/Vg53Kzbf7u4o6fYPeOHMe/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/","query":{},"buildId":"Vg53Kzbf7u4o6fYPeOHMe","assetPrefix":"/dashboard","nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
<!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><meta name="next-head-count" content="2"/><link rel="preload" href="/dashboard/_next/static/css/4614e06482d7309e.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/4614e06482d7309e.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-3286453d56f3c0a0.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-cf60a09ccd051a10.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-f15ccb73239a3bf1.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-ce361c6959bc2001.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/infra/%5Bcontext%5D-6563820e094f68ca.js" defer=""></script><script src="/dashboard/_next/static/
|
|
1
|
+
<!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><meta name="next-head-count" content="2"/><link rel="preload" href="/dashboard/_next/static/css/4614e06482d7309e.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/4614e06482d7309e.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-3286453d56f3c0a0.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-cf60a09ccd051a10.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-f15ccb73239a3bf1.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-ce361c6959bc2001.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/infra/%5Bcontext%5D-6563820e094f68ca.js" defer=""></script><script src="/dashboard/_next/static/Vg53Kzbf7u4o6fYPeOHMe/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/Vg53Kzbf7u4o6fYPeOHMe/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/infra/[context]","query":{},"buildId":"Vg53Kzbf7u4o6fYPeOHMe","assetPrefix":"/dashboard","nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html>
|
sky/dashboard/out/infra.html
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
<!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><meta name="next-head-count" content="2"/><link rel="preload" href="/dashboard/_next/static/css/4614e06482d7309e.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/4614e06482d7309e.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-3286453d56f3c0a0.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-cf60a09ccd051a10.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-f15ccb73239a3bf1.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-ce361c6959bc2001.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/infra-aabba60d57826e0f.js" defer=""></script><script src="/dashboard/_next/static/
|
|
1
|
+
<!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><meta name="next-head-count" content="2"/><link rel="preload" href="/dashboard/_next/static/css/4614e06482d7309e.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/4614e06482d7309e.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-3286453d56f3c0a0.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-cf60a09ccd051a10.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-f15ccb73239a3bf1.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-ce361c6959bc2001.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/infra-aabba60d57826e0f.js" defer=""></script><script src="/dashboard/_next/static/Vg53Kzbf7u4o6fYPeOHMe/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/Vg53Kzbf7u4o6fYPeOHMe/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/infra","query":{},"buildId":"Vg53Kzbf7u4o6fYPeOHMe","assetPrefix":"/dashboard","nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
<!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><meta name="next-head-count" content="2"/><link rel="preload" href="/dashboard/_next/static/css/4614e06482d7309e.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/4614e06482d7309e.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-3286453d56f3c0a0.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-cf60a09ccd051a10.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-f15ccb73239a3bf1.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-ce361c6959bc2001.js" defer=""></script><script src="/dashboard/_next/static/chunks/616-3d59f75e2ccf9321.js" defer=""></script><script src="/dashboard/_next/static/chunks/6130-2be46d70a38f1e82.js" defer=""></script><script src="/dashboard/_next/static/chunks/5739-d67458fcb1386c92.js" defer=""></script><script src="/dashboard/_next/static/chunks/7411-b15471acd2cba716.js" defer=""></script><script src="/dashboard/_next/static/chunks/1272-1ef0bf0237faccdb.js" defer=""></script><script src="/dashboard/_next/static/chunks/754-d0da8ab45f9509e9.js" defer=""></script><script src="/dashboard/_next/static/chunks/6989-01359c57e018caa4.js" defer=""></script><script src="/dashboard/_next/static/chunks/3850-ff4a9a69d978632b.js" defer=""></script><script src="/dashboard/_next/static/chunks/8969-66237729cdf9749e.js" defer=""></script><script src="/dashboard/_next/static/chunks/6135-4b4d5e824b7f9d3c.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/jobs/%5Bjob%5D-dd64309c3fe67ed2.js" defer=""></script><script src="/dashboard/_next/static/
|
|
1
|
+
<!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><meta name="next-head-count" content="2"/><link rel="preload" href="/dashboard/_next/static/css/4614e06482d7309e.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/4614e06482d7309e.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-3286453d56f3c0a0.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-cf60a09ccd051a10.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-f15ccb73239a3bf1.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-ce361c6959bc2001.js" defer=""></script><script src="/dashboard/_next/static/chunks/616-3d59f75e2ccf9321.js" defer=""></script><script src="/dashboard/_next/static/chunks/6130-2be46d70a38f1e82.js" defer=""></script><script src="/dashboard/_next/static/chunks/5739-d67458fcb1386c92.js" defer=""></script><script src="/dashboard/_next/static/chunks/7411-b15471acd2cba716.js" defer=""></script><script src="/dashboard/_next/static/chunks/1272-1ef0bf0237faccdb.js" defer=""></script><script src="/dashboard/_next/static/chunks/754-d0da8ab45f9509e9.js" defer=""></script><script src="/dashboard/_next/static/chunks/6989-01359c57e018caa4.js" defer=""></script><script src="/dashboard/_next/static/chunks/3850-ff4a9a69d978632b.js" defer=""></script><script src="/dashboard/_next/static/chunks/8969-66237729cdf9749e.js" defer=""></script><script src="/dashboard/_next/static/chunks/6135-4b4d5e824b7f9d3c.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/jobs/%5Bjob%5D-dd64309c3fe67ed2.js" defer=""></script><script src="/dashboard/_next/static/Vg53Kzbf7u4o6fYPeOHMe/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/Vg53Kzbf7u4o6fYPeOHMe/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/jobs/[job]","query":{},"buildId":"Vg53Kzbf7u4o6fYPeOHMe","assetPrefix":"/dashboard","nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
<!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><meta name="next-head-count" content="2"/><link rel="preload" href="/dashboard/_next/static/css/4614e06482d7309e.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/4614e06482d7309e.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-3286453d56f3c0a0.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-cf60a09ccd051a10.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-f15ccb73239a3bf1.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-ce361c6959bc2001.js" defer=""></script><script src="/dashboard/_next/static/chunks/616-3d59f75e2ccf9321.js" defer=""></script><script src="/dashboard/_next/static/chunks/6130-2be46d70a38f1e82.js" defer=""></script><script src="/dashboard/_next/static/chunks/5739-d67458fcb1386c92.js" defer=""></script><script src="/dashboard/_next/static/chunks/1272-1ef0bf0237faccdb.js" defer=""></script><script src="/dashboard/_next/static/chunks/754-d0da8ab45f9509e9.js" defer=""></script><script src="/dashboard/_next/static/chunks/6989-01359c57e018caa4.js" defer=""></script><script src="/dashboard/_next/static/chunks/3850-ff4a9a69d978632b.js" defer=""></script><script src="/dashboard/_next/static/chunks/8969-66237729cdf9749e.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/jobs/pools/%5Bpool%5D-509b2977a6373bf6.js" defer=""></script><script src="/dashboard/_next/static/
|
|
1
|
+
<!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><meta name="next-head-count" content="2"/><link rel="preload" href="/dashboard/_next/static/css/4614e06482d7309e.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/4614e06482d7309e.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-3286453d56f3c0a0.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-cf60a09ccd051a10.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-f15ccb73239a3bf1.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-ce361c6959bc2001.js" defer=""></script><script src="/dashboard/_next/static/chunks/616-3d59f75e2ccf9321.js" defer=""></script><script src="/dashboard/_next/static/chunks/6130-2be46d70a38f1e82.js" defer=""></script><script src="/dashboard/_next/static/chunks/5739-d67458fcb1386c92.js" defer=""></script><script src="/dashboard/_next/static/chunks/1272-1ef0bf0237faccdb.js" defer=""></script><script src="/dashboard/_next/static/chunks/754-d0da8ab45f9509e9.js" defer=""></script><script src="/dashboard/_next/static/chunks/6989-01359c57e018caa4.js" defer=""></script><script src="/dashboard/_next/static/chunks/3850-ff4a9a69d978632b.js" defer=""></script><script src="/dashboard/_next/static/chunks/8969-66237729cdf9749e.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/jobs/pools/%5Bpool%5D-509b2977a6373bf6.js" defer=""></script><script src="/dashboard/_next/static/Vg53Kzbf7u4o6fYPeOHMe/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/Vg53Kzbf7u4o6fYPeOHMe/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/jobs/pools/[pool]","query":{},"buildId":"Vg53Kzbf7u4o6fYPeOHMe","assetPrefix":"/dashboard","nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html>
|
sky/dashboard/out/jobs.html
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
<!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><meta name="next-head-count" content="2"/><link rel="preload" href="/dashboard/_next/static/css/4614e06482d7309e.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/4614e06482d7309e.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-3286453d56f3c0a0.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-cf60a09ccd051a10.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-f15ccb73239a3bf1.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-ce361c6959bc2001.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/jobs-1f70d9faa564804f.js" defer=""></script><script src="/dashboard/_next/static/
|
|
1
|
+
<!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><meta name="next-head-count" content="2"/><link rel="preload" href="/dashboard/_next/static/css/4614e06482d7309e.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/4614e06482d7309e.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-3286453d56f3c0a0.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-cf60a09ccd051a10.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-f15ccb73239a3bf1.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-ce361c6959bc2001.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/jobs-1f70d9faa564804f.js" defer=""></script><script src="/dashboard/_next/static/Vg53Kzbf7u4o6fYPeOHMe/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/Vg53Kzbf7u4o6fYPeOHMe/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/jobs","query":{},"buildId":"Vg53Kzbf7u4o6fYPeOHMe","assetPrefix":"/dashboard","nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html>
|
sky/dashboard/out/users.html
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
<!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><meta name="next-head-count" content="2"/><link rel="preload" href="/dashboard/_next/static/css/4614e06482d7309e.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/4614e06482d7309e.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-3286453d56f3c0a0.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-cf60a09ccd051a10.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-f15ccb73239a3bf1.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-ce361c6959bc2001.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/users-018bf31cda52e11b.js" defer=""></script><script src="/dashboard/_next/static/
|
|
1
|
+
<!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><meta name="next-head-count" content="2"/><link rel="preload" href="/dashboard/_next/static/css/4614e06482d7309e.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/4614e06482d7309e.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-3286453d56f3c0a0.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-cf60a09ccd051a10.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-f15ccb73239a3bf1.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-ce361c6959bc2001.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/users-018bf31cda52e11b.js" defer=""></script><script src="/dashboard/_next/static/Vg53Kzbf7u4o6fYPeOHMe/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/Vg53Kzbf7u4o6fYPeOHMe/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/users","query":{},"buildId":"Vg53Kzbf7u4o6fYPeOHMe","assetPrefix":"/dashboard","nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html>
|
sky/dashboard/out/volumes.html
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
<!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><meta name="next-head-count" content="2"/><link rel="preload" href="/dashboard/_next/static/css/4614e06482d7309e.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/4614e06482d7309e.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-3286453d56f3c0a0.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-cf60a09ccd051a10.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-f15ccb73239a3bf1.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-ce361c6959bc2001.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/volumes-739726d6b823f532.js" defer=""></script><script src="/dashboard/_next/static/
|
|
1
|
+
<!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><meta name="next-head-count" content="2"/><link rel="preload" href="/dashboard/_next/static/css/4614e06482d7309e.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/4614e06482d7309e.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-3286453d56f3c0a0.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-cf60a09ccd051a10.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-f15ccb73239a3bf1.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-ce361c6959bc2001.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/volumes-739726d6b823f532.js" defer=""></script><script src="/dashboard/_next/static/Vg53Kzbf7u4o6fYPeOHMe/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/Vg53Kzbf7u4o6fYPeOHMe/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/volumes","query":{},"buildId":"Vg53Kzbf7u4o6fYPeOHMe","assetPrefix":"/dashboard","nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
<!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><meta name="next-head-count" content="2"/><link rel="preload" href="/dashboard/_next/static/css/4614e06482d7309e.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/4614e06482d7309e.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-3286453d56f3c0a0.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-cf60a09ccd051a10.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-f15ccb73239a3bf1.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-ce361c6959bc2001.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/workspace/new-3f88a1c7e86a3f86.js" defer=""></script><script src="/dashboard/_next/static/
|
|
1
|
+
<!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><meta name="next-head-count" content="2"/><link rel="preload" href="/dashboard/_next/static/css/4614e06482d7309e.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/4614e06482d7309e.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-3286453d56f3c0a0.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-cf60a09ccd051a10.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-f15ccb73239a3bf1.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-ce361c6959bc2001.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/workspace/new-3f88a1c7e86a3f86.js" defer=""></script><script src="/dashboard/_next/static/Vg53Kzbf7u4o6fYPeOHMe/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/Vg53Kzbf7u4o6fYPeOHMe/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/workspace/new","query":{},"buildId":"Vg53Kzbf7u4o6fYPeOHMe","assetPrefix":"/dashboard","nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
<!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><meta name="next-head-count" content="2"/><link rel="preload" href="/dashboard/_next/static/css/4614e06482d7309e.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/4614e06482d7309e.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-3286453d56f3c0a0.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-cf60a09ccd051a10.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-f15ccb73239a3bf1.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-ce361c6959bc2001.js" defer=""></script><script src="/dashboard/_next/static/chunks/616-3d59f75e2ccf9321.js" defer=""></script><script src="/dashboard/_next/static/chunks/6130-2be46d70a38f1e82.js" defer=""></script><script src="/dashboard/_next/static/chunks/5739-d67458fcb1386c92.js" defer=""></script><script src="/dashboard/_next/static/chunks/7411-b15471acd2cba716.js" defer=""></script><script src="/dashboard/_next/static/chunks/1272-1ef0bf0237faccdb.js" defer=""></script><script src="/dashboard/_next/static/chunks/1836-37fede578e2da5f8.js" defer=""></script><script src="/dashboard/_next/static/chunks/6989-01359c57e018caa4.js" defer=""></script><script src="/dashboard/_next/static/chunks/3850-ff4a9a69d978632b.js" defer=""></script><script src="/dashboard/_next/static/chunks/8969-66237729cdf9749e.js" defer=""></script><script src="/dashboard/_next/static/chunks/6990-f6818c84ed8f1c86.js" defer=""></script><script src="/dashboard/_next/static/chunks/6135-4b4d5e824b7f9d3c.js" defer=""></script><script src="/dashboard/_next/static/chunks/1121-d0782b9251f0fcd3.js" defer=""></script><script src="/dashboard/_next/static/chunks/6601-06114c982db410b6.js" defer=""></script><script src="/dashboard/_next/static/chunks/3015-8d748834fcc60b46.js" defer=""></script><script src="/dashboard/_next/static/chunks/1141-159df2d4c441a9d1.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/workspaces/%5Bname%5D-af76bb06dbb3954f.js" defer=""></script><script src="/dashboard/_next/static/
|
|
1
|
+
<!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><meta name="next-head-count" content="2"/><link rel="preload" href="/dashboard/_next/static/css/4614e06482d7309e.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/4614e06482d7309e.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-3286453d56f3c0a0.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-cf60a09ccd051a10.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-f15ccb73239a3bf1.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-ce361c6959bc2001.js" defer=""></script><script src="/dashboard/_next/static/chunks/616-3d59f75e2ccf9321.js" defer=""></script><script src="/dashboard/_next/static/chunks/6130-2be46d70a38f1e82.js" defer=""></script><script src="/dashboard/_next/static/chunks/5739-d67458fcb1386c92.js" defer=""></script><script src="/dashboard/_next/static/chunks/7411-b15471acd2cba716.js" defer=""></script><script src="/dashboard/_next/static/chunks/1272-1ef0bf0237faccdb.js" defer=""></script><script src="/dashboard/_next/static/chunks/1836-37fede578e2da5f8.js" defer=""></script><script src="/dashboard/_next/static/chunks/6989-01359c57e018caa4.js" defer=""></script><script src="/dashboard/_next/static/chunks/3850-ff4a9a69d978632b.js" defer=""></script><script src="/dashboard/_next/static/chunks/8969-66237729cdf9749e.js" defer=""></script><script src="/dashboard/_next/static/chunks/6990-f6818c84ed8f1c86.js" defer=""></script><script src="/dashboard/_next/static/chunks/6135-4b4d5e824b7f9d3c.js" defer=""></script><script src="/dashboard/_next/static/chunks/1121-d0782b9251f0fcd3.js" defer=""></script><script src="/dashboard/_next/static/chunks/6601-06114c982db410b6.js" defer=""></script><script src="/dashboard/_next/static/chunks/3015-8d748834fcc60b46.js" defer=""></script><script src="/dashboard/_next/static/chunks/1141-159df2d4c441a9d1.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/workspaces/%5Bname%5D-af76bb06dbb3954f.js" defer=""></script><script src="/dashboard/_next/static/Vg53Kzbf7u4o6fYPeOHMe/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/Vg53Kzbf7u4o6fYPeOHMe/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/workspaces/[name]","query":{},"buildId":"Vg53Kzbf7u4o6fYPeOHMe","assetPrefix":"/dashboard","nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
<!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><meta name="next-head-count" content="2"/><link rel="preload" href="/dashboard/_next/static/css/4614e06482d7309e.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/4614e06482d7309e.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-3286453d56f3c0a0.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-cf60a09ccd051a10.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-f15ccb73239a3bf1.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-ce361c6959bc2001.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/workspaces-7528cc0ef8c522c5.js" defer=""></script><script src="/dashboard/_next/static/
|
|
1
|
+
<!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><meta name="next-head-count" content="2"/><link rel="preload" href="/dashboard/_next/static/css/4614e06482d7309e.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/4614e06482d7309e.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-3286453d56f3c0a0.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-cf60a09ccd051a10.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-f15ccb73239a3bf1.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-ce361c6959bc2001.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/workspaces-7528cc0ef8c522c5.js" defer=""></script><script src="/dashboard/_next/static/Vg53Kzbf7u4o6fYPeOHMe/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/Vg53Kzbf7u4o6fYPeOHMe/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/workspaces","query":{},"buildId":"Vg53Kzbf7u4o6fYPeOHMe","assetPrefix":"/dashboard","nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html>
|
sky/execution.py
CHANGED
|
@@ -5,7 +5,7 @@ See `Stage` for a Task's life cycle.
|
|
|
5
5
|
import enum
|
|
6
6
|
import logging
|
|
7
7
|
import typing
|
|
8
|
-
from typing import List, Optional, Tuple, Union
|
|
8
|
+
from typing import Callable, List, Optional, Tuple, Union
|
|
9
9
|
|
|
10
10
|
import colorama
|
|
11
11
|
|
|
@@ -31,6 +31,7 @@ from sky.utils import ux_utils
|
|
|
31
31
|
|
|
32
32
|
if typing.TYPE_CHECKING:
|
|
33
33
|
import sky
|
|
34
|
+
from sky import resources as resources_lib
|
|
34
35
|
|
|
35
36
|
logger = sky_logging.init_logger(__name__)
|
|
36
37
|
|
|
@@ -400,6 +401,26 @@ def _execute_dag(
|
|
|
400
401
|
task = dag.tasks[0] # Keep: dag may have been deep-copied.
|
|
401
402
|
assert task.best_resources is not None, task
|
|
402
403
|
|
|
404
|
+
# Note on race vs. lock: OPTIMIZE typically runs outside the per-cluster
|
|
405
|
+
# lock. After the backend acquires the lock and refreshes state, the
|
|
406
|
+
# original "do we need to optimize?" decision may be stale (e.g., the
|
|
407
|
+
# cluster just got terminated). To compensate without moving the optimizer
|
|
408
|
+
# into the backend, we inject a small planner the backend can call under
|
|
409
|
+
# the lock only when no reusable snapshot and no caller plan exist.
|
|
410
|
+
planner: Optional[Callable[['sky.Task'], 'resources_lib.Resources']] = None
|
|
411
|
+
if isinstance(backend,
|
|
412
|
+
backends.CloudVmRayBackend) and Stage.OPTIMIZE in stages:
|
|
413
|
+
|
|
414
|
+
def _planner(_t: 'sky.Task'):
|
|
415
|
+
new_dag = optimizer.Optimizer.optimize(dag,
|
|
416
|
+
minimize=optimize_target,
|
|
417
|
+
quiet=_quiet_optimizer)
|
|
418
|
+
new_task = new_dag.tasks[0]
|
|
419
|
+
assert new_task.best_resources is not None, new_task
|
|
420
|
+
return new_task.best_resources.assert_launchable()
|
|
421
|
+
|
|
422
|
+
planner = _planner
|
|
423
|
+
|
|
403
424
|
backend.register_info(
|
|
404
425
|
dag=dag,
|
|
405
426
|
optimize_target=optimize_target,
|
|
@@ -408,7 +429,8 @@ def _execute_dag(
|
|
|
408
429
|
# after K8S pod recovers from a crash.
|
|
409
430
|
# See `kubernetes-ray.yml.j2` for more details.
|
|
410
431
|
dump_final_script=is_controller_high_availability_supported,
|
|
411
|
-
is_managed=is_managed
|
|
432
|
+
is_managed=is_managed,
|
|
433
|
+
planner=planner)
|
|
412
434
|
|
|
413
435
|
if task.storage_mounts is not None:
|
|
414
436
|
# Optimizer should eventually choose where to store bucket
|
sky/jobs/recovery_strategy.py
CHANGED
|
@@ -7,6 +7,7 @@ resources:
|
|
|
7
7
|
"""
|
|
8
8
|
import asyncio
|
|
9
9
|
import logging
|
|
10
|
+
import os
|
|
10
11
|
import traceback
|
|
11
12
|
import typing
|
|
12
13
|
from typing import Optional, Set
|
|
@@ -16,16 +17,19 @@ from sky import dag as dag_lib
|
|
|
16
17
|
from sky import exceptions
|
|
17
18
|
from sky import global_user_state
|
|
18
19
|
from sky import sky_logging
|
|
20
|
+
from sky import skypilot_config
|
|
19
21
|
from sky.backends import backend_utils
|
|
20
22
|
from sky.client import sdk
|
|
21
23
|
from sky.jobs import scheduler
|
|
22
24
|
from sky.jobs import state
|
|
23
25
|
from sky.jobs import utils as managed_job_utils
|
|
24
26
|
from sky.serve import serve_utils
|
|
27
|
+
from sky.skylet import constants
|
|
25
28
|
from sky.skylet import job_lib
|
|
26
29
|
from sky.usage import usage_lib
|
|
27
30
|
from sky.utils import common_utils
|
|
28
31
|
from sky.utils import context_utils
|
|
32
|
+
from sky.utils import env_options
|
|
29
33
|
from sky.utils import registry
|
|
30
34
|
from sky.utils import status_lib
|
|
31
35
|
from sky.utils import ux_utils
|
|
@@ -45,6 +49,13 @@ MAX_JOB_CHECKING_RETRY = 10
|
|
|
45
49
|
# cluster before its status can be updated by the job controller.
|
|
46
50
|
_AUTODOWN_MINUTES = 10
|
|
47
51
|
|
|
52
|
+
ENV_VARS_TO_CLEAR = [
|
|
53
|
+
skypilot_config.ENV_VAR_SKYPILOT_CONFIG,
|
|
54
|
+
constants.USER_ID_ENV_VAR,
|
|
55
|
+
constants.USER_ENV_VAR,
|
|
56
|
+
env_options.Options.SHOW_DEBUG_INFO.env_key,
|
|
57
|
+
]
|
|
58
|
+
|
|
48
59
|
|
|
49
60
|
class StrategyExecutor:
|
|
50
61
|
"""Handle the launching, recovery and termination of managed job clusters"""
|
|
@@ -213,6 +224,7 @@ class StrategyExecutor:
|
|
|
213
224
|
**kwargs,
|
|
214
225
|
_try_cancel_if_cluster_is_init=True,
|
|
215
226
|
)
|
|
227
|
+
self._logger.debug(f'sdk.cancel request ID: {request_id}')
|
|
216
228
|
await context_utils.to_thread(
|
|
217
229
|
sdk.get,
|
|
218
230
|
request_id,
|
|
@@ -371,6 +383,31 @@ class StrategyExecutor:
|
|
|
371
383
|
usage_lib.messages.usage.set_internal()
|
|
372
384
|
if self.pool is None:
|
|
373
385
|
assert self.cluster_name is not None
|
|
386
|
+
|
|
387
|
+
# sdk.launch will implicitly start the API server,
|
|
388
|
+
# but then the API server will inherit the current
|
|
389
|
+
# env vars/user, which we may not want.
|
|
390
|
+
# Instead, clear env vars here and call api_start
|
|
391
|
+
# explicitly.
|
|
392
|
+
vars_to_restore = {}
|
|
393
|
+
try:
|
|
394
|
+
for env_var in ENV_VARS_TO_CLEAR:
|
|
395
|
+
vars_to_restore[env_var] = os.environ.pop(
|
|
396
|
+
env_var, None)
|
|
397
|
+
self._logger.debug('Cleared env var: '
|
|
398
|
+
f'{env_var}')
|
|
399
|
+
self._logger.debug('Env vars for api_start: '
|
|
400
|
+
f'{os.environ}')
|
|
401
|
+
await context_utils.to_thread(sdk.api_start)
|
|
402
|
+
self._logger.info('API server started.')
|
|
403
|
+
finally:
|
|
404
|
+
for env_var, value in vars_to_restore.items():
|
|
405
|
+
if value is not None:
|
|
406
|
+
self._logger.debug(
|
|
407
|
+
'Restored env var: '
|
|
408
|
+
f'{env_var}: {value}')
|
|
409
|
+
os.environ[env_var] = value
|
|
410
|
+
|
|
374
411
|
log_file = _get_logger_file(self._logger)
|
|
375
412
|
request_id = None
|
|
376
413
|
try:
|
|
@@ -392,6 +429,8 @@ class StrategyExecutor:
|
|
|
392
429
|
# down=True,
|
|
393
430
|
_is_launched_by_jobs_controller=True,
|
|
394
431
|
)
|
|
432
|
+
self._logger.debug('sdk.launch request ID: '
|
|
433
|
+
f'{request_id}')
|
|
395
434
|
if log_file is None:
|
|
396
435
|
raise OSError('Log file is None')
|
|
397
436
|
with open(log_file, 'a', encoding='utf-8') as f:
|
|
@@ -404,6 +443,8 @@ class StrategyExecutor:
|
|
|
404
443
|
if request_id:
|
|
405
444
|
req = await context_utils.to_thread(
|
|
406
445
|
sdk.api_cancel, request_id)
|
|
446
|
+
self._logger.debug('sdk.api_cancel request '
|
|
447
|
+
f'ID: {req}')
|
|
407
448
|
try:
|
|
408
449
|
await context_utils.to_thread(
|
|
409
450
|
sdk.get, req)
|
|
@@ -427,6 +468,8 @@ class StrategyExecutor:
|
|
|
427
468
|
self.dag,
|
|
428
469
|
cluster_name=self.cluster_name,
|
|
429
470
|
)
|
|
471
|
+
self._logger.debug('sdk.exec request ID: '
|
|
472
|
+
f'{request_id}')
|
|
430
473
|
job_id_on_pool_cluster, _ = (
|
|
431
474
|
await context_utils.to_thread(
|
|
432
475
|
sdk.get, request_id))
|
|
@@ -434,6 +477,8 @@ class StrategyExecutor:
|
|
|
434
477
|
if request_id:
|
|
435
478
|
req = await context_utils.to_thread(
|
|
436
479
|
sdk.api_cancel, request_id)
|
|
480
|
+
self._logger.debug('sdk.api_cancel request '
|
|
481
|
+
f'ID: {req}')
|
|
437
482
|
try:
|
|
438
483
|
await context_utils.to_thread(
|
|
439
484
|
sdk.get, req)
|
|
@@ -16,6 +16,8 @@ import time
|
|
|
16
16
|
import typing
|
|
17
17
|
from typing import Any, Callable, Dict, List, Optional, Set, Tuple, Union
|
|
18
18
|
|
|
19
|
+
import ijson
|
|
20
|
+
|
|
19
21
|
from sky import clouds
|
|
20
22
|
from sky import exceptions
|
|
21
23
|
from sky import global_user_state
|
|
@@ -60,6 +62,8 @@ HIGH_AVAILABILITY_DEPLOYMENT_VOLUME_MOUNT_NAME = 'sky-data'
|
|
|
60
62
|
# and store all data that needs to be persisted in future.
|
|
61
63
|
HIGH_AVAILABILITY_DEPLOYMENT_VOLUME_MOUNT_PATH = '/home/sky'
|
|
62
64
|
|
|
65
|
+
IJSON_BUFFER_SIZE = 64 * 1024 # 64KB, default from ijson
|
|
66
|
+
|
|
63
67
|
|
|
64
68
|
class KubernetesHighPerformanceNetworkType(enum.Enum):
|
|
65
69
|
"""Enum for different Kubernetes cluster types with high performance
|
|
@@ -1141,9 +1145,51 @@ def detect_accelerator_resource(
|
|
|
1141
1145
|
return has_accelerator, cluster_resources
|
|
1142
1146
|
|
|
1143
1147
|
|
|
1148
|
+
@dataclasses.dataclass
|
|
1149
|
+
class V1ObjectMeta:
|
|
1150
|
+
name: str
|
|
1151
|
+
labels: Dict[str, str]
|
|
1152
|
+
namespace: str = '' # Used for pods, not nodes
|
|
1153
|
+
|
|
1154
|
+
|
|
1155
|
+
@dataclasses.dataclass
|
|
1156
|
+
class V1NodeAddress:
|
|
1157
|
+
type: str
|
|
1158
|
+
address: str
|
|
1159
|
+
|
|
1160
|
+
|
|
1161
|
+
@dataclasses.dataclass
|
|
1162
|
+
class V1NodeStatus:
|
|
1163
|
+
allocatable: Dict[str, str]
|
|
1164
|
+
capacity: Dict[str, str]
|
|
1165
|
+
addresses: List[V1NodeAddress]
|
|
1166
|
+
|
|
1167
|
+
|
|
1168
|
+
@dataclasses.dataclass
|
|
1169
|
+
class V1Node:
|
|
1170
|
+
metadata: V1ObjectMeta
|
|
1171
|
+
status: V1NodeStatus
|
|
1172
|
+
|
|
1173
|
+
@classmethod
|
|
1174
|
+
def from_dict(cls, data: dict) -> 'V1Node':
|
|
1175
|
+
"""Create V1Node from a dictionary."""
|
|
1176
|
+
return cls(metadata=V1ObjectMeta(
|
|
1177
|
+
name=data['metadata']['name'],
|
|
1178
|
+
labels=data['metadata'].get('labels', {}),
|
|
1179
|
+
),
|
|
1180
|
+
status=V1NodeStatus(
|
|
1181
|
+
allocatable=data['status']['allocatable'],
|
|
1182
|
+
capacity=data['status']['capacity'],
|
|
1183
|
+
addresses=[
|
|
1184
|
+
V1NodeAddress(type=addr['type'],
|
|
1185
|
+
address=addr['address'])
|
|
1186
|
+
for addr in data['status'].get('addresses', [])
|
|
1187
|
+
]))
|
|
1188
|
+
|
|
1189
|
+
|
|
1144
1190
|
@annotations.lru_cache(scope='request', maxsize=10)
|
|
1145
1191
|
@_retry_on_error(resource_type='node')
|
|
1146
|
-
def get_kubernetes_nodes(*, context: Optional[str] = None) -> List[
|
|
1192
|
+
def get_kubernetes_nodes(*, context: Optional[str] = None) -> List[V1Node]:
|
|
1147
1193
|
"""Gets the kubernetes nodes in the context.
|
|
1148
1194
|
|
|
1149
1195
|
If context is None, gets the nodes in the current context.
|
|
@@ -1151,15 +1197,71 @@ def get_kubernetes_nodes(*, context: Optional[str] = None) -> List[Any]:
|
|
|
1151
1197
|
if context is None:
|
|
1152
1198
|
context = get_current_kube_config_context_name()
|
|
1153
1199
|
|
|
1154
|
-
|
|
1155
|
-
|
|
1200
|
+
# Return raw urllib3.HTTPResponse object so that we can parse the json
|
|
1201
|
+
# more efficiently.
|
|
1202
|
+
response = kubernetes.core_api(context).list_node(
|
|
1203
|
+
_request_timeout=kubernetes.API_TIMEOUT, _preload_content=False)
|
|
1204
|
+
try:
|
|
1205
|
+
nodes = [
|
|
1206
|
+
V1Node.from_dict(item_dict) for item_dict in ijson.items(
|
|
1207
|
+
response, 'items.item', buf_size=IJSON_BUFFER_SIZE)
|
|
1208
|
+
]
|
|
1209
|
+
finally:
|
|
1210
|
+
response.release_conn()
|
|
1211
|
+
|
|
1156
1212
|
return nodes
|
|
1157
1213
|
|
|
1158
1214
|
|
|
1215
|
+
@dataclasses.dataclass
|
|
1216
|
+
class V1PodStatus:
|
|
1217
|
+
phase: str
|
|
1218
|
+
|
|
1219
|
+
|
|
1220
|
+
@dataclasses.dataclass
|
|
1221
|
+
class V1ResourceRequirements:
|
|
1222
|
+
requests: Optional[Dict[str, str]]
|
|
1223
|
+
|
|
1224
|
+
|
|
1225
|
+
@dataclasses.dataclass
|
|
1226
|
+
class V1Container:
|
|
1227
|
+
resources: V1ResourceRequirements
|
|
1228
|
+
|
|
1229
|
+
|
|
1230
|
+
@dataclasses.dataclass
|
|
1231
|
+
class V1PodSpec:
|
|
1232
|
+
containers: List[V1Container]
|
|
1233
|
+
node_name: Optional[str]
|
|
1234
|
+
|
|
1235
|
+
|
|
1236
|
+
@dataclasses.dataclass
|
|
1237
|
+
class V1Pod:
|
|
1238
|
+
metadata: V1ObjectMeta
|
|
1239
|
+
status: V1PodStatus
|
|
1240
|
+
spec: V1PodSpec
|
|
1241
|
+
|
|
1242
|
+
@classmethod
|
|
1243
|
+
def from_dict(cls, data: dict) -> 'V1Pod':
|
|
1244
|
+
"""Create V1Pod from a dictionary."""
|
|
1245
|
+
return cls(metadata=V1ObjectMeta(
|
|
1246
|
+
name=data['metadata']['name'],
|
|
1247
|
+
labels=data['metadata'].get('labels', {}),
|
|
1248
|
+
namespace=data['metadata'].get('namespace'),
|
|
1249
|
+
),
|
|
1250
|
+
status=V1PodStatus(phase=data['status'].get('phase'),),
|
|
1251
|
+
spec=V1PodSpec(
|
|
1252
|
+
node_name=data['spec'].get('nodeName'),
|
|
1253
|
+
containers=[
|
|
1254
|
+
V1Container(resources=V1ResourceRequirements(
|
|
1255
|
+
requests=container.get('resources', {}).get(
|
|
1256
|
+
'requests') or None))
|
|
1257
|
+
for container in data['spec'].get('containers', [])
|
|
1258
|
+
]))
|
|
1259
|
+
|
|
1260
|
+
|
|
1159
1261
|
@_retry_on_error(resource_type='pod')
|
|
1160
1262
|
def get_all_pods_in_kubernetes_cluster(*,
|
|
1161
1263
|
context: Optional[str] = None
|
|
1162
|
-
) -> List[
|
|
1264
|
+
) -> List[V1Pod]:
|
|
1163
1265
|
"""Gets pods in all namespaces in kubernetes cluster indicated by context.
|
|
1164
1266
|
|
|
1165
1267
|
Used for computing cluster resource usage.
|
|
@@ -1167,8 +1269,18 @@ def get_all_pods_in_kubernetes_cluster(*,
|
|
|
1167
1269
|
if context is None:
|
|
1168
1270
|
context = get_current_kube_config_context_name()
|
|
1169
1271
|
|
|
1170
|
-
|
|
1171
|
-
|
|
1272
|
+
# Return raw urllib3.HTTPResponse object so that we can parse the json
|
|
1273
|
+
# more efficiently.
|
|
1274
|
+
response = kubernetes.core_api(context).list_pod_for_all_namespaces(
|
|
1275
|
+
_request_timeout=kubernetes.API_TIMEOUT, _preload_content=False)
|
|
1276
|
+
try:
|
|
1277
|
+
pods = [
|
|
1278
|
+
V1Pod.from_dict(item_dict) for item_dict in ijson.items(
|
|
1279
|
+
response, 'items.item', buf_size=IJSON_BUFFER_SIZE)
|
|
1280
|
+
]
|
|
1281
|
+
finally:
|
|
1282
|
+
response.release_conn()
|
|
1283
|
+
|
|
1172
1284
|
return pods
|
|
1173
1285
|
|
|
1174
1286
|
|
sky/schemas/api/responses.py
CHANGED
|
@@ -206,9 +206,9 @@ class VolumeRecord(ResponseBaseModel):
|
|
|
206
206
|
type: str
|
|
207
207
|
launched_at: int
|
|
208
208
|
cloud: str
|
|
209
|
-
region: str
|
|
209
|
+
region: Optional[str] = None
|
|
210
210
|
zone: Optional[str] = None
|
|
211
|
-
size: str
|
|
211
|
+
size: Optional[str] = None
|
|
212
212
|
config: Dict[str, Any]
|
|
213
213
|
name_on_cloud: str
|
|
214
214
|
user_hash: str
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"""Shared loopback detection utilities for auth middlewares."""
|
|
2
|
+
|
|
3
|
+
import ipaddress
|
|
4
|
+
|
|
5
|
+
import fastapi
|
|
6
|
+
|
|
7
|
+
from sky import sky_logging
|
|
8
|
+
|
|
9
|
+
logger = sky_logging.init_logger(__name__)
|
|
10
|
+
|
|
11
|
+
COMMON_PROXY_HEADERS = [
|
|
12
|
+
'X-Forwarded-For', 'Forwarded', 'X-Real-IP', 'X-Client-IP',
|
|
13
|
+
'X-Forwarded-Host', 'X-Forwarded-Proto'
|
|
14
|
+
]
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
def _is_loopback_ip(ip_str: str) -> bool:
|
|
18
|
+
"""Check if an IP address is a loopback address."""
|
|
19
|
+
try:
|
|
20
|
+
ip = ipaddress.ip_address(ip_str)
|
|
21
|
+
return ip.is_loopback
|
|
22
|
+
except ValueError:
|
|
23
|
+
return False
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
def is_loopback_request(request: fastapi.Request) -> bool:
|
|
27
|
+
"""Determine if a request is coming from localhost."""
|
|
28
|
+
if request.client is None:
|
|
29
|
+
return False
|
|
30
|
+
|
|
31
|
+
client_host = request.client.host
|
|
32
|
+
if client_host == 'localhost' or _is_loopback_ip(client_host):
|
|
33
|
+
# Additional checks: ensure no forwarding headers are present.
|
|
34
|
+
# If there are any, assume this traffic went through a proxy.
|
|
35
|
+
return not any(
|
|
36
|
+
request.headers.get(header) for header in COMMON_PROXY_HEADERS)
|
|
37
|
+
|
|
38
|
+
return False
|
sky/server/auth/oauth2_proxy.py
CHANGED
|
@@ -15,7 +15,9 @@ import starlette.middleware.base
|
|
|
15
15
|
from sky import global_user_state
|
|
16
16
|
from sky import models
|
|
17
17
|
from sky import sky_logging
|
|
18
|
+
from sky.jobs import utils as managed_job_utils
|
|
18
19
|
from sky.server.auth import authn
|
|
20
|
+
from sky.server.auth import loopback
|
|
19
21
|
from sky.users import permission
|
|
20
22
|
from sky.utils import common_utils
|
|
21
23
|
|
|
@@ -108,6 +110,10 @@ class OAuth2ProxyMiddleware(starlette.middleware.base.BaseHTTPMiddleware):
|
|
|
108
110
|
# Already authenticated
|
|
109
111
|
return await call_next(request)
|
|
110
112
|
|
|
113
|
+
if managed_job_utils.is_consolidation_mode(
|
|
114
|
+
) and loopback.is_loopback_request(request):
|
|
115
|
+
return await call_next(request)
|
|
116
|
+
|
|
111
117
|
async with aiohttp.ClientSession() as session:
|
|
112
118
|
try:
|
|
113
119
|
return await self._authenticate(request, call_next, session)
|
sky/server/server.py
CHANGED
|
@@ -38,6 +38,7 @@ from sky import global_user_state
|
|
|
38
38
|
from sky import models
|
|
39
39
|
from sky import sky_logging
|
|
40
40
|
from sky.data import storage_utils
|
|
41
|
+
from sky.jobs import utils as managed_job_utils
|
|
41
42
|
from sky.jobs.server import server as jobs_rest
|
|
42
43
|
from sky.metrics import utils as metrics_utils
|
|
43
44
|
from sky.provision.kubernetes import utils as kubernetes_utils
|
|
@@ -52,6 +53,7 @@ from sky.server import state
|
|
|
52
53
|
from sky.server import stream_utils
|
|
53
54
|
from sky.server import versions
|
|
54
55
|
from sky.server.auth import authn
|
|
56
|
+
from sky.server.auth import loopback
|
|
55
57
|
from sky.server.auth import oauth2_proxy
|
|
56
58
|
from sky.server.requests import executor
|
|
57
59
|
from sky.server.requests import payloads
|
|
@@ -191,6 +193,10 @@ class BasicAuthMiddleware(starlette.middleware.base.BaseHTTPMiddleware):
|
|
|
191
193
|
"""Middleware to handle HTTP Basic Auth."""
|
|
192
194
|
|
|
193
195
|
async def dispatch(self, request: fastapi.Request, call_next):
|
|
196
|
+
if managed_job_utils.is_consolidation_mode(
|
|
197
|
+
) and loopback.is_loopback_request(request):
|
|
198
|
+
return await call_next(request)
|
|
199
|
+
|
|
194
200
|
if request.url.path.startswith('/api/health'):
|
|
195
201
|
# Try to set the auth user from basic auth
|
|
196
202
|
_try_set_basic_auth_user(request)
|
sky/setup_files/dependencies.py
CHANGED
|
@@ -48,6 +48,7 @@ install_requires = [
|
|
|
48
48
|
# (https://github.com/yaml/pyyaml/issues/601)
|
|
49
49
|
# <= 3.13 may encounter https://github.com/ultralytics/yolov5/issues/414
|
|
50
50
|
'pyyaml > 3.13, != 5.4.*',
|
|
51
|
+
'ijson',
|
|
51
52
|
'requests',
|
|
52
53
|
# SkyPilot inherits from uvicorn.Server to customize the behavior of
|
|
53
54
|
# uvicorn, so we need to pin uvicorn version to avoid potential break
|
sky/skypilot_config.py
CHANGED
|
@@ -825,7 +825,8 @@ def _compose_cli_config(cli_config: Optional[List[str]]) -> config_utils.Config:
|
|
|
825
825
|
except ValueError as e:
|
|
826
826
|
raise ValueError(f'Invalid config override: {cli_config}. '
|
|
827
827
|
f'Check if config file exists or if the dotlist '
|
|
828
|
-
f'is formatted as: key1=value1,key2=value2'
|
|
828
|
+
f'is formatted as: key1=value1,key2=value2.\n'
|
|
829
|
+
f'Details: {e}') from e
|
|
829
830
|
logger.debug('CLI overrides config syntax check passed.')
|
|
830
831
|
|
|
831
832
|
return parsed_config
|
sky/utils/context.py
CHANGED
|
@@ -205,7 +205,8 @@ class ContextualEnviron(MutableMapping[str, str]):
|
|
|
205
205
|
for key, value in ctx.env_overrides.items():
|
|
206
206
|
if value is None:
|
|
207
207
|
deleted_keys.add(key)
|
|
208
|
-
|
|
208
|
+
else:
|
|
209
|
+
yield key
|
|
209
210
|
for key in self._environ:
|
|
210
211
|
# Deduplicate the keys
|
|
211
212
|
if key not in ctx.env_overrides and key not in deleted_keys:
|
|
@@ -230,13 +231,17 @@ class ContextualEnviron(MutableMapping[str, str]):
|
|
|
230
231
|
def __delitem__(self, key: str) -> None:
|
|
231
232
|
ctx = get()
|
|
232
233
|
if ctx is not None:
|
|
233
|
-
if key in
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
#
|
|
237
|
-
#
|
|
238
|
-
#
|
|
234
|
+
if key in self._environ:
|
|
235
|
+
# If the key is set in the environ of the process, we mark it as
|
|
236
|
+
# deleted in the context by setting the value to None.
|
|
237
|
+
# Note: we must do this even if it was also set in the context,
|
|
238
|
+
# since it could be set in both, and deleting should delete it
|
|
239
|
+
# from both.
|
|
239
240
|
ctx.env_overrides[key] = None
|
|
241
|
+
elif key in ctx.env_overrides:
|
|
242
|
+
# If the key is set in the context, but not the original
|
|
243
|
+
# environ, we can just delete the override.
|
|
244
|
+
del ctx.env_overrides[key]
|
|
240
245
|
else:
|
|
241
246
|
# The key is not set in the context nor the process.
|
|
242
247
|
raise KeyError(key)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: skypilot-nightly
|
|
3
|
-
Version: 1.0.0.
|
|
3
|
+
Version: 1.0.0.dev20251005
|
|
4
4
|
Summary: SkyPilot: Run AI on Any Infra — Unified, Faster, Cheaper.
|
|
5
5
|
Author: SkyPilot Team
|
|
6
6
|
License: Apache 2.0
|
|
@@ -43,6 +43,7 @@ Requires-Dist: packaging
|
|
|
43
43
|
Requires-Dist: psutil
|
|
44
44
|
Requires-Dist: pulp
|
|
45
45
|
Requires-Dist: pyyaml!=5.4.*,>3.13
|
|
46
|
+
Requires-Dist: ijson
|
|
46
47
|
Requires-Dist: requests
|
|
47
48
|
Requires-Dist: uvicorn[standard]<0.36.0,>=0.33.0
|
|
48
49
|
Requires-Dist: fastapi
|
|
@@ -154,51 +155,51 @@ Requires-Dist: protobuf<7.0.0,>=5.26.1; extra == "server"
|
|
|
154
155
|
Requires-Dist: aiosqlite; extra == "server"
|
|
155
156
|
Requires-Dist: greenlet; extra == "server"
|
|
156
157
|
Provides-Extra: all
|
|
157
|
-
Requires-Dist:
|
|
158
|
-
Requires-Dist:
|
|
159
|
-
Requires-Dist:
|
|
160
|
-
Requires-Dist: azure-mgmt-compute>=33.0.0; extra == "all"
|
|
161
|
-
Requires-Dist: aiosqlite; extra == "all"
|
|
162
|
-
Requires-Dist: aiohttp; extra == "all"
|
|
158
|
+
Requires-Dist: azure-identity>=1.19.0; extra == "all"
|
|
159
|
+
Requires-Dist: passlib; extra == "all"
|
|
160
|
+
Requires-Dist: tomli; python_version < "3.11" and extra == "all"
|
|
163
161
|
Requires-Dist: azure-mgmt-network>=27.0.0; extra == "all"
|
|
164
|
-
Requires-Dist:
|
|
165
|
-
Requires-Dist:
|
|
166
|
-
Requires-Dist: botocore>=1.29.10; extra == "all"
|
|
162
|
+
Requires-Dist: python-dateutil; extra == "all"
|
|
163
|
+
Requires-Dist: kubernetes!=32.0.0,>=20.0.0; extra == "all"
|
|
167
164
|
Requires-Dist: nebius>=0.2.47; extra == "all"
|
|
168
|
-
Requires-Dist:
|
|
165
|
+
Requires-Dist: azure-cli>=2.65.0; extra == "all"
|
|
166
|
+
Requires-Dist: pyvmomi==8.0.1.0.2; extra == "all"
|
|
167
|
+
Requires-Dist: websockets; extra == "all"
|
|
168
|
+
Requires-Dist: sqlalchemy_adapter; extra == "all"
|
|
169
|
+
Requires-Dist: vastai-sdk>=0.1.12; extra == "all"
|
|
170
|
+
Requires-Dist: protobuf<7.0.0,>=5.26.1; extra == "all"
|
|
171
|
+
Requires-Dist: google-api-python-client>=2.69.0; extra == "all"
|
|
172
|
+
Requires-Dist: colorama<0.4.5; extra == "all"
|
|
173
|
+
Requires-Dist: ibm-platform-services>=0.48.0; extra == "all"
|
|
169
174
|
Requires-Dist: azure-core>=1.24.0; extra == "all"
|
|
175
|
+
Requires-Dist: msrestazure; extra == "all"
|
|
170
176
|
Requires-Dist: pyopenssl<24.3.0,>=23.2.0; extra == "all"
|
|
171
|
-
Requires-Dist:
|
|
172
|
-
Requires-Dist:
|
|
173
|
-
Requires-Dist: google-api-python-client>=2.69.0; extra == "all"
|
|
174
|
-
Requires-Dist: greenlet; extra == "all"
|
|
177
|
+
Requires-Dist: boto3>=1.26.1; extra == "all"
|
|
178
|
+
Requires-Dist: ibm-cloud-sdk-core; extra == "all"
|
|
175
179
|
Requires-Dist: pyjwt; extra == "all"
|
|
176
|
-
Requires-Dist: casbin; extra == "all"
|
|
177
|
-
Requires-Dist: oci; extra == "all"
|
|
178
180
|
Requires-Dist: ibm-vpc; extra == "all"
|
|
179
|
-
Requires-Dist:
|
|
180
|
-
Requires-Dist: grpcio>=1.63.0; extra == "all"
|
|
181
|
+
Requires-Dist: cudo-compute>=0.1.10; extra == "all"
|
|
181
182
|
Requires-Dist: azure-core>=1.31.0; extra == "all"
|
|
183
|
+
Requires-Dist: oci; extra == "all"
|
|
184
|
+
Requires-Dist: grpcio>=1.63.0; extra == "all"
|
|
185
|
+
Requires-Dist: msgraph-sdk; extra == "all"
|
|
186
|
+
Requires-Dist: botocore>=1.29.10; extra == "all"
|
|
187
|
+
Requires-Dist: azure-mgmt-compute>=33.0.0; extra == "all"
|
|
182
188
|
Requires-Dist: docker; extra == "all"
|
|
183
|
-
Requires-Dist:
|
|
184
|
-
Requires-Dist: azure-storage-blob>=12.23.1; extra == "all"
|
|
185
|
-
Requires-Dist: pyvmomi==8.0.1.0.2; extra == "all"
|
|
186
|
-
Requires-Dist: google-cloud-storage; extra == "all"
|
|
187
|
-
Requires-Dist: awscli>=1.27.10; extra == "all"
|
|
188
|
-
Requires-Dist: kubernetes!=32.0.0,>=20.0.0; extra == "all"
|
|
189
|
-
Requires-Dist: websockets; extra == "all"
|
|
190
|
-
Requires-Dist: ibm-platform-services>=0.48.0; extra == "all"
|
|
191
|
-
Requires-Dist: vastai-sdk>=0.1.12; extra == "all"
|
|
192
|
-
Requires-Dist: azure-identity>=1.19.0; extra == "all"
|
|
193
|
-
Requires-Dist: tomli; python_version < "3.11" and extra == "all"
|
|
194
|
-
Requires-Dist: passlib; extra == "all"
|
|
195
|
-
Requires-Dist: ray[default]>=2.6.1; extra == "all"
|
|
189
|
+
Requires-Dist: greenlet; extra == "all"
|
|
196
190
|
Requires-Dist: runpod>=1.6.1; extra == "all"
|
|
191
|
+
Requires-Dist: ibm-cos-sdk; extra == "all"
|
|
192
|
+
Requires-Dist: pydo>=0.3.0; extra == "all"
|
|
193
|
+
Requires-Dist: google-cloud-storage; extra == "all"
|
|
194
|
+
Requires-Dist: azure-storage-blob>=12.23.1; extra == "all"
|
|
197
195
|
Requires-Dist: ecsapi>=0.2.0; extra == "all"
|
|
198
|
-
Requires-Dist:
|
|
199
|
-
Requires-Dist:
|
|
200
|
-
Requires-Dist:
|
|
201
|
-
Requires-Dist:
|
|
196
|
+
Requires-Dist: casbin; extra == "all"
|
|
197
|
+
Requires-Dist: aiosqlite; extra == "all"
|
|
198
|
+
Requires-Dist: azure-common; extra == "all"
|
|
199
|
+
Requires-Dist: anyio; extra == "all"
|
|
200
|
+
Requires-Dist: ray[default]>=2.6.1; extra == "all"
|
|
201
|
+
Requires-Dist: awscli>=1.27.10; extra == "all"
|
|
202
|
+
Requires-Dist: aiohttp; extra == "all"
|
|
202
203
|
Dynamic: author
|
|
203
204
|
Dynamic: classifier
|
|
204
205
|
Dynamic: description
|
{skypilot_nightly-1.0.0.dev20251003.dist-info → skypilot_nightly-1.0.0.dev20251005.dist-info}/RECORD
RENAMED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
sky/__init__.py,sha256
|
|
1
|
+
sky/__init__.py,sha256=-liJiFNd12nilr-QQbOjiPe58Sk_SyvCzxvFThW-CNw,6713
|
|
2
2
|
sky/admin_policy.py,sha256=XdcJnYqmude-LGGop-8U-FeiJcqtfYsYtIy4rmoCJnM,9799
|
|
3
3
|
sky/authentication.py,sha256=P-bysZXiM4SBEnTcU-UqYoKSTX7Ylyij0DlitlCFBD8,24223
|
|
4
4
|
sky/check.py,sha256=hBDTkiADC3HFfO6brZV819FVWcdOs3aiuhB6x6mY4Q4,29728
|
|
@@ -7,14 +7,14 @@ sky/cloud_stores.py,sha256=Ln5GBpel-sEs7rVx7bBrMkfLwA_bctI05Rox2uoz7Lo,26388
|
|
|
7
7
|
sky/core.py,sha256=VTHly9kJmwtmdiKwkrSrzuJ_8V8t-aI9weADd0SqDWA,58305
|
|
8
8
|
sky/dag.py,sha256=0ZpAEDXuIFo1SP7YJpF9vXiFxpRwqP8od-UXMg95td8,3929
|
|
9
9
|
sky/exceptions.py,sha256=IprWNwo6z5cHE-vTuQ5bMcjCfE2kgwZ3PRuawLPucXY,20466
|
|
10
|
-
sky/execution.py,sha256=
|
|
10
|
+
sky/execution.py,sha256=fC5cX9ooO0aOLwUnIciWRxFH4xvpkVYqssrUaPVRU2M,36247
|
|
11
11
|
sky/global_user_state.py,sha256=-niIwLLe_hQYb3OvWYbkGLtyrvoYx16HMVeFR6IYnZs,103080
|
|
12
12
|
sky/models.py,sha256=ZKisLai7vqUr6_BPev6Oziu5N23WLzTh9nRtHSlRchw,3999
|
|
13
13
|
sky/optimizer.py,sha256=iR57bL_8BeG6bh1sH3J6n6i65EBFjmyftezYM4nnDZA,64150
|
|
14
14
|
sky/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
15
15
|
sky/resources.py,sha256=jojeuFmMEi-_7MJtR1i8SoEoUG89FrFHoZk1NQx7DzA,107795
|
|
16
16
|
sky/sky_logging.py,sha256=BQtgSnt-4TLeMLLoxhk9jE7JCnXGko1cTim9ouuefAY,9755
|
|
17
|
-
sky/skypilot_config.py,sha256=
|
|
17
|
+
sky/skypilot_config.py,sha256=NC9uunXjiezV7hKj7fH4mz79A7H3tRkZe5Jda6cvXOw,37638
|
|
18
18
|
sky/task.py,sha256=KcrfY3Rp1q3LzfMYJSPbRXpxJ7Ol9E9UBq56EixOQfQ,78707
|
|
19
19
|
sky/adaptors/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
20
20
|
sky/adaptors/aws.py,sha256=4caUTO5nxZQyDVPyQdoPljaF-Lz_Fa6NEnu3FfmLZd4,8633
|
|
@@ -38,7 +38,7 @@ sky/adaptors/vsphere.py,sha256=zJP9SeObEoLrpgHW2VHvZE48EhgVf8GfAEIwBeaDMfM,2129
|
|
|
38
38
|
sky/backends/__init__.py,sha256=l1xXpkzPFMma0ZkT4GzVMu7uvgS3AsECg6zLc0S3JHQ,702
|
|
39
39
|
sky/backends/backend.py,sha256=6bvW1K1hVgxWiD4B8NiBD8OJ9ihfEdhyY5p60-3aQf4,8433
|
|
40
40
|
sky/backends/backend_utils.py,sha256=qbewVFNHQlinc4Wvn6ewocv3nash0X6RuDPOgyLXvFY,177499
|
|
41
|
-
sky/backends/cloud_vm_ray_backend.py,sha256=
|
|
41
|
+
sky/backends/cloud_vm_ray_backend.py,sha256=ljDqA_gaLJbRGn-5IVG8ZHwoRVf18usnNZQ60H8abXY,308039
|
|
42
42
|
sky/backends/docker_utils.py,sha256=_EhM6NStZDAwcegppQqExaB5iuSn1qL4xFFUqXAz2Uk,8392
|
|
43
43
|
sky/backends/local_docker_backend.py,sha256=EyLYwJSihhOEOwpgzXVtykjByEJuZOrqEr9N0cta3k4,17563
|
|
44
44
|
sky/backends/wheel_utils.py,sha256=DE71Muq5qLRhGpCVg1Rb6YOI7S_BzT8Hak27Pz8L4yw,12486
|
|
@@ -87,7 +87,7 @@ sky/client/sdk.py,sha256=IwdheaffnHmmjEDzvqhrDuH8jPBlCYMrBjLYa4RL2O0,107259
|
|
|
87
87
|
sky/client/sdk_async.py,sha256=8G_E9Dn4d80rV-wxRH4zZUXZGAm6rLw3C8PI07fXwwQ,31106
|
|
88
88
|
sky/client/service_account_auth.py,sha256=5jXk0G6ufuW-SHCO7BEHQeTO0_2a8KfFmA63auXFRj4,1529
|
|
89
89
|
sky/client/cli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
90
|
-
sky/client/cli/command.py,sha256=
|
|
90
|
+
sky/client/cli/command.py,sha256=d5KNHUG6ej8GwQb89WqiRi6T61FXdI6Rt-ovA-Z3CI0,250301
|
|
91
91
|
sky/client/cli/deprecation_utils.py,sha256=H_d5UyF2CekEoThduAzt5cihBO8hwKYMu0-Wqfbjv5E,3370
|
|
92
92
|
sky/client/cli/flags.py,sha256=lLXHooU4HEslbHJuGAiCrKYkJZx99hAKaJbstw7s1bc,12136
|
|
93
93
|
sky/client/cli/table_utils.py,sha256=HT_y__9_tZLKJ0aJu-hh67cu3NXfWDoiHir5fTmWaDw,10156
|
|
@@ -119,19 +119,19 @@ sky/clouds/utils/azure_utils.py,sha256=NToRBnhEyuUvb-nBnsKTxjhOBRkMcrelL8LK4w6s4
|
|
|
119
119
|
sky/clouds/utils/gcp_utils.py,sha256=09MF4Vx0EW7S-GXGpyxpl2aQlHrqeu9ioV0nyionAyk,9890
|
|
120
120
|
sky/clouds/utils/oci_utils.py,sha256=TFqAqRLggg4Z0bhxrrq8nouSSomZy-ub1frHXEkud2M,7302
|
|
121
121
|
sky/clouds/utils/scp_utils.py,sha256=VGuccVO5uFGr8-yolWSoYrgr11z6cIeDBGcqkBzAyOs,18409
|
|
122
|
-
sky/dashboard/out/404.html,sha256=
|
|
123
|
-
sky/dashboard/out/clusters.html,sha256=
|
|
124
|
-
sky/dashboard/out/config.html,sha256=
|
|
122
|
+
sky/dashboard/out/404.html,sha256=MycaUpVzKWkF4hftENs0R6mfYT_QLtvxVe9Niuh7AN8,1423
|
|
123
|
+
sky/dashboard/out/clusters.html,sha256=6zMTQmyFuCc6AJoNzixjncpN5hg-EzSmL4ZOIGLYBNw,1418
|
|
124
|
+
sky/dashboard/out/config.html,sha256=6XSKZINuel_DKOXYnP3397xBi7XaDctW3YtXK_aeDIk,1414
|
|
125
125
|
sky/dashboard/out/favicon.ico,sha256=XilUZZglAl_1zRsg85QsbQgmQAzGPQjcUIJ-A3AzYn8,93590
|
|
126
|
-
sky/dashboard/out/index.html,sha256=
|
|
127
|
-
sky/dashboard/out/infra.html,sha256=
|
|
128
|
-
sky/dashboard/out/jobs.html,sha256=
|
|
126
|
+
sky/dashboard/out/index.html,sha256=tT0ailNbGjYLxR-It6X-MNY_fqgzZacvTfUzJxxw1fQ,1407
|
|
127
|
+
sky/dashboard/out/infra.html,sha256=JhI1PPpj5hNpRLec5qK_2irsGjUnsrldr_8Jxaje5Ew,1412
|
|
128
|
+
sky/dashboard/out/jobs.html,sha256=oKSGTBOuTY2WDnGhUcCj8DTC7hchlbR0sRl_gMdhFx0,1410
|
|
129
129
|
sky/dashboard/out/skypilot.svg,sha256=c0iRtlfLlaUm2p0rG9NFmo5FN0Qhf3pq5Xph-AeMPJw,5064
|
|
130
|
-
sky/dashboard/out/users.html,sha256=
|
|
131
|
-
sky/dashboard/out/volumes.html,sha256=
|
|
132
|
-
sky/dashboard/out/workspaces.html,sha256=
|
|
133
|
-
sky/dashboard/out/_next/static/
|
|
134
|
-
sky/dashboard/out/_next/static/
|
|
130
|
+
sky/dashboard/out/users.html,sha256=UEfuuA3wBXGeYREAgsGMYrGotoCAEDSAm1NON0iUHmM,1412
|
|
131
|
+
sky/dashboard/out/volumes.html,sha256=HZzI24jOAnJHC9VYeWtsn_xUPssHqQLsd91RvZ1Y_IM,1416
|
|
132
|
+
sky/dashboard/out/workspaces.html,sha256=cKipIpcI-RecCgNlJ_eOMrymFG8bRgFKHuDYwDofakE,1422
|
|
133
|
+
sky/dashboard/out/_next/static/Vg53Kzbf7u4o6fYPeOHMe/_buildManifest.js,sha256=fU6juI23eV2o12c76krAvb_jtylYA6BZxZI6dTzZ_Es,2428
|
|
134
|
+
sky/dashboard/out/_next/static/Vg53Kzbf7u4o6fYPeOHMe/_ssgManifest.js,sha256=Z49s4suAsf5y_GfnQSvm4qtq2ggxEbZPfEDTXjy6XgA,80
|
|
135
135
|
sky/dashboard/out/_next/static/chunks/1121-d0782b9251f0fcd3.js,sha256=jIvnDxaTleAz3HdZK9-RScSB0ZMg8-D63KQmn8avaHI,8883
|
|
136
136
|
sky/dashboard/out/_next/static/chunks/1141-159df2d4c441a9d1.js,sha256=kdYh_Ek9hdib5emC7Iezojh3qASBnOIUHH5zX_ScR0U,17355
|
|
137
137
|
sky/dashboard/out/_next/static/chunks/1272-1ef0bf0237faccdb.js,sha256=VJ6y-Z6Eg2T93hQIRfWAbjAkQ7nQhglmIaVbEpKSILY,38451
|
|
@@ -186,14 +186,14 @@ sky/dashboard/out/_next/static/chunks/pages/jobs/pools/[pool]-509b2977a6373bf6.j
|
|
|
186
186
|
sky/dashboard/out/_next/static/chunks/pages/workspace/new-3f88a1c7e86a3f86.js,sha256=83s5N5CZwIaRcmYMfqn2we60n2VRmgFw6Tbx18b8-e0,762
|
|
187
187
|
sky/dashboard/out/_next/static/chunks/pages/workspaces/[name]-af76bb06dbb3954f.js,sha256=cGCpDszMI6ckUHVelwAh9ZVk1erfz_UXSLz9GCqGUAE,1495
|
|
188
188
|
sky/dashboard/out/_next/static/css/4614e06482d7309e.css,sha256=nk6GriyGVd1aGXrLd7BcMibnN4v0z-Q_mXGxrHFWqrE,56126
|
|
189
|
-
sky/dashboard/out/clusters/[cluster].html,sha256=
|
|
190
|
-
sky/dashboard/out/clusters/[cluster]/[job].html,sha256=
|
|
191
|
-
sky/dashboard/out/infra/[context].html,sha256=
|
|
192
|
-
sky/dashboard/out/jobs/[job].html,sha256=
|
|
193
|
-
sky/dashboard/out/jobs/pools/[pool].html,sha256=
|
|
189
|
+
sky/dashboard/out/clusters/[cluster].html,sha256=NpNuBtgJzf5t-XuL-CqKnu_uAmzAFX6Aq3xPZu5x4Ew,2936
|
|
190
|
+
sky/dashboard/out/clusters/[cluster]/[job].html,sha256=IEY8xFajkMWsQBxQIj5h8e7gBPOd-CXwpzgH5irP-GU,2073
|
|
191
|
+
sky/dashboard/out/infra/[context].html,sha256=qIRANL-oN-cynSDyQ2hLzMOhtbXIeSnzBKDxvBmk_Ck,1436
|
|
192
|
+
sky/dashboard/out/jobs/[job].html,sha256=zDYKANV8qsVsnL0ZzCEFoxAsJ-KHzkNeKhff95zCTGs,2304
|
|
193
|
+
sky/dashboard/out/jobs/pools/[pool].html,sha256=a7c2LtIOA29odiB-vyTelYJeatsrk6MXq_Jn7I-9i_I,2142
|
|
194
194
|
sky/dashboard/out/videos/cursor-small.mp4,sha256=8tRdp1vjawOrXUar1cfjOc-nkaKmcwCPZx_LO0XlCvQ,203285
|
|
195
|
-
sky/dashboard/out/workspace/new.html,sha256=
|
|
196
|
-
sky/dashboard/out/workspaces/[name].html,sha256=
|
|
195
|
+
sky/dashboard/out/workspace/new.html,sha256=3WhpzNmC95ugk2TtHroV5mpbAYTi_TtjAlvE9txvsUs,1428
|
|
196
|
+
sky/dashboard/out/workspaces/[name].html,sha256=WUjHZgv1Okt2NRgfhDSll6FcyY20MtYrXr8WX4ybWhE,2759
|
|
197
197
|
sky/data/__init__.py,sha256=Nhaf1NURisXpZuwWANa2IuCyppIuc720FRwqSE2oEwY,184
|
|
198
198
|
sky/data/data_transfer.py,sha256=N8b0CQebDuHieXjvEVwlYmK6DbQxUGG1RQJEyTbh3dU,12040
|
|
199
199
|
sky/data/data_utils.py,sha256=AjEA_JRjo9NBMlv-Lq5iV4lBED_YZ1VqBR9pG6fGVWE,35179
|
|
@@ -203,7 +203,7 @@ sky/data/storage_utils.py,sha256=bqCE7WQVOpFMxqVRkxee4oLn-iImh4ZL8qB5IicXh0w,142
|
|
|
203
203
|
sky/jobs/__init__.py,sha256=BiABNdlab7xZDOv4C34kc1XuxG6C_Ip7Q96mT2iCnIg,1686
|
|
204
204
|
sky/jobs/constants.py,sha256=74kv_hCMbzDCYIXqa8Tc2BmECweNZIO2s5mP0IDunmg,3500
|
|
205
205
|
sky/jobs/controller.py,sha256=SymwS24D0nLuVJ_yBgF6055TQptglDiOdssCPNWHy-g,57020
|
|
206
|
-
sky/jobs/recovery_strategy.py,sha256=
|
|
206
|
+
sky/jobs/recovery_strategy.py,sha256=beCgK7eiqs4RUhMFrRfTsE18OsG0f_W7ds7kzhvQSUI,39398
|
|
207
207
|
sky/jobs/scheduler.py,sha256=rUait5vQoIxAMuxWDRkR6DtFpmmVqQHxECHyhhrY9HI,16564
|
|
208
208
|
sky/jobs/state.py,sha256=GarWqeMip2dCHXDLPCTDpXnfrS5kiOanJ3wi8gpo6MA,85229
|
|
209
209
|
sky/jobs/utils.py,sha256=qdwW8KomRaZS3d4FjU7gMkRULfcDT64BbpzUKap-tQs,94601
|
|
@@ -268,7 +268,7 @@ sky/provision/kubernetes/constants.py,sha256=vZJQsAVjAgwsOskB48tIFSXtNw7IFnJOQE_
|
|
|
268
268
|
sky/provision/kubernetes/instance.py,sha256=Ii-aeRoXKrscmeGfS_AZcMaaA74vJ2aKvD1rBaTowIg,76175
|
|
269
269
|
sky/provision/kubernetes/network.py,sha256=Dgj8u7IQBHKHt-mSDhYzue1wfDk96FR_8fO89TwuZ2E,12846
|
|
270
270
|
sky/provision/kubernetes/network_utils.py,sha256=qFiACDq4S1WKMyVbxhGax-K2SJM-4viC8CyEzwvXt6c,11480
|
|
271
|
-
sky/provision/kubernetes/utils.py,sha256=
|
|
271
|
+
sky/provision/kubernetes/utils.py,sha256=4MC-PlpezlngMOxS3JXkwP7vd1rn8rSsnOC25rbSTOk,151930
|
|
272
272
|
sky/provision/kubernetes/volume.py,sha256=b5mozvUCw9rsGxiUS9LxR-MyELK-EQHYglJkGTFNobY,11473
|
|
273
273
|
sky/provision/kubernetes/manifests/fusermount-server-daemonset.yaml,sha256=5oDGZUsDpO1B9E9JZptkakdIy7LWVR_CqHFFZpMulJE,1270
|
|
274
274
|
sky/provision/lambda_cloud/__init__.py,sha256=6EEvSgtUeEiup9ivIFevHmgv0GqleroO2X0K7TRa2nE,612
|
|
@@ -329,7 +329,7 @@ sky/provision/vsphere/common/vapiconnect.py,sha256=piU29ZfdYCJQMV5n-5J0EQ8G56AWO
|
|
|
329
329
|
sky/provision/vsphere/common/vim_utils.py,sha256=TjDgxIzV5Iuc5j1aFNL3NpaOwS0KKXhEUEwq7dzQT-s,17849
|
|
330
330
|
sky/schemas/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
331
331
|
sky/schemas/api/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
332
|
-
sky/schemas/api/responses.py,sha256=
|
|
332
|
+
sky/schemas/api/responses.py,sha256=pg6QMDBj1RjmWorW4eF5DOVD10NwtZdJfu6JOt2BhEI,6812
|
|
333
333
|
sky/schemas/db/README,sha256=M93NBw29groxXu-Gy7sgqSyxpppXpRBbXxEXANLhVCo,122
|
|
334
334
|
sky/schemas/db/env.py,sha256=T-2a00Z9RcaIqcMu90R-RNA_lCutsWBRopDy4LQFnoM,2918
|
|
335
335
|
sky/schemas/db/script.py.mako,sha256=04kgeBtNMa4cCnG8CfQcKt6P6rnloIfj8wy0u_DBydM,704
|
|
@@ -387,14 +387,15 @@ sky/server/constants.py,sha256=9hLNn1FsBegnMxoQzYfgHIVPIqon7KufzG4G9yqhS-o,2456
|
|
|
387
387
|
sky/server/daemons.py,sha256=XQdqRMVyxyqS9fY2HLqW_cxVR6qgqoQ7irPvRYWvG7E,9092
|
|
388
388
|
sky/server/metrics.py,sha256=Aa7ZIPGpK3IZXicliX32_EIjY6ejcR_kr8C1p1yvuC8,5696
|
|
389
389
|
sky/server/rest.py,sha256=295lCvmAJhGTaal2P00ab6z0fxGj4KfxdI94E-2AhQA,14414
|
|
390
|
-
sky/server/server.py,sha256=
|
|
390
|
+
sky/server/server.py,sha256=t99AzU0BWFGoOsDjh2dWVvi_eR3wzEhVhjHF_ufHp-8,83127
|
|
391
391
|
sky/server/state.py,sha256=YbVOMJ1JipQQv17gLIGyiGN7MKfnP83qlUa5MB1z0Yk,747
|
|
392
392
|
sky/server/stream_utils.py,sha256=b8gdWTsvxTnm779mMSdgb1LR_giVP9peKJIn8KIPJKU,10673
|
|
393
393
|
sky/server/uvicorn.py,sha256=lJROnpJqoZr59zGwYa_pUniV7rEwmZn0PV4t-YYY-yo,11832
|
|
394
394
|
sky/server/versions.py,sha256=3atZzUa7y1XeKNcrfVxKWAo_5ZyCOnbY7DKpIqed7Do,10011
|
|
395
395
|
sky/server/auth/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
396
396
|
sky/server/auth/authn.py,sha256=zvabLsEAf9Ql6AbXJuWZ54uaiOr1mwFGGvQn84v66H4,2037
|
|
397
|
-
sky/server/auth/
|
|
397
|
+
sky/server/auth/loopback.py,sha256=Vk8iaatXBrXJLBsng9StK9kgwcJnMFqbc35exX5Aikc,1069
|
|
398
|
+
sky/server/auth/oauth2_proxy.py,sha256=4iRhSfJuvjb4gDXk3xNIHFrgTPLkZo61znX5YRRkOC0,9374
|
|
398
399
|
sky/server/html/log.html,sha256=TSGZktua9Ysl_ysg3w60rjxAxhH61AJnsYDHdtqrjmI,6929
|
|
399
400
|
sky/server/html/token_page.html,sha256=eUndS5u1foL9vaWGPRTLMt7lCzD1g0wYJ2v_EeeFzlc,7046
|
|
400
401
|
sky/server/requests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -412,7 +413,7 @@ sky/server/requests/serializers/decoders.py,sha256=4V3muIPH_QU_CfGyoHD99IXuJbKZK
|
|
|
412
413
|
sky/server/requests/serializers/encoders.py,sha256=kEGUqUDx5mpc2DBxhzcGrSP325R1aMPg5NXUVScXfUs,8425
|
|
413
414
|
sky/setup_files/MANIFEST.in,sha256=4gbgHHwSdP6BbMJv5XOt-2K6wUVWF_T9CGsdESvh918,776
|
|
414
415
|
sky/setup_files/alembic.ini,sha256=854_UKvCaFmZ8vI16tSHbGgP9IMFQ42Td6c9Zmn2Oxs,5079
|
|
415
|
-
sky/setup_files/dependencies.py,sha256=
|
|
416
|
+
sky/setup_files/dependencies.py,sha256=cmVNmYvorzuw2yyOeWQe7Sco7JDky6hYbcKgbKQbosU,8901
|
|
416
417
|
sky/setup_files/setup.py,sha256=4M8u9Y4wwmFCJk-EfsnMWtpNq7ynzqbjdVTKW3w5GXA,7820
|
|
417
418
|
sky/skylet/LICENSE,sha256=BnFrJSvUFpMUoH5mOpWnEvaC5R6Uux8W6WXgrte8iYg,12381
|
|
418
419
|
sky/skylet/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -499,7 +500,7 @@ sky/utils/command_runner.pyi,sha256=FE8lFyxsh6528uSeSS38yk9Yu9HSJ8LFJT0ylMWNR6k,
|
|
|
499
500
|
sky/utils/common.py,sha256=yJc110y8rwcBIKEJgb8kUD4e1OeolFEVtonwmqtAxCM,2729
|
|
500
501
|
sky/utils/common_utils.py,sha256=5_dNGrFtvylmi38HTMLSgxHLbeBgNCr9UH8BDSUbQeI,39053
|
|
501
502
|
sky/utils/config_utils.py,sha256=agfDWJi79DH5XKD_GBvUwhRwmB0-ZkYbKCjcEgV6gP4,13861
|
|
502
|
-
sky/utils/context.py,sha256=
|
|
503
|
+
sky/utils/context.py,sha256=N_kxD3NXBGRqzb8QsSkrGLvqBt_dD7bIkyerGIOJEcE,13394
|
|
503
504
|
sky/utils/context_utils.py,sha256=mnJvU65Z-GYZ3G_m-bRGZ7vVExt1MbMwVLwUCfR1Z1Y,7035
|
|
504
505
|
sky/utils/control_master_utils.py,sha256=iD4M0onjYOdZ2RuxjwMBl4KhafHXJzuHjvqlBUnu-VE,1450
|
|
505
506
|
sky/utils/controller_utils.py,sha256=Ci8kA00qvBsjeKxTyFcxPhamf1e7F9S0LuggBA6to0o,59951
|
|
@@ -564,9 +565,9 @@ sky/workspaces/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
|
564
565
|
sky/workspaces/core.py,sha256=kRrdh-8MhX1953pML1B_DoStnDuNrsmHcZlnWoAxVo0,27218
|
|
565
566
|
sky/workspaces/server.py,sha256=Box45DS54xXGHy7I3tGKGy-JP0a8G_z6IhfvGlEXtsA,3439
|
|
566
567
|
sky/workspaces/utils.py,sha256=IIAiFoS6sdb2t0X5YoX9AietpTanZUQNTK8cePun-sY,2143
|
|
567
|
-
skypilot_nightly-1.0.0.
|
|
568
|
-
skypilot_nightly-1.0.0.
|
|
569
|
-
skypilot_nightly-1.0.0.
|
|
570
|
-
skypilot_nightly-1.0.0.
|
|
571
|
-
skypilot_nightly-1.0.0.
|
|
572
|
-
skypilot_nightly-1.0.0.
|
|
568
|
+
skypilot_nightly-1.0.0.dev20251005.dist-info/licenses/LICENSE,sha256=emRJAvE7ngL6x0RhQvlns5wJzGI3NEQ_WMjNmd9TZc4,12170
|
|
569
|
+
skypilot_nightly-1.0.0.dev20251005.dist-info/METADATA,sha256=Hitgcm_5Fb6rO2jc-v4teZIATZ6LC8PSkMn_WFth7bo,20454
|
|
570
|
+
skypilot_nightly-1.0.0.dev20251005.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
571
|
+
skypilot_nightly-1.0.0.dev20251005.dist-info/entry_points.txt,sha256=StA6HYpuHj-Y61L2Ze-hK2IcLWgLZcML5gJu8cs6nU4,36
|
|
572
|
+
skypilot_nightly-1.0.0.dev20251005.dist-info/top_level.txt,sha256=qA8QuiNNb6Y1OF-pCUtPEr6sLEwy2xJX06Bd_CrtrHY,4
|
|
573
|
+
skypilot_nightly-1.0.0.dev20251005.dist-info/RECORD,,
|
/sky/dashboard/out/_next/static/{Haazh5IQz6F8Wyiqxcaj8 → Vg53Kzbf7u4o6fYPeOHMe}/_buildManifest.js
RENAMED
|
File without changes
|
/sky/dashboard/out/_next/static/{Haazh5IQz6F8Wyiqxcaj8 → Vg53Kzbf7u4o6fYPeOHMe}/_ssgManifest.js
RENAMED
|
File without changes
|
{skypilot_nightly-1.0.0.dev20251003.dist-info → skypilot_nightly-1.0.0.dev20251005.dist-info}/WHEEL
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|