zenml-nightly 0.82.0.dev20250513__py3-none-any.whl → 0.82.1.dev20250517__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.
- zenml/VERSION +1 -1
- zenml/config/build_configuration.py +9 -0
- zenml/config/docker_settings.py +97 -16
- zenml/constants.py +1 -0
- zenml/integrations/kubernetes/flavors/kubernetes_orchestrator_flavor.py +12 -1
- zenml/integrations/kubernetes/orchestrators/kube_utils.py +24 -1
- zenml/integrations/kubernetes/orchestrators/kubernetes_orchestrator.py +3 -0
- zenml/integrations/kubernetes/orchestrators/kubernetes_orchestrator_entrypoint.py +21 -5
- zenml/integrations/kubernetes/orchestrators/manifest_utils.py +13 -0
- zenml/orchestrators/step_launcher.py +4 -0
- zenml/orchestrators/step_run_utils.py +30 -1
- zenml/pipelines/build_utils.py +8 -0
- zenml/utils/pipeline_docker_image_builder.py +133 -7
- zenml/utils/tag_utils.py +3 -3
- zenml/zen_server/dashboard/assets/{404-D4aYbspS.js → 404-_AtuLtaX.js} +1 -1
- zenml/zen_server/dashboard/assets/{AlertDialogDropdownItem-CRZjthRL.js → AlertDialogDropdownItem-BG7-Ki1L.js} +1 -1
- zenml/zen_server/dashboard/assets/{CodeSnippet-Di-loaZu.js → CodeSnippet-CvI6D0wx.js} +1 -1
- zenml/zen_server/dashboard/assets/{CollapsibleCard-Dr5zb5T5.js → CollapsibleCard-D20FtrzC.js} +1 -1
- zenml/zen_server/dashboard/assets/{Commands-CD9Y7FOE.js → Commands-DGbAvMDk.js} +1 -1
- zenml/zen_server/dashboard/assets/{ComponentBadge-BgGnzcLu.js → ComponentBadge-DKw7Gndh.js} +1 -1
- zenml/zen_server/dashboard/assets/{ComponentIcon-B_7Y_oV-.js → ComponentIcon-ils7uNAk.js} +1 -1
- zenml/zen_server/dashboard/assets/{CsvVizualization-CDrjL6bW.js → CsvVizualization-DVN541XF.js} +1 -1
- zenml/zen_server/dashboard/assets/{DeleteAlertDialog-9RTDnEx3.js → DeleteAlertDialog-DVvXt-S6.js} +1 -1
- zenml/zen_server/dashboard/assets/{DialogItem-0fWTH7ki.js → DialogItem-BHWf3sIB.js} +1 -1
- zenml/zen_server/dashboard/assets/{Error-vBjUYjb-.js → Error-BWaXP0VK.js} +1 -1
- zenml/zen_server/dashboard/assets/{ExecutionStatus-B-ysY113.js → ExecutionStatus-XrvT2r65.js} +1 -1
- zenml/zen_server/dashboard/assets/{Helpbox-Dt3q7NGd.js → Helpbox-iE1xLmiZ.js} +1 -1
- zenml/zen_server/dashboard/assets/{Infobox-Bai0JtFs.js → Infobox-D9k5TFH4.js} +1 -1
- zenml/zen_server/dashboard/assets/{InlineAvatar-Cpj0lVRQ.js → InlineAvatar-Cfz4WSLK.js} +1 -1
- zenml/zen_server/dashboard/assets/{NestedCollapsible-DbhKdWx-.js → NestedCollapsible-Dor-bi98.js} +1 -1
- zenml/zen_server/dashboard/assets/{Partials-BNBtCjuT.js → Partials-DQJFw1yW.js} +1 -1
- zenml/zen_server/dashboard/assets/{ProBadge-3vtouJQf.js → ProBadge-Cp4hb1YT.js} +1 -1
- zenml/zen_server/dashboard/assets/{ProCta-BoTLdAdV.js → ProCta-EYoV9CvK.js} +1 -1
- zenml/zen_server/dashboard/assets/{ProviderIcon-kkODO9tx.js → ProviderIcon-DLo7t1lo.js} +1 -1
- zenml/zen_server/dashboard/assets/{ProviderRadio-26EB5tY-.js → ProviderRadio-BVDA-fAr.js} +1 -1
- zenml/zen_server/dashboard/assets/{RunSelector-j0C_TPVp.js → RunSelector-BLuBYNJt.js} +1 -1
- zenml/zen_server/dashboard/assets/{RunsBody-DexNouV4.js → RunsBody-W4WHf-sq.js} +1 -1
- zenml/zen_server/dashboard/assets/{SearchField-DMCywawn.js → SearchField-D-h6jXyg.js} +1 -1
- zenml/zen_server/dashboard/assets/{SecretTooltip-LLGP7AIC.js → SecretTooltip-CePCL8kd.js} +1 -1
- zenml/zen_server/dashboard/assets/{SetPassword-CBHW-Su8.js → SetPassword-DR-EiLI5.js} +1 -1
- zenml/zen_server/dashboard/assets/{StackList-S-9I1R4n.js → StackList-CgmN5H-i.js} +1 -1
- zenml/zen_server/dashboard/assets/{Tabs-C2ufJX4t.js → Tabs-DxQ8PDOD.js} +1 -1
- zenml/zen_server/dashboard/assets/{Tick-ay3Bgtro.js → Tick-CEsT3HPR.js} +1 -1
- zenml/zen_server/dashboard/assets/{UpdatePasswordSchemas-p3RX0P-Q.js → UpdatePasswordSchemas-DbFEaezI.js} +1 -1
- zenml/zen_server/dashboard/assets/{UsageReason-C8sD2bOU.js → UsageReason-DjI5qMje.js} +1 -1
- zenml/zen_server/dashboard/assets/{Wizard-DIllc07n.js → Wizard-CMI6Ksgz.js} +1 -1
- zenml/zen_server/dashboard/assets/{WizardFooter-dNDpuero.js → WizardFooter-CFBHFZas.js} +1 -1
- zenml/zen_server/dashboard/assets/{all-pipeline-runs-query-BUT1PiTp.js → all-pipeline-runs-query-BGASHYtF.js} +1 -1
- zenml/zen_server/dashboard/assets/{configuration-form-DBZSb0FV.js → configuration-form-BtI2Y4eX.js} +1 -1
- zenml/zen_server/dashboard/assets/{create-stack-BXLyjE58.js → create-stack-BJ6x5rzj.js} +1 -1
- zenml/zen_server/dashboard/assets/{delete-run-DzcYxUnd.js → delete-run-DlSLEl5T.js} +1 -1
- zenml/zen_server/dashboard/assets/{flavor-select-BTEwByv6.js → flavor-select-BnPxvQDN.js} +1 -1
- zenml/zen_server/dashboard/assets/{form-schemas-BJN_25Ua.js → form-schemas-CbvoEUHr.js} +1 -1
- zenml/zen_server/dashboard/assets/{index-wYtmKLnQ.js → index-CFESYpe4.js} +1 -1
- zenml/zen_server/dashboard/assets/{index-D9-ukAem.js → index-CmLcvK2z.js} +1 -1
- zenml/zen_server/dashboard/assets/{index-8uhUi12k.js → index-CrhdX_qG.js} +1 -1
- zenml/zen_server/dashboard/assets/index-CzX3ZYlI.css +1 -0
- zenml/zen_server/dashboard/assets/{index-BygJE88j.js → index-D2iSHVZq.js} +7 -7
- zenml/zen_server/dashboard/assets/{login-mutation-DywLqguW.js → login-mutation-CXc-Klim.js} +1 -1
- zenml/zen_server/dashboard/assets/{not-found-BOoklIG4.js → not-found-olRU3fnu.js} +1 -1
- zenml/zen_server/dashboard/assets/{page-ByXQN8A-.js → page-7keIM1V3.js} +1 -1
- zenml/zen_server/dashboard/assets/{page-4nVakAEl.js → page-B31neFwG.js} +1 -1
- zenml/zen_server/dashboard/assets/{page-xa1EAPcI.js → page-B3zo4KYS.js} +1 -1
- zenml/zen_server/dashboard/assets/{page-DfTsntQI.js → page-BN3MHq1a.js} +1 -1
- zenml/zen_server/dashboard/assets/{page-BIYqUwTI.js → page-BNgVExjN.js} +1 -1
- zenml/zen_server/dashboard/assets/{page-kzSGEVUs.js → page-BPtvu74G.js} +1 -1
- zenml/zen_server/dashboard/assets/{page-uDGvpa5g.js → page-BTIuG0ki.js} +1 -1
- zenml/zen_server/dashboard/assets/{page--hSXKqyG.js → page-BcQzleH6.js} +1 -1
- zenml/zen_server/dashboard/assets/{page-B3DscprQ.js → page-C05Jw4M2.js} +1 -1
- zenml/zen_server/dashboard/assets/{page-BE8jdyaM.js → page-C28a7K8h.js} +1 -1
- zenml/zen_server/dashboard/assets/{page-B1Uq1S1Q.js → page-C9WLk0X-.js} +1 -1
- zenml/zen_server/dashboard/assets/{page-RV8wpZ_4.js → page-CINMx64X.js} +1 -1
- zenml/zen_server/dashboard/assets/{page-8AzB83Py.js → page-CSwZxZMQ.js} +1 -1
- zenml/zen_server/dashboard/assets/{page-D2TtSfnb.js → page-CYrJbk7P.js} +1 -1
- zenml/zen_server/dashboard/assets/{page-EXvws1ss.js → page-Ce0cqLo3.js} +1 -1
- zenml/zen_server/dashboard/assets/{page-2BsNK_sZ.js → page-CgNsEkw-.js} +1 -1
- zenml/zen_server/dashboard/assets/{page-cOEvFs_l.js → page-Ct2FUYuR.js} +1 -1
- zenml/zen_server/dashboard/assets/{page-DmteSSj6.js → page-D8G2B3Bu.js} +1 -1
- zenml/zen_server/dashboard/assets/page-DL8a4_lg.js +3 -0
- zenml/zen_server/dashboard/assets/{page-Ccnk_5ji.js → page-DMhYn1cF.js} +1 -1
- zenml/zen_server/dashboard/assets/{page-CPLlVRXx.js → page-Dd_Yq-Uf.js} +1 -1
- zenml/zen_server/dashboard/assets/{page-K9yjbnd4.js → page-DfSvqT8g.js} +1 -1
- zenml/zen_server/dashboard/assets/{page-B7Aj2XbV.js → page-Dt6ANUTx.js} +1 -1
- zenml/zen_server/dashboard/assets/{page-DHnkTzqs.js → page-DtvTleaT.js} +1 -1
- zenml/zen_server/dashboard/assets/{page-uN0n_DE2.js → page-DwfGTiVs.js} +1 -1
- zenml/zen_server/dashboard/assets/{page-Ci_n_x3a.js → page-JgomSTDc.js} +1 -1
- zenml/zen_server/dashboard/assets/{page-DkY7AIhj.js → page-L84ig6HB.js} +1 -1
- zenml/zen_server/dashboard/assets/{page-bUVHi7DE.js → page-Mabsn4QJ.js} +1 -1
- zenml/zen_server/dashboard/assets/{page-DP2Ed-2m.js → page-P04L5cm9.js} +1 -1
- zenml/zen_server/dashboard/assets/{page-D-ry_oLs.js → page-PfhAnvq4.js} +1 -1
- zenml/zen_server/dashboard/assets/{page-CI4a9CXs.js → page-WdRrlNt_.js} +1 -1
- zenml/zen_server/dashboard/assets/{page-D_5R6E7b.js → page-ZfTtFicG.js} +1 -1
- zenml/zen_server/dashboard/assets/{page-Dt3wHeWX.js → page-cqJDDDeK.js} +1 -1
- zenml/zen_server/dashboard/assets/{page-B0r9dBEU.js → page-k-Wxh9L_.js} +1 -1
- zenml/zen_server/dashboard/assets/page-y-zV4n0c.js +1 -0
- zenml/zen_server/dashboard/assets/{persist-SSTTV5q0.js → persist-D87V82eO.js} +1 -1
- zenml/zen_server/dashboard/assets/{persist-CEeDYHW5.js → persist-UUym702q.js} +1 -1
- zenml/zen_server/dashboard/assets/{service-BRoAA1Kq.js → service-BQ9KIhls.js} +1 -1
- zenml/zen_server/dashboard/assets/{sharedSchema-BACERDat.js → sharedSchema-Bse2agAf.js} +1 -1
- zenml/zen_server/dashboard/assets/{stack-detail-query-ihiJr6nq.js → stack-detail-query-BAcZJrN3.js} +1 -1
- zenml/zen_server/dashboard/assets/{update-server-settings-mutation-CK6COmw9.js → update-server-settings-mutation-DwMM1LJz.js} +1 -1
- zenml/zen_server/dashboard/index.html +3 -3
- zenml/zen_server/feature_gate/endpoint_utils.py +9 -12
- zenml/zen_server/feature_gate/feature_gate_interface.py +4 -6
- zenml/zen_server/feature_gate/zenml_cloud_feature_gate.py +8 -9
- zenml/zen_server/rbac/endpoint_utils.py +1 -1
- zenml/zen_server/rbac/rbac_sql_zen_store.py +2 -2
- zenml/zen_server/routers/run_templates_endpoints.py +10 -1
- zenml/zen_server/template_execution/utils.py +12 -1
- zenml/zen_stores/migrations/versions/0.82.1_release.py +23 -0
- zenml/zen_stores/sql_zen_store.py +3 -6
- {zenml_nightly-0.82.0.dev20250513.dist-info → zenml_nightly-0.82.1.dev20250517.dist-info}/METADATA +2 -2
- {zenml_nightly-0.82.0.dev20250513.dist-info → zenml_nightly-0.82.1.dev20250517.dist-info}/RECORD +116 -115
- zenml/zen_server/dashboard/assets/index-DmTFrHJm.css +0 -1
- zenml/zen_server/dashboard/assets/page-BTzhAVEn.js +0 -1
- zenml/zen_server/dashboard/assets/page-CSQOpvvK.js +0 -3
- {zenml_nightly-0.82.0.dev20250513.dist-info → zenml_nightly-0.82.1.dev20250517.dist-info}/LICENSE +0 -0
- {zenml_nightly-0.82.0.dev20250513.dist-info → zenml_nightly-0.82.1.dev20250517.dist-info}/WHEEL +0 -0
- {zenml_nightly-0.82.0.dev20250513.dist-info → zenml_nightly-0.82.1.dev20250517.dist-info}/entry_points.txt +0 -0
@@ -1 +1 @@
|
|
1
|
-
import{r as i,j as e}from"./@radix-C7hRs6Kx.js";import{z as o,f as y,j as g,k as N,c as b,l as v,S,I as u,h as p,m as w,r as k,n as F}from"./index-
|
1
|
+
import{r as i,j as e}from"./@radix-C7hRs6Kx.js";import{z as o,f as y,j as g,k as N,c as b,l as v,S,I as u,h as p,m as w,r as k,n as F}from"./index-D2iSHVZq.js";import{T as C,P}from"./ProCta-EYoV9CvK.js";import{t as U}from"./zod-C0xYeTvL.js";import{b as E}from"./@tanstack-CSxjHCME.js";import{u as M}from"./index.esm-D7jFlf5N.js";import{S as L}from"./check-circle-mvyzYvIW.js";import{L as z}from"./@react-router-CNP6g_RL.js";import"./@reactflow-CQi1Z1Wq.js";import"./check-DK77doTf.js";const h=i.createContext(null);function B({children:s}){const[t,a]=i.useState(!1);return e.jsx(h.Provider,{value:{setSubmitSuccess:a,submitSuccess:t},children:s})}function f(){const s=i.useContext(h);if(s===null)throw new Error("useUpgradeContext must be used within an UpgradeProvider");return s}const T=o.object({name:o.string().min(1),company:o.string().min(1),email:o.string().email()});function I(){const{setSubmitSuccess:s}=f(),{toast:t}=y(),a=M({resolver:U(T),defaultValues:{company:"",email:"",name:""}}),n=E({mutationFn:Z,onSuccess:()=>s(!0),onError:r=>{t({emphasis:"subtle",status:"error",rounded:!0,description:r.message})}});async function c(r,l,m){n.mutate({...r,userId:l,isDebug:m})}return{form:a,submitFormMutation:n,handleSubmitForm:c}}async function Z({company:s,email:t,isDebug:a,name:n,userId:c}){return g(N,{method:"POST",credentials:"omit",headers:{"Content-Type":"application/json"},body:JSON.stringify([{debug:a,event:"Upgrade initiated",type:"track",user_id:c,properties:{company:s,email:t,name:n}}])})}function _(){return e.jsxs("div",{className:"space-y-5",children:[e.jsx(D,{}),e.jsx(R,{})]})}function D(){return e.jsxs("div",{className:"flex flex-col items-center space-y-0.5",children:[e.jsx("h1",{className:"text-center text-display-xs font-semibold",children:"Upgrade to ZenML Pro on your own VPC"}),e.jsx("p",{className:"text-theme-text-secondary",children:"Direct self-deployment, no sales calls"})]})}function R(){const s=b(),t=v(),{form:a,handleSubmitForm:n,submitFormMutation:c}=I(),{register:r,handleSubmit:l,formState:{isValid:m,isSubmitting:d}}=a,{isPending:x}=c;return s.isPending||t.isPending?e.jsx(S,{className:"h-[250px] w-full"}):s.isError||t.isError?e.jsx("p",{children:"Something went wrong...."}):e.jsxs("div",{className:"space-y-5",children:[e.jsxs("form",{onSubmit:l(j=>n(j,t.data.id,!!s.data.debug)),className:"space-y-5",children:[e.jsxs("div",{className:"space-y-0.5",children:[e.jsx("label",{htmlFor:"name",className:"text-text-sm",children:"Your Name"}),e.jsx(u,{...r("name"),id:"name",className:"w-full"})]}),e.jsxs("div",{className:"space-y-0.5",children:[e.jsx("label",{htmlFor:"company",className:"text-text-sm",children:"Company"}),e.jsx(u,{...r("company"),id:"company",className:"w-full"})]}),e.jsxs("div",{className:"space-y-0.5",children:[e.jsx("label",{htmlFor:"email",className:"text-text-sm",children:"Email address"}),e.jsx(u,{...r("email"),id:"email",className:"w-full"})]}),e.jsxs(p,{size:"md",className:"w-full justify-center",disabled:d||x||!m,type:"submit",children:[(x||d)&&e.jsx("div",{role:"alert","aria-busy":"true",className:"full h-[20px] w-[20px] animate-spin rounded-rounded border-2 border-theme-text-negative border-b-theme-text-brand"}),"Continue"]})]}),e.jsxs("p",{className:"text-center text-text-xs text-theme-text-secondary",children:["By submitting the form you accept our"," ",e.jsx("a",{className:"link",href:"https://www.zenml.io/cloud-terms-and-privacy",target:"_blank",rel:"noopener noreferrer",children:"terms of use"})," ","and"," ",e.jsx("a",{href:"https://www.zenml.io/privacy-policy",target:"_blank",rel:"noopener noreferrer",className:"link",children:"privacy policy"}),"."]})]})}function V(){return e.jsxs("div",{className:"space-y-5",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx("h2",{className:"text-display-xs font-semibold",children:"As easy as following the steps"}),e.jsx("p",{className:"text-theme-text-secondary",children:"From sign-up to deployment in minutes"})]}),e.jsx(Y,{})]})}const W=["Fill out your details","Receive comprehensive ZenML Pro documentation","Deploy ZenML Pro and upgrade your tenant","Get a free 14-day trial license"];function Y(){return e.jsx("ol",{className:"space-y-3",children:W.map((s,t)=>e.jsxs("li",{className:"flex items-center space-x-1",children:[e.jsx(q,{children:t+1}),e.jsx("span",{children:s})]},t))})}function q({className:s,...t}){return e.jsx("div",{...t,className:w("flex h-4 w-4 shrink-0 items-center justify-center rounded-rounded bg-warning-400 text-text-xs text-theme-text-negative")})}function G(){return e.jsxs("section",{className:"flex w-full flex-col-reverse items-center justify-end gap-5 lg:flex-row lg:gap-[100px] xl:pl-[200px] 2xl:pl-[300px]",children:[e.jsx(V,{}),e.jsx(_,{})]})}const H="/assets/upgrade-form-CwRHBuXB.webp",O=["Comprehensive documentation to get started","Your 14-day trial license key","Step-by-step deployment instructions"];function A(){return e.jsxs("section",{className:"flex h-full w-full flex-col items-center justify-center space-y-5",children:[e.jsx(L,{className:"h-[120px] w-[120px] fill-theme-text-success"}),e.jsxs("div",{className:"space-y-7",children:[e.jsxs("div",{className:"max-w-[500px] space-y-2 text-center",children:[e.jsx("h1",{className:"text-display-xs font-semibold",children:"You're on your way to ZenML Pro!"}),e.jsx("p",{className:"text-theme-text-secondary",children:"Thank you for choosing to upgrade to ZenML Pro. We've received your request and you'll receive an email with:"}),e.jsx("ul",{className:"mx-auto w-fit space-y-3",children:O.map((s,t)=>e.jsxs("li",{className:"flex items-center gap-1",children:[e.jsx(C,{}),e.jsx("span",{children:s})]},t))}),e.jsxs("p",{className:"text-theme-text-secondary",children:["Meanwhile, you can ask your questions in our"," ",e.jsx("a",{className:"link",href:"https://zenml.io/slack",target:"_blank",rel:"noopener noreferrer",children:"Slack channel"})," ","or"," ",e.jsx("a",{className:"link",href:"https://docs.zenml.io",target:"_blank",rel:"noopener noreferrer",children:"check our documentation."})]})]}),e.jsx(p,{size:"md",className:"mx-auto",children:e.jsx(z,{to:k.home,children:"Go to Dashboard"})})]})]})}function J(){const{submitSuccess:s}=f();return e.jsxs(P,{className:"relative min-h-[620px]",children:[e.jsx("img",{src:H,className:"absolute hidden -translate-x-3/4 -rotate-[5deg] scale-75 xl:block 2xl:-translate-x-[60%]"}),s===!1&&e.jsx(G,{}),s===!0&&e.jsx(A,{})]})}function ce(){const{setCurrentBreadcrumbData:s}=F();return i.useEffect(()=>{s({segment:"upgrade",data:null})},[]),e.jsx("div",{className:"flex h-full items-center justify-center",children:e.jsx("div",{className:"layout-container",children:e.jsx(B,{children:e.jsx(J,{})})})})}export{ce as default};
|
@@ -0,0 +1 @@
|
|
1
|
+
import{j as o}from"./@radix-C7hRs6Kx.js";import{S as r}from"./Tabs-DxQ8PDOD.js";import{R as m}from"./RunsBody-W4WHf-sq.js";import{R as i}from"./RunSelector-BLuBYNJt.js";import{S as p}from"./StackList-CgmN5H-i.js";import{a as s}from"./@react-router-CNP6g_RL.js";import"./index-D2iSHVZq.js";import"./@tanstack-CSxjHCME.js";import"./@reactflow-CQi1Z1Wq.js";import"./chevron-down-A-rmltmI.js";import"./ComponentIcon-ils7uNAk.js";import"./layout-h3cbx8WZ.js";import"./rocket-Cf-B-XOR.js";import"./DisplayDate-CYVBBSgr.js";import"./InlineAvatar-Cfz4WSLK.js";import"./NestedCollapsible-Dor-bi98.js";import"./type-guards-CaeD8wHO.js";import"./CodeSnippet-CvI6D0wx.js";import"./CollapsibleCard-D20FtrzC.js";import"./chevron-right-double-uNWbJT-C.js";import"./check-circle-mvyzYvIW.js";import"./refresh-CM5T3QeU.js";import"./SearchField-D-h6jXyg.js";import"./dots-horizontal-BGRJCPCs.js";import"./index-DR30v9MZ.js";import"./all-pipeline-runs-query-BGASHYtF.js";import"./ExecutionStatus-XrvT2r65.js";import"./trash-BWSZ7NRK.js";import"./DeleteAlertDialog-DVvXt-S6.js";import"./zod-C0xYeTvL.js";import"./index.esm-D7jFlf5N.js";import"./AlertDialogDropdownItem-BG7-Ki1L.js";import"./delete-run-DlSLEl5T.js";import"./plus-COjQg3AG.js";import"./index-CrhdX_qG.js";import"./stack-detail-query-BAcZJrN3.js";import"./components-Br2ezRib.js";import"./NumberBox-D2A7ENHb.js";import"./ComponentBadge-DKw7Gndh.js";import"./Infobox-D9k5TFH4.js";import"./DialogItem-BHWf3sIB.js";function V(){const{componentId:t}=s();return o.jsx("div",{className:"@container",children:o.jsx(r,{isPanel:!1,stacksTabContent:o.jsx(p,{fixedQueryParams:{component_id:t}}),runsTabContent:o.jsx(i,{children:o.jsx(m,{fixedQueryParams:{stack_component:t}})}),componentId:t})})}export{V as default};
|
@@ -1 +1 @@
|
|
1
|
-
import{z as a}from"./index-
|
1
|
+
import{z as a}from"./index-D2iSHVZq.js";import{s as i}from"./sharedSchema-Bse2agAf.js";const o=a.enum(["aws","gcp","azure"]),p=a.object({provider:o}),g=a.object({region:a.string().trim().min(1),stackName:i}),r="new-infra-data",e=a.object({provider:o,stackName:a.string().min(1).trim(),location:a.string().min(1).trim(),timestamp:a.string().min(1).trim()});function d(t){localStorage.setItem(r,JSON.stringify(t))}function f(){try{const t=localStorage.getItem(r),s=t?JSON.parse(t):{};return e.safeParse(s)}catch{return c(),e.safeParse({})}}function c(){localStorage.removeItem(r)}export{g as a,p as b,c,o as d,f as p,d as s};
|
@@ -1 +1 @@
|
|
1
|
-
import{z as t}from"./index-
|
1
|
+
import{z as t}from"./index-D2iSHVZq.js";import{d as s}from"./persist-D87V82eO.js";const r="create-terraform-data",e=t.object({provider:s,stackName:t.string().min(1).trim(),location:t.string().min(1).trim(),timestamp:t.string().min(1).trim()});function n(a){localStorage.setItem(r,JSON.stringify(a))}function l(){try{const a=localStorage.getItem(r),o=a?JSON.parse(a):{};return e.safeParse(o)}catch{return i(),e.safeParse({})}}function i(){localStorage.removeItem(r)}export{i as c,l as p,n as s};
|
@@ -1,2 +1,2 @@
|
|
1
|
-
import{q as y,b as w}from"./@tanstack-CSxjHCME.js";import{o as l,q as f,j as u,s as h,F as p,p as m,z as i,h as j,a5 as A}from"./index-
|
1
|
+
import{q as y,b as w}from"./@tanstack-CSxjHCME.js";import{o as l,q as f,j as u,s as h,F as p,p as m,z as i,h as j,a5 as A}from"./index-D2iSHVZq.js";import{j as a,r as g}from"./@radix-C7hRs6Kx.js";import{C as x}from"./CodeSnippet-CvI6D0wx.js";import{I as v}from"./Infobox-D9k5TFH4.js";import{T}from"./Tick-CEsT3HPR.js";import{d as K}from"./@react-router-CNP6g_RL.js";async function b({params:e}){const r=l(m.serviceAccounts.all)+"?"+f(e),s=await u(r,{method:"GET",headers:{"Content-Type":"application/json"}});if(s.status===404&&h(),!s.ok){const t=await s.json().then(n=>Array.isArray(n.detail)?n.detail[1]:n.detail).catch(()=>"Failed to fetch service accounts");throw new p({status:s.status,statusText:s.statusText,message:t})}return s.json()}async function k({serviceAccountId:e}){const r=l(m.serviceAccounts.detail(e)),s=await u(r,{method:"GET",headers:{"Content-Type":"application/json"}});if(s.status===404&&h(),!s.ok){const t=await s.json().then(n=>Array.isArray(n.detail)?n.detail[1]:n.detail).catch(()=>`Failed to fetch service account ${e}`);throw new p({status:s.status,statusText:s.statusText,message:t})}return s.json()}async function N({serviceAccountId:e,params:r}){const s=l(m.serviceAccounts.apiKeys.all(e))+"?"+f(r),t=await u(s,{method:"GET",headers:{"Content-Type":"application/json"}});if(t.status===404&&h(),!t.ok){const n=await t.json().then(o=>Array.isArray(o.detail)?o.detail[1]:o.detail).catch(()=>"Failed to list of api keys");throw new p({status:t.status,statusText:t.statusText,message:n})}return t.json()}async function S({serviceAccountId:e,apiKeyId:r}){const s=l(m.serviceAccounts.apiKeys.detail(e,r)),t=await u(s,{method:"GET",headers:{"Content-Type":"application/json"}});if(t.status===404&&h(),!t.ok){const n=await t.json().then(o=>Array.isArray(o.detail)?o.detail[1]:o.detail).catch(()=>`Failed to fetch api key ${r}`);throw new p({status:t.status,statusText:t.statusText,message:n})}return t.json()}const $={serviceAccountList:e=>y({queryKey:[...c.serviceAccountsKey(),e],queryFn:async()=>b({params:e})}),serviceAccountDetail:e=>y({queryKey:[...c.serviceAccountsKey(),e],queryFn:async()=>k({serviceAccountId:e})}),serviceAccountApiKeys:(e,r)=>y({queryKey:[...c.apiKeysKey(e),r],queryFn:async()=>N({serviceAccountId:e,params:r})}),ApiKeysDetail:(e,r)=>y({queryKey:[...c.apiKeysKey(e),r],queryFn:async()=>S({serviceAccountId:e,apiKeyId:r})})},c={serviceAccountsKey:()=>["service_accounts"],apiKeysKey:e=>[...c.serviceAccountsKey(),e,"api_keys"]};async function C({body:e,serviceAccountId:r}){const s=l(m.serviceAccounts.apiKeys.all(r)),t=await u(s,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)});if(!t.ok){const n=await t.json().then(o=>Array.isArray(o.detail)?o.detail[1]:o.detail).catch(()=>"Failed to create service account");throw new p({status:t.status,statusText:t.statusText,message:n})}return t.json()}function I(e){return w({...e,mutationFn:async({serviceAccountId:r,body:s})=>C({body:s,serviceAccountId:r})})}const F=i.object({name:i.string().min(1,"Service Account Name is required"),description:i.string()}),R=F.extend({createDefault:i.boolean()});function U({value:e}){return a.jsxs("div",{className:"space-y-3 overflow-x-hidden px-7 py-5 text-text-md text-theme-text-primary",children:[a.jsxs("div",{className:"space-y-0.5",children:[a.jsx("p",{className:"text-text-md font-semibold text-theme-text-primary",children:"Here is your new API Key"}),a.jsx("p",{className:"text-text-md text-theme-text-secondary",children:"Your key was created successfully"})]}),a.jsx(P,{}),a.jsx(E,{value:e}),a.jsx("div",{className:"h-[1px] bg-theme-border-moderate","aria-hidden":"true"}),a.jsxs("div",{className:"space-y-3 pt-5",children:[a.jsxs("div",{className:"flex items-center gap-1",children:[a.jsx("p",{className:"text-text-md font-semibold text-theme-text-primary",children:"Using your API Key"}),a.jsx("a",{target:"_blank",rel:"noreferrer noopener",href:"https://docs.zenml.io/how-to/project-setup-and-management/connecting-to-zenml/connect-with-a-service-account",className:"link text-text-sm text-primary-400",children:"Learn More"})]}),a.jsx("p",{className:"text-theme-text-secondary",children:"To log in to the ZenML server using the generated key, you can run the following CLI command and enter the API key when prompted:"}),a.jsx(x,{highlightCode:!0,wrap:!0,code:`zenml login --api-key ${window.location.origin}`}),a.jsx("p",{className:"text-theme-text-secondary",children:"Alternatively, you can set the following environment variables to configure workloads where CLI interaction is not possible:"}),a.jsx(x,{highlightCode:!0,wrap:!0,code:`ZENML_STORE_URL: ${window.location.origin}
|
2
2
|
ZENML_STORE_API_KEY: ${e}`})]})]})}function E({value:e}){const[r,s]=g.useState(!1);function t(n){navigator.clipboard&&(navigator.clipboard.writeText(n),s(!0),setTimeout(()=>{s(!1)},2e3))}return a.jsxs("section",{className:"flex w-full items-center justify-between gap-5 overflow-hidden py-5 text-text-md",children:[a.jsx("code",{className:"w-[3/4] min-w-0 flex-1 overflow-x-auto font-sans text-display-xs",children:e}),r?a.jsxs(a.Fragment,{children:[a.jsx(T,{className:"h-5 w-5 shrink-0 fill-theme-text-tertiary"}),a.jsx("p",{className:"sr-only",children:"copied successfully"})]}):a.jsxs(j,{intent:"secondary",emphasis:"subtle",onClick:()=>t(e),size:"md",children:[a.jsx(A,{className:"h-4 w-4 shrink-0 fill-theme-text-primary"}),a.jsx("p",{children:"Copy"})]})]})}function P(){return a.jsx(v,{children:"Important: This key is your authentication for API access and will not be shown again. Please copy it and store it securely."})}const d=1,D=i.object({page:i.coerce.number().min(d).optional().default(d).catch(d),name:i.string().optional(),operator:i.enum(["and","or"]).optional()});function Z(){const[e]=K(),{page:r,name:s,operator:t}=D.parse({page:e.get("page")||void 0,name:e.get("name")||void 0,operator:e.get("operator")||void 0});return{page:r,name:s,logical_operator:t}}export{U as A,Z as a,$ as b,R as c,F as d,c as s,I as u};
|
@@ -1,4 +1,4 @@
|
|
1
|
-
import{f as C}from"./index-
|
1
|
+
import{f as C}from"./index-CrhdX_qG.js";import{g as S}from"./@radix-C7hRs6Kx.js";import{z as F}from"./index-D2iSHVZq.js";var d,y;function j(){if(y)return d;y=1,d=function(t){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,a=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},u=void 0,i=void 0,c=void 0,s=[];return function(){var p=o(r),g=new Date().getTime(),P=!u||g-u>p;u=g;for(var b=arguments.length,l=Array(b),f=0;f<b;f++)l[f]=arguments[f];if(P&&a.leading)return a.accumulate?Promise.resolve(t.call(this,[l])).then(function(v){return v[0]}):Promise.resolve(t.call.apply(t,[this].concat(l)));if(i?clearTimeout(c):i=n(),s.push(l),c=setTimeout(D.bind(this),p),a.accumulate){var w=s.length-1;return i.promise.then(function(v){return v[w]})}return i.promise};function D(){var m=i;clearTimeout(c),Promise.resolve(a.accumulate?t.call(this,s):t.apply(this,s[s.length-1])).then(m.resolve,m.reject),s=[],i=null}};function o(e){return typeof e=="function"?e():e}function n(){var e={};return e.promise=new Promise(function(t,r){e.resolve=t,e.reject=r}),e}return d}var k=j();const O=S(k);function T(o){var n=null,e=null,t=new Promise(function(r,a){n=r,e=a});return o&&o.then(function(r){n&&n(r)},function(r){e&&e(r)}),{promise:t,resolve:function(r){n&&n(r)},reject:function(r){e&&e(r)},cancel:function(){n=null,e=null}}}function x(o){var n=null,e=function(){for(var t=[],r=0;r<arguments.length;r++)t[r]=arguments[r];n&&n();var a=o.apply(void 0,t),u=T(a),i=u.promise,c=u.cancel;return n=c,i};return e}/*! *****************************************************************************
|
2
2
|
Copyright (c) Microsoft Corporation. All rights reserved.
|
3
3
|
Licensed under the Apache License, Version 2.0 (the "License"); you may not use
|
4
4
|
this file except in compliance with the License. You may obtain a copy of the
|
zenml/zen_server/dashboard/assets/{stack-detail-query-ihiJr6nq.js → stack-detail-query-BAcZJrN3.js}
RENAMED
@@ -1 +1 @@
|
|
1
|
-
import{j as a,o as r,s as n,F as o,p as u}from"./index-
|
1
|
+
import{j as a,o as r,s as n,F as o,p as u}from"./index-D2iSHVZq.js";import{a as i}from"./@tanstack-CSxjHCME.js";function c({stackId:t}){return["stacks",t]}async function f({stackId:t}){const s=r(u.stacks.detail(t)),e=await a(s,{method:"GET",headers:{"Content-Type":"application/json"}});if(e.status===404&&n(),!e.ok)throw new o({message:`Error while fetching stack ${t}`,status:e.status,statusText:e.statusText});return e.json()}function y(t,s){return i({queryKey:c(t),queryFn:()=>f(t),...s})}export{f,y as u};
|
@@ -1 +1 @@
|
|
1
|
-
import{j as n,o as i,F as o,p as u}from"./index-
|
1
|
+
import{j as n,o as i,F as o,p as u}from"./index-D2iSHVZq.js";import{b as c}from"./@tanstack-CSxjHCME.js";async function p(e){const r=i(u.settings),t=await n(r,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)});if(!t.ok){const a=await t.json().then(s=>Array.isArray(s.detail)?s.detail[1]:s.detail).catch(()=>"Failed to update Server Settings");throw new o({status:t.status,statusText:t.statusText,message:a})}return t.json()}function f(e){return c({mutationFn:async r=>p(r),...e})}export{f as u};
|
@@ -5,14 +5,14 @@
|
|
5
5
|
<link rel="icon" type="image/svg+xml" href="/favicon.ico" />
|
6
6
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
7
7
|
<title>ZenML Dashboard</title>
|
8
|
-
<script type="module" crossorigin src="/assets/index-
|
8
|
+
<script type="module" crossorigin src="/assets/index-D2iSHVZq.js"></script>
|
9
9
|
<link rel="modulepreload" crossorigin href="/assets/@radix-C7hRs6Kx.js">
|
10
10
|
<link rel="modulepreload" crossorigin href="/assets/@tanstack-CSxjHCME.js">
|
11
11
|
<link rel="modulepreload" crossorigin href="/assets/@react-router-CNP6g_RL.js">
|
12
12
|
<link rel="modulepreload" crossorigin href="/assets/@reactflow-CQi1Z1Wq.js">
|
13
13
|
<link rel="stylesheet" crossorigin href="/assets/@reactflow-Fd0xVSp_.css">
|
14
|
-
<link rel="stylesheet" crossorigin href="/assets/index-
|
15
|
-
<link rel="prefetch" href="/assets/cloud-squares-DeRLMopf.svg"><link rel="prefetch" href="/assets/inter-cyrillic-ext-400-normal-Dc4VJyIJ.woff2"><link rel="prefetch" href="/assets/inter-greek-ext-400-normal-Bput3-QP.woff2"><link rel="prefetch" href="/assets/inter-cyrillic-400-normal-BLGc9T1a.woff2"><link rel="prefetch" href="/assets/inter-greek-400-normal-DxZsaF_h.woff2"><link rel="prefetch" href="/assets/inter-vietnamese-400-normal-DMkecbls.woff2"><link rel="prefetch" href="/assets/inter-latin-ext-400-normal-hnt3BR84.woff2"><link rel="prefetch" href="/assets/inter-latin-400-normal-BOOGhInR.woff2"><link rel="prefetch" href="/assets/inter-cyrillic-ext-500-normal-BShVwWPj.woff2"><link rel="prefetch" href="/assets/inter-cyrillic-500-normal-D4Vwzodn.woff2"><link rel="prefetch" href="/assets/inter-greek-ext-500-normal-B6guLgqG.woff2"><link rel="prefetch" href="/assets/inter-greek-500-normal-CeQXL5ds.woff2"><link rel="prefetch" href="/assets/inter-vietnamese-500-normal-DOriooB6.woff2"><link rel="prefetch" href="/assets/inter-latin-ext-500-normal-CIS2RHJS.woff2"><link rel="prefetch" href="/assets/inter-latin-500-normal-D2bGa7uu.woff2"><link rel="prefetch" href="/assets/inter-cyrillic-ext-600-normal-CaqZN2hq.woff2"><link rel="prefetch" href="/assets/inter-cyrillic-600-normal-BGBWG807.woff2"><link rel="prefetch" href="/assets/inter-greek-ext-600-normal-Cnui8OiR.woff2"><link rel="prefetch" href="/assets/inter-greek-600-normal-Dhlb-90d.woff2"><link rel="prefetch" href="/assets/inter-vietnamese-600-normal-Cc8MFFhd.woff2"><link rel="prefetch" href="/assets/inter-latin-ext-600-normal-BnYJhD27.woff2"><link rel="prefetch" href="/assets/inter-latin-600-normal-D273HNI0.woff2"><link rel="prefetch" href="/assets/inter-greek-ext-400-normal-DCpCPQOf.woff"><link rel="prefetch" href="/assets/inter-cyrillic-ext-400-normal-BPnxn4xp.woff"><link rel="prefetch" href="/assets/inter-cyrillic-400-normal-ZzOtrSSW.woff"><link rel="prefetch" href="/assets/inter-greek-400-normal-BZzXV7-1.woff"><link rel="prefetch" href="/assets/inter-vietnamese-400-normal-BUNmGMP1.woff"><link rel="prefetch" href="/assets/inter-latin-ext-400-normal-C1t-h-pH.woff"><link rel="prefetch" href="/assets/inter-latin-400-normal-gitzw0hO.woff"><link rel="prefetch" href="/assets/inter-cyrillic-ext-500-normal-CUiC4oBV.woff"><link rel="prefetch" href="/assets/inter-cyrillic-500-normal-DH2hs3aW.woff"><link rel="prefetch" href="/assets/inter-greek-ext-500-normal-M2hEX8vc.woff"><link rel="prefetch" href="/assets/inter-greek-500-normal-d_eO-yCQ.woff"><link rel="prefetch" href="/assets/inter-latin-ext-500-normal-UMdmhHu2.woff"><link rel="prefetch" href="/assets/inter-latin-500-normal-deR1Tlfd.woff"><link rel="prefetch" href="/assets/inter-vietnamese-500-normal-DQPw2Hwd.woff"><link rel="prefetch" href="/assets/inter-cyrillic-ext-600-normal-Bt9VVOA-.woff"><link rel="prefetch" href="/assets/inter-cyrillic-600-normal-BuzJQFbW.woff"><link rel="prefetch" href="/assets/inter-greek-ext-600-normal-C9WLioJ8.woff"><link rel="prefetch" href="/assets/inter-greek-600-normal-CwicyhtI.woff"><link rel="prefetch" href="/assets/inter-vietnamese-600-normal-Cm6aH8_k.woff"><link rel="prefetch" href="/assets/inter-latin-ext-600-normal-CAF0vJDd.woff"><link rel="prefetch" href="/assets/inter-latin-600-normal-B5cFAncS.woff"><link rel="prefetch" href="/assets/mcp-Cb1aMeoq.webp"><link rel="prefetch" href="/assets/acp-DOsXjFc7.webp"><link rel="prefetch" href="/assets/settings_preview-0JLrRgHP.webp"><link rel="prefetch" href="/assets/upgrade-form-CwRHBuXB.webp"><link rel="prefetch" href="/assets/connectors-video-C9qY4syJ.svg"><link rel="prefetch" href="/assets/repos-video-D8kpu60k.svg"><link rel="prefetch" href="/assets/adam-e-y0WnB_.webp"><link rel="prefetch" href="/assets/alex-DcCuDHPg.webp"><link rel="prefetch" href="/assets/baris-C0ZrZ10g.webp"><link rel="prefetch" href="/assets/hamza-NKKOZz1I.webp"><link rel="prefetch" href="/assets/stefan-B08Ftbba.webp"><link rel="prefetch" href="/assets/tour-cover-BYfeen6M.webp"><link rel="prefetch" href="/assets/templates-1S_8WeSK.webp"><link rel="prefetch" href="/assets/flyte-Cj-xy_8I.svg"><link rel="prefetch" href="/assets/metaflow-weOkWNyT.svg"><link rel="prefetch" href="/assets/CodeSnippet-CK5CxKct.css"><link rel="prefetch" href="/assets/page-bUVHi7DE.js"><link rel="prefetch" href="/assets/page-8AzB83Py.js"><link rel="prefetch" href="/assets/page-B0r9dBEU.js"><link rel="prefetch" href="/assets/page-uN0n_DE2.js"><link rel="prefetch" href="/assets/page-D_5R6E7b.js"><link rel="prefetch" href="/assets/SetPassword-CBHW-Su8.js"><link rel="prefetch" href="/assets/login-mutation-DywLqguW.js"><link rel="prefetch" href="/assets/page-CI4a9CXs.js"><link rel="prefetch" href="/assets/page-B3DscprQ.js"><link rel="prefetch" href="/assets/page-CSQOpvvK.js"><link rel="prefetch" href="/assets/not-found-BOoklIG4.js"><link rel="prefetch" href="/assets/page-kzSGEVUs.js"><link rel="prefetch" href="/assets/page-DkY7AIhj.js"><link rel="prefetch" href="/assets/PasswordChecker-lYTOtNom.js"><link rel="prefetch" href="/assets/tick-circle-m94Aa6Zt.js"><link rel="prefetch" href="/assets/page-cOEvFs_l.js"><link rel="prefetch" href="/assets/page-D2TtSfnb.js"><link rel="prefetch" href="/assets/page-B1Uq1S1Q.js"><link rel="prefetch" href="/assets/docker-BuDBFEDL.js"><link rel="prefetch" href="/assets/page-ByXQN8A-.js"><link rel="prefetch" href="/assets/Commands-CD9Y7FOE.js"><link rel="prefetch" href="/assets/page-uDGvpa5g.js"><link rel="prefetch" href="/assets/react-error-boundary.esm-fyoUBS25.js"><link rel="prefetch" href="/assets/page-4nVakAEl.js"><link rel="prefetch" href="/assets/code-snippets-CqONne41.js"><link rel="prefetch" href="/assets/page-CPLlVRXx.js"><link rel="prefetch" href="/assets/SecretTooltip-LLGP7AIC.js"><link rel="prefetch" href="/assets/page-Ccnk_5ji.js"><link rel="prefetch" href="/assets/update-server-settings-mutation-CK6COmw9.js"><link rel="prefetch" href="/assets/page-EXvws1ss.js"><link rel="prefetch" href="/assets/page-BIYqUwTI.js"><link rel="prefetch" href="/assets/dates-3pMLCNrD.js"><link rel="prefetch" href="/assets/key-icon-DO4DPJHZ.js"><link rel="prefetch" href="/assets/service-BRoAA1Kq.js"><link rel="prefetch" href="/assets/page-D-ry_oLs.js"><link rel="prefetch" href="/assets/page-BTzhAVEn.js"><link rel="prefetch" href="/assets/RunsBody-DexNouV4.js"><link rel="prefetch" href="/assets/RunSelector-j0C_TPVp.js"><link rel="prefetch" href="/assets/delete-run-DzcYxUnd.js"><link rel="prefetch" href="/assets/DeleteAlertDialog-9RTDnEx3.js"><link rel="prefetch" href="/assets/Tabs-C2ufJX4t.js"><link rel="prefetch" href="/assets/all-pipeline-runs-query-BUT1PiTp.js"><link rel="prefetch" href="/assets/NestedCollapsible-DbhKdWx-.js"><link rel="prefetch" href="/assets/ExecutionStatus-B-ysY113.js"><link rel="prefetch" href="/assets/page-BE8jdyaM.js"><link rel="prefetch" href="/assets/page-2BsNK_sZ.js"><link rel="prefetch" href="/assets/page-DmteSSj6.js"><link rel="prefetch" href="/assets/StackList-S-9I1R4n.js"><link rel="prefetch" href="/assets/DialogItem-0fWTH7ki.js"><link rel="prefetch" href="/assets/AlertDialogDropdownItem-CRZjthRL.js"><link rel="prefetch" href="/assets/CollapsibleCard-Dr5zb5T5.js"><link rel="prefetch" href="/assets/refresh-CM5T3QeU.js"><link rel="prefetch" href="/assets/SearchField-DMCywawn.js"><link rel="prefetch" href="/assets/page-xa1EAPcI.js"><link rel="prefetch" href="/assets/code-browser-j2EpcxIA.js"><link rel="prefetch" href="/assets/clock-CPA5cYxq.js"><link rel="prefetch" href="/assets/page--hSXKqyG.js"><link rel="prefetch" href="/assets/page-DfTsntQI.js"><link rel="prefetch" href="/assets/flavor-select-BTEwByv6.js"><link rel="prefetch" href="/assets/constants-DP3ZEnXH.js"><link rel="prefetch" href="/assets/arrow-left-CwgF2MEM.js"><link rel="prefetch" href="/assets/configuration-form-DBZSb0FV.js"><link rel="prefetch" href="/assets/terminal-square-DMtel8mb.js"><link rel="prefetch" href="/assets/index-wYtmKLnQ.js"><link rel="prefetch" href="/assets/InlineAvatar-Cpj0lVRQ.js"><link rel="prefetch" href="/assets/DisplayDate-CYVBBSgr.js"><link rel="prefetch" href="/assets/index-DR30v9MZ.js"><link rel="prefetch" href="/assets/page-Dt3wHeWX.js"><link rel="prefetch" href="/assets/Lock-DW-0_M0o.js"><link rel="prefetch" href="/assets/components-Br2ezRib.js"><link rel="prefetch" href="/assets/dots-horizontal-BGRJCPCs.js"><link rel="prefetch" href="/assets/create-stack-BXLyjE58.js"><link rel="prefetch" href="/assets/index-D9-ukAem.js"><link rel="prefetch" href="/assets/type-guards-CaeD8wHO.js"><link rel="prefetch" href="/assets/trash-BWSZ7NRK.js"><link rel="prefetch" href="/assets/page-K9yjbnd4.js"><link rel="prefetch" href="/assets/persist-CEeDYHW5.js"><link rel="prefetch" href="/assets/Partials-BNBtCjuT.js"><link rel="prefetch" href="/assets/logs-B5n0U7tB.js"><link rel="prefetch" href="/assets/link-external-DUhCSKNm.js"><link rel="prefetch" href="/assets/NumberBox-D2A7ENHb.js"><link rel="prefetch" href="/assets/Infobox-Bai0JtFs.js"><link rel="prefetch" href="/assets/WizardFooter-dNDpuero.js"><link rel="prefetch" href="/assets/Wizard-DIllc07n.js"><link rel="prefetch" href="/assets/ProviderRadio-26EB5tY-.js"><link rel="prefetch" href="/assets/persist-SSTTV5q0.js"><link rel="prefetch" href="/assets/ComponentBadge-BgGnzcLu.js"><link rel="prefetch" href="/assets/ProviderIcon-kkODO9tx.js"><link rel="prefetch" href="/assets/sharedSchema-BACERDat.js"><link rel="prefetch" href="/assets/index-8uhUi12k.js"><link rel="prefetch" href="/assets/stack-detail-query-ihiJr6nq.js"><link rel="prefetch" href="/assets/ComponentIcon-B_7Y_oV-.js"><link rel="prefetch" href="/assets/layout-h3cbx8WZ.js"><link rel="prefetch" href="/assets/login-command-CkqxPtV3.js"><link rel="prefetch" href="/assets/CodeSnippet-Di-loaZu.js"><link rel="prefetch" href="/assets/zod-C0xYeTvL.js"><link rel="prefetch" href="/assets/index.esm-D7jFlf5N.js"><link rel="prefetch" href="/assets/ProCta-BoTLdAdV.js"><link rel="prefetch" href="/assets/check-DK77doTf.js"><link rel="prefetch" href="/assets/check-circle-mvyzYvIW.js"><link rel="prefetch" href="/assets/form-schemas-BJN_25Ua.js"><link rel="prefetch" href="/assets/EmptyState-M1jafpg6.js"><link rel="prefetch" href="/assets/UsageReason-C8sD2bOU.js"><link rel="prefetch" href="/assets/gcp-CHNvgEss.js"><link rel="prefetch" href="/assets/kubernetes-D6OUjwSK.js"><link rel="prefetch" href="/assets/rocket-Cf-B-XOR.js"><link rel="prefetch" href="/assets/UpdatePasswordSchemas-p3RX0P-Q.js"><link rel="prefetch" href="/assets/chevron-right-double-uNWbJT-C.js"><link rel="prefetch" href="/assets/plus-COjQg3AG.js"><link rel="prefetch" href="/assets/chevron-down-A-rmltmI.js"><link rel="prefetch" href="/assets/Error-vBjUYjb-.js"><link rel="prefetch" href="/assets/Helpbox-Dt3q7NGd.js"><link rel="prefetch" href="/assets/help-DyMolRxD.js"><link rel="prefetch" href="/assets/Tick-ay3Bgtro.js"><link rel="prefetch" href="/assets/file-text-BdxZdjP_.js"><link rel="prefetch" href="/assets/package-D1Mhqeh8.js"><link rel="prefetch" href="/assets/page-DHnkTzqs.js"><link rel="prefetch" href="/assets/page-B7Aj2XbV.js"><link rel="prefetch" href="/assets/ProBadge-3vtouJQf.js"><link rel="prefetch" href="/assets/page-DP2Ed-2m.js"><link rel="prefetch" href="/assets/page-RV8wpZ_4.js"><link rel="prefetch" href="/assets/page-Ci_n_x3a.js"><link rel="prefetch" href="/assets/404-D4aYbspS.js"><link rel="prefetch" href="/assets/CsvVizualization-CDrjL6bW.js"><link rel="prefetch" href="/assets/MarkdownVisualization-URCyUPcZ.js"></head>
|
14
|
+
<link rel="stylesheet" crossorigin href="/assets/index-CzX3ZYlI.css">
|
15
|
+
<link rel="prefetch" href="/assets/cloud-squares-DeRLMopf.svg"><link rel="prefetch" href="/assets/inter-cyrillic-ext-400-normal-Dc4VJyIJ.woff2"><link rel="prefetch" href="/assets/inter-cyrillic-400-normal-BLGc9T1a.woff2"><link rel="prefetch" href="/assets/inter-greek-ext-400-normal-Bput3-QP.woff2"><link rel="prefetch" href="/assets/inter-greek-400-normal-DxZsaF_h.woff2"><link rel="prefetch" href="/assets/inter-vietnamese-400-normal-DMkecbls.woff2"><link rel="prefetch" href="/assets/inter-latin-ext-400-normal-hnt3BR84.woff2"><link rel="prefetch" href="/assets/inter-latin-400-normal-BOOGhInR.woff2"><link rel="prefetch" href="/assets/inter-cyrillic-ext-500-normal-BShVwWPj.woff2"><link rel="prefetch" href="/assets/inter-cyrillic-500-normal-D4Vwzodn.woff2"><link rel="prefetch" href="/assets/inter-greek-ext-500-normal-B6guLgqG.woff2"><link rel="prefetch" href="/assets/inter-greek-500-normal-CeQXL5ds.woff2"><link rel="prefetch" href="/assets/inter-vietnamese-500-normal-DOriooB6.woff2"><link rel="prefetch" href="/assets/inter-latin-ext-500-normal-CIS2RHJS.woff2"><link rel="prefetch" href="/assets/inter-latin-500-normal-D2bGa7uu.woff2"><link rel="prefetch" href="/assets/inter-cyrillic-ext-600-normal-CaqZN2hq.woff2"><link rel="prefetch" href="/assets/inter-cyrillic-600-normal-BGBWG807.woff2"><link rel="prefetch" href="/assets/inter-greek-ext-600-normal-Cnui8OiR.woff2"><link rel="prefetch" href="/assets/inter-greek-600-normal-Dhlb-90d.woff2"><link rel="prefetch" href="/assets/inter-vietnamese-600-normal-Cc8MFFhd.woff2"><link rel="prefetch" href="/assets/inter-latin-ext-600-normal-BnYJhD27.woff2"><link rel="prefetch" href="/assets/inter-latin-600-normal-D273HNI0.woff2"><link rel="prefetch" href="/assets/inter-cyrillic-ext-400-normal-BPnxn4xp.woff"><link rel="prefetch" href="/assets/inter-cyrillic-400-normal-ZzOtrSSW.woff"><link rel="prefetch" href="/assets/inter-greek-ext-400-normal-DCpCPQOf.woff"><link rel="prefetch" href="/assets/inter-greek-400-normal-BZzXV7-1.woff"><link rel="prefetch" href="/assets/inter-vietnamese-400-normal-BUNmGMP1.woff"><link rel="prefetch" href="/assets/inter-latin-ext-400-normal-C1t-h-pH.woff"><link rel="prefetch" href="/assets/inter-latin-400-normal-gitzw0hO.woff"><link rel="prefetch" href="/assets/inter-cyrillic-ext-500-normal-CUiC4oBV.woff"><link rel="prefetch" href="/assets/inter-cyrillic-500-normal-DH2hs3aW.woff"><link rel="prefetch" href="/assets/inter-greek-ext-500-normal-M2hEX8vc.woff"><link rel="prefetch" href="/assets/inter-greek-500-normal-d_eO-yCQ.woff"><link rel="prefetch" href="/assets/inter-vietnamese-500-normal-DQPw2Hwd.woff"><link rel="prefetch" href="/assets/inter-latin-ext-500-normal-UMdmhHu2.woff"><link rel="prefetch" href="/assets/inter-latin-500-normal-deR1Tlfd.woff"><link rel="prefetch" href="/assets/inter-cyrillic-600-normal-BuzJQFbW.woff"><link rel="prefetch" href="/assets/inter-cyrillic-ext-600-normal-Bt9VVOA-.woff"><link rel="prefetch" href="/assets/inter-greek-ext-600-normal-C9WLioJ8.woff"><link rel="prefetch" href="/assets/inter-greek-600-normal-CwicyhtI.woff"><link rel="prefetch" href="/assets/inter-vietnamese-600-normal-Cm6aH8_k.woff"><link rel="prefetch" href="/assets/inter-latin-ext-600-normal-CAF0vJDd.woff"><link rel="prefetch" href="/assets/inter-latin-600-normal-B5cFAncS.woff"><link rel="prefetch" href="/assets/mcp-Cb1aMeoq.webp"><link rel="prefetch" href="/assets/acp-DOsXjFc7.webp"><link rel="prefetch" href="/assets/settings_preview-0JLrRgHP.webp"><link rel="prefetch" href="/assets/upgrade-form-CwRHBuXB.webp"><link rel="prefetch" href="/assets/connectors-video-C9qY4syJ.svg"><link rel="prefetch" href="/assets/repos-video-D8kpu60k.svg"><link rel="prefetch" href="/assets/tour-cover-BYfeen6M.webp"><link rel="prefetch" href="/assets/adam-e-y0WnB_.webp"><link rel="prefetch" href="/assets/alex-DcCuDHPg.webp"><link rel="prefetch" href="/assets/baris-C0ZrZ10g.webp"><link rel="prefetch" href="/assets/hamza-NKKOZz1I.webp"><link rel="prefetch" href="/assets/stefan-B08Ftbba.webp"><link rel="prefetch" href="/assets/templates-1S_8WeSK.webp"><link rel="prefetch" href="/assets/flyte-Cj-xy_8I.svg"><link rel="prefetch" href="/assets/metaflow-weOkWNyT.svg"><link rel="prefetch" href="/assets/CodeSnippet-CK5CxKct.css"><link rel="prefetch" href="/assets/page-Mabsn4QJ.js"><link rel="prefetch" href="/assets/page-CSwZxZMQ.js"><link rel="prefetch" href="/assets/page-k-Wxh9L_.js"><link rel="prefetch" href="/assets/page-DwfGTiVs.js"><link rel="prefetch" href="/assets/page-ZfTtFicG.js"><link rel="prefetch" href="/assets/SetPassword-DR-EiLI5.js"><link rel="prefetch" href="/assets/login-mutation-CXc-Klim.js"><link rel="prefetch" href="/assets/page-WdRrlNt_.js"><link rel="prefetch" href="/assets/page-C05Jw4M2.js"><link rel="prefetch" href="/assets/page-DL8a4_lg.js"><link rel="prefetch" href="/assets/not-found-olRU3fnu.js"><link rel="prefetch" href="/assets/page-BPtvu74G.js"><link rel="prefetch" href="/assets/page-L84ig6HB.js"><link rel="prefetch" href="/assets/PasswordChecker-lYTOtNom.js"><link rel="prefetch" href="/assets/tick-circle-m94Aa6Zt.js"><link rel="prefetch" href="/assets/page-Ct2FUYuR.js"><link rel="prefetch" href="/assets/page-CYrJbk7P.js"><link rel="prefetch" href="/assets/page-C9WLk0X-.js"><link rel="prefetch" href="/assets/docker-BuDBFEDL.js"><link rel="prefetch" href="/assets/page-7keIM1V3.js"><link rel="prefetch" href="/assets/Commands-DGbAvMDk.js"><link rel="prefetch" href="/assets/page-BTIuG0ki.js"><link rel="prefetch" href="/assets/react-error-boundary.esm-fyoUBS25.js"><link rel="prefetch" href="/assets/page-B31neFwG.js"><link rel="prefetch" href="/assets/code-snippets-CqONne41.js"><link rel="prefetch" href="/assets/page-Dd_Yq-Uf.js"><link rel="prefetch" href="/assets/SecretTooltip-CePCL8kd.js"><link rel="prefetch" href="/assets/page-DMhYn1cF.js"><link rel="prefetch" href="/assets/update-server-settings-mutation-DwMM1LJz.js"><link rel="prefetch" href="/assets/page-Ce0cqLo3.js"><link rel="prefetch" href="/assets/page-BNgVExjN.js"><link rel="prefetch" href="/assets/dates-3pMLCNrD.js"><link rel="prefetch" href="/assets/key-icon-DO4DPJHZ.js"><link rel="prefetch" href="/assets/service-BQ9KIhls.js"><link rel="prefetch" href="/assets/page-PfhAnvq4.js"><link rel="prefetch" href="/assets/page-y-zV4n0c.js"><link rel="prefetch" href="/assets/RunsBody-W4WHf-sq.js"><link rel="prefetch" href="/assets/RunSelector-BLuBYNJt.js"><link rel="prefetch" href="/assets/delete-run-DlSLEl5T.js"><link rel="prefetch" href="/assets/DeleteAlertDialog-DVvXt-S6.js"><link rel="prefetch" href="/assets/Tabs-DxQ8PDOD.js"><link rel="prefetch" href="/assets/all-pipeline-runs-query-BGASHYtF.js"><link rel="prefetch" href="/assets/NestedCollapsible-Dor-bi98.js"><link rel="prefetch" href="/assets/ExecutionStatus-XrvT2r65.js"><link rel="prefetch" href="/assets/page-C28a7K8h.js"><link rel="prefetch" href="/assets/page-CgNsEkw-.js"><link rel="prefetch" href="/assets/page-D8G2B3Bu.js"><link rel="prefetch" href="/assets/StackList-CgmN5H-i.js"><link rel="prefetch" href="/assets/DialogItem-BHWf3sIB.js"><link rel="prefetch" href="/assets/AlertDialogDropdownItem-BG7-Ki1L.js"><link rel="prefetch" href="/assets/CollapsibleCard-D20FtrzC.js"><link rel="prefetch" href="/assets/refresh-CM5T3QeU.js"><link rel="prefetch" href="/assets/SearchField-D-h6jXyg.js"><link rel="prefetch" href="/assets/page-B3zo4KYS.js"><link rel="prefetch" href="/assets/code-browser-j2EpcxIA.js"><link rel="prefetch" href="/assets/clock-CPA5cYxq.js"><link rel="prefetch" href="/assets/page-BcQzleH6.js"><link rel="prefetch" href="/assets/page-BN3MHq1a.js"><link rel="prefetch" href="/assets/flavor-select-BnPxvQDN.js"><link rel="prefetch" href="/assets/constants-DP3ZEnXH.js"><link rel="prefetch" href="/assets/arrow-left-CwgF2MEM.js"><link rel="prefetch" href="/assets/configuration-form-BtI2Y4eX.js"><link rel="prefetch" href="/assets/terminal-square-DMtel8mb.js"><link rel="prefetch" href="/assets/index-CFESYpe4.js"><link rel="prefetch" href="/assets/InlineAvatar-Cfz4WSLK.js"><link rel="prefetch" href="/assets/DisplayDate-CYVBBSgr.js"><link rel="prefetch" href="/assets/index-DR30v9MZ.js"><link rel="prefetch" href="/assets/page-cqJDDDeK.js"><link rel="prefetch" href="/assets/Lock-DW-0_M0o.js"><link rel="prefetch" href="/assets/components-Br2ezRib.js"><link rel="prefetch" href="/assets/dots-horizontal-BGRJCPCs.js"><link rel="prefetch" href="/assets/create-stack-BJ6x5rzj.js"><link rel="prefetch" href="/assets/index-CmLcvK2z.js"><link rel="prefetch" href="/assets/type-guards-CaeD8wHO.js"><link rel="prefetch" href="/assets/trash-BWSZ7NRK.js"><link rel="prefetch" href="/assets/page-DfSvqT8g.js"><link rel="prefetch" href="/assets/persist-UUym702q.js"><link rel="prefetch" href="/assets/Partials-DQJFw1yW.js"><link rel="prefetch" href="/assets/logs-B5n0U7tB.js"><link rel="prefetch" href="/assets/link-external-DUhCSKNm.js"><link rel="prefetch" href="/assets/NumberBox-D2A7ENHb.js"><link rel="prefetch" href="/assets/Infobox-D9k5TFH4.js"><link rel="prefetch" href="/assets/WizardFooter-CFBHFZas.js"><link rel="prefetch" href="/assets/Wizard-CMI6Ksgz.js"><link rel="prefetch" href="/assets/ProviderRadio-BVDA-fAr.js"><link rel="prefetch" href="/assets/persist-D87V82eO.js"><link rel="prefetch" href="/assets/ComponentBadge-DKw7Gndh.js"><link rel="prefetch" href="/assets/ProviderIcon-DLo7t1lo.js"><link rel="prefetch" href="/assets/sharedSchema-Bse2agAf.js"><link rel="prefetch" href="/assets/index-CrhdX_qG.js"><link rel="prefetch" href="/assets/stack-detail-query-BAcZJrN3.js"><link rel="prefetch" href="/assets/ComponentIcon-ils7uNAk.js"><link rel="prefetch" href="/assets/layout-h3cbx8WZ.js"><link rel="prefetch" href="/assets/login-command-CkqxPtV3.js"><link rel="prefetch" href="/assets/CodeSnippet-CvI6D0wx.js"><link rel="prefetch" href="/assets/zod-C0xYeTvL.js"><link rel="prefetch" href="/assets/index.esm-D7jFlf5N.js"><link rel="prefetch" href="/assets/ProCta-EYoV9CvK.js"><link rel="prefetch" href="/assets/check-DK77doTf.js"><link rel="prefetch" href="/assets/check-circle-mvyzYvIW.js"><link rel="prefetch" href="/assets/form-schemas-CbvoEUHr.js"><link rel="prefetch" href="/assets/EmptyState-M1jafpg6.js"><link rel="prefetch" href="/assets/UsageReason-DjI5qMje.js"><link rel="prefetch" href="/assets/gcp-CHNvgEss.js"><link rel="prefetch" href="/assets/kubernetes-D6OUjwSK.js"><link rel="prefetch" href="/assets/rocket-Cf-B-XOR.js"><link rel="prefetch" href="/assets/UpdatePasswordSchemas-DbFEaezI.js"><link rel="prefetch" href="/assets/chevron-right-double-uNWbJT-C.js"><link rel="prefetch" href="/assets/plus-COjQg3AG.js"><link rel="prefetch" href="/assets/chevron-down-A-rmltmI.js"><link rel="prefetch" href="/assets/Error-BWaXP0VK.js"><link rel="prefetch" href="/assets/Helpbox-iE1xLmiZ.js"><link rel="prefetch" href="/assets/help-DyMolRxD.js"><link rel="prefetch" href="/assets/Tick-CEsT3HPR.js"><link rel="prefetch" href="/assets/file-text-BdxZdjP_.js"><link rel="prefetch" href="/assets/package-D1Mhqeh8.js"><link rel="prefetch" href="/assets/page-DtvTleaT.js"><link rel="prefetch" href="/assets/page-Dt6ANUTx.js"><link rel="prefetch" href="/assets/ProBadge-Cp4hb1YT.js"><link rel="prefetch" href="/assets/page-P04L5cm9.js"><link rel="prefetch" href="/assets/page-CINMx64X.js"><link rel="prefetch" href="/assets/page-JgomSTDc.js"><link rel="prefetch" href="/assets/404-_AtuLtaX.js"><link rel="prefetch" href="/assets/CsvVizualization-DVN541XF.js"><link rel="prefetch" href="/assets/MarkdownVisualization-URCyUPcZ.js"></head>
|
16
16
|
<body>
|
17
17
|
<div id="root"></div>
|
18
18
|
</body>
|
@@ -15,47 +15,44 @@
|
|
15
15
|
|
16
16
|
from uuid import UUID
|
17
17
|
|
18
|
-
from zenml.zen_server.rbac.models import ResourceType
|
19
18
|
from zenml.zen_server.utils import feature_gate, server_config
|
20
19
|
|
21
20
|
|
22
|
-
def check_entitlement(
|
21
|
+
def check_entitlement(feature: str) -> None:
|
23
22
|
"""Queries the feature gate to see if the operation falls within the Pro workspaces entitlements.
|
24
23
|
|
25
24
|
Raises an exception if the user is not entitled to create an instance of the
|
26
25
|
resource. Otherwise, simply returns.
|
27
26
|
|
28
27
|
Args:
|
29
|
-
|
28
|
+
feature: The feature to check for.
|
30
29
|
"""
|
31
30
|
if not server_config().feature_gate_enabled:
|
32
31
|
return
|
33
|
-
return feature_gate().check_entitlement(
|
32
|
+
return feature_gate().check_entitlement(feature=feature)
|
34
33
|
|
35
34
|
|
36
|
-
def report_usage(
|
35
|
+
def report_usage(feature: str, resource_id: UUID) -> None:
|
37
36
|
"""Reports the creation/usage of a feature/resource.
|
38
37
|
|
39
38
|
Args:
|
40
|
-
|
39
|
+
feature: The feature to report a usage for.
|
41
40
|
resource_id: ID of the resource that was created.
|
42
41
|
"""
|
43
42
|
if not server_config().feature_gate_enabled:
|
44
43
|
return
|
45
|
-
feature_gate().report_event(
|
46
|
-
resource=resource_type, resource_id=resource_id
|
47
|
-
)
|
44
|
+
feature_gate().report_event(feature=feature, resource_id=resource_id)
|
48
45
|
|
49
46
|
|
50
|
-
def report_decrement(
|
47
|
+
def report_decrement(feature: str, resource_id: UUID) -> None:
|
51
48
|
"""Reports the deletion/deactivation of a feature/resource.
|
52
49
|
|
53
50
|
Args:
|
54
|
-
|
51
|
+
feature: The feature to report a decrement in count for.
|
55
52
|
resource_id: ID of the resource that was deleted.
|
56
53
|
"""
|
57
54
|
if not server_config().feature_gate_enabled:
|
58
55
|
return
|
59
56
|
feature_gate().report_event(
|
60
|
-
|
57
|
+
feature=feature, resource_id=resource_id, is_decrement=True
|
61
58
|
)
|
@@ -16,18 +16,16 @@
|
|
16
16
|
from abc import ABC, abstractmethod
|
17
17
|
from uuid import UUID
|
18
18
|
|
19
|
-
from zenml.zen_server.rbac.models import ResourceType
|
20
|
-
|
21
19
|
|
22
20
|
class FeatureGateInterface(ABC):
|
23
21
|
"""Feature gate interface definition."""
|
24
22
|
|
25
23
|
@abstractmethod
|
26
|
-
def check_entitlement(self,
|
24
|
+
def check_entitlement(self, feature: str) -> None:
|
27
25
|
"""Checks if a user is entitled to create a resource.
|
28
26
|
|
29
27
|
Args:
|
30
|
-
|
28
|
+
feature: The feature the user wants to use.
|
31
29
|
|
32
30
|
Raises:
|
33
31
|
UpgradeRequiredError in case a subscription limit is reached
|
@@ -36,14 +34,14 @@ class FeatureGateInterface(ABC):
|
|
36
34
|
@abstractmethod
|
37
35
|
def report_event(
|
38
36
|
self,
|
39
|
-
|
37
|
+
feature: str,
|
40
38
|
resource_id: UUID,
|
41
39
|
is_decrement: bool = False,
|
42
40
|
) -> None:
|
43
41
|
"""Reports the usage of a feature to the aggregator backend.
|
44
42
|
|
45
43
|
Args:
|
46
|
-
|
44
|
+
feature: The feature the user used.
|
47
45
|
resource_id: ID of the resource that was created/deleted.
|
48
46
|
is_decrement: In case this event reports an actual decrement of usage
|
49
47
|
"""
|
@@ -25,7 +25,6 @@ from zenml.zen_server.cloud_utils import cloud_connection
|
|
25
25
|
from zenml.zen_server.feature_gate.feature_gate_interface import (
|
26
26
|
FeatureGateInterface,
|
27
27
|
)
|
28
|
-
from zenml.zen_server.rbac.models import ResourceType
|
29
28
|
|
30
29
|
logger = get_logger(__name__)
|
31
30
|
|
@@ -47,7 +46,7 @@ class RawUsageEvent(BaseModel):
|
|
47
46
|
organization_id: str = Field(
|
48
47
|
description="The organization that this usage can be attributed to.",
|
49
48
|
)
|
50
|
-
feature:
|
49
|
+
feature: str = Field(
|
51
50
|
description="The feature whose usage is being reported.",
|
52
51
|
)
|
53
52
|
total: int = Field(
|
@@ -66,22 +65,22 @@ class ZenMLCloudFeatureGateInterface(FeatureGateInterface):
|
|
66
65
|
"""Initialize the object."""
|
67
66
|
self._connection = cloud_connection()
|
68
67
|
|
69
|
-
def check_entitlement(self,
|
68
|
+
def check_entitlement(self, feature: str) -> None:
|
70
69
|
"""Checks if a user is entitled to create a resource.
|
71
70
|
|
72
71
|
Args:
|
73
|
-
|
72
|
+
feature: The feature the user wants to use.
|
74
73
|
|
75
74
|
Raises:
|
76
75
|
SubscriptionUpgradeRequiredError: in case a subscription limit is reached
|
77
76
|
"""
|
78
77
|
try:
|
79
78
|
response = self._connection.get(
|
80
|
-
endpoint=ENTITLEMENT_ENDPOINT + "/" +
|
79
|
+
endpoint=ENTITLEMENT_ENDPOINT + "/" + feature, params=None
|
81
80
|
)
|
82
81
|
except SubscriptionUpgradeRequiredError:
|
83
82
|
raise SubscriptionUpgradeRequiredError(
|
84
|
-
f"Your subscription reached its `{
|
83
|
+
f"Your subscription reached its `{feature}` limit. Please "
|
85
84
|
f"upgrade your subscription or reach out to us."
|
86
85
|
)
|
87
86
|
|
@@ -94,20 +93,20 @@ class ZenMLCloudFeatureGateInterface(FeatureGateInterface):
|
|
94
93
|
|
95
94
|
def report_event(
|
96
95
|
self,
|
97
|
-
|
96
|
+
feature: str,
|
98
97
|
resource_id: UUID,
|
99
98
|
is_decrement: bool = False,
|
100
99
|
) -> None:
|
101
100
|
"""Reports the usage of a feature to the aggregator backend.
|
102
101
|
|
103
102
|
Args:
|
104
|
-
|
103
|
+
feature: The feature the user used.
|
105
104
|
resource_id: ID of the resource that was created/deleted.
|
106
105
|
is_decrement: In case this event reports an actual decrement of usage
|
107
106
|
"""
|
108
107
|
data = RawUsageEvent(
|
109
108
|
organization_id=ORGANIZATION_ID,
|
110
|
-
feature=
|
109
|
+
feature=feature,
|
111
110
|
total=1 if not is_decrement else -1,
|
112
111
|
metadata={
|
113
112
|
"workspace_id": str(server_config.get_external_server_id()),
|
@@ -182,7 +182,7 @@ def verify_permissions_and_get_or_create_entity(
|
|
182
182
|
def _pre_creation_hook() -> None:
|
183
183
|
verify_permission_for_model(model=request_model, action=Action.CREATE)
|
184
184
|
if resource_type and needs_usage_increment:
|
185
|
-
check_entitlement(
|
185
|
+
check_entitlement(feature=resource_type)
|
186
186
|
|
187
187
|
model, created = get_or_create_method(request_model, _pre_creation_hook)
|
188
188
|
|
@@ -67,7 +67,7 @@ class RBACSqlZenStore(SqlZenStore):
|
|
67
67
|
action=Action.CREATE,
|
68
68
|
project_id=model_request.project,
|
69
69
|
)
|
70
|
-
check_entitlement(
|
70
|
+
check_entitlement(feature=ResourceType.MODEL)
|
71
71
|
except Exception as e:
|
72
72
|
allow_model_creation = False
|
73
73
|
error = e
|
@@ -92,7 +92,7 @@ class RBACSqlZenStore(SqlZenStore):
|
|
92
92
|
|
93
93
|
if created:
|
94
94
|
report_usage(
|
95
|
-
|
95
|
+
feature=ResourceType.MODEL, resource_id=model_response.id
|
96
96
|
)
|
97
97
|
else:
|
98
98
|
verify_permission_for_model(model_response, action=Action.READ)
|
@@ -25,7 +25,12 @@ from fastapi import (
|
|
25
25
|
from zenml.analytics.enums import AnalyticsEvent
|
26
26
|
from zenml.analytics.utils import track_handler
|
27
27
|
from zenml.config.pipeline_run_configuration import PipelineRunConfiguration
|
28
|
-
from zenml.constants import
|
28
|
+
from zenml.constants import (
|
29
|
+
API,
|
30
|
+
RUN_TEMPLATE_TRIGGERS_FEATURE_NAME,
|
31
|
+
RUN_TEMPLATES,
|
32
|
+
VERSION_1,
|
33
|
+
)
|
29
34
|
from zenml.models import (
|
30
35
|
Page,
|
31
36
|
PipelineRunResponse,
|
@@ -36,6 +41,9 @@ from zenml.models import (
|
|
36
41
|
)
|
37
42
|
from zenml.zen_server.auth import AuthContext, authorize
|
38
43
|
from zenml.zen_server.exceptions import error_response
|
44
|
+
from zenml.zen_server.feature_gate.endpoint_utils import (
|
45
|
+
check_entitlement,
|
46
|
+
)
|
39
47
|
from zenml.zen_server.rbac.endpoint_utils import (
|
40
48
|
verify_permissions_and_create_entity,
|
41
49
|
verify_permissions_and_delete_entity,
|
@@ -269,6 +277,7 @@ if server_config().workload_manager_enabled:
|
|
269
277
|
action=Action.CREATE,
|
270
278
|
project_id=template.project.id,
|
271
279
|
)
|
280
|
+
check_entitlement(feature=RUN_TEMPLATE_TRIGGERS_FEATURE_NAME)
|
272
281
|
|
273
282
|
return run_template(
|
274
283
|
template=template,
|
@@ -24,6 +24,7 @@ from zenml.constants import (
|
|
24
24
|
ENV_ZENML_RUNNER_IMAGE_DISABLE_UV,
|
25
25
|
ENV_ZENML_RUNNER_PARENT_IMAGE,
|
26
26
|
ENV_ZENML_RUNNER_POD_TIMEOUT,
|
27
|
+
RUN_TEMPLATE_TRIGGERS_FEATURE_NAME,
|
27
28
|
handle_bool_env_var,
|
28
29
|
handle_int_env_var,
|
29
30
|
)
|
@@ -49,7 +50,11 @@ from zenml.pipelines.run_utils import (
|
|
49
50
|
)
|
50
51
|
from zenml.stack.flavor import Flavor
|
51
52
|
from zenml.utils import pydantic_utils, requirements_utils, settings_utils
|
53
|
+
from zenml.utils.time_utils import utc_now
|
52
54
|
from zenml.zen_server.auth import AuthContext, generate_access_token
|
55
|
+
from zenml.zen_server.feature_gate.endpoint_utils import (
|
56
|
+
report_usage,
|
57
|
+
)
|
53
58
|
from zenml.zen_server.template_execution.runner_entrypoint_configuration import (
|
54
59
|
RunnerEntrypointConfiguration,
|
55
60
|
)
|
@@ -190,6 +195,11 @@ def run_template(
|
|
190
195
|
placeholder_run = create_placeholder_run(deployment=new_deployment)
|
191
196
|
assert placeholder_run
|
192
197
|
|
198
|
+
report_usage(
|
199
|
+
feature=RUN_TEMPLATE_TRIGGERS_FEATURE_NAME,
|
200
|
+
resource_id=placeholder_run.id,
|
201
|
+
)
|
202
|
+
|
193
203
|
# We create an API token scoped to the pipeline run that never expires
|
194
204
|
api_token = generate_access_token(
|
195
205
|
user_id=auth_context.user.id,
|
@@ -300,7 +310,8 @@ def run_template(
|
|
300
310
|
zen_store().update_run(
|
301
311
|
run_id=placeholder_run.id,
|
302
312
|
run_update=PipelineRunUpdate(
|
303
|
-
status=ExecutionStatus.FAILED
|
313
|
+
status=ExecutionStatus.FAILED,
|
314
|
+
end_time=utc_now(),
|
304
315
|
),
|
305
316
|
)
|
306
317
|
raise
|
@@ -0,0 +1,23 @@
|
|
1
|
+
"""Release [0.82.1].
|
2
|
+
|
3
|
+
Revision ID: 0.82.1
|
4
|
+
Revises: 0.82.0
|
5
|
+
Create Date: 2025-05-14 07:47:30.641830
|
6
|
+
|
7
|
+
"""
|
8
|
+
|
9
|
+
# revision identifiers, used by Alembic.
|
10
|
+
revision = "0.82.1"
|
11
|
+
down_revision = "0.82.0"
|
12
|
+
branch_labels = None
|
13
|
+
depends_on = None
|
14
|
+
|
15
|
+
|
16
|
+
def upgrade() -> None:
|
17
|
+
"""Upgrade database schema and/or data, creating a new revision."""
|
18
|
+
pass
|
19
|
+
|
20
|
+
|
21
|
+
def downgrade() -> None:
|
22
|
+
"""Downgrade database schema and/or data back to the previous revision."""
|
23
|
+
pass
|
@@ -11354,13 +11354,10 @@ class SqlZenStore(BaseZenStore):
|
|
11354
11354
|
except EntityExistsError:
|
11355
11355
|
if isinstance(tag, tag_utils.Tag):
|
11356
11356
|
tag_schema = self._get_tag_schema(tag.name, session)
|
11357
|
-
if (
|
11358
|
-
tag.exclusive is not None
|
11359
|
-
and tag.exclusive != tag_schema.exclusive
|
11360
|
-
):
|
11357
|
+
if bool(tag.exclusive) != tag_schema.exclusive:
|
11361
11358
|
raise ValueError(
|
11362
|
-
f"Tag `{tag_schema.name}` has been defined as
|
11363
|
-
f"{'exclusive' if tag_schema.exclusive else 'non-exclusive'} "
|
11359
|
+
f"Tag `{tag_schema.name}` has been defined as "
|
11360
|
+
f"{'an exclusive' if tag_schema.exclusive else 'a non-exclusive'} "
|
11364
11361
|
"tag. Please update it before attaching it to resources."
|
11365
11362
|
)
|
11366
11363
|
else:
|
{zenml_nightly-0.82.0.dev20250513.dist-info → zenml_nightly-0.82.1.dev20250517.dist-info}/METADATA
RENAMED
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.3
|
2
2
|
Name: zenml-nightly
|
3
|
-
Version: 0.82.
|
3
|
+
Version: 0.82.1.dev20250517
|
4
4
|
Summary: ZenML: Write production-ready ML code.
|
5
5
|
License: Apache-2.0
|
6
6
|
Keywords: machine learning,production,pipeline,mlops,devops
|
@@ -532,7 +532,7 @@ the Apache License Version 2.0.
|
|
532
532
|
<a href="https://github.com/zenml-io/zenml-projects">Projects Showcase</a>
|
533
533
|
<br />
|
534
534
|
<br />
|
535
|
-
🎉 Version 0.82.
|
535
|
+
🎉 Version 0.82.1 is out. Check out the release notes
|
536
536
|
<a href="https://github.com/zenml-io/zenml/releases">here</a>.
|
537
537
|
<br />
|
538
538
|
🖥️ Download our VS Code Extension <a href="https://marketplace.visualstudio.com/items?itemName=ZenML.zenml-vscode">here</a>.
|