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.

Files changed (34) hide show
  1. sky/__init__.py +2 -2
  2. sky/adaptors/kubernetes.py +4 -0
  3. sky/backends/backend_utils.py +33 -6
  4. sky/client/sdk.py +11 -2
  5. sky/clouds/nebius.py +1 -0
  6. sky/dashboard/out/404.html +1 -1
  7. sky/dashboard/out/clusters/[cluster]/[job].html +1 -1
  8. sky/dashboard/out/clusters/[cluster].html +1 -1
  9. sky/dashboard/out/clusters.html +1 -1
  10. sky/dashboard/out/config.html +1 -1
  11. sky/dashboard/out/index.html +1 -1
  12. sky/dashboard/out/infra/[context].html +1 -1
  13. sky/dashboard/out/infra.html +1 -1
  14. sky/dashboard/out/jobs/[job].html +1 -1
  15. sky/dashboard/out/jobs/pools/[pool].html +1 -1
  16. sky/dashboard/out/jobs.html +1 -1
  17. sky/dashboard/out/users.html +1 -1
  18. sky/dashboard/out/volumes.html +1 -1
  19. sky/dashboard/out/workspace/new.html +1 -1
  20. sky/dashboard/out/workspaces/[name].html +1 -1
  21. sky/dashboard/out/workspaces.html +1 -1
  22. sky/exceptions.py +12 -0
  23. sky/provision/kubernetes/utils.py +176 -34
  24. sky/server/requests/serializers/decoders.py +2 -0
  25. sky/server/rest.py +10 -0
  26. sky/setup_files/dependencies.py +4 -2
  27. {skypilot_nightly-1.0.0.dev20250822.dist-info → skypilot_nightly-1.0.0.dev20250824.dist-info}/METADATA +6 -2
  28. {skypilot_nightly-1.0.0.dev20250822.dist-info → skypilot_nightly-1.0.0.dev20250824.dist-info}/RECORD +34 -34
  29. /sky/dashboard/out/_next/static/{WD29VpW0S7wsYey0qFBHQ → P-Au_yHqNENhnPF3shEpK}/_buildManifest.js +0 -0
  30. /sky/dashboard/out/_next/static/{WD29VpW0S7wsYey0qFBHQ → P-Au_yHqNENhnPF3shEpK}/_ssgManifest.js +0 -0
  31. {skypilot_nightly-1.0.0.dev20250822.dist-info → skypilot_nightly-1.0.0.dev20250824.dist-info}/WHEEL +0 -0
  32. {skypilot_nightly-1.0.0.dev20250822.dist-info → skypilot_nightly-1.0.0.dev20250824.dist-info}/entry_points.txt +0 -0
  33. {skypilot_nightly-1.0.0.dev20250822.dist-info → skypilot_nightly-1.0.0.dev20250824.dist-info}/licenses/LICENSE +0 -0
  34. {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 = '9e77988300f79b611306a71b906ca4283e45c7ef'
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.dev20250822'
40
+ __version__ = '1.0.0.dev20250824'
41
41
  __root_dir__ = directory_utils.get_sky_dir()
42
42
 
43
43
 
@@ -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
@@ -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 RuntimeError(
2051
- f'Refreshing status ({cluster_name!r}): Failed to check '
2052
- f'ray cluster\'s healthiness with '
2053
- f'{instance_setup.RAY_STATUS_WITH_SKY_RAY_PORT_COMMAND}.\n'
2054
- f'-- stdout --\n{output}\n-- stderr --\n{stderr}')
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 RuntimeError as e:
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. If port is None,
1526
- the dictionary will contain all ports:endpoints exposed on the cluster.
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
@@ -336,6 +336,7 @@ class Nebius(clouds.Cloud):
336
336
  acc_count,
337
337
  use_spot=resources.use_spot,
338
338
  cpus=resources.cpus,
339
+ memory=resources.memory,
339
340
  region=resources.region,
340
341
  zone=resources.zone,
341
342
  clouds='nebius')
@@ -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/WD29VpW0S7wsYey0qFBHQ/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/WD29VpW0S7wsYey0qFBHQ/_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":"WD29VpW0S7wsYey0qFBHQ","assetPrefix":"/dashboard","nextExport":true,"isFallback":false,"gip":true,"scriptLoader":[]}</script></body></html>
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/WD29VpW0S7wsYey0qFBHQ/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/WD29VpW0S7wsYey0qFBHQ/_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":"WD29VpW0S7wsYey0qFBHQ","assetPrefix":"/dashboard","nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html>
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/WD29VpW0S7wsYey0qFBHQ/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/WD29VpW0S7wsYey0qFBHQ/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/clusters/[cluster]","query":{},"buildId":"WD29VpW0S7wsYey0qFBHQ","assetPrefix":"/dashboard","nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html>
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>
@@ -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/WD29VpW0S7wsYey0qFBHQ/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/WD29VpW0S7wsYey0qFBHQ/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/clusters","query":{},"buildId":"WD29VpW0S7wsYey0qFBHQ","assetPrefix":"/dashboard","nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html>
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>
@@ -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/WD29VpW0S7wsYey0qFBHQ/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/WD29VpW0S7wsYey0qFBHQ/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/config","query":{},"buildId":"WD29VpW0S7wsYey0qFBHQ","assetPrefix":"/dashboard","nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html>
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>
@@ -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/WD29VpW0S7wsYey0qFBHQ/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/WD29VpW0S7wsYey0qFBHQ/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/","query":{},"buildId":"WD29VpW0S7wsYey0qFBHQ","assetPrefix":"/dashboard","nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html>
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/WD29VpW0S7wsYey0qFBHQ/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/WD29VpW0S7wsYey0qFBHQ/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/infra/[context]","query":{},"buildId":"WD29VpW0S7wsYey0qFBHQ","assetPrefix":"/dashboard","nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html>
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>
@@ -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/WD29VpW0S7wsYey0qFBHQ/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/WD29VpW0S7wsYey0qFBHQ/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/infra","query":{},"buildId":"WD29VpW0S7wsYey0qFBHQ","assetPrefix":"/dashboard","nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html>
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/WD29VpW0S7wsYey0qFBHQ/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/WD29VpW0S7wsYey0qFBHQ/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/jobs/[job]","query":{},"buildId":"WD29VpW0S7wsYey0qFBHQ","assetPrefix":"/dashboard","nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html>
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/WD29VpW0S7wsYey0qFBHQ/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/WD29VpW0S7wsYey0qFBHQ/_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":"WD29VpW0S7wsYey0qFBHQ","assetPrefix":"/dashboard","nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html>
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>
@@ -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/WD29VpW0S7wsYey0qFBHQ/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/WD29VpW0S7wsYey0qFBHQ/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/jobs","query":{},"buildId":"WD29VpW0S7wsYey0qFBHQ","assetPrefix":"/dashboard","nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html>
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>
@@ -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/WD29VpW0S7wsYey0qFBHQ/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/WD29VpW0S7wsYey0qFBHQ/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/users","query":{},"buildId":"WD29VpW0S7wsYey0qFBHQ","assetPrefix":"/dashboard","nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html>
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>
@@ -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/WD29VpW0S7wsYey0qFBHQ/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/WD29VpW0S7wsYey0qFBHQ/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/volumes","query":{},"buildId":"WD29VpW0S7wsYey0qFBHQ","assetPrefix":"/dashboard","nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html>
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/WD29VpW0S7wsYey0qFBHQ/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/WD29VpW0S7wsYey0qFBHQ/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/workspace/new","query":{},"buildId":"WD29VpW0S7wsYey0qFBHQ","assetPrefix":"/dashboard","nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html>
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/WD29VpW0S7wsYey0qFBHQ/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/WD29VpW0S7wsYey0qFBHQ/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/workspaces/[name]","query":{},"buildId":"WD29VpW0S7wsYey0qFBHQ","assetPrefix":"/dashboard","nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html>
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/WD29VpW0S7wsYey0qFBHQ/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/WD29VpW0S7wsYey0qFBHQ/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/workspaces","query":{},"buildId":"WD29VpW0S7wsYey0qFBHQ","assetPrefix":"/dashboard","nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html>
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
- Using deserialize api to check the pod_config is valid or not.
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
- # Validate metadata if present
1684
- if 'metadata' in pod_config:
1685
- try:
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
- errors.append(f'Validation error: {str(e)}')
1702
- return False, '.'.join(errors)
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())
@@ -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': ['kubernetes>=20.0.0,!=32.0.0', 'websockets'],
169
- 'ssh': ['kubernetes>=20.0.0,!=32.0.0', 'websockets'],
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.dev20250822
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
- ![](./docs/source/images/skypilot-abstractions-long-2.png)
265
+ <img src="./docs/source/images/skypilot-abstractions-long-2.png" alt="SkyPilot Abstractions">
262
266
 
263
267
  ## Overview
264
268
 
@@ -1,4 +1,4 @@
1
- sky/__init__.py,sha256=1x7nH8a5SOeRcEFN5gIQM1Phs8ge1zKnVksdG_buKYM,6615
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=Ya-JUKByxUGmG03vX0A4laF7VWGUyj9pNxwkn603GUI,19998
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=x-XpvLdb0K9yvbP-MTm4OuUtP10ski2LhEuM61E8jTM,10091
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=gaWoIBnz-R0vzQfbrBIt0ktuY1YyQu8wb6jVMJiJaiY,156272
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=o4EWlaYHxKRcF40SUk7JPgtH0GdGp7xqHRwXy5evMb8,103740
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=rmWseRh7kmKGz7OavPm1aa05LDn8TF2fgZJfnqIqgzk,21310
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=PUVHsiWT9iE3QDPMXCL_NukS8KX6gHRmC7V7NYdsT2w,1423
116
- sky/dashboard/out/clusters.html,sha256=eyhK1bhTy1dr9364IXUUZ7vqNoZwFL0QYe26pgoR5T4,1418
117
- sky/dashboard/out/config.html,sha256=pmLDzUxoF3BXfXo5AZoeXYKXXIHwdQkvyzOFeDcROMA,1414
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=1lbeRaD35nnAF2-BAYf4uHTsXr6q34CaGQl946opoAU,1407
120
- sky/dashboard/out/infra.html,sha256=Qs_4AOGe0yRT5SNbSs4U8hfPczsmNWwQD0cW1kYQL-Q,1412
121
- sky/dashboard/out/jobs.html,sha256=oB4GGaN5TCe0hpN5uAYAPsiK3N6SNIRdzQ97KV8kbSU,1410
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=q--RvSYGtkG4mbz9Tr6bxMZHp0yaXXoIxHX8LJNylgk,1412
124
- sky/dashboard/out/volumes.html,sha256=egE93Wfnh4dCGnXaN0SfBESZSaD-7SAM-wfWjYVmuPQ,1416
125
- sky/dashboard/out/workspaces.html,sha256=7ZMcln5osssYrAlFoNuHt-0VpawJVWBdUcNMkJ-z1E4,1422
126
- sky/dashboard/out/_next/static/WD29VpW0S7wsYey0qFBHQ/_buildManifest.js,sha256=osxUordT3Fb32OsAF270nSx4GMgfsKF6Vc8OBBxtPgk,2428
127
- sky/dashboard/out/_next/static/WD29VpW0S7wsYey0qFBHQ/_ssgManifest.js,sha256=Z49s4suAsf5y_GfnQSvm4qtq2ggxEbZPfEDTXjy6XgA,80
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=TfiKdGIrEJZZc6MJOkko_69Cd6-8Tg0RIYp-UY-nHuo,2936
183
- sky/dashboard/out/clusters/[cluster]/[job].html,sha256=S2rHDp3id4EMwJq0U4jnoCnLsAE8iz-MKQdf28V6eq4,2073
184
- sky/dashboard/out/infra/[context].html,sha256=DM14bZXln96K2C1VFJWXDcdCxbTuv7-ibZH4E7JRJ5s,1436
185
- sky/dashboard/out/jobs/[job].html,sha256=Br5IUBMRvb0SKhfJAYAQ_Qm5KFYW50YHTl5SQ_rVnLc,2304
186
- sky/dashboard/out/jobs/pools/[pool].html,sha256=yHWlFSp4AZYmM-9DxNtA9ezOUQ4UBm3_h6ac_ieJCzI,2142
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=b2EibC2HU-qNsYp-gU2LCcUepku_NL6rA-Lyr_-8rYo,1428
189
- sky/dashboard/out/workspaces/[name].html,sha256=-qFTEcJPRPEZQQy4YsnPze6voSgVXkOZ2wE--a6EFZQ,2759
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=8H9lTtLCOCQ4k-85dieIzDfY6ylbv16hPei7oZuRDys,153609
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=tuP9sW1K3-k60qCznOxSN_cXKGAuqzbC2ROJFh2OV7k,14209
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=-1Z9iCW-gWSEWdLy4G3Qxg7Y7QoEz3dW95QrNAAKIFc,7335
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=wvF2ZpKeQ0_Gs-Y2GVtbLoINKaRQGZ0SCkiQ70yff3U,7241
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.dev20250822.dist-info/licenses/LICENSE,sha256=emRJAvE7ngL6x0RhQvlns5wJzGI3NEQ_WMjNmd9TZc4,12170
537
- skypilot_nightly-1.0.0.dev20250822.dist-info/METADATA,sha256=eG4bGnOQAVS7iFvN1ab_ig1jOI2j2-4NDyujLPI_bUQ,20080
538
- skypilot_nightly-1.0.0.dev20250822.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
539
- skypilot_nightly-1.0.0.dev20250822.dist-info/entry_points.txt,sha256=StA6HYpuHj-Y61L2Ze-hK2IcLWgLZcML5gJu8cs6nU4,36
540
- skypilot_nightly-1.0.0.dev20250822.dist-info/top_level.txt,sha256=qA8QuiNNb6Y1OF-pCUtPEr6sLEwy2xJX06Bd_CrtrHY,4
541
- skypilot_nightly-1.0.0.dev20250822.dist-info/RECORD,,
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,,