skypilot-nightly 1.0.0.dev20250724__py3-none-any.whl → 1.0.0.dev20250725__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of skypilot-nightly might be problematic. Click here for more details.
- sky/__init__.py +2 -2
- sky/backends/backend_utils.py +27 -1
- sky/client/cli/command.py +55 -16
- sky/dashboard/out/404.html +1 -1
- sky/dashboard/out/_next/static/chunks/{webpack-b6447da22305b14a.js → webpack-a305898dc479711e.js} +1 -1
- sky/dashboard/out/clusters/[cluster]/[job].html +1 -1
- sky/dashboard/out/clusters/[cluster].html +1 -1
- sky/dashboard/out/clusters.html +1 -1
- sky/dashboard/out/config.html +1 -1
- sky/dashboard/out/index.html +1 -1
- sky/dashboard/out/infra/[context].html +1 -1
- sky/dashboard/out/infra.html +1 -1
- sky/dashboard/out/jobs/[job].html +1 -1
- sky/dashboard/out/jobs.html +1 -1
- sky/dashboard/out/users.html +1 -1
- sky/dashboard/out/volumes.html +1 -1
- sky/dashboard/out/workspace/new.html +1 -1
- sky/dashboard/out/workspaces/[name].html +1 -1
- sky/dashboard/out/workspaces.html +1 -1
- sky/global_user_state.py +12 -23
- sky/jobs/state.py +12 -24
- sky/server/common.py +9 -0
- sky/server/server.py +3 -0
- sky/templates/aws-ray.yml.j2 +7 -1
- sky/templates/azure-ray.yml.j2 +1 -1
- sky/templates/do-ray.yml.j2 +1 -1
- sky/templates/lambda-ray.yml.j2 +1 -1
- sky/templates/nebius-ray.yml.j2 +1 -1
- sky/templates/paperspace-ray.yml.j2 +1 -1
- sky/templates/runpod-ray.yml.j2 +1 -1
- sky/utils/db/migration_utils.py +60 -19
- sky/utils/schemas.py +13 -0
- {skypilot_nightly-1.0.0.dev20250724.dist-info → skypilot_nightly-1.0.0.dev20250725.dist-info}/METADATA +1 -1
- {skypilot_nightly-1.0.0.dev20250724.dist-info → skypilot_nightly-1.0.0.dev20250725.dist-info}/RECORD +40 -40
- /sky/dashboard/out/_next/static/{BURfWrKsQk9psMPv0OXrh → SiA7c33x_DqO42M373Okd}/_buildManifest.js +0 -0
- /sky/dashboard/out/_next/static/{BURfWrKsQk9psMPv0OXrh → SiA7c33x_DqO42M373Okd}/_ssgManifest.js +0 -0
- {skypilot_nightly-1.0.0.dev20250724.dist-info → skypilot_nightly-1.0.0.dev20250725.dist-info}/WHEEL +0 -0
- {skypilot_nightly-1.0.0.dev20250724.dist-info → skypilot_nightly-1.0.0.dev20250725.dist-info}/entry_points.txt +0 -0
- {skypilot_nightly-1.0.0.dev20250724.dist-info → skypilot_nightly-1.0.0.dev20250725.dist-info}/licenses/LICENSE +0 -0
- {skypilot_nightly-1.0.0.dev20250724.dist-info → skypilot_nightly-1.0.0.dev20250725.dist-info}/top_level.txt +0 -0
sky/__init__.py
CHANGED
|
@@ -5,7 +5,7 @@ from typing import Optional
|
|
|
5
5
|
import urllib.request
|
|
6
6
|
|
|
7
7
|
# Replaced with the current commit when building the wheels.
|
|
8
|
-
_SKYPILOT_COMMIT_SHA = '
|
|
8
|
+
_SKYPILOT_COMMIT_SHA = 'c8383b047969b0b18ca50a7ad02ea9d8cf77d236'
|
|
9
9
|
|
|
10
10
|
|
|
11
11
|
def _get_git_commit():
|
|
@@ -35,7 +35,7 @@ def _get_git_commit():
|
|
|
35
35
|
|
|
36
36
|
|
|
37
37
|
__commit__ = _get_git_commit()
|
|
38
|
-
__version__ = '1.0.0.
|
|
38
|
+
__version__ = '1.0.0.dev20250725'
|
|
39
39
|
__root_dir__ = os.path.dirname(os.path.abspath(__file__))
|
|
40
40
|
|
|
41
41
|
|
sky/backends/backend_utils.py
CHANGED
|
@@ -35,6 +35,7 @@ from sky.adaptors import common as adaptors_common
|
|
|
35
35
|
from sky.jobs import utils as managed_job_utils
|
|
36
36
|
from sky.provision import instance_setup
|
|
37
37
|
from sky.provision.kubernetes import utils as kubernetes_utils
|
|
38
|
+
from sky.server.requests import requests as requests_lib
|
|
38
39
|
from sky.skylet import constants
|
|
39
40
|
from sky.usage import usage_lib
|
|
40
41
|
from sky.utils import cluster_utils
|
|
@@ -798,6 +799,12 @@ def write_cluster_config(
|
|
|
798
799
|
'volume_name_on_cloud': vol.volume_config.name_on_cloud,
|
|
799
800
|
})
|
|
800
801
|
|
|
802
|
+
runcmd = skypilot_config.get_effective_region_config(
|
|
803
|
+
cloud=str(to_provision.cloud).lower(),
|
|
804
|
+
region=to_provision.region,
|
|
805
|
+
keys=('post_provision_runcmd',),
|
|
806
|
+
default_value=None)
|
|
807
|
+
|
|
801
808
|
# Use a tmp file path to avoid incomplete YAML file being re-used in the
|
|
802
809
|
# future.
|
|
803
810
|
tmp_yaml_path = yaml_path + '.tmp'
|
|
@@ -833,7 +840,7 @@ def write_cluster_config(
|
|
|
833
840
|
# User-supplied remote_identity
|
|
834
841
|
'remote_identity': remote_identity,
|
|
835
842
|
# The reservation pools that specified by the user. This is
|
|
836
|
-
# currently only used by GCP.
|
|
843
|
+
# currently only used by AWS and GCP.
|
|
837
844
|
'specific_reservations': specific_reservations,
|
|
838
845
|
|
|
839
846
|
# Conda setup
|
|
@@ -896,6 +903,10 @@ def write_cluster_config(
|
|
|
896
903
|
|
|
897
904
|
# Volume mounts
|
|
898
905
|
'volume_mounts': volume_mount_vars,
|
|
906
|
+
|
|
907
|
+
# runcmd to append to the cloud-init cloud config passed to the
|
|
908
|
+
# machine's UserData. This is currently only used by AWS.
|
|
909
|
+
'runcmd': runcmd,
|
|
899
910
|
}),
|
|
900
911
|
output_path=tmp_yaml_path)
|
|
901
912
|
config_dict['cluster_name'] = cluster_name
|
|
@@ -2831,6 +2842,21 @@ def get_clusters(
|
|
|
2831
2842
|
force_refresh_statuses = None
|
|
2832
2843
|
|
|
2833
2844
|
def _refresh_cluster(cluster_name):
|
|
2845
|
+
# TODO(syang): we should try not to leak
|
|
2846
|
+
# request info in backend_utils.py.
|
|
2847
|
+
# Refactor this to use some other info to
|
|
2848
|
+
# determine if a launch is in progress.
|
|
2849
|
+
request = requests_lib.get_request_tasks(
|
|
2850
|
+
status=[requests_lib.RequestStatus.RUNNING],
|
|
2851
|
+
cluster_names=[cluster_name],
|
|
2852
|
+
include_request_names=['sky.launch'])
|
|
2853
|
+
if len(request) > 0:
|
|
2854
|
+
# There is an active launch request on the cluster,
|
|
2855
|
+
# so we don't want to update the cluster status until
|
|
2856
|
+
# the request is completed.
|
|
2857
|
+
logger.debug(f'skipping refresh for cluster {cluster_name} '
|
|
2858
|
+
'as there is an active launch request')
|
|
2859
|
+
return global_user_state.get_cluster_from_name(cluster_name)
|
|
2834
2860
|
try:
|
|
2835
2861
|
record = refresh_cluster_record(
|
|
2836
2862
|
cluster_name,
|
sky/client/cli/command.py
CHANGED
|
@@ -24,6 +24,7 @@ listed in "sky --help". Take care to put logically connected commands close to
|
|
|
24
24
|
each other.
|
|
25
25
|
"""
|
|
26
26
|
import collections
|
|
27
|
+
import concurrent.futures
|
|
27
28
|
import fnmatch
|
|
28
29
|
import os
|
|
29
30
|
import pathlib
|
|
@@ -358,6 +359,9 @@ def _install_shell_completion(ctx: click.Context, param: click.Parameter,
|
|
|
358
359
|
bashrc_diff = ('\n# For SkyPilot shell completion'
|
|
359
360
|
'\n. ~/.sky/.sky-complete.bash')
|
|
360
361
|
|
|
362
|
+
cmd: Optional[str] = None
|
|
363
|
+
reload_cmd: Optional[str] = None
|
|
364
|
+
|
|
361
365
|
if value == 'bash':
|
|
362
366
|
install_cmd = f'_SKY_COMPLETE=bash_source sky > \
|
|
363
367
|
~/.sky/.sky-complete.bash && \
|
|
@@ -389,6 +393,7 @@ def _install_shell_completion(ctx: click.Context, param: click.Parameter,
|
|
|
389
393
|
click.secho(f'Unsupported shell: {value}', fg='red')
|
|
390
394
|
ctx.exit()
|
|
391
395
|
|
|
396
|
+
assert cmd is not None # This should never be None due to ctx.exit() above
|
|
392
397
|
try:
|
|
393
398
|
subprocess.run(cmd,
|
|
394
399
|
shell=True,
|
|
@@ -420,6 +425,9 @@ def _uninstall_shell_completion(ctx: click.Context, param: click.Parameter,
|
|
|
420
425
|
else:
|
|
421
426
|
value = os.path.basename(os.environ['SHELL'])
|
|
422
427
|
|
|
428
|
+
cmd: Optional[str] = None
|
|
429
|
+
reload_cmd: Optional[str] = None
|
|
430
|
+
|
|
423
431
|
if value == 'bash':
|
|
424
432
|
cmd = 'sed -i"" -e "/# For SkyPilot shell completion/d" ~/.bashrc && \
|
|
425
433
|
sed -i"" -e "/sky-complete.bash/d" ~/.bashrc && \
|
|
@@ -444,6 +452,7 @@ def _uninstall_shell_completion(ctx: click.Context, param: click.Parameter,
|
|
|
444
452
|
click.secho(f'Unsupported shell: {value}', fg='red')
|
|
445
453
|
ctx.exit()
|
|
446
454
|
|
|
455
|
+
assert cmd is not None # This should never be None due to ctx.exit() above
|
|
447
456
|
try:
|
|
448
457
|
subprocess.run(cmd, shell=True, check=True)
|
|
449
458
|
click.secho(f'Shell completion uninstalled for {value}', fg='green')
|
|
@@ -1745,19 +1754,16 @@ def status(verbose: bool, refresh: bool, ip: bool, endpoints: bool,
|
|
|
1745
1754
|
# Do not show job queue if user specifies clusters, and if user
|
|
1746
1755
|
# specifies --ip or --endpoint(s).
|
|
1747
1756
|
show_managed_jobs = show_managed_jobs and not any([clusters, ip, endpoints])
|
|
1748
|
-
if show_managed_jobs:
|
|
1749
|
-
managed_jobs_queue_request_id = managed_jobs.queue(refresh=False,
|
|
1750
|
-
skip_finished=True,
|
|
1751
|
-
all_users=all_users)
|
|
1752
1757
|
show_endpoints = endpoints or endpoint is not None
|
|
1753
1758
|
show_single_endpoint = endpoint is not None
|
|
1754
1759
|
show_services = show_services and not any([clusters, ip, endpoints])
|
|
1755
|
-
if show_services:
|
|
1756
|
-
# Run the sky serve service query in parallel to speed up the
|
|
1757
|
-
# status query.
|
|
1758
|
-
service_status_request_id = serve_lib.status(service_names=None)
|
|
1759
1760
|
|
|
1760
|
-
|
|
1761
|
+
query_clusters: Optional[List[str]] = None if not clusters else clusters
|
|
1762
|
+
refresh_mode = common.StatusRefreshMode.NONE
|
|
1763
|
+
if refresh:
|
|
1764
|
+
refresh_mode = common.StatusRefreshMode.FORCE
|
|
1765
|
+
|
|
1766
|
+
# Phase 1: Validate arguments for IP/endpoint queries
|
|
1761
1767
|
if ip or show_endpoints:
|
|
1762
1768
|
if refresh:
|
|
1763
1769
|
raise click.UsageError(
|
|
@@ -1791,9 +1797,19 @@ def status(verbose: bool, refresh: bool, ip: bool, endpoints: bool,
|
|
|
1791
1797
|
flag='ip' if ip else
|
|
1792
1798
|
('endpoint port'
|
|
1793
1799
|
if show_single_endpoint else 'endpoints')))
|
|
1794
|
-
|
|
1800
|
+
|
|
1801
|
+
# Phase 2: Parallel submission of all API requests
|
|
1802
|
+
def submit_managed_jobs():
|
|
1803
|
+
return managed_jobs.queue(refresh=False,
|
|
1804
|
+
skip_finished=True,
|
|
1805
|
+
all_users=all_users)
|
|
1806
|
+
|
|
1807
|
+
def submit_services() -> Optional[str]:
|
|
1808
|
+
return serve_lib.status(service_names=None)
|
|
1809
|
+
|
|
1810
|
+
def submit_workspace() -> Optional[str]:
|
|
1795
1811
|
try:
|
|
1796
|
-
|
|
1812
|
+
return sdk.workspaces()
|
|
1797
1813
|
except RuntimeError:
|
|
1798
1814
|
# Backward compatibility for API server before #5660.
|
|
1799
1815
|
# TODO(zhwu): remove this after 0.10.0.
|
|
@@ -1802,12 +1818,35 @@ def status(verbose: bool, refresh: bool, ip: bool, endpoints: bool,
|
|
|
1802
1818
|
'workspaces. Update with: sky api stop; '
|
|
1803
1819
|
'sky api start'
|
|
1804
1820
|
f'{colorama.Style.RESET_ALL}')
|
|
1805
|
-
|
|
1821
|
+
return None
|
|
1806
1822
|
|
|
1807
|
-
|
|
1808
|
-
|
|
1809
|
-
|
|
1810
|
-
|
|
1823
|
+
managed_jobs_queue_request_id = None
|
|
1824
|
+
service_status_request_id = None
|
|
1825
|
+
workspace_request_id = None
|
|
1826
|
+
|
|
1827
|
+
# Submit all requests in parallel
|
|
1828
|
+
with concurrent.futures.ThreadPoolExecutor(max_workers=1) as executor:
|
|
1829
|
+
if show_managed_jobs:
|
|
1830
|
+
managed_jobs_request_future = executor.submit(submit_managed_jobs)
|
|
1831
|
+
if show_services:
|
|
1832
|
+
services_request_future = executor.submit(submit_services)
|
|
1833
|
+
if not (ip or show_endpoints):
|
|
1834
|
+
workspace_request_future = executor.submit(submit_workspace)
|
|
1835
|
+
|
|
1836
|
+
# Get the request IDs
|
|
1837
|
+
if show_managed_jobs:
|
|
1838
|
+
managed_jobs_queue_request_id = managed_jobs_request_future.result()
|
|
1839
|
+
if show_services:
|
|
1840
|
+
service_status_request_id = services_request_future.result()
|
|
1841
|
+
if not (ip or show_endpoints):
|
|
1842
|
+
workspace_request_id = workspace_request_future.result()
|
|
1843
|
+
|
|
1844
|
+
managed_jobs_queue_request_id = '' if not managed_jobs_queue_request_id \
|
|
1845
|
+
else managed_jobs_queue_request_id
|
|
1846
|
+
service_status_request_id = '' if not service_status_request_id \
|
|
1847
|
+
else service_status_request_id
|
|
1848
|
+
|
|
1849
|
+
# Phase 3: Get cluster records and handle special cases
|
|
1811
1850
|
cluster_records = _get_cluster_records_and_set_ssh_config(
|
|
1812
1851
|
query_clusters, refresh_mode, all_users)
|
|
1813
1852
|
|
sky/dashboard/out/404.html
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
<!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><meta name="next-head-count" content="2"/><link rel="preload" href="/dashboard/_next/static/css/b3227360726f12eb.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/b3227360726f12eb.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-
|
|
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/b3227360726f12eb.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/b3227360726f12eb.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-a305898dc479711e.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-efc06c2733009cd3.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-c0a4f1ea606d48d2.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-da491665d4289aae.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_error-c72a1f77a3c0be1b.js" defer=""></script><script src="/dashboard/_next/static/SiA7c33x_DqO42M373Okd/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/SiA7c33x_DqO42M373Okd/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{"statusCode":404}},"page":"/_error","query":{},"buildId":"SiA7c33x_DqO42M373Okd","assetPrefix":"/dashboard","nextExport":true,"isFallback":false,"gip":true,"scriptLoader":[]}</script></body></html>
|
sky/dashboard/out/_next/static/chunks/{webpack-b6447da22305b14a.js → webpack-a305898dc479711e.js}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
!function(){"use strict";var e,t,n,r,c,o,f,u,i,a={},s={};function d(e){var t=s[e];if(void 0!==t)return t.exports;var n=s[e]={exports:{}},r=!0;try{a[e](n,n.exports,d),r=!1}finally{r&&delete s[e]}return n.exports}d.m=a,e=[],d.O=function(t,n,r,c){if(n){c=c||0;for(var o=e.length;o>0&&e[o-1][2]>c;o--)e[o]=e[o-1];e[o]=[n,r,c];return}for(var f=1/0,o=0;o<e.length;o++){for(var n=e[o][0],r=e[o][1],c=e[o][2],u=!0,i=0;i<n.length;i++)f>=c&&Object.keys(d.O).every(function(e){return d.O[e](n[i])})?n.splice(i--,1):(u=!1,c<f&&(f=c));if(u){e.splice(o--,1);var a=r();void 0!==a&&(t=a)}}return t},d.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return d.d(t,{a:t}),t},n=Object.getPrototypeOf?function(e){return Object.getPrototypeOf(e)}:function(e){return e.__proto__},d.t=function(e,r){if(1&r&&(e=this(e)),8&r||"object"==typeof e&&e&&(4&r&&e.__esModule||16&r&&"function"==typeof e.then))return e;var c=Object.create(null);d.r(c);var o={};t=t||[null,n({}),n([]),n(n)];for(var f=2&r&&e;"object"==typeof f&&!~t.indexOf(f);f=n(f))Object.getOwnPropertyNames(f).forEach(function(t){o[t]=function(){return e[t]}});return o.default=function(){return e},d.d(c,o),c},d.d=function(e,t){for(var n in t)d.o(t,n)&&!d.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},d.f={},d.e=function(e){return Promise.all(Object.keys(d.f).reduce(function(t,n){return d.f[n](e,t),t},[]))},d.u=function(e){return 2350===e?"static/chunks/2350.23778a2b19aabd33.js":2369===e?"static/chunks/2369.2d6e4757f8dfc2b7.js":3937===e?"static/chunks/3937.d7f1c55d1916c7f2.js":9025===e?"static/chunks/9025.4a9099bdf3ed4875.js":4937===e?"static/chunks/4937.d75809403fc264ac.js":9984===e?"static/chunks/9984.0460de9d3adf5582.js":2003===e?"static/chunks/2003.b82e6db40ec4c463.js":
|
|
1
|
+
!function(){"use strict";var e,t,n,r,c,o,f,u,i,a={},s={};function d(e){var t=s[e];if(void 0!==t)return t.exports;var n=s[e]={exports:{}},r=!0;try{a[e](n,n.exports,d),r=!1}finally{r&&delete s[e]}return n.exports}d.m=a,e=[],d.O=function(t,n,r,c){if(n){c=c||0;for(var o=e.length;o>0&&e[o-1][2]>c;o--)e[o]=e[o-1];e[o]=[n,r,c];return}for(var f=1/0,o=0;o<e.length;o++){for(var n=e[o][0],r=e[o][1],c=e[o][2],u=!0,i=0;i<n.length;i++)f>=c&&Object.keys(d.O).every(function(e){return d.O[e](n[i])})?n.splice(i--,1):(u=!1,c<f&&(f=c));if(u){e.splice(o--,1);var a=r();void 0!==a&&(t=a)}}return t},d.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return d.d(t,{a:t}),t},n=Object.getPrototypeOf?function(e){return Object.getPrototypeOf(e)}:function(e){return e.__proto__},d.t=function(e,r){if(1&r&&(e=this(e)),8&r||"object"==typeof e&&e&&(4&r&&e.__esModule||16&r&&"function"==typeof e.then))return e;var c=Object.create(null);d.r(c);var o={};t=t||[null,n({}),n([]),n(n)];for(var f=2&r&&e;"object"==typeof f&&!~t.indexOf(f);f=n(f))Object.getOwnPropertyNames(f).forEach(function(t){o[t]=function(){return e[t]}});return o.default=function(){return e},d.d(c,o),c},d.d=function(e,t){for(var n in t)d.o(t,n)&&!d.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},d.f={},d.e=function(e){return Promise.all(Object.keys(d.f).reduce(function(t,n){return d.f[n](e,t),t},[]))},d.u=function(e){return 2350===e?"static/chunks/2350.23778a2b19aabd33.js":2369===e?"static/chunks/2369.2d6e4757f8dfc2b7.js":3937===e?"static/chunks/3937.d7f1c55d1916c7f2.js":9025===e?"static/chunks/9025.4a9099bdf3ed4875.js":4937===e?"static/chunks/4937.d75809403fc264ac.js":9984===e?"static/chunks/9984.0460de9d3adf5582.js":2003===e?"static/chunks/2003.b82e6db40ec4c463.js":691===e?"static/chunks/691.488b4aef97c28727.js":2641===e?"static/chunks/2641.74c19c4d45a2c034.js":9847===e?"static/chunks/9847.387abf8a14d722db.js":4725===e?"static/chunks/4725.66125dcd9832aa5d.js":3785===e?"static/chunks/3785.59705416215ff08b.js":4869===e?"static/chunks/4869.da729a7db3a31f43.js":"static/chunks/"+e+"-"+({616:"162f3033ffcd3d31",938:"7ee806653aef0609",1043:"869d9c78bf5dd3df",1141:"e49a159c30a6c4a7",1272:"1ef0bf0237faccdb",1559:"18717d96ef2fcbe9",1664:"d65361e92b85e786",1871:"ea0e7283886407ca",3698:"9fa11dafb5cad4a6",5230:"df791914b54d91d9",5739:"5ea3ffa10fc884f2",6135:"2abbd0352f8ee061",6601:"d4a381403a8bae91",6989:"eab0e9c16b64fd9f",6990:"f64e03df359e04f7",7411:"2cc31dc0fdf2a9ad",8969:"8e0b2055bf5dd499"})[e]+".js"},d.miniCssF=function(e){},d.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||Function("return this")()}catch(e){if("object"==typeof window)return window}}(),d.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r={},c="_N_E:",d.l=function(e,t,n,o){if(r[e]){r[e].push(t);return}if(void 0!==n)for(var f,u,i=document.getElementsByTagName("script"),a=0;a<i.length;a++){var s=i[a];if(s.getAttribute("src")==e||s.getAttribute("data-webpack")==c+n){f=s;break}}f||(u=!0,(f=document.createElement("script")).charset="utf-8",f.timeout=120,d.nc&&f.setAttribute("nonce",d.nc),f.setAttribute("data-webpack",c+n),f.src=d.tu(e)),r[e]=[t];var l=function(t,n){f.onerror=f.onload=null,clearTimeout(b);var c=r[e];if(delete r[e],f.parentNode&&f.parentNode.removeChild(f),c&&c.forEach(function(e){return e(n)}),t)return t(n)},b=setTimeout(l.bind(null,void 0,{type:"timeout",target:f}),12e4);f.onerror=l.bind(null,f.onerror),f.onload=l.bind(null,f.onload),u&&document.head.appendChild(f)},d.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},d.tt=function(){return void 0===o&&(o={createScriptURL:function(e){return e}},"undefined"!=typeof trustedTypes&&trustedTypes.createPolicy&&(o=trustedTypes.createPolicy("nextjs#bundler",o))),o},d.tu=function(e){return d.tt().createScriptURL(e)},d.p="/dashboard/_next/",f={2272:0},d.f.j=function(e,t){var n=d.o(f,e)?f[e]:void 0;if(0!==n){if(n)t.push(n[2]);else if(2272!=e){var r=new Promise(function(t,r){n=f[e]=[t,r]});t.push(n[2]=r);var c=d.p+d.u(e),o=Error();d.l(c,function(t){if(d.o(f,e)&&(0!==(n=f[e])&&(f[e]=void 0),n)){var r=t&&("load"===t.type?"missing":t.type),c=t&&t.target&&t.target.src;o.message="Loading chunk "+e+" failed.\n("+r+": "+c+")",o.name="ChunkLoadError",o.type=r,o.request=c,n[1](o)}},"chunk-"+e,e)}else f[e]=0}},d.O.j=function(e){return 0===f[e]},u=function(e,t){var n,r,c=t[0],o=t[1],u=t[2],i=0;if(c.some(function(e){return 0!==f[e]})){for(n in o)d.o(o,n)&&(d.m[n]=o[n]);if(u)var a=u(d)}for(e&&e(t);i<c.length;i++)r=c[i],d.o(f,r)&&f[r]&&f[r][0](),f[r]=0;return d.O(a)},(i=self.webpackChunk_N_E=self.webpackChunk_N_E||[]).forEach(u.bind(null,0)),i.push=u.bind(null,i.push.bind(i)),d.nc=void 0}();
|
|
@@ -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/b3227360726f12eb.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/b3227360726f12eb.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-
|
|
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/b3227360726f12eb.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/b3227360726f12eb.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-a305898dc479711e.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-efc06c2733009cd3.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-c0a4f1ea606d48d2.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-da491665d4289aae.js" defer=""></script><script src="/dashboard/_next/static/chunks/616-162f3033ffcd3d31.js" defer=""></script><script src="/dashboard/_next/static/chunks/5230-df791914b54d91d9.js" defer=""></script><script src="/dashboard/_next/static/chunks/5739-5ea3ffa10fc884f2.js" defer=""></script><script src="/dashboard/_next/static/chunks/1664-d65361e92b85e786.js" defer=""></script><script src="/dashboard/_next/static/chunks/7411-2cc31dc0fdf2a9ad.js" defer=""></script><script src="/dashboard/_next/static/chunks/6989-eab0e9c16b64fd9f.js" defer=""></script><script src="/dashboard/_next/static/chunks/3698-9fa11dafb5cad4a6.js" defer=""></script><script src="/dashboard/_next/static/chunks/6135-2abbd0352f8ee061.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/clusters/%5Bcluster%5D/%5Bjob%5D-2186770cc2de1623.js" defer=""></script><script src="/dashboard/_next/static/SiA7c33x_DqO42M373Okd/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/SiA7c33x_DqO42M373Okd/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/clusters/[cluster]/[job]","query":{},"buildId":"SiA7c33x_DqO42M373Okd","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/b3227360726f12eb.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/b3227360726f12eb.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-
|
|
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/b3227360726f12eb.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/b3227360726f12eb.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-a305898dc479711e.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-efc06c2733009cd3.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-c0a4f1ea606d48d2.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-da491665d4289aae.js" defer=""></script><script src="/dashboard/_next/static/chunks/616-162f3033ffcd3d31.js" defer=""></script><script src="/dashboard/_next/static/chunks/5230-df791914b54d91d9.js" defer=""></script><script src="/dashboard/_next/static/chunks/5739-5ea3ffa10fc884f2.js" defer=""></script><script src="/dashboard/_next/static/chunks/1664-d65361e92b85e786.js" defer=""></script><script src="/dashboard/_next/static/chunks/7411-2cc31dc0fdf2a9ad.js" defer=""></script><script src="/dashboard/_next/static/chunks/1272-1ef0bf0237faccdb.js" defer=""></script><script src="/dashboard/_next/static/chunks/1559-18717d96ef2fcbe9.js" defer=""></script><script src="/dashboard/_next/static/chunks/6989-eab0e9c16b64fd9f.js" defer=""></script><script src="/dashboard/_next/static/chunks/3698-9fa11dafb5cad4a6.js" defer=""></script><script src="/dashboard/_next/static/chunks/6135-2abbd0352f8ee061.js" defer=""></script><script src="/dashboard/_next/static/chunks/6990-f64e03df359e04f7.js" defer=""></script><script src="/dashboard/_next/static/chunks/8969-8e0b2055bf5dd499.js" defer=""></script><script src="/dashboard/_next/static/chunks/1043-869d9c78bf5dd3df.js" defer=""></script><script src="/dashboard/_next/static/chunks/6601-d4a381403a8bae91.js" defer=""></script><script src="/dashboard/_next/static/chunks/938-7ee806653aef0609.js" defer=""></script><script src="/dashboard/_next/static/chunks/1871-ea0e7283886407ca.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/clusters/%5Bcluster%5D-95afb019ab85801c.js" defer=""></script><script src="/dashboard/_next/static/SiA7c33x_DqO42M373Okd/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/SiA7c33x_DqO42M373Okd/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/clusters/[cluster]","query":{},"buildId":"SiA7c33x_DqO42M373Okd","assetPrefix":"/dashboard","nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html>
|
sky/dashboard/out/clusters.html
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
<!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><meta name="next-head-count" content="2"/><link rel="preload" href="/dashboard/_next/static/css/b3227360726f12eb.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/b3227360726f12eb.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-
|
|
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/b3227360726f12eb.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/b3227360726f12eb.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-a305898dc479711e.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-efc06c2733009cd3.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-c0a4f1ea606d48d2.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-da491665d4289aae.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/clusters-3d4be4961e1c94eb.js" defer=""></script><script src="/dashboard/_next/static/SiA7c33x_DqO42M373Okd/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/SiA7c33x_DqO42M373Okd/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/clusters","query":{},"buildId":"SiA7c33x_DqO42M373Okd","assetPrefix":"/dashboard","nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html>
|
sky/dashboard/out/config.html
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
<!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><meta name="next-head-count" content="2"/><link rel="preload" href="/dashboard/_next/static/css/b3227360726f12eb.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/b3227360726f12eb.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-
|
|
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/b3227360726f12eb.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/b3227360726f12eb.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-a305898dc479711e.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-efc06c2733009cd3.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-c0a4f1ea606d48d2.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-da491665d4289aae.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/config-a2673b256b6d416f.js" defer=""></script><script src="/dashboard/_next/static/SiA7c33x_DqO42M373Okd/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/SiA7c33x_DqO42M373Okd/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/config","query":{},"buildId":"SiA7c33x_DqO42M373Okd","assetPrefix":"/dashboard","nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html>
|
sky/dashboard/out/index.html
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
<!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><meta name="next-head-count" content="2"/><link rel="preload" href="/dashboard/_next/static/css/b3227360726f12eb.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/b3227360726f12eb.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-
|
|
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/b3227360726f12eb.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/b3227360726f12eb.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-a305898dc479711e.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-efc06c2733009cd3.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-c0a4f1ea606d48d2.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-da491665d4289aae.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/index-89e7daf7b7df02e0.js" defer=""></script><script src="/dashboard/_next/static/SiA7c33x_DqO42M373Okd/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/SiA7c33x_DqO42M373Okd/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/","query":{},"buildId":"SiA7c33x_DqO42M373Okd","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/b3227360726f12eb.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/b3227360726f12eb.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-
|
|
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/b3227360726f12eb.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/b3227360726f12eb.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-a305898dc479711e.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-efc06c2733009cd3.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-c0a4f1ea606d48d2.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-da491665d4289aae.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/infra/%5Bcontext%5D-a90b4fe4616dc501.js" defer=""></script><script src="/dashboard/_next/static/SiA7c33x_DqO42M373Okd/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/SiA7c33x_DqO42M373Okd/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/infra/[context]","query":{},"buildId":"SiA7c33x_DqO42M373Okd","assetPrefix":"/dashboard","nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html>
|
sky/dashboard/out/infra.html
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
<!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><meta name="next-head-count" content="2"/><link rel="preload" href="/dashboard/_next/static/css/b3227360726f12eb.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/b3227360726f12eb.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-
|
|
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/b3227360726f12eb.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/b3227360726f12eb.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-a305898dc479711e.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-efc06c2733009cd3.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-c0a4f1ea606d48d2.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-da491665d4289aae.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/infra-0d3d1f890c5d188a.js" defer=""></script><script src="/dashboard/_next/static/SiA7c33x_DqO42M373Okd/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/SiA7c33x_DqO42M373Okd/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/infra","query":{},"buildId":"SiA7c33x_DqO42M373Okd","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/b3227360726f12eb.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/b3227360726f12eb.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-
|
|
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/b3227360726f12eb.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/b3227360726f12eb.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-a305898dc479711e.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-efc06c2733009cd3.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-c0a4f1ea606d48d2.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-da491665d4289aae.js" defer=""></script><script src="/dashboard/_next/static/chunks/616-162f3033ffcd3d31.js" defer=""></script><script src="/dashboard/_next/static/chunks/5230-df791914b54d91d9.js" defer=""></script><script src="/dashboard/_next/static/chunks/5739-5ea3ffa10fc884f2.js" defer=""></script><script src="/dashboard/_next/static/chunks/1664-d65361e92b85e786.js" defer=""></script><script src="/dashboard/_next/static/chunks/7411-2cc31dc0fdf2a9ad.js" defer=""></script><script src="/dashboard/_next/static/chunks/1272-1ef0bf0237faccdb.js" defer=""></script><script src="/dashboard/_next/static/chunks/6989-eab0e9c16b64fd9f.js" defer=""></script><script src="/dashboard/_next/static/chunks/3698-9fa11dafb5cad4a6.js" defer=""></script><script src="/dashboard/_next/static/chunks/6135-2abbd0352f8ee061.js" defer=""></script><script src="/dashboard/_next/static/chunks/8969-8e0b2055bf5dd499.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/jobs/%5Bjob%5D-dc0299ffefebcdbe.js" defer=""></script><script src="/dashboard/_next/static/SiA7c33x_DqO42M373Okd/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/SiA7c33x_DqO42M373Okd/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/jobs/[job]","query":{},"buildId":"SiA7c33x_DqO42M373Okd","assetPrefix":"/dashboard","nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html>
|
sky/dashboard/out/jobs.html
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
<!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><meta name="next-head-count" content="2"/><link rel="preload" href="/dashboard/_next/static/css/b3227360726f12eb.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/b3227360726f12eb.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-
|
|
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/b3227360726f12eb.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/b3227360726f12eb.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-a305898dc479711e.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-efc06c2733009cd3.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-c0a4f1ea606d48d2.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-da491665d4289aae.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/jobs-49f790d12a85027c.js" defer=""></script><script src="/dashboard/_next/static/SiA7c33x_DqO42M373Okd/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/SiA7c33x_DqO42M373Okd/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/jobs","query":{},"buildId":"SiA7c33x_DqO42M373Okd","assetPrefix":"/dashboard","nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html>
|
sky/dashboard/out/users.html
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
<!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><meta name="next-head-count" content="2"/><link rel="preload" href="/dashboard/_next/static/css/b3227360726f12eb.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/b3227360726f12eb.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-
|
|
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/b3227360726f12eb.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/b3227360726f12eb.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-a305898dc479711e.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-efc06c2733009cd3.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-c0a4f1ea606d48d2.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-da491665d4289aae.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/users-6790fcefd5487b13.js" defer=""></script><script src="/dashboard/_next/static/SiA7c33x_DqO42M373Okd/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/SiA7c33x_DqO42M373Okd/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/users","query":{},"buildId":"SiA7c33x_DqO42M373Okd","assetPrefix":"/dashboard","nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html>
|
sky/dashboard/out/volumes.html
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
<!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><meta name="next-head-count" content="2"/><link rel="preload" href="/dashboard/_next/static/css/b3227360726f12eb.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/b3227360726f12eb.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-
|
|
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/b3227360726f12eb.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/b3227360726f12eb.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-a305898dc479711e.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-efc06c2733009cd3.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-c0a4f1ea606d48d2.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-da491665d4289aae.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/volumes-61ea7ba7e56f8d06.js" defer=""></script><script src="/dashboard/_next/static/SiA7c33x_DqO42M373Okd/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/SiA7c33x_DqO42M373Okd/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/volumes","query":{},"buildId":"SiA7c33x_DqO42M373Okd","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/b3227360726f12eb.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/b3227360726f12eb.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-
|
|
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/b3227360726f12eb.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/b3227360726f12eb.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-a305898dc479711e.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-efc06c2733009cd3.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-c0a4f1ea606d48d2.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-da491665d4289aae.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/workspace/new-5629d4e551dba1ee.js" defer=""></script><script src="/dashboard/_next/static/SiA7c33x_DqO42M373Okd/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/SiA7c33x_DqO42M373Okd/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/workspace/new","query":{},"buildId":"SiA7c33x_DqO42M373Okd","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/b3227360726f12eb.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/b3227360726f12eb.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-
|
|
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/b3227360726f12eb.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/b3227360726f12eb.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-a305898dc479711e.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-efc06c2733009cd3.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-c0a4f1ea606d48d2.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-da491665d4289aae.js" defer=""></script><script src="/dashboard/_next/static/chunks/616-162f3033ffcd3d31.js" defer=""></script><script src="/dashboard/_next/static/chunks/5230-df791914b54d91d9.js" defer=""></script><script src="/dashboard/_next/static/chunks/5739-5ea3ffa10fc884f2.js" defer=""></script><script src="/dashboard/_next/static/chunks/1664-d65361e92b85e786.js" defer=""></script><script src="/dashboard/_next/static/chunks/7411-2cc31dc0fdf2a9ad.js" defer=""></script><script src="/dashboard/_next/static/chunks/1272-1ef0bf0237faccdb.js" defer=""></script><script src="/dashboard/_next/static/chunks/1559-18717d96ef2fcbe9.js" defer=""></script><script src="/dashboard/_next/static/chunks/6989-eab0e9c16b64fd9f.js" defer=""></script><script src="/dashboard/_next/static/chunks/3698-9fa11dafb5cad4a6.js" defer=""></script><script src="/dashboard/_next/static/chunks/6135-2abbd0352f8ee061.js" defer=""></script><script src="/dashboard/_next/static/chunks/6990-f64e03df359e04f7.js" defer=""></script><script src="/dashboard/_next/static/chunks/8969-8e0b2055bf5dd499.js" defer=""></script><script src="/dashboard/_next/static/chunks/1043-869d9c78bf5dd3df.js" defer=""></script><script src="/dashboard/_next/static/chunks/6601-d4a381403a8bae91.js" defer=""></script><script src="/dashboard/_next/static/chunks/938-7ee806653aef0609.js" defer=""></script><script src="/dashboard/_next/static/chunks/1141-e49a159c30a6c4a7.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/workspaces/%5Bname%5D-6bcd4b20914d76c9.js" defer=""></script><script src="/dashboard/_next/static/SiA7c33x_DqO42M373Okd/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/SiA7c33x_DqO42M373Okd/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/workspaces/[name]","query":{},"buildId":"SiA7c33x_DqO42M373Okd","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/b3227360726f12eb.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/b3227360726f12eb.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-
|
|
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/b3227360726f12eb.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/b3227360726f12eb.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-a305898dc479711e.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-efc06c2733009cd3.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-c0a4f1ea606d48d2.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-da491665d4289aae.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/workspaces-5f7fe4b7d55b8612.js" defer=""></script><script src="/dashboard/_next/static/SiA7c33x_DqO42M373Okd/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/SiA7c33x_DqO42M373Okd/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/workspaces","query":{},"buildId":"SiA7c33x_DqO42M373Okd","assetPrefix":"/dashboard","nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html>
|
sky/global_user_state.py
CHANGED
|
@@ -9,7 +9,6 @@ Concepts:
|
|
|
9
9
|
import functools
|
|
10
10
|
import json
|
|
11
11
|
import os
|
|
12
|
-
import pathlib
|
|
13
12
|
import pickle
|
|
14
13
|
import re
|
|
15
14
|
import time
|
|
@@ -237,35 +236,25 @@ def create_table(engine: sqlalchemy.engine.Engine):
|
|
|
237
236
|
# If the database is locked, it is OK to continue, as the WAL mode
|
|
238
237
|
# is not critical and is likely to be enabled by other processes.
|
|
239
238
|
|
|
240
|
-
# Get alembic config for state db and run migrations
|
|
241
|
-
alembic_config = migration_utils.get_alembic_config(
|
|
242
|
-
engine, migration_utils.GLOBAL_USER_STATE_DB_NAME)
|
|
243
|
-
# pylint: disable=line-too-long
|
|
244
|
-
alembic_config.config_ini_section = migration_utils.GLOBAL_USER_STATE_DB_NAME
|
|
245
239
|
migration_utils.safe_alembic_upgrade(
|
|
246
|
-
engine,
|
|
240
|
+
engine, migration_utils.GLOBAL_USER_STATE_DB_NAME,
|
|
241
|
+
migration_utils.GLOBAL_USER_STATE_VERSION)
|
|
247
242
|
|
|
248
243
|
|
|
249
244
|
def initialize_and_get_db() -> sqlalchemy.engine.Engine:
|
|
250
245
|
global _SQLALCHEMY_ENGINE
|
|
246
|
+
|
|
251
247
|
if _SQLALCHEMY_ENGINE is not None:
|
|
252
248
|
return _SQLALCHEMY_ENGINE
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
else:
|
|
263
|
-
db_path = os.path.expanduser('~/.sky/state.db')
|
|
264
|
-
pathlib.Path(db_path).parents[0].mkdir(parents=True,
|
|
265
|
-
exist_ok=True)
|
|
266
|
-
engine = sqlalchemy.create_engine('sqlite:///' + db_path)
|
|
267
|
-
create_table(engine)
|
|
268
|
-
_SQLALCHEMY_ENGINE = engine
|
|
249
|
+
|
|
250
|
+
# get an engine to the db
|
|
251
|
+
engine = migration_utils.get_engine('state')
|
|
252
|
+
|
|
253
|
+
# run migrations if needed
|
|
254
|
+
create_table(engine)
|
|
255
|
+
|
|
256
|
+
# return engine
|
|
257
|
+
_SQLALCHEMY_ENGINE = engine
|
|
269
258
|
return _SQLALCHEMY_ENGINE
|
|
270
259
|
|
|
271
260
|
|
sky/jobs/state.py
CHANGED
|
@@ -4,8 +4,6 @@
|
|
|
4
4
|
import enum
|
|
5
5
|
import functools
|
|
6
6
|
import json
|
|
7
|
-
import os
|
|
8
|
-
import pathlib
|
|
9
7
|
import time
|
|
10
8
|
import typing
|
|
11
9
|
from typing import Any, Callable, Dict, List, Optional, Tuple, Union
|
|
@@ -20,7 +18,6 @@ from sqlalchemy.ext import declarative
|
|
|
20
18
|
|
|
21
19
|
from sky import exceptions
|
|
22
20
|
from sky import sky_logging
|
|
23
|
-
from sky import skypilot_config
|
|
24
21
|
from sky.skylet import constants
|
|
25
22
|
from sky.utils import common_utils
|
|
26
23
|
from sky.utils.db import db_utils
|
|
@@ -129,34 +126,25 @@ def create_table(engine: sqlalchemy.engine.Engine):
|
|
|
129
126
|
# If the database is locked, it is OK to continue, as the WAL mode
|
|
130
127
|
# is not critical and is likely to be enabled by other processes.
|
|
131
128
|
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
engine, migration_utils.SPOT_JOBS_DB_NAME)
|
|
135
|
-
alembic_config.config_ini_section = migration_utils.SPOT_JOBS_DB_NAME
|
|
136
|
-
migration_utils.safe_alembic_upgrade(engine, alembic_config,
|
|
129
|
+
migration_utils.safe_alembic_upgrade(engine,
|
|
130
|
+
migration_utils.SPOT_JOBS_DB_NAME,
|
|
137
131
|
migration_utils.SPOT_JOBS_VERSION)
|
|
138
132
|
|
|
139
133
|
|
|
140
134
|
def initialize_and_get_db() -> sqlalchemy.engine.Engine:
|
|
141
135
|
global _SQLALCHEMY_ENGINE
|
|
136
|
+
|
|
142
137
|
if _SQLALCHEMY_ENGINE is not None:
|
|
143
138
|
return _SQLALCHEMY_ENGINE
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
else:
|
|
154
|
-
db_path = os.path.expanduser('~/.sky/spot_jobs.db')
|
|
155
|
-
pathlib.Path(db_path).parents[0].mkdir(parents=True,
|
|
156
|
-
exist_ok=True)
|
|
157
|
-
engine = sqlalchemy.create_engine('sqlite:///' + db_path)
|
|
158
|
-
create_table(engine)
|
|
159
|
-
_SQLALCHEMY_ENGINE = engine
|
|
139
|
+
|
|
140
|
+
# get an engine to the db
|
|
141
|
+
engine = migration_utils.get_engine('spot_jobs')
|
|
142
|
+
|
|
143
|
+
# run migrations if needed
|
|
144
|
+
create_table(engine)
|
|
145
|
+
|
|
146
|
+
# return engine
|
|
147
|
+
_SQLALCHEMY_ENGINE = engine
|
|
160
148
|
return _SQLALCHEMY_ENGINE
|
|
161
149
|
|
|
162
150
|
|
sky/server/common.py
CHANGED
|
@@ -13,12 +13,14 @@ import shutil
|
|
|
13
13
|
import subprocess
|
|
14
14
|
import sys
|
|
15
15
|
import tempfile
|
|
16
|
+
import threading
|
|
16
17
|
import time
|
|
17
18
|
import typing
|
|
18
19
|
from typing import Any, Dict, Literal, Optional, Tuple, Union
|
|
19
20
|
from urllib import parse
|
|
20
21
|
import uuid
|
|
21
22
|
|
|
23
|
+
import cachetools
|
|
22
24
|
import colorama
|
|
23
25
|
import filelock
|
|
24
26
|
|
|
@@ -276,6 +278,10 @@ def _handle_non_200_server_status(
|
|
|
276
278
|
return ApiServerInfo(status=ApiServerStatus.UNHEALTHY)
|
|
277
279
|
|
|
278
280
|
|
|
281
|
+
@cachetools.cached(cache=cachetools.TTLCache(maxsize=10,
|
|
282
|
+
ttl=5.0,
|
|
283
|
+
timer=time.time),
|
|
284
|
+
lock=threading.RLock())
|
|
279
285
|
def get_api_server_status(endpoint: Optional[str] = None) -> ApiServerInfo:
|
|
280
286
|
"""Retrieve the status of the API server.
|
|
281
287
|
|
|
@@ -413,6 +419,7 @@ def _start_api_server(deploy: bool = False,
|
|
|
413
419
|
server_url = get_server_url(host)
|
|
414
420
|
assert server_url in AVAILABLE_LOCAL_API_SERVER_URLS, (
|
|
415
421
|
f'server url {server_url} is not a local url')
|
|
422
|
+
|
|
416
423
|
with rich_utils.client_status('Starting SkyPilot API server, '
|
|
417
424
|
f'view logs at {constants.API_SERVER_LOGS}'):
|
|
418
425
|
logger.info(f'{colorama.Style.DIM}Failed to connect to '
|
|
@@ -488,6 +495,8 @@ def _start_api_server(deploy: bool = False,
|
|
|
488
495
|
'SkyPilot API server process exited unexpectedly.\n'
|
|
489
496
|
f'View logs at: {constants.API_SERVER_LOGS}')
|
|
490
497
|
try:
|
|
498
|
+
# Clear the cache to ensure fresh checks during startup
|
|
499
|
+
get_api_server_status.cache_clear() # type: ignore
|
|
491
500
|
check_server_healthy()
|
|
492
501
|
except exceptions.APIVersionMismatchError:
|
|
493
502
|
raise
|
sky/server/server.py
CHANGED
|
@@ -1764,6 +1764,9 @@ if __name__ == '__main__':
|
|
|
1764
1764
|
|
|
1765
1765
|
from sky.server import uvicorn as skyuvicorn
|
|
1766
1766
|
|
|
1767
|
+
# Initialize global user state db
|
|
1768
|
+
global_user_state.initialize_and_get_db()
|
|
1769
|
+
# Initialize request db
|
|
1767
1770
|
requests_lib.reset_db_and_logs()
|
|
1768
1771
|
|
|
1769
1772
|
parser = argparse.ArgumentParser()
|
sky/templates/aws-ray.yml.j2
CHANGED
|
@@ -19,7 +19,7 @@ docker:
|
|
|
19
19
|
username: |-
|
|
20
20
|
{{docker_login_config.username}}
|
|
21
21
|
password: |-
|
|
22
|
-
{{docker_login_config.password}}
|
|
22
|
+
{{docker_login_config.password | indent(6) }}
|
|
23
23
|
server: |-
|
|
24
24
|
{{docker_login_config.server}}
|
|
25
25
|
{%- endif %}
|
|
@@ -131,6 +131,12 @@ available_node_types:
|
|
|
131
131
|
- systemctl disable apt-daily.timer apt-daily-upgrade.timer unattended-upgrades.service
|
|
132
132
|
- systemctl mask apt-daily.service apt-daily-upgrade.service unattended-upgrades.service
|
|
133
133
|
- systemctl daemon-reload
|
|
134
|
+
{%- if runcmd %}
|
|
135
|
+
runcmd:
|
|
136
|
+
{%- for cmd in runcmd %}
|
|
137
|
+
- {{cmd}}
|
|
138
|
+
{%- endfor %}
|
|
139
|
+
{%- endif %}
|
|
134
140
|
TagSpecifications:
|
|
135
141
|
- ResourceType: instance
|
|
136
142
|
Tags:
|
sky/templates/azure-ray.yml.j2
CHANGED
sky/templates/do-ray.yml.j2
CHANGED
sky/templates/lambda-ray.yml.j2
CHANGED
sky/templates/nebius-ray.yml.j2
CHANGED
sky/templates/runpod-ray.yml.j2
CHANGED
sky/utils/db/migration_utils.py
CHANGED
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
import contextlib
|
|
4
4
|
import logging
|
|
5
5
|
import os
|
|
6
|
+
import pathlib
|
|
6
7
|
|
|
7
8
|
from alembic import command as alembic_command
|
|
8
9
|
from alembic.config import Config
|
|
@@ -10,6 +11,12 @@ from alembic.runtime import migration
|
|
|
10
11
|
import filelock
|
|
11
12
|
import sqlalchemy
|
|
12
13
|
|
|
14
|
+
from sky import sky_logging
|
|
15
|
+
from sky import skypilot_config
|
|
16
|
+
from sky.skylet import constants
|
|
17
|
+
|
|
18
|
+
logger = sky_logging.init_logger(__name__)
|
|
19
|
+
|
|
13
20
|
DB_INIT_LOCK_TIMEOUT_SECONDS = 10
|
|
14
21
|
|
|
15
22
|
GLOBAL_USER_STATE_DB_NAME = 'state_db'
|
|
@@ -21,6 +28,21 @@ SPOT_JOBS_VERSION = '001'
|
|
|
21
28
|
SPOT_JOBS_LOCK_PATH = '~/.sky/locks/.spot_jobs_db.lock'
|
|
22
29
|
|
|
23
30
|
|
|
31
|
+
def get_engine(db_name: str):
|
|
32
|
+
conn_string = None
|
|
33
|
+
if os.environ.get(constants.ENV_VAR_IS_SKYPILOT_SERVER) is not None:
|
|
34
|
+
conn_string = skypilot_config.get_nested(('db',), None)
|
|
35
|
+
if conn_string:
|
|
36
|
+
logger.debug(f'using db URI from {conn_string}')
|
|
37
|
+
engine = sqlalchemy.create_engine(conn_string,
|
|
38
|
+
poolclass=sqlalchemy.NullPool)
|
|
39
|
+
else:
|
|
40
|
+
db_path = os.path.expanduser(f'~/.sky/{db_name}.db')
|
|
41
|
+
pathlib.Path(db_path).parents[0].mkdir(parents=True, exist_ok=True)
|
|
42
|
+
engine = sqlalchemy.create_engine('sqlite:///' + db_path)
|
|
43
|
+
return engine
|
|
44
|
+
|
|
45
|
+
|
|
24
46
|
@contextlib.contextmanager
|
|
25
47
|
def db_lock(db_name: str):
|
|
26
48
|
lock_path = os.path.expanduser(f'~/.sky/locks/.{db_name}.lock')
|
|
@@ -37,7 +59,6 @@ def db_lock(db_name: str):
|
|
|
37
59
|
|
|
38
60
|
def get_alembic_config(engine: sqlalchemy.engine.Engine, section: str):
|
|
39
61
|
"""Get Alembic configuration for the given section"""
|
|
40
|
-
# Use the alembic.ini file from setup_files (included in wheel)
|
|
41
62
|
# From sky/utils/db/migration_utils.py -> sky/setup_files/alembic.ini
|
|
42
63
|
alembic_ini_path = os.path.join(
|
|
43
64
|
os.path.dirname(os.path.dirname(os.path.dirname(__file__))),
|
|
@@ -47,31 +68,29 @@ def get_alembic_config(engine: sqlalchemy.engine.Engine, section: str):
|
|
|
47
68
|
# Override the database URL to match SkyPilot's current connection
|
|
48
69
|
# Use render_as_string to get the full URL with password
|
|
49
70
|
url = engine.url.render_as_string(hide_password=False)
|
|
71
|
+
# Replace % with %% to escape the % character in the URL
|
|
72
|
+
# set_section_option uses variable interpolation, which treats % as a
|
|
73
|
+
# special character.
|
|
74
|
+
# any '%' symbol not used for interpolation needs to be escaped.
|
|
75
|
+
url = url.replace('%', '%%')
|
|
50
76
|
alembic_cfg.set_section_option(section, 'sqlalchemy.url', url)
|
|
51
77
|
|
|
52
78
|
return alembic_cfg
|
|
53
79
|
|
|
54
80
|
|
|
55
|
-
def
|
|
56
|
-
|
|
57
|
-
"""
|
|
58
|
-
|
|
59
|
-
This handles the case where a database was created with a newer version of
|
|
60
|
-
the code and we're now running older code. Since our migrations are purely
|
|
61
|
-
additive, it's safe to run a newer database with older code.
|
|
81
|
+
def needs_upgrade(engine: sqlalchemy.engine.Engine, section: str,
|
|
82
|
+
target_revision: str):
|
|
83
|
+
"""Check if the database needs to be upgraded.
|
|
62
84
|
|
|
63
85
|
Args:
|
|
64
86
|
engine: SQLAlchemy engine for the database
|
|
65
|
-
|
|
87
|
+
section: Alembic section to upgrade (e.g., 'state_db' or 'spot_jobs_db')
|
|
66
88
|
target_revision: Target revision to upgrade to (e.g., '001')
|
|
67
89
|
"""
|
|
68
|
-
# set alembic logger to warning level
|
|
69
|
-
alembic_logger = logging.getLogger('alembic')
|
|
70
|
-
alembic_logger.setLevel(logging.WARNING)
|
|
71
|
-
|
|
72
90
|
current_rev = None
|
|
73
91
|
|
|
74
|
-
#
|
|
92
|
+
# get alembic config for the given section
|
|
93
|
+
alembic_config = get_alembic_config(engine, section)
|
|
75
94
|
version_table = alembic_config.get_section_option(
|
|
76
95
|
alembic_config.config_ini_section, 'version_table', 'alembic_version')
|
|
77
96
|
|
|
@@ -81,13 +100,35 @@ def safe_alembic_upgrade(engine: sqlalchemy.engine.Engine,
|
|
|
81
100
|
current_rev = context.get_current_revision()
|
|
82
101
|
|
|
83
102
|
if current_rev is None:
|
|
84
|
-
|
|
85
|
-
return
|
|
103
|
+
return True
|
|
86
104
|
|
|
87
105
|
# Compare revisions - assuming they are numeric strings like '001', '002'
|
|
88
106
|
current_rev_num = int(current_rev)
|
|
89
107
|
target_rev_num = int(target_revision)
|
|
90
108
|
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
109
|
+
return current_rev_num < target_rev_num
|
|
110
|
+
|
|
111
|
+
|
|
112
|
+
def safe_alembic_upgrade(engine: sqlalchemy.engine.Engine, section: str,
|
|
113
|
+
target_revision: str):
|
|
114
|
+
"""Upgrade the database if needed. Uses a file lock to ensure
|
|
115
|
+
that only one process tries to upgrade the database at a time.
|
|
116
|
+
|
|
117
|
+
Args:
|
|
118
|
+
engine: SQLAlchemy engine for the database
|
|
119
|
+
section: Alembic section to upgrade (e.g., 'state_db' or 'spot_jobs_db')
|
|
120
|
+
target_revision: Target revision to upgrade to (e.g., '001')
|
|
121
|
+
"""
|
|
122
|
+
# set alembic logger to warning level
|
|
123
|
+
alembic_logger = logging.getLogger('alembic')
|
|
124
|
+
alembic_logger.setLevel(logging.WARNING)
|
|
125
|
+
|
|
126
|
+
alembic_config = get_alembic_config(engine, section)
|
|
127
|
+
|
|
128
|
+
# only acquire lock if db needs upgrade
|
|
129
|
+
if needs_upgrade(engine, section, target_revision):
|
|
130
|
+
with db_lock(section):
|
|
131
|
+
# check again if db needs upgrade in case another
|
|
132
|
+
# process upgraded it while we were waiting for the lock
|
|
133
|
+
if needs_upgrade(engine, section, target_revision):
|
|
134
|
+
alembic_command.upgrade(alembic_config, target_revision)
|
sky/utils/schemas.py
CHANGED
|
@@ -1198,6 +1198,19 @@ def get_config_schema():
|
|
|
1198
1198
|
'type': 'null',
|
|
1199
1199
|
}],
|
|
1200
1200
|
},
|
|
1201
|
+
'post_provision_runcmd': {
|
|
1202
|
+
'type': 'array',
|
|
1203
|
+
'items': {
|
|
1204
|
+
'oneOf': [{
|
|
1205
|
+
'type': 'string'
|
|
1206
|
+
}, {
|
|
1207
|
+
'type': 'array',
|
|
1208
|
+
'items': {
|
|
1209
|
+
'type': 'string'
|
|
1210
|
+
}
|
|
1211
|
+
}]
|
|
1212
|
+
},
|
|
1213
|
+
},
|
|
1201
1214
|
**_LABELS_SCHEMA,
|
|
1202
1215
|
**_NETWORK_CONFIG_SCHEMA,
|
|
1203
1216
|
},
|
{skypilot_nightly-1.0.0.dev20250724.dist-info → skypilot_nightly-1.0.0.dev20250725.dist-info}/RECORD
RENAMED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
sky/__init__.py,sha256=
|
|
1
|
+
sky/__init__.py,sha256=RLmXWpMwEZLLf88J7EGrn4NJx-vd_y6Uh_eefCwV3s8,6535
|
|
2
2
|
sky/admin_policy.py,sha256=BeSowGnWfDj58ALiNf3cc2N4gMQWzjO6aXnX7vaqYhk,9782
|
|
3
3
|
sky/authentication.py,sha256=V7zGSV7bqcAKC_EGOOS0KhJ01ZFLnme0WnjLFO7zavs,25603
|
|
4
4
|
sky/check.py,sha256=R0pFsTq2v-wr3NFePlX9DmDhsbvWEoFJAXsys3pUmT4,30338
|
|
@@ -8,7 +8,7 @@ sky/core.py,sha256=k_3QkqJecFpwLSatM52lD-IitVdjUIXn33EPJWcQfWE,56628
|
|
|
8
8
|
sky/dag.py,sha256=5MFXlP43y9U54zxfYGhVyBiWEInoFFlt_zJ7ASJntXw,3889
|
|
9
9
|
sky/exceptions.py,sha256=0saA9jj5etJiHjaX6PDTdFj3E3JtC3Ue-irE9OlrrEg,19454
|
|
10
10
|
sky/execution.py,sha256=sZf0306FCKAo1FS7Vg2yCADSr5XHsODYwESHhwdVTjo,33439
|
|
11
|
-
sky/global_user_state.py,sha256=
|
|
11
|
+
sky/global_user_state.py,sha256=PpStfGwx02mwlPdwR55auB1Y-GfYKxun90YpzzQdH-c,67579
|
|
12
12
|
sky/models.py,sha256=Eor-cT4D71QTimogcnJ5ey1G1PXK-OXN-snEtE8Uu_g,3152
|
|
13
13
|
sky/optimizer.py,sha256=rcH6CVix1PJWWSwe1XWItfsmG8igwbKtRE5QVWRlpR4,63804
|
|
14
14
|
sky/resources.py,sha256=8N32Kwlk3kEPaIE261Qa3hFFSWZYrVKeRRsc3Pfx1O8,105656
|
|
@@ -34,7 +34,7 @@ sky/adaptors/vast.py,sha256=tpvmHi7IkQNzbbHVkeo04kUSajoEpSzXr2XgeO_I1LU,695
|
|
|
34
34
|
sky/adaptors/vsphere.py,sha256=zJP9SeObEoLrpgHW2VHvZE48EhgVf8GfAEIwBeaDMfM,2129
|
|
35
35
|
sky/backends/__init__.py,sha256=tpa9gAygQopsiBUUuy3wVmr4E05FoPTFHIWqEo4i-u0,627
|
|
36
36
|
sky/backends/backend.py,sha256=6ltCouZhaXJqv2Zh9nP_YCdHf10_oIRNzAA-XDiMmI8,7969
|
|
37
|
-
sky/backends/backend_utils.py,sha256=
|
|
37
|
+
sky/backends/backend_utils.py,sha256=cxd1AJCrOxs_E72XoRgVuqJlr9WWXZ9wnoMs30qZhIY,147148
|
|
38
38
|
sky/backends/cloud_vm_ray_backend.py,sha256=WjsWb1y9skkAhJCIuC9qDXwKA42PasoqmWCuKovJG8s,264077
|
|
39
39
|
sky/backends/docker_utils.py,sha256=_EhM6NStZDAwcegppQqExaB5iuSn1qL4xFFUqXAz2Uk,8392
|
|
40
40
|
sky/backends/local_docker_backend.py,sha256=r84uhXCk7NK9hGW840KPKnrADd7mCerMwncxOzckHg4,17126
|
|
@@ -81,7 +81,7 @@ sky/client/sdk.py,sha256=1KIBayflVwL0sVoCj8IP5W75cwT-YEEdpJnglYLaQ98,92749
|
|
|
81
81
|
sky/client/sdk.pyi,sha256=Dyu9wBaCZmB3O_pg7q0pHe6i1aVrNFX73eGSdLAm_W8,8082
|
|
82
82
|
sky/client/service_account_auth.py,sha256=5jXk0G6ufuW-SHCO7BEHQeTO0_2a8KfFmA63auXFRj4,1529
|
|
83
83
|
sky/client/cli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
84
|
-
sky/client/cli/command.py,sha256=
|
|
84
|
+
sky/client/cli/command.py,sha256=F6P8cHDkZ3vEs-BAf_NC_5UJai8yYW2yXImz3f7-Dg8,223812
|
|
85
85
|
sky/client/cli/deprecation_utils.py,sha256=H_d5UyF2CekEoThduAzt5cihBO8hwKYMu0-Wqfbjv5E,3370
|
|
86
86
|
sky/client/cli/flags.py,sha256=6IdS_G2lB1C6r8kJMzLVREY_qV50VHiSfWlmppVrWuc,11623
|
|
87
87
|
sky/client/cli/git.py,sha256=dqSaJI1Ndv6RfKJa6HT6ednXr0j_pVlwSdh3XiQzB60,22018
|
|
@@ -111,19 +111,19 @@ sky/clouds/utils/azure_utils.py,sha256=NToRBnhEyuUvb-nBnsKTxjhOBRkMcrelL8LK4w6s4
|
|
|
111
111
|
sky/clouds/utils/gcp_utils.py,sha256=zpdibyvdROgDGqllcvQuST3pKqj6pzqX-gxCw-DsCfc,9873
|
|
112
112
|
sky/clouds/utils/oci_utils.py,sha256=TFqAqRLggg4Z0bhxrrq8nouSSomZy-ub1frHXEkud2M,7302
|
|
113
113
|
sky/clouds/utils/scp_utils.py,sha256=VGuccVO5uFGr8-yolWSoYrgr11z6cIeDBGcqkBzAyOs,18409
|
|
114
|
-
sky/dashboard/out/404.html,sha256=
|
|
115
|
-
sky/dashboard/out/clusters.html,sha256
|
|
116
|
-
sky/dashboard/out/config.html,sha256=
|
|
114
|
+
sky/dashboard/out/404.html,sha256=8t0jZbnXZUFlwXN5CiqzxcCEsdVZpbLOuGH4JoAoScQ,1423
|
|
115
|
+
sky/dashboard/out/clusters.html,sha256=HVuyoruUkxbS44wQLdP_ICVgDfOqru8exbImISdDDx0,1418
|
|
116
|
+
sky/dashboard/out/config.html,sha256=33i93jmCKYgM8sS5jBKaNp9niaqOaWg5nJkxTPkVKAU,1414
|
|
117
117
|
sky/dashboard/out/favicon.ico,sha256=XilUZZglAl_1zRsg85QsbQgmQAzGPQjcUIJ-A3AzYn8,93590
|
|
118
|
-
sky/dashboard/out/index.html,sha256=
|
|
119
|
-
sky/dashboard/out/infra.html,sha256=
|
|
120
|
-
sky/dashboard/out/jobs.html,sha256=
|
|
118
|
+
sky/dashboard/out/index.html,sha256=PuvqrqxVkGzTO_341nW8RsyOIUXXa2uNjoFH_LQrd-g,1407
|
|
119
|
+
sky/dashboard/out/infra.html,sha256=A_Ok_crm622ANbAKhAw5nOZhSZgsMUtWvoaFOC7GgZk,1412
|
|
120
|
+
sky/dashboard/out/jobs.html,sha256=0NPH--Wq-Gx4Od9lhuJVbfojW3ktrpvzle2oXkuHA48,1410
|
|
121
121
|
sky/dashboard/out/skypilot.svg,sha256=c0iRtlfLlaUm2p0rG9NFmo5FN0Qhf3pq5Xph-AeMPJw,5064
|
|
122
|
-
sky/dashboard/out/users.html,sha256=
|
|
123
|
-
sky/dashboard/out/volumes.html,sha256=
|
|
124
|
-
sky/dashboard/out/workspaces.html,sha256=
|
|
125
|
-
sky/dashboard/out/_next/static/
|
|
126
|
-
sky/dashboard/out/_next/static/
|
|
122
|
+
sky/dashboard/out/users.html,sha256=LECfiJnCEuRrEcqlnb8hLEIFr854RdAjCBQGdjszQas,1412
|
|
123
|
+
sky/dashboard/out/volumes.html,sha256=ty1i_zKM2r50KsNj5y654j1JOE2UOn9OmA0rWT7aAqE,1416
|
|
124
|
+
sky/dashboard/out/workspaces.html,sha256=KY7AQy4XnURj7YvhPVi36HOIQTtw-_xDM_H45MeSEIY,1422
|
|
125
|
+
sky/dashboard/out/_next/static/SiA7c33x_DqO42M373Okd/_buildManifest.js,sha256=mmxo6wQVKY20ZhMR66BRt5Wcei8mpj5spy7xJIR2Qy8,2236
|
|
126
|
+
sky/dashboard/out/_next/static/SiA7c33x_DqO42M373Okd/_ssgManifest.js,sha256=Z49s4suAsf5y_GfnQSvm4qtq2ggxEbZPfEDTXjy6XgA,80
|
|
127
127
|
sky/dashboard/out/_next/static/chunks/1043-869d9c78bf5dd3df.js,sha256=bAxynBdZtwL6IUsmByq0m47nF_VnO1lsMN9Xjdrp1GI,18328
|
|
128
128
|
sky/dashboard/out/_next/static/chunks/1141-e49a159c30a6c4a7.js,sha256=KK5G7lgpUnTVxW1tvREGo0rPqKfq8nDl6xx1T21fgCo,17818
|
|
129
129
|
sky/dashboard/out/_next/static/chunks/1272-1ef0bf0237faccdb.js,sha256=VJ6y-Z6Eg2T93hQIRfWAbjAkQ7nQhglmIaVbEpKSILY,38451
|
|
@@ -159,7 +159,7 @@ sky/dashboard/out/_next/static/chunks/framework-efc06c2733009cd3.js,sha256=XKYUV
|
|
|
159
159
|
sky/dashboard/out/_next/static/chunks/main-app-68c028b1bc5e1b72.js,sha256=zSukg-WO1Xy-B2xEIIGHXYApy2KOY9xWHcLqAYQvF3A,115883
|
|
160
160
|
sky/dashboard/out/_next/static/chunks/main-c0a4f1ea606d48d2.js,sha256=DPLM6ccDgTnITBgsqZPN3gmcI2szGCi9b_60PJZkTJQ,109885
|
|
161
161
|
sky/dashboard/out/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js,sha256=6QPOwdWeAVe8x-SsiDrm-Ga6u2DkqgG5SFqglrlyIgA,91381
|
|
162
|
-
sky/dashboard/out/_next/static/chunks/webpack-
|
|
162
|
+
sky/dashboard/out/_next/static/chunks/webpack-a305898dc479711e.js,sha256=gY1Zh71c62-i2vzQ1N9QlPV5Geb_hWNzq8GFoZAjEWs,4817
|
|
163
163
|
sky/dashboard/out/_next/static/chunks/pages/_app-da491665d4289aae.js,sha256=lZkOnC3PzyWAlYFDLoz0JOHgbnpqDBpk-XOqyQnmghM,95489
|
|
164
164
|
sky/dashboard/out/_next/static/chunks/pages/_error-c72a1f77a3c0be1b.js,sha256=D2OpMaqpdtCPyq6iPhZHuF2ekyMjleRchSNCLR6fqps,250
|
|
165
165
|
sky/dashboard/out/_next/static/chunks/pages/clusters-3d4be4961e1c94eb.js,sha256=kZI6ZPQB7bzi9HtLRlGGRqr9G4NlGTLsLv6OdqYVgek,860
|
|
@@ -177,13 +177,13 @@ sky/dashboard/out/_next/static/chunks/pages/jobs/[job]-dc0299ffefebcdbe.js,sha25
|
|
|
177
177
|
sky/dashboard/out/_next/static/chunks/pages/workspace/new-5629d4e551dba1ee.js,sha256=K9tqKHcB2kiSHTAddLaM2oL1PzmqZNTdLDOuNzCaJNM,765
|
|
178
178
|
sky/dashboard/out/_next/static/chunks/pages/workspaces/[name]-6bcd4b20914d76c9.js,sha256=wCk-0BTOhpwUb22meXUGhG7zX-retkF3aR7cuk4qbYQ,1492
|
|
179
179
|
sky/dashboard/out/_next/static/css/b3227360726f12eb.css,sha256=H55rkeVIrdGOUAIPmLZ6C78aEgXb7fEPa9mT9BOuLBI,55358
|
|
180
|
-
sky/dashboard/out/clusters/[cluster].html,sha256=
|
|
181
|
-
sky/dashboard/out/clusters/[cluster]/[job].html,sha256=
|
|
182
|
-
sky/dashboard/out/infra/[context].html,sha256=
|
|
183
|
-
sky/dashboard/out/jobs/[job].html,sha256=
|
|
180
|
+
sky/dashboard/out/clusters/[cluster].html,sha256=fs5nad7MpUFKJEsGfxFXmIl31kCACC_Ib0ULNx_qwQg,2848
|
|
181
|
+
sky/dashboard/out/clusters/[cluster]/[job].html,sha256=v8sfsqzqDs9bSn0W574ftrKchNCrxLgsetiQKNfmscA,2161
|
|
182
|
+
sky/dashboard/out/infra/[context].html,sha256=5glYBYxPu771gOu2v_7EVxjG5MbYJ1zuWBL3nLND6DA,1436
|
|
183
|
+
sky/dashboard/out/jobs/[job].html,sha256=hbzl5J8-YZcylVkyoZaPvfHR0OmTooSPP5zsFl-A5lQ,2305
|
|
184
184
|
sky/dashboard/out/videos/cursor-small.mp4,sha256=8tRdp1vjawOrXUar1cfjOc-nkaKmcwCPZx_LO0XlCvQ,203285
|
|
185
|
-
sky/dashboard/out/workspace/new.html,sha256=
|
|
186
|
-
sky/dashboard/out/workspaces/[name].html,sha256
|
|
185
|
+
sky/dashboard/out/workspace/new.html,sha256=EyowwrCI3bj_a9Bqk7DdGhTM8zy4Xeq4bHXugwzX5Ts,1428
|
|
186
|
+
sky/dashboard/out/workspaces/[name].html,sha256=-UybY7XErrUgrE0gZ-S5ai05F5QyN34nFRVpcH6IA_0,2846
|
|
187
187
|
sky/data/__init__.py,sha256=Nhaf1NURisXpZuwWANa2IuCyppIuc720FRwqSE2oEwY,184
|
|
188
188
|
sky/data/data_transfer.py,sha256=N8b0CQebDuHieXjvEVwlYmK6DbQxUGG1RQJEyTbh3dU,12040
|
|
189
189
|
sky/data/data_utils.py,sha256=CNYPM963qby5ddW0DZNbhiWXkqgB9MHh_jrC5DoBctM,33437
|
|
@@ -195,7 +195,7 @@ sky/jobs/constants.py,sha256=N7Bw_sSCL8cVd0NmKGXvAhyclR8Y-gJAair597umVo4,3305
|
|
|
195
195
|
sky/jobs/controller.py,sha256=kKnBMQs2XRg1TN80ToVWFwVdwKTuFE4TjQapb3V0iUI,36073
|
|
196
196
|
sky/jobs/recovery_strategy.py,sha256=a9A4W-6U3KU-pjkWiFpIdgTHC8W26-jYrmi4vzU9iOg,28818
|
|
197
197
|
sky/jobs/scheduler.py,sha256=b3RAjEzCXyoikh_BcmmGjoZ9ZeXr-tBnXoLFctt95ko,14375
|
|
198
|
-
sky/jobs/state.py,sha256=
|
|
198
|
+
sky/jobs/state.py,sha256=qo6Tc42ylrLJpVquLdKaD2zTUX8r-e5QknZClMaAlMI,61655
|
|
199
199
|
sky/jobs/utils.py,sha256=bYBtRY8Tu60t0gH7Z0FK7yntXoEHQhsO6IdNr_FDAmA,73283
|
|
200
200
|
sky/jobs/client/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
201
201
|
sky/jobs/client/sdk.py,sha256=SSdXVvaGCX5DjCfmMf6bSXOH1Dzk-a3bNhr7qNyHSuU,11335
|
|
@@ -331,12 +331,12 @@ sky/serve/server/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,
|
|
|
331
331
|
sky/serve/server/core.py,sha256=-djglmHVX-A3XTf0A-4pekoQ7-_Me7KzFnQjK8gaDDY,42080
|
|
332
332
|
sky/serve/server/server.py,sha256=A9K37a0nQgZeN3eKWv62Oh2C5TSAReTZ9pHmztqlI-c,4396
|
|
333
333
|
sky/server/__init__.py,sha256=MPPBqFzXz6Jv5QSk6td_IcvnfXfNErDZVcizu4MLRow,27
|
|
334
|
-
sky/server/common.py,sha256=
|
|
334
|
+
sky/server/common.py,sha256=XRLjlT0zSivdLRukjAQyWrwCVC6Qo-GY3XUjJJRViYQ,35384
|
|
335
335
|
sky/server/config.py,sha256=XWf5Kw4am6vMO5wcyWevbQAFH-dmKb7AMEgDzD083-M,8538
|
|
336
336
|
sky/server/constants.py,sha256=v6RP8ZEwCNsxO2s2IukgOcEldZO5bvcQaxmOTA0Cf0g,2321
|
|
337
337
|
sky/server/metrics.py,sha256=6H6n6dq_C5HMaU97mJlRUB9bqOEA_k205PO15wE3AWk,3648
|
|
338
338
|
sky/server/rest.py,sha256=-oDsI8-NmIcb7aqy_8USB4lQbPWdQibST59GJVtFUi8,7983
|
|
339
|
-
sky/server/server.py,sha256=
|
|
339
|
+
sky/server/server.py,sha256=AP2EyeL6N5V1VkRxwhLAOUYZdjkTCc8MYVtlhMoSSUc,73732
|
|
340
340
|
sky/server/state.py,sha256=YbVOMJ1JipQQv17gLIGyiGN7MKfnP83qlUa5MB1z0Yk,747
|
|
341
341
|
sky/server/stream_utils.py,sha256=RS4RuMxQqTGqp3uxzZVtmFWzos4d49P7hMX_VklzEVU,9189
|
|
342
342
|
sky/server/uvicorn.py,sha256=I-JUJwgUznt87hboDd66NTRaw0WtfFVzxxtoxowNqBg,9266
|
|
@@ -389,10 +389,10 @@ sky/skylet/ray_patches/worker.py.patch,sha256=_OBhibdr3xOy5Qje6Tt8D1eQVm_msi50TJ
|
|
|
389
389
|
sky/ssh_node_pools/__init__.py,sha256=phpYJAd7I0uO1-O87eb9PbetGbtMiKW5mI-NQCZlXPA,40
|
|
390
390
|
sky/ssh_node_pools/core.py,sha256=NyT-9W94lnKT_I1mfa068t-pIB7xzZ1WBjKTUdZIDGI,4877
|
|
391
391
|
sky/ssh_node_pools/server.py,sha256=Qb4Zu6DxqDQG8snUtvWLnUu40hqZEczdA1hVaP-h-y0,8351
|
|
392
|
-
sky/templates/aws-ray.yml.j2,sha256=
|
|
393
|
-
sky/templates/azure-ray.yml.j2,sha256=
|
|
392
|
+
sky/templates/aws-ray.yml.j2,sha256=l2zEBjW1mDU8Ze4Llr3kYPeVqZtaXeBjohmyhhoB1rY,9318
|
|
393
|
+
sky/templates/azure-ray.yml.j2,sha256=cQfCDev0quaVfVst_ly3tA8XrGXuAmAhkRJuS7qxFhg,6373
|
|
394
394
|
sky/templates/cudo-ray.yml.j2,sha256=9g0yFYUk6xPet-JNTPuVDZlVZ9oAcFPL1qaE6fyy-Xc,3797
|
|
395
|
-
sky/templates/do-ray.yml.j2,sha256=
|
|
395
|
+
sky/templates/do-ray.yml.j2,sha256=xtTVOrJzxyQOBnFZdCLd2C5aYn3lnPQ0emBaP0P-SdQ,4233
|
|
396
396
|
sky/templates/fluidstack-ray.yml.j2,sha256=dNr9svMNp0z6-PHyQeRa6Hl3SbgqMESgBdfpvtP3aH0,3789
|
|
397
397
|
sky/templates/gcp-ray.yml.j2,sha256=WO07ZUGBS6mWCMcdrmcXNGKSNTxhmOb6lMqwycnEFc4,11860
|
|
398
398
|
sky/templates/hyperbolic-ray.yml.j2,sha256=ThGcxd9m6RbgnZcT6imdikimwRhO5baYrP2h3Wx4HXM,2488
|
|
@@ -403,12 +403,12 @@ sky/templates/kubernetes-loadbalancer.yml.j2,sha256=IxrNYM366N01bbkJEbZ_UPYxUP8w
|
|
|
403
403
|
sky/templates/kubernetes-port-forward-proxy-command.sh,sha256=iw7mypHszg6Ggq9MbyiYMFOkSlXaQZulaxqC5IWYGCc,3381
|
|
404
404
|
sky/templates/kubernetes-ray.yml.j2,sha256=qPesN53KwvwnAQvBAyBgu5Eav8VNtBpiLIGHobLOfxw,57351
|
|
405
405
|
sky/templates/kubernetes-ssh-jump.yml.j2,sha256=k5W5sOIMppU7dDkJMwPlqsUcb92y7L5_TVG3hkgMy8M,2747
|
|
406
|
-
sky/templates/lambda-ray.yml.j2,sha256=
|
|
406
|
+
sky/templates/lambda-ray.yml.j2,sha256=PbUjxrGhyxhXxL2cmONAI_PRsua3I3Xr5V8yoEy7H6c,4760
|
|
407
407
|
sky/templates/local-ray.yml.j2,sha256=FNHeyHF6nW9nU9QLIZceUWfvrFTTcO51KqhTnYCEFaA,1185
|
|
408
|
-
sky/templates/nebius-ray.yml.j2,sha256=
|
|
408
|
+
sky/templates/nebius-ray.yml.j2,sha256=aEOPRUTJqeQIP_VINA7m2Zoq_e2BWkWWH8vr3uqdu34,6852
|
|
409
409
|
sky/templates/oci-ray.yml.j2,sha256=TvB2at81DuXSG1QV4dxmqjjMdfDTsCU5T4JH01vI5DU,4810
|
|
410
|
-
sky/templates/paperspace-ray.yml.j2,sha256=
|
|
411
|
-
sky/templates/runpod-ray.yml.j2,sha256=
|
|
410
|
+
sky/templates/paperspace-ray.yml.j2,sha256=PcB21RMfxO5Gne1qT7J_JjnZENLVHrAwVegjIEb_F6E,4283
|
|
411
|
+
sky/templates/runpod-ray.yml.j2,sha256=By2b6BLyaon4dx0b3elXCyLN7Dk1lxvMkYikZgCxjG4,4617
|
|
412
412
|
sky/templates/scp-ray.yml.j2,sha256=48b_mKtkx_fyEPQUQ_i6YMmylrtGbvIIUkQsuvgTU3I,3481
|
|
413
413
|
sky/templates/sky-serve-controller.yaml.j2,sha256=W4i1-OGRU2WDvauLC4EDXcYrNxj7mzRFSvSqzAKfehc,2020
|
|
414
414
|
sky/templates/skypilot-server-kubernetes-proxy.sh,sha256=n5swq5LauF9dnhDWMYqFFHkXeJ44Zjmg1RVbF60jNbE,1079
|
|
@@ -453,7 +453,7 @@ sky/utils/resource_checker.py,sha256=N18XhoVIqjY1VzmKvxQxRchRgC2WIgcEQyHDkLvg4Y8
|
|
|
453
453
|
sky/utils/resources_utils.py,sha256=zcJXHYQt6WtQHKuWEif1QP1NtSO7XQYJBaEs625yV1Y,15958
|
|
454
454
|
sky/utils/rich_console_utils.py,sha256=wPvAlshaFHuMZSjiDnaK3OSBppZLBjAn-lj7AvxNBQk,553
|
|
455
455
|
sky/utils/rich_utils.py,sha256=iR6Gf8ZewE9sut4uhkmZwtEelzm3FvckM9K41meQnWM,14650
|
|
456
|
-
sky/utils/schemas.py,sha256=
|
|
456
|
+
sky/utils/schemas.py,sha256=bepfJqottkzuonQAAOyd6Efivu8ltam3nqpF-ft_dgI,55061
|
|
457
457
|
sky/utils/status_lib.py,sha256=QGkd6COD1GX1h30Mk9RMUdyeUOMJs5971GkxTcFgdsU,1705
|
|
458
458
|
sky/utils/subprocess_utils.py,sha256=tOpFY_1ml7JkVGAN1o473lcKPklGR95qBCW61eu8kEo,15773
|
|
459
459
|
sky/utils/tempstore.py,sha256=3S5fJ3UjnE12ve38c3MpTXpoRWfDSGndZpqNe7P_8aU,2148
|
|
@@ -466,7 +466,7 @@ sky/utils/cli_utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSu
|
|
|
466
466
|
sky/utils/cli_utils/status_utils.py,sha256=Lxf_dQu_VTKRWCI86fDi0NiLjUk7IUCEc4jMo0dKjQA,15733
|
|
467
467
|
sky/utils/db/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
468
468
|
sky/utils/db/db_utils.py,sha256=Mee-36jZbG0T4qeJrWu8mamJd8qGBC95dQ2AG6ejt_8,7968
|
|
469
|
-
sky/utils/db/migration_utils.py,sha256=
|
|
469
|
+
sky/utils/db/migration_utils.py,sha256=b8s6rNHKK29mhhYxWwSYfL_FgefFF2do2T7gR6nOZDI,5048
|
|
470
470
|
sky/utils/kubernetes/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
471
471
|
sky/utils/kubernetes/cleanup-tunnel.sh,sha256=rXMXuMfyB9bzKjLvXdMCjimDVvdjGPMXuqeo2ZNx9OA,2244
|
|
472
472
|
sky/utils/kubernetes/config_map_utils.py,sha256=ucdQGp1XHliZxoCFWU8EMJ2NKfUEs7t-ygw-J61It_w,4760
|
|
@@ -496,9 +496,9 @@ sky/workspaces/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
|
496
496
|
sky/workspaces/core.py,sha256=MkQoVqWN67tf4VRq284U9vgAw4lwb_cpUfwHQT4V9Ow,16598
|
|
497
497
|
sky/workspaces/server.py,sha256=Box45DS54xXGHy7I3tGKGy-JP0a8G_z6IhfvGlEXtsA,3439
|
|
498
498
|
sky/workspaces/utils.py,sha256=IIAiFoS6sdb2t0X5YoX9AietpTanZUQNTK8cePun-sY,2143
|
|
499
|
-
skypilot_nightly-1.0.0.
|
|
500
|
-
skypilot_nightly-1.0.0.
|
|
501
|
-
skypilot_nightly-1.0.0.
|
|
502
|
-
skypilot_nightly-1.0.0.
|
|
503
|
-
skypilot_nightly-1.0.0.
|
|
504
|
-
skypilot_nightly-1.0.0.
|
|
499
|
+
skypilot_nightly-1.0.0.dev20250725.dist-info/licenses/LICENSE,sha256=emRJAvE7ngL6x0RhQvlns5wJzGI3NEQ_WMjNmd9TZc4,12170
|
|
500
|
+
skypilot_nightly-1.0.0.dev20250725.dist-info/METADATA,sha256=b41RTXYPRElmqIPQzjxEPVJ-1mBD46f-tqnt-Z-c5VU,19032
|
|
501
|
+
skypilot_nightly-1.0.0.dev20250725.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
502
|
+
skypilot_nightly-1.0.0.dev20250725.dist-info/entry_points.txt,sha256=StA6HYpuHj-Y61L2Ze-hK2IcLWgLZcML5gJu8cs6nU4,36
|
|
503
|
+
skypilot_nightly-1.0.0.dev20250725.dist-info/top_level.txt,sha256=qA8QuiNNb6Y1OF-pCUtPEr6sLEwy2xJX06Bd_CrtrHY,4
|
|
504
|
+
skypilot_nightly-1.0.0.dev20250725.dist-info/RECORD,,
|
/sky/dashboard/out/_next/static/{BURfWrKsQk9psMPv0OXrh → SiA7c33x_DqO42M373Okd}/_buildManifest.js
RENAMED
|
File without changes
|
/sky/dashboard/out/_next/static/{BURfWrKsQk9psMPv0OXrh → SiA7c33x_DqO42M373Okd}/_ssgManifest.js
RENAMED
|
File without changes
|
{skypilot_nightly-1.0.0.dev20250724.dist-info → skypilot_nightly-1.0.0.dev20250725.dist-info}/WHEEL
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|