skypilot-nightly 1.0.0.dev20250804__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 (103) hide show
  1. sky/__init__.py +2 -2
  2. sky/catalog/kubernetes_catalog.py +8 -0
  3. sky/catalog/nebius_catalog.py +0 -1
  4. sky/client/cli/command.py +26 -7
  5. sky/client/sdk.py +16 -8
  6. sky/client/sdk.pyi +6 -5
  7. sky/client/sdk_async.py +811 -0
  8. sky/clouds/kubernetes.py +6 -1
  9. sky/clouds/nebius.py +1 -4
  10. sky/dashboard/out/404.html +1 -1
  11. sky/dashboard/out/_next/static/Gelsd19kVxXcX7aQQGsGu/_buildManifest.js +1 -0
  12. sky/dashboard/out/_next/static/chunks/1043-75af48ca5d5aaf57.js +1 -0
  13. sky/dashboard/out/_next/static/chunks/1141-8678a9102cc5f67e.js +11 -0
  14. sky/dashboard/out/_next/static/chunks/2622-951867535095b0eb.js +1 -0
  15. sky/dashboard/out/_next/static/chunks/3785.0a173cd4393f0fef.js +1 -0
  16. sky/dashboard/out/_next/static/chunks/9025.99f29acb7617963e.js +6 -0
  17. sky/dashboard/out/_next/static/chunks/{9984.78ee6d2c6fa4b0e8.js → 9984.c5564679e467d245.js} +1 -1
  18. sky/dashboard/out/_next/static/chunks/pages/{_app-a67ae198457b9886.js → _app-2a43ea3241bbdacd.js} +1 -1
  19. sky/dashboard/out/_next/static/chunks/pages/clusters/[cluster]/{[job]-fa63e8b1d203f298.js → [job]-7cb24da04ca00956.js} +1 -1
  20. sky/dashboard/out/_next/static/chunks/pages/clusters/{[cluster]-9e7df5fc761c95a7.js → [cluster]-1e95993124dbfc57.js} +1 -1
  21. sky/dashboard/out/_next/static/chunks/pages/clusters-47f1ddae13a2f8e4.js +1 -0
  22. sky/dashboard/out/_next/static/chunks/pages/config-d56e64f30db7b42e.js +1 -0
  23. sky/dashboard/out/_next/static/chunks/pages/infra/[context]-2a44e70b500b6b70.js +1 -0
  24. sky/dashboard/out/_next/static/chunks/pages/infra-22faac9325016d83.js +1 -0
  25. sky/dashboard/out/_next/static/chunks/pages/jobs/[job]-90693cb88b5599a7.js +11 -0
  26. sky/dashboard/out/_next/static/chunks/pages/jobs-ab318e52eb4424a7.js +1 -0
  27. sky/dashboard/out/_next/static/chunks/pages/users-b90c865a690bfe84.js +1 -0
  28. sky/dashboard/out/_next/static/chunks/pages/volumes-7af733f5d7b6ed1c.js +1 -0
  29. sky/dashboard/out/_next/static/chunks/pages/workspaces/{[name]-4d41c9023287f59a.js → [name]-35e0de5bca55e594.js} +1 -1
  30. sky/dashboard/out/_next/static/chunks/pages/workspaces-062525fb5462acb6.js +1 -0
  31. sky/dashboard/out/_next/static/chunks/webpack-387626669badf82e.js +1 -0
  32. sky/dashboard/out/clusters/[cluster]/[job].html +1 -1
  33. sky/dashboard/out/clusters/[cluster].html +1 -1
  34. sky/dashboard/out/clusters.html +1 -1
  35. sky/dashboard/out/config.html +1 -1
  36. sky/dashboard/out/index.html +1 -1
  37. sky/dashboard/out/infra/[context].html +1 -1
  38. sky/dashboard/out/infra.html +1 -1
  39. sky/dashboard/out/jobs/[job].html +1 -1
  40. sky/dashboard/out/jobs.html +1 -1
  41. sky/dashboard/out/users.html +1 -1
  42. sky/dashboard/out/volumes.html +1 -1
  43. sky/dashboard/out/workspace/new.html +1 -1
  44. sky/dashboard/out/workspaces/[name].html +1 -1
  45. sky/dashboard/out/workspaces.html +1 -1
  46. sky/jobs/client/sdk_async.py +135 -0
  47. sky/jobs/utils.py +3 -1
  48. sky/provision/kubernetes/utils.py +30 -4
  49. sky/provision/nebius/instance.py +1 -0
  50. sky/provision/nebius/utils.py +9 -1
  51. sky/serve/client/sdk_async.py +130 -0
  52. sky/serve/constants.py +2 -1
  53. sky/serve/controller.py +2 -1
  54. sky/serve/load_balancer.py +3 -1
  55. sky/serve/serve_state.py +70 -5
  56. sky/serve/serve_utils.py +124 -22
  57. sky/serve/server/impl.py +22 -21
  58. sky/serve/service.py +8 -1
  59. sky/server/auth/__init__.py +0 -0
  60. sky/server/auth/authn.py +46 -0
  61. sky/server/auth/oauth2_proxy.py +185 -0
  62. sky/server/common.py +108 -17
  63. sky/server/constants.py +1 -1
  64. sky/server/daemons.py +60 -11
  65. sky/server/rest.py +114 -0
  66. sky/server/server.py +44 -40
  67. sky/setup_files/dependencies.py +2 -0
  68. sky/skylet/constants.py +1 -1
  69. sky/skylet/events.py +5 -1
  70. sky/skylet/skylet.py +3 -1
  71. sky/task.py +43 -10
  72. sky/templates/kubernetes-ray.yml.j2 +4 -0
  73. sky/templates/nebius-ray.yml.j2 +1 -0
  74. sky/utils/controller_utils.py +7 -0
  75. sky/utils/rich_utils.py +120 -0
  76. {skypilot_nightly-1.0.0.dev20250804.dist-info → skypilot_nightly-1.0.0.dev20250806.dist-info}/METADATA +5 -1
  77. {skypilot_nightly-1.0.0.dev20250804.dist-info → skypilot_nightly-1.0.0.dev20250806.dist-info}/RECORD +86 -81
  78. sky/dashboard/out/_next/static/KiGGm4fK0CpmN6BT17jkh/_buildManifest.js +0 -1
  79. sky/dashboard/out/_next/static/chunks/1043-928582d4860fef92.js +0 -1
  80. sky/dashboard/out/_next/static/chunks/1141-3f10a5a9f697c630.js +0 -11
  81. sky/dashboard/out/_next/static/chunks/3698-7874720877646365.js +0 -1
  82. sky/dashboard/out/_next/static/chunks/3785.95524bc443db8260.js +0 -1
  83. sky/dashboard/out/_next/static/chunks/6989-983d3ae7a874de98.js +0 -1
  84. sky/dashboard/out/_next/static/chunks/9025.7937c16bc8623516.js +0 -6
  85. sky/dashboard/out/_next/static/chunks/pages/clusters-956ad430075efee8.js +0 -1
  86. sky/dashboard/out/_next/static/chunks/pages/config-8620d099cbef8608.js +0 -1
  87. sky/dashboard/out/_next/static/chunks/pages/infra/[context]-9cfd875eecb6eaf5.js +0 -1
  88. sky/dashboard/out/_next/static/chunks/pages/infra-0fbdc9072f19fbe2.js +0 -1
  89. sky/dashboard/out/_next/static/chunks/pages/jobs/[job]-6c5af4c86e6ab3d3.js +0 -11
  90. sky/dashboard/out/_next/static/chunks/pages/jobs-6393a9edc7322b54.js +0 -1
  91. sky/dashboard/out/_next/static/chunks/pages/users-34d6bb10c3b3ee3d.js +0 -1
  92. sky/dashboard/out/_next/static/chunks/pages/volumes-225c8dae0634eb7f.js +0 -1
  93. sky/dashboard/out/_next/static/chunks/pages/workspaces-e4cb7e97d37e93ad.js +0 -1
  94. sky/dashboard/out/_next/static/chunks/webpack-13145516b19858fb.js +0 -1
  95. /sky/dashboard/out/_next/static/{KiGGm4fK0CpmN6BT17jkh → Gelsd19kVxXcX7aQQGsGu}/_ssgManifest.js +0 -0
  96. /sky/dashboard/out/_next/static/chunks/{1871-7e17c195296e2ea9.js → 1871-ced1c14230cad6e1.js} +0 -0
  97. /sky/dashboard/out/_next/static/chunks/{6135-d0e285ac5f3f2485.js → 6135-2d7ed3350659d073.js} +0 -0
  98. /sky/dashboard/out/_next/static/chunks/{6601-234b1cf963c7280b.js → 6601-2109d22e7861861c.js} +0 -0
  99. /sky/dashboard/out/_next/static/chunks/{938-40d15b6261ec8dc1.js → 938-bda2685db5eae6cf.js} +0 -0
  100. {skypilot_nightly-1.0.0.dev20250804.dist-info → skypilot_nightly-1.0.0.dev20250806.dist-info}/WHEEL +0 -0
  101. {skypilot_nightly-1.0.0.dev20250804.dist-info → skypilot_nightly-1.0.0.dev20250806.dist-info}/entry_points.txt +0 -0
  102. {skypilot_nightly-1.0.0.dev20250804.dist-info → skypilot_nightly-1.0.0.dev20250806.dist-info}/licenses/LICENSE +0 -0
  103. {skypilot_nightly-1.0.0.dev20250804.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/KiGGm4fK0CpmN6BT17jkh/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/KiGGm4fK0CpmN6BT17jkh/_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":"KiGGm4fK0CpmN6BT17jkh","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/KiGGm4fK0CpmN6BT17jkh/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/KiGGm4fK0CpmN6BT17jkh/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/clusters/[cluster]","query":{},"buildId":"KiGGm4fK0CpmN6BT17jkh","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/KiGGm4fK0CpmN6BT17jkh/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/KiGGm4fK0CpmN6BT17jkh/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/clusters","query":{},"buildId":"KiGGm4fK0CpmN6BT17jkh","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/KiGGm4fK0CpmN6BT17jkh/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/KiGGm4fK0CpmN6BT17jkh/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/config","query":{},"buildId":"KiGGm4fK0CpmN6BT17jkh","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/KiGGm4fK0CpmN6BT17jkh/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/KiGGm4fK0CpmN6BT17jkh/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/","query":{},"buildId":"KiGGm4fK0CpmN6BT17jkh","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/KiGGm4fK0CpmN6BT17jkh/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/KiGGm4fK0CpmN6BT17jkh/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/infra/[context]","query":{},"buildId":"KiGGm4fK0CpmN6BT17jkh","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/KiGGm4fK0CpmN6BT17jkh/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/KiGGm4fK0CpmN6BT17jkh/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/infra","query":{},"buildId":"KiGGm4fK0CpmN6BT17jkh","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/KiGGm4fK0CpmN6BT17jkh/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/KiGGm4fK0CpmN6BT17jkh/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/jobs/[job]","query":{},"buildId":"KiGGm4fK0CpmN6BT17jkh","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/KiGGm4fK0CpmN6BT17jkh/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/KiGGm4fK0CpmN6BT17jkh/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/jobs","query":{},"buildId":"KiGGm4fK0CpmN6BT17jkh","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/KiGGm4fK0CpmN6BT17jkh/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/KiGGm4fK0CpmN6BT17jkh/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/users","query":{},"buildId":"KiGGm4fK0CpmN6BT17jkh","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/KiGGm4fK0CpmN6BT17jkh/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/KiGGm4fK0CpmN6BT17jkh/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/volumes","query":{},"buildId":"KiGGm4fK0CpmN6BT17jkh","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/KiGGm4fK0CpmN6BT17jkh/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/KiGGm4fK0CpmN6BT17jkh/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/workspace/new","query":{},"buildId":"KiGGm4fK0CpmN6BT17jkh","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/KiGGm4fK0CpmN6BT17jkh/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/KiGGm4fK0CpmN6BT17jkh/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/workspaces/[name]","query":{},"buildId":"KiGGm4fK0CpmN6BT17jkh","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/KiGGm4fK0CpmN6BT17jkh/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/KiGGm4fK0CpmN6BT17jkh/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/workspaces","query":{},"buildId":"KiGGm4fK0CpmN6BT17jkh","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
@@ -2998,6 +2996,13 @@ def get_kubernetes_node_info(
2998
2996
  # Get all the pods running on the node
2999
2997
  if (pod.spec.node_name == node.metadata.name and
3000
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
3001
3006
  # Iterate over all the containers in the pod and sum the
3002
3007
  # GPU requests
3003
3008
  for container in pod.spec.containers:
@@ -3596,3 +3601,24 @@ def delete_k8s_resource_with_retry(delete_func: Callable, resource_type: str,
3596
3601
  time.sleep(retry_delay)
3597
3602
  else:
3598
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: