skypilot-nightly 1.0.0.dev20250822__py3-none-any.whl → 1.0.0.dev20250824__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/adaptors/kubernetes.py +4 -0
- sky/backends/backend_utils.py +33 -6
- sky/client/sdk.py +11 -2
- sky/clouds/nebius.py +1 -0
- 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/exceptions.py +12 -0
- sky/provision/kubernetes/utils.py +176 -34
- sky/server/requests/serializers/decoders.py +2 -0
- sky/server/rest.py +10 -0
- sky/setup_files/dependencies.py +4 -2
- {skypilot_nightly-1.0.0.dev20250822.dist-info → skypilot_nightly-1.0.0.dev20250824.dist-info}/METADATA +6 -2
- {skypilot_nightly-1.0.0.dev20250822.dist-info → skypilot_nightly-1.0.0.dev20250824.dist-info}/RECORD +34 -34
- /sky/dashboard/out/_next/static/{WD29VpW0S7wsYey0qFBHQ → P-Au_yHqNENhnPF3shEpK}/_buildManifest.js +0 -0
- /sky/dashboard/out/_next/static/{WD29VpW0S7wsYey0qFBHQ → P-Au_yHqNENhnPF3shEpK}/_ssgManifest.js +0 -0
- {skypilot_nightly-1.0.0.dev20250822.dist-info → skypilot_nightly-1.0.0.dev20250824.dist-info}/WHEEL +0 -0
- {skypilot_nightly-1.0.0.dev20250822.dist-info → skypilot_nightly-1.0.0.dev20250824.dist-info}/entry_points.txt +0 -0
- {skypilot_nightly-1.0.0.dev20250822.dist-info → skypilot_nightly-1.0.0.dev20250824.dist-info}/licenses/LICENSE +0 -0
- {skypilot_nightly-1.0.0.dev20250822.dist-info → skypilot_nightly-1.0.0.dev20250824.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 = '308c36b908760389f20ba934a19afd9920315a03'
|
|
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.dev20250824'
|
|
41
41
|
__root_dir__ = directory_utils.get_sky_dir()
|
|
42
42
|
|
|
43
43
|
|
sky/adaptors/kubernetes.py
CHANGED
|
@@ -14,8 +14,12 @@ _IMPORT_ERROR_MESSAGE = ('Failed to import dependencies for Kubernetes. '
|
|
|
14
14
|
'Try running: pip install "skypilot[kubernetes]"')
|
|
15
15
|
kubernetes = common.LazyImport('kubernetes',
|
|
16
16
|
import_error_message=_IMPORT_ERROR_MESSAGE)
|
|
17
|
+
models = common.LazyImport('kubernetes.client.models',
|
|
18
|
+
import_error_message=_IMPORT_ERROR_MESSAGE)
|
|
17
19
|
urllib3 = common.LazyImport('urllib3',
|
|
18
20
|
import_error_message=_IMPORT_ERROR_MESSAGE)
|
|
21
|
+
dateutil_parser = common.LazyImport('dateutil.parser',
|
|
22
|
+
import_error_message=_IMPORT_ERROR_MESSAGE)
|
|
19
23
|
|
|
20
24
|
# Timeout to use for API calls
|
|
21
25
|
API_TIMEOUT = 5
|
sky/backends/backend_utils.py
CHANGED
|
@@ -106,6 +106,9 @@ _LAUNCHED_RESERVED_WORKER_PATTERN = re.compile(
|
|
|
106
106
|
# 10.133.0.5: ray.worker.default,
|
|
107
107
|
_LAUNCHING_IP_PATTERN = re.compile(
|
|
108
108
|
r'({}): ray[._]worker[._](?:default|reserved)'.format(IP_ADDR_REGEX))
|
|
109
|
+
_SSH_CONNECTION_TIMED_OUT_PATTERN = re.compile(r'^ssh:.*timed out$',
|
|
110
|
+
re.IGNORECASE)
|
|
111
|
+
_RAY_CLUSTER_NOT_FOUND_MESSAGE = 'Ray cluster is not found'
|
|
109
112
|
WAIT_HEAD_NODE_IP_MAX_ATTEMPTS = 3
|
|
110
113
|
|
|
111
114
|
# We check network connection by going through _TEST_IP_LIST. We may need to
|
|
@@ -2047,11 +2050,11 @@ def _update_cluster_status(cluster_name: str) -> Optional[Dict[str, Any]]:
|
|
|
2047
2050
|
require_outputs=True,
|
|
2048
2051
|
separate_stderr=True)
|
|
2049
2052
|
if rc:
|
|
2050
|
-
raise
|
|
2051
|
-
|
|
2052
|
-
f'ray cluster\'s healthiness
|
|
2053
|
-
|
|
2054
|
-
f'
|
|
2053
|
+
raise exceptions.CommandError(
|
|
2054
|
+
rc, instance_setup.RAY_STATUS_WITH_SKY_RAY_PORT_COMMAND,
|
|
2055
|
+
f'Failed to check ray cluster\'s healthiness.\n'
|
|
2056
|
+
'-- stdout --\n'
|
|
2057
|
+
f'{output}\n', stderr)
|
|
2055
2058
|
return (*_count_healthy_nodes_from_ray(output), output, stderr)
|
|
2056
2059
|
|
|
2057
2060
|
def run_ray_status_to_check_ray_cluster_healthy() -> bool:
|
|
@@ -2082,10 +2085,34 @@ def _update_cluster_status(cluster_name: str) -> Optional[Dict[str, Any]]:
|
|
|
2082
2085
|
try:
|
|
2083
2086
|
ready_head, ready_workers, output, stderr = (
|
|
2084
2087
|
get_node_counts_from_ray_status(head_runner))
|
|
2085
|
-
except
|
|
2088
|
+
except exceptions.CommandError as e:
|
|
2086
2089
|
logger.debug(f'Refreshing status ({cluster_name!r}) attempt'
|
|
2087
2090
|
f' {i}: {common_utils.format_exception(e)}')
|
|
2088
2091
|
if cloud_name != 'kubernetes':
|
|
2092
|
+
# Non-k8s clusters can be manually restarted and:
|
|
2093
|
+
# 1. Get new IP addresses, or
|
|
2094
|
+
# 2. Not have the SkyPilot runtime setup
|
|
2095
|
+
#
|
|
2096
|
+
# So we should surface a message to the user to
|
|
2097
|
+
# help them recover from this inconsistent state.
|
|
2098
|
+
has_new_ip_addr = (
|
|
2099
|
+
e.detailed_reason is not None and
|
|
2100
|
+
_SSH_CONNECTION_TIMED_OUT_PATTERN.search(
|
|
2101
|
+
e.detailed_reason.strip()) is not None)
|
|
2102
|
+
runtime_not_setup = (_RAY_CLUSTER_NOT_FOUND_MESSAGE
|
|
2103
|
+
in e.error_msg)
|
|
2104
|
+
if has_new_ip_addr or runtime_not_setup:
|
|
2105
|
+
yellow = colorama.Fore.YELLOW
|
|
2106
|
+
bright = colorama.Style.BRIGHT
|
|
2107
|
+
reset = colorama.Style.RESET_ALL
|
|
2108
|
+
ux_utils.console_newline()
|
|
2109
|
+
logger.warning(
|
|
2110
|
+
f'{yellow}Failed getting cluster status despite all nodes '
|
|
2111
|
+
f'being up ({cluster_name!r}). '
|
|
2112
|
+
f'If the cluster was restarted manually, try running: '
|
|
2113
|
+
f'{reset}{bright}sky start {cluster_name}{reset} '
|
|
2114
|
+
f'{yellow}to recover from INIT status.{reset}')
|
|
2115
|
+
return False
|
|
2089
2116
|
raise e
|
|
2090
2117
|
# We retry for kubernetes because coreweave can have a
|
|
2091
2118
|
# transient network issue.
|
sky/client/sdk.py
CHANGED
|
@@ -1513,6 +1513,14 @@ def endpoints(
|
|
|
1513
1513
|
) -> server_common.RequestId[Dict[int, str]]:
|
|
1514
1514
|
"""Gets the endpoint for a given cluster and port number (endpoint).
|
|
1515
1515
|
|
|
1516
|
+
Example:
|
|
1517
|
+
.. code-block:: python
|
|
1518
|
+
|
|
1519
|
+
import sky
|
|
1520
|
+
request_id = sky.endpoints('test-cluster')
|
|
1521
|
+
sky.get(request_id)
|
|
1522
|
+
|
|
1523
|
+
|
|
1516
1524
|
Args:
|
|
1517
1525
|
cluster: The name of the cluster.
|
|
1518
1526
|
port: The port number to get the endpoint for. If None, endpoints
|
|
@@ -1522,8 +1530,9 @@ def endpoints(
|
|
|
1522
1530
|
The request ID of the endpoints request.
|
|
1523
1531
|
|
|
1524
1532
|
Request Returns:
|
|
1525
|
-
A dictionary of port numbers to endpoints.
|
|
1526
|
-
|
|
1533
|
+
A dictionary of port numbers to endpoints.
|
|
1534
|
+
If port is None, the dictionary contains all
|
|
1535
|
+
ports:endpoints exposed on the cluster.
|
|
1527
1536
|
|
|
1528
1537
|
Request Raises:
|
|
1529
1538
|
ValueError: if the cluster is not UP or the endpoint is not exposed.
|
sky/clouds/nebius.py
CHANGED
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-6e76f636a048e145.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-6e76f636a048e145.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/P-Au_yHqNENhnPF3shEpK/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/P-Au_yHqNENhnPF3shEpK/_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":"P-Au_yHqNENhnPF3shEpK","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-6e76f636a048e145.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-06afb50d25f7c61f.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-6e76f636a048e145.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-06afb50d25f7c61f.js" defer=""></script><script src="/dashboard/_next/static/P-Au_yHqNENhnPF3shEpK/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/P-Au_yHqNENhnPF3shEpK/_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":"P-Au_yHqNENhnPF3shEpK","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-6e76f636a048e145.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-4a6f1a928fb6d370.js" defer=""></script><script src="/dashboard/_next/static/chunks/6990-08b2a1cae076a943.js" defer=""></script><script src="/dashboard/_next/static/chunks/6135-4b4d5e824b7f9d3c.js" defer=""></script><script src="/dashboard/_next/static/chunks/1121-8afcf719ea87debc.js" defer=""></script><script src="/dashboard/_next/static/chunks/6856-049014c6d43d127b.js" defer=""></script><script src="/dashboard/_next/static/chunks/6601-06114c982db410b6.js" defer=""></script><script src="/dashboard/_next/static/chunks/3015-6c9c09593b1e67b6.js" defer=""></script><script src="/dashboard/_next/static/chunks/9037-89a84fd7fa31362d.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/clusters/%5Bcluster%5D-a0527109c2fab467.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-6e76f636a048e145.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-4a6f1a928fb6d370.js" defer=""></script><script src="/dashboard/_next/static/chunks/6990-08b2a1cae076a943.js" defer=""></script><script src="/dashboard/_next/static/chunks/6135-4b4d5e824b7f9d3c.js" defer=""></script><script src="/dashboard/_next/static/chunks/1121-8afcf719ea87debc.js" defer=""></script><script src="/dashboard/_next/static/chunks/6856-049014c6d43d127b.js" defer=""></script><script src="/dashboard/_next/static/chunks/6601-06114c982db410b6.js" defer=""></script><script src="/dashboard/_next/static/chunks/3015-6c9c09593b1e67b6.js" defer=""></script><script src="/dashboard/_next/static/chunks/9037-89a84fd7fa31362d.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/clusters/%5Bcluster%5D-a0527109c2fab467.js" defer=""></script><script src="/dashboard/_next/static/P-Au_yHqNENhnPF3shEpK/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/P-Au_yHqNENhnPF3shEpK/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/clusters/[cluster]","query":{},"buildId":"P-Au_yHqNENhnPF3shEpK","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-6e76f636a048e145.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-6e76f636a048e145.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/P-Au_yHqNENhnPF3shEpK/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/P-Au_yHqNENhnPF3shEpK/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/clusters","query":{},"buildId":"P-Au_yHqNENhnPF3shEpK","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-6e76f636a048e145.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-6e76f636a048e145.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/P-Au_yHqNENhnPF3shEpK/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/P-Au_yHqNENhnPF3shEpK/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/config","query":{},"buildId":"P-Au_yHqNENhnPF3shEpK","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-6e76f636a048e145.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-6e76f636a048e145.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/P-Au_yHqNENhnPF3shEpK/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/P-Au_yHqNENhnPF3shEpK/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/","query":{},"buildId":"P-Au_yHqNENhnPF3shEpK","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-6e76f636a048e145.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-81351f95f3bec08e.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-6e76f636a048e145.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-81351f95f3bec08e.js" defer=""></script><script src="/dashboard/_next/static/P-Au_yHqNENhnPF3shEpK/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/P-Au_yHqNENhnPF3shEpK/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/infra/[context]","query":{},"buildId":"P-Au_yHqNENhnPF3shEpK","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-6e76f636a048e145.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-c320641c2bcbbea6.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-6e76f636a048e145.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-c320641c2bcbbea6.js" defer=""></script><script src="/dashboard/_next/static/P-Au_yHqNENhnPF3shEpK/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/P-Au_yHqNENhnPF3shEpK/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/infra","query":{},"buildId":"P-Au_yHqNENhnPF3shEpK","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-6e76f636a048e145.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-4a6f1a928fb6d370.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-6e76f636a048e145.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-4a6f1a928fb6d370.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/P-Au_yHqNENhnPF3shEpK/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/P-Au_yHqNENhnPF3shEpK/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/jobs/[job]","query":{},"buildId":"P-Au_yHqNENhnPF3shEpK","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-6e76f636a048e145.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-4a6f1a928fb6d370.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/jobs/pools/%5Bpool%5D-07349868f7905d37.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-6e76f636a048e145.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-4a6f1a928fb6d370.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/jobs/pools/%5Bpool%5D-07349868f7905d37.js" defer=""></script><script src="/dashboard/_next/static/P-Au_yHqNENhnPF3shEpK/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/P-Au_yHqNENhnPF3shEpK/_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":"P-Au_yHqNENhnPF3shEpK","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-6e76f636a048e145.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-7421e63ac35f8fce.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-6e76f636a048e145.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-7421e63ac35f8fce.js" defer=""></script><script src="/dashboard/_next/static/P-Au_yHqNENhnPF3shEpK/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/P-Au_yHqNENhnPF3shEpK/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/jobs","query":{},"buildId":"P-Au_yHqNENhnPF3shEpK","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-6e76f636a048e145.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-6e76f636a048e145.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/P-Au_yHqNENhnPF3shEpK/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/P-Au_yHqNENhnPF3shEpK/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/users","query":{},"buildId":"P-Au_yHqNENhnPF3shEpK","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-6e76f636a048e145.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-6e76f636a048e145.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/P-Au_yHqNENhnPF3shEpK/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/P-Au_yHqNENhnPF3shEpK/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/volumes","query":{},"buildId":"P-Au_yHqNENhnPF3shEpK","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-6e76f636a048e145.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-6e76f636a048e145.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/P-Au_yHqNENhnPF3shEpK/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/P-Au_yHqNENhnPF3shEpK/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/workspace/new","query":{},"buildId":"P-Au_yHqNENhnPF3shEpK","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-6e76f636a048e145.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/7205-88191679e7988c57.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-4a6f1a928fb6d370.js" defer=""></script><script src="/dashboard/_next/static/chunks/6990-08b2a1cae076a943.js" defer=""></script><script src="/dashboard/_next/static/chunks/6135-4b4d5e824b7f9d3c.js" defer=""></script><script src="/dashboard/_next/static/chunks/1121-8afcf719ea87debc.js" defer=""></script><script src="/dashboard/_next/static/chunks/6601-06114c982db410b6.js" defer=""></script><script src="/dashboard/_next/static/chunks/3015-6c9c09593b1e67b6.js" defer=""></script><script src="/dashboard/_next/static/chunks/1141-943efc7aff0f0c06.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/workspaces/%5Bname%5D-de06e613e20bc977.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-6e76f636a048e145.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/7205-88191679e7988c57.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-4a6f1a928fb6d370.js" defer=""></script><script src="/dashboard/_next/static/chunks/6990-08b2a1cae076a943.js" defer=""></script><script src="/dashboard/_next/static/chunks/6135-4b4d5e824b7f9d3c.js" defer=""></script><script src="/dashboard/_next/static/chunks/1121-8afcf719ea87debc.js" defer=""></script><script src="/dashboard/_next/static/chunks/6601-06114c982db410b6.js" defer=""></script><script src="/dashboard/_next/static/chunks/3015-6c9c09593b1e67b6.js" defer=""></script><script src="/dashboard/_next/static/chunks/1141-943efc7aff0f0c06.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/workspaces/%5Bname%5D-de06e613e20bc977.js" defer=""></script><script src="/dashboard/_next/static/P-Au_yHqNENhnPF3shEpK/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/P-Au_yHqNENhnPF3shEpK/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/workspaces/[name]","query":{},"buildId":"P-Au_yHqNENhnPF3shEpK","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-6e76f636a048e145.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-be35b22e2046564c.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-6e76f636a048e145.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-be35b22e2046564c.js" defer=""></script><script src="/dashboard/_next/static/P-Au_yHqNENhnPF3shEpK/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/P-Au_yHqNENhnPF3shEpK/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/workspaces","query":{},"buildId":"P-Au_yHqNENhnPF3shEpK","assetPrefix":"/dashboard","nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html>
|
sky/exceptions.py
CHANGED
|
@@ -180,6 +180,18 @@ class KubeAPIUnreachableError(ResourcesUnavailableError):
|
|
|
180
180
|
pass
|
|
181
181
|
|
|
182
182
|
|
|
183
|
+
class KubernetesValidationError(Exception):
|
|
184
|
+
"""Raised when the Kubernetes validation fails.
|
|
185
|
+
|
|
186
|
+
It stores a list of strings that represent the path to the field which
|
|
187
|
+
caused the validation error.
|
|
188
|
+
"""
|
|
189
|
+
|
|
190
|
+
def __init__(self, path: List[str], message: str):
|
|
191
|
+
super().__init__(message)
|
|
192
|
+
self.path = path
|
|
193
|
+
|
|
194
|
+
|
|
183
195
|
class InvalidCloudConfigs(Exception):
|
|
184
196
|
"""Raised when invalid configurations are provided for a given cloud."""
|
|
185
197
|
pass
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"""Kubernetes utilities for SkyPilot."""
|
|
2
2
|
import dataclasses
|
|
3
|
+
import datetime
|
|
3
4
|
import enum
|
|
4
5
|
import functools
|
|
5
6
|
import hashlib
|
|
@@ -1656,50 +1657,191 @@ def check_credentials(context: Optional[str],
|
|
|
1656
1657
|
return True, None
|
|
1657
1658
|
|
|
1658
1659
|
|
|
1660
|
+
class PodValidator:
|
|
1661
|
+
"""Validates Kubernetes pod configs against the OpenAPI spec.
|
|
1662
|
+
|
|
1663
|
+
Adapted from kubernetes.client.ApiClient:
|
|
1664
|
+
https://github.com/kubernetes-client/python/blob/0c56ef1c8c4b50087bc7b803f6af896fb973309e/kubernetes/client/api_client.py#L33
|
|
1665
|
+
|
|
1666
|
+
We needed to adapt it because the original implementation ignores
|
|
1667
|
+
unknown fields, whereas we want to raise an error so that users
|
|
1668
|
+
are aware of the issue.
|
|
1669
|
+
"""
|
|
1670
|
+
PRIMITIVE_TYPES = (int, float, bool, str)
|
|
1671
|
+
NATIVE_TYPES_MAPPING = {
|
|
1672
|
+
'int': int,
|
|
1673
|
+
'float': float,
|
|
1674
|
+
'str': str,
|
|
1675
|
+
'bool': bool,
|
|
1676
|
+
'date': datetime.date,
|
|
1677
|
+
'datetime': datetime.datetime,
|
|
1678
|
+
'object': object,
|
|
1679
|
+
}
|
|
1680
|
+
|
|
1681
|
+
@classmethod
|
|
1682
|
+
def validate(cls, data):
|
|
1683
|
+
return cls.__validate(data, kubernetes.models.V1Pod)
|
|
1684
|
+
|
|
1685
|
+
@classmethod
|
|
1686
|
+
def __validate(cls, data, klass):
|
|
1687
|
+
"""Deserializes dict, list, str into an object.
|
|
1688
|
+
|
|
1689
|
+
:param data: dict, list or str.
|
|
1690
|
+
:param klass: class literal, or string of class name.
|
|
1691
|
+
|
|
1692
|
+
:return: object.
|
|
1693
|
+
"""
|
|
1694
|
+
if data is None:
|
|
1695
|
+
return None
|
|
1696
|
+
|
|
1697
|
+
if isinstance(klass, str):
|
|
1698
|
+
if klass.startswith('list['):
|
|
1699
|
+
sub_kls = re.match(r'list\[(.*)\]', klass).group(1)
|
|
1700
|
+
return [cls.__validate(sub_data, sub_kls) for sub_data in data]
|
|
1701
|
+
|
|
1702
|
+
if klass.startswith('dict('):
|
|
1703
|
+
sub_kls = re.match(r'dict\(([^,]*), (.*)\)', klass).group(2)
|
|
1704
|
+
return {k: cls.__validate(v, sub_kls) for k, v in data.items()}
|
|
1705
|
+
|
|
1706
|
+
# convert str to class
|
|
1707
|
+
if klass in cls.NATIVE_TYPES_MAPPING:
|
|
1708
|
+
klass = cls.NATIVE_TYPES_MAPPING[klass]
|
|
1709
|
+
else:
|
|
1710
|
+
klass = getattr(kubernetes.models, klass)
|
|
1711
|
+
|
|
1712
|
+
if klass in cls.PRIMITIVE_TYPES:
|
|
1713
|
+
return cls.__validate_primitive(data, klass)
|
|
1714
|
+
elif klass == object:
|
|
1715
|
+
return cls.__validate_object(data)
|
|
1716
|
+
elif klass == datetime.date:
|
|
1717
|
+
return cls.__validate_date(data)
|
|
1718
|
+
elif klass == datetime.datetime:
|
|
1719
|
+
return cls.__validate_datetime(data)
|
|
1720
|
+
else:
|
|
1721
|
+
return cls.__validate_model(data, klass)
|
|
1722
|
+
|
|
1723
|
+
@classmethod
|
|
1724
|
+
def __validate_primitive(cls, data, klass):
|
|
1725
|
+
"""Deserializes string to primitive type.
|
|
1726
|
+
|
|
1727
|
+
:param data: str.
|
|
1728
|
+
:param klass: class literal.
|
|
1729
|
+
|
|
1730
|
+
:return: int, long, float, str, bool.
|
|
1731
|
+
"""
|
|
1732
|
+
try:
|
|
1733
|
+
return klass(data)
|
|
1734
|
+
except UnicodeEncodeError:
|
|
1735
|
+
return str(data)
|
|
1736
|
+
except TypeError:
|
|
1737
|
+
return data
|
|
1738
|
+
|
|
1739
|
+
@classmethod
|
|
1740
|
+
def __validate_object(cls, value):
|
|
1741
|
+
"""Return an original value.
|
|
1742
|
+
|
|
1743
|
+
:return: object.
|
|
1744
|
+
"""
|
|
1745
|
+
return value
|
|
1746
|
+
|
|
1747
|
+
@classmethod
|
|
1748
|
+
def __validate_date(cls, string):
|
|
1749
|
+
"""Deserializes string to date.
|
|
1750
|
+
|
|
1751
|
+
:param string: str.
|
|
1752
|
+
:return: date.
|
|
1753
|
+
"""
|
|
1754
|
+
try:
|
|
1755
|
+
return kubernetes.dateutil_parser.parse(string).date()
|
|
1756
|
+
except ValueError as exc:
|
|
1757
|
+
raise ValueError(
|
|
1758
|
+
f'Failed to parse `{string}` as date object') from exc
|
|
1759
|
+
|
|
1760
|
+
@classmethod
|
|
1761
|
+
def __validate_datetime(cls, string):
|
|
1762
|
+
"""Deserializes string to datetime.
|
|
1763
|
+
|
|
1764
|
+
The string should be in iso8601 datetime format.
|
|
1765
|
+
|
|
1766
|
+
:param string: str.
|
|
1767
|
+
:return: datetime.
|
|
1768
|
+
"""
|
|
1769
|
+
try:
|
|
1770
|
+
return kubernetes.dateutil_parser.parse(string)
|
|
1771
|
+
except ValueError as exc:
|
|
1772
|
+
raise ValueError(
|
|
1773
|
+
f'Failed to parse `{string}` as datetime object') from exc
|
|
1774
|
+
|
|
1775
|
+
@classmethod
|
|
1776
|
+
def __validate_model(cls, data, klass):
|
|
1777
|
+
"""Deserializes list or dict to model.
|
|
1778
|
+
|
|
1779
|
+
:param data: dict, list.
|
|
1780
|
+
:param klass: class literal.
|
|
1781
|
+
:return: model object.
|
|
1782
|
+
"""
|
|
1783
|
+
|
|
1784
|
+
if not klass.openapi_types and not hasattr(klass,
|
|
1785
|
+
'get_real_child_model'):
|
|
1786
|
+
return data
|
|
1787
|
+
|
|
1788
|
+
kwargs = {}
|
|
1789
|
+
try:
|
|
1790
|
+
if (data is not None and klass.openapi_types is not None and
|
|
1791
|
+
isinstance(data, (list, dict))):
|
|
1792
|
+
# attribute_map is a dict that maps field names in snake_case
|
|
1793
|
+
# to camelCase.
|
|
1794
|
+
reverse_attribute_map = {
|
|
1795
|
+
v: k for k, v in klass.attribute_map.items()
|
|
1796
|
+
}
|
|
1797
|
+
for k, v in data.items():
|
|
1798
|
+
field_name = reverse_attribute_map.get(k, None)
|
|
1799
|
+
if field_name is None:
|
|
1800
|
+
raise ValueError(
|
|
1801
|
+
f'Unknown field `{k}`. Please ensure '
|
|
1802
|
+
'pod_config follows the Kubernetes '
|
|
1803
|
+
'Pod schema: '
|
|
1804
|
+
'https://github.com/kubernetes/kubernetes/blob/master/api/openapi-spec/v3/api__v1_openapi.json'
|
|
1805
|
+
)
|
|
1806
|
+
kwargs[field_name] = cls.__validate(
|
|
1807
|
+
v, klass.openapi_types[field_name])
|
|
1808
|
+
except exceptions.KubernetesValidationError as e:
|
|
1809
|
+
raise exceptions.KubernetesValidationError([k] + e.path,
|
|
1810
|
+
str(e)) from e
|
|
1811
|
+
except Exception as e:
|
|
1812
|
+
raise exceptions.KubernetesValidationError([k], str(e)) from e
|
|
1813
|
+
|
|
1814
|
+
instance = klass(**kwargs)
|
|
1815
|
+
|
|
1816
|
+
if hasattr(instance, 'get_real_child_model'):
|
|
1817
|
+
klass_name = instance.get_real_child_model(data)
|
|
1818
|
+
if klass_name:
|
|
1819
|
+
instance = cls.__validate(data, klass_name)
|
|
1820
|
+
return instance
|
|
1821
|
+
|
|
1659
1822
|
def check_pod_config(pod_config: dict) \
|
|
1660
1823
|
-> Tuple[bool, Optional[str]]:
|
|
1661
|
-
"""Check if the pod_config is a valid pod config
|
|
1824
|
+
"""Check if the pod_config is a valid pod config.
|
|
1825
|
+
|
|
1826
|
+
Uses the deserialize API from the kubernetes client library.
|
|
1827
|
+
|
|
1828
|
+
This is a client-side validation, meant to catch common errors like
|
|
1829
|
+
unknown/misspelled fields, and missing required fields.
|
|
1662
1830
|
|
|
1663
|
-
|
|
1831
|
+
The full validation however is done later on by the Kubernetes API server
|
|
1832
|
+
when the pod creation request is sent.
|
|
1664
1833
|
|
|
1665
1834
|
Returns:
|
|
1666
1835
|
bool: True if pod_config is valid.
|
|
1667
1836
|
str: Error message about why the pod_config is invalid, None otherwise.
|
|
1668
1837
|
"""
|
|
1669
|
-
errors = []
|
|
1670
|
-
# This api_client won't be used to send any requests, so there is no need to
|
|
1671
|
-
# load kubeconfig
|
|
1672
|
-
api_client = kubernetes.kubernetes.client.ApiClient()
|
|
1673
|
-
|
|
1674
|
-
# Used for kubernetes api_client deserialize function, the function will use
|
|
1675
|
-
# data attr, the detail ref:
|
|
1676
|
-
# https://github.com/kubernetes-client/python/blob/master/kubernetes/client/api_client.py#L244
|
|
1677
|
-
class InnerResponse():
|
|
1678
|
-
|
|
1679
|
-
def __init__(self, data: dict):
|
|
1680
|
-
self.data = json.dumps(data)
|
|
1681
|
-
|
|
1682
1838
|
try:
|
|
1683
|
-
|
|
1684
|
-
|
|
1685
|
-
|
|
1686
|
-
value = InnerResponse(pod_config['metadata'])
|
|
1687
|
-
api_client.deserialize(
|
|
1688
|
-
value, kubernetes.kubernetes.client.V1ObjectMeta)
|
|
1689
|
-
except ValueError as e:
|
|
1690
|
-
errors.append(f'Invalid metadata: {str(e)}')
|
|
1691
|
-
# Validate spec if present
|
|
1692
|
-
if 'spec' in pod_config:
|
|
1693
|
-
try:
|
|
1694
|
-
value = InnerResponse(pod_config['spec'])
|
|
1695
|
-
api_client.deserialize(value,
|
|
1696
|
-
kubernetes.kubernetes.client.V1PodSpec)
|
|
1697
|
-
except ValueError as e:
|
|
1698
|
-
errors.append(f'Invalid spec: {str(e)}')
|
|
1699
|
-
return len(errors) == 0, '.'.join(errors)
|
|
1839
|
+
PodValidator.validate(pod_config)
|
|
1840
|
+
except exceptions.KubernetesValidationError as e:
|
|
1841
|
+
return False, f'Validation error in {".".join(e.path)}: {str(e)}'
|
|
1700
1842
|
except Exception as e: # pylint: disable=broad-except
|
|
1701
|
-
|
|
1702
|
-
|
|
1843
|
+
return False, f'Unexpected error: {str(e)}'
|
|
1844
|
+
return True, None
|
|
1703
1845
|
|
|
1704
1846
|
|
|
1705
1847
|
def is_kubeconfig_exec_auth(
|
|
@@ -60,6 +60,8 @@ def decode_status(
|
|
|
60
60
|
cluster['status'] = status_lib.ClusterStatus(cluster['status'])
|
|
61
61
|
cluster['storage_mounts_metadata'] = decode_and_unpickle(
|
|
62
62
|
cluster['storage_mounts_metadata'])
|
|
63
|
+
if 'is_managed' not in cluster:
|
|
64
|
+
cluster['is_managed'] = False
|
|
63
65
|
response.append(responses.StatusResponse.model_validate(cluster))
|
|
64
66
|
return response
|
|
65
67
|
|
sky/server/rest.py
CHANGED
|
@@ -34,6 +34,16 @@ F = TypeVar('F', bound=Callable[..., Any])
|
|
|
34
34
|
_RETRY_CONTEXT = contextvars.ContextVar('retry_context', default=None)
|
|
35
35
|
|
|
36
36
|
_session = requests.Session()
|
|
37
|
+
# Tune connection pool size, otherwise the default max is just 10.
|
|
38
|
+
adapter = requests.adapters.HTTPAdapter(
|
|
39
|
+
pool_connections=50,
|
|
40
|
+
pool_maxsize=200,
|
|
41
|
+
# We handle retries by ourselves in SDK.
|
|
42
|
+
max_retries=0,
|
|
43
|
+
)
|
|
44
|
+
_session.mount('http://', adapter)
|
|
45
|
+
_session.mount('https://', adapter)
|
|
46
|
+
|
|
37
47
|
_session.headers[constants.API_VERSION_HEADER] = str(constants.API_VERSION)
|
|
38
48
|
_session.headers[constants.VERSION_HEADER] = (
|
|
39
49
|
versions.get_local_readable_version())
|
sky/setup_files/dependencies.py
CHANGED
|
@@ -165,8 +165,10 @@ extras_require: Dict[str, List[str]] = {
|
|
|
165
165
|
'scp': local_ray,
|
|
166
166
|
'oci': ['oci'] + local_ray,
|
|
167
167
|
# Kubernetes 32.0.0 has an authentication bug: https://github.com/kubernetes-client/python/issues/2333 # pylint: disable=line-too-long
|
|
168
|
-
'kubernetes': [
|
|
169
|
-
|
|
168
|
+
'kubernetes': [
|
|
169
|
+
'kubernetes>=20.0.0,!=32.0.0', 'websockets', 'python-dateutil'
|
|
170
|
+
],
|
|
171
|
+
'ssh': ['kubernetes>=20.0.0,!=32.0.0', 'websockets', 'python-dateutil'],
|
|
170
172
|
'remote': remote,
|
|
171
173
|
# For the container registry auth api. Reference:
|
|
172
174
|
# https://github.com/runpod/runpod-python/releases/tag/1.6.1
|
|
@@ -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.dev20250824
|
|
4
4
|
Summary: SkyPilot: Run AI on Any Infra — Unified, Faster, Cheaper.
|
|
5
5
|
Author: SkyPilot Team
|
|
6
6
|
License: Apache 2.0
|
|
@@ -100,9 +100,11 @@ Requires-Dist: ray[default]!=2.6.0,>=2.2.0; extra == "oci"
|
|
|
100
100
|
Provides-Extra: kubernetes
|
|
101
101
|
Requires-Dist: kubernetes!=32.0.0,>=20.0.0; extra == "kubernetes"
|
|
102
102
|
Requires-Dist: websockets; extra == "kubernetes"
|
|
103
|
+
Requires-Dist: python-dateutil; extra == "kubernetes"
|
|
103
104
|
Provides-Extra: ssh
|
|
104
105
|
Requires-Dist: kubernetes!=32.0.0,>=20.0.0; extra == "ssh"
|
|
105
106
|
Requires-Dist: websockets; extra == "ssh"
|
|
107
|
+
Requires-Dist: python-dateutil; extra == "ssh"
|
|
106
108
|
Provides-Extra: remote
|
|
107
109
|
Requires-Dist: grpcio>=1.63.0; extra == "remote"
|
|
108
110
|
Requires-Dist: protobuf<7.0.0,>=5.26.1; extra == "remote"
|
|
@@ -168,8 +170,10 @@ Requires-Dist: oci; extra == "all"
|
|
|
168
170
|
Requires-Dist: ray[default]!=2.6.0,>=2.2.0; extra == "all"
|
|
169
171
|
Requires-Dist: kubernetes!=32.0.0,>=20.0.0; extra == "all"
|
|
170
172
|
Requires-Dist: websockets; extra == "all"
|
|
173
|
+
Requires-Dist: python-dateutil; extra == "all"
|
|
171
174
|
Requires-Dist: kubernetes!=32.0.0,>=20.0.0; extra == "all"
|
|
172
175
|
Requires-Dist: websockets; extra == "all"
|
|
176
|
+
Requires-Dist: python-dateutil; extra == "all"
|
|
173
177
|
Requires-Dist: grpcio>=1.63.0; extra == "all"
|
|
174
178
|
Requires-Dist: protobuf<7.0.0,>=5.26.1; extra == "all"
|
|
175
179
|
Requires-Dist: runpod>=1.6.1; extra == "all"
|
|
@@ -258,7 +262,7 @@ SkyPilot is a system to run, manage, and scale AI workloads on any AI infrastruc
|
|
|
258
262
|
SkyPilot gives **AI teams** a simple interface to run jobs on any infra.
|
|
259
263
|
**Infra teams** get a unified control plane to manage any AI compute — with advanced scheduling, scaling, and orchestration.
|
|
260
264
|
|
|
261
|
-
|
|
265
|
+
<img src="./docs/source/images/skypilot-abstractions-long-2.png" alt="SkyPilot Abstractions">
|
|
262
266
|
|
|
263
267
|
## Overview
|
|
264
268
|
|
{skypilot_nightly-1.0.0.dev20250822.dist-info → skypilot_nightly-1.0.0.dev20250824.dist-info}/RECORD
RENAMED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
sky/__init__.py,sha256=
|
|
1
|
+
sky/__init__.py,sha256=ErYYKEgFO1itJZeoNiYaFkEnJ9HkapcA0vIZ-tQx1g8,6615
|
|
2
2
|
sky/admin_policy.py,sha256=BeSowGnWfDj58ALiNf3cc2N4gMQWzjO6aXnX7vaqYhk,9782
|
|
3
3
|
sky/authentication.py,sha256=V7zGSV7bqcAKC_EGOOS0KhJ01ZFLnme0WnjLFO7zavs,25603
|
|
4
4
|
sky/check.py,sha256=Z7D6txaOAEL7fyEQ8q-Zxk1aWaHpEcl412Rj2mThbQ0,31025
|
|
@@ -6,7 +6,7 @@ sky/cli.py,sha256=VXIZryeTtJPYpPTBKymVPmuOCyh8knfWrq-qnkr6R-4,178
|
|
|
6
6
|
sky/cloud_stores.py,sha256=Ln5GBpel-sEs7rVx7bBrMkfLwA_bctI05Rox2uoz7Lo,26388
|
|
7
7
|
sky/core.py,sha256=w6v_T5BNynOgUCc8_85U61wRlxLuF91n0fe0aC6ZqPc,57461
|
|
8
8
|
sky/dag.py,sha256=0ZpAEDXuIFo1SP7YJpF9vXiFxpRwqP8od-UXMg95td8,3929
|
|
9
|
-
sky/exceptions.py,sha256=
|
|
9
|
+
sky/exceptions.py,sha256=sZ0rYuPZKKv4brkfPPJacWo2dY48FfqevwFT1bFzORU,20328
|
|
10
10
|
sky/execution.py,sha256=v1JNAjjQC1iOXjG8eba-zrMDVGrjZjx7Ys4f4ExwQp0,34674
|
|
11
11
|
sky/global_user_state.py,sha256=-s-bJUxpEsUcdCT_U8r7mcb965Z44iUyNRNY27TpZs4,81455
|
|
12
12
|
sky/models.py,sha256=C5vuymhZtQHxtzE7sM63VV-dKJ8Zo7U7cQWCZKb9q10,3196
|
|
@@ -27,7 +27,7 @@ sky/adaptors/docker.py,sha256=_kzpZ0fkWHqqQAVVl0llTsCE31KYz3Sjn8psTBQHVkA,468
|
|
|
27
27
|
sky/adaptors/gcp.py,sha256=oEb9jClEtApw6PQnxdxDYxOCYsedvM3aiko1EW1FDVo,3501
|
|
28
28
|
sky/adaptors/hyperbolic.py,sha256=iyHDmtLFVTK9QajpAmObk0XO2OZnnO_1LbvDffPpt68,245
|
|
29
29
|
sky/adaptors/ibm.py,sha256=7YbHrWbYcZsJDgxMBNZr1yBI03mjs_C3pnCTCz-MNtQ,5068
|
|
30
|
-
sky/adaptors/kubernetes.py,sha256=
|
|
30
|
+
sky/adaptors/kubernetes.py,sha256=KMXPv_hFh55mCTX1h1mUxk7EnwdHpLPPrEsGHlpS2FA,10352
|
|
31
31
|
sky/adaptors/nebius.py,sha256=DPEK5hJ1bRMRWBXMhncF0d3Z6oFk2MgkST4NrQ7AJEc,9986
|
|
32
32
|
sky/adaptors/oci.py,sha256=xJt6J9xBSFIENa6FwEt1V1sZE8puAZ_vPEoGlyQACPs,2839
|
|
33
33
|
sky/adaptors/runpod.py,sha256=4Nt_BfZhJAKQNA3wO8cxvvNI8x4NsDGHu_4EhRDlGYQ,225
|
|
@@ -35,7 +35,7 @@ sky/adaptors/vast.py,sha256=tpvmHi7IkQNzbbHVkeo04kUSajoEpSzXr2XgeO_I1LU,695
|
|
|
35
35
|
sky/adaptors/vsphere.py,sha256=zJP9SeObEoLrpgHW2VHvZE48EhgVf8GfAEIwBeaDMfM,2129
|
|
36
36
|
sky/backends/__init__.py,sha256=tpa9gAygQopsiBUUuy3wVmr4E05FoPTFHIWqEo4i-u0,627
|
|
37
37
|
sky/backends/backend.py,sha256=DcZZYgBvhghjLnD1C2TvgAisPpcqT0oYNJ3p_P-0UT4,8098
|
|
38
|
-
sky/backends/backend_utils.py,sha256=
|
|
38
|
+
sky/backends/backend_utils.py,sha256=TTwnjhW7hVNnrVQe8dyVxHssSxL-_4mZiT-qaFQgur8,157967
|
|
39
39
|
sky/backends/cloud_vm_ray_backend.py,sha256=X-FJiOX82-Z8Ut2zX7T6u3T9rN4gxD7huwqrjriIVI8,275131
|
|
40
40
|
sky/backends/docker_utils.py,sha256=_EhM6NStZDAwcegppQqExaB5iuSn1qL4xFFUqXAz2Uk,8392
|
|
41
41
|
sky/backends/local_docker_backend.py,sha256=i_Ff6MUNiIJKknTJw0YtQcvDlba2F7f44lx_eZKfP40,17409
|
|
@@ -78,7 +78,7 @@ sky/catalog/data_fetchers/fetch_vsphere.py,sha256=Yf7tKzwJsQ_4f64IT1EAP108C1D3Rg
|
|
|
78
78
|
sky/client/__init__.py,sha256=pz6xvVSd9X-gwqbsDL0E9QOojYqM0KAD0j-NCyCIF1k,38
|
|
79
79
|
sky/client/common.py,sha256=_sX88X8weo81sA2SFTaLuapSy4qzBz3KEtsf4kLTa80,15627
|
|
80
80
|
sky/client/oauth.py,sha256=sNJ_DMsSTcxluj5FeNQ2IafZJLImRFmCAZ79bXeABn4,2871
|
|
81
|
-
sky/client/sdk.py,sha256=
|
|
81
|
+
sky/client/sdk.py,sha256=5KXbjRwgpQSQMUgbfTq-FEEhB3znySZ4RFhxpG62qDg,103905
|
|
82
82
|
sky/client/sdk_async.py,sha256=afuo3niHbLnSlvphiTWYtoKKkpzdOzzgWIkuwppAEao,30425
|
|
83
83
|
sky/client/service_account_auth.py,sha256=5jXk0G6ufuW-SHCO7BEHQeTO0_2a8KfFmA63auXFRj4,1529
|
|
84
84
|
sky/client/cli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -98,7 +98,7 @@ sky/clouds/hyperbolic.py,sha256=bmV4NFpUPgzR0ownavHHVqyw26EtOgQ_ZB6SlxlgmJw,1199
|
|
|
98
98
|
sky/clouds/ibm.py,sha256=qMbOkTMJzPn2HDH9cie9zERvukRZbZoueLIaufCECAw,22860
|
|
99
99
|
sky/clouds/kubernetes.py,sha256=G_U7G04pJYU8xnvIP-48d4umKUbLGHc-5Vv1EHLbfF8,55446
|
|
100
100
|
sky/clouds/lambda_cloud.py,sha256=aRW4GwLjaFFR6_bPbBr9o8z-SKHtuP18BAVwoPuDtBE,13553
|
|
101
|
-
sky/clouds/nebius.py,sha256=
|
|
101
|
+
sky/clouds/nebius.py,sha256=2CWWZsPJOSttYdyV4vlL5n2UqPmyJ2E9WAD_6s4_WC4,21348
|
|
102
102
|
sky/clouds/oci.py,sha256=U5wtBx78RqCgCAqjlTTgSnRqWWa7D7LIvyoo8097Fno,28571
|
|
103
103
|
sky/clouds/paperspace.py,sha256=-wvFUsUGaOlFYfe3jCdEB3_mwDmK4R66hJy8nX9822o,12010
|
|
104
104
|
sky/clouds/runpod.py,sha256=6ziQZj1YS6QBT4ilYlg8Dg0w_AT1yL9hnvvl4mMssHg,13386
|
|
@@ -112,19 +112,19 @@ sky/clouds/utils/azure_utils.py,sha256=NToRBnhEyuUvb-nBnsKTxjhOBRkMcrelL8LK4w6s4
|
|
|
112
112
|
sky/clouds/utils/gcp_utils.py,sha256=09MF4Vx0EW7S-GXGpyxpl2aQlHrqeu9ioV0nyionAyk,9890
|
|
113
113
|
sky/clouds/utils/oci_utils.py,sha256=TFqAqRLggg4Z0bhxrrq8nouSSomZy-ub1frHXEkud2M,7302
|
|
114
114
|
sky/clouds/utils/scp_utils.py,sha256=VGuccVO5uFGr8-yolWSoYrgr11z6cIeDBGcqkBzAyOs,18409
|
|
115
|
-
sky/dashboard/out/404.html,sha256=
|
|
116
|
-
sky/dashboard/out/clusters.html,sha256=
|
|
117
|
-
sky/dashboard/out/config.html,sha256=
|
|
115
|
+
sky/dashboard/out/404.html,sha256=3zgZj8MoYvjd_seRSq42nzhsxQgvMcRuR3R3cINyTD8,1423
|
|
116
|
+
sky/dashboard/out/clusters.html,sha256=P3iL-erjnenog559rLvVoSbdqKNFd5V4x5uc0iFelTo,1418
|
|
117
|
+
sky/dashboard/out/config.html,sha256=ulAdJyD3MlL2cFKxRoIpsK09hMgimnZpdSqEn7G_8iQ,1414
|
|
118
118
|
sky/dashboard/out/favicon.ico,sha256=XilUZZglAl_1zRsg85QsbQgmQAzGPQjcUIJ-A3AzYn8,93590
|
|
119
|
-
sky/dashboard/out/index.html,sha256=
|
|
120
|
-
sky/dashboard/out/infra.html,sha256=
|
|
121
|
-
sky/dashboard/out/jobs.html,sha256=
|
|
119
|
+
sky/dashboard/out/index.html,sha256=HbOILrCfCvtDGfcdzYxcI4y8bUVlv3Xo_is8renm-08,1407
|
|
120
|
+
sky/dashboard/out/infra.html,sha256=X40H7RxFfnnDGQKak_CdbNCm08vUb9E2FPTdKmyzAbE,1412
|
|
121
|
+
sky/dashboard/out/jobs.html,sha256=AIfTWtz6jUNAf2134oS-nKAm3TgWVOH4Jxt8uhvxUYU,1410
|
|
122
122
|
sky/dashboard/out/skypilot.svg,sha256=c0iRtlfLlaUm2p0rG9NFmo5FN0Qhf3pq5Xph-AeMPJw,5064
|
|
123
|
-
sky/dashboard/out/users.html,sha256=
|
|
124
|
-
sky/dashboard/out/volumes.html,sha256=
|
|
125
|
-
sky/dashboard/out/workspaces.html,sha256=
|
|
126
|
-
sky/dashboard/out/_next/static/
|
|
127
|
-
sky/dashboard/out/_next/static/
|
|
123
|
+
sky/dashboard/out/users.html,sha256=j8tk1SCcPJPvNVnzfvuG9sVr0KM9INnVno6TnbXllEg,1412
|
|
124
|
+
sky/dashboard/out/volumes.html,sha256=h5y034-4H3XQThxjD3HOj6Ffe0p6UeSLWlpKRc4KtV4,1416
|
|
125
|
+
sky/dashboard/out/workspaces.html,sha256=_1A1rUYps3rz4sqiSFk1edpFqG8M9FmxJVg1LKMaru0,1422
|
|
126
|
+
sky/dashboard/out/_next/static/P-Au_yHqNENhnPF3shEpK/_buildManifest.js,sha256=osxUordT3Fb32OsAF270nSx4GMgfsKF6Vc8OBBxtPgk,2428
|
|
127
|
+
sky/dashboard/out/_next/static/P-Au_yHqNENhnPF3shEpK/_ssgManifest.js,sha256=Z49s4suAsf5y_GfnQSvm4qtq2ggxEbZPfEDTXjy6XgA,80
|
|
128
128
|
sky/dashboard/out/_next/static/chunks/1121-8afcf719ea87debc.js,sha256=fLXxFyYpxIIH-GAL9X9Ew3rc2f6zqOZqg6TjrapDZUM,8554
|
|
129
129
|
sky/dashboard/out/_next/static/chunks/1141-943efc7aff0f0c06.js,sha256=tUOoU0nIEShZeD5pBiOWrl8-czHc6PpnxxJilnDplHM,17330
|
|
130
130
|
sky/dashboard/out/_next/static/chunks/1272-1ef0bf0237faccdb.js,sha256=VJ6y-Z6Eg2T93hQIRfWAbjAkQ7nQhglmIaVbEpKSILY,38451
|
|
@@ -179,14 +179,14 @@ sky/dashboard/out/_next/static/chunks/pages/jobs/pools/[pool]-07349868f7905d37.j
|
|
|
179
179
|
sky/dashboard/out/_next/static/chunks/pages/workspace/new-3f88a1c7e86a3f86.js,sha256=83s5N5CZwIaRcmYMfqn2we60n2VRmgFw6Tbx18b8-e0,762
|
|
180
180
|
sky/dashboard/out/_next/static/chunks/pages/workspaces/[name]-de06e613e20bc977.js,sha256=8d4XLtF8E3ahNnsbdNUQkJVbM1b9sIG9wRaoRjRwMhE,1495
|
|
181
181
|
sky/dashboard/out/_next/static/css/4614e06482d7309e.css,sha256=nk6GriyGVd1aGXrLd7BcMibnN4v0z-Q_mXGxrHFWqrE,56126
|
|
182
|
-
sky/dashboard/out/clusters/[cluster].html,sha256=
|
|
183
|
-
sky/dashboard/out/clusters/[cluster]/[job].html,sha256=
|
|
184
|
-
sky/dashboard/out/infra/[context].html,sha256=
|
|
185
|
-
sky/dashboard/out/jobs/[job].html,sha256=
|
|
186
|
-
sky/dashboard/out/jobs/pools/[pool].html,sha256=
|
|
182
|
+
sky/dashboard/out/clusters/[cluster].html,sha256=X1D6tb-oYeVkCsmd9M4SOTBNFTt_0F2pabLeX6kdqi0,2936
|
|
183
|
+
sky/dashboard/out/clusters/[cluster]/[job].html,sha256=GC_09YG2cYyXLfMfFavEdsteChdoyWgHQjnOVKlWB5s,2073
|
|
184
|
+
sky/dashboard/out/infra/[context].html,sha256=aK8corxweqCa8HPl6xP87-9ONlkSuCtXfMIP8Rs4SOo,1436
|
|
185
|
+
sky/dashboard/out/jobs/[job].html,sha256=pnOvaPI2uMKtAcK8v0qkC5hvodHt0GUS72NJRWjYGhY,2304
|
|
186
|
+
sky/dashboard/out/jobs/pools/[pool].html,sha256=IQPvRWlwSDHH7ZIpWQkBDv2GOsy2BiJ_PZAWwWXj2uM,2142
|
|
187
187
|
sky/dashboard/out/videos/cursor-small.mp4,sha256=8tRdp1vjawOrXUar1cfjOc-nkaKmcwCPZx_LO0XlCvQ,203285
|
|
188
|
-
sky/dashboard/out/workspace/new.html,sha256=
|
|
189
|
-
sky/dashboard/out/workspaces/[name].html,sha256
|
|
188
|
+
sky/dashboard/out/workspace/new.html,sha256=fGFgyYn19fP_7sqmfo25MZbDECC3Lo4rWrseDFO90fQ,1428
|
|
189
|
+
sky/dashboard/out/workspaces/[name].html,sha256=EHGka1l0lW0p1CE1ir8LL58sl1YuEWE3XiiWVNYSv6I,2759
|
|
190
190
|
sky/data/__init__.py,sha256=Nhaf1NURisXpZuwWANa2IuCyppIuc720FRwqSE2oEwY,184
|
|
191
191
|
sky/data/data_transfer.py,sha256=N8b0CQebDuHieXjvEVwlYmK6DbQxUGG1RQJEyTbh3dU,12040
|
|
192
192
|
sky/data/data_utils.py,sha256=AjEA_JRjo9NBMlv-Lq5iV4lBED_YZ1VqBR9pG6fGVWE,35179
|
|
@@ -261,7 +261,7 @@ sky/provision/kubernetes/constants.py,sha256=vZJQsAVjAgwsOskB48tIFSXtNw7IFnJOQE_
|
|
|
261
261
|
sky/provision/kubernetes/instance.py,sha256=Z9c3nUIniijD9OMQ1PO4YyuiL4764w5P_3MzSWTL-Fg,67333
|
|
262
262
|
sky/provision/kubernetes/network.py,sha256=Dgj8u7IQBHKHt-mSDhYzue1wfDk96FR_8fO89TwuZ2E,12846
|
|
263
263
|
sky/provision/kubernetes/network_utils.py,sha256=EROwcgkdVawLQVkw6cpRaEg4k2pS0V8dEoO8vh9G9Kc,12273
|
|
264
|
-
sky/provision/kubernetes/utils.py,sha256=
|
|
264
|
+
sky/provision/kubernetes/utils.py,sha256=ED3keqiKDU3FkysiTvBf_MNgE2oslv3kEgQP6yxL6xs,158275
|
|
265
265
|
sky/provision/kubernetes/volume.py,sha256=mChbYJw02vrUbBWw9a2mKHWlSfCBjWS4AeWs5_6MPSw,8142
|
|
266
266
|
sky/provision/kubernetes/manifests/fusermount-server-daemonset.yaml,sha256=S87GNAbDqgTrLuxF-afPAqQ0V-i41El4s_9KBZMuaag,1331
|
|
267
267
|
sky/provision/lambda_cloud/__init__.py,sha256=6EEvSgtUeEiup9ivIFevHmgv0GqleroO2X0K7TRa2nE,612
|
|
@@ -358,7 +358,7 @@ sky/server/config.py,sha256=XWf5Kw4am6vMO5wcyWevbQAFH-dmKb7AMEgDzD083-M,8538
|
|
|
358
358
|
sky/server/constants.py,sha256=yjX8t73w6gj3_SDSP4vBFdNdiOqq7dnlXT2pw3yo0jM,2321
|
|
359
359
|
sky/server/daemons.py,sha256=3cwp-Os2StWLaOF21Sv4jzJ1zkEYpKuiKF5HFkg86WA,8700
|
|
360
360
|
sky/server/metrics.py,sha256=6H6n6dq_C5HMaU97mJlRUB9bqOEA_k205PO15wE3AWk,3648
|
|
361
|
-
sky/server/rest.py,sha256=
|
|
361
|
+
sky/server/rest.py,sha256=GAT1uS5tacRqBbbECbVxMsnEIdEFjjuqAryNgz0IiYA,14502
|
|
362
362
|
sky/server/server.py,sha256=YTFhgaAKMIYvxwKdgPoAc0CP7TlVEm6AvEmrMEB8uqY,78411
|
|
363
363
|
sky/server/state.py,sha256=YbVOMJ1JipQQv17gLIGyiGN7MKfnP83qlUa5MB1z0Yk,747
|
|
364
364
|
sky/server/stream_utils.py,sha256=RS4RuMxQqTGqp3uxzZVtmFWzos4d49P7hMX_VklzEVU,9189
|
|
@@ -380,11 +380,11 @@ sky/server/requests/queues/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJ
|
|
|
380
380
|
sky/server/requests/queues/local_queue.py,sha256=X6VkBiUmgd_kfqIK1hCtMWG1b8GiZbY70TBiBR6c6GY,416
|
|
381
381
|
sky/server/requests/queues/mp_queue.py,sha256=jDqP4Jd28U3ibSFyMR1DF9I2OWZrPZqFJrG5S6RFpyw,3403
|
|
382
382
|
sky/server/requests/serializers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
383
|
-
sky/server/requests/serializers/decoders.py,sha256
|
|
383
|
+
sky/server/requests/serializers/decoders.py,sha256=zE2BeTYVcBAK6a_V9YmMPRBQ9xos5tjdkrR7TH2VLGc,7417
|
|
384
384
|
sky/server/requests/serializers/encoders.py,sha256=EsKpscRTjxLRgDDw4DgJNjmRu1q-5bvj6zBe-tebaLc,7584
|
|
385
385
|
sky/setup_files/MANIFEST.in,sha256=4gbgHHwSdP6BbMJv5XOt-2K6wUVWF_T9CGsdESvh918,776
|
|
386
386
|
sky/setup_files/alembic.ini,sha256=854_UKvCaFmZ8vI16tSHbGgP9IMFQ42Td6c9Zmn2Oxs,5079
|
|
387
|
-
sky/setup_files/dependencies.py,sha256=
|
|
387
|
+
sky/setup_files/dependencies.py,sha256=mljnyxEumP5CHzULMkrxPGcT7IXBu52PaLRhIAKD3fg,7293
|
|
388
388
|
sky/setup_files/setup.py,sha256=GTXvAi65S4_TSLhQ1GzkmaWf_yzciHiaxMbZumcTtKU,7522
|
|
389
389
|
sky/skylet/LICENSE,sha256=BnFrJSvUFpMUoH5mOpWnEvaC5R6Uux8W6WXgrte8iYg,12381
|
|
390
390
|
sky/skylet/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -533,9 +533,9 @@ sky/workspaces/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
|
533
533
|
sky/workspaces/core.py,sha256=AjwbbRwk0glzCnqICJk4sQzMoUcawixbXoQWKLB3-aQ,25372
|
|
534
534
|
sky/workspaces/server.py,sha256=Box45DS54xXGHy7I3tGKGy-JP0a8G_z6IhfvGlEXtsA,3439
|
|
535
535
|
sky/workspaces/utils.py,sha256=IIAiFoS6sdb2t0X5YoX9AietpTanZUQNTK8cePun-sY,2143
|
|
536
|
-
skypilot_nightly-1.0.0.
|
|
537
|
-
skypilot_nightly-1.0.0.
|
|
538
|
-
skypilot_nightly-1.0.0.
|
|
539
|
-
skypilot_nightly-1.0.0.
|
|
540
|
-
skypilot_nightly-1.0.0.
|
|
541
|
-
skypilot_nightly-1.0.0.
|
|
536
|
+
skypilot_nightly-1.0.0.dev20250824.dist-info/licenses/LICENSE,sha256=emRJAvE7ngL6x0RhQvlns5wJzGI3NEQ_WMjNmd9TZc4,12170
|
|
537
|
+
skypilot_nightly-1.0.0.dev20250824.dist-info/METADATA,sha256=ttUO6cdP3knZ5TtZZm6jdT6HcWiQeda4dpvBnsbicoE,20310
|
|
538
|
+
skypilot_nightly-1.0.0.dev20250824.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
539
|
+
skypilot_nightly-1.0.0.dev20250824.dist-info/entry_points.txt,sha256=StA6HYpuHj-Y61L2Ze-hK2IcLWgLZcML5gJu8cs6nU4,36
|
|
540
|
+
skypilot_nightly-1.0.0.dev20250824.dist-info/top_level.txt,sha256=qA8QuiNNb6Y1OF-pCUtPEr6sLEwy2xJX06Bd_CrtrHY,4
|
|
541
|
+
skypilot_nightly-1.0.0.dev20250824.dist-info/RECORD,,
|
/sky/dashboard/out/_next/static/{WD29VpW0S7wsYey0qFBHQ → P-Au_yHqNENhnPF3shEpK}/_buildManifest.js
RENAMED
|
File without changes
|
/sky/dashboard/out/_next/static/{WD29VpW0S7wsYey0qFBHQ → P-Au_yHqNENhnPF3shEpK}/_ssgManifest.js
RENAMED
|
File without changes
|
{skypilot_nightly-1.0.0.dev20250822.dist-info → skypilot_nightly-1.0.0.dev20250824.dist-info}/WHEEL
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|