skypilot-nightly 1.0.0.dev20250802__py3-none-any.whl → 1.0.0.dev20250806__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of skypilot-nightly might be problematic. Click here for more details.

Files changed (104) hide show
  1. sky/__init__.py +2 -2
  2. sky/backends/backend_utils.py +4 -1
  3. sky/catalog/kubernetes_catalog.py +8 -0
  4. sky/catalog/nebius_catalog.py +0 -1
  5. sky/client/cli/command.py +32 -13
  6. sky/client/sdk.py +16 -8
  7. sky/client/sdk.pyi +6 -5
  8. sky/client/sdk_async.py +811 -0
  9. sky/clouds/kubernetes.py +6 -1
  10. sky/clouds/nebius.py +1 -4
  11. sky/dashboard/out/404.html +1 -1
  12. sky/dashboard/out/_next/static/Gelsd19kVxXcX7aQQGsGu/_buildManifest.js +1 -0
  13. sky/dashboard/out/_next/static/chunks/1043-75af48ca5d5aaf57.js +1 -0
  14. sky/dashboard/out/_next/static/chunks/1141-8678a9102cc5f67e.js +11 -0
  15. sky/dashboard/out/_next/static/chunks/2622-951867535095b0eb.js +1 -0
  16. sky/dashboard/out/_next/static/chunks/3785.0a173cd4393f0fef.js +1 -0
  17. sky/dashboard/out/_next/static/chunks/9025.99f29acb7617963e.js +6 -0
  18. sky/dashboard/out/_next/static/chunks/{9984.78ee6d2c6fa4b0e8.js → 9984.c5564679e467d245.js} +1 -1
  19. sky/dashboard/out/_next/static/chunks/pages/{_app-a67ae198457b9886.js → _app-2a43ea3241bbdacd.js} +1 -1
  20. sky/dashboard/out/_next/static/chunks/pages/clusters/[cluster]/{[job]-fa63e8b1d203f298.js → [job]-7cb24da04ca00956.js} +1 -1
  21. sky/dashboard/out/_next/static/chunks/pages/clusters/{[cluster]-9e7df5fc761c95a7.js → [cluster]-1e95993124dbfc57.js} +1 -1
  22. sky/dashboard/out/_next/static/chunks/pages/clusters-47f1ddae13a2f8e4.js +1 -0
  23. sky/dashboard/out/_next/static/chunks/pages/config-d56e64f30db7b42e.js +1 -0
  24. sky/dashboard/out/_next/static/chunks/pages/infra/[context]-2a44e70b500b6b70.js +1 -0
  25. sky/dashboard/out/_next/static/chunks/pages/infra-22faac9325016d83.js +1 -0
  26. sky/dashboard/out/_next/static/chunks/pages/jobs/[job]-90693cb88b5599a7.js +11 -0
  27. sky/dashboard/out/_next/static/chunks/pages/jobs-ab318e52eb4424a7.js +1 -0
  28. sky/dashboard/out/_next/static/chunks/pages/users-b90c865a690bfe84.js +1 -0
  29. sky/dashboard/out/_next/static/chunks/pages/volumes-7af733f5d7b6ed1c.js +1 -0
  30. sky/dashboard/out/_next/static/chunks/pages/workspaces/{[name]-4d41c9023287f59a.js → [name]-35e0de5bca55e594.js} +1 -1
  31. sky/dashboard/out/_next/static/chunks/pages/workspaces-062525fb5462acb6.js +1 -0
  32. sky/dashboard/out/_next/static/chunks/webpack-387626669badf82e.js +1 -0
  33. sky/dashboard/out/clusters/[cluster]/[job].html +1 -1
  34. sky/dashboard/out/clusters/[cluster].html +1 -1
  35. sky/dashboard/out/clusters.html +1 -1
  36. sky/dashboard/out/config.html +1 -1
  37. sky/dashboard/out/index.html +1 -1
  38. sky/dashboard/out/infra/[context].html +1 -1
  39. sky/dashboard/out/infra.html +1 -1
  40. sky/dashboard/out/jobs/[job].html +1 -1
  41. sky/dashboard/out/jobs.html +1 -1
  42. sky/dashboard/out/users.html +1 -1
  43. sky/dashboard/out/volumes.html +1 -1
  44. sky/dashboard/out/workspace/new.html +1 -1
  45. sky/dashboard/out/workspaces/[name].html +1 -1
  46. sky/dashboard/out/workspaces.html +1 -1
  47. sky/jobs/client/sdk_async.py +135 -0
  48. sky/jobs/utils.py +3 -1
  49. sky/provision/kubernetes/utils.py +62 -6
  50. sky/provision/nebius/instance.py +1 -0
  51. sky/provision/nebius/utils.py +9 -1
  52. sky/serve/client/sdk_async.py +130 -0
  53. sky/serve/constants.py +2 -1
  54. sky/serve/controller.py +2 -1
  55. sky/serve/load_balancer.py +3 -1
  56. sky/serve/serve_state.py +70 -5
  57. sky/serve/serve_utils.py +124 -22
  58. sky/serve/server/impl.py +22 -21
  59. sky/serve/service.py +8 -1
  60. sky/server/auth/__init__.py +0 -0
  61. sky/server/auth/authn.py +46 -0
  62. sky/server/auth/oauth2_proxy.py +185 -0
  63. sky/server/common.py +108 -17
  64. sky/server/constants.py +1 -1
  65. sky/server/daemons.py +60 -11
  66. sky/server/rest.py +114 -0
  67. sky/server/server.py +44 -40
  68. sky/setup_files/dependencies.py +2 -0
  69. sky/skylet/constants.py +2 -1
  70. sky/skylet/events.py +5 -1
  71. sky/skylet/skylet.py +3 -1
  72. sky/task.py +43 -10
  73. sky/templates/kubernetes-ray.yml.j2 +4 -0
  74. sky/templates/nebius-ray.yml.j2 +1 -0
  75. sky/utils/controller_utils.py +7 -0
  76. sky/utils/rich_utils.py +120 -0
  77. {skypilot_nightly-1.0.0.dev20250802.dist-info → skypilot_nightly-1.0.0.dev20250806.dist-info}/METADATA +5 -1
  78. {skypilot_nightly-1.0.0.dev20250802.dist-info → skypilot_nightly-1.0.0.dev20250806.dist-info}/RECORD +87 -82
  79. sky/dashboard/out/_next/static/2JNCZ4daQBotwWRNGi6aE/_buildManifest.js +0 -1
  80. sky/dashboard/out/_next/static/chunks/1043-928582d4860fef92.js +0 -1
  81. sky/dashboard/out/_next/static/chunks/1141-3f10a5a9f697c630.js +0 -11
  82. sky/dashboard/out/_next/static/chunks/3698-7874720877646365.js +0 -1
  83. sky/dashboard/out/_next/static/chunks/3785.95524bc443db8260.js +0 -1
  84. sky/dashboard/out/_next/static/chunks/6989-983d3ae7a874de98.js +0 -1
  85. sky/dashboard/out/_next/static/chunks/9025.7937c16bc8623516.js +0 -6
  86. sky/dashboard/out/_next/static/chunks/pages/clusters-956ad430075efee8.js +0 -1
  87. sky/dashboard/out/_next/static/chunks/pages/config-8620d099cbef8608.js +0 -1
  88. sky/dashboard/out/_next/static/chunks/pages/infra/[context]-9cfd875eecb6eaf5.js +0 -1
  89. sky/dashboard/out/_next/static/chunks/pages/infra-0fbdc9072f19fbe2.js +0 -1
  90. sky/dashboard/out/_next/static/chunks/pages/jobs/[job]-6c5af4c86e6ab3d3.js +0 -11
  91. sky/dashboard/out/_next/static/chunks/pages/jobs-6393a9edc7322b54.js +0 -1
  92. sky/dashboard/out/_next/static/chunks/pages/users-34d6bb10c3b3ee3d.js +0 -1
  93. sky/dashboard/out/_next/static/chunks/pages/volumes-225c8dae0634eb7f.js +0 -1
  94. sky/dashboard/out/_next/static/chunks/pages/workspaces-e4cb7e97d37e93ad.js +0 -1
  95. sky/dashboard/out/_next/static/chunks/webpack-13145516b19858fb.js +0 -1
  96. /sky/dashboard/out/_next/static/{2JNCZ4daQBotwWRNGi6aE → Gelsd19kVxXcX7aQQGsGu}/_ssgManifest.js +0 -0
  97. /sky/dashboard/out/_next/static/chunks/{1871-7e17c195296e2ea9.js → 1871-ced1c14230cad6e1.js} +0 -0
  98. /sky/dashboard/out/_next/static/chunks/{6135-d0e285ac5f3f2485.js → 6135-2d7ed3350659d073.js} +0 -0
  99. /sky/dashboard/out/_next/static/chunks/{6601-234b1cf963c7280b.js → 6601-2109d22e7861861c.js} +0 -0
  100. /sky/dashboard/out/_next/static/chunks/{938-40d15b6261ec8dc1.js → 938-bda2685db5eae6cf.js} +0 -0
  101. {skypilot_nightly-1.0.0.dev20250802.dist-info → skypilot_nightly-1.0.0.dev20250806.dist-info}/WHEEL +0 -0
  102. {skypilot_nightly-1.0.0.dev20250802.dist-info → skypilot_nightly-1.0.0.dev20250806.dist-info}/entry_points.txt +0 -0
  103. {skypilot_nightly-1.0.0.dev20250802.dist-info → skypilot_nightly-1.0.0.dev20250806.dist-info}/licenses/LICENSE +0 -0
  104. {skypilot_nightly-1.0.0.dev20250802.dist-info → skypilot_nightly-1.0.0.dev20250806.dist-info}/top_level.txt +0 -0
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[8144],{43969:function(e,n,t){(window.__NEXT_P=window.__NEXT_P||[]).push(["/volumes",function(){return t(32567)}])},32567:function(e,n,t){"use strict";t.r(n),t.d(n,{default:function(){return l}});var r=t(85893);t(67294);var u=t(9008),s=t.n(u),i=t(5152);let o=t.n(i)()(()=>Promise.all([t.e(616),t.e(5230),t.e(5739),t.e(1664),t.e(9847),t.e(2622),t.e(6990),t.e(8969),t.e(1043),t.e(4725)]).then(t.bind(t,54725)).then(e=>e.Volumes),{loadableGenerated:{webpack:()=>[54725]},ssr:!1});function l(){return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(s(),{children:(0,r.jsx)("title",{children:"Volumes | SkyPilot Dashboard"})}),(0,r.jsx)(o,{})]})}},9008:function(e,n,t){e.exports=t(37219)}},function(e){e.O(0,[2888,9774,179],function(){return e(e.s=43969)}),_N_E=e.O()}]);
@@ -1 +1 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[6324,2003],{77614:function(e,n,r){(window.__NEXT_P=window.__NEXT_P||[]).push(["/workspaces/[name]",function(){return r(59431)}])},59431:function(e,n,r){"use strict";r.r(n),r.d(n,{default:function(){return i}});var u=r(85893);r(67294);var t=r(11163),l=r(11141);function i(){let e=(0,t.useRouter)(),{name:n}=e.query;return e.isReady&&n?(0,u.jsx)(l.WorkspaceEditor,{workspaceName:n}):(0,u.jsx)("div",{children:"Loading..."})}},9008:function(e,n,r){e.exports=r(37219)},12003:function(e,n,r){"use strict";r.d(n,{j:function(){return i}});var u=r(90512);let t=e=>"boolean"==typeof e?`${e}`:0===e?"0":e,l=u.W,i=(e,n)=>r=>{var u;if((null==n?void 0:n.variants)==null)return l(e,null==r?void 0:r.class,null==r?void 0:r.className);let{variants:i,defaultVariants:s}=n,o=Object.keys(i).map(e=>{let n=null==r?void 0:r[e],u=null==s?void 0:s[e];if(null===n)return null;let l=t(n)||t(u);return i[e][l]}),a=r&&Object.entries(r).reduce((e,n)=>{let[r,u]=n;return void 0===u||(e[r]=u),e},{});return l(e,o,null==n?void 0:null===(u=n.compoundVariants)||void 0===u?void 0:u.reduce((e,n)=>{let{class:r,className:u,...t}=n;return Object.entries(t).every(e=>{let[n,r]=e;return Array.isArray(r)?r.includes({...s,...a}[n]):({...s,...a})[n]===r})?[...e,r,u]:e},[]),null==r?void 0:r.class,null==r?void 0:r.className)}}},function(e){e.O(0,[616,5230,5739,1664,7411,1272,1559,6989,3698,6135,6990,8969,1043,6601,938,1141,2888,9774,179],function(){return e(e.s=77614)}),_N_E=e.O()}]);
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[6324,2003],{77614:function(e,n,r){(window.__NEXT_P=window.__NEXT_P||[]).push(["/workspaces/[name]",function(){return r(59431)}])},59431:function(e,n,r){"use strict";r.r(n),r.d(n,{default:function(){return i}});var u=r(85893);r(67294);var t=r(11163),l=r(11141);function i(){let e=(0,t.useRouter)(),{name:n}=e.query;return e.isReady&&n?(0,u.jsx)(l.WorkspaceEditor,{workspaceName:n}):(0,u.jsx)("div",{children:"Loading..."})}},9008:function(e,n,r){e.exports=r(37219)},12003:function(e,n,r){"use strict";r.d(n,{j:function(){return i}});var u=r(90512);let t=e=>"boolean"==typeof e?`${e}`:0===e?"0":e,l=u.W,i=(e,n)=>r=>{var u;if((null==n?void 0:n.variants)==null)return l(e,null==r?void 0:r.class,null==r?void 0:r.className);let{variants:i,defaultVariants:s}=n,o=Object.keys(i).map(e=>{let n=null==r?void 0:r[e],u=null==s?void 0:s[e];if(null===n)return null;let l=t(n)||t(u);return i[e][l]}),a=r&&Object.entries(r).reduce((e,n)=>{let[r,u]=n;return void 0===u||(e[r]=u),e},{});return l(e,o,null==n?void 0:null===(u=n.compoundVariants)||void 0===u?void 0:u.reduce((e,n)=>{let{class:r,className:u,...t}=n;return Object.entries(t).every(e=>{let[n,r]=e;return Array.isArray(r)?r.includes({...s,...a}[n]):({...s,...a})[n]===r})?[...e,r,u]:e},[]),null==r?void 0:r.class,null==r?void 0:r.className)}}},function(e){e.O(0,[616,5230,5739,1664,7411,1272,1559,2622,6135,6990,8969,1043,6601,938,1141,2888,9774,179],function(){return e(e.s=77614)}),_N_E=e.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[1590],{92592:function(e,n,r){(window.__NEXT_P=window.__NEXT_P||[]).push(["/workspaces",function(){return r(4980)}])},4980:function(e,n,r){"use strict";r.r(n),r.d(n,{default:function(){return u}});var t=r(85893);r(67294);var s=r(9008),c=r.n(s),i=r(5152);let o=r.n(i)()(()=>Promise.all([r.e(616),r.e(5230),r.e(5739),r.e(1664),r.e(7411),r.e(1272),r.e(1559),r.e(2622),r.e(6135),r.e(6990),r.e(8969),r.e(1043),r.e(6601),r.e(938),r.e(4869)]).then(r.bind(r,82077)).then(e=>e.Workspaces),{loadableGenerated:{webpack:()=>[82077]},ssr:!1});function u(){return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(c(),{children:(0,t.jsx)("title",{children:"Workspaces | SkyPilot Dashboard"})}),(0,t.jsx)(o,{})]})}},9008:function(e,n,r){e.exports=r(37219)}},function(e){e.O(0,[2888,9774,179],function(){return e(e.s=92592)}),_N_E=e.O()}]);
@@ -0,0 +1 @@
1
+ !function(){"use strict";var e,t,n,r,c,o,u,i,a,f={},s={};function d(e){var t=s[e];if(void 0!==t)return t.exports;var n=s[e]={exports:{}},r=!0;try{f[e](n,n.exports,d),r=!1}finally{r&&delete s[e]}return n.exports}d.m=f,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 u=1/0,o=0;o<e.length;o++){for(var n=e[o][0],r=e[o][1],c=e[o][2],i=!0,a=0;a<n.length;a++)u>=c&&Object.keys(d.O).every(function(e){return d.O[e](n[a])})?n.splice(a--,1):(i=!1,c<u&&(u=c));if(i){e.splice(o--,1);var f=r();void 0!==f&&(t=f)}}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 u=2&r&&e;"object"==typeof u&&!~t.indexOf(u);u=n(u))Object.getOwnPropertyNames(u).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.fab69e61bac57b23.js":2369===e?"static/chunks/2369.fc20f0c2c8ed9fe7.js":3937===e?"static/chunks/3937.210053269f121201.js":9025===e?"static/chunks/9025.99f29acb7617963e.js":4937===e?"static/chunks/4937.d6bf67771e353356.js":9984===e?"static/chunks/9984.c5564679e467d245.js":2003===e?"static/chunks/2003.f90b06bb1f914295.js":691===e?"static/chunks/691.6d99cbfba347cebf.js":2641===e?"static/chunks/2641.142718b6b78a6f9b.js":3785===e?"static/chunks/3785.0a173cd4393f0fef.js":9847===e?"static/chunks/9847.4c46c5e229c78704.js":4725===e?"static/chunks/4725.42f21f250f91f65b.js":4869===e?"static/chunks/4869.18e6a4361a380763.js":"static/chunks/"+e+"-"+({616:"3d59f75e2ccf9321",938:"bda2685db5eae6cf",1043:"75af48ca5d5aaf57",1141:"8678a9102cc5f67e",1272:"1ef0bf0237faccdb",1559:"6c00e20454194859",1664:"22b00e32c9ff96a4",1871:"ced1c14230cad6e1",2622:"951867535095b0eb",5230:"f3bb2663e442e86c",5739:"d67458fcb1386c92",6135:"2d7ed3350659d073",6601:"2109d22e7861861c",6990:"08b2a1cae076a943",7411:"b15471acd2cba716",8969:"9a8cca241b30db83"})[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 u,i,a=document.getElementsByTagName("script"),f=0;f<a.length;f++){var s=a[f];if(s.getAttribute("src")==e||s.getAttribute("data-webpack")==c+n){u=s;break}}u||(i=!0,(u=document.createElement("script")).charset="utf-8",u.timeout=120,d.nc&&u.setAttribute("nonce",d.nc),u.setAttribute("data-webpack",c+n),u.src=d.tu(e)),r[e]=[t];var b=function(t,n){u.onerror=u.onload=null,clearTimeout(l);var c=r[e];if(delete r[e],u.parentNode&&u.parentNode.removeChild(u),c&&c.forEach(function(e){return e(n)}),t)return t(n)},l=setTimeout(b.bind(null,void 0,{type:"timeout",target:u}),12e4);u.onerror=b.bind(null,u.onerror),u.onload=b.bind(null,u.onload),i&&document.head.appendChild(u)},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/",u={2272:0},d.f.j=function(e,t){var n=d.o(u,e)?u[e]:void 0;if(0!==n){if(n)t.push(n[2]);else if(2272!=e){var r=new Promise(function(t,r){n=u[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(u,e)&&(0!==(n=u[e])&&(u[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 u[e]=0}},d.O.j=function(e){return 0===u[e]},i=function(e,t){var n,r,c=t[0],o=t[1],i=t[2],a=0;if(c.some(function(e){return 0!==u[e]})){for(n in o)d.o(o,n)&&(d.m[n]=o[n]);if(i)var f=i(d)}for(e&&e(t);a<c.length;a++)r=c[a],d.o(u,r)&&u[r]&&u[r][0](),u[r]=0;return d.O(f)},(a=self.webpackChunk_N_E=self.webpackChunk_N_E||[]).forEach(i.bind(null,0)),a.push=i.bind(null,a.push.bind(a)),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-13145516b19858fb.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-cf60a09ccd051a10.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-f15ccb73239a3bf1.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-a67ae198457b9886.js" defer=""></script><script src="/dashboard/_next/static/chunks/616-3d59f75e2ccf9321.js" defer=""></script><script src="/dashboard/_next/static/chunks/5230-f3bb2663e442e86c.js" defer=""></script><script src="/dashboard/_next/static/chunks/5739-d67458fcb1386c92.js" defer=""></script><script src="/dashboard/_next/static/chunks/1664-22b00e32c9ff96a4.js" defer=""></script><script src="/dashboard/_next/static/chunks/7411-b15471acd2cba716.js" defer=""></script><script src="/dashboard/_next/static/chunks/6989-983d3ae7a874de98.js" defer=""></script><script src="/dashboard/_next/static/chunks/3698-7874720877646365.js" defer=""></script><script src="/dashboard/_next/static/chunks/6135-d0e285ac5f3f2485.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/clusters/%5Bcluster%5D/%5Bjob%5D-fa63e8b1d203f298.js" defer=""></script><script src="/dashboard/_next/static/2JNCZ4daQBotwWRNGi6aE/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/2JNCZ4daQBotwWRNGi6aE/_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":"2JNCZ4daQBotwWRNGi6aE","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/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-387626669badf82e.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-cf60a09ccd051a10.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-f15ccb73239a3bf1.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-2a43ea3241bbdacd.js" defer=""></script><script src="/dashboard/_next/static/chunks/616-3d59f75e2ccf9321.js" defer=""></script><script src="/dashboard/_next/static/chunks/5230-f3bb2663e442e86c.js" defer=""></script><script src="/dashboard/_next/static/chunks/5739-d67458fcb1386c92.js" defer=""></script><script src="/dashboard/_next/static/chunks/1664-22b00e32c9ff96a4.js" defer=""></script><script src="/dashboard/_next/static/chunks/7411-b15471acd2cba716.js" defer=""></script><script src="/dashboard/_next/static/chunks/2622-951867535095b0eb.js" defer=""></script><script src="/dashboard/_next/static/chunks/6135-2d7ed3350659d073.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/clusters/%5Bcluster%5D/%5Bjob%5D-7cb24da04ca00956.js" defer=""></script><script src="/dashboard/_next/static/Gelsd19kVxXcX7aQQGsGu/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/Gelsd19kVxXcX7aQQGsGu/_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":"Gelsd19kVxXcX7aQQGsGu","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-13145516b19858fb.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-cf60a09ccd051a10.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-f15ccb73239a3bf1.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-a67ae198457b9886.js" defer=""></script><script src="/dashboard/_next/static/chunks/616-3d59f75e2ccf9321.js" defer=""></script><script src="/dashboard/_next/static/chunks/5230-f3bb2663e442e86c.js" defer=""></script><script src="/dashboard/_next/static/chunks/5739-d67458fcb1386c92.js" defer=""></script><script src="/dashboard/_next/static/chunks/1664-22b00e32c9ff96a4.js" defer=""></script><script src="/dashboard/_next/static/chunks/7411-b15471acd2cba716.js" defer=""></script><script src="/dashboard/_next/static/chunks/1272-1ef0bf0237faccdb.js" defer=""></script><script src="/dashboard/_next/static/chunks/1559-6c00e20454194859.js" defer=""></script><script src="/dashboard/_next/static/chunks/6212-7bd06f60ba693125.js" defer=""></script><script src="/dashboard/_next/static/chunks/6989-983d3ae7a874de98.js" defer=""></script><script src="/dashboard/_next/static/chunks/3698-7874720877646365.js" defer=""></script><script src="/dashboard/_next/static/chunks/6135-d0e285ac5f3f2485.js" defer=""></script><script src="/dashboard/_next/static/chunks/6990-08b2a1cae076a943.js" defer=""></script><script src="/dashboard/_next/static/chunks/8969-9a8cca241b30db83.js" defer=""></script><script src="/dashboard/_next/static/chunks/1043-928582d4860fef92.js" defer=""></script><script src="/dashboard/_next/static/chunks/6601-234b1cf963c7280b.js" defer=""></script><script src="/dashboard/_next/static/chunks/938-40d15b6261ec8dc1.js" defer=""></script><script src="/dashboard/_next/static/chunks/1871-7e17c195296e2ea9.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/clusters/%5Bcluster%5D-9e7df5fc761c95a7.js" defer=""></script><script src="/dashboard/_next/static/2JNCZ4daQBotwWRNGi6aE/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/2JNCZ4daQBotwWRNGi6aE/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/clusters/[cluster]","query":{},"buildId":"2JNCZ4daQBotwWRNGi6aE","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/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-387626669badf82e.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-cf60a09ccd051a10.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-f15ccb73239a3bf1.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-2a43ea3241bbdacd.js" defer=""></script><script src="/dashboard/_next/static/chunks/616-3d59f75e2ccf9321.js" defer=""></script><script src="/dashboard/_next/static/chunks/5230-f3bb2663e442e86c.js" defer=""></script><script src="/dashboard/_next/static/chunks/5739-d67458fcb1386c92.js" defer=""></script><script src="/dashboard/_next/static/chunks/1664-22b00e32c9ff96a4.js" defer=""></script><script src="/dashboard/_next/static/chunks/7411-b15471acd2cba716.js" defer=""></script><script src="/dashboard/_next/static/chunks/1272-1ef0bf0237faccdb.js" defer=""></script><script src="/dashboard/_next/static/chunks/1559-6c00e20454194859.js" defer=""></script><script src="/dashboard/_next/static/chunks/6212-7bd06f60ba693125.js" defer=""></script><script src="/dashboard/_next/static/chunks/2622-951867535095b0eb.js" defer=""></script><script src="/dashboard/_next/static/chunks/6135-2d7ed3350659d073.js" defer=""></script><script src="/dashboard/_next/static/chunks/6990-08b2a1cae076a943.js" defer=""></script><script src="/dashboard/_next/static/chunks/8969-9a8cca241b30db83.js" defer=""></script><script src="/dashboard/_next/static/chunks/1043-75af48ca5d5aaf57.js" defer=""></script><script src="/dashboard/_next/static/chunks/6601-2109d22e7861861c.js" defer=""></script><script src="/dashboard/_next/static/chunks/938-bda2685db5eae6cf.js" defer=""></script><script src="/dashboard/_next/static/chunks/1871-ced1c14230cad6e1.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/clusters/%5Bcluster%5D-1e95993124dbfc57.js" defer=""></script><script src="/dashboard/_next/static/Gelsd19kVxXcX7aQQGsGu/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/Gelsd19kVxXcX7aQQGsGu/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/clusters/[cluster]","query":{},"buildId":"Gelsd19kVxXcX7aQQGsGu","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-13145516b19858fb.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-cf60a09ccd051a10.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-f15ccb73239a3bf1.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-a67ae198457b9886.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/clusters-956ad430075efee8.js" defer=""></script><script src="/dashboard/_next/static/2JNCZ4daQBotwWRNGi6aE/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/2JNCZ4daQBotwWRNGi6aE/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/clusters","query":{},"buildId":"2JNCZ4daQBotwWRNGi6aE","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/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-387626669badf82e.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-cf60a09ccd051a10.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-f15ccb73239a3bf1.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-2a43ea3241bbdacd.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/clusters-47f1ddae13a2f8e4.js" defer=""></script><script src="/dashboard/_next/static/Gelsd19kVxXcX7aQQGsGu/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/Gelsd19kVxXcX7aQQGsGu/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/clusters","query":{},"buildId":"Gelsd19kVxXcX7aQQGsGu","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-13145516b19858fb.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-cf60a09ccd051a10.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-f15ccb73239a3bf1.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-a67ae198457b9886.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/config-8620d099cbef8608.js" defer=""></script><script src="/dashboard/_next/static/2JNCZ4daQBotwWRNGi6aE/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/2JNCZ4daQBotwWRNGi6aE/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/config","query":{},"buildId":"2JNCZ4daQBotwWRNGi6aE","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/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-387626669badf82e.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-cf60a09ccd051a10.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-f15ccb73239a3bf1.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-2a43ea3241bbdacd.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/config-d56e64f30db7b42e.js" defer=""></script><script src="/dashboard/_next/static/Gelsd19kVxXcX7aQQGsGu/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/Gelsd19kVxXcX7aQQGsGu/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/config","query":{},"buildId":"Gelsd19kVxXcX7aQQGsGu","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-13145516b19858fb.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-cf60a09ccd051a10.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-f15ccb73239a3bf1.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-a67ae198457b9886.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/index-444f1804401f04ea.js" defer=""></script><script src="/dashboard/_next/static/2JNCZ4daQBotwWRNGi6aE/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/2JNCZ4daQBotwWRNGi6aE/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/","query":{},"buildId":"2JNCZ4daQBotwWRNGi6aE","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/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-387626669badf82e.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-cf60a09ccd051a10.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-f15ccb73239a3bf1.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-2a43ea3241bbdacd.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/index-444f1804401f04ea.js" defer=""></script><script src="/dashboard/_next/static/Gelsd19kVxXcX7aQQGsGu/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/Gelsd19kVxXcX7aQQGsGu/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/","query":{},"buildId":"Gelsd19kVxXcX7aQQGsGu","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-13145516b19858fb.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-cf60a09ccd051a10.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-f15ccb73239a3bf1.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-a67ae198457b9886.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/infra/%5Bcontext%5D-9cfd875eecb6eaf5.js" defer=""></script><script src="/dashboard/_next/static/2JNCZ4daQBotwWRNGi6aE/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/2JNCZ4daQBotwWRNGi6aE/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/infra/[context]","query":{},"buildId":"2JNCZ4daQBotwWRNGi6aE","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/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-387626669badf82e.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-cf60a09ccd051a10.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-f15ccb73239a3bf1.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-2a43ea3241bbdacd.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/infra/%5Bcontext%5D-2a44e70b500b6b70.js" defer=""></script><script src="/dashboard/_next/static/Gelsd19kVxXcX7aQQGsGu/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/Gelsd19kVxXcX7aQQGsGu/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/infra/[context]","query":{},"buildId":"Gelsd19kVxXcX7aQQGsGu","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-13145516b19858fb.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-cf60a09ccd051a10.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-f15ccb73239a3bf1.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-a67ae198457b9886.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/infra-0fbdc9072f19fbe2.js" defer=""></script><script src="/dashboard/_next/static/2JNCZ4daQBotwWRNGi6aE/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/2JNCZ4daQBotwWRNGi6aE/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/infra","query":{},"buildId":"2JNCZ4daQBotwWRNGi6aE","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/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-387626669badf82e.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-cf60a09ccd051a10.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-f15ccb73239a3bf1.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-2a43ea3241bbdacd.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/infra-22faac9325016d83.js" defer=""></script><script src="/dashboard/_next/static/Gelsd19kVxXcX7aQQGsGu/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/Gelsd19kVxXcX7aQQGsGu/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/infra","query":{},"buildId":"Gelsd19kVxXcX7aQQGsGu","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-13145516b19858fb.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-cf60a09ccd051a10.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-f15ccb73239a3bf1.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-a67ae198457b9886.js" defer=""></script><script src="/dashboard/_next/static/chunks/616-3d59f75e2ccf9321.js" defer=""></script><script src="/dashboard/_next/static/chunks/5230-f3bb2663e442e86c.js" defer=""></script><script src="/dashboard/_next/static/chunks/5739-d67458fcb1386c92.js" defer=""></script><script src="/dashboard/_next/static/chunks/1664-22b00e32c9ff96a4.js" defer=""></script><script src="/dashboard/_next/static/chunks/7411-b15471acd2cba716.js" defer=""></script><script src="/dashboard/_next/static/chunks/1272-1ef0bf0237faccdb.js" defer=""></script><script src="/dashboard/_next/static/chunks/6212-7bd06f60ba693125.js" defer=""></script><script src="/dashboard/_next/static/chunks/6989-983d3ae7a874de98.js" defer=""></script><script src="/dashboard/_next/static/chunks/3698-7874720877646365.js" defer=""></script><script src="/dashboard/_next/static/chunks/6135-d0e285ac5f3f2485.js" defer=""></script><script src="/dashboard/_next/static/chunks/8969-9a8cca241b30db83.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/jobs/%5Bjob%5D-6c5af4c86e6ab3d3.js" defer=""></script><script src="/dashboard/_next/static/2JNCZ4daQBotwWRNGi6aE/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/2JNCZ4daQBotwWRNGi6aE/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/jobs/[job]","query":{},"buildId":"2JNCZ4daQBotwWRNGi6aE","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/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-387626669badf82e.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-cf60a09ccd051a10.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-f15ccb73239a3bf1.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-2a43ea3241bbdacd.js" defer=""></script><script src="/dashboard/_next/static/chunks/616-3d59f75e2ccf9321.js" defer=""></script><script src="/dashboard/_next/static/chunks/5230-f3bb2663e442e86c.js" defer=""></script><script src="/dashboard/_next/static/chunks/5739-d67458fcb1386c92.js" defer=""></script><script src="/dashboard/_next/static/chunks/1664-22b00e32c9ff96a4.js" defer=""></script><script src="/dashboard/_next/static/chunks/7411-b15471acd2cba716.js" defer=""></script><script src="/dashboard/_next/static/chunks/1272-1ef0bf0237faccdb.js" defer=""></script><script src="/dashboard/_next/static/chunks/6212-7bd06f60ba693125.js" defer=""></script><script src="/dashboard/_next/static/chunks/2622-951867535095b0eb.js" defer=""></script><script src="/dashboard/_next/static/chunks/6135-2d7ed3350659d073.js" defer=""></script><script src="/dashboard/_next/static/chunks/8969-9a8cca241b30db83.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/jobs/%5Bjob%5D-90693cb88b5599a7.js" defer=""></script><script src="/dashboard/_next/static/Gelsd19kVxXcX7aQQGsGu/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/Gelsd19kVxXcX7aQQGsGu/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/jobs/[job]","query":{},"buildId":"Gelsd19kVxXcX7aQQGsGu","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-13145516b19858fb.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-cf60a09ccd051a10.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-f15ccb73239a3bf1.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-a67ae198457b9886.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/jobs-6393a9edc7322b54.js" defer=""></script><script src="/dashboard/_next/static/2JNCZ4daQBotwWRNGi6aE/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/2JNCZ4daQBotwWRNGi6aE/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/jobs","query":{},"buildId":"2JNCZ4daQBotwWRNGi6aE","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/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-387626669badf82e.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-cf60a09ccd051a10.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-f15ccb73239a3bf1.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-2a43ea3241bbdacd.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/jobs-ab318e52eb4424a7.js" defer=""></script><script src="/dashboard/_next/static/Gelsd19kVxXcX7aQQGsGu/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/Gelsd19kVxXcX7aQQGsGu/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/jobs","query":{},"buildId":"Gelsd19kVxXcX7aQQGsGu","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-13145516b19858fb.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-cf60a09ccd051a10.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-f15ccb73239a3bf1.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-a67ae198457b9886.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/users-34d6bb10c3b3ee3d.js" defer=""></script><script src="/dashboard/_next/static/2JNCZ4daQBotwWRNGi6aE/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/2JNCZ4daQBotwWRNGi6aE/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/users","query":{},"buildId":"2JNCZ4daQBotwWRNGi6aE","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/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-387626669badf82e.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-cf60a09ccd051a10.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-f15ccb73239a3bf1.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-2a43ea3241bbdacd.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/users-b90c865a690bfe84.js" defer=""></script><script src="/dashboard/_next/static/Gelsd19kVxXcX7aQQGsGu/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/Gelsd19kVxXcX7aQQGsGu/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/users","query":{},"buildId":"Gelsd19kVxXcX7aQQGsGu","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-13145516b19858fb.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-cf60a09ccd051a10.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-f15ccb73239a3bf1.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-a67ae198457b9886.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/volumes-225c8dae0634eb7f.js" defer=""></script><script src="/dashboard/_next/static/2JNCZ4daQBotwWRNGi6aE/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/2JNCZ4daQBotwWRNGi6aE/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/volumes","query":{},"buildId":"2JNCZ4daQBotwWRNGi6aE","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/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-387626669badf82e.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-cf60a09ccd051a10.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-f15ccb73239a3bf1.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-2a43ea3241bbdacd.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/volumes-7af733f5d7b6ed1c.js" defer=""></script><script src="/dashboard/_next/static/Gelsd19kVxXcX7aQQGsGu/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/Gelsd19kVxXcX7aQQGsGu/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/volumes","query":{},"buildId":"Gelsd19kVxXcX7aQQGsGu","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-13145516b19858fb.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-cf60a09ccd051a10.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-f15ccb73239a3bf1.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-a67ae198457b9886.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/workspace/new-92f741084a89e27b.js" defer=""></script><script src="/dashboard/_next/static/2JNCZ4daQBotwWRNGi6aE/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/2JNCZ4daQBotwWRNGi6aE/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/workspace/new","query":{},"buildId":"2JNCZ4daQBotwWRNGi6aE","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/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-387626669badf82e.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-cf60a09ccd051a10.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-f15ccb73239a3bf1.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-2a43ea3241bbdacd.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/workspace/new-92f741084a89e27b.js" defer=""></script><script src="/dashboard/_next/static/Gelsd19kVxXcX7aQQGsGu/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/Gelsd19kVxXcX7aQQGsGu/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/workspace/new","query":{},"buildId":"Gelsd19kVxXcX7aQQGsGu","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-13145516b19858fb.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-cf60a09ccd051a10.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-f15ccb73239a3bf1.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-a67ae198457b9886.js" defer=""></script><script src="/dashboard/_next/static/chunks/616-3d59f75e2ccf9321.js" defer=""></script><script src="/dashboard/_next/static/chunks/5230-f3bb2663e442e86c.js" defer=""></script><script src="/dashboard/_next/static/chunks/5739-d67458fcb1386c92.js" defer=""></script><script src="/dashboard/_next/static/chunks/1664-22b00e32c9ff96a4.js" defer=""></script><script src="/dashboard/_next/static/chunks/7411-b15471acd2cba716.js" defer=""></script><script src="/dashboard/_next/static/chunks/1272-1ef0bf0237faccdb.js" defer=""></script><script src="/dashboard/_next/static/chunks/1559-6c00e20454194859.js" defer=""></script><script src="/dashboard/_next/static/chunks/6989-983d3ae7a874de98.js" defer=""></script><script src="/dashboard/_next/static/chunks/3698-7874720877646365.js" defer=""></script><script src="/dashboard/_next/static/chunks/6135-d0e285ac5f3f2485.js" defer=""></script><script src="/dashboard/_next/static/chunks/6990-08b2a1cae076a943.js" defer=""></script><script src="/dashboard/_next/static/chunks/8969-9a8cca241b30db83.js" defer=""></script><script src="/dashboard/_next/static/chunks/1043-928582d4860fef92.js" defer=""></script><script src="/dashboard/_next/static/chunks/6601-234b1cf963c7280b.js" defer=""></script><script src="/dashboard/_next/static/chunks/938-40d15b6261ec8dc1.js" defer=""></script><script src="/dashboard/_next/static/chunks/1141-3f10a5a9f697c630.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/workspaces/%5Bname%5D-4d41c9023287f59a.js" defer=""></script><script src="/dashboard/_next/static/2JNCZ4daQBotwWRNGi6aE/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/2JNCZ4daQBotwWRNGi6aE/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/workspaces/[name]","query":{},"buildId":"2JNCZ4daQBotwWRNGi6aE","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/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-387626669badf82e.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-cf60a09ccd051a10.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-f15ccb73239a3bf1.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-2a43ea3241bbdacd.js" defer=""></script><script src="/dashboard/_next/static/chunks/616-3d59f75e2ccf9321.js" defer=""></script><script src="/dashboard/_next/static/chunks/5230-f3bb2663e442e86c.js" defer=""></script><script src="/dashboard/_next/static/chunks/5739-d67458fcb1386c92.js" defer=""></script><script src="/dashboard/_next/static/chunks/1664-22b00e32c9ff96a4.js" defer=""></script><script src="/dashboard/_next/static/chunks/7411-b15471acd2cba716.js" defer=""></script><script src="/dashboard/_next/static/chunks/1272-1ef0bf0237faccdb.js" defer=""></script><script src="/dashboard/_next/static/chunks/1559-6c00e20454194859.js" defer=""></script><script src="/dashboard/_next/static/chunks/2622-951867535095b0eb.js" defer=""></script><script src="/dashboard/_next/static/chunks/6135-2d7ed3350659d073.js" defer=""></script><script src="/dashboard/_next/static/chunks/6990-08b2a1cae076a943.js" defer=""></script><script src="/dashboard/_next/static/chunks/8969-9a8cca241b30db83.js" defer=""></script><script src="/dashboard/_next/static/chunks/1043-75af48ca5d5aaf57.js" defer=""></script><script src="/dashboard/_next/static/chunks/6601-2109d22e7861861c.js" defer=""></script><script src="/dashboard/_next/static/chunks/938-bda2685db5eae6cf.js" defer=""></script><script src="/dashboard/_next/static/chunks/1141-8678a9102cc5f67e.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/workspaces/%5Bname%5D-35e0de5bca55e594.js" defer=""></script><script src="/dashboard/_next/static/Gelsd19kVxXcX7aQQGsGu/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/Gelsd19kVxXcX7aQQGsGu/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/workspaces/[name]","query":{},"buildId":"Gelsd19kVxXcX7aQQGsGu","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-13145516b19858fb.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-cf60a09ccd051a10.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-f15ccb73239a3bf1.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-a67ae198457b9886.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/workspaces-e4cb7e97d37e93ad.js" defer=""></script><script src="/dashboard/_next/static/2JNCZ4daQBotwWRNGi6aE/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/2JNCZ4daQBotwWRNGi6aE/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/workspaces","query":{},"buildId":"2JNCZ4daQBotwWRNGi6aE","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/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-387626669badf82e.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-cf60a09ccd051a10.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-f15ccb73239a3bf1.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-2a43ea3241bbdacd.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/workspaces-062525fb5462acb6.js" defer=""></script><script src="/dashboard/_next/static/Gelsd19kVxXcX7aQQGsGu/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/Gelsd19kVxXcX7aQQGsGu/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/workspaces","query":{},"buildId":"Gelsd19kVxXcX7aQQGsGu","assetPrefix":"/dashboard","nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html>
@@ -0,0 +1,135 @@
1
+ """Async SDK functions for managed jobs."""
2
+ import typing
3
+ from typing import Any, Dict, List, Optional, Tuple, Union
4
+
5
+ from sky import backends
6
+ from sky import sky_logging
7
+ from sky.adaptors import common as adaptors_common
8
+ from sky.client import sdk_async
9
+ from sky.jobs.client import sdk
10
+ from sky.skylet import constants
11
+ from sky.usage import usage_lib
12
+ from sky.utils import common_utils
13
+ from sky.utils import context_utils
14
+
15
+ if typing.TYPE_CHECKING:
16
+ import io
17
+
18
+ import requests
19
+
20
+ import sky
21
+ else:
22
+ requests = adaptors_common.LazyImport('requests')
23
+
24
+ logger = sky_logging.init_logger(__name__)
25
+
26
+
27
+ @usage_lib.entrypoint
28
+ async def launch(
29
+ task: Union['sky.Task', 'sky.Dag'],
30
+ name: Optional[str] = None,
31
+ # Internal only:
32
+ # pylint: disable=invalid-name
33
+ _need_confirmation: bool = False,
34
+ stream_logs: Optional[
35
+ sdk_async.StreamConfig] = sdk_async.DEFAULT_STREAM_CONFIG,
36
+ ) -> Tuple[Optional[int], Optional[backends.ResourceHandle]]:
37
+ """Async version of launch() that launches a managed job."""
38
+ request_id = await context_utils.to_thread(sdk.launch, task, name,
39
+ _need_confirmation)
40
+ if stream_logs is not None:
41
+ return await sdk_async._stream_and_get(request_id, stream_logs) # pylint: disable=protected-access
42
+ else:
43
+ return await sdk_async.get(request_id)
44
+
45
+
46
+ @usage_lib.entrypoint
47
+ async def queue(
48
+ refresh: bool,
49
+ skip_finished: bool = False,
50
+ all_users: bool = False,
51
+ stream_logs: Optional[
52
+ sdk_async.StreamConfig] = sdk_async.DEFAULT_STREAM_CONFIG
53
+ ) -> List[Dict[str, Any]]:
54
+ """Async version of queue() that gets statuses of managed jobs."""
55
+ request_id = await context_utils.to_thread(sdk.queue, refresh,
56
+ skip_finished, all_users)
57
+ if stream_logs is not None:
58
+ return await sdk_async._stream_and_get(request_id, stream_logs) # pylint: disable=protected-access
59
+ else:
60
+ return await sdk_async.get(request_id)
61
+
62
+
63
+ @usage_lib.entrypoint
64
+ async def cancel(
65
+ name: Optional[str] = None,
66
+ job_ids: Optional[List[int]] = None,
67
+ all: bool = False, # pylint: disable=redefined-builtin
68
+ all_users: bool = False,
69
+ stream_logs: Optional[
70
+ sdk_async.StreamConfig] = sdk_async.DEFAULT_STREAM_CONFIG,
71
+ ) -> None:
72
+ """Async version of cancel() that cancels managed jobs."""
73
+ request_id = await context_utils.to_thread(sdk.cancel, name, job_ids, all,
74
+ all_users)
75
+ if stream_logs is not None:
76
+ return await sdk_async._stream_and_get(request_id, stream_logs) # pylint: disable=protected-access
77
+ else:
78
+ return await sdk_async.get(request_id)
79
+
80
+
81
+ @usage_lib.entrypoint
82
+ async def tail_logs(cluster_name: str,
83
+ job_id: Optional[int],
84
+ follow: bool,
85
+ tail: int = 0,
86
+ output_stream: Optional['io.TextIOBase'] = None) -> int:
87
+ """Async version of tail_logs() that tails the logs of a job."""
88
+ return await context_utils.to_thread(
89
+ sdk.tail_logs,
90
+ cluster_name,
91
+ job_id,
92
+ follow,
93
+ tail,
94
+ output_stream,
95
+ )
96
+
97
+
98
+ @usage_lib.entrypoint
99
+ async def download_logs(
100
+ name: Optional[str],
101
+ job_id: Optional[int],
102
+ refresh: bool,
103
+ controller: bool,
104
+ local_dir: str = constants.SKY_LOGS_DIRECTORY) -> Dict[int, str]:
105
+ """Async version of download_logs() that syncs down logs of managed jobs."""
106
+ return await context_utils.to_thread(sdk.download_logs, name, job_id,
107
+ refresh, controller, local_dir)
108
+
109
+
110
+ @usage_lib.entrypoint
111
+ async def dashboard() -> None:
112
+ """Async version of dashboard() that starts a dashboard for managed jobs."""
113
+ return await context_utils.to_thread(sdk.dashboard)
114
+
115
+
116
+ # Deprecated functions
117
+ spot_launch = common_utils.deprecated_function(
118
+ launch,
119
+ name='sky.jobs.launch',
120
+ deprecated_name='spot_launch',
121
+ removing_version='0.8.0',
122
+ override_argument={'use_spot': True})
123
+ spot_queue = common_utils.deprecated_function(queue,
124
+ name='sky.jobs.queue',
125
+ deprecated_name='spot_queue',
126
+ removing_version='0.8.0')
127
+ spot_cancel = common_utils.deprecated_function(cancel,
128
+ name='sky.jobs.cancel',
129
+ deprecated_name='spot_cancel',
130
+ removing_version='0.8.0')
131
+ spot_tail_logs = common_utils.deprecated_function(
132
+ tail_logs,
133
+ name='sky.jobs.tail_logs',
134
+ deprecated_name='spot_tail_logs',
135
+ removing_version='0.8.0')
sky/jobs/utils.py CHANGED
@@ -189,7 +189,8 @@ def ha_recovery_for_consolidation_mode():
189
189
  # already has all runtime installed. Directly start jobs recovery here.
190
190
  # Refers to sky/templates/kubernetes-ray.yml.j2 for more details.
191
191
  runner = command_runner.LocalProcessCommandRunner()
192
- with open(constants.HA_PERSISTENT_RECOVERY_LOG_PATH, 'w',
192
+ with open(constants.HA_PERSISTENT_RECOVERY_LOG_PATH.format('jobs_'),
193
+ 'w',
193
194
  encoding='utf-8') as f:
194
195
  start = time.time()
195
196
  f.write(f'Starting HA recovery at {datetime.datetime.now()}\n')
@@ -315,6 +316,7 @@ def update_managed_jobs_statuses(job_id: Optional[int] = None):
315
316
  This function should not throw any exception. If it fails, it will
316
317
  capture the error message, and log/return it.
317
318
  """
319
+ managed_job_state.remove_ha_recovery_script(job_id)
318
320
  error_msg = None
319
321
  tasks = managed_job_state.get_managed_jobs(job_id)
320
322
  for task in tasks:
@@ -2032,9 +2032,7 @@ class KubernetesInstanceType:
2032
2032
  accelerator_type = match.group('accelerator_type')
2033
2033
  if accelerator_count:
2034
2034
  accelerator_count = int(accelerator_count)
2035
- # This is to revert the accelerator types with spaces back to
2036
- # the original format.
2037
- accelerator_type = str(accelerator_type).replace('_', ' ')
2035
+ accelerator_type = str(accelerator_type)
2038
2036
  else:
2039
2037
  accelerator_count = None
2040
2038
  accelerator_type = None
@@ -2047,7 +2045,7 @@ class KubernetesInstanceType:
2047
2045
  accelerator_type = prev_match.group('accelerator_type')
2048
2046
  if accelerator_count:
2049
2047
  accelerator_count = int(accelerator_count)
2050
- accelerator_type = str(accelerator_type).replace('_', ' ')
2048
+ accelerator_type = str(accelerator_type)
2051
2049
  else:
2052
2050
  accelerator_count = None
2053
2051
  accelerator_type = None
@@ -2642,6 +2640,7 @@ def combine_pod_config_fields(
2642
2640
 
2643
2641
 
2644
2642
  def combine_metadata_fields(cluster_yaml_path: str,
2643
+ cluster_config_overrides: Dict[str, Any],
2645
2644
  context: Optional[str] = None) -> None:
2646
2645
  """Updates the metadata for all Kubernetes objects created by SkyPilot with
2647
2646
  fields from the ~/.sky/config.yaml's kubernetes.custom_metadata dict.
@@ -2652,12 +2651,25 @@ def combine_metadata_fields(cluster_yaml_path: str,
2652
2651
  with open(cluster_yaml_path, 'r', encoding='utf-8') as f:
2653
2652
  yaml_content = f.read()
2654
2653
  yaml_obj = yaml.safe_load(yaml_content)
2654
+
2655
+ # Get custom_metadata from global config
2655
2656
  custom_metadata = skypilot_config.get_effective_region_config(
2656
2657
  cloud='kubernetes',
2657
2658
  region=context,
2658
2659
  keys=('custom_metadata',),
2659
2660
  default_value={})
2660
2661
 
2662
+ # Get custom_metadata from task-level config overrides
2663
+ override_custom_metadata = config_utils.get_cloud_config_value_from_dict(
2664
+ dict_config=cluster_config_overrides,
2665
+ cloud='kubernetes',
2666
+ region=context,
2667
+ keys=('custom_metadata',),
2668
+ default_value={})
2669
+
2670
+ # Merge task-level overrides with global config
2671
+ config_utils.merge_k8s_configs(custom_metadata, override_custom_metadata)
2672
+
2661
2673
  # List of objects in the cluster YAML to be updated
2662
2674
  combination_destinations = [
2663
2675
  # Service accounts
@@ -2679,17 +2691,33 @@ def combine_metadata_fields(cluster_yaml_path: str,
2679
2691
  common_utils.dump_yaml(cluster_yaml_path, yaml_obj)
2680
2692
 
2681
2693
 
2682
- def merge_custom_metadata(original_metadata: Dict[str, Any],
2683
- context: Optional[str] = None) -> None:
2694
+ def merge_custom_metadata(
2695
+ original_metadata: Dict[str, Any],
2696
+ context: Optional[str] = None,
2697
+ cluster_config_overrides: Optional[Dict[str, Any]] = None) -> None:
2684
2698
  """Merges original metadata with custom_metadata from config
2685
2699
 
2686
2700
  Merge is done in-place, so return is not required
2687
2701
  """
2702
+ # Get custom_metadata from global config
2688
2703
  custom_metadata = skypilot_config.get_effective_region_config(
2689
2704
  cloud='kubernetes',
2690
2705
  region=context,
2691
2706
  keys=('custom_metadata',),
2692
2707
  default_value={})
2708
+
2709
+ # Get custom_metadata from task-level config overrides if available
2710
+ if cluster_config_overrides is not None:
2711
+ override_custom_metadata = config_utils.get_cloud_config_value_from_dict(
2712
+ dict_config=cluster_config_overrides,
2713
+ cloud='kubernetes',
2714
+ region=context,
2715
+ keys=('custom_metadata',),
2716
+ default_value={})
2717
+ # Merge task-level overrides with global config
2718
+ config_utils.merge_k8s_configs(custom_metadata,
2719
+ override_custom_metadata)
2720
+
2693
2721
  config_utils.merge_k8s_configs(original_metadata, custom_metadata)
2694
2722
 
2695
2723
 
@@ -2968,6 +2996,13 @@ def get_kubernetes_node_info(
2968
2996
  # Get all the pods running on the node
2969
2997
  if (pod.spec.node_name == node.metadata.name and
2970
2998
  pod.status.phase in ['Running', 'Pending']):
2999
+ # Skip pods that should not count against GPU count
3000
+ if should_exclude_pod_from_gpu_allocation(pod):
3001
+ logger.debug(
3002
+ f'Excluding low priority pod '
3003
+ f'{pod.metadata.name} from GPU allocation '
3004
+ f'calculations on node {node.metadata.name}')
3005
+ continue
2971
3006
  # Iterate over all the containers in the pod and sum the
2972
3007
  # GPU requests
2973
3008
  for container in pod.spec.containers:
@@ -3566,3 +3601,24 @@ def delete_k8s_resource_with_retry(delete_func: Callable, resource_type: str,
3566
3601
  time.sleep(retry_delay)
3567
3602
  else:
3568
3603
  raise
3604
+
3605
+
3606
+ def should_exclude_pod_from_gpu_allocation(pod) -> bool:
3607
+ """Check if a pod should be excluded from GPU count calculations.
3608
+
3609
+ Some cloud providers run low priority test/verification pods that request
3610
+ GPUs but should not count against real GPU availability since they are
3611
+ designed to be evicted when higher priority workloads need resources.
3612
+
3613
+ Args:
3614
+ pod: Kubernetes pod object
3615
+
3616
+ Returns:
3617
+ bool: True if the pod should be excluded from GPU count calculations.
3618
+ """
3619
+ # CoreWeave HPC verification pods - identified by namespace
3620
+ if (hasattr(pod.metadata, 'namespace') and
3621
+ pod.metadata.namespace == 'cw-hpc-verification'):
3622
+ return True
3623
+
3624
+ return False
@@ -134,6 +134,7 @@ def run_instances(region: str, cluster_name_on_cloud: str,
134
134
  image_family=config.node_config['ImageId'],
135
135
  disk_size=config.node_config['DiskSize'],
136
136
  user_data=config.node_config['UserData'],
137
+ use_spot=config.node_config['use_spot'],
137
138
  associate_public_ip_address=(
138
139
  not config.provider_config['use_internal_ips']),
139
140
  filesystems=config.node_config.get('filesystems', []),
@@ -168,6 +168,7 @@ def launch(cluster_name_on_cloud: str,
168
168
  user_data: str,
169
169
  associate_public_ip_address: bool,
170
170
  filesystems: List[Dict[str, Any]],
171
+ use_spot: bool = False,
171
172
  network_tier: Optional[resources_utils.NetworkTier] = None) -> str:
172
173
  # Each node must have a unique name to avoid conflicts between
173
174
  # multiple worker VMs. To ensure uniqueness,a UUID is appended
@@ -281,7 +282,14 @@ def launch(cluster_name_on_cloud: str,
281
282
  public_ip_address=nebius.compute().PublicIPAddress()
282
283
  if associate_public_ip_address else None,
283
284
  )
284
- ]))).wait()
285
+ ],
286
+ recovery_policy=nebius.compute().InstanceRecoveryPolicy.FAIL
287
+ if use_spot else None,
288
+ preemptible=nebius.compute().PreemptibleSpec(
289
+ priority=1,
290
+ on_preemption=nebius.compute(
291
+ ).PreemptibleSpec.PreemptionPolicy.STOP) if use_spot else None,
292
+ ))).wait()
285
293
  instance_id = ''
286
294
  retry_count = 0
287
295
  while retry_count < nebius.MAX_RETRIES_TO_INSTANCE_READY: