skypilot-nightly 1.0.0.dev20250421__py3-none-any.whl → 1.0.0.dev20250423__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.
Files changed (31) hide show
  1. sky/__init__.py +2 -2
  2. sky/adaptors/aws.py +2 -13
  3. sky/backends/wheel_utils.py +27 -1
  4. sky/cli.py +1 -5
  5. sky/client/cli.py +1 -5
  6. sky/clouds/aws.py +5 -5
  7. sky/clouds/service_catalog/data_fetchers/fetch_gcp.py +9 -9
  8. sky/dashboard/out/404.html +1 -1
  9. sky/dashboard/out/clusters/[cluster]/[job].html +1 -1
  10. sky/dashboard/out/clusters/[cluster].html +1 -1
  11. sky/dashboard/out/clusters.html +1 -1
  12. sky/dashboard/out/index.html +1 -1
  13. sky/dashboard/out/jobs/[job].html +1 -1
  14. sky/dashboard/out/jobs.html +1 -1
  15. sky/data/mounting_utils.py +5 -2
  16. sky/provision/runpod/utils.py +32 -6
  17. sky/server/common.py +62 -2
  18. sky/server/constants.py +1 -1
  19. sky/server/requests/payloads.py +15 -0
  20. sky/server/server.py +5 -2
  21. sky/setup_files/setup.py +1 -0
  22. sky/skypilot_config.py +7 -6
  23. sky/utils/kubernetes/gpu_labeler.py +2 -1
  24. {skypilot_nightly-1.0.0.dev20250421.dist-info → skypilot_nightly-1.0.0.dev20250423.dist-info}/METADATA +1 -1
  25. {skypilot_nightly-1.0.0.dev20250421.dist-info → skypilot_nightly-1.0.0.dev20250423.dist-info}/RECORD +31 -31
  26. /sky/dashboard/out/_next/static/{mS9YfLA5hhsJMeBj9W8J7 → 68UjuSjrx8JvfzxUuf1-w}/_buildManifest.js +0 -0
  27. /sky/dashboard/out/_next/static/{mS9YfLA5hhsJMeBj9W8J7 → 68UjuSjrx8JvfzxUuf1-w}/_ssgManifest.js +0 -0
  28. {skypilot_nightly-1.0.0.dev20250421.dist-info → skypilot_nightly-1.0.0.dev20250423.dist-info}/WHEEL +0 -0
  29. {skypilot_nightly-1.0.0.dev20250421.dist-info → skypilot_nightly-1.0.0.dev20250423.dist-info}/entry_points.txt +0 -0
  30. {skypilot_nightly-1.0.0.dev20250421.dist-info → skypilot_nightly-1.0.0.dev20250423.dist-info}/licenses/LICENSE +0 -0
  31. {skypilot_nightly-1.0.0.dev20250421.dist-info → skypilot_nightly-1.0.0.dev20250423.dist-info}/top_level.txt +0 -0
sky/__init__.py CHANGED
@@ -5,7 +5,7 @@ from typing import Optional
5
5
  import urllib.request
6
6
 
7
7
  # Replaced with the current commit when building the wheels.
8
- _SKYPILOT_COMMIT_SHA = 'd37ba6f11593127305c73cb1b1a03dc6da8452b7'
8
+ _SKYPILOT_COMMIT_SHA = '2f7f792534e7dccc3c12134123ea4f56db74eacd'
9
9
 
10
10
 
11
11
  def _get_git_commit():
@@ -35,7 +35,7 @@ def _get_git_commit():
35
35
 
36
36
 
37
37
  __commit__ = _get_git_commit()
38
- __version__ = '1.0.0.dev20250421'
38
+ __version__ = '1.0.0.dev20250423'
39
39
  __root_dir__ = os.path.dirname(os.path.abspath(__file__))
40
40
 
41
41
 
sky/adaptors/aws.py CHANGED
@@ -28,7 +28,6 @@ This is informed by the following boto3 docs:
28
28
 
29
29
  # pylint: disable=import-outside-toplevel
30
30
 
31
- import functools
32
31
  import logging
33
32
  import threading
34
33
  import time
@@ -60,23 +59,13 @@ class _ThreadLocalLRUCache(threading.local):
60
59
 
61
60
  def __init__(self, maxsize=32):
62
61
  super().__init__()
63
- self.cache = annotations.lru_cache(scope='global', maxsize=maxsize)
62
+ self.cache = annotations.lru_cache(scope='request', maxsize=maxsize)
64
63
 
65
64
 
66
65
  def _thread_local_lru_cache(maxsize=32):
67
66
  # Create thread-local storage for the LRU cache
68
67
  local_cache = _ThreadLocalLRUCache(maxsize)
69
-
70
- def decorator(func):
71
-
72
- @functools.wraps(func)
73
- def wrapper(*args, **kwargs):
74
- # Use the thread-local LRU cache
75
- return local_cache.cache(func)(*args, **kwargs)
76
-
77
- return wrapper
78
-
79
- return decorator
68
+ return local_cache.cache
80
69
 
81
70
 
82
71
  def _assert_kwargs_builtin_type(kwargs):
@@ -19,12 +19,14 @@ import subprocess
19
19
  import tempfile
20
20
  from typing import Optional, Tuple
21
21
 
22
+ import colorama
22
23
  import filelock
23
24
  from packaging import version
24
25
 
25
26
  import sky
26
27
  from sky import sky_logging
27
28
  from sky.backends import backend_utils
29
+ from sky.server import common
28
30
 
29
31
  logger = sky_logging.init_logger(__name__)
30
32
 
@@ -60,6 +62,30 @@ def _get_latest_wheel() -> pathlib.Path:
60
62
 
61
63
  def _build_sky_wheel() -> pathlib.Path:
62
64
  """Build a wheel for SkyPilot and return the path to the wheel."""
65
+ # Double check that the installed code is actually the same version as the
66
+ # running code. If not, the wheel we build will not match _WHEEL_PATTERN.
67
+ # See https://github.com/skypilot-org/skypilot/issues/5311.
68
+ version_on_disk = common.get_skypilot_version_on_disk()
69
+ if version_on_disk != sky.__version__:
70
+ logger.warning(
71
+ 'Wheel build: The installed SkyPilot version is different from the '
72
+ 'running code.\n'
73
+ f'{colorama.Style.DIM}'
74
+ f'running version: {sky.__version__}\n'
75
+ f'installed version: {version_on_disk}\n'
76
+ f'{colorama.Style.RESET_ALL}'
77
+ # The following message only applies to local API server. We have no
78
+ # way to tell from here if this is a remote or local API server. But
79
+ # we expect this to happen much more commonly to a local API server,
80
+ # so just print the hint regardless.
81
+ f'{colorama.Fore.YELLOW}'
82
+ 'Please restart the local API server by running:\n'
83
+ f'{colorama.Style.BRIGHT}sky api stop; sky api start'
84
+ f'{colorama.Style.RESET_ALL}')
85
+ raise RuntimeError('The installed SkyPilot version is different from '
86
+ 'the running code. Please restart the SkyPilot API '
87
+ 'server with: sky api stop; sky api start')
88
+
63
89
  with tempfile.TemporaryDirectory() as tmp_dir_str:
64
90
  # prepare files
65
91
  tmp_dir = pathlib.Path(tmp_dir_str)
@@ -126,7 +152,7 @@ def _build_sky_wheel() -> pathlib.Path:
126
152
  raise RuntimeError(
127
153
  f'Failed to find pip wheel for SkyPilot under {tmp_dir} with '
128
154
  f'glob pattern {_WHEEL_PATTERN!r}. '
129
- f'Found: {list(map(str, tmp_dir.glob("*")))}.'
155
+ f'Found: {list(map(str, tmp_dir.glob("*")))}. '
130
156
  'No wheel file is generated.') from None
131
157
 
132
158
  # Use a unique temporary dir per wheel hash, because there may be many
sky/cli.py CHANGED
@@ -302,13 +302,9 @@ def config_option(expose_value: bool):
302
302
  try:
303
303
  if len(value) == 0:
304
304
  return None
305
- elif len(value) > 1:
306
- raise ValueError('argument specified multiple times. '
307
- 'To specify multiple configs, use '
308
- '--config nested.key1=val1,another.key2=val2')
309
305
  else:
310
306
  # Apply the config overrides to the skypilot config.
311
- return skypilot_config.apply_cli_config(value[0])
307
+ return skypilot_config.apply_cli_config(value)
312
308
  except ValueError as e:
313
309
  raise click.BadParameter(f'{str(e)}') from e
314
310
 
sky/client/cli.py CHANGED
@@ -302,13 +302,9 @@ def config_option(expose_value: bool):
302
302
  try:
303
303
  if len(value) == 0:
304
304
  return None
305
- elif len(value) > 1:
306
- raise ValueError('argument specified multiple times. '
307
- 'To specify multiple configs, use '
308
- '--config nested.key1=val1,another.key2=val2')
309
305
  else:
310
306
  # Apply the config overrides to the skypilot config.
311
- return skypilot_config.apply_cli_config(value[0])
307
+ return skypilot_config.apply_cli_config(value)
312
308
  except ValueError as e:
313
309
  raise click.BadParameter(f'{str(e)}') from e
314
310
 
sky/clouds/aws.py CHANGED
@@ -571,7 +571,7 @@ class AWS(clouds.Cloud):
571
571
  return cls._check_credentials()
572
572
 
573
573
  @classmethod
574
- @annotations.lru_cache(scope='global',
574
+ @annotations.lru_cache(scope='request',
575
575
  maxsize=1) # Cache since getting identity is slow.
576
576
  def _check_credentials(cls) -> Tuple[bool, Optional[str]]:
577
577
  """Checks if the user has access credentials to AWS."""
@@ -710,7 +710,7 @@ class AWS(clouds.Cloud):
710
710
  return AWSIdentityType.SHARED_CREDENTIALS_FILE
711
711
 
712
712
  @classmethod
713
- @annotations.lru_cache(scope='global', maxsize=1)
713
+ @annotations.lru_cache(scope='request', maxsize=1)
714
714
  def _aws_configure_list(cls) -> Optional[bytes]:
715
715
  proc = subprocess.run('aws configure list',
716
716
  shell=True,
@@ -722,7 +722,7 @@ class AWS(clouds.Cloud):
722
722
  return proc.stdout
723
723
 
724
724
  @classmethod
725
- @annotations.lru_cache(scope='global',
725
+ @annotations.lru_cache(scope='request',
726
726
  maxsize=1) # Cache since getting identity is slow.
727
727
  def _sts_get_caller_identity(cls) -> Optional[List[List[str]]]:
728
728
  try:
@@ -804,7 +804,7 @@ class AWS(clouds.Cloud):
804
804
  return [user_ids]
805
805
 
806
806
  @classmethod
807
- @annotations.lru_cache(scope='global',
807
+ @annotations.lru_cache(scope='request',
808
808
  maxsize=1) # Cache since getting identity is slow.
809
809
  def get_user_identities(cls) -> Optional[List[List[str]]]:
810
810
  """Returns a [UserId, Account] list that uniquely identifies the user.
@@ -909,7 +909,7 @@ class AWS(clouds.Cloud):
909
909
  if os.path.exists(os.path.expanduser(f'~/.aws/{filename}'))
910
910
  }
911
911
 
912
- @annotations.lru_cache(scope='global', maxsize=1)
912
+ @annotations.lru_cache(scope='request', maxsize=1)
913
913
  def can_credential_expire(self) -> bool:
914
914
  identity_type = self._current_identity_type()
915
915
  return (identity_type is not None and
@@ -60,8 +60,9 @@ HIDDEN_TPU_DF = pd.read_csv(
60
60
  ,tpu-v3-2048,1,,,tpu-v3-2048,2048.0,614.4,us-east1,us-east1-d
61
61
  """)))
62
62
 
63
- # TPU V6e price for the following regions is missing in the SKUs.
64
- TPU_V6E_MISSING_REGIONS = ['us-central2', 'southamerica-west1']
63
+ # Maximum price for TPU V6e is $691.2/hour. Here we set a higher price
64
+ # so the failover will go to the region with precise pricing info first.
65
+ TPU_V6E_MAX_PRICE = 700
65
66
 
66
67
  # TPU V5 is not visible in specific zones. We hardcode the missing zones here.
67
68
  # NOTE(dev): Keep the zones and the df in sync.
@@ -699,13 +700,12 @@ def get_tpu_df(gce_skus: List[Dict[str, Any]],
699
700
  spot_str = 'spot ' if spot else ''
700
701
  print(f'The {spot_str}price of {tpu_name} in {tpu_region} is '
701
702
  'not found in SKUs or hidden TPU price DF.')
702
- if (tpu_name.startswith('tpu-v6e') and
703
- tpu_region in TPU_V6E_MISSING_REGIONS):
704
- if not spot:
705
- tpu_price = 0.0
706
- else:
707
- assert spot or tpu_price is not None, (row, hidden_tpu,
708
- HIDDEN_TPU_DF)
703
+ # GCP's TPU V6e pricing info is not stable and there are some
704
+ # regions that are missing the pricing info. We set the price to
705
+ # the maximum price so the failover will go to the region with
706
+ # precise pricing info first.
707
+ if tpu_name.startswith('tpu-v6e'):
708
+ tpu_price = TPU_V6E_MAX_PRICE
709
709
  return tpu_price
710
710
 
711
711
  df['Price'] = df.apply(lambda row: get_tpu_price(row, spot=False), axis=1)
@@ -1 +1 @@
1
- <!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><title>404: This page could not be found</title><meta name="next-head-count" content="3"/><link rel="preload" href="/dashboard/_next/static/css/f3538cd90cfca88c.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/f3538cd90cfca88c.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-830f59b8404e96b8.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-87d061ee6ed71b28.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-e0e2335212e72357.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-3001e84c61acddfb.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_error-1be831200e60c5c0.js" defer=""></script><script src="/dashboard/_next/static/mS9YfLA5hhsJMeBj9W8J7/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/mS9YfLA5hhsJMeBj9W8J7/_ssgManifest.js" defer=""></script></head><body><div id="__next"><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div style="line-height:48px"><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding-right:23px;font-size:24px;font-weight:500;vertical-align:top">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:28px">This page could not be found<!-- -->.</h2></div></div></div></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{"statusCode":404}},"page":"/_error","query":{},"buildId":"mS9YfLA5hhsJMeBj9W8J7","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"/><title>404: This page could not be found</title><meta name="next-head-count" content="3"/><link rel="preload" href="/dashboard/_next/static/css/f3538cd90cfca88c.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/f3538cd90cfca88c.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-830f59b8404e96b8.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-87d061ee6ed71b28.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-e0e2335212e72357.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-3001e84c61acddfb.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_error-1be831200e60c5c0.js" defer=""></script><script src="/dashboard/_next/static/68UjuSjrx8JvfzxUuf1-w/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/68UjuSjrx8JvfzxUuf1-w/_ssgManifest.js" defer=""></script></head><body><div id="__next"><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div style="line-height:48px"><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding-right:23px;font-size:24px;font-weight:500;vertical-align:top">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:28px">This page could not be found<!-- -->.</h2></div></div></div></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{"statusCode":404}},"page":"/_error","query":{},"buildId":"68UjuSjrx8JvfzxUuf1-w","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/f3538cd90cfca88c.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/f3538cd90cfca88c.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-830f59b8404e96b8.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-87d061ee6ed71b28.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-e0e2335212e72357.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-3001e84c61acddfb.js" defer=""></script><script src="/dashboard/_next/static/chunks/678-206dddca808e6d16.js" defer=""></script><script src="/dashboard/_next/static/chunks/979-7cd0778078b9cfad.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/clusters/%5Bcluster%5D/%5Bjob%5D-b09f7fbf6d5d74f6.js" defer=""></script><script src="/dashboard/_next/static/mS9YfLA5hhsJMeBj9W8J7/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/mS9YfLA5hhsJMeBj9W8J7/_ssgManifest.js" defer=""></script></head><body><div id="__next"><div>Loading...</div></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/clusters/[cluster]/[job]","query":{},"buildId":"mS9YfLA5hhsJMeBj9W8J7","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/f3538cd90cfca88c.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/f3538cd90cfca88c.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-830f59b8404e96b8.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-87d061ee6ed71b28.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-e0e2335212e72357.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-3001e84c61acddfb.js" defer=""></script><script src="/dashboard/_next/static/chunks/678-206dddca808e6d16.js" defer=""></script><script src="/dashboard/_next/static/chunks/979-7cd0778078b9cfad.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/clusters/%5Bcluster%5D/%5Bjob%5D-b09f7fbf6d5d74f6.js" defer=""></script><script src="/dashboard/_next/static/68UjuSjrx8JvfzxUuf1-w/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/68UjuSjrx8JvfzxUuf1-w/_ssgManifest.js" defer=""></script></head><body><div id="__next"><div>Loading...</div></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/clusters/[cluster]/[job]","query":{},"buildId":"68UjuSjrx8JvfzxUuf1-w","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/f3538cd90cfca88c.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/f3538cd90cfca88c.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-830f59b8404e96b8.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-87d061ee6ed71b28.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-e0e2335212e72357.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-3001e84c61acddfb.js" defer=""></script><script src="/dashboard/_next/static/chunks/678-206dddca808e6d16.js" defer=""></script><script src="/dashboard/_next/static/chunks/312-c3c8845990db8ffc.js" defer=""></script><script src="/dashboard/_next/static/chunks/979-7cd0778078b9cfad.js" defer=""></script><script src="/dashboard/_next/static/chunks/845-2ea1cc63ba1f4067.js" defer=""></script><script src="/dashboard/_next/static/chunks/236-d437cf66e68a6f64.js" defer=""></script><script src="/dashboard/_next/static/chunks/37-72fdc8f71d6e4784.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/clusters/%5Bcluster%5D-b57ec043f09c5813.js" defer=""></script><script src="/dashboard/_next/static/mS9YfLA5hhsJMeBj9W8J7/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/mS9YfLA5hhsJMeBj9W8J7/_ssgManifest.js" defer=""></script></head><body><div id="__next"><div>Loading...</div></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/clusters/[cluster]","query":{},"buildId":"mS9YfLA5hhsJMeBj9W8J7","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/f3538cd90cfca88c.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/f3538cd90cfca88c.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-830f59b8404e96b8.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-87d061ee6ed71b28.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-e0e2335212e72357.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-3001e84c61acddfb.js" defer=""></script><script src="/dashboard/_next/static/chunks/678-206dddca808e6d16.js" defer=""></script><script src="/dashboard/_next/static/chunks/312-c3c8845990db8ffc.js" defer=""></script><script src="/dashboard/_next/static/chunks/979-7cd0778078b9cfad.js" defer=""></script><script src="/dashboard/_next/static/chunks/845-2ea1cc63ba1f4067.js" defer=""></script><script src="/dashboard/_next/static/chunks/236-d437cf66e68a6f64.js" defer=""></script><script src="/dashboard/_next/static/chunks/37-72fdc8f71d6e4784.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/clusters/%5Bcluster%5D-b57ec043f09c5813.js" defer=""></script><script src="/dashboard/_next/static/68UjuSjrx8JvfzxUuf1-w/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/68UjuSjrx8JvfzxUuf1-w/_ssgManifest.js" defer=""></script></head><body><div id="__next"><div>Loading...</div></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/clusters/[cluster]","query":{},"buildId":"68UjuSjrx8JvfzxUuf1-w","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"/><link rel="preload" href="/dashboard/skypilot.svg" as="image" fetchpriority="high"/><meta name="next-head-count" content="3"/><link rel="preload" href="/dashboard/_next/static/css/f3538cd90cfca88c.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/f3538cd90cfca88c.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-830f59b8404e96b8.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-87d061ee6ed71b28.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-e0e2335212e72357.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-3001e84c61acddfb.js" defer=""></script><script src="/dashboard/_next/static/chunks/678-206dddca808e6d16.js" defer=""></script><script src="/dashboard/_next/static/chunks/312-c3c8845990db8ffc.js" defer=""></script><script src="/dashboard/_next/static/chunks/979-7cd0778078b9cfad.js" defer=""></script><script src="/dashboard/_next/static/chunks/845-2ea1cc63ba1f4067.js" defer=""></script><script src="/dashboard/_next/static/chunks/37-72fdc8f71d6e4784.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/clusters-a93b93e10b8b074e.js" defer=""></script><script src="/dashboard/_next/static/mS9YfLA5hhsJMeBj9W8J7/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/mS9YfLA5hhsJMeBj9W8J7/_ssgManifest.js" defer=""></script></head><body><div id="__next"><div class="min-h-screen bg-gray-50"><div class="fixed top-0 left-0 right-0 z-50 shadow-sm"><div class="fixed top-0 left-0 right-0 bg-white z-30 h-14 px-4 border-b border-gray-200 shadow-sm"><div class="flex items-center h-full"><div class="flex items-center space-x-4 mr-6"><a class="flex items-center px-1 pt-1 h-full" href="/dashboard"><img alt="SkyPilot Logo" fetchpriority="high" width="80" height="80" decoding="async" data-nimg="1" class="h-12 w-12" style="color:transparent;width:80px;height:80px" src="/dashboard/skypilot.svg"/></a></div><div class="hidden md:flex items-center space-x-6 mr-6"><a class="inline-flex items-center space-x-2 px-1 pt-1 border-b-2 border-transparent text-blue-600" href="/dashboard/clusters"><svg class="w-4 h-4" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect width="20" height="8" x="2" y="2" rx="2" ry="2"></rect><rect width="20" height="8" x="2" y="14" rx="2" ry="2"></rect><line x1="6" x2="6.01" y1="6" y2="6"></line><line x1="6" x2="6.01" y1="18" y2="18"></line></svg><span>Clusters</span></a><a class="inline-flex items-center space-x-2 px-1 pt-1 border-b-2 border-transparent hover:text-blue-600 hover:border-blue-600" href="/dashboard/jobs"><svg class="w-4 h-4" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M16 20V4a2 2 0 0 0-2-2h-4a2 2 0 0 0-2 2v16"></path><rect width="20" height="14" x="2" y="6" rx="2"></rect></svg><span>Jobs</span></a><div class="inline-flex items-center space-x-2 px-1 pt-1 text-gray-400"><svg class="w-4 h-4" viewBox="0 0 423.683 423.683" width="24" height="24" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" fill="currentColor" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><g id="SVGRepo_bgCarrier" stroke-width="0"></g><g id="SVGRepo_tracerCarrier" stroke-linecap="round" stroke-linejoin="round"></g><g id="SVGRepo_iconCarrier"><g><path d="M54.376,287.577h310.459c26.48,0,48.02-13.979,48.02-40.453c0-17.916-10.001-34.07-25.559-42.292 c-19.021-72.951-86.061-125.196-162.002-125.223v-3.431h-3.854V61.814h3.854v-9.569h-31.38v9.569h3.854v14.363h-3.854v3.431 c-75.941,0.026-142.97,52.272-161.988,125.217c-15.56,8.216-25.573,24.376-25.573,42.291 C6.36,273.597,27.896,287.577,54.376,287.577z M47.676,227.145l7.214-2.424l1.617-7.447 c13.884-64.232,71.707-110.862,137.467-110.862h31.274c65.763,0,123.582,46.63,137.473,110.862l1.607,7.447l7.223,2.424 c8.678,2.92,14.506,10.946,14.506,19.979c0,11.703-9.517,13.647-21.221,13.647H54.376c-11.7,0-21.22-1.944-21.22-13.647 C33.162,238.091,38.984,230.065,47.676,227.145z M423.683,334.602v36.836H0v-36.836h25.348v-18.418h372.99v18.418H423.683z"></path></g></g></svg><span>Services</span><span class="text-xs ml-2 px-1.5 py-0.5 bg-gray-100 text-gray-500 rounded">Soon</span></div></div><div class="hidden md:flex items-center space-x-2 ml-auto"><div class="flex items-center space-x-1"><a href="https://skypilot.readthedocs.io/en/latest/" target="_blank" rel="noopener noreferrer" class="inline-flex items-center px-3 py-1 text-gray-600 hover:text-blue-600 transition-colors duration-150 cursor-pointer" title="Docs"><span class="mr-1">Docs</span><svg class="w-3.5 h-3.5" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"></path><polyline points="15 3 21 3 21 9"></polyline><line x1="10" y1="14" x2="21" y2="3"></line></svg></a><div class="border-l border-gray-200 h-6 mx-1"></div><a href="https://github.com/skypilot-org/skypilot" target="_blank" rel="noopener noreferrer" class="inline-flex items-center justify-center p-2 rounded-full text-gray-600 hover:bg-gray-100 transition-colors duration-150 cursor-pointer" title="GitHub"><span class="flex items-center justify-center"><svg class="w-5 h-5" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="currentColor"><path d="M12 0c-6.626 0-12 5.373-12 12 0 5.302 3.438 9.8 8.207 11.387.599.111.793-.261.793-.577v-2.234c-3.338.726-4.033-1.416-4.033-1.416-.546-1.387-1.333-1.756-1.333-1.756-1.089-.745.083-.729.083-.729 1.205.084 1.839 1.237 1.839 1.237 1.07 1.834 2.807 1.304 3.492.997.107-.775.418-1.305.762-1.604-2.665-.305-5.467-1.334-5.467-5.931 0-1.311.469-2.381 1.236-3.221-.124-.303-.535-1.524.117-3.176 0 0 1.008-.322 3.301 1.23.957-.266 1.983-.399 3.003-.404 1.02.005 2.047.138 3.006.404 2.291-1.552 3.297-1.23 3.297-1.23.653 1.653.242 2.874.118 3.176.77.84 1.235 1.911 1.235 3.221 0 4.609-2.807 5.624-5.479 5.921.43.372.823 1.102.823 2.222v3.293c0 .319.192.694.801.576 4.765-1.589 8.199-6.086 8.199-11.386 0-6.627-5.373-12-12-12z"></path></svg></span></a><a href="https://slack.skypilot.co/" target="_blank" rel="noopener noreferrer" class="inline-flex items-center justify-center p-2 rounded-full text-gray-600 hover:bg-gray-100 transition-colors duration-150 cursor-pointer" title="Slack"><span class="flex items-center justify-center"><svg class="w-5 h-5" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="currentColor"><path transform="scale(0.85) translate(1.8, 1.8)" d="M5.042 15.165a2.528 2.528 0 0 1-2.52 2.523A2.528 2.528 0 0 1 0 15.165a2.527 2.527 0 0 1 2.522-2.52h2.52v2.52zM6.313 15.165a2.527 2.527 0 0 1 2.521-2.52 2.527 2.527 0 0 1 2.521 2.52v6.313A2.528 2.528 0 0 1 8.834 24a2.528 2.528 0 0 1-2.521-2.522v-6.313zM8.834 5.042a2.528 2.528 0 0 1-2.521-2.52A2.528 2.528 0 0 1 8.834 0a2.528 2.528 0 0 1 2.521 2.522v2.52H8.834zM8.834 6.313a2.528 2.528 0 0 1 2.521 2.521 2.528 2.528 0 0 1-2.521 2.521H2.522A2.528 2.528 0 0 1 0 8.834a2.528 2.528 0 0 1 2.522-2.521h6.312zM18.956 8.834a2.528 2.528 0 0 1 2.522-2.521A2.528 2.528 0 0 1 24 8.834a2.528 2.528 0 0 1-2.522 2.521h-2.522V8.834zM17.688 8.834a2.528 2.528 0 0 1-2.523 2.521 2.527 2.527 0 0 1-2.52-2.521V2.522A2.527 2.527 0 0 1 15.165 0a2.528 2.528 0 0 1 2.523 2.522v6.312zM15.165 18.956a2.528 2.528 0 0 1 2.523 2.522A2.528 2.528 0 0 1 15.165 24a2.527 2.527 0 0 1-2.52-2.522v-2.522h2.52zM15.165 17.688a2.527 2.527 0 0 1-2.52-2.523 2.526 2.526 0 0 1 2.52-2.52h6.313A2.527 2.527 0 0 1 24 15.165a2.528 2.528 0 0 1-2.522 2.523h-6.313z"></path></svg></span></a><a href="https://github.com/skypilot-org/skypilot/issues/new?assignees=&amp;labels=type%3A+enhancement&amp;title=" target="_blank" rel="noopener noreferrer" class="inline-flex items-center justify-center p-2 rounded-full text-gray-600 hover:bg-gray-100 transition-colors duration-150 cursor-pointer" title="Leave Feedback"><span class="flex items-center justify-center"><svg class="w-5 h-5" stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><g><path fill="none" d="M0 0h24v24H0z"></path><path d="M6.455 19L2 22.5V4a1 1 0 0 1 1-1h18a1 1 0 0 1 1 1v14a1 1 0 0 1-1 1H6.455zM4 18.385L5.763 17H20V5H4v13.385zM11 13h2v2h-2v-2zm0-6h2v5h-2V7z"></path></g></svg></span></a></div></div></div></div></div><div class="transition-all duration-200 ease-in-out min-h-screen" style="padding-top:56px"><main class="p-6"><div class="flex items-center justify-between mb-4 h-5"><div class="text-base"><a class="text-sky-blue leading-none" href="/dashboard/clusters">Sky Clusters</a></div><div class="flex items-center"><button class="justify-center whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 hover:bg-accent h-10 px-4 py-2 text-sky-blue hover:text-sky-blue-bright flex items-center"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-rotate-cw h-4 w-4 mr-1.5"><path d="M21 12a9 9 0 1 1-9-9c2.52 0 4.93 1 6.74 2.74L21 8"></path><path d="M21 3v5h-5"></path></svg><span>Refresh</span></button></div></div><div><div class="rounded-lg border bg-card text-card-foreground shadow-sm"><div class="relative w-full overflow-auto"><table class="w-full caption-bottom text-base"><thead class="[&amp;_tr]:border-b"><tr class="border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted"><th class="h-12 px-4 text-left align-middle font-medium text-[hsl(var(--text-strong))] [&amp;:has([role=checkbox])]:pr-0 sortable whitespace-nowrap">Status</th><th class="h-12 px-4 text-left align-middle font-medium text-[hsl(var(--text-strong))] [&amp;:has([role=checkbox])]:pr-0 sortable whitespace-nowrap">Cluster</th><th class="h-12 px-4 text-left align-middle font-medium text-[hsl(var(--text-strong))] [&amp;:has([role=checkbox])]:pr-0 sortable whitespace-nowrap">User</th><th class="h-12 px-4 text-left align-middle font-medium text-[hsl(var(--text-strong))] [&amp;:has([role=checkbox])]:pr-0 sortable whitespace-nowrap">Resources</th><th class="h-12 px-4 text-left align-middle font-medium text-[hsl(var(--text-strong))] [&amp;:has([role=checkbox])]:pr-0 sortable whitespace-nowrap">Region</th><th class="h-12 px-4 text-left align-middle font-medium text-[hsl(var(--text-strong))] [&amp;:has([role=checkbox])]:pr-0 sortable whitespace-nowrap">Started</th><th class="h-12 px-4 text-left align-middle font-medium text-[hsl(var(--text-strong))] [&amp;:has([role=checkbox])]:pr-0">Actions</th></tr></thead><tbody class="[&amp;_tr:last-child]:border-0"><tr class="border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted"><td class="p-4 align-middle [&amp;:has([role=checkbox])]:pr-0 text-center py-6 text-gray-500" colSpan="8">No active clusters</td></tr></tbody></table></div></div></div></main></div></div></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/clusters","query":{},"buildId":"mS9YfLA5hhsJMeBj9W8J7","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"/><link rel="preload" href="/dashboard/skypilot.svg" as="image" fetchpriority="high"/><meta name="next-head-count" content="3"/><link rel="preload" href="/dashboard/_next/static/css/f3538cd90cfca88c.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/f3538cd90cfca88c.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-830f59b8404e96b8.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-87d061ee6ed71b28.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-e0e2335212e72357.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-3001e84c61acddfb.js" defer=""></script><script src="/dashboard/_next/static/chunks/678-206dddca808e6d16.js" defer=""></script><script src="/dashboard/_next/static/chunks/312-c3c8845990db8ffc.js" defer=""></script><script src="/dashboard/_next/static/chunks/979-7cd0778078b9cfad.js" defer=""></script><script src="/dashboard/_next/static/chunks/845-2ea1cc63ba1f4067.js" defer=""></script><script src="/dashboard/_next/static/chunks/37-72fdc8f71d6e4784.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/clusters-a93b93e10b8b074e.js" defer=""></script><script src="/dashboard/_next/static/68UjuSjrx8JvfzxUuf1-w/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/68UjuSjrx8JvfzxUuf1-w/_ssgManifest.js" defer=""></script></head><body><div id="__next"><div class="min-h-screen bg-gray-50"><div class="fixed top-0 left-0 right-0 z-50 shadow-sm"><div class="fixed top-0 left-0 right-0 bg-white z-30 h-14 px-4 border-b border-gray-200 shadow-sm"><div class="flex items-center h-full"><div class="flex items-center space-x-4 mr-6"><a class="flex items-center px-1 pt-1 h-full" href="/dashboard"><img alt="SkyPilot Logo" fetchpriority="high" width="80" height="80" decoding="async" data-nimg="1" class="h-12 w-12" style="color:transparent;width:80px;height:80px" src="/dashboard/skypilot.svg"/></a></div><div class="hidden md:flex items-center space-x-6 mr-6"><a class="inline-flex items-center space-x-2 px-1 pt-1 border-b-2 border-transparent text-blue-600" href="/dashboard/clusters"><svg class="w-4 h-4" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect width="20" height="8" x="2" y="2" rx="2" ry="2"></rect><rect width="20" height="8" x="2" y="14" rx="2" ry="2"></rect><line x1="6" x2="6.01" y1="6" y2="6"></line><line x1="6" x2="6.01" y1="18" y2="18"></line></svg><span>Clusters</span></a><a class="inline-flex items-center space-x-2 px-1 pt-1 border-b-2 border-transparent hover:text-blue-600 hover:border-blue-600" href="/dashboard/jobs"><svg class="w-4 h-4" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M16 20V4a2 2 0 0 0-2-2h-4a2 2 0 0 0-2 2v16"></path><rect width="20" height="14" x="2" y="6" rx="2"></rect></svg><span>Jobs</span></a><div class="inline-flex items-center space-x-2 px-1 pt-1 text-gray-400"><svg class="w-4 h-4" viewBox="0 0 423.683 423.683" width="24" height="24" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" fill="currentColor" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><g id="SVGRepo_bgCarrier" stroke-width="0"></g><g id="SVGRepo_tracerCarrier" stroke-linecap="round" stroke-linejoin="round"></g><g id="SVGRepo_iconCarrier"><g><path d="M54.376,287.577h310.459c26.48,0,48.02-13.979,48.02-40.453c0-17.916-10.001-34.07-25.559-42.292 c-19.021-72.951-86.061-125.196-162.002-125.223v-3.431h-3.854V61.814h3.854v-9.569h-31.38v9.569h3.854v14.363h-3.854v3.431 c-75.941,0.026-142.97,52.272-161.988,125.217c-15.56,8.216-25.573,24.376-25.573,42.291 C6.36,273.597,27.896,287.577,54.376,287.577z M47.676,227.145l7.214-2.424l1.617-7.447 c13.884-64.232,71.707-110.862,137.467-110.862h31.274c65.763,0,123.582,46.63,137.473,110.862l1.607,7.447l7.223,2.424 c8.678,2.92,14.506,10.946,14.506,19.979c0,11.703-9.517,13.647-21.221,13.647H54.376c-11.7,0-21.22-1.944-21.22-13.647 C33.162,238.091,38.984,230.065,47.676,227.145z M423.683,334.602v36.836H0v-36.836h25.348v-18.418h372.99v18.418H423.683z"></path></g></g></svg><span>Services</span><span class="text-xs ml-2 px-1.5 py-0.5 bg-gray-100 text-gray-500 rounded">Soon</span></div></div><div class="hidden md:flex items-center space-x-2 ml-auto"><div class="flex items-center space-x-1"><a href="https://skypilot.readthedocs.io/en/latest/" target="_blank" rel="noopener noreferrer" class="inline-flex items-center px-3 py-1 text-gray-600 hover:text-blue-600 transition-colors duration-150 cursor-pointer" title="Docs"><span class="mr-1">Docs</span><svg class="w-3.5 h-3.5" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"></path><polyline points="15 3 21 3 21 9"></polyline><line x1="10" y1="14" x2="21" y2="3"></line></svg></a><div class="border-l border-gray-200 h-6 mx-1"></div><a href="https://github.com/skypilot-org/skypilot" target="_blank" rel="noopener noreferrer" class="inline-flex items-center justify-center p-2 rounded-full text-gray-600 hover:bg-gray-100 transition-colors duration-150 cursor-pointer" title="GitHub"><span class="flex items-center justify-center"><svg class="w-5 h-5" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="currentColor"><path d="M12 0c-6.626 0-12 5.373-12 12 0 5.302 3.438 9.8 8.207 11.387.599.111.793-.261.793-.577v-2.234c-3.338.726-4.033-1.416-4.033-1.416-.546-1.387-1.333-1.756-1.333-1.756-1.089-.745.083-.729.083-.729 1.205.084 1.839 1.237 1.839 1.237 1.07 1.834 2.807 1.304 3.492.997.107-.775.418-1.305.762-1.604-2.665-.305-5.467-1.334-5.467-5.931 0-1.311.469-2.381 1.236-3.221-.124-.303-.535-1.524.117-3.176 0 0 1.008-.322 3.301 1.23.957-.266 1.983-.399 3.003-.404 1.02.005 2.047.138 3.006.404 2.291-1.552 3.297-1.23 3.297-1.23.653 1.653.242 2.874.118 3.176.77.84 1.235 1.911 1.235 3.221 0 4.609-2.807 5.624-5.479 5.921.43.372.823 1.102.823 2.222v3.293c0 .319.192.694.801.576 4.765-1.589 8.199-6.086 8.199-11.386 0-6.627-5.373-12-12-12z"></path></svg></span></a><a href="https://slack.skypilot.co/" target="_blank" rel="noopener noreferrer" class="inline-flex items-center justify-center p-2 rounded-full text-gray-600 hover:bg-gray-100 transition-colors duration-150 cursor-pointer" title="Slack"><span class="flex items-center justify-center"><svg class="w-5 h-5" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="currentColor"><path transform="scale(0.85) translate(1.8, 1.8)" d="M5.042 15.165a2.528 2.528 0 0 1-2.52 2.523A2.528 2.528 0 0 1 0 15.165a2.527 2.527 0 0 1 2.522-2.52h2.52v2.52zM6.313 15.165a2.527 2.527 0 0 1 2.521-2.52 2.527 2.527 0 0 1 2.521 2.52v6.313A2.528 2.528 0 0 1 8.834 24a2.528 2.528 0 0 1-2.521-2.522v-6.313zM8.834 5.042a2.528 2.528 0 0 1-2.521-2.52A2.528 2.528 0 0 1 8.834 0a2.528 2.528 0 0 1 2.521 2.522v2.52H8.834zM8.834 6.313a2.528 2.528 0 0 1 2.521 2.521 2.528 2.528 0 0 1-2.521 2.521H2.522A2.528 2.528 0 0 1 0 8.834a2.528 2.528 0 0 1 2.522-2.521h6.312zM18.956 8.834a2.528 2.528 0 0 1 2.522-2.521A2.528 2.528 0 0 1 24 8.834a2.528 2.528 0 0 1-2.522 2.521h-2.522V8.834zM17.688 8.834a2.528 2.528 0 0 1-2.523 2.521 2.527 2.527 0 0 1-2.52-2.521V2.522A2.527 2.527 0 0 1 15.165 0a2.528 2.528 0 0 1 2.523 2.522v6.312zM15.165 18.956a2.528 2.528 0 0 1 2.523 2.522A2.528 2.528 0 0 1 15.165 24a2.527 2.527 0 0 1-2.52-2.522v-2.522h2.52zM15.165 17.688a2.527 2.527 0 0 1-2.52-2.523 2.526 2.526 0 0 1 2.52-2.52h6.313A2.527 2.527 0 0 1 24 15.165a2.528 2.528 0 0 1-2.522 2.523h-6.313z"></path></svg></span></a><a href="https://github.com/skypilot-org/skypilot/issues/new?assignees=&amp;labels=type%3A+enhancement&amp;title=" target="_blank" rel="noopener noreferrer" class="inline-flex items-center justify-center p-2 rounded-full text-gray-600 hover:bg-gray-100 transition-colors duration-150 cursor-pointer" title="Leave Feedback"><span class="flex items-center justify-center"><svg class="w-5 h-5" stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><g><path fill="none" d="M0 0h24v24H0z"></path><path d="M6.455 19L2 22.5V4a1 1 0 0 1 1-1h18a1 1 0 0 1 1 1v14a1 1 0 0 1-1 1H6.455zM4 18.385L5.763 17H20V5H4v13.385zM11 13h2v2h-2v-2zm0-6h2v5h-2V7z"></path></g></svg></span></a></div></div></div></div></div><div class="transition-all duration-200 ease-in-out min-h-screen" style="padding-top:56px"><main class="p-6"><div class="flex items-center justify-between mb-4 h-5"><div class="text-base"><a class="text-sky-blue leading-none" href="/dashboard/clusters">Sky Clusters</a></div><div class="flex items-center"><button class="justify-center whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 hover:bg-accent h-10 px-4 py-2 text-sky-blue hover:text-sky-blue-bright flex items-center"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-rotate-cw h-4 w-4 mr-1.5"><path d="M21 12a9 9 0 1 1-9-9c2.52 0 4.93 1 6.74 2.74L21 8"></path><path d="M21 3v5h-5"></path></svg><span>Refresh</span></button></div></div><div><div class="rounded-lg border bg-card text-card-foreground shadow-sm"><div class="relative w-full overflow-auto"><table class="w-full caption-bottom text-base"><thead class="[&amp;_tr]:border-b"><tr class="border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted"><th class="h-12 px-4 text-left align-middle font-medium text-[hsl(var(--text-strong))] [&amp;:has([role=checkbox])]:pr-0 sortable whitespace-nowrap">Status</th><th class="h-12 px-4 text-left align-middle font-medium text-[hsl(var(--text-strong))] [&amp;:has([role=checkbox])]:pr-0 sortable whitespace-nowrap">Cluster</th><th class="h-12 px-4 text-left align-middle font-medium text-[hsl(var(--text-strong))] [&amp;:has([role=checkbox])]:pr-0 sortable whitespace-nowrap">User</th><th class="h-12 px-4 text-left align-middle font-medium text-[hsl(var(--text-strong))] [&amp;:has([role=checkbox])]:pr-0 sortable whitespace-nowrap">Resources</th><th class="h-12 px-4 text-left align-middle font-medium text-[hsl(var(--text-strong))] [&amp;:has([role=checkbox])]:pr-0 sortable whitespace-nowrap">Region</th><th class="h-12 px-4 text-left align-middle font-medium text-[hsl(var(--text-strong))] [&amp;:has([role=checkbox])]:pr-0 sortable whitespace-nowrap">Started</th><th class="h-12 px-4 text-left align-middle font-medium text-[hsl(var(--text-strong))] [&amp;:has([role=checkbox])]:pr-0">Actions</th></tr></thead><tbody class="[&amp;_tr:last-child]:border-0"><tr class="border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted"><td class="p-4 align-middle [&amp;:has([role=checkbox])]:pr-0 text-center py-6 text-gray-500" colSpan="8">No active clusters</td></tr></tbody></table></div></div></div></main></div></div></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/clusters","query":{},"buildId":"68UjuSjrx8JvfzxUuf1-w","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/f3538cd90cfca88c.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/f3538cd90cfca88c.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-830f59b8404e96b8.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-87d061ee6ed71b28.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-e0e2335212e72357.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-3001e84c61acddfb.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/index-f9f039532ca8cbc4.js" defer=""></script><script src="/dashboard/_next/static/mS9YfLA5hhsJMeBj9W8J7/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/mS9YfLA5hhsJMeBj9W8J7/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/","query":{},"buildId":"mS9YfLA5hhsJMeBj9W8J7","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/f3538cd90cfca88c.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/f3538cd90cfca88c.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-830f59b8404e96b8.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-87d061ee6ed71b28.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-e0e2335212e72357.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-3001e84c61acddfb.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/index-f9f039532ca8cbc4.js" defer=""></script><script src="/dashboard/_next/static/68UjuSjrx8JvfzxUuf1-w/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/68UjuSjrx8JvfzxUuf1-w/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/","query":{},"buildId":"68UjuSjrx8JvfzxUuf1-w","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/f3538cd90cfca88c.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/f3538cd90cfca88c.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-830f59b8404e96b8.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-87d061ee6ed71b28.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-e0e2335212e72357.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-3001e84c61acddfb.js" defer=""></script><script src="/dashboard/_next/static/chunks/678-206dddca808e6d16.js" defer=""></script><script src="/dashboard/_next/static/chunks/979-7cd0778078b9cfad.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/jobs/%5Bjob%5D-ef2e0e91a9222cac.js" defer=""></script><script src="/dashboard/_next/static/mS9YfLA5hhsJMeBj9W8J7/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/mS9YfLA5hhsJMeBj9W8J7/_ssgManifest.js" defer=""></script></head><body><div id="__next"><div>Loading...</div></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/jobs/[job]","query":{},"buildId":"mS9YfLA5hhsJMeBj9W8J7","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/f3538cd90cfca88c.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/f3538cd90cfca88c.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-830f59b8404e96b8.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-87d061ee6ed71b28.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-e0e2335212e72357.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-3001e84c61acddfb.js" defer=""></script><script src="/dashboard/_next/static/chunks/678-206dddca808e6d16.js" defer=""></script><script src="/dashboard/_next/static/chunks/979-7cd0778078b9cfad.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/jobs/%5Bjob%5D-ef2e0e91a9222cac.js" defer=""></script><script src="/dashboard/_next/static/68UjuSjrx8JvfzxUuf1-w/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/68UjuSjrx8JvfzxUuf1-w/_ssgManifest.js" defer=""></script></head><body><div id="__next"><div>Loading...</div></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/jobs/[job]","query":{},"buildId":"68UjuSjrx8JvfzxUuf1-w","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"/><link rel="preload" href="/dashboard/skypilot.svg" as="image" fetchpriority="high"/><meta name="next-head-count" content="3"/><link rel="preload" href="/dashboard/_next/static/css/f3538cd90cfca88c.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/f3538cd90cfca88c.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-830f59b8404e96b8.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-87d061ee6ed71b28.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-e0e2335212e72357.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-3001e84c61acddfb.js" defer=""></script><script src="/dashboard/_next/static/chunks/678-206dddca808e6d16.js" defer=""></script><script src="/dashboard/_next/static/chunks/312-c3c8845990db8ffc.js" defer=""></script><script src="/dashboard/_next/static/chunks/979-7cd0778078b9cfad.js" defer=""></script><script src="/dashboard/_next/static/chunks/845-2ea1cc63ba1f4067.js" defer=""></script><script src="/dashboard/_next/static/chunks/236-d437cf66e68a6f64.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/jobs-a75029b67aab6a2e.js" defer=""></script><script src="/dashboard/_next/static/mS9YfLA5hhsJMeBj9W8J7/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/mS9YfLA5hhsJMeBj9W8J7/_ssgManifest.js" defer=""></script></head><body><div id="__next"><div class="min-h-screen bg-gray-50"><div class="fixed top-0 left-0 right-0 z-50 shadow-sm"><div class="fixed top-0 left-0 right-0 bg-white z-30 h-14 px-4 border-b border-gray-200 shadow-sm"><div class="flex items-center h-full"><div class="flex items-center space-x-4 mr-6"><a class="flex items-center px-1 pt-1 h-full" href="/dashboard"><img alt="SkyPilot Logo" fetchpriority="high" width="80" height="80" decoding="async" data-nimg="1" class="h-12 w-12" style="color:transparent;width:80px;height:80px" src="/dashboard/skypilot.svg"/></a></div><div class="hidden md:flex items-center space-x-6 mr-6"><a class="inline-flex items-center space-x-2 px-1 pt-1 border-b-2 border-transparent hover:text-blue-600 hover:border-blue-600" href="/dashboard/clusters"><svg class="w-4 h-4" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect width="20" height="8" x="2" y="2" rx="2" ry="2"></rect><rect width="20" height="8" x="2" y="14" rx="2" ry="2"></rect><line x1="6" x2="6.01" y1="6" y2="6"></line><line x1="6" x2="6.01" y1="18" y2="18"></line></svg><span>Clusters</span></a><a class="inline-flex items-center space-x-2 px-1 pt-1 border-b-2 border-transparent text-blue-600" href="/dashboard/jobs"><svg class="w-4 h-4" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M16 20V4a2 2 0 0 0-2-2h-4a2 2 0 0 0-2 2v16"></path><rect width="20" height="14" x="2" y="6" rx="2"></rect></svg><span>Jobs</span></a><div class="inline-flex items-center space-x-2 px-1 pt-1 text-gray-400"><svg class="w-4 h-4" viewBox="0 0 423.683 423.683" width="24" height="24" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" fill="currentColor" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><g id="SVGRepo_bgCarrier" stroke-width="0"></g><g id="SVGRepo_tracerCarrier" stroke-linecap="round" stroke-linejoin="round"></g><g id="SVGRepo_iconCarrier"><g><path d="M54.376,287.577h310.459c26.48,0,48.02-13.979,48.02-40.453c0-17.916-10.001-34.07-25.559-42.292 c-19.021-72.951-86.061-125.196-162.002-125.223v-3.431h-3.854V61.814h3.854v-9.569h-31.38v9.569h3.854v14.363h-3.854v3.431 c-75.941,0.026-142.97,52.272-161.988,125.217c-15.56,8.216-25.573,24.376-25.573,42.291 C6.36,273.597,27.896,287.577,54.376,287.577z M47.676,227.145l7.214-2.424l1.617-7.447 c13.884-64.232,71.707-110.862,137.467-110.862h31.274c65.763,0,123.582,46.63,137.473,110.862l1.607,7.447l7.223,2.424 c8.678,2.92,14.506,10.946,14.506,19.979c0,11.703-9.517,13.647-21.221,13.647H54.376c-11.7,0-21.22-1.944-21.22-13.647 C33.162,238.091,38.984,230.065,47.676,227.145z M423.683,334.602v36.836H0v-36.836h25.348v-18.418h372.99v18.418H423.683z"></path></g></g></svg><span>Services</span><span class="text-xs ml-2 px-1.5 py-0.5 bg-gray-100 text-gray-500 rounded">Soon</span></div></div><div class="hidden md:flex items-center space-x-2 ml-auto"><div class="flex items-center space-x-1"><a href="https://skypilot.readthedocs.io/en/latest/" target="_blank" rel="noopener noreferrer" class="inline-flex items-center px-3 py-1 text-gray-600 hover:text-blue-600 transition-colors duration-150 cursor-pointer" title="Docs"><span class="mr-1">Docs</span><svg class="w-3.5 h-3.5" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"></path><polyline points="15 3 21 3 21 9"></polyline><line x1="10" y1="14" x2="21" y2="3"></line></svg></a><div class="border-l border-gray-200 h-6 mx-1"></div><a href="https://github.com/skypilot-org/skypilot" target="_blank" rel="noopener noreferrer" class="inline-flex items-center justify-center p-2 rounded-full text-gray-600 hover:bg-gray-100 transition-colors duration-150 cursor-pointer" title="GitHub"><span class="flex items-center justify-center"><svg class="w-5 h-5" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="currentColor"><path d="M12 0c-6.626 0-12 5.373-12 12 0 5.302 3.438 9.8 8.207 11.387.599.111.793-.261.793-.577v-2.234c-3.338.726-4.033-1.416-4.033-1.416-.546-1.387-1.333-1.756-1.333-1.756-1.089-.745.083-.729.083-.729 1.205.084 1.839 1.237 1.839 1.237 1.07 1.834 2.807 1.304 3.492.997.107-.775.418-1.305.762-1.604-2.665-.305-5.467-1.334-5.467-5.931 0-1.311.469-2.381 1.236-3.221-.124-.303-.535-1.524.117-3.176 0 0 1.008-.322 3.301 1.23.957-.266 1.983-.399 3.003-.404 1.02.005 2.047.138 3.006.404 2.291-1.552 3.297-1.23 3.297-1.23.653 1.653.242 2.874.118 3.176.77.84 1.235 1.911 1.235 3.221 0 4.609-2.807 5.624-5.479 5.921.43.372.823 1.102.823 2.222v3.293c0 .319.192.694.801.576 4.765-1.589 8.199-6.086 8.199-11.386 0-6.627-5.373-12-12-12z"></path></svg></span></a><a href="https://slack.skypilot.co/" target="_blank" rel="noopener noreferrer" class="inline-flex items-center justify-center p-2 rounded-full text-gray-600 hover:bg-gray-100 transition-colors duration-150 cursor-pointer" title="Slack"><span class="flex items-center justify-center"><svg class="w-5 h-5" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="currentColor"><path transform="scale(0.85) translate(1.8, 1.8)" d="M5.042 15.165a2.528 2.528 0 0 1-2.52 2.523A2.528 2.528 0 0 1 0 15.165a2.527 2.527 0 0 1 2.522-2.52h2.52v2.52zM6.313 15.165a2.527 2.527 0 0 1 2.521-2.52 2.527 2.527 0 0 1 2.521 2.52v6.313A2.528 2.528 0 0 1 8.834 24a2.528 2.528 0 0 1-2.521-2.522v-6.313zM8.834 5.042a2.528 2.528 0 0 1-2.521-2.52A2.528 2.528 0 0 1 8.834 0a2.528 2.528 0 0 1 2.521 2.522v2.52H8.834zM8.834 6.313a2.528 2.528 0 0 1 2.521 2.521 2.528 2.528 0 0 1-2.521 2.521H2.522A2.528 2.528 0 0 1 0 8.834a2.528 2.528 0 0 1 2.522-2.521h6.312zM18.956 8.834a2.528 2.528 0 0 1 2.522-2.521A2.528 2.528 0 0 1 24 8.834a2.528 2.528 0 0 1-2.522 2.521h-2.522V8.834zM17.688 8.834a2.528 2.528 0 0 1-2.523 2.521 2.527 2.527 0 0 1-2.52-2.521V2.522A2.527 2.527 0 0 1 15.165 0a2.528 2.528 0 0 1 2.523 2.522v6.312zM15.165 18.956a2.528 2.528 0 0 1 2.523 2.522A2.528 2.528 0 0 1 15.165 24a2.527 2.527 0 0 1-2.52-2.522v-2.522h2.52zM15.165 17.688a2.527 2.527 0 0 1-2.52-2.523 2.526 2.526 0 0 1 2.52-2.52h6.313A2.527 2.527 0 0 1 24 15.165a2.528 2.528 0 0 1-2.522 2.523h-6.313z"></path></svg></span></a><a href="https://github.com/skypilot-org/skypilot/issues/new?assignees=&amp;labels=type%3A+enhancement&amp;title=" target="_blank" rel="noopener noreferrer" class="inline-flex items-center justify-center p-2 rounded-full text-gray-600 hover:bg-gray-100 transition-colors duration-150 cursor-pointer" title="Leave Feedback"><span class="flex items-center justify-center"><svg class="w-5 h-5" stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><g><path fill="none" d="M0 0h24v24H0z"></path><path d="M6.455 19L2 22.5V4a1 1 0 0 1 1-1h18a1 1 0 0 1 1 1v14a1 1 0 0 1-1 1H6.455zM4 18.385L5.763 17H20V5H4v13.385zM11 13h2v2h-2v-2zm0-6h2v5h-2V7z"></path></g></svg></span></a></div></div></div></div></div><div class="transition-all duration-200 ease-in-out min-h-screen" style="padding-top:56px"><main class="p-6"><div class="flex items-center justify-between mb-4 h-5"><div class="text-base"><a class="text-sky-blue hover:underline leading-none" href="/dashboard/jobs">Managed Jobs</a></div><div class="flex items-center space-x-2"><button class="inline-flex items-center justify-center whitespace-nowrap text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 hover:bg-accent h-9 rounded-md px-3 text-sky-blue hover:text-sky-blue-bright" title="Refresh"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-rotate-cw h-4 w-4 mr-1.5"><path d="M21 12a9 9 0 1 1-9-9c2.52 0 4.93 1 6.74 2.74L21 8"></path><path d="M21 3v5h-5"></path></svg><span>Refresh</span></button></div></div><div class="relative"><div class="flex flex-col space-y-1 mb-1"><div class="flex flex-wrap items-center text-sm mb-1"><span class="mr-2 text-sm font-medium">Statuses:</span><div class="flex flex-wrap gap-2 items-center"></div></div></div><div class="rounded-lg border bg-card text-card-foreground shadow-sm"><div class="relative w-full overflow-auto"><table class="w-full caption-bottom text-base"><thead class="[&amp;_tr]:border-b"><tr class="border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted"><th class="h-12 px-4 text-left align-middle font-medium text-[hsl(var(--text-strong))] [&amp;:has([role=checkbox])]:pr-0 sortable whitespace-nowrap">ID</th><th class="h-12 px-4 text-left align-middle font-medium text-[hsl(var(--text-strong))] [&amp;:has([role=checkbox])]:pr-0 sortable whitespace-nowrap">Name</th><th class="h-12 px-4 text-left align-middle font-medium text-[hsl(var(--text-strong))] [&amp;:has([role=checkbox])]:pr-0 sortable whitespace-nowrap">User</th><th class="h-12 px-4 text-left align-middle font-medium text-[hsl(var(--text-strong))] [&amp;:has([role=checkbox])]:pr-0 sortable whitespace-nowrap">Submitted</th><th class="h-12 px-4 text-left align-middle font-medium text-[hsl(var(--text-strong))] [&amp;:has([role=checkbox])]:pr-0 sortable whitespace-nowrap">Duration</th><th class="h-12 px-4 text-left align-middle font-medium text-[hsl(var(--text-strong))] [&amp;:has([role=checkbox])]:pr-0 sortable whitespace-nowrap">Status</th><th class="h-12 px-4 text-left align-middle font-medium text-[hsl(var(--text-strong))] [&amp;:has([role=checkbox])]:pr-0 sortable whitespace-nowrap">Resources</th><th class="h-12 px-4 text-left align-middle font-medium text-[hsl(var(--text-strong))] [&amp;:has([role=checkbox])]:pr-0 sortable whitespace-nowrap">Cluster</th><th class="h-12 px-4 text-left align-middle font-medium text-[hsl(var(--text-strong))] [&amp;:has([role=checkbox])]:pr-0 sortable whitespace-nowrap">Region</th><th class="h-12 px-4 text-left align-middle font-medium text-[hsl(var(--text-strong))] [&amp;:has([role=checkbox])]:pr-0 sortable whitespace-nowrap">Recoveries</th><th class="h-12 px-4 text-left align-middle font-medium text-[hsl(var(--text-strong))] [&amp;:has([role=checkbox])]:pr-0">Details</th><th class="h-12 px-4 text-left align-middle font-medium text-[hsl(var(--text-strong))] [&amp;:has([role=checkbox])]:pr-0">Logs</th></tr></thead><tbody class="[&amp;_tr:last-child]:border-0"><tr class="border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted"><td class="p-4 align-middle [&amp;:has([role=checkbox])]:pr-0 text-center py-6" colSpan="12"><div class="flex flex-col items-center space-y-4"><p class="text-gray-500">No active jobs</p></div></td></tr></tbody></table></div></div></div></main></div></div></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/jobs","query":{},"buildId":"mS9YfLA5hhsJMeBj9W8J7","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"/><link rel="preload" href="/dashboard/skypilot.svg" as="image" fetchpriority="high"/><meta name="next-head-count" content="3"/><link rel="preload" href="/dashboard/_next/static/css/f3538cd90cfca88c.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/f3538cd90cfca88c.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-830f59b8404e96b8.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-87d061ee6ed71b28.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-e0e2335212e72357.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-3001e84c61acddfb.js" defer=""></script><script src="/dashboard/_next/static/chunks/678-206dddca808e6d16.js" defer=""></script><script src="/dashboard/_next/static/chunks/312-c3c8845990db8ffc.js" defer=""></script><script src="/dashboard/_next/static/chunks/979-7cd0778078b9cfad.js" defer=""></script><script src="/dashboard/_next/static/chunks/845-2ea1cc63ba1f4067.js" defer=""></script><script src="/dashboard/_next/static/chunks/236-d437cf66e68a6f64.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/jobs-a75029b67aab6a2e.js" defer=""></script><script src="/dashboard/_next/static/68UjuSjrx8JvfzxUuf1-w/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/68UjuSjrx8JvfzxUuf1-w/_ssgManifest.js" defer=""></script></head><body><div id="__next"><div class="min-h-screen bg-gray-50"><div class="fixed top-0 left-0 right-0 z-50 shadow-sm"><div class="fixed top-0 left-0 right-0 bg-white z-30 h-14 px-4 border-b border-gray-200 shadow-sm"><div class="flex items-center h-full"><div class="flex items-center space-x-4 mr-6"><a class="flex items-center px-1 pt-1 h-full" href="/dashboard"><img alt="SkyPilot Logo" fetchpriority="high" width="80" height="80" decoding="async" data-nimg="1" class="h-12 w-12" style="color:transparent;width:80px;height:80px" src="/dashboard/skypilot.svg"/></a></div><div class="hidden md:flex items-center space-x-6 mr-6"><a class="inline-flex items-center space-x-2 px-1 pt-1 border-b-2 border-transparent hover:text-blue-600 hover:border-blue-600" href="/dashboard/clusters"><svg class="w-4 h-4" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect width="20" height="8" x="2" y="2" rx="2" ry="2"></rect><rect width="20" height="8" x="2" y="14" rx="2" ry="2"></rect><line x1="6" x2="6.01" y1="6" y2="6"></line><line x1="6" x2="6.01" y1="18" y2="18"></line></svg><span>Clusters</span></a><a class="inline-flex items-center space-x-2 px-1 pt-1 border-b-2 border-transparent text-blue-600" href="/dashboard/jobs"><svg class="w-4 h-4" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M16 20V4a2 2 0 0 0-2-2h-4a2 2 0 0 0-2 2v16"></path><rect width="20" height="14" x="2" y="6" rx="2"></rect></svg><span>Jobs</span></a><div class="inline-flex items-center space-x-2 px-1 pt-1 text-gray-400"><svg class="w-4 h-4" viewBox="0 0 423.683 423.683" width="24" height="24" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" fill="currentColor" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><g id="SVGRepo_bgCarrier" stroke-width="0"></g><g id="SVGRepo_tracerCarrier" stroke-linecap="round" stroke-linejoin="round"></g><g id="SVGRepo_iconCarrier"><g><path d="M54.376,287.577h310.459c26.48,0,48.02-13.979,48.02-40.453c0-17.916-10.001-34.07-25.559-42.292 c-19.021-72.951-86.061-125.196-162.002-125.223v-3.431h-3.854V61.814h3.854v-9.569h-31.38v9.569h3.854v14.363h-3.854v3.431 c-75.941,0.026-142.97,52.272-161.988,125.217c-15.56,8.216-25.573,24.376-25.573,42.291 C6.36,273.597,27.896,287.577,54.376,287.577z M47.676,227.145l7.214-2.424l1.617-7.447 c13.884-64.232,71.707-110.862,137.467-110.862h31.274c65.763,0,123.582,46.63,137.473,110.862l1.607,7.447l7.223,2.424 c8.678,2.92,14.506,10.946,14.506,19.979c0,11.703-9.517,13.647-21.221,13.647H54.376c-11.7,0-21.22-1.944-21.22-13.647 C33.162,238.091,38.984,230.065,47.676,227.145z M423.683,334.602v36.836H0v-36.836h25.348v-18.418h372.99v18.418H423.683z"></path></g></g></svg><span>Services</span><span class="text-xs ml-2 px-1.5 py-0.5 bg-gray-100 text-gray-500 rounded">Soon</span></div></div><div class="hidden md:flex items-center space-x-2 ml-auto"><div class="flex items-center space-x-1"><a href="https://skypilot.readthedocs.io/en/latest/" target="_blank" rel="noopener noreferrer" class="inline-flex items-center px-3 py-1 text-gray-600 hover:text-blue-600 transition-colors duration-150 cursor-pointer" title="Docs"><span class="mr-1">Docs</span><svg class="w-3.5 h-3.5" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"></path><polyline points="15 3 21 3 21 9"></polyline><line x1="10" y1="14" x2="21" y2="3"></line></svg></a><div class="border-l border-gray-200 h-6 mx-1"></div><a href="https://github.com/skypilot-org/skypilot" target="_blank" rel="noopener noreferrer" class="inline-flex items-center justify-center p-2 rounded-full text-gray-600 hover:bg-gray-100 transition-colors duration-150 cursor-pointer" title="GitHub"><span class="flex items-center justify-center"><svg class="w-5 h-5" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="currentColor"><path d="M12 0c-6.626 0-12 5.373-12 12 0 5.302 3.438 9.8 8.207 11.387.599.111.793-.261.793-.577v-2.234c-3.338.726-4.033-1.416-4.033-1.416-.546-1.387-1.333-1.756-1.333-1.756-1.089-.745.083-.729.083-.729 1.205.084 1.839 1.237 1.839 1.237 1.07 1.834 2.807 1.304 3.492.997.107-.775.418-1.305.762-1.604-2.665-.305-5.467-1.334-5.467-5.931 0-1.311.469-2.381 1.236-3.221-.124-.303-.535-1.524.117-3.176 0 0 1.008-.322 3.301 1.23.957-.266 1.983-.399 3.003-.404 1.02.005 2.047.138 3.006.404 2.291-1.552 3.297-1.23 3.297-1.23.653 1.653.242 2.874.118 3.176.77.84 1.235 1.911 1.235 3.221 0 4.609-2.807 5.624-5.479 5.921.43.372.823 1.102.823 2.222v3.293c0 .319.192.694.801.576 4.765-1.589 8.199-6.086 8.199-11.386 0-6.627-5.373-12-12-12z"></path></svg></span></a><a href="https://slack.skypilot.co/" target="_blank" rel="noopener noreferrer" class="inline-flex items-center justify-center p-2 rounded-full text-gray-600 hover:bg-gray-100 transition-colors duration-150 cursor-pointer" title="Slack"><span class="flex items-center justify-center"><svg class="w-5 h-5" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="currentColor"><path transform="scale(0.85) translate(1.8, 1.8)" d="M5.042 15.165a2.528 2.528 0 0 1-2.52 2.523A2.528 2.528 0 0 1 0 15.165a2.527 2.527 0 0 1 2.522-2.52h2.52v2.52zM6.313 15.165a2.527 2.527 0 0 1 2.521-2.52 2.527 2.527 0 0 1 2.521 2.52v6.313A2.528 2.528 0 0 1 8.834 24a2.528 2.528 0 0 1-2.521-2.522v-6.313zM8.834 5.042a2.528 2.528 0 0 1-2.521-2.52A2.528 2.528 0 0 1 8.834 0a2.528 2.528 0 0 1 2.521 2.522v2.52H8.834zM8.834 6.313a2.528 2.528 0 0 1 2.521 2.521 2.528 2.528 0 0 1-2.521 2.521H2.522A2.528 2.528 0 0 1 0 8.834a2.528 2.528 0 0 1 2.522-2.521h6.312zM18.956 8.834a2.528 2.528 0 0 1 2.522-2.521A2.528 2.528 0 0 1 24 8.834a2.528 2.528 0 0 1-2.522 2.521h-2.522V8.834zM17.688 8.834a2.528 2.528 0 0 1-2.523 2.521 2.527 2.527 0 0 1-2.52-2.521V2.522A2.527 2.527 0 0 1 15.165 0a2.528 2.528 0 0 1 2.523 2.522v6.312zM15.165 18.956a2.528 2.528 0 0 1 2.523 2.522A2.528 2.528 0 0 1 15.165 24a2.527 2.527 0 0 1-2.52-2.522v-2.522h2.52zM15.165 17.688a2.527 2.527 0 0 1-2.52-2.523 2.526 2.526 0 0 1 2.52-2.52h6.313A2.527 2.527 0 0 1 24 15.165a2.528 2.528 0 0 1-2.522 2.523h-6.313z"></path></svg></span></a><a href="https://github.com/skypilot-org/skypilot/issues/new?assignees=&amp;labels=type%3A+enhancement&amp;title=" target="_blank" rel="noopener noreferrer" class="inline-flex items-center justify-center p-2 rounded-full text-gray-600 hover:bg-gray-100 transition-colors duration-150 cursor-pointer" title="Leave Feedback"><span class="flex items-center justify-center"><svg class="w-5 h-5" stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><g><path fill="none" d="M0 0h24v24H0z"></path><path d="M6.455 19L2 22.5V4a1 1 0 0 1 1-1h18a1 1 0 0 1 1 1v14a1 1 0 0 1-1 1H6.455zM4 18.385L5.763 17H20V5H4v13.385zM11 13h2v2h-2v-2zm0-6h2v5h-2V7z"></path></g></svg></span></a></div></div></div></div></div><div class="transition-all duration-200 ease-in-out min-h-screen" style="padding-top:56px"><main class="p-6"><div class="flex items-center justify-between mb-4 h-5"><div class="text-base"><a class="text-sky-blue hover:underline leading-none" href="/dashboard/jobs">Managed Jobs</a></div><div class="flex items-center space-x-2"><button class="inline-flex items-center justify-center whitespace-nowrap text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 hover:bg-accent h-9 rounded-md px-3 text-sky-blue hover:text-sky-blue-bright" title="Refresh"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-rotate-cw h-4 w-4 mr-1.5"><path d="M21 12a9 9 0 1 1-9-9c2.52 0 4.93 1 6.74 2.74L21 8"></path><path d="M21 3v5h-5"></path></svg><span>Refresh</span></button></div></div><div class="relative"><div class="flex flex-col space-y-1 mb-1"><div class="flex flex-wrap items-center text-sm mb-1"><span class="mr-2 text-sm font-medium">Statuses:</span><div class="flex flex-wrap gap-2 items-center"></div></div></div><div class="rounded-lg border bg-card text-card-foreground shadow-sm"><div class="relative w-full overflow-auto"><table class="w-full caption-bottom text-base"><thead class="[&amp;_tr]:border-b"><tr class="border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted"><th class="h-12 px-4 text-left align-middle font-medium text-[hsl(var(--text-strong))] [&amp;:has([role=checkbox])]:pr-0 sortable whitespace-nowrap">ID</th><th class="h-12 px-4 text-left align-middle font-medium text-[hsl(var(--text-strong))] [&amp;:has([role=checkbox])]:pr-0 sortable whitespace-nowrap">Name</th><th class="h-12 px-4 text-left align-middle font-medium text-[hsl(var(--text-strong))] [&amp;:has([role=checkbox])]:pr-0 sortable whitespace-nowrap">User</th><th class="h-12 px-4 text-left align-middle font-medium text-[hsl(var(--text-strong))] [&amp;:has([role=checkbox])]:pr-0 sortable whitespace-nowrap">Submitted</th><th class="h-12 px-4 text-left align-middle font-medium text-[hsl(var(--text-strong))] [&amp;:has([role=checkbox])]:pr-0 sortable whitespace-nowrap">Duration</th><th class="h-12 px-4 text-left align-middle font-medium text-[hsl(var(--text-strong))] [&amp;:has([role=checkbox])]:pr-0 sortable whitespace-nowrap">Status</th><th class="h-12 px-4 text-left align-middle font-medium text-[hsl(var(--text-strong))] [&amp;:has([role=checkbox])]:pr-0 sortable whitespace-nowrap">Resources</th><th class="h-12 px-4 text-left align-middle font-medium text-[hsl(var(--text-strong))] [&amp;:has([role=checkbox])]:pr-0 sortable whitespace-nowrap">Cluster</th><th class="h-12 px-4 text-left align-middle font-medium text-[hsl(var(--text-strong))] [&amp;:has([role=checkbox])]:pr-0 sortable whitespace-nowrap">Region</th><th class="h-12 px-4 text-left align-middle font-medium text-[hsl(var(--text-strong))] [&amp;:has([role=checkbox])]:pr-0 sortable whitespace-nowrap">Recoveries</th><th class="h-12 px-4 text-left align-middle font-medium text-[hsl(var(--text-strong))] [&amp;:has([role=checkbox])]:pr-0">Details</th><th class="h-12 px-4 text-left align-middle font-medium text-[hsl(var(--text-strong))] [&amp;:has([role=checkbox])]:pr-0">Logs</th></tr></thead><tbody class="[&amp;_tr:last-child]:border-0"><tr class="border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted"><td class="p-4 align-middle [&amp;:has([role=checkbox])]:pr-0 text-center py-6" colSpan="12"><div class="flex flex-col items-center space-y-4"><p class="text-gray-500">No active jobs</p></div></td></tr></tbody></table></div></div></div></main></div></div></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/jobs","query":{},"buildId":"68UjuSjrx8JvfzxUuf1-w","assetPrefix":"/dashboard","nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html>
@@ -205,8 +205,11 @@ def get_az_mount_cmd(container_name: str,
205
205
  # blobfuse2 only get the mounted fd.
206
206
  # 2. {} is the mount point placeholder that will be replaced with the
207
207
  # mounted fd by fusermount-wrapper.
208
- wrapped = (f'fusermount-wrapper -m {mount_path} {mount_options} '
209
- f'-- {blobfuse2_cmd} -o nonempty {{}}')
208
+ # 3. set --foreground to workaround lock confliction of multiple blobfuse2
209
+ # daemon processes (#5307) and use -d to daemonsize blobfuse2 in
210
+ # fusermount-wrapper.
211
+ wrapped = (f'fusermount-wrapper -d -m {mount_path} {mount_options} '
212
+ f'-- {blobfuse2_cmd} -o nonempty --foreground {{}}')
210
213
  original = f'{blobfuse2_cmd} {mount_options} {mount_path}'
211
214
  # If fusermount-wrapper is available, use it to wrap the blobfuse2 command
212
215
  # to avoid requiring root privilege.
@@ -14,11 +14,19 @@ from sky.utils import common_utils
14
14
  logger = sky_logging.init_logger(__name__)
15
15
 
16
16
  GPU_NAME_MAP = {
17
+ # AMD
18
+ 'MI300X': 'AMD Instinct MI300X OAM',
19
+
20
+ # NVIDIA A-series
17
21
  'A100-80GB': 'NVIDIA A100 80GB PCIe',
18
- 'A100-40GB': 'NVIDIA A100-PCIE-40GB',
19
22
  'A100-80GB-SXM': 'NVIDIA A100-SXM4-80GB',
20
23
  'A30': 'NVIDIA A30',
21
24
  'A40': 'NVIDIA A40',
25
+
26
+ # NVIDIA B-series
27
+ 'B200': 'NVIDIA B200',
28
+
29
+ # GeForce
22
30
  'RTX3070': 'NVIDIA GeForce RTX 3070',
23
31
  'RTX3080': 'NVIDIA GeForce RTX 3080',
24
32
  'RTX3080Ti': 'NVIDIA GeForce RTX 3080 Ti',
@@ -26,25 +34,43 @@ GPU_NAME_MAP = {
26
34
  'RTX3090Ti': 'NVIDIA GeForce RTX 3090 Ti',
27
35
  'RTX4070Ti': 'NVIDIA GeForce RTX 4070 Ti',
28
36
  'RTX4080': 'NVIDIA GeForce RTX 4080',
37
+ 'RTX4080SUPER': 'NVIDIA GeForce RTX 4080 SUPER',
29
38
  'RTX4090': 'NVIDIA GeForce RTX 4090',
39
+ 'RTX5080': 'NVIDIA GeForce RTX 5080',
40
+ 'RTX5090': 'NVIDIA GeForce RTX 5090',
41
+
42
+ # NVIDIA H100/H200
30
43
  # Following instance is displayed as SXM at the console
31
44
  # but the ID from the API appears as HBM
32
45
  'H100-SXM': 'NVIDIA H100 80GB HBM3',
46
+ 'H100-NVL': 'NVIDIA H100 NVL',
33
47
  'H100': 'NVIDIA H100 PCIe',
48
+ 'H200-SXM': 'NVIDIA H200',
49
+
50
+ # NVIDIA L-series
34
51
  'L4': 'NVIDIA L4',
35
52
  'L40': 'NVIDIA L40',
36
- 'RTX4000-Ada-SFF': 'NVIDIA RTX 4000 SFF Ada Generation',
53
+ 'L40S': 'NVIDIA L40S',
54
+
55
+ # Ada generation (GeForce & RTX A)
56
+ 'RTX2000-Ada': 'NVIDIA RTX 2000 Ada Generation',
37
57
  'RTX4000-Ada': 'NVIDIA RTX 4000 Ada Generation',
58
+ 'RTX4000-Ada-SFF': 'NVIDIA RTX 4000 SFF Ada Generation',
59
+ 'RTX5000-Ada': 'NVIDIA RTX 5000 Ada Generation',
38
60
  'RTX6000-Ada': 'NVIDIA RTX 6000 Ada Generation',
61
+
62
+ # NVIDIA RTX A-series
63
+ 'RTXA2000': 'NVIDIA RTX A2000',
39
64
  'RTXA4000': 'NVIDIA RTX A4000',
40
65
  'RTXA4500': 'NVIDIA RTX A4500',
41
66
  'RTXA5000': 'NVIDIA RTX A5000',
42
67
  'RTXA6000': 'NVIDIA RTX A6000',
43
- 'RTX5000': 'Quadro RTX 5000',
68
+
69
+ # Tesla V100 variants
44
70
  'V100-16GB-FHHL': 'Tesla V100-FHHL-16GB',
45
- 'V100-16GB-SXM2': 'V100-SXM2-16GB',
46
- 'RTXA2000': 'NVIDIA RTX A2000',
47
- 'V100-16GB-PCIe': 'Tesla V100-PCIE-16GB'
71
+ 'V100-16GB-SXM2': 'Tesla V100-SXM2-16GB',
72
+ 'V100-32GB-SXM2': 'Tesla V100-SXM2-32GB',
73
+ 'V100-16GB-PCIe': 'Tesla V100-PCIE-16GB',
48
74
  }
49
75
 
50
76
 
sky/server/common.py CHANGED
@@ -7,6 +7,7 @@ from http.cookiejar import MozillaCookieJar
7
7
  import json
8
8
  import os
9
9
  import pathlib
10
+ import re
10
11
  import subprocess
11
12
  import sys
12
13
  import time
@@ -64,11 +65,14 @@ _VERSION_INFO = (
64
65
  'client version: v{client_version} (API version: v{client_api_version})\n'
65
66
  'server version: v{server_version} (API version: v{server_api_version})'
66
67
  f'{colorama.Style.RESET_ALL}')
68
+ _LOCAL_API_SERVER_RESTART_HINT = (
69
+ f'{colorama.Fore.YELLOW}Please restart the SkyPilot API server with:\n'
70
+ f'{colorama.Style.BRIGHT}sky api stop; sky api start'
71
+ f'{colorama.Style.RESET_ALL}')
67
72
  _LOCAL_SERVER_VERSION_MISMATCH_WARNING = (
68
73
  f'{colorama.Fore.YELLOW}Client and local API server version mismatch:\n'
69
74
  '{version_info}\n'
70
- f'{colorama.Fore.YELLOW}Please restart the SkyPilot API server with:\n'
71
- 'sky api stop; sky api start'
75
+ f'{_LOCAL_API_SERVER_RESTART_HINT}'
72
76
  f'{colorama.Style.RESET_ALL}')
73
77
  _CLIENT_TOO_OLD_WARNING = (
74
78
  f'{colorama.Fore.YELLOW}Your SkyPilot client is too old:\n'
@@ -83,6 +87,17 @@ _REMOTE_SERVER_TOO_OLD_WARNING = (
83
87
  'remote API server or downgrade your local client with:\n'
84
88
  '{command}\n'
85
89
  f'{colorama.Style.RESET_ALL}')
90
+ _SERVER_INSTALL_VERSION_MISMATCH_WARNING = (
91
+ f'{colorama.Fore.YELLOW}SkyPilot API server version does not match the '
92
+ 'installation on disk:\n'
93
+ f'{colorama.Style.RESET_ALL}'
94
+ f'{colorama.Style.DIM}'
95
+ 'running API server version: {server_version}\n'
96
+ 'installed API server version: {version_on_disk}\n'
97
+ f'{colorama.Style.RESET_ALL}'
98
+ f'{colorama.Fore.YELLOW}This can happen if you upgraded SkyPilot without '
99
+ 'restarting the API server.'
100
+ f'{colorama.Style.RESET_ALL}')
86
101
  # Parse local API version eargly to catch version format errors.
87
102
  _LOCAL_API_VERSION: int = int(server_constants.API_VERSION)
88
103
  # SkyPilot dev version.
@@ -93,6 +108,8 @@ ApiVersion = Optional[str]
93
108
 
94
109
  logger = sky_logging.init_logger(__name__)
95
110
 
111
+ hinted_for_server_install_version_mismatch = False
112
+
96
113
 
97
114
  class ApiServerStatus(enum.Enum):
98
115
  HEALTHY = 'healthy'
@@ -105,6 +122,7 @@ class ApiServerInfo:
105
122
  status: ApiServerStatus
106
123
  api_version: ApiVersion = None
107
124
  version: Optional[str] = None
125
+ version_on_disk: Optional[str] = None
108
126
  commit: Optional[str] = None
109
127
 
110
128
 
@@ -165,10 +183,12 @@ def get_api_server_status(endpoint: Optional[str] = None) -> ApiServerInfo:
165
183
  result = response.json()
166
184
  api_version = result.get('api_version')
167
185
  version = result.get('version')
186
+ version_on_disk = result.get('version_on_disk')
168
187
  commit = result.get('commit')
169
188
  server_info = ApiServerInfo(status=ApiServerStatus.HEALTHY,
170
189
  api_version=api_version,
171
190
  version=version,
191
+ version_on_disk=version_on_disk,
172
192
  commit=commit)
173
193
  if api_version is None or version is None or commit is None:
174
194
  logger.warning(f'API server response missing '
@@ -362,9 +382,34 @@ def check_server_healthy(endpoint: Optional[str] = None,) -> None:
362
382
  with ux_utils.print_exception_no_traceback():
363
383
  raise exceptions.ApiServerConnectionError(endpoint)
364
384
 
385
+ # If the user ran pip upgrade, but the server wasn't restarted, warn them.
386
+ # We check this using the info from /api/health, rather than in the
387
+ # executor, because the executor could be started after the main server
388
+ # process, picking up the new code, even though the main server process is
389
+ # still running the old code.
390
+ # Note that this code is running on the client side, so calling
391
+ # get_skypilot_version_on_disk() from here is not correct.
392
+
393
+ # Only show this hint once per process.
394
+ global hinted_for_server_install_version_mismatch
395
+
396
+ if (api_server_info.version_on_disk is not None and
397
+ api_server_info.version != api_server_info.version_on_disk and
398
+ not hinted_for_server_install_version_mismatch):
399
+
400
+ logger.warning(
401
+ _SERVER_INSTALL_VERSION_MISMATCH_WARNING.format(
402
+ server_version=api_server_info.version,
403
+ version_on_disk=api_server_info.version_on_disk))
404
+ if is_api_server_local():
405
+ logger.warning(_LOCAL_API_SERVER_RESTART_HINT)
406
+
407
+ hinted_for_server_install_version_mismatch = True
408
+
365
409
 
366
410
  def _get_version_info_hint(server_info: ApiServerInfo) -> str:
367
411
  assert server_info.version is not None, 'Server version is None'
412
+ # version_on_disk may be None if the server is older
368
413
  assert server_info.commit is not None, 'Server commit is None'
369
414
  sv = server_info.version
370
415
  cv = sky.__version__
@@ -393,6 +438,21 @@ def _install_server_version_command(server_info: ApiServerInfo) -> str:
393
438
  return f'pip install -U "skypilot=={server_info.version}"'
394
439
 
395
440
 
441
+ # Keep in sync with sky/setup_files/setup.py find_version()
442
+ def get_skypilot_version_on_disk() -> str:
443
+ """Get the version of the SkyPilot code on disk."""
444
+ current_file_path = pathlib.Path(__file__)
445
+ assert str(current_file_path).endswith(
446
+ 'server/common.py'), current_file_path
447
+ sky_root = current_file_path.parent.parent
448
+ with open(sky_root / '__init__.py', 'r', encoding='utf-8') as fp:
449
+ version_match = re.search(r'^__version__ = [\'"]([^\'"]*)[\'"]',
450
+ fp.read(), re.M)
451
+ if version_match:
452
+ return version_match.group(1)
453
+ raise RuntimeError('Unable to find version string.')
454
+
455
+
396
456
  def check_server_healthy_or_start_fn(deploy: bool = False,
397
457
  host: str = '127.0.0.1',
398
458
  foreground: bool = False):
sky/server/constants.py CHANGED
@@ -7,7 +7,7 @@ from sky.skylet import constants
7
7
  # API server version, whenever there is a change in API server that requires a
8
8
  # restart of the local API server or error out when the client does not match
9
9
  # the server version.
10
- API_VERSION = '4'
10
+ API_VERSION = '5'
11
11
 
12
12
  # Prefix for API request names.
13
13
  REQUEST_NAME_PREFIX = 'sky.'
@@ -31,6 +31,19 @@ else:
31
31
 
32
32
  logger = sky_logging.init_logger(__name__)
33
33
 
34
+ # These non-skypilot environment variables will be updated from the local
35
+ # environment on each request when running a local API server.
36
+ # We should avoid adding variables here, but we should include credential-
37
+ # related variables.
38
+ EXTERNAL_LOCAL_ENV_VARS = [
39
+ # Allow overriding the AWS authentication.
40
+ 'AWS_PROFILE',
41
+ 'AWS_ACCESS_KEY_ID',
42
+ 'AWS_SECRET_ACCESS_KEY',
43
+ # Allow overriding the GCP authentication.
44
+ 'GOOGLE_APPLICATION_CREDENTIALS',
45
+ ]
46
+
34
47
 
35
48
  @annotations.lru_cache(scope='global')
36
49
  def request_body_env_vars() -> dict:
@@ -38,6 +51,8 @@ def request_body_env_vars() -> dict:
38
51
  for env_var in os.environ:
39
52
  if env_var.startswith(constants.SKYPILOT_ENV_VAR_PREFIX):
40
53
  env_vars[env_var] = os.environ[env_var]
54
+ if common.is_api_server_local() and env_var in EXTERNAL_LOCAL_ENV_VARS:
55
+ env_vars[env_var] = os.environ[env_var]
41
56
  env_vars[constants.USER_ID_ENV_VAR] = common_utils.get_user_hash()
42
57
  env_vars[constants.USER_ENV_VAR] = os.getenv(constants.USER_ENV_VAR,
43
58
  getpass.getuser())
sky/server/server.py CHANGED
@@ -1015,14 +1015,17 @@ async def health() -> Dict[str, str]:
1015
1015
  A dictionary with the following keys:
1016
1016
  - status: str; The status of the API server.
1017
1017
  - api_version: str; The API version of the API server.
1018
- - commit: str; The commit hash of SkyPilot used for API server.
1019
1018
  - version: str; The version of SkyPilot used for API server.
1019
+ - version_on_disk: str; The version of the SkyPilot installation on
1020
+ disk, which can be used to warn about restarting the API server
1021
+ - commit: str; The commit hash of SkyPilot used for API server.
1020
1022
  """
1021
1023
  return {
1022
1024
  'status': common.ApiServerStatus.HEALTHY.value,
1023
1025
  'api_version': server_constants.API_VERSION,
1024
- 'commit': sky.__commit__,
1025
1026
  'version': sky.__version__,
1027
+ 'version_on_disk': common.get_skypilot_version_on_disk(),
1028
+ 'commit': sky.__commit__,
1026
1029
  }
1027
1030
 
1028
1031
 
sky/setup_files/setup.py CHANGED
@@ -45,6 +45,7 @@ original_init_content = None
45
45
  system = platform.system()
46
46
 
47
47
 
48
+ # Keep in sync with sky/server/common.py get_skypilot_version_on_disk()
48
49
  def find_version():
49
50
  # Extract version information from filepath
50
51
  # Adapted from:
sky/skypilot_config.py CHANGED
@@ -464,7 +464,7 @@ def override_skypilot_config(
464
464
  _config_overridden = False
465
465
 
466
466
 
467
- def _compose_cli_config(cli_config: Optional[str],) -> config_utils.Config:
467
+ def _compose_cli_config(cli_config: Optional[List[str]]) -> config_utils.Config:
468
468
  """Composes the skypilot CLI config.
469
469
  CLI config can either be:
470
470
  - A path to a config file
@@ -475,18 +475,19 @@ def _compose_cli_config(cli_config: Optional[str],) -> config_utils.Config:
475
475
  return config_utils.Config()
476
476
 
477
477
  config_source = 'CLI'
478
- maybe_config_path = os.path.expanduser(cli_config)
479
478
  try:
479
+ maybe_config_path = os.path.expanduser(cli_config[0])
480
480
  if os.path.isfile(maybe_config_path):
481
+ if len(cli_config) != 1:
482
+ raise ValueError(
483
+ 'Cannot use multiple --config flags with a config file.')
481
484
  config_source = maybe_config_path
482
485
  # cli_config is a path to a config file
483
486
  parsed_config = OmegaConf.to_object(
484
487
  OmegaConf.load(maybe_config_path))
485
488
  else: # cli_config is a comma-separated list of key-value pairs
486
- variables: List[str] = []
487
- variables = cli_config.split(',')
488
489
  parsed_config = OmegaConf.to_object(
489
- OmegaConf.from_dotlist(variables))
490
+ OmegaConf.from_dotlist(cli_config))
490
491
  _validate_config(parsed_config, config_source)
491
492
  except ValueError as e:
492
493
  raise ValueError(f'Invalid config override: {cli_config}. '
@@ -497,7 +498,7 @@ def _compose_cli_config(cli_config: Optional[str],) -> config_utils.Config:
497
498
  return parsed_config
498
499
 
499
500
 
500
- def apply_cli_config(cli_config: Optional[str]) -> Dict[str, Any]:
501
+ def apply_cli_config(cli_config: Optional[List[str]]) -> Dict[str, Any]:
501
502
  """Applies the CLI provided config.
502
503
  SAFETY:
503
504
  This function directly modifies the global _dict variable.
@@ -56,7 +56,8 @@ def label(context: Optional[str] = None, wait_for_completion: bool = True):
56
56
  print(reason)
57
57
  return
58
58
 
59
- unlabeled_gpu_nodes = kubernetes_utils.get_unlabeled_accelerator_nodes()
59
+ unlabeled_gpu_nodes = kubernetes_utils.get_unlabeled_accelerator_nodes(
60
+ context=context)
60
61
 
61
62
  if not unlabeled_gpu_nodes:
62
63
  print('No unlabeled GPU nodes found in the cluster. If you have '
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: skypilot-nightly
3
- Version: 1.0.0.dev20250421
3
+ Version: 1.0.0.dev20250423
4
4
  Summary: SkyPilot: An intercloud broker for the clouds
5
5
  Author: SkyPilot Team
6
6
  License: Apache 2.0
@@ -1,8 +1,8 @@
1
- sky/__init__.py,sha256=Bhi5PYyqK-N-2ziR4TVfGnQNtLeL9x9b22n2g_noGxI,6428
1
+ sky/__init__.py,sha256=-KbF4PoXC1rxS6_Km-ti2aiL89uWU7E-q7FPiVJLdIo,6428
2
2
  sky/admin_policy.py,sha256=hPo02f_A32gCqhUueF0QYy1fMSSKqRwYEg_9FxScN_s,3248
3
3
  sky/authentication.py,sha256=ND011K_-Ud1dVZF37A9KrwYir_ihJXcHc7iDWmuBc8Q,22872
4
4
  sky/check.py,sha256=PPNQnaaZBA9_aogJpN4gnG4XWnTqkd74c-rBYDkDRDY,16101
5
- sky/cli.py,sha256=m-ttEuzlsI6ghtoAr2ncYez97yDqhsxvwtppGQiKOcU,229301
5
+ sky/cli.py,sha256=-eDL9jSPUyxwxlj-npljVxcRVilMJUnW__iANuqk_hE,229045
6
6
  sky/cloud_stores.py,sha256=Ln5GBpel-sEs7rVx7bBrMkfLwA_bctI05Rox2uoz7Lo,26388
7
7
  sky/core.py,sha256=2D1AhdZ1hyD6bBdLyF0t8UJS4ObkgYMwEteWC9_6ysc,47900
8
8
  sky/dag.py,sha256=Yl7Ry26Vql5cv4YMz8g9kOUgtoCihJnw7c8NgZYakMY,3242
@@ -13,10 +13,10 @@ sky/models.py,sha256=bGMSATMkSMr_Kp6SCoiJVVeebwSdZuzjw_jrJzVWAAc,1603
13
13
  sky/optimizer.py,sha256=6bg3CB74pMvk30yQCE7zFSSudWmz78Cdd-IRbjGHBzA,58425
14
14
  sky/resources.py,sha256=T9kSL03149rIJs1LbfDwkZSIEpFL5uhceZTr2Nep78o,74719
15
15
  sky/sky_logging.py,sha256=Nmc29vvg-GgKRZcajNrGlkuCIFxrVqefdXTPiS7Y-9o,5914
16
- sky/skypilot_config.py,sha256=x7JEpIrz2prf3zr6ptqzIPa6ywYxJlfA_NLm5Bcdc0I,20295
16
+ sky/skypilot_config.py,sha256=e1F6oShfQoEazEKZV-yqsBpQOHlLSW8fl0t3utOh8Ts,20379
17
17
  sky/task.py,sha256=tM-DpB7Mtxtc280gFIw9QvJfKEHgiIoew5rnNxxaj04,56737
18
18
  sky/adaptors/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
19
- sky/adaptors/aws.py,sha256=iH55Cm6eXWwufAG0Dgk7LTQcADawNa3ELrBH1m6yuSY,7617
19
+ sky/adaptors/aws.py,sha256=6Qe_gvq8NZ4cHgD_5a6g3BSPsOd08wfww-QbLqyVd6A,7383
20
20
  sky/adaptors/azure.py,sha256=7l5jobSTsTUcTo3ptrgOpRgngHY92U64eQBPxvDe1HA,21986
21
21
  sky/adaptors/cloudflare.py,sha256=8XFjBKMusnR7EmteEGAsAAQUG4J0lDlqk7lkaum_5-4,8276
22
22
  sky/adaptors/common.py,sha256=o17TOFNLm1t0lQvZSJCF1C6RjD6ykKrQ-q1BLPX41XI,3027
@@ -37,17 +37,17 @@ sky/backends/backend_utils.py,sha256=9fMPPUrkEgRGN7ofAJnhlv6hGEQMoEB3m_BC0gto2VU
37
37
  sky/backends/cloud_vm_ray_backend.py,sha256=M_1U_xWwdLxMr0HKfDi-AkUPO3-Rz3A0Us2JbRZjeW0,251477
38
38
  sky/backends/docker_utils.py,sha256=Hyw1YY20EyghhEbYx6O2FIMDcGkNzBzV9TM7LFynei8,8358
39
39
  sky/backends/local_docker_backend.py,sha256=m0s6EZ9dTbPO8STy9FeLj8DvvtI_44MwDK9QByh2jwU,17048
40
- sky/backends/wheel_utils.py,sha256=C4Uyloeb9Uj9DQibcQGaDo4-Ii9nV6mexd7Pk4pdum4,9647
40
+ sky/backends/wheel_utils.py,sha256=IUruJijm5854UGDdSayHbHzjjWRM46bATK1nSnK44xY,11071
41
41
  sky/backends/monkey_patches/monkey_patch_ray_up.py,sha256=76-y2fCaE3JINj8lEwHT1eirYzCbpD8O1ySsysuGu8o,3450
42
42
  sky/benchmark/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
43
43
  sky/benchmark/benchmark_state.py,sha256=X8CXmuU9KgsDRhKedhFgjeRMUFWtQsjFs1qECvPG2yg,8723
44
44
  sky/benchmark/benchmark_utils.py,sha256=7rf-iHt6RXZ_pnBBWOMwcdodHQW69x27xNyx0yVog1U,26385
45
45
  sky/client/__init__.py,sha256=pz6xvVSd9X-gwqbsDL0E9QOojYqM0KAD0j-NCyCIF1k,38
46
- sky/client/cli.py,sha256=m-ttEuzlsI6ghtoAr2ncYez97yDqhsxvwtppGQiKOcU,229301
46
+ sky/client/cli.py,sha256=-eDL9jSPUyxwxlj-npljVxcRVilMJUnW__iANuqk_hE,229045
47
47
  sky/client/common.py,sha256=E_5cjxd8fWRB7fU1yfIbiyQf-IyVhpD5KkB7Fl3cQEI,15215
48
48
  sky/client/sdk.py,sha256=NSuCYn84T-mx86nl7z-1qMwoWFlGXCvEmqd-HhfMAp4,70712
49
49
  sky/clouds/__init__.py,sha256=OW6mJ-9hpJSBORCgt2LippLQEYZHNfnBW1mooRNNvxo,1416
50
- sky/clouds/aws.py,sha256=-feXZ72UMUjuZz8dV4qMTjMMTC9pwfkQQT3KJDcIv5A,54633
50
+ sky/clouds/aws.py,sha256=Y5azSWJSSWq32CD6jhP5xTFlk-vg3sE4dMWcm5AQiQQ,54638
51
51
  sky/clouds/azure.py,sha256=Zpo6ftWz_B30mX7N-An7JVO-8v7aU3f9cw1iH9phvwE,32251
52
52
  sky/clouds/cloud.py,sha256=22sfoOyGYjsBj88RHp-eHHs6aqi0xDb8q_9o_v6SIFM,36690
53
53
  sky/clouds/cudo.py,sha256=_UkLEtwJsfDMKlmJfML5W3rA8VArba4x8YGIdnvgZoM,13226
@@ -90,7 +90,7 @@ sky/clouds/service_catalog/data_fetchers/fetch_aws.py,sha256=Zj4bqWPiDcT_ZFyHxQw
90
90
  sky/clouds/service_catalog/data_fetchers/fetch_azure.py,sha256=7YVnoGDGGZI2TK02bj_LOoD4E5J5CFl6eqz2XlR4Vy8,12790
91
91
  sky/clouds/service_catalog/data_fetchers/fetch_cudo.py,sha256=52P48lvWN0s1ArjeLPeLemPRpxjSRcHincRle0nqdm4,3440
92
92
  sky/clouds/service_catalog/data_fetchers/fetch_fluidstack.py,sha256=hsqpQi_YUI-qil3zLCEGatrR7BkWzywr4otRdHrd-4k,7350
93
- sky/clouds/service_catalog/data_fetchers/fetch_gcp.py,sha256=JnugFifzHPQITlbDKoKexE8NqgagOEfQWTxon7P6vJ0,30935
93
+ sky/clouds/service_catalog/data_fetchers/fetch_gcp.py,sha256=IKcb0kh9u2N3B2jV7v8ekrqu2Tb1M1yEBfgzI77n0kg,31026
94
94
  sky/clouds/service_catalog/data_fetchers/fetch_ibm.py,sha256=WPzR1y5ZaTdv-R3HLIdSUnOfWh4N9cqzKoKiKJQkjFk,7414
95
95
  sky/clouds/service_catalog/data_fetchers/fetch_lambda_cloud.py,sha256=MUzogyLruLQmIt-To6TsfnGPgv_nnlp49XYbeshsd7I,5003
96
96
  sky/clouds/service_catalog/data_fetchers/fetch_vast.py,sha256=MRxk52FUeG-R2hPUbkH44HXRPou73dxXWYAHDEXg3xU,5016
@@ -101,12 +101,14 @@ sky/clouds/utils/azure_utils.py,sha256=NToRBnhEyuUvb-nBnsKTxjhOBRkMcrelL8LK4w6s4
101
101
  sky/clouds/utils/gcp_utils.py,sha256=YtuS4EoAMvcRnGPgE_WLENPOPWIdvhp7dLceTw_zfas,7114
102
102
  sky/clouds/utils/oci_utils.py,sha256=0YxhgZdeIHQUI1AZ86YuswsZg5HdVCIVfSTRJsSHYI0,6396
103
103
  sky/clouds/utils/scp_utils.py,sha256=MqawUhhFHHxVnn29nOI4gJ_nF665ich4Po7bsy1afsA,15948
104
- sky/dashboard/out/404.html,sha256=x9KpP2oGMrM_XudzBU3AA0LGGXcO_d9Zp4iCak5ZD1s,2296
105
- sky/dashboard/out/clusters.html,sha256=sGTgwWBTH5yXG2J9eRYOX4t3QcTpMlF6tSj1zJcuC04,11953
104
+ sky/dashboard/out/404.html,sha256=rD3TwVd_efrkNjp7lbI7I_QHV8D1RDIADHC-yBpOiVM,2296
105
+ sky/dashboard/out/clusters.html,sha256=m_IHTnn6zxytPbivhLU1A2Hnpe-He-8bEB1dGKLRWrg,11953
106
106
  sky/dashboard/out/favicon.ico,sha256=uYlvgxSM7gjBmXpZ8wydvZUPAbJiiix-rc2Xe5mma9s,15086
107
- sky/dashboard/out/index.html,sha256=rvT20bd0xLt9StTJWFM_XNXBY8KEuzobtIrxGDlzUjE,1407
108
- sky/dashboard/out/jobs.html,sha256=BIKpXvtOAisHDK3vHo5qlal0XqsY0Xil3SAENp6pkmM,13059
107
+ sky/dashboard/out/index.html,sha256=FPVWZLNosLAhSqwlt4JVqPzHizIxbxg4rSIppiKEmEo,1407
108
+ sky/dashboard/out/jobs.html,sha256=evm6VUGhofMxz4Y_PE1LdCeVg5CH9Sr-5aI481A90vU,13059
109
109
  sky/dashboard/out/skypilot.svg,sha256=c0iRtlfLlaUm2p0rG9NFmo5FN0Qhf3pq5Xph-AeMPJw,5064
110
+ sky/dashboard/out/_next/static/68UjuSjrx8JvfzxUuf1-w/_buildManifest.js,sha256=Ok4yINvq-VFZbOefZBHPaavSf6DCdVryO-rPc9HNUkk,1048
111
+ sky/dashboard/out/_next/static/68UjuSjrx8JvfzxUuf1-w/_ssgManifest.js,sha256=Z49s4suAsf5y_GfnQSvm4qtq2ggxEbZPfEDTXjy6XgA,80
110
112
  sky/dashboard/out/_next/static/chunks/236-d437cf66e68a6f64.js,sha256=ralyFxYHEJcbwyN11jVIZbvPFrrpAq34CXvKqRdhEoc,24814
111
113
  sky/dashboard/out/_next/static/chunks/312-c3c8845990db8ffc.js,sha256=H8yGnoxM_IYM2kU-A7mESi4aV4Ph3PxbIdnM2v5Kd3M,25150
112
114
  sky/dashboard/out/_next/static/chunks/37-72fdc8f71d6e4784.js,sha256=XLVnZhTzv_QQZZeQX8IwNacGZme7FYFwo8e9e57gcAU,8051
@@ -128,16 +130,14 @@ sky/dashboard/out/_next/static/chunks/pages/clusters/[cluster]-b57ec043f09c5813.
128
130
  sky/dashboard/out/_next/static/chunks/pages/clusters/[cluster]/[job]-b09f7fbf6d5d74f6.js,sha256=KayTgi3_fkoZ5e94WDIrz40erkrn--G_2QzQyMNHhok,8887
129
131
  sky/dashboard/out/_next/static/chunks/pages/jobs/[job]-ef2e0e91a9222cac.js,sha256=BlAqhmjQdnDgnOeBE3KWZfATs7QZN68TOqYb2gSSxoQ,13152
130
132
  sky/dashboard/out/_next/static/css/f3538cd90cfca88c.css,sha256=y9a3IiJyaD6P_uZwLuCTQ6TJU0e85QIhNCbL-k4RIUc,31933
131
- sky/dashboard/out/_next/static/mS9YfLA5hhsJMeBj9W8J7/_buildManifest.js,sha256=Ok4yINvq-VFZbOefZBHPaavSf6DCdVryO-rPc9HNUkk,1048
132
- sky/dashboard/out/_next/static/mS9YfLA5hhsJMeBj9W8J7/_ssgManifest.js,sha256=Z49s4suAsf5y_GfnQSvm4qtq2ggxEbZPfEDTXjy6XgA,80
133
- sky/dashboard/out/clusters/[cluster].html,sha256=-x555kOa1QmF1yOCONryr0xqjMp6s73nn30kxsb00yM,1984
134
- sky/dashboard/out/clusters/[cluster]/[job].html,sha256=plkAvOhZUBzjEBJkOJPlE8IEf6BG6M1LjWVxUdKZ4PQ,1653
135
- sky/dashboard/out/jobs/[job].html,sha256=qge_G_bf7xnsjP0mGCJXFdqarVNXuHFdPfDijrA5ayI,1621
133
+ sky/dashboard/out/clusters/[cluster].html,sha256=M0GtFwDFTylEoHi3UWYuLA1_hh4QEf88pS-lL1TlZHI,1984
134
+ sky/dashboard/out/clusters/[cluster]/[job].html,sha256=QHC9hJFB6wbOz_3VIWu56KX5LsMDBRzCoMOWM4zDLxc,1653
135
+ sky/dashboard/out/jobs/[job].html,sha256=tEuQU0SxKfOdCkV_CdnUq2jrDDD6p70m6aIjOGxi14E,1621
136
136
  sky/dashboard/out/videos/cursor-small.mp4,sha256=8tRdp1vjawOrXUar1cfjOc-nkaKmcwCPZx_LO0XlCvQ,203285
137
137
  sky/data/__init__.py,sha256=Nhaf1NURisXpZuwWANa2IuCyppIuc720FRwqSE2oEwY,184
138
138
  sky/data/data_transfer.py,sha256=N8b0CQebDuHieXjvEVwlYmK6DbQxUGG1RQJEyTbh3dU,12040
139
139
  sky/data/data_utils.py,sha256=CNYPM963qby5ddW0DZNbhiWXkqgB9MHh_jrC5DoBctM,33437
140
- sky/data/mounting_utils.py,sha256=fmJUDs7WEARYpq-cHQ5OfPRVFp_siAnqSutTLe3PROA,21432
140
+ sky/data/mounting_utils.py,sha256=OoNegk56oKM2NYCE6ZVe1E41xYKYtRjNOiiyKzI0SVo,21622
141
141
  sky/data/storage.py,sha256=0gZHw73py4fW-2iyyuQxa3E7bwqMg5-Dh3-aEKf2PuQ,236592
142
142
  sky/data/storage_utils.py,sha256=u8PTKUkE7qYwr1GgAJ45pI5YUkhUaPQPRUz_CZZo_HI,13785
143
143
  sky/jobs/__init__.py,sha256=qoI53-xXE0-SOkrLWigvhgFXjk7dWE0OTqGPYIk-kmM,1458
@@ -221,7 +221,7 @@ sky/provision/paperspace/utils.py,sha256=FhJZz0O5tCbdaJ5WE6zTdVXvW6msalMaAc3xOR3
221
221
  sky/provision/runpod/__init__.py,sha256=6HYvHI27EaLrX1SS0vWVhdLu5HDBeZCdvAeDJuwM5pk,556
222
222
  sky/provision/runpod/config.py,sha256=9ulZJVL7nHuxhTdoj8D7lNn7SdicJ5zc6FIcHIG9tcg,321
223
223
  sky/provision/runpod/instance.py,sha256=kUaD3nRMcBipCQwspSHaQ_WnIDnZJIVNrSk7_7ruWJg,10364
224
- sky/provision/runpod/utils.py,sha256=F3zsxPV3IY5C73J-zNZEfcXL8bsZBgNWzlmtSO6qOqI,12425
224
+ sky/provision/runpod/utils.py,sha256=XPpJOczboUi2iWZWi7c6J5rUrB1O9THSDJ-6643LMdE,13020
225
225
  sky/provision/runpod/api/__init__.py,sha256=eJwjPeQZ5B7chf4-Bl4YeI2Uo9aLX4M1rr2NmPk89_E,112
226
226
  sky/provision/runpod/api/commands.py,sha256=oh77PS0H0wZudHV8II9ceRuaFQ8FN4NJ4S3-6_PeqPM,4238
227
227
  sky/provision/runpod/api/pods.py,sha256=GMwxgNr9NnHPfyh2Y9b8S_vLhrLY4h7LybFBBQNAyfw,4948
@@ -262,16 +262,16 @@ sky/serve/server/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,
262
262
  sky/serve/server/core.py,sha256=6l_XddW5ZWfdRdzyfQdB8rtBcU90VN_yXRM85tz0hsc,41499
263
263
  sky/serve/server/server.py,sha256=A9K37a0nQgZeN3eKWv62Oh2C5TSAReTZ9pHmztqlI-c,4396
264
264
  sky/server/__init__.py,sha256=MPPBqFzXz6Jv5QSk6td_IcvnfXfNErDZVcizu4MLRow,27
265
- sky/server/common.py,sha256=lXxngJ4PGZ7EbCd8-hMJVGgZqp57AnAYDWo9jDftTxM,24492
266
- sky/server/constants.py,sha256=1o2dZ0WulWzoZfB6J9-MTIbg1nvlg3gevjqwAYo3aCM,1112
267
- sky/server/server.py,sha256=jGQ1IglGIbBVYcfCVafjGLuBaRc2dY-ddNeirDM8rcY,46541
265
+ sky/server/common.py,sha256=k5Be_Co9gI892iDvhYj6D__X-8_-RuEij5WlNiKDKJ4,27233
266
+ sky/server/constants.py,sha256=Ha3A4X0kPh0FrdlM5u34Wi7OxhScPUwHqRi4-ye347Y,1112
267
+ sky/server/server.py,sha256=DABDYs1drNLeQ1b5WMlD2f4XU1VrDNtvgh5pDmdZxcU,46757
268
268
  sky/server/stream_utils.py,sha256=4JMHgtoXPpCT8JwtqyUcDQ9IdZFir9om0JaCRr8rvbQ,5849
269
269
  sky/server/uvicorn.py,sha256=wajwPHJ3IEEP3GMNOCc0S81-1v2qT5F-ejUkLFVhUzk,2953
270
270
  sky/server/html/log.html,sha256=TSGZktua9Ysl_ysg3w60rjxAxhH61AJnsYDHdtqrjmI,6929
271
271
  sky/server/requests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
272
272
  sky/server/requests/event_loop.py,sha256=OhpPbuce65bbjpGRlcJa78AVnYSm08SzFKt70ypCUuQ,1211
273
273
  sky/server/requests/executor.py,sha256=ikpy7A-kYdVdeXlh0Ll927jl7QOn0Y6Pp8VodqpwF9w,26760
274
- sky/server/requests/payloads.py,sha256=nQLKgRvNo082ClUjPHoc57LLiQiQqZvveNXdgblPFIM,16333
274
+ sky/server/requests/payloads.py,sha256=7Ect-lsw4fem0BOMxFbyt1nUCucLPf52Kfblo-BlHUs,16934
275
275
  sky/server/requests/preconditions.py,sha256=ipxIb_3JXG6S3-ymcOdqQNb7VDvoPqADxu9ZK7-nQWc,7179
276
276
  sky/server/requests/process.py,sha256=uv6JmqdT1vR6S5j3a0CEmxz3fUoKQoZCryQsjZpZE7E,8734
277
277
  sky/server/requests/requests.py,sha256=9ovdQE-zv_Mvc6IbGATHVyQlOxSKjg_OankZbgDVGeE,21338
@@ -283,7 +283,7 @@ sky/server/requests/serializers/decoders.py,sha256=F7eqENzt7hH92BPYUGnSJ_-XGobA0
283
283
  sky/server/requests/serializers/encoders.py,sha256=4bQV5yTg8RTPT_HkRyQpjaBY_uUvBJ4NH189W0-6Pi0,5578
284
284
  sky/setup_files/MANIFEST.in,sha256=xhxaTVBu63MiTRV52AIlHp6qrg0i301PDIvH0lRw4E0,619
285
285
  sky/setup_files/dependencies.py,sha256=ZNn608y0Yb2oTz9prWDxgPEeH9QEmfJ3CzlIcE021QQ,6489
286
- sky/setup_files/setup.py,sha256=Q9f0RvsdPC0FLvyTKW-upQtRuA81jRO4TtN3VK-mP-Y,7436
286
+ sky/setup_files/setup.py,sha256=dGDMbDZQM3-9vLFgYWsxyGmHQLr2QfNLRU8lIQevlnQ,7508
287
287
  sky/skylet/LICENSE,sha256=BnFrJSvUFpMUoH5mOpWnEvaC5R6Uux8W6WXgrte8iYg,12381
288
288
  sky/skylet/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
289
289
  sky/skylet/attempt_skylet.py,sha256=GZ6ITjjA0m-da3IxXXfoHR6n4pjp3X3TOXUqVvSrV0k,2136
@@ -379,15 +379,15 @@ sky/utils/kubernetes/deploy_remote_cluster.sh,sha256=EQMBC0VUqe3UaiYvwkNq4P6U9bk
379
379
  sky/utils/kubernetes/exec_kubeconfig_converter.py,sha256=fE1SnteoxI05EaugnWeV82hXwZTVHmbXsh1aaZAgF3c,2548
380
380
  sky/utils/kubernetes/generate_kind_config.py,sha256=_TNLnifA_r7-CRq083IP1xjelYqiLjzQX9ohuqYpDH8,3187
381
381
  sky/utils/kubernetes/generate_kubeconfig.sh,sha256=MBvXJio0PeujZSCXiRKE_pa6HCTiU9qBzR1WrXccVSY,10477
382
- sky/utils/kubernetes/gpu_labeler.py,sha256=5BGv7m5Tb_TfP7qu9kix5A1uEIa-tK_sbAQ70aP0VwU,10321
382
+ sky/utils/kubernetes/gpu_labeler.py,sha256=YAwkytFo2j5GyGyX8RqnUXCMBff00Mdm9G_0mmtNZLo,10345
383
383
  sky/utils/kubernetes/k8s_gpu_labeler_job.yaml,sha256=k0TBoQ4zgf79-sVkixKSGYFHQ7ZWF5gdVIZPupCCo9A,1224
384
384
  sky/utils/kubernetes/k8s_gpu_labeler_setup.yaml,sha256=VLKT2KKimZu1GDg_4AIlIt488oMQvhRZWwsj9vBbPUg,3812
385
385
  sky/utils/kubernetes/kubernetes_deploy_utils.py,sha256=HPVgNt-wbCVPd9dpDFiA7t2mzQLpjXHJ61eiwRbEr-c,10378
386
386
  sky/utils/kubernetes/rsync_helper.sh,sha256=eaQOyvDq_RmcRHBqB9tH6LyDuYC310IVp97C5nqrTQg,1793
387
387
  sky/utils/kubernetes/ssh_jump_lifecycle_manager.py,sha256=Kq1MDygF2IxFmu9FXpCxqucXLmeUrvs6OtRij6XTQbo,6554
388
- skypilot_nightly-1.0.0.dev20250421.dist-info/licenses/LICENSE,sha256=emRJAvE7ngL6x0RhQvlns5wJzGI3NEQ_WMjNmd9TZc4,12170
389
- skypilot_nightly-1.0.0.dev20250421.dist-info/METADATA,sha256=mP_yMjMxiYja9ay7Y1KWZqN16L5cYipv075TpRHrO4w,18691
390
- skypilot_nightly-1.0.0.dev20250421.dist-info/WHEEL,sha256=pxyMxgL8-pra_rKaQ4drOZAegBVuX-G_4nRHjjgWbmo,91
391
- skypilot_nightly-1.0.0.dev20250421.dist-info/entry_points.txt,sha256=StA6HYpuHj-Y61L2Ze-hK2IcLWgLZcML5gJu8cs6nU4,36
392
- skypilot_nightly-1.0.0.dev20250421.dist-info/top_level.txt,sha256=qA8QuiNNb6Y1OF-pCUtPEr6sLEwy2xJX06Bd_CrtrHY,4
393
- skypilot_nightly-1.0.0.dev20250421.dist-info/RECORD,,
388
+ skypilot_nightly-1.0.0.dev20250423.dist-info/licenses/LICENSE,sha256=emRJAvE7ngL6x0RhQvlns5wJzGI3NEQ_WMjNmd9TZc4,12170
389
+ skypilot_nightly-1.0.0.dev20250423.dist-info/METADATA,sha256=_oicVHhBGcfwtKI6A3I7JgsCtqGNODcbT61KB6tAEDs,18691
390
+ skypilot_nightly-1.0.0.dev20250423.dist-info/WHEEL,sha256=pxyMxgL8-pra_rKaQ4drOZAegBVuX-G_4nRHjjgWbmo,91
391
+ skypilot_nightly-1.0.0.dev20250423.dist-info/entry_points.txt,sha256=StA6HYpuHj-Y61L2Ze-hK2IcLWgLZcML5gJu8cs6nU4,36
392
+ skypilot_nightly-1.0.0.dev20250423.dist-info/top_level.txt,sha256=qA8QuiNNb6Y1OF-pCUtPEr6sLEwy2xJX06Bd_CrtrHY,4
393
+ skypilot_nightly-1.0.0.dev20250423.dist-info/RECORD,,