skypilot-nightly 1.0.0.dev20250708__py3-none-any.whl → 1.0.0.dev20250709__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- sky/__init__.py +2 -2
- sky/clouds/kubernetes.py +2 -2
- 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.html +1 -1
- sky/dashboard/out/users.html +1 -1
- sky/dashboard/out/volumes.html +1 -1
- sky/dashboard/out/workspace/new.html +1 -1
- sky/dashboard/out/workspaces/[name].html +1 -1
- sky/dashboard/out/workspaces.html +1 -1
- sky/global_user_state.py +6 -3
- sky/jobs/state.py +6 -3
- sky/provision/kubernetes/utils.py +3 -0
- sky/server/metrics.py +2 -3
- sky/server/requests/executor.py +2 -5
- sky/server/requests/payloads.py +1 -0
- sky/server/requests/requests.py +94 -4
- sky/server/server.py +19 -5
- sky/server/uvicorn.py +4 -1
- sky/utils/schemas.py +3 -0
- {skypilot_nightly-1.0.0.dev20250708.dist-info → skypilot_nightly-1.0.0.dev20250709.dist-info}/METADATA +1 -1
- {skypilot_nightly-1.0.0.dev20250708.dist-info → skypilot_nightly-1.0.0.dev20250709.dist-info}/RECORD +35 -35
- /sky/dashboard/out/_next/static/{O3wBEOmvYEVEqZxAP7Czn → EqELoF4IXcALfWVihInou}/_buildManifest.js +0 -0
- /sky/dashboard/out/_next/static/{O3wBEOmvYEVEqZxAP7Czn → EqELoF4IXcALfWVihInou}/_ssgManifest.js +0 -0
- {skypilot_nightly-1.0.0.dev20250708.dist-info → skypilot_nightly-1.0.0.dev20250709.dist-info}/WHEEL +0 -0
- {skypilot_nightly-1.0.0.dev20250708.dist-info → skypilot_nightly-1.0.0.dev20250709.dist-info}/entry_points.txt +0 -0
- {skypilot_nightly-1.0.0.dev20250708.dist-info → skypilot_nightly-1.0.0.dev20250709.dist-info}/licenses/LICENSE +0 -0
- {skypilot_nightly-1.0.0.dev20250708.dist-info → skypilot_nightly-1.0.0.dev20250709.dist-info}/top_level.txt +0 -0
sky/__init__.py
CHANGED
@@ -5,7 +5,7 @@ from typing import Optional
|
|
5
5
|
import urllib.request
|
6
6
|
|
7
7
|
# Replaced with the current commit when building the wheels.
|
8
|
-
_SKYPILOT_COMMIT_SHA = '
|
8
|
+
_SKYPILOT_COMMIT_SHA = '049a61037fec870c541621cb37b03783e046d44b'
|
9
9
|
|
10
10
|
|
11
11
|
def _get_git_commit():
|
@@ -35,7 +35,7 @@ def _get_git_commit():
|
|
35
35
|
|
36
36
|
|
37
37
|
__commit__ = _get_git_commit()
|
38
|
-
__version__ = '1.0.0.
|
38
|
+
__version__ = '1.0.0.dev20250709'
|
39
39
|
__root_dir__ = os.path.dirname(os.path.abspath(__file__))
|
40
40
|
|
41
41
|
|
sky/clouds/kubernetes.py
CHANGED
@@ -435,9 +435,9 @@ class Kubernetes(clouds.Cloud):
|
|
435
435
|
max_timeout = 60 # Cap at 1 minute
|
436
436
|
if enable_flex_start:
|
437
437
|
# Flex start takes longer to provision.
|
438
|
-
base_timeout =
|
438
|
+
base_timeout = 1200
|
439
439
|
per_node_timeout = 10
|
440
|
-
max_timeout =
|
440
|
+
max_timeout = 2400
|
441
441
|
elif volume_mounts is not None:
|
442
442
|
for volume_mount in volume_mounts:
|
443
443
|
if (volume_mount.volume_config.type ==
|
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/0da6afe66176678a.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/0da6afe66176678a.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-9a81ea998672c303.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-efc06c2733009cd3.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-c0a4f1ea606d48d2.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-a37b06ddb64521fd.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_error-c72a1f77a3c0be1b.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/0da6afe66176678a.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/0da6afe66176678a.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-9a81ea998672c303.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-efc06c2733009cd3.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-c0a4f1ea606d48d2.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-a37b06ddb64521fd.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_error-c72a1f77a3c0be1b.js" defer=""></script><script src="/dashboard/_next/static/EqELoF4IXcALfWVihInou/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/EqELoF4IXcALfWVihInou/_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":"EqELoF4IXcALfWVihInou","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/0da6afe66176678a.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/0da6afe66176678a.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-9a81ea998672c303.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-efc06c2733009cd3.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-c0a4f1ea606d48d2.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-a37b06ddb64521fd.js" defer=""></script><script src="/dashboard/_next/static/chunks/616-162f3033ffcd3d31.js" defer=""></script><script src="/dashboard/_next/static/chunks/5230-df791914b54d91d9.js" defer=""></script><script src="/dashboard/_next/static/chunks/5739-5ea3ffa10fc884f2.js" defer=""></script><script src="/dashboard/_next/static/chunks/1664-d65361e92b85e786.js" defer=""></script><script src="/dashboard/_next/static/chunks/804-9f5e98ce84d46bdd.js" defer=""></script><script src="/dashboard/_next/static/chunks/6989-6ff4e45dfb49d11d.js" defer=""></script><script src="/dashboard/_next/static/chunks/3698-52ad1ca228faa776.js" defer=""></script><script src="/dashboard/_next/static/chunks/9470-21d059a1dfa03f61.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/clusters/%5Bcluster%5D/%5Bjob%5D-8135aba0712bda37.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/0da6afe66176678a.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/0da6afe66176678a.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-9a81ea998672c303.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-efc06c2733009cd3.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-c0a4f1ea606d48d2.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-a37b06ddb64521fd.js" defer=""></script><script src="/dashboard/_next/static/chunks/616-162f3033ffcd3d31.js" defer=""></script><script src="/dashboard/_next/static/chunks/5230-df791914b54d91d9.js" defer=""></script><script src="/dashboard/_next/static/chunks/5739-5ea3ffa10fc884f2.js" defer=""></script><script src="/dashboard/_next/static/chunks/1664-d65361e92b85e786.js" defer=""></script><script src="/dashboard/_next/static/chunks/804-9f5e98ce84d46bdd.js" defer=""></script><script src="/dashboard/_next/static/chunks/6989-6ff4e45dfb49d11d.js" defer=""></script><script src="/dashboard/_next/static/chunks/3698-52ad1ca228faa776.js" defer=""></script><script src="/dashboard/_next/static/chunks/9470-21d059a1dfa03f61.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/clusters/%5Bcluster%5D/%5Bjob%5D-8135aba0712bda37.js" defer=""></script><script src="/dashboard/_next/static/EqELoF4IXcALfWVihInou/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/EqELoF4IXcALfWVihInou/_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":"EqELoF4IXcALfWVihInou","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/0da6afe66176678a.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/0da6afe66176678a.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-9a81ea998672c303.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-efc06c2733009cd3.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-c0a4f1ea606d48d2.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-a37b06ddb64521fd.js" defer=""></script><script src="/dashboard/_next/static/chunks/616-162f3033ffcd3d31.js" defer=""></script><script src="/dashboard/_next/static/chunks/5230-df791914b54d91d9.js" defer=""></script><script src="/dashboard/_next/static/chunks/5739-5ea3ffa10fc884f2.js" defer=""></script><script src="/dashboard/_next/static/chunks/1664-d65361e92b85e786.js" defer=""></script><script src="/dashboard/_next/static/chunks/804-9f5e98ce84d46bdd.js" defer=""></script><script src="/dashboard/_next/static/chunks/1272-1ef0bf0237faccdb.js" defer=""></script><script src="/dashboard/_next/static/chunks/3947-b059261d6fa88a1f.js" defer=""></script><script src="/dashboard/_next/static/chunks/6989-6ff4e45dfb49d11d.js" defer=""></script><script src="/dashboard/_next/static/chunks/3698-52ad1ca228faa776.js" defer=""></script><script src="/dashboard/_next/static/chunks/9470-21d059a1dfa03f61.js" defer=""></script><script src="/dashboard/_next/static/chunks/6990-d0dc765474fa0eca.js" defer=""></script><script src="/dashboard/_next/static/chunks/8969-909d53833da080cb.js" defer=""></script><script src="/dashboard/_next/static/chunks/1043-1b39779691bb4030.js" defer=""></script><script src="/dashboard/_next/static/chunks/6601-fcfad0ddf92ec7ab.js" defer=""></script><script src="/dashboard/_next/static/chunks/938-044ad21de8b4626b.js" defer=""></script><script src="/dashboard/_next/static/chunks/1871-80dea41717729fa5.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/clusters/%5Bcluster%5D-1159f362b960e2b8.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/0da6afe66176678a.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/0da6afe66176678a.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-9a81ea998672c303.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-efc06c2733009cd3.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-c0a4f1ea606d48d2.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-a37b06ddb64521fd.js" defer=""></script><script src="/dashboard/_next/static/chunks/616-162f3033ffcd3d31.js" defer=""></script><script src="/dashboard/_next/static/chunks/5230-df791914b54d91d9.js" defer=""></script><script src="/dashboard/_next/static/chunks/5739-5ea3ffa10fc884f2.js" defer=""></script><script src="/dashboard/_next/static/chunks/1664-d65361e92b85e786.js" defer=""></script><script src="/dashboard/_next/static/chunks/804-9f5e98ce84d46bdd.js" defer=""></script><script src="/dashboard/_next/static/chunks/1272-1ef0bf0237faccdb.js" defer=""></script><script src="/dashboard/_next/static/chunks/3947-b059261d6fa88a1f.js" defer=""></script><script src="/dashboard/_next/static/chunks/6989-6ff4e45dfb49d11d.js" defer=""></script><script src="/dashboard/_next/static/chunks/3698-52ad1ca228faa776.js" defer=""></script><script src="/dashboard/_next/static/chunks/9470-21d059a1dfa03f61.js" defer=""></script><script src="/dashboard/_next/static/chunks/6990-d0dc765474fa0eca.js" defer=""></script><script src="/dashboard/_next/static/chunks/8969-909d53833da080cb.js" defer=""></script><script src="/dashboard/_next/static/chunks/1043-1b39779691bb4030.js" defer=""></script><script src="/dashboard/_next/static/chunks/6601-fcfad0ddf92ec7ab.js" defer=""></script><script src="/dashboard/_next/static/chunks/938-044ad21de8b4626b.js" defer=""></script><script src="/dashboard/_next/static/chunks/1871-80dea41717729fa5.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/clusters/%5Bcluster%5D-1159f362b960e2b8.js" defer=""></script><script src="/dashboard/_next/static/EqELoF4IXcALfWVihInou/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/EqELoF4IXcALfWVihInou/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/clusters/[cluster]","query":{},"buildId":"EqELoF4IXcALfWVihInou","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/0da6afe66176678a.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/0da6afe66176678a.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-9a81ea998672c303.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-efc06c2733009cd3.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-c0a4f1ea606d48d2.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-a37b06ddb64521fd.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/clusters-9744c271a1642f76.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/0da6afe66176678a.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/0da6afe66176678a.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-9a81ea998672c303.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-efc06c2733009cd3.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-c0a4f1ea606d48d2.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-a37b06ddb64521fd.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/clusters-9744c271a1642f76.js" defer=""></script><script src="/dashboard/_next/static/EqELoF4IXcALfWVihInou/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/EqELoF4IXcALfWVihInou/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/clusters","query":{},"buildId":"EqELoF4IXcALfWVihInou","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/0da6afe66176678a.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/0da6afe66176678a.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-9a81ea998672c303.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-efc06c2733009cd3.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-c0a4f1ea606d48d2.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-a37b06ddb64521fd.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/config-a2673b256b6d416f.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/0da6afe66176678a.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/0da6afe66176678a.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-9a81ea998672c303.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-efc06c2733009cd3.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-c0a4f1ea606d48d2.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-a37b06ddb64521fd.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/config-a2673b256b6d416f.js" defer=""></script><script src="/dashboard/_next/static/EqELoF4IXcALfWVihInou/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/EqELoF4IXcALfWVihInou/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/config","query":{},"buildId":"EqELoF4IXcALfWVihInou","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/0da6afe66176678a.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/0da6afe66176678a.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-9a81ea998672c303.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-efc06c2733009cd3.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-c0a4f1ea606d48d2.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-a37b06ddb64521fd.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/index-927ddeebe57a8ac3.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/0da6afe66176678a.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/0da6afe66176678a.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-9a81ea998672c303.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-efc06c2733009cd3.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-c0a4f1ea606d48d2.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-a37b06ddb64521fd.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/index-927ddeebe57a8ac3.js" defer=""></script><script src="/dashboard/_next/static/EqELoF4IXcALfWVihInou/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/EqELoF4IXcALfWVihInou/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/","query":{},"buildId":"EqELoF4IXcALfWVihInou","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/0da6afe66176678a.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/0da6afe66176678a.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-9a81ea998672c303.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-efc06c2733009cd3.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-c0a4f1ea606d48d2.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-a37b06ddb64521fd.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/infra/%5Bcontext%5D-8b0809f59034d509.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/0da6afe66176678a.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/0da6afe66176678a.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-9a81ea998672c303.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-efc06c2733009cd3.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-c0a4f1ea606d48d2.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-a37b06ddb64521fd.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/infra/%5Bcontext%5D-8b0809f59034d509.js" defer=""></script><script src="/dashboard/_next/static/EqELoF4IXcALfWVihInou/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/EqELoF4IXcALfWVihInou/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/infra/[context]","query":{},"buildId":"EqELoF4IXcALfWVihInou","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/0da6afe66176678a.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/0da6afe66176678a.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-9a81ea998672c303.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-efc06c2733009cd3.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-c0a4f1ea606d48d2.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-a37b06ddb64521fd.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/infra-ae9d2f705ce582c9.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/0da6afe66176678a.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/0da6afe66176678a.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-9a81ea998672c303.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-efc06c2733009cd3.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-c0a4f1ea606d48d2.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-a37b06ddb64521fd.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/infra-ae9d2f705ce582c9.js" defer=""></script><script src="/dashboard/_next/static/EqELoF4IXcALfWVihInou/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/EqELoF4IXcALfWVihInou/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/infra","query":{},"buildId":"EqELoF4IXcALfWVihInou","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/0da6afe66176678a.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/0da6afe66176678a.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-9a81ea998672c303.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-efc06c2733009cd3.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-c0a4f1ea606d48d2.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-a37b06ddb64521fd.js" defer=""></script><script src="/dashboard/_next/static/chunks/616-162f3033ffcd3d31.js" defer=""></script><script src="/dashboard/_next/static/chunks/5230-df791914b54d91d9.js" defer=""></script><script src="/dashboard/_next/static/chunks/5739-5ea3ffa10fc884f2.js" defer=""></script><script src="/dashboard/_next/static/chunks/1664-d65361e92b85e786.js" defer=""></script><script src="/dashboard/_next/static/chunks/804-9f5e98ce84d46bdd.js" defer=""></script><script src="/dashboard/_next/static/chunks/1272-1ef0bf0237faccdb.js" defer=""></script><script src="/dashboard/_next/static/chunks/6989-6ff4e45dfb49d11d.js" defer=""></script><script src="/dashboard/_next/static/chunks/3698-52ad1ca228faa776.js" defer=""></script><script src="/dashboard/_next/static/chunks/9470-21d059a1dfa03f61.js" defer=""></script><script src="/dashboard/_next/static/chunks/8969-909d53833da080cb.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/jobs/%5Bjob%5D-c4d5cfac7fbc0668.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/0da6afe66176678a.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/0da6afe66176678a.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-9a81ea998672c303.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-efc06c2733009cd3.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-c0a4f1ea606d48d2.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-a37b06ddb64521fd.js" defer=""></script><script src="/dashboard/_next/static/chunks/616-162f3033ffcd3d31.js" defer=""></script><script src="/dashboard/_next/static/chunks/5230-df791914b54d91d9.js" defer=""></script><script src="/dashboard/_next/static/chunks/5739-5ea3ffa10fc884f2.js" defer=""></script><script src="/dashboard/_next/static/chunks/1664-d65361e92b85e786.js" defer=""></script><script src="/dashboard/_next/static/chunks/804-9f5e98ce84d46bdd.js" defer=""></script><script src="/dashboard/_next/static/chunks/1272-1ef0bf0237faccdb.js" defer=""></script><script src="/dashboard/_next/static/chunks/6989-6ff4e45dfb49d11d.js" defer=""></script><script src="/dashboard/_next/static/chunks/3698-52ad1ca228faa776.js" defer=""></script><script src="/dashboard/_next/static/chunks/9470-21d059a1dfa03f61.js" defer=""></script><script src="/dashboard/_next/static/chunks/8969-909d53833da080cb.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/jobs/%5Bjob%5D-c4d5cfac7fbc0668.js" defer=""></script><script src="/dashboard/_next/static/EqELoF4IXcALfWVihInou/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/EqELoF4IXcALfWVihInou/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/jobs/[job]","query":{},"buildId":"EqELoF4IXcALfWVihInou","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/0da6afe66176678a.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/0da6afe66176678a.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-9a81ea998672c303.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-efc06c2733009cd3.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-c0a4f1ea606d48d2.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-a37b06ddb64521fd.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/jobs-5bbdc71878f0a068.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/0da6afe66176678a.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/0da6afe66176678a.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-9a81ea998672c303.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-efc06c2733009cd3.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-c0a4f1ea606d48d2.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-a37b06ddb64521fd.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/jobs-5bbdc71878f0a068.js" defer=""></script><script src="/dashboard/_next/static/EqELoF4IXcALfWVihInou/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/EqELoF4IXcALfWVihInou/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/jobs","query":{},"buildId":"EqELoF4IXcALfWVihInou","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/0da6afe66176678a.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/0da6afe66176678a.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-9a81ea998672c303.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-efc06c2733009cd3.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-c0a4f1ea606d48d2.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-a37b06ddb64521fd.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/users-cd43fb3c122eedde.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/0da6afe66176678a.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/0da6afe66176678a.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-9a81ea998672c303.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-efc06c2733009cd3.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-c0a4f1ea606d48d2.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-a37b06ddb64521fd.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/users-cd43fb3c122eedde.js" defer=""></script><script src="/dashboard/_next/static/EqELoF4IXcALfWVihInou/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/EqELoF4IXcALfWVihInou/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/users","query":{},"buildId":"EqELoF4IXcALfWVihInou","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/0da6afe66176678a.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/0da6afe66176678a.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-9a81ea998672c303.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-efc06c2733009cd3.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-c0a4f1ea606d48d2.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-a37b06ddb64521fd.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/volumes-4ebf6484f7216387.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/0da6afe66176678a.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/0da6afe66176678a.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-9a81ea998672c303.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-efc06c2733009cd3.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-c0a4f1ea606d48d2.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-a37b06ddb64521fd.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/volumes-4ebf6484f7216387.js" defer=""></script><script src="/dashboard/_next/static/EqELoF4IXcALfWVihInou/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/EqELoF4IXcALfWVihInou/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/volumes","query":{},"buildId":"EqELoF4IXcALfWVihInou","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/0da6afe66176678a.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/0da6afe66176678a.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-9a81ea998672c303.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-efc06c2733009cd3.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-c0a4f1ea606d48d2.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-a37b06ddb64521fd.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/workspace/new-5629d4e551dba1ee.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/0da6afe66176678a.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/0da6afe66176678a.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-9a81ea998672c303.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-efc06c2733009cd3.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-c0a4f1ea606d48d2.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-a37b06ddb64521fd.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/workspace/new-5629d4e551dba1ee.js" defer=""></script><script src="/dashboard/_next/static/EqELoF4IXcALfWVihInou/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/EqELoF4IXcALfWVihInou/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/workspace/new","query":{},"buildId":"EqELoF4IXcALfWVihInou","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/0da6afe66176678a.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/0da6afe66176678a.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-9a81ea998672c303.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-efc06c2733009cd3.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-c0a4f1ea606d48d2.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-a37b06ddb64521fd.js" defer=""></script><script src="/dashboard/_next/static/chunks/616-162f3033ffcd3d31.js" defer=""></script><script src="/dashboard/_next/static/chunks/5230-df791914b54d91d9.js" defer=""></script><script src="/dashboard/_next/static/chunks/5739-5ea3ffa10fc884f2.js" defer=""></script><script src="/dashboard/_next/static/chunks/1664-d65361e92b85e786.js" defer=""></script><script src="/dashboard/_next/static/chunks/804-9f5e98ce84d46bdd.js" defer=""></script><script src="/dashboard/_next/static/chunks/1272-1ef0bf0237faccdb.js" defer=""></script><script src="/dashboard/_next/static/chunks/3947-b059261d6fa88a1f.js" defer=""></script><script src="/dashboard/_next/static/chunks/6989-6ff4e45dfb49d11d.js" defer=""></script><script src="/dashboard/_next/static/chunks/3698-52ad1ca228faa776.js" defer=""></script><script src="/dashboard/_next/static/chunks/9470-21d059a1dfa03f61.js" defer=""></script><script src="/dashboard/_next/static/chunks/6990-d0dc765474fa0eca.js" defer=""></script><script src="/dashboard/_next/static/chunks/8969-909d53833da080cb.js" defer=""></script><script src="/dashboard/_next/static/chunks/1043-1b39779691bb4030.js" defer=""></script><script src="/dashboard/_next/static/chunks/6601-fcfad0ddf92ec7ab.js" defer=""></script><script src="/dashboard/_next/static/chunks/938-044ad21de8b4626b.js" defer=""></script><script src="/dashboard/_next/static/chunks/1141-726e5a3f00b67185.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/workspaces/%5Bname%5D-7c0187f43757a548.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/0da6afe66176678a.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/0da6afe66176678a.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-9a81ea998672c303.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-efc06c2733009cd3.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-c0a4f1ea606d48d2.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-a37b06ddb64521fd.js" defer=""></script><script src="/dashboard/_next/static/chunks/616-162f3033ffcd3d31.js" defer=""></script><script src="/dashboard/_next/static/chunks/5230-df791914b54d91d9.js" defer=""></script><script src="/dashboard/_next/static/chunks/5739-5ea3ffa10fc884f2.js" defer=""></script><script src="/dashboard/_next/static/chunks/1664-d65361e92b85e786.js" defer=""></script><script src="/dashboard/_next/static/chunks/804-9f5e98ce84d46bdd.js" defer=""></script><script src="/dashboard/_next/static/chunks/1272-1ef0bf0237faccdb.js" defer=""></script><script src="/dashboard/_next/static/chunks/3947-b059261d6fa88a1f.js" defer=""></script><script src="/dashboard/_next/static/chunks/6989-6ff4e45dfb49d11d.js" defer=""></script><script src="/dashboard/_next/static/chunks/3698-52ad1ca228faa776.js" defer=""></script><script src="/dashboard/_next/static/chunks/9470-21d059a1dfa03f61.js" defer=""></script><script src="/dashboard/_next/static/chunks/6990-d0dc765474fa0eca.js" defer=""></script><script src="/dashboard/_next/static/chunks/8969-909d53833da080cb.js" defer=""></script><script src="/dashboard/_next/static/chunks/1043-1b39779691bb4030.js" defer=""></script><script src="/dashboard/_next/static/chunks/6601-fcfad0ddf92ec7ab.js" defer=""></script><script src="/dashboard/_next/static/chunks/938-044ad21de8b4626b.js" defer=""></script><script src="/dashboard/_next/static/chunks/1141-726e5a3f00b67185.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/workspaces/%5Bname%5D-7c0187f43757a548.js" defer=""></script><script src="/dashboard/_next/static/EqELoF4IXcALfWVihInou/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/EqELoF4IXcALfWVihInou/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/workspaces/[name]","query":{},"buildId":"EqELoF4IXcALfWVihInou","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/0da6afe66176678a.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/0da6afe66176678a.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-9a81ea998672c303.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-efc06c2733009cd3.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-c0a4f1ea606d48d2.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-a37b06ddb64521fd.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/workspaces-06bde99155fa6292.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/0da6afe66176678a.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/0da6afe66176678a.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-9a81ea998672c303.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-efc06c2733009cd3.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-c0a4f1ea606d48d2.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-a37b06ddb64521fd.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/workspaces-06bde99155fa6292.js" defer=""></script><script src="/dashboard/_next/static/EqELoF4IXcALfWVihInou/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/EqELoF4IXcALfWVihInou/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/workspaces","query":{},"buildId":"EqELoF4IXcALfWVihInou","assetPrefix":"/dashboard","nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html>
|
sky/global_user_state.py
CHANGED
@@ -391,7 +391,8 @@ def initialize_and_get_db() -> sqlalchemy.engine.Engine:
|
|
391
391
|
conn_string = skypilot_config.get_nested(('db',), None)
|
392
392
|
if conn_string:
|
393
393
|
logger.debug(f'using db URI from {conn_string}')
|
394
|
-
_SQLALCHEMY_ENGINE = sqlalchemy.create_engine(
|
394
|
+
_SQLALCHEMY_ENGINE = sqlalchemy.create_engine(
|
395
|
+
conn_string, poolclass=sqlalchemy.NullPool)
|
395
396
|
else:
|
396
397
|
db_path = os.path.expanduser('~/.sky/state.db')
|
397
398
|
pathlib.Path(db_path).parents[0].mkdir(parents=True,
|
@@ -497,10 +498,12 @@ def add_or_update_user(user: models.User,
|
|
497
498
|
))
|
498
499
|
|
499
500
|
result = session.execute(upsert_stmnt)
|
501
|
+
row = result.fetchone()
|
502
|
+
|
503
|
+
ret = bool(row.was_inserted) if row else False
|
500
504
|
session.commit()
|
501
505
|
|
502
|
-
|
503
|
-
return bool(row.was_inserted) if row else False
|
506
|
+
return ret
|
504
507
|
else:
|
505
508
|
raise ValueError('Unsupported database dialect')
|
506
509
|
|
sky/jobs/state.py
CHANGED
@@ -219,7 +219,8 @@ def initialize_and_get_db() -> sqlalchemy.engine.Engine:
|
|
219
219
|
conn_string = skypilot_config.get_nested(('db',), None)
|
220
220
|
if conn_string:
|
221
221
|
logger.debug(f'using db URI from {conn_string}')
|
222
|
-
_SQLALCHEMY_ENGINE = sqlalchemy.create_engine(
|
222
|
+
_SQLALCHEMY_ENGINE = sqlalchemy.create_engine(
|
223
|
+
conn_string, poolclass=sqlalchemy.NullPool)
|
223
224
|
else:
|
224
225
|
db_path = os.path.expanduser('~/.sky/spot_jobs.db')
|
225
226
|
pathlib.Path(db_path).parents[0].mkdir(parents=True,
|
@@ -544,14 +545,16 @@ def set_job_info_without_job_id(name: str, workspace: str,
|
|
544
545
|
if (_SQLALCHEMY_ENGINE.dialect.name ==
|
545
546
|
db_utils.SQLAlchemyDialect.SQLITE.value):
|
546
547
|
result = session.execute(insert_stmt)
|
548
|
+
ret = result.lastrowid
|
547
549
|
session.commit()
|
548
|
-
return
|
550
|
+
return ret
|
549
551
|
elif (_SQLALCHEMY_ENGINE.dialect.name ==
|
550
552
|
db_utils.SQLAlchemyDialect.POSTGRESQL.value):
|
551
553
|
result = session.execute(
|
552
554
|
insert_stmt.returning(job_info_table.c.spot_job_id))
|
555
|
+
ret = result.scalar()
|
553
556
|
session.commit()
|
554
|
-
return
|
557
|
+
return ret
|
555
558
|
else:
|
556
559
|
raise ValueError('Unsupported database dialect')
|
557
560
|
|
@@ -313,6 +313,9 @@ def get_gke_accelerator_name(accelerator: str) -> str:
|
|
313
313
|
# A100-80GB, L4, H100-80GB and H100-MEGA-80GB
|
314
314
|
# have a different name pattern.
|
315
315
|
return 'nvidia-{}'.format(accelerator.lower())
|
316
|
+
elif accelerator == 'H200':
|
317
|
+
# H200s on GCP use this label format
|
318
|
+
return 'nvidia-h200-141gb'
|
316
319
|
elif accelerator.startswith('tpu-'):
|
317
320
|
return accelerator
|
318
321
|
else:
|
sky/server/metrics.py
CHANGED
@@ -1,6 +1,5 @@
|
|
1
1
|
"""Instrumentation for the API server."""
|
2
2
|
|
3
|
-
import asyncio
|
4
3
|
import os
|
5
4
|
import time
|
6
5
|
|
@@ -50,7 +49,7 @@ async def metrics() -> fastapi.Response:
|
|
50
49
|
headers={'Cache-Control': 'no-cache'})
|
51
50
|
|
52
51
|
|
53
|
-
def
|
52
|
+
def build_metrics_server(host: str, port: int) -> uvicorn.Server:
|
54
53
|
metrics_config = uvicorn.Config(
|
55
54
|
'sky.server.metrics:metrics_app',
|
56
55
|
host=host,
|
@@ -58,7 +57,7 @@ def run_metrics_server(host: str, port: int):
|
|
58
57
|
workers=1,
|
59
58
|
)
|
60
59
|
metrics_server_instance = uvicorn.Server(metrics_config)
|
61
|
-
|
60
|
+
return metrics_server_instance
|
62
61
|
|
63
62
|
|
64
63
|
def _get_status_code_group(status_code: int) -> str:
|
sky/server/requests/executor.py
CHANGED
@@ -399,11 +399,8 @@ def _request_execution_wrapper(request_id: str,
|
|
399
399
|
f'{common_utils.format_exception(e)}')
|
400
400
|
return
|
401
401
|
else:
|
402
|
-
|
403
|
-
|
404
|
-
request_task.status = api_requests.RequestStatus.SUCCEEDED
|
405
|
-
if not ignore_return_value:
|
406
|
-
request_task.set_return_value(return_value)
|
402
|
+
api_requests.set_request_succeeded(
|
403
|
+
request_id, return_value if not ignore_return_value else None)
|
407
404
|
_restore_output(original_stdout, original_stderr)
|
408
405
|
logger.info(f'Request {request_id} finished')
|
409
406
|
|
sky/server/requests/payloads.py
CHANGED
sky/server/requests/requests.py
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
"""Utilities for REST API."""
|
2
|
+
import asyncio
|
2
3
|
import contextlib
|
3
4
|
import dataclasses
|
4
5
|
import enum
|
@@ -20,6 +21,7 @@ import filelock
|
|
20
21
|
from sky import exceptions
|
21
22
|
from sky import global_user_state
|
22
23
|
from sky import sky_logging
|
24
|
+
from sky import skypilot_config
|
23
25
|
from sky.server import common as server_common
|
24
26
|
from sky.server import constants as server_constants
|
25
27
|
from sky.server.requests import payloads
|
@@ -29,6 +31,7 @@ from sky.utils import common
|
|
29
31
|
from sky.utils import common_utils
|
30
32
|
from sky.utils import db_utils
|
31
33
|
from sky.utils import env_options
|
34
|
+
from sky.utils import subprocess_utils
|
32
35
|
from sky.utils import ux_utils
|
33
36
|
|
34
37
|
logger = sky_logging.init_logger(__name__)
|
@@ -39,8 +42,11 @@ COL_CLUSTER_NAME = 'cluster_name'
|
|
39
42
|
COL_USER_ID = 'user_id'
|
40
43
|
COL_STATUS_MSG = 'status_msg'
|
41
44
|
COL_SHOULD_RETRY = 'should_retry'
|
45
|
+
COL_FINISHED_AT = 'finished_at'
|
42
46
|
REQUEST_LOG_PATH_PREFIX = '~/sky_logs/api_server/requests'
|
43
47
|
|
48
|
+
DEFAULT_REQUESTS_RETENTION_HOURS = 24 # 1 day
|
49
|
+
|
44
50
|
# TODO(zhwu): For scalability, there are several TODOs:
|
45
51
|
# [x] Have a way to queue requests.
|
46
52
|
# [ ] Move logs to persistent place.
|
@@ -64,6 +70,10 @@ class RequestStatus(enum.Enum):
|
|
64
70
|
color = _STATUS_TO_COLOR[self]
|
65
71
|
return f'{color}{self.value}{colorama.Style.RESET_ALL}'
|
66
72
|
|
73
|
+
@classmethod
|
74
|
+
def finished_status(cls) -> List['RequestStatus']:
|
75
|
+
return [cls.SUCCEEDED, cls.FAILED, cls.CANCELLED]
|
76
|
+
|
67
77
|
|
68
78
|
_STATUS_TO_COLOR = {
|
69
79
|
RequestStatus.PENDING: colorama.Fore.BLUE,
|
@@ -88,6 +98,7 @@ REQUEST_COLUMNS = [
|
|
88
98
|
COL_USER_ID,
|
89
99
|
COL_STATUS_MSG,
|
90
100
|
COL_SHOULD_RETRY,
|
101
|
+
COL_FINISHED_AT,
|
91
102
|
]
|
92
103
|
|
93
104
|
|
@@ -120,6 +131,8 @@ class Request:
|
|
120
131
|
status_msg: Optional[str] = None
|
121
132
|
# Whether the request should be retried.
|
122
133
|
should_retry: bool = False
|
134
|
+
# When the request finished.
|
135
|
+
finished_at: Optional[float] = None
|
123
136
|
|
124
137
|
@property
|
125
138
|
def log_path(self) -> pathlib.Path:
|
@@ -206,6 +219,7 @@ class Request:
|
|
206
219
|
cluster_name=self.cluster_name,
|
207
220
|
status_msg=self.status_msg,
|
208
221
|
should_retry=self.should_retry,
|
222
|
+
finished_at=self.finished_at,
|
209
223
|
)
|
210
224
|
|
211
225
|
def encode(self) -> payloads.RequestPayload:
|
@@ -228,6 +242,7 @@ class Request:
|
|
228
242
|
cluster_name=self.cluster_name,
|
229
243
|
status_msg=self.status_msg,
|
230
244
|
should_retry=self.should_retry,
|
245
|
+
finished_at=self.finished_at,
|
231
246
|
)
|
232
247
|
except (TypeError, ValueError) as e:
|
233
248
|
# The error is unexpected, so we don't suppress the stack trace.
|
@@ -260,6 +275,7 @@ class Request:
|
|
260
275
|
cluster_name=payload.cluster_name,
|
261
276
|
status_msg=payload.status_msg,
|
262
277
|
should_retry=payload.should_retry,
|
278
|
+
finished_at=payload.finished_at,
|
263
279
|
)
|
264
280
|
except (TypeError, ValueError) as e:
|
265
281
|
logger.error(
|
@@ -439,6 +455,7 @@ def kill_requests(request_ids: Optional[List[str]] = None,
|
|
439
455
|
# process for each request.
|
440
456
|
os.kill(request_record.pid, signal.SIGTERM)
|
441
457
|
request_record.status = RequestStatus.CANCELLED
|
458
|
+
request_record.finished_at = time.time()
|
442
459
|
cancelled_request_ids.append(request_id)
|
443
460
|
return cancelled_request_ids
|
444
461
|
|
@@ -474,13 +491,16 @@ def create_table(cursor, conn):
|
|
474
491
|
schedule_type TEXT,
|
475
492
|
{COL_USER_ID} TEXT,
|
476
493
|
{COL_STATUS_MSG} TEXT,
|
477
|
-
{COL_SHOULD_RETRY} INTEGER
|
494
|
+
{COL_SHOULD_RETRY} INTEGER,
|
495
|
+
{COL_FINISHED_AT} REAL
|
478
496
|
)""")
|
479
497
|
|
480
498
|
db_utils.add_column_to_table(cursor, conn, REQUEST_TABLE, COL_STATUS_MSG,
|
481
499
|
'TEXT')
|
482
500
|
db_utils.add_column_to_table(cursor, conn, REQUEST_TABLE, COL_SHOULD_RETRY,
|
483
501
|
'INTEGER')
|
502
|
+
db_utils.add_column_to_table(cursor, conn, REQUEST_TABLE, COL_FINISHED_AT,
|
503
|
+
'REAL')
|
484
504
|
|
485
505
|
|
486
506
|
_DB = None
|
@@ -583,6 +603,7 @@ def get_request_tasks(
|
|
583
603
|
user_id: Optional[str] = None,
|
584
604
|
exclude_request_names: Optional[List[str]] = None,
|
585
605
|
include_request_names: Optional[List[str]] = None,
|
606
|
+
finished_before: Optional[float] = None,
|
586
607
|
) -> List[Request]:
|
587
608
|
"""Get a list of requests that match the given filters.
|
588
609
|
|
@@ -595,6 +616,8 @@ def get_request_tasks(
|
|
595
616
|
If None, all users are included.
|
596
617
|
include_request_names: a list of request names to filter on.
|
597
618
|
Mutually exclusive with exclude_request_names.
|
619
|
+
finished_before: if provided, only include requests finished before this
|
620
|
+
timestamp.
|
598
621
|
|
599
622
|
Raises:
|
600
623
|
ValueError: If both exclude_request_names and include_request_names are
|
@@ -606,7 +629,7 @@ def get_request_tasks(
|
|
606
629
|
'provided, not both.')
|
607
630
|
|
608
631
|
filters = []
|
609
|
-
filter_params = []
|
632
|
+
filter_params: List[Any] = []
|
610
633
|
if status is not None:
|
611
634
|
status_list_str = ','.join(repr(status.value) for status in status)
|
612
635
|
filters.append(f'status IN ({status_list_str})')
|
@@ -624,6 +647,9 @@ def get_request_tasks(
|
|
624
647
|
request_names_str = ','.join(
|
625
648
|
repr(name) for name in include_request_names)
|
626
649
|
filters.append(f'name IN ({request_names_str})')
|
650
|
+
if finished_before is not None:
|
651
|
+
filters.append('finished_at < ?')
|
652
|
+
filter_params.append(finished_before)
|
627
653
|
assert _DB is not None
|
628
654
|
with _DB.conn:
|
629
655
|
cursor = _DB.conn.cursor()
|
@@ -665,19 +691,83 @@ def set_request_failed(request_id: str, e: BaseException) -> None:
|
|
665
691
|
with update_request(request_id) as request_task:
|
666
692
|
assert request_task is not None, request_id
|
667
693
|
request_task.status = RequestStatus.FAILED
|
694
|
+
request_task.finished_at = time.time()
|
668
695
|
request_task.set_error(e)
|
669
696
|
|
670
697
|
|
671
|
-
def set_request_succeeded(request_id: str, result: Any) -> None:
|
698
|
+
def set_request_succeeded(request_id: str, result: Optional[Any]) -> None:
|
672
699
|
"""Set a request to succeeded and populate the result."""
|
673
700
|
with update_request(request_id) as request_task:
|
674
701
|
assert request_task is not None, request_id
|
675
702
|
request_task.status = RequestStatus.SUCCEEDED
|
676
|
-
request_task.
|
703
|
+
request_task.finished_at = time.time()
|
704
|
+
if result is not None:
|
705
|
+
request_task.set_return_value(result)
|
677
706
|
|
678
707
|
|
679
708
|
def set_request_cancelled(request_id: str) -> None:
|
680
709
|
"""Set a request to cancelled."""
|
681
710
|
with update_request(request_id) as request_task:
|
682
711
|
assert request_task is not None, request_id
|
712
|
+
request_task.finished_at = time.time()
|
683
713
|
request_task.status = RequestStatus.CANCELLED
|
714
|
+
|
715
|
+
|
716
|
+
@init_db
|
717
|
+
def _delete_requests(requests: List[Request]):
|
718
|
+
"""Clean up requests by their IDs."""
|
719
|
+
id_list_str = ','.join(repr(req.request_id) for req in requests)
|
720
|
+
assert _DB is not None
|
721
|
+
with _DB.conn:
|
722
|
+
cursor = _DB.conn.cursor()
|
723
|
+
cursor.execute(
|
724
|
+
f'DELETE FROM {REQUEST_TABLE} WHERE request_id IN ({id_list_str})')
|
725
|
+
|
726
|
+
|
727
|
+
def clean_finished_requests_with_retention(retention_seconds: int):
|
728
|
+
"""Clean up finished requests older than the retention period.
|
729
|
+
|
730
|
+
This function removes old finished requests (SUCCEEDED, FAILED, CANCELLED)
|
731
|
+
from the database and cleans up their associated log files.
|
732
|
+
|
733
|
+
Args:
|
734
|
+
retention_seconds: Requests older than this many seconds will be
|
735
|
+
deleted.
|
736
|
+
"""
|
737
|
+
reqs = get_request_tasks(status=RequestStatus.finished_status(),
|
738
|
+
finished_before=time.time() - retention_seconds)
|
739
|
+
|
740
|
+
subprocess_utils.run_in_parallel(
|
741
|
+
func=lambda req: req.log_path.unlink(missing_ok=True),
|
742
|
+
args=reqs,
|
743
|
+
num_threads=len(reqs))
|
744
|
+
|
745
|
+
_delete_requests(reqs)
|
746
|
+
|
747
|
+
# To avoid leakage of the log file, logs must be deleted before the
|
748
|
+
# request task in the database.
|
749
|
+
logger.info(f'Cleaned up {len(reqs)} finished requests '
|
750
|
+
f'older than {retention_seconds} seconds')
|
751
|
+
|
752
|
+
|
753
|
+
async def requests_gc_daemon():
|
754
|
+
"""Garbage collect finished requests periodically."""
|
755
|
+
while True:
|
756
|
+
logger.info('Running requests GC daemon...')
|
757
|
+
# Use the latest config.
|
758
|
+
skypilot_config.reload_config()
|
759
|
+
retention_seconds = skypilot_config.get_nested(
|
760
|
+
('api_server', 'requests_retention_hours'),
|
761
|
+
DEFAULT_REQUESTS_RETENTION_HOURS) * 3600
|
762
|
+
try:
|
763
|
+
# Negative value disables the requests GC
|
764
|
+
if retention_seconds >= 0:
|
765
|
+
clean_finished_requests_with_retention(retention_seconds)
|
766
|
+
except asyncio.CancelledError:
|
767
|
+
logger.info('Requests GC daemon cancelled')
|
768
|
+
break
|
769
|
+
except Exception as e: # pylint: disable=broad-except
|
770
|
+
logger.error(f'Error running requests GC daemon: {e}')
|
771
|
+
# Run the daemon at most once every hour to avoid too frequent
|
772
|
+
# cleanup.
|
773
|
+
await asyncio.sleep(max(retention_seconds, 3600))
|
sky/server/server.py
CHANGED
@@ -26,6 +26,7 @@ import fastapi
|
|
26
26
|
from fastapi.middleware import cors
|
27
27
|
from passlib.hash import apr_md5_crypt
|
28
28
|
import starlette.middleware.base
|
29
|
+
import uvloop
|
29
30
|
|
30
31
|
import sky
|
31
32
|
from sky import catalog
|
@@ -1461,6 +1462,12 @@ async def stream(
|
|
1461
1462
|
raise fastapi.HTTPException(
|
1462
1463
|
status_code=404, detail=f'Request {request_id!r} not found')
|
1463
1464
|
log_path_to_stream = request_task.log_path
|
1465
|
+
if not log_path_to_stream.exists():
|
1466
|
+
# The log file might be deleted by the request GC daemon but the
|
1467
|
+
# request task is still in the database.
|
1468
|
+
raise fastapi.HTTPException(
|
1469
|
+
status_code=404,
|
1470
|
+
detail=f'Log of request {request_id!r} has been deleted')
|
1464
1471
|
else:
|
1465
1472
|
assert log_path is not None, (request_id, log_path)
|
1466
1473
|
if log_path == constants.API_SERVER_LOGS:
|
@@ -1775,13 +1782,18 @@ if __name__ == '__main__':
|
|
1775
1782
|
|
1776
1783
|
queue_server: Optional[multiprocessing.Process] = None
|
1777
1784
|
workers: List[executor.RequestWorker] = []
|
1785
|
+
# Global background tasks that will be scheduled in a separate event loop.
|
1786
|
+
global_tasks: List[asyncio.Task] = []
|
1778
1787
|
try:
|
1788
|
+
background = uvloop.new_event_loop()
|
1779
1789
|
if os.environ.get(constants.ENV_VAR_SERVER_METRICS_ENABLED):
|
1780
|
-
|
1781
|
-
|
1782
|
-
|
1783
|
-
|
1784
|
-
|
1790
|
+
metrics_server = metrics.build_metrics_server(
|
1791
|
+
cmd_args.host, cmd_args.metrics_port)
|
1792
|
+
global_tasks.append(background.create_task(metrics_server.serve()))
|
1793
|
+
global_tasks.append(
|
1794
|
+
background.create_task(requests_lib.requests_gc_daemon()))
|
1795
|
+
threading.Thread(target=background.run_forever, daemon=True).start()
|
1796
|
+
|
1785
1797
|
queue_server, workers = executor.start(config)
|
1786
1798
|
|
1787
1799
|
logger.info(f'Starting SkyPilot API server, workers={num_workers}')
|
@@ -1799,6 +1811,8 @@ if __name__ == '__main__':
|
|
1799
1811
|
finally:
|
1800
1812
|
logger.info('Shutting down SkyPilot API server...')
|
1801
1813
|
|
1814
|
+
for gt in global_tasks:
|
1815
|
+
gt.cancel()
|
1802
1816
|
subprocess_utils.run_in_parallel(lambda worker: worker.cancel(),
|
1803
1817
|
workers,
|
1804
1818
|
num_threads=len(workers))
|
sky/server/uvicorn.py
CHANGED
@@ -150,7 +150,10 @@ class Server(uvicorn.Server):
|
|
150
150
|
if req is None:
|
151
151
|
return
|
152
152
|
if req.pid is not None:
|
153
|
-
|
153
|
+
try:
|
154
|
+
os.kill(req.pid, signal.SIGTERM)
|
155
|
+
except ProcessLookupError:
|
156
|
+
logger.debug(f'Process {req.pid} already finished.')
|
154
157
|
req.status = requests_lib.RequestStatus.CANCELLED
|
155
158
|
req.should_retry = True
|
156
159
|
logger.info(
|
sky/utils/schemas.py
CHANGED
{skypilot_nightly-1.0.0.dev20250708.dist-info → skypilot_nightly-1.0.0.dev20250709.dist-info}/RECORD
RENAMED
@@ -1,4 +1,4 @@
|
|
1
|
-
sky/__init__.py,sha256=
|
1
|
+
sky/__init__.py,sha256=roU5EIKmMo9iJ6-Wtx6Y9b-S0juTQEg07ortKHBrpDA,6419
|
2
2
|
sky/admin_policy.py,sha256=FMiizgvVTmD9gFA2OUaveXnuY3lbNU-fCbUYAODBZj4,9427
|
3
3
|
sky/authentication.py,sha256=V7zGSV7bqcAKC_EGOOS0KhJ01ZFLnme0WnjLFO7zavs,25603
|
4
4
|
sky/check.py,sha256=R0pFsTq2v-wr3NFePlX9DmDhsbvWEoFJAXsys3pUmT4,30338
|
@@ -8,7 +8,7 @@ sky/core.py,sha256=5UbaZ5xamYTajEq4TyiT81Q_cVzqPnMQRXASSz4OcNg,56272
|
|
8
8
|
sky/dag.py,sha256=5MFXlP43y9U54zxfYGhVyBiWEInoFFlt_zJ7ASJntXw,3889
|
9
9
|
sky/exceptions.py,sha256=Vn7VVhyrTaMBTdVxsro325aKSMM4_KRJOghFX31xIVM,19164
|
10
10
|
sky/execution.py,sha256=BhI4paGKpXMhWJoelHFe7LGFbCnW7hl0rIAmdIay-dk,33223
|
11
|
-
sky/global_user_state.py,sha256=
|
11
|
+
sky/global_user_state.py,sha256=eUSbLPwwHRdbmVjYbCGSfxRqijVqK28XkYgw3TFar9c,73115
|
12
12
|
sky/models.py,sha256=Eor-cT4D71QTimogcnJ5ey1G1PXK-OXN-snEtE8Uu_g,3152
|
13
13
|
sky/optimizer.py,sha256=oE4NrDmyE1A9B5NI3T_s7QUV5HkCeSJUU75NoJoVIPI,63323
|
14
14
|
sky/resources.py,sha256=MHdipCUpW2foB2romFIM57b__Lg4WCBfYDNSYAx2MEA,105546
|
@@ -92,7 +92,7 @@ sky/clouds/fluidstack.py,sha256=TkFHChRa7HH_-f5SDRgtFqKCmUCYcSfPCf4lpQH90do,1322
|
|
92
92
|
sky/clouds/gcp.py,sha256=92qzPagPCabVScWMqbDh4Nd14LzcZnK5ojb_phw9bRA,68430
|
93
93
|
sky/clouds/hyperbolic.py,sha256=cvcYeTs7js36OOXwehme4vzzjtDWqjPyqtxmb4XuUk4,11492
|
94
94
|
sky/clouds/ibm.py,sha256=JQTJQ5wVxVSqH7O05GOld8X5iO16g6Idd_YmRAGZmB8,22567
|
95
|
-
sky/clouds/kubernetes.py,sha256=
|
95
|
+
sky/clouds/kubernetes.py,sha256=0og8H4h-liU7q9ywLjSYl0bUWi94jl5yK_lFf9vRG_0,47949
|
96
96
|
sky/clouds/lambda_cloud.py,sha256=ZoKSseOGYlZFNhue2OK75dTU836AAE_pkuVod4yZX68,13260
|
97
97
|
sky/clouds/nebius.py,sha256=0ceJUwl1kjwhTJOSDERke8jCrfRxeyb9nLMkQfjBktQ,20926
|
98
98
|
sky/clouds/oci.py,sha256=Tos4hgXhYJ4kNkh6aa8_WsaxcD_JmbarR_1GltV-YrM,28158
|
@@ -108,19 +108,19 @@ sky/clouds/utils/azure_utils.py,sha256=NToRBnhEyuUvb-nBnsKTxjhOBRkMcrelL8LK4w6s4
|
|
108
108
|
sky/clouds/utils/gcp_utils.py,sha256=zpdibyvdROgDGqllcvQuST3pKqj6pzqX-gxCw-DsCfc,9873
|
109
109
|
sky/clouds/utils/oci_utils.py,sha256=yv_Y9oM5WNCnOofu44aKyOPTZZdKfpFLCx3ewZ2VBFY,7994
|
110
110
|
sky/clouds/utils/scp_utils.py,sha256=VGuccVO5uFGr8-yolWSoYrgr11z6cIeDBGcqkBzAyOs,18409
|
111
|
-
sky/dashboard/out/404.html,sha256=
|
112
|
-
sky/dashboard/out/clusters.html,sha256=
|
113
|
-
sky/dashboard/out/config.html,sha256=
|
111
|
+
sky/dashboard/out/404.html,sha256=1cUJyoOUj36FC21oRB3kA_VnABSzNZvA9_tVnKzdrto,1423
|
112
|
+
sky/dashboard/out/clusters.html,sha256=ooS7fIlp_3rgi41v8n72zTXLudifQuQQYGnBVQ1tfnc,1418
|
113
|
+
sky/dashboard/out/config.html,sha256=tKnG-4CQQRiOoHEpHC2hTbH2vXaqvYgh-RB2MIdeEy4,1414
|
114
114
|
sky/dashboard/out/favicon.ico,sha256=XilUZZglAl_1zRsg85QsbQgmQAzGPQjcUIJ-A3AzYn8,93590
|
115
|
-
sky/dashboard/out/index.html,sha256=
|
116
|
-
sky/dashboard/out/infra.html,sha256=
|
117
|
-
sky/dashboard/out/jobs.html,sha256=
|
115
|
+
sky/dashboard/out/index.html,sha256=OSD1eqZEm6IdYMpRT92ird5FezONFyBFkAX2GZ7day4,1407
|
116
|
+
sky/dashboard/out/infra.html,sha256=r065hx9gKvfdEH-wsAsBeHrmWDQSb9BuU_sEUafGI1Q,1412
|
117
|
+
sky/dashboard/out/jobs.html,sha256=f8uOTarAuYvc5e1EBByhLbs1PX1I-UDoHWJa0eBtM4w,1410
|
118
118
|
sky/dashboard/out/skypilot.svg,sha256=c0iRtlfLlaUm2p0rG9NFmo5FN0Qhf3pq5Xph-AeMPJw,5064
|
119
|
-
sky/dashboard/out/users.html,sha256=
|
120
|
-
sky/dashboard/out/volumes.html,sha256=
|
121
|
-
sky/dashboard/out/workspaces.html,sha256=
|
122
|
-
sky/dashboard/out/_next/static/
|
123
|
-
sky/dashboard/out/_next/static/
|
119
|
+
sky/dashboard/out/users.html,sha256=g7cyYDat_yz6RwRY_oSFvGiCghSt9S8F9j1RgcPpjEs,1412
|
120
|
+
sky/dashboard/out/volumes.html,sha256=je57QhfSfpBj2K6E_VQJKmPAsuswqqE9qbSOa2kGF78,1416
|
121
|
+
sky/dashboard/out/workspaces.html,sha256=HjEMiyX1WCyfxMP9kXatazmd0KBo70b4ZswCLmtGJ-w,1422
|
122
|
+
sky/dashboard/out/_next/static/EqELoF4IXcALfWVihInou/_buildManifest.js,sha256=SMKLljkiS_9UQoF0v1MyY_ziwbXl8KnBBlwCuTRc3V8,2235
|
123
|
+
sky/dashboard/out/_next/static/EqELoF4IXcALfWVihInou/_ssgManifest.js,sha256=Z49s4suAsf5y_GfnQSvm4qtq2ggxEbZPfEDTXjy6XgA,80
|
124
124
|
sky/dashboard/out/_next/static/chunks/1043-1b39779691bb4030.js,sha256=k8-hHIedPKi22M0wZwGOdWZ_S-H0jVnepFwm7i9_zg4,18192
|
125
125
|
sky/dashboard/out/_next/static/chunks/1141-726e5a3f00b67185.js,sha256=lEAVPk_18NZpZuPrGx1Xy9VWqE_5n3JuqWbIPS1_ZMw,17823
|
126
126
|
sky/dashboard/out/_next/static/chunks/1272-1ef0bf0237faccdb.js,sha256=VJ6y-Z6Eg2T93hQIRfWAbjAkQ7nQhglmIaVbEpKSILY,38451
|
@@ -174,13 +174,13 @@ sky/dashboard/out/_next/static/chunks/pages/jobs/[job]-c4d5cfac7fbc0668.js,sha25
|
|
174
174
|
sky/dashboard/out/_next/static/chunks/pages/workspace/new-5629d4e551dba1ee.js,sha256=K9tqKHcB2kiSHTAddLaM2oL1PzmqZNTdLDOuNzCaJNM,765
|
175
175
|
sky/dashboard/out/_next/static/chunks/pages/workspaces/[name]-7c0187f43757a548.js,sha256=FsoenC6VRkPLE29KkLd4nlSq2qociH4zFexYMxgetOM,1530
|
176
176
|
sky/dashboard/out/_next/static/css/0da6afe66176678a.css,sha256=I8b7x4ULdoXHkgk0BsNa0D6k2UYoA2mEhq7H1G_tVQE,44869
|
177
|
-
sky/dashboard/out/clusters/[cluster].html,sha256
|
178
|
-
sky/dashboard/out/clusters/[cluster]/[job].html,sha256=
|
179
|
-
sky/dashboard/out/infra/[context].html,sha256=
|
180
|
-
sky/dashboard/out/jobs/[job].html,sha256=
|
177
|
+
sky/dashboard/out/clusters/[cluster].html,sha256=-E1Yuu3F-dITbL8XXz0Ph_gLTo36DEN0wm42MmtzJGY,2847
|
178
|
+
sky/dashboard/out/clusters/[cluster]/[job].html,sha256=kd7PFYTTbwsVwCr-zbX1STj34fG7T-6xRGzY81PITT0,2160
|
179
|
+
sky/dashboard/out/infra/[context].html,sha256=1YUcsad_v6Vw6gvR0svuBMZKy0zF9nwwpNGV0s2qk2c,1436
|
180
|
+
sky/dashboard/out/jobs/[job].html,sha256=Z4wdvPhnjt4eAA2ZK6W4e0nRsMXT8ZvNvKJyJx4Sev8,2304
|
181
181
|
sky/dashboard/out/videos/cursor-small.mp4,sha256=8tRdp1vjawOrXUar1cfjOc-nkaKmcwCPZx_LO0XlCvQ,203285
|
182
|
-
sky/dashboard/out/workspace/new.html,sha256=
|
183
|
-
sky/dashboard/out/workspaces/[name].html,sha256=
|
182
|
+
sky/dashboard/out/workspace/new.html,sha256=flSk-JBbIf0OHjVUZ8FJO1dA9bMI5r0p6x2WS5rM8h4,1428
|
183
|
+
sky/dashboard/out/workspaces/[name].html,sha256=Ob77WxnNheWD-T_3YhzGrNY6wKYY_ntDpT5AA3olM4E,2845
|
184
184
|
sky/data/__init__.py,sha256=Nhaf1NURisXpZuwWANa2IuCyppIuc720FRwqSE2oEwY,184
|
185
185
|
sky/data/data_transfer.py,sha256=N8b0CQebDuHieXjvEVwlYmK6DbQxUGG1RQJEyTbh3dU,12040
|
186
186
|
sky/data/data_utils.py,sha256=CNYPM963qby5ddW0DZNbhiWXkqgB9MHh_jrC5DoBctM,33437
|
@@ -192,7 +192,7 @@ sky/jobs/constants.py,sha256=5n6wcYVyOnllM39uJDQDv7hHILcdSwiyg_-tqMc7nJk,3305
|
|
192
192
|
sky/jobs/controller.py,sha256=C-SrZ4MyNg30Rx-K7bpLf99V039QuW9m29_3vzVm8i0,35631
|
193
193
|
sky/jobs/recovery_strategy.py,sha256=a9A4W-6U3KU-pjkWiFpIdgTHC8W26-jYrmi4vzU9iOg,28818
|
194
194
|
sky/jobs/scheduler.py,sha256=b3RAjEzCXyoikh_BcmmGjoZ9ZeXr-tBnXoLFctt95ko,14375
|
195
|
-
sky/jobs/state.py,sha256=
|
195
|
+
sky/jobs/state.py,sha256=C9CSTkrztNmnBlb9K6JdClPETq1xm-ahXMu_LDRc3lo,65612
|
196
196
|
sky/jobs/utils.py,sha256=gfW4smCWWMmE4OwIbEqI5j5gVh5Gvfs6paqKQR2Tia8,70920
|
197
197
|
sky/jobs/client/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
198
198
|
sky/jobs/client/sdk.py,sha256=Nw7bP8pJ-uLIi14kMekEtmzqPmdIiN-CbhoNCJlHA7s,11340
|
@@ -252,7 +252,7 @@ sky/provision/kubernetes/constants.py,sha256=vZJQsAVjAgwsOskB48tIFSXtNw7IFnJOQE_
|
|
252
252
|
sky/provision/kubernetes/instance.py,sha256=VlwOQGhLS_yZwBtpb7d0V40O1I_VI0nDEjRrHIsTb8w,58910
|
253
253
|
sky/provision/kubernetes/network.py,sha256=Dgj8u7IQBHKHt-mSDhYzue1wfDk96FR_8fO89TwuZ2E,12846
|
254
254
|
sky/provision/kubernetes/network_utils.py,sha256=eEbt8acJW3Ohe6qHZNZ9GAQ29kIZEQX7Q5S08yOuvhA,12220
|
255
|
-
sky/provision/kubernetes/utils.py,sha256=
|
255
|
+
sky/provision/kubernetes/utils.py,sha256=_thZxGqs9_2NY7kZw3q4eUXGTYdTzcTvyCqa3tMoqSw,143248
|
256
256
|
sky/provision/kubernetes/volume.py,sha256=KaYls4QU_QNXoncAiySeUX479zuzeCeW2iB1tWtJe8w,8061
|
257
257
|
sky/provision/kubernetes/manifests/fusermount-server-daemonset.yaml,sha256=S87GNAbDqgTrLuxF-afPAqQ0V-i41El4s_9KBZMuaag,1331
|
258
258
|
sky/provision/lambda_cloud/__init__.py,sha256=6EEvSgtUeEiup9ivIFevHmgv0GqleroO2X0K7TRa2nE,612
|
@@ -324,22 +324,22 @@ sky/server/__init__.py,sha256=MPPBqFzXz6Jv5QSk6td_IcvnfXfNErDZVcizu4MLRow,27
|
|
324
324
|
sky/server/common.py,sha256=u7hV5oGdCj5GfCxpNmLd6yl0B1mlh11FMFIR5ZoW5pA,34492
|
325
325
|
sky/server/config.py,sha256=XWf5Kw4am6vMO5wcyWevbQAFH-dmKb7AMEgDzD083-M,8538
|
326
326
|
sky/server/constants.py,sha256=v6RP8ZEwCNsxO2s2IukgOcEldZO5bvcQaxmOTA0Cf0g,2321
|
327
|
-
sky/server/metrics.py,sha256=
|
327
|
+
sky/server/metrics.py,sha256=6H6n6dq_C5HMaU97mJlRUB9bqOEA_k205PO15wE3AWk,3648
|
328
328
|
sky/server/rest.py,sha256=elMpi-cS301OqTwmFZb7fWYXr1vdJ28YT1zIDH1IpBk,5968
|
329
|
-
sky/server/server.py,sha256=
|
329
|
+
sky/server/server.py,sha256=OLWzK9SBfPwaBIdbMPxtngMEXCDQQuRC7ooOpw6d9kE,73466
|
330
330
|
sky/server/state.py,sha256=YbVOMJ1JipQQv17gLIGyiGN7MKfnP83qlUa5MB1z0Yk,747
|
331
331
|
sky/server/stream_utils.py,sha256=RS4RuMxQqTGqp3uxzZVtmFWzos4d49P7hMX_VklzEVU,9189
|
332
|
-
sky/server/uvicorn.py,sha256=
|
332
|
+
sky/server/uvicorn.py,sha256=I-JUJwgUznt87hboDd66NTRaw0WtfFVzxxtoxowNqBg,9266
|
333
333
|
sky/server/versions.py,sha256=3atZzUa7y1XeKNcrfVxKWAo_5ZyCOnbY7DKpIqed7Do,10011
|
334
334
|
sky/server/html/log.html,sha256=TSGZktua9Ysl_ysg3w60rjxAxhH61AJnsYDHdtqrjmI,6929
|
335
335
|
sky/server/html/token_page.html,sha256=eUndS5u1foL9vaWGPRTLMt7lCzD1g0wYJ2v_EeeFzlc,7046
|
336
336
|
sky/server/requests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
337
337
|
sky/server/requests/event_loop.py,sha256=OhpPbuce65bbjpGRlcJa78AVnYSm08SzFKt70ypCUuQ,1211
|
338
|
-
sky/server/requests/executor.py,sha256=
|
339
|
-
sky/server/requests/payloads.py,sha256=
|
338
|
+
sky/server/requests/executor.py,sha256=_wQSD_3qAmXup5eTHs_GUzTRYemModz1gECsDRQmxg4,26424
|
339
|
+
sky/server/requests/payloads.py,sha256=UXulzuo5dY1uQTemYhAhYR0AL92AW6vxCdpI6ZgsxXk,23374
|
340
340
|
sky/server/requests/preconditions.py,sha256=uUQjzFFHf7O5-WvBypMzqViGmd1CXksbqrrDPmY_s_Y,7178
|
341
341
|
sky/server/requests/process.py,sha256=I0ToOcF_cMJi5TfZMJOn9rDmJYewQOV07Pnetzqj2IU,10805
|
342
|
-
sky/server/requests/requests.py,sha256=
|
342
|
+
sky/server/requests/requests.py,sha256=jp81kMjXkBVqQK2v4GtLQstXvMR0EOPOOsn88kYJh5g,28670
|
343
343
|
sky/server/requests/queues/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
344
344
|
sky/server/requests/queues/local_queue.py,sha256=X6VkBiUmgd_kfqIK1hCtMWG1b8GiZbY70TBiBR6c6GY,416
|
345
345
|
sky/server/requests/queues/mp_queue.py,sha256=jDqP4Jd28U3ibSFyMR1DF9I2OWZrPZqFJrG5S6RFpyw,3403
|
@@ -440,7 +440,7 @@ sky/utils/resource_checker.py,sha256=N18XhoVIqjY1VzmKvxQxRchRgC2WIgcEQyHDkLvg4Y8
|
|
440
440
|
sky/utils/resources_utils.py,sha256=zcJXHYQt6WtQHKuWEif1QP1NtSO7XQYJBaEs625yV1Y,15958
|
441
441
|
sky/utils/rich_console_utils.py,sha256=wPvAlshaFHuMZSjiDnaK3OSBppZLBjAn-lj7AvxNBQk,553
|
442
442
|
sky/utils/rich_utils.py,sha256=ZKztFc0D5q7ma_NE2p9UKjVS9zqcJ3L53FRw6SPoUvg,14707
|
443
|
-
sky/utils/schemas.py,sha256=
|
443
|
+
sky/utils/schemas.py,sha256=hvLJn66ATm53t6Qcl4sAi56Zxf8UrKsWFpMZTy4weSY,52333
|
444
444
|
sky/utils/status_lib.py,sha256=QGkd6COD1GX1h30Mk9RMUdyeUOMJs5971GkxTcFgdsU,1705
|
445
445
|
sky/utils/subprocess_utils.py,sha256=tOpFY_1ml7JkVGAN1o473lcKPklGR95qBCW61eu8kEo,15773
|
446
446
|
sky/utils/tempstore.py,sha256=TvCVXnPHzy_BLAXHhWvUcldqOY8iXh1vEWtBGHcpbmo,1725
|
@@ -480,9 +480,9 @@ sky/workspaces/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
480
480
|
sky/workspaces/core.py,sha256=MkQoVqWN67tf4VRq284U9vgAw4lwb_cpUfwHQT4V9Ow,16598
|
481
481
|
sky/workspaces/server.py,sha256=Box45DS54xXGHy7I3tGKGy-JP0a8G_z6IhfvGlEXtsA,3439
|
482
482
|
sky/workspaces/utils.py,sha256=IIAiFoS6sdb2t0X5YoX9AietpTanZUQNTK8cePun-sY,2143
|
483
|
-
skypilot_nightly-1.0.0.
|
484
|
-
skypilot_nightly-1.0.0.
|
485
|
-
skypilot_nightly-1.0.0.
|
486
|
-
skypilot_nightly-1.0.0.
|
487
|
-
skypilot_nightly-1.0.0.
|
488
|
-
skypilot_nightly-1.0.0.
|
483
|
+
skypilot_nightly-1.0.0.dev20250709.dist-info/licenses/LICENSE,sha256=emRJAvE7ngL6x0RhQvlns5wJzGI3NEQ_WMjNmd9TZc4,12170
|
484
|
+
skypilot_nightly-1.0.0.dev20250709.dist-info/METADATA,sha256=pV9ebWXuewiUfQDPMA1niOTInKI3M7BNkMajzdiy3C4,18864
|
485
|
+
skypilot_nightly-1.0.0.dev20250709.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
486
|
+
skypilot_nightly-1.0.0.dev20250709.dist-info/entry_points.txt,sha256=StA6HYpuHj-Y61L2Ze-hK2IcLWgLZcML5gJu8cs6nU4,36
|
487
|
+
skypilot_nightly-1.0.0.dev20250709.dist-info/top_level.txt,sha256=qA8QuiNNb6Y1OF-pCUtPEr6sLEwy2xJX06Bd_CrtrHY,4
|
488
|
+
skypilot_nightly-1.0.0.dev20250709.dist-info/RECORD,,
|
/sky/dashboard/out/_next/static/{O3wBEOmvYEVEqZxAP7Czn → EqELoF4IXcALfWVihInou}/_buildManifest.js
RENAMED
File without changes
|
/sky/dashboard/out/_next/static/{O3wBEOmvYEVEqZxAP7Czn → EqELoF4IXcALfWVihInou}/_ssgManifest.js
RENAMED
File without changes
|
{skypilot_nightly-1.0.0.dev20250708.dist-info → skypilot_nightly-1.0.0.dev20250709.dist-info}/WHEEL
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|