diff --git a/go.sum b/go.sum index 2870a2c..4c7dd44 100644 --- a/go.sum +++ b/go.sum @@ -5,50 +5,20 @@ cloud.google.com/go/compute v1.15.1 h1:7UGq3QknM33pw5xATlpzeoomNxsacIVvTqTTvbfaj cloud.google.com/go/compute v1.15.1/go.mod h1:bjjoF/NtFUrkD/urWfdHaKuOPDR5nWIs63rR+SXhcpA= cloud.google.com/go/compute/metadata v0.2.3 h1:mg4jlk7mCAj6xXp9UJ4fjI9VUI5rubuGBW5aJ7UnBMY= cloud.google.com/go/compute/metadata v0.2.3/go.mod h1:VAV5nSsACxMJvgaAuX6Pk2AawlZn8kiOGuCv6gTkwuA= -cloud.google.com/go/firestore v1.1.0/go.mod h1:ulACoGHTpvq5r8rxGJ4ddJZBZqakUQqClKRT5SZwBmk= -cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= cuelang.org/go v0.5.0 h1:D6N0UgTGJCOxFKU8RU+qYvavKNsVc/+ZobmifStVJzU= cuelang.org/go v0.5.0/go.mod h1:okjJBHFQFer+a41sAe2SaGm1glWS8oEb6CmJvn5Zdws= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/toml v1.2.1 h1:9F2/+DoOYIOksmaJFPw1tGFy1eDnIJXg+UHjuD8lTak= +github.com/BurntSushi/toml v1.2.1/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= github.com/HdrHistogram/hdrhistogram-go v1.1.0/go.mod h1:yDgFjdqOqDEKOvasDdhWNXYg9BVp4O+o5f6V/ehm6Oo= github.com/HdrHistogram/hdrhistogram-go v1.1.2/go.mod h1:yDgFjdqOqDEKOvasDdhWNXYg9BVp4O+o5f6V/ehm6Oo= github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0= -<<<<<<< HEAD -github.com/Masterminds/goutils v1.1.1 h1:5nUrii3FMTL5diU80unEVvNevw1nH4+ZV4DSLVJLSYI= -github.com/Masterminds/goutils v1.1.1/go.mod h1:8cTjp+g8YejhMuvIA5y2vz3BpJxksy863GQaJW2MFNU= -github.com/Masterminds/semver v1.5.0 h1:H65muMkzWKEuNDnfl9d70GUjFniHKHRbFPGBuZ3QEww= -github.com/Masterminds/semver v1.5.0/go.mod h1:MB6lktGJrhw8PrUyiEoblNEGEQ+RzHPF078ddwwvV3Y= -github.com/Masterminds/semver/v3 v3.1.1 h1:hLg3sBzpNErnxhQtUy/mmLR2I9foDujNK030IGemrRc= -github.com/Masterminds/semver/v3 v3.1.1/go.mod h1:VPu/7SZ7ePZ3QOrcuXROw5FAcLl4a0cBrbBpGY/8hQs= -github.com/Masterminds/sprig v2.22.0+incompatible h1:z4yfnGrZ7netVz+0EDJ0Wi+5VZCSYp4Z0m2dk6cEM60= -github.com/Masterminds/sprig v2.22.0+incompatible/go.mod h1:y6hNFY5UBTIWBxnzTeuNhlNS5hqE0NB0E6fgfo2Br3o= -github.com/Microsoft/go-winio v0.5.2/go.mod h1:WpS1mjBmmwHBEWmogvA2mj8546UReBk4v8QkMxJ6pZY= -github.com/Microsoft/go-winio v0.6.0 h1:slsWYD/zyx7lCXoZVlvQrj0hPTM1HI4+v1sIda2yDvg= -github.com/Microsoft/go-winio v0.6.0/go.mod h1:cTAf44im0RAYeL23bpB+fzCyDH2MJiz2BO69KH/soAE= -github.com/Microsoft/hcsshim v0.9.6 h1:VwnDOgLeoi2du6dAznfmspNqTiwczvjv4K7NxuY9jsY= -github.com/Microsoft/hcsshim v0.9.6/go.mod h1:7pLA8lDk46WKDWlVsENo92gC0XFa8rbKfyFRBqxEbCc= -github.com/NYTimes/gziphandler v0.0.0-20170623195520-56545f4a5d46/go.mod h1:3wb06e3pkSAbeQ52E9H9iFoQsEEwGN64994WTCIhntQ= -======= ->>>>>>> 4a9a43c (Chore: refactor the cue engine with cuex) github.com/NYTimes/gziphandler v1.1.1 h1:ZUDjpQae29j0ryrS0u/B8HZfJBtBQHjqw2rQ2cqUQ3I= github.com/NYTimes/gziphandler v1.1.1/go.mod h1:n/CVRwUEOgIxrgPvAQhUUr9oeUtvrhMomdKFjzJNB0c= github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= -<<<<<<< HEAD -github.com/ProtonMail/go-crypto v0.0.0-20230217124315-7d5c6f04bbb8 h1:wPbRQzjjwFc0ih8puEVAOFGELsn1zoIIYdxvML7mDxA= -github.com/ProtonMail/go-crypto v0.0.0-20230217124315-7d5c6f04bbb8/go.mod h1:I0gYDMZ6Z5GRU7l58bNFSkPTFN6Yl12dsUlAZ8xy98g= -github.com/PuerkitoBio/purell v1.0.0/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= -github.com/PuerkitoBio/purell v1.1.0/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= -github.com/PuerkitoBio/purell v1.1.1/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= -github.com/PuerkitoBio/urlesc v0.0.0-20160726150825-5bd2802263f2/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= -github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= -github.com/Shopify/logrus-bugsnag v0.0.0-20171204204709-577dee27f20d h1:UrqY+r/OJnIp5u0s1SbQ8dVfLCZJsnvazdBP5hS4iRs= -github.com/Shopify/logrus-bugsnag v0.0.0-20171204204709-577dee27f20d/go.mod h1:HI8ITrYtUY+O+ZhtlqUnD8+KwNPOyugEhfP9fdUIaEQ= -======= ->>>>>>> 4a9a43c (Chore: refactor the cue engine with cuex) github.com/Shopify/sarama v1.19.0/go.mod h1:FVkBWblsNy7DGZRfXLU0O9RCGt5g3g3yEuWXgklEdEo= github.com/Shopify/toxiproxy v2.1.4+incompatible/go.mod h1:OXgGpZ6Cli1/URJOF1DMxUHB2q5Ap20/P/eIdh4G0pI= github.com/VividCortex/gohistogram v1.0.0/go.mod h1:Pf5mBqqDxYaXu3hDrrU+w6nw50o/4+TcAqDqk/vUH7g= @@ -84,24 +54,6 @@ github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6r github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= github.com/blang/semver/v4 v4.0.0 h1:1PFHFE6yCCTv8C1TeyNNarDzntLi7wMI5i/pzqYIsAM= github.com/blang/semver/v4 v4.0.0/go.mod h1:IbckMUScFkM3pff0VJDNKRiT6TG/YpiHIM2yvyW5YoQ= -<<<<<<< HEAD -github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869 h1:DDGfHa7BWjL4YnC6+E63dPcxHo2sUxDIu8g3QgEJdRY= -github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869/go.mod h1:Ekp36dRnpXw/yCqJaO+ZrUyxD+3VXMFFr56k5XYrpB4= -github.com/briandowns/spinner v1.11.1 h1:OixPqDEcX3juo5AjQZAnFPbeUA0jvkp2qzB5gOZJ/L0= -github.com/briandowns/spinner v1.11.1/go.mod h1:QOuQk7x+EaDASo80FEXwlwiA+j/PPIcX3FScO+3/ZPQ= -github.com/bshuster-repo/logrus-logstash-hook v1.0.0 h1:e+C0SB5R1pu//O4MQ3f9cFuPGoOVeF2fE4Og9otCc70= -github.com/bshuster-repo/logrus-logstash-hook v1.0.0/go.mod h1:zsTqEiSzDgAa/8GZR7E1qaXrhYNDKBYy5/dWPTIflbk= -github.com/buger/jsonparser v1.1.1 h1:2PnMjfWD7wBILjqQbt530v576A/cAbQvEW9gGIpYMUs= -github.com/buger/jsonparser v1.1.1/go.mod h1:6RYKKt7H4d4+iWqouImQ9R2FZql3VbhNgx27UK13J/0= -github.com/bugsnag/bugsnag-go v0.0.0-20141110184014-b1d153021fcd h1:rFt+Y/IK1aEZkEHchZRSq9OQbsSzIT/OrI8YFFmRIng= -github.com/bugsnag/bugsnag-go v0.0.0-20141110184014-b1d153021fcd/go.mod h1:2oa8nejYd4cQ/b0hMIopN0lCRxU0bueqREvZLWFrtK8= -github.com/bugsnag/osext v0.0.0-20130617224835-0dd3f918b21b h1:otBG+dV+YK+Soembjv71DPz3uX/V/6MMlSyD9JBQ6kQ= -github.com/bugsnag/osext v0.0.0-20130617224835-0dd3f918b21b/go.mod h1:obH5gd0BsqsP2LwDJ9aOkm/6J86V6lyAXCoQWGw3K50= -github.com/bugsnag/panicwrap v0.0.0-20151223152923-e2c28503fcd0 h1:nvj0OLI3YqYXer/kZD8Ri1aaunCxIEsOst1BVJswV0o= -github.com/bugsnag/panicwrap v0.0.0-20151223152923-e2c28503fcd0/go.mod h1:D/8v3kj0zr8ZAKg1AQ6crr+5VwKN5eIywRkfhyM/+dE= -github.com/bwesterb/go-ristretto v1.2.0/go.mod h1:fUIoIZaG73pV5biE2Blr2xEzDoMj7NFEuV9ekS419A0= -======= ->>>>>>> 4a9a43c (Chore: refactor the cue engine with cuex) github.com/casbin/casbin/v2 v2.37.0/go.mod h1:vByNa/Fchek0KZUgG5wEsl7iFsiviAYKRtgrQfcJqHg= github.com/cenkalti/backoff v2.2.1+incompatible h1:tNowT99t7UNflLxfYYSlKYsBpXdEet03Pg2g16Swow4= github.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= @@ -129,23 +81,6 @@ github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWH github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cockroachdb/apd/v2 v2.0.2 h1:weh8u7Cneje73dDh+2tEVLUvyBc89iwepWCD8b8034E= github.com/cockroachdb/apd/v2 v2.0.2/go.mod h1:DDxRlzC2lo3/vSlmSoS7JkqbbrARPuFOGr0B9pvN3Gw= -<<<<<<< HEAD -github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8= -github.com/cockroachdb/datadriven v0.0.0-20200714090401-bf6692d28da5/go.mod h1:h6jFvWxBdQXxjopDMZyH2UVceIRfR84bdzbkoKrsWNo= -github.com/cockroachdb/errors v1.2.4/go.mod h1:rQD95gz6FARkaKkQXUksEje/d9a6wBJoCr5oaCLELYA= -github.com/cockroachdb/logtags v0.0.0-20190617123548-eb05cc24525f/go.mod h1:i/u985jwjWRlyHXQbwatDASoW0RMlZ/3i9yJHE2xLkI= -github.com/containerd/cgroups v1.0.4 h1:jN/mbWBEaz+T1pi5OFtnkQ+8qnmEbAr1Oo1FRm5B0dA= -github.com/containerd/cgroups v1.0.4/go.mod h1:nLNQtsF7Sl2HxNebu77i1R0oDlhiTG+kO4JTrUzo6IA= -github.com/containerd/containerd v1.6.18 h1:qZbsLvmyu+Vlty0/Ex5xc0z2YtKpIsb5n45mAMI+2Ns= -github.com/containerd/containerd v1.6.18/go.mod h1:1RdCUu95+gc2v9t3IL+zIlpClSmew7/0YS8O5eQZrOw= -github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= -github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= -github.com/coreos/etcd v3.3.13+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= -github.com/coreos/go-etcd v2.0.0+incompatible/go.mod h1:Jez6KQU2B/sWsbdaef3ED8NzMklzPG4d5KIOhIy30Tk= -github.com/coreos/go-oidc v2.1.0+incompatible/go.mod h1:CgnwVTmzoESiwO9qyAFEMiHoZ1nMCKZlZ9V6mm3/LKc= -github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= -======= ->>>>>>> 4a9a43c (Chore: refactor the cue engine with cuex) github.com/coreos/go-semver v0.3.0 h1:wkHLiw0WNATZnSG7epLsujiMCgPAc9xhjJ4tgnAxmfM= github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= github.com/coreos/go-systemd/v22 v22.3.2 h1:D9/bQk5vlXQFZ6Kwuu6zaiXJ9oTPe68++AzAJc1DzSI= @@ -157,37 +92,6 @@ github.com/crossplane/crossplane-runtime v0.19.2/go.mod h1:OJQ1NxtQK2ZTRmvtnQPoy github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -<<<<<<< HEAD -github.com/deckarep/golang-set v1.8.0 h1:sk9/l/KqpunDwP7pSjUg0keiOOLEnOBHzykLrsPppp4= -github.com/deckarep/golang-set v1.8.0/go.mod h1:5nI87KwE7wgsBU1F4GKAw2Qod7p5kyS383rP6+o6qqo= -github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= -github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= -github.com/distribution/distribution/v3 v3.0.0-20220526142353-ffbd94cbe269 h1:hbCT8ZPPMqefiAWD2ZKjn7ypokIGViTvBBg/ExLSdCk= -github.com/distribution/distribution/v3 v3.0.0-20220526142353-ffbd94cbe269/go.mod h1:28YO/VJk9/64+sTGNuYaBjWxrXTPrj0C0XmgTIOjxX4= -github.com/docker/cli v20.10.20+incompatible h1:lWQbHSHUFs7KraSN2jOJK7zbMS2jNCHI4mt4xUFUVQ4= -github.com/docker/cli v20.10.20+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= -github.com/docker/distribution v2.8.2+incompatible h1:T3de5rq0dB1j30rp0sA2rER+m322EBzniBPB6ZIzuh8= -github.com/docker/distribution v2.8.2+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= -github.com/docker/docker v0.7.3-0.20190327010347-be7ac8be2ae0/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= -github.com/docker/docker v20.10.24+incompatible h1:Ugvxm7a8+Gz6vqQYQQ2W7GYq5EUPaAiuPgIfVyI3dYE= -github.com/docker/docker v20.10.24+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= -github.com/docker/docker-credential-helpers v0.7.0 h1:xtCHsjxogADNZcdv1pKUHXryefjlVRqWqIhk/uXJp0A= -github.com/docker/docker-credential-helpers v0.7.0/go.mod h1:rETQfLdHNT3foU5kuNkFR1R1V12OJRRO5lzt2D1b5X0= -github.com/docker/go-connections v0.4.0 h1:El9xVISelRB7BuFusrZozjnkIM5YnzCViNKohAFqRJQ= -github.com/docker/go-connections v0.4.0/go.mod h1:Gbd7IOopHjR8Iph03tsViu4nIes5XhDvyHbTtUxmeec= -github.com/docker/go-events v0.0.0-20190806004212-e31b211e4f1c h1:+pKlWGMw7gf6bQ+oDZB4KHQFypsfjYlq/C4rfL7D3g8= -github.com/docker/go-events v0.0.0-20190806004212-e31b211e4f1c/go.mod h1:Uw6UezgYA44ePAFQYUehOuCzmy5zmg/+nl2ZfMWGkpA= -github.com/docker/go-metrics v0.0.1 h1:AgB/0SvBxihN0X8OR4SjsblXkbMvalQ8cjmtKQ2rQV8= -github.com/docker/go-metrics v0.0.1/go.mod h1:cG1hvH2utMXtqgqqYE9plW6lDxS3/5ayHzueweSI3Vw= -github.com/docker/go-units v0.3.3/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= -github.com/docker/go-units v0.4.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= -github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4= -github.com/docker/go-units v0.5.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= -github.com/docker/libtrust v0.0.0-20160708172513-aabc10ec26b7 h1:UhxFibDNY/bfvqU5CAUmr9zpesgbU6SWc8/B4mflAE4= -github.com/docker/libtrust v0.0.0-20160708172513-aabc10ec26b7/go.mod h1:cyGadeNEkKy96OOhEzfZl+yxihPEzKnqJwvfuSUqbZE= -github.com/docker/spdystream v0.0.0-20160310174837-449fdfce4d96/go.mod h1:Qh8CwZgvJUkLughtfhJv5dyTYa91l1fOUCrgjqmcifM= -======= ->>>>>>> 4a9a43c (Chore: refactor the cue engine with cuex) github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815/go.mod h1:WwZ+bS3ebgob9U8Nd0kOddGdZWjyMGR8Wziv+TBNwSE= github.com/dustin/go-humanize v1.0.0 h1:VSnTsYCnlFHaM2/igO1h6X3HA71jcobQuxemgkq4zYo= github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= @@ -198,12 +102,7 @@ github.com/edsrzf/mmap-go v1.0.0/go.mod h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaB github.com/emicklei/go-restful/v3 v3.10.2 h1:hIovbnmBTLjHXkqEBUz3HGpXZdM7ZrE9fJIZIqlJLqE= github.com/emicklei/go-restful/v3 v3.10.2/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc= github.com/emicklei/proto v1.10.0 h1:pDGyFRVV5RvV+nkBK9iy3q67FBy9Xa7vwrOTE+g5aGw= -<<<<<<< HEAD github.com/emicklei/proto v1.10.0/go.mod h1:rn1FgRS/FANiZdD2djyH7TMA9jdRDcYQ9IEN9yvjX0A= -github.com/emirpasic/gods v1.18.1 h1:FXtiHYKDGKCW2KzwZKx0iC0PQmdlorYgdFG9jPXJ1Bc= -github.com/emirpasic/gods v1.18.1/go.mod h1:8tpGGwCnJ5H4r6BWwaV6OrWmMoPhUl5jm/FMNAnJvWQ= -======= ->>>>>>> 4a9a43c (Chore: refactor the cue engine with cuex) github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= @@ -224,6 +123,7 @@ github.com/felixge/httpsnoop v1.0.3 h1:s/nj+GCswXYzN5v2DpNMuMQYe+0DDwt5WVCU6CWBd github.com/felixge/httpsnoop v1.0.3/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= github.com/fogleman/gg v1.2.1-0.20190220221249-0403632d5b90/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k= github.com/form3tech-oss/jwt-go v3.2.3+incompatible h1:7ZaBxOI7TMoYBfyA3cQHErNNyAWIKUMIwqxEtgHOs5c= +github.com/form3tech-oss/jwt-go v3.2.3+incompatible/go.mod h1:pbq4aXjuKjdthFRnoDwaVPLA+WlJuPGy+QneDUgJi2k= github.com/franela/goblin v0.0.0-20210519012713-85d372ac71e2/go.mod h1:VzmDKDJVZI3aJmnRI9VjAn9nJ8qPPsN1fqzr9dqInIo= github.com/franela/goreq v0.0.0-20171204163338-bcd34c9993f8/go.mod h1:ZhphrRTfi2rbfLwlschooIH4+wKKDR4Pdxhh+TRoA20= github.com/frankban/quicktest v1.10.2/go.mod h1:K+q6oSqb0W0Ininfk863uOk1lMy69l/P6txr3mVT54s= @@ -267,13 +167,7 @@ github.com/go-stack/stack v1.8.1 h1:ntEHSVwIt7PNXNpgPmVfMrNhLtgjlmnZha2kOpuRiDw= github.com/go-stack/stack v1.8.1/go.mod h1:dcoOX6HbPZSZptuspn9bctJ+N/CnF5gGygcUP3XYfe4= github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE= github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 h1:tfuBGBXKqDEevZMzYi5KSi8KkcZtzBcTgAUUtapy0OI= -<<<<<<< HEAD github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572/go.mod h1:9Pwr4B2jHnOSGXyyzV8ROjYa2ojvAY6HCGYYfMoC3Ls= -github.com/go-test/deep v1.0.3/go.mod h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA= -github.com/go-test/deep v1.0.7 h1:/VSMRlnY/JSyqxQUzQLKVMAskpY/NZKFA5j2P+0pP2M= -github.com/go-test/deep v1.0.7/go.mod h1:QV8Hv/iy04NyLBxAdO9njL0iVPN1S4d/A3NVv1V36o8= -======= ->>>>>>> 4a9a43c (Chore: refactor the cue engine with cuex) github.com/go-zookeeper/zk v1.0.2/go.mod h1:nOB03cncLtlp4t+UAkGSV+9beXP/akpekBwL+UX1Qcw= github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= @@ -308,13 +202,9 @@ github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= -<<<<<<< HEAD -github.com/gomodule/redigo v1.8.2 h1:H5XSIre1MB5NbPYFp+i1NBbb5qN1W8Y8YAQoAYbkm8k= -github.com/gomodule/redigo v1.8.2/go.mod h1:P9dn9mFrCBvWhGE1wpxx6fgq7BAeLBk+UUUzlpkBYO0= -======= ->>>>>>> 4a9a43c (Chore: refactor the cue engine with cuex) github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v1.0.1 h1:gK4Kx5IaGY9CD5sPJ36FHiBJ6ZXl0kilRiiCj+jdYp4= +github.com/google/btree v1.0.1/go.mod h1:xXMiIv4Fb/0kKde4SpL7qlzvu5cMJDRkFDxJfI9uaxA= github.com/google/cel-go v0.12.6 h1:kjeKudqV0OygrAqA9fX6J55S8gj+Jre2tckIm5RoG4M= github.com/google/cel-go v0.12.6/go.mod h1:Jk7ljRzLBhkmiAwBoUxB1sZSCVBAzkqPF25olK/iRDw= github.com/google/gnostic v0.5.7-v3refs h1:FhTMOKj2VhjpouxvWJAV1TL304uMlb9zcDqkl6cEI54= @@ -336,16 +226,7 @@ github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/martian/v3 v3.2.1/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk= github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38 h1:yAJXTCF9TqKcTiHJAE8dj7HMvPfh66eeA2JYW7eFpSE= -<<<<<<< HEAD github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/safetext v0.0.0-20220905092116-b49f7bc46da2 h1:SJ+NtwL6QaZ21U+IrK7d0gGgpjGGvd2kz+FzTHVzdqI= -github.com/google/safetext v0.0.0-20220905092116-b49f7bc46da2/go.mod h1:Tv1PlzqC9t8wNnpPdctvtSUOPUUg4SHeE6vR1Ir2hmg= -github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 h1:El6M4kTTCOh6aBiKaUGG7oYTSPP8MxqL4YI3kZKwcP4= -github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510/go.mod h1:pupxD2MaaD3pAXIBCelhxNneeOaAeabZDe5s4K6zSpQ= -github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -======= ->>>>>>> 4a9a43c (Chore: refactor the cue engine with cuex) github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= @@ -354,25 +235,11 @@ github.com/googleapis/gax-go/v2 v2.1.0/go.mod h1:Q3nei7sK6ybPYH7twZdmQpAd1MKb7pf github.com/googleapis/gax-go/v2 v2.1.1/go.mod h1:hddJymUZASv3XPyGkUpKj8pPO47Rmb0eJc8R6ouapiM= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= github.com/gorilla/context v1.1.1/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51q0aT7Yg= -<<<<<<< HEAD -github.com/gorilla/handlers v1.5.1 h1:9lRY6j8DEeeBT10CvO9hGW0gmky0BprnvDI5vfhUHH4= -github.com/gorilla/handlers v1.5.1/go.mod h1:t8XrUpc4KVXb7HGyJ4/cEnwQiaxrX/hz1Zv/4g96P1Q= -======= ->>>>>>> 4a9a43c (Chore: refactor the cue engine with cuex) github.com/gorilla/mux v1.6.2/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= github.com/gorilla/websocket v1.5.0 h1:PPwGk2jz7EePpoHN/+ClbZu8SPxiqlu12wZP/3sWmnc= github.com/gorilla/websocket v1.5.0/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= -<<<<<<< HEAD -github.com/gosuri/uitable v0.0.4 h1:IG2xLKRvErL3uhY6e1BylFzG+aJiwQviDDTfOKeKTpY= -github.com/gosuri/uitable v0.0.4/go.mod h1:tKR86bXuXPZazfOTG1FIzvjIdXzd0mo4Vtn16vt0PJo= -github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= -github.com/gregjones/httpcache v0.0.0-20190611155906-901d90724c79 h1:+ngKgrYPPJrOjhax5N+uePQ0Fh1Z7PheYoUI/0nzkPA= -github.com/gregjones/httpcache v0.0.0-20190611155906-901d90724c79/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= -github.com/grpc-ecosystem/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= -github.com/grpc-ecosystem/go-grpc-middleware v1.0.1-0.20190118093823-f849b5445de4/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= -======= ->>>>>>> 4a9a43c (Chore: refactor the cue engine with cuex) github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 h1:+9834+KizmvFV7pXQGSXQTsaWhq2GjuNUt0aUU0YBYw= +github.com/grpc-ecosystem/go-grpc-middleware v1.3.0/go.mod h1:z0ButlSOZa5vEBq9m2m2hlwIgKw+rp3sdCBRoJY+30Y= github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 h1:Ovs26xHkKqVztRpIrF/92BcuyuQ/YW4NSIpoGtfXNho= github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= github.com/grpc-ecosystem/grpc-gateway v1.16.0 h1:gmcG1KaJ57LophUzW0Hy8NmPhnMZb4M0+kPpLofRdBo= @@ -419,6 +286,7 @@ github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJS github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo= github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U= github.com/jonboulle/clockwork v0.2.2 h1:UOGuzwb1PwsrDAObMuhUnj0p5ULPj8V/xJ7Kx9qUBdQ= +github.com/jonboulle/clockwork v0.2.2/go.mod h1:Pkfl5aHPm1nk2H9h0bjmnJD/BcgbGXUBGnn1kMkgxc8= github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY= github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y= github.com/jpillora/backoff v1.0.0 h1:uvFg412JmmHBHw7iwprIxkPMI+sGQ4kzOWsMeHnm2EA= @@ -446,13 +314,6 @@ github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfn github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= -<<<<<<< HEAD -github.com/kr/pty v1.1.4/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= -github.com/kr/pty v1.1.5/go.mod h1:9r2w37qlBe7rQ6e1fg1S/9xpWHSnaqNdHD3WcMdbPDA= -github.com/kr/pty v1.1.8 h1:AkaSdXYQOWeaO3neb8EM634ahkXXe3jYbVh/F9lq+GI= -github.com/kr/pty v1.1.8/go.mod h1:O1sed60cT9XZ5uDucP5qwvh+TE3NnUj51EiZO/lmSfw= -======= ->>>>>>> 4a9a43c (Chore: refactor the cue engine with cuex) github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= @@ -462,20 +323,6 @@ github.com/kubevela/pkg v1.8.1-0.20230522085329-7d5e1241a86d h1:QMmTg33lUZEfTz94 github.com/kubevela/pkg v1.8.1-0.20230522085329-7d5e1241a86d/go.mod h1:3ZWrl2+zb5ROdC2NJPPrL/4sun4M10wYfRP/9gF9WJE= github.com/lib/pq v1.10.7 h1:p7ZhMD+KsSRozJr34udlUrhboJwWAgCg34+/ZZNvZZw= github.com/lib/pq v1.10.7/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= -<<<<<<< HEAD -github.com/liggitt/tabwriter v0.0.0-20181228230101-89fcab3d43de h1:9TO3cAIGXtEhnIaL+V+BEER86oLrvS+kWobKpbJuye0= -github.com/liggitt/tabwriter v0.0.0-20181228230101-89fcab3d43de/go.mod h1:zAbeS9B/r2mtpb6U+EI2rYA5OAXxsYw6wTamcNW+zcE= -github.com/lithammer/dedent v1.1.0/go.mod h1:jrXYCQtgg0nJiN+StA2KgR7w6CiQNv9Fd/Z9BP0jIOc= -github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= -github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= -github.com/magiconair/properties v1.8.5/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60= -github.com/magiconair/properties v1.8.6 h1:5ibWZ6iY0NctNGWo87LalDlEZ6R41TqbbDamhfG/Qzo= -github.com/magiconair/properties v1.8.6/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60= -github.com/mailru/easyjson v0.0.0-20160728113105-d5b7844b561a/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= -github.com/mailru/easyjson v0.0.0-20180823135443-60711f1a8329/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= -github.com/mailru/easyjson v0.0.0-20190312143242-1de009706dbe/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= -======= ->>>>>>> 4a9a43c (Chore: refactor the cue engine with cuex) github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= github.com/mailru/easyjson v0.7.6 h1:8yTIVnZgCoiM1TgqoeTl+LfU5Jg6/xL3QhGQnimLYnA= @@ -501,24 +348,10 @@ github.com/mitchellh/cli v1.1.0/go.mod h1:xcISNoH86gajksDmfB23e/pu+B+GeFRMYmoHXx github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= github.com/mitchellh/go-wordwrap v1.0.1 h1:TLuKupo69TCn6TQSyGxwI1EblZZEsQ0vMlAFQflz0v0= +github.com/mitchellh/go-wordwrap v1.0.1/go.mod h1:R62XHJLzvMFRBbcrT7m7WgmE1eOyTSsCt+hzestvNj0= github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/mapstructure v1.4.2/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= -<<<<<<< HEAD -github.com/mitchellh/reflectwalk v1.0.2 h1:G2LzWKi524PWgd3mLHV8Y5k7s6XUvT0Gef6zxSIeXaQ= -github.com/mitchellh/reflectwalk v1.0.2/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= -github.com/mmcloughlin/avo v0.5.0/go.mod h1:ChHFdoV7ql95Wi7vuq2YT1bwCJqiWdZrQ1im3VujLYM= -github.com/moby/locker v1.0.1 h1:fOXqR41zeveg4fFODix+1Ch4mj/gT0NE1XJbp/epuBg= -github.com/moby/locker v1.0.1/go.mod h1:S7SDdo5zpBK84bzzVlKr2V0hz+7x9hWbYC/kq7oQppc= -github.com/moby/spdystream v0.2.0/go.mod h1:f7i0iNDQJ059oMTcWxx8MA/zKFIuD/lY+0GqbN2Wy8c= -github.com/moby/sys/mountinfo v0.5.0 h1:2Ks8/r6lopsxWi9m58nlwjaeSzUX9iiL1vj5qB/9ObI= -github.com/moby/sys/mountinfo v0.5.0/go.mod h1:3bMD3Rg+zkqx8MRYPi7Pyb0Ie97QEBmdxbhnCLlSvSU= -github.com/moby/term v0.0.0-20201216013528-df9cb8a40635/go.mod h1:FBS0z0QWA44HXygs7VXDUOGoN/1TV3RuWkLO04am3wc= -github.com/moby/term v0.0.0-20210610120745-9d4ed1856297/go.mod h1:vgPCkQMyxTZ7IDy8SXRufE172gr8+K/JE/7hHFxHW3A= -github.com/moby/term v0.0.0-20220808134915-39b0c02b01ae h1:O4SWKdcHVCvYqyDV+9CJA1fcDN2L11Bule0iFy3YlAI= -github.com/moby/term v0.0.0-20220808134915-39b0c02b01ae/go.mod h1:E2VnQOmVuvZB6UYnnDB0qG5Nq/1tD9acaOpo6xmt0Kw= -======= ->>>>>>> 4a9a43c (Chore: refactor the cue engine with cuex) github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= @@ -556,11 +389,7 @@ github.com/onsi/ginkgo v1.16.2/go.mod h1:CObGmKUOKaSC0RjmoAK7tKyn4Azo5P2IWuoMnvw github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE= github.com/onsi/ginkgo v1.16.5/go.mod h1:+E8gABHa3K6zRBolWtd+ROzc/U5bkGt0FwiG042wbpU= github.com/onsi/ginkgo/v2 v2.9.2 h1:BA2GMJOtfGAfagzYtrAlufIP0lq6QERkFmHLMLPwFSU= -<<<<<<< HEAD github.com/onsi/ginkgo/v2 v2.9.2/go.mod h1:WHcJJG2dIlcCqVfBAwUCrJxSPFb6v4azBwgxeMeDuts= -github.com/onsi/gomega v0.0.0-20170829124025-dcabb60a477c/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= -======= ->>>>>>> 4a9a43c (Chore: refactor the cue engine with cuex) github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= @@ -575,13 +404,6 @@ github.com/openzipkin/zipkin-go v0.2.5/go.mod h1:KpXfKdgRDnnhsxw4pNIH9Md5lyFqKUa github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= github.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= github.com/performancecopilot/speed/v4 v4.0.0/go.mod h1:qxrSyuDGrTOWfV+uKRFhfxw6h/4HXRGUiZiufxo49BM= -<<<<<<< HEAD -github.com/peterbourgon/diskv v2.0.1+incompatible h1:UBdAOUP5p4RWqPBg048CAvpKN+vxiaj6gdUUzhl4XmI= -github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR/tNboyR3/BZd58JJSHlUSCU= -github.com/phayes/freeport v0.0.0-20220201140144-74d24b5ae9f5 h1:Ii+DKncOVM8Cu1Hc+ETb5K+23HdAMvESYE3ZJ5b5cMI= -github.com/phayes/freeport v0.0.0-20220201140144-74d24b5ae9f5/go.mod h1:iIss55rKnNBTvrwdmkUpLnDpZoAHvWaiq5+iMmen4AE= -======= ->>>>>>> 4a9a43c (Chore: refactor the cue engine with cuex) github.com/pierrec/lz4 v1.0.2-0.20190131084431-473cd7ce01a1/go.mod h1:3/3N9NVKO0jef7pBehbT1qWhCMrIgbYNnFAZCqQ5LRc= github.com/pierrec/lz4 v2.6.0+incompatible h1:Ix9yFKn1nSPBLFl/yZknTp8TU5G4Ps0JDmguYK6iH1A= github.com/pierrec/lz4 v2.6.0+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= @@ -635,11 +457,6 @@ github.com/robfig/cron/v3 v3.0.1/go.mod h1:eQICP3HwyT7UooqI/z+Ov+PtYAWygg1TEWWzG github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= github.com/rogpeppe/go-internal v1.9.0 h1:73kH8U+JUqXU8lRuOHeVHaa/SZPifC7BkcraZVejAe8= github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= -<<<<<<< HEAD -github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= -github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -======= ->>>>>>> 4a9a43c (Chore: refactor the cue engine with cuex) github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= @@ -648,9 +465,11 @@ github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6Mwd github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88= github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= github.com/sirupsen/logrus v1.9.0 h1:trlNQbNUG3OdDrDil03MCb1H2o9nJ1x4/5LYw7byDE0= +github.com/sirupsen/logrus v1.9.0/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= github.com/soheilhy/cmux v0.1.5 h1:jjzc5WVemNEDTLwv9tlmemhC73tI08BNOIGwBOo10Js= +github.com/soheilhy/cmux v0.1.5/go.mod h1:T7TcVDs9LWfQgPlPsdngu6I6QIoyIFZDDC6sNE1GqG0= github.com/sony/gobreaker v0.4.1/go.mod h1:ZKptC7FHNvhBz7dN2LGjPVBz2sZJmc0/PkyDJOjmxWY= github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= github.com/spf13/cobra v1.6.1 h1:o94oiPyS4KD1mPy2fmcYYHHfCxLqYjJOhGsCHFZtEzA= @@ -677,28 +496,15 @@ github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO github.com/stretchr/testify v1.8.2 h1:+h33VjcLVPDHtOdpUCuF+7gSuG3yGIftsP1YvFihtJ8= github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= github.com/tmc/grpc-websocket-proxy v0.0.0-20201229170055-e5319fda7802 h1:uruHq4dN7GR16kFc5fp3d1RIYzJW5onx8Ybykw2YQFA= +github.com/tmc/grpc-websocket-proxy v0.0.0-20201229170055-e5319fda7802/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/tv42/httpunix v0.0.0-20150427012821-b75d8614f926/go.mod h1:9ESjWnEqriFuLhtthL60Sar/7RFoluCcXsuvEwTV5KM= github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 h1:eY9dn8+vbi4tKz5Qo6v2eYzo7kUS51QINcR5jNpbZS8= +github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= -<<<<<<< HEAD -github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= -github.com/yvasiyarov/go-metrics v0.0.0-20140926110328-57bccd1ccd43 h1:+lm10QQTNSBd8DVTNGHx7o/IKu9HYDvLMffDhbyLccI= -github.com/yvasiyarov/go-metrics v0.0.0-20140926110328-57bccd1ccd43/go.mod h1:aX5oPXxHm3bOH+xeAttToC8pqch2ScQN/JoXYupl6xs= -github.com/yvasiyarov/gorelic v0.0.0-20141212073537-a9bba5b9ab50 h1:hlE8//ciYMztlGpl/VA+Zm1AcTPHYkHJPbHqE6WJUXE= -github.com/yvasiyarov/gorelic v0.0.0-20141212073537-a9bba5b9ab50/go.mod h1:NUSPSUX/bi6SeDMUh6brw0nXpxHnc96TguQh0+r/ssA= -github.com/yvasiyarov/newrelic_platform_go v0.0.0-20140908184405-b21fdbd4370f h1:ERexzlUfuTvpE74urLSbIQW0Z/6hF9t8U4NsJLaioAY= -github.com/yvasiyarov/newrelic_platform_go v0.0.0-20140908184405-b21fdbd4370f/go.mod h1:GlGEuHIJweS1mbCqG+7vt2nvWLzLLnRHbXz5JKd/Qbg= -github.com/zclconf/go-cty v1.1.0/go.mod h1:xnAOWiHeOqg2nWS62VtQ7pbOu17FtxJNW8RLEih+O3s= -github.com/zclconf/go-cty v1.12.1 h1:PcupnljUm9EIvbgSHQnHhUr3fO6oFmkOrvs2BAFNXXY= -github.com/zclconf/go-cty v1.12.1/go.mod h1:s9IfD1LK5ccNMSWCVFCE2rJfHiZgi7JijgeWIMfhLvA= -go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= -go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= -go.etcd.io/bbolt v1.3.5/go.mod h1:G5EMThwa9y8QZGBClrRx5EY+Yw9kAhnjy3bSjsnlVTQ= -======= ->>>>>>> 4a9a43c (Chore: refactor the cue engine with cuex) go.etcd.io/bbolt v1.3.6 h1:/ecaJf0sk1l4l6V4awd65v2C3ILy7MSj+s/x1ADCIMU= +go.etcd.io/bbolt v1.3.6/go.mod h1:qXsaaIqmgQH0T+OPdb99Bf+PKfBBQVAdyD6TY9G8XM4= go.etcd.io/etcd v0.0.0-20200513171258-e048e166ab9c h1:/RwRVN9EdXAVtdHxP7Ndn/tfmM9/goiwU0QTnLBgS4w= go.etcd.io/etcd/api/v3 v3.5.0/go.mod h1:cbVKeC6lCfl7j/8jBhAK6aIYO9XOjdptoxU/nLQcPvs= go.etcd.io/etcd/api/v3 v3.5.5 h1:BX4JIbQ7hl7+jL+g+2j5UAr0o1bctCm6/Ct+ArBGkf0= @@ -713,22 +519,11 @@ go.etcd.io/etcd/client/v3 v3.5.0/go.mod h1:AIKXXVX/DQXtfTEqBryiLTUXwON+GuvO6Z7lL go.etcd.io/etcd/client/v3 v3.5.5 h1:q++2WTJbUgpQu4B6hCuT7VkdwaTP7Qz6Daak3WzbrlI= go.etcd.io/etcd/client/v3 v3.5.5/go.mod h1:aApjR4WGlSumpnJ2kloS75h6aHUmAyaPLjHMxpc7E7c= go.etcd.io/etcd/pkg/v3 v3.5.5 h1:Ablg7T7OkR+AeeeU32kdVhw/AGDsitkKPl7aW73ssjU= -<<<<<<< HEAD go.etcd.io/etcd/pkg/v3 v3.5.5/go.mod h1:6ksYFxttiUGzC2uxyqiyOEvhAiD0tuIqSZkX3TyPdaE= -go.etcd.io/etcd/raft/v3 v3.5.0/go.mod h1:UFOHSIvO/nKwd4lhkwabrTD3cqW5yVyYYf/KlD00Szc= go.etcd.io/etcd/raft/v3 v3.5.5 h1:Ibz6XyZ60OYyRopu73lLM/P+qco3YtlZMOhnXNS051I= go.etcd.io/etcd/raft/v3 v3.5.5/go.mod h1:76TA48q03g1y1VpTue92jZLr9lIHKUNcYdZOOGyx8rI= -go.etcd.io/etcd/server/v3 v3.5.0/go.mod h1:3Ah5ruV+M+7RZr0+Y/5mNLwC+eQlni+mQmOVdCRJoS4= go.etcd.io/etcd/server/v3 v3.5.5 h1:jNjYm/9s+f9A9r6+SC4RvNaz6AqixpOvhrFdT0PvIj0= go.etcd.io/etcd/server/v3 v3.5.5/go.mod h1:rZ95vDw/jrvsbj9XpTqPrTAB9/kzchVdhRirySPkUBc= -go.mongodb.org/mongo-driver v1.0.3/go.mod h1:u7ryQJ+DOzQmeO7zB6MHyr8jkEQvC8vH7qLUO4lqsUM= -go.mongodb.org/mongo-driver v1.1.1/go.mod h1:u7ryQJ+DOzQmeO7zB6MHyr8jkEQvC8vH7qLUO4lqsUM= -go.mongodb.org/mongo-driver v1.1.2/go.mod h1:u7ryQJ+DOzQmeO7zB6MHyr8jkEQvC8vH7qLUO4lqsUM= -go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= -======= -go.etcd.io/etcd/raft/v3 v3.5.5 h1:Ibz6XyZ60OYyRopu73lLM/P+qco3YtlZMOhnXNS051I= -go.etcd.io/etcd/server/v3 v3.5.5 h1:jNjYm/9s+f9A9r6+SC4RvNaz6AqixpOvhrFdT0PvIj0= ->>>>>>> 4a9a43c (Chore: refactor the cue engine with cuex) go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.35.0 h1:xFSRQBbXF6VvYRf2lqMJXxoB72XI1K/azav8TekHHSw= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.35.0/go.mod h1:h8TWwRAhQpOd0aM5nYsRD8+flnkj+526GEIVlarH7eY= @@ -759,11 +554,7 @@ go.uber.org/automaxprocs v1.5.1/go.mod h1:BF4eumQw0P9GtnuxxovUd06vwm1o18oMzFtK66 go.uber.org/goleak v1.1.10/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A= go.uber.org/goleak v1.1.11-0.20210813005559-691160354723/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ= go.uber.org/goleak v1.2.0 h1:xqgm/S+aQvhWFTtR0XK3Jvg7z8kGV8P4X14IzwN3Eqk= -<<<<<<< HEAD go.uber.org/goleak v1.2.0/go.mod h1:XJYK+MuIchqpmGmUSAzotztawfKvYLUIgg7guXrwVUo= -go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= -======= ->>>>>>> 4a9a43c (Chore: refactor the cue engine with cuex) go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= go.uber.org/multierr v1.7.0 h1:zaiO/rmgFjbmCXdSYJWQcdvOCsthmdaHfr3Gm2Kx4Ec= go.uber.org/multierr v1.7.0/go.mod h1:7EAYxJLBy9rStEaz58O2t4Uvip6FSURkq8/ppBp95ak= @@ -943,6 +734,7 @@ golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4f golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.7.0 h1:W4OVu8VVOaIO0yzWMNdepAulS7YfoS3Zabrm8DOXXU4= +golang.org/x/tools v0.7.0/go.mod h1:4pg6aUX35JBAogB10C9AtvVL+qowtN4pT3CGSQex14s= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= diff --git a/pkg/context/context.go b/pkg/context/context.go index aa20aeb..3540caf 100644 --- a/pkg/context/context.go +++ b/pkg/context/context.go @@ -191,7 +191,7 @@ func (wf *WorkflowContext) sync(ctx context.Context) error { } // LoadFromConfigMap recover workflow context from configMap. -func (wf *WorkflowContext) LoadFromConfigMap(ctx context.Context, cm corev1.ConfigMap) error { +func (wf *WorkflowContext) LoadFromConfigMap(_ context.Context, cm corev1.ConfigMap) error { if wf.store == nil { wf.store = &cm } diff --git a/pkg/debug/context.go b/pkg/debug/context.go index c90a35f..9817d58 100644 --- a/pkg/debug/context.go +++ b/pkg/debug/context.go @@ -70,21 +70,15 @@ func setStore(ctx context.Context, instance *wfTypes.WorkflowInstance, id, data } cm.Labels = map[string]string{} cm.SetOwnerReferences(instance.ChildOwnerReferences) - if err := cli.Create(ctx, cm); err != nil { - return err - } - return nil + return cli.Create(ctx, cm) } return err } cm.Data = map[string]string{ "debug": data, } - if err := cli.Update(ctx, cm); err != nil { - return err - } - return nil + return cli.Update(ctx, cm) } // NewContext new workflow context without initialize data. diff --git a/pkg/executor/options.go b/pkg/executor/options.go index 36ae2df..a01b38c 100644 --- a/pkg/executor/options.go +++ b/pkg/executor/options.go @@ -17,7 +17,6 @@ limitations under the License. package executor import ( - "github.com/kubevela/pkg/cue/cuex" "github.com/kubevela/workflow/pkg/types" ) @@ -26,19 +25,6 @@ type Option interface { ApplyTo(*workflowExecutor) } -type withCompiler struct { - compiler *cuex.Compiler -} - -func (w *withCompiler) ApplyTo(e *workflowExecutor) { - e.compiler = w.compiler -} - -// WithCompiler set the cue compiler -func WithCompiler(compiler *cuex.Compiler) Option { - return &withCompiler{compiler: compiler} -} - type withStatusPatcher struct { patcher types.StatusPatcher } diff --git a/pkg/executor/workflow.go b/pkg/executor/workflow.go index 61cc27a..7d4b775 100644 --- a/pkg/executor/workflow.go +++ b/pkg/executor/workflow.go @@ -29,7 +29,6 @@ import ( "k8s.io/apiserver/pkg/endpoints/request" "k8s.io/apiserver/pkg/util/feature" - "github.com/kubevela/pkg/cue/cuex" monitorContext "github.com/kubevela/pkg/monitor/context" "github.com/kubevela/workflow/api/v1alpha1" @@ -38,7 +37,6 @@ import ( "github.com/kubevela/workflow/pkg/features" "github.com/kubevela/workflow/pkg/hooks" "github.com/kubevela/workflow/pkg/monitor/metrics" - "github.com/kubevela/workflow/pkg/providers" "github.com/kubevela/workflow/pkg/providers/legacy/workspace" "github.com/kubevela/workflow/pkg/tasks/custom" "github.com/kubevela/workflow/pkg/types" @@ -62,7 +60,6 @@ type workflowExecutor struct { instance *types.WorkflowInstance wfCtx wfContext.Context patcher types.StatusPatcher - compiler *cuex.Compiler } // New returns a Workflow Executor implementation. @@ -71,9 +68,6 @@ func New(instance *types.WorkflowInstance, options ...Option) WorkflowExecutor { for _, opt := range options { opt.ApplyTo(executor) } - if executor.compiler == nil { - executor.compiler = providers.Compiler.Get() - } return executor } @@ -214,7 +208,6 @@ func newEngine(ctx monitorContext.Context, wfCtx wfContext.Context, w *workflowE stepTimeout: make(map[string]time.Time), taskRunners: taskRunners, statusPatcher: w.patcher, - compiler: w.compiler, } } @@ -587,7 +580,6 @@ func (e *engine) generateRunOptions(ctx monitorContext.Context, dependsOnPhase v }, StepStatus: e.stepStatus, Engine: e, - Compiler: e.compiler, PreCheckHooks: []types.TaskPreCheckHook{ func(step v1alpha1.WorkflowStep, options *types.PreCheckOptions) (*types.PreCheckResult, error) { if feature.DefaultMutableFeatureGate.Enabled(features.EnableSuspendOnFailure) { @@ -643,10 +635,7 @@ func (e *engine) generateRunOptions(ctx monitorContext.Context, dependsOnPhase v if e.debug { options.Debug = func(id string, v cue.Value) error { debugContext := debug.NewContext(e.instance, id) - if err := debugContext.Set(v); err != nil { - return err - } - return nil + return debugContext.Set(v) } } return options @@ -666,7 +655,6 @@ type engine struct { stepDependsOn map[string][]string taskRunners []types.TaskRunner statusPatcher types.StatusPatcher - compiler *cuex.Compiler } func (e *engine) finishStep(operation *types.Operation) { diff --git a/pkg/executor/workflow_test.go b/pkg/executor/workflow_test.go index 10de0a1..d997cbd 100644 --- a/pkg/executor/workflow_test.go +++ b/pkg/executor/workflow_test.go @@ -43,6 +43,7 @@ import ( wfContext "github.com/kubevela/workflow/pkg/context" "github.com/kubevela/workflow/pkg/cue/process" "github.com/kubevela/workflow/pkg/features" + "github.com/kubevela/workflow/pkg/providers" "github.com/kubevela/workflow/pkg/tasks/builtin" "github.com/kubevela/workflow/pkg/tasks/custom" "github.com/kubevela/workflow/pkg/types" @@ -2373,7 +2374,7 @@ func (tr *testTaskRunner) Run(ctx wfContext.Context, options *types.TaskRunOptio resetter := tr.fillContext(logCtx, options.PCtx) defer resetter(options.PCtx) - basicVal, err := custom.MakeBasicValue(logCtx, nil, options.PCtx) + basicVal, err := custom.MakeBasicValue(logCtx, providers.Compiler.Get(), nil, options.PCtx) if err != nil { return v1alpha1.StepStatus{}, nil, err } diff --git a/pkg/generator/generator.go b/pkg/generator/generator.go index ee7bcd3..0772f66 100644 --- a/pkg/generator/generator.go +++ b/pkg/generator/generator.go @@ -33,6 +33,7 @@ import ( "github.com/kubevela/workflow/pkg/executor" "github.com/kubevela/workflow/pkg/monitor/metrics" + "github.com/kubevela/workflow/pkg/providers" "github.com/kubevela/workflow/pkg/tasks" "github.com/kubevela/workflow/pkg/tasks/template" "github.com/kubevela/workflow/pkg/types" @@ -132,13 +133,16 @@ func GenerateWorkflowInstance(ctx context.Context, cli client.Client, run *v1alp return instance, nil } -func initStepGeneratorOptions(ctx monitorContext.Context, instance *types.WorkflowInstance, options types.StepGeneratorOptions) types.StepGeneratorOptions { +func initStepGeneratorOptions(_ monitorContext.Context, instance *types.WorkflowInstance, options types.StepGeneratorOptions) types.StepGeneratorOptions { if options.ProcessCtx == nil { options.ProcessCtx = process.NewContext(generateContextDataFromWorkflowRun(instance)) } if options.TemplateLoader == nil { options.TemplateLoader = template.NewWorkflowStepTemplateLoader() } + if options.Compiler == nil { + options.Compiler = providers.Compiler.Get() + } return options } diff --git a/pkg/providers/http/do.go b/pkg/providers/http/do.go deleted file mode 100644 index 4dd36a7..0000000 --- a/pkg/providers/http/do.go +++ /dev/null @@ -1,242 +0,0 @@ -/* -Copyright 2022 The KubeVela Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package http - -import ( - "context" - "crypto/tls" - "crypto/x509" - "encoding/base64" - "fmt" - "io" - "net/http" - "strings" - "time" - - "cuelang.org/go/cue" - "github.com/pkg/errors" - v1 "k8s.io/api/core/v1" - "sigs.k8s.io/controller-runtime/pkg/client" - - monitorContext "github.com/kubevela/pkg/monitor/context" - - wfContext "github.com/kubevela/workflow/pkg/context" - "github.com/kubevela/workflow/pkg/cue/model/value" - "github.com/kubevela/workflow/pkg/providers/http/ratelimiter" - "github.com/kubevela/workflow/pkg/types" -) - -const ( - // ProviderName is provider name for install. - ProviderName = "http" -) - -var ( - rateLimiter *ratelimiter.RateLimiter -) - -func init() { - rateLimiter = ratelimiter.NewRateLimiter(128) -} - -type provider struct { - cli client.Client - ns string -} - -// Do process http request. -func (h *provider) Do(ctx monitorContext.Context, wfCtx wfContext.Context, v *value.Value, act types.Action) error { //nolint:revive,unused - resp, err := h.runHTTP(ctx, v) - if err != nil { - return err - } - return v.FillObject(resp, "response") -} - -func (h *provider) runHTTP(ctx monitorContext.Context, v *value.Value) (interface{}, error) { - var ( - err error - method, u string - header, trailer http.Header - r io.Reader - ) - defaultClient := &http.Client{ - Transport: http.DefaultTransport, - Timeout: time.Second * 3, - } - if timeout, err := v.GetString("request", "timeout"); err == nil && timeout != "" { - duration, err := time.ParseDuration(timeout) - if err != nil { - return nil, err - } - defaultClient.Timeout = duration - } - if method, err = v.GetString("method"); err != nil { - return nil, err - } - if u, err = v.GetString("url"); err != nil { - return nil, err - } - if rl, err := v.LookupValue("request", "ratelimiter"); err == nil { - limit, err := rl.GetInt64("limit") - if err != nil { - return nil, err - } - period, err := rl.GetString("period") - if err != nil { - return nil, err - } - duration, err := time.ParseDuration(period) - if err != nil { - return nil, err - } - if !rateLimiter.Allow(fmt.Sprintf("%s-%s", method, strings.Split(u, "?")[0]), int(limit), duration) { - return nil, errors.New("request exceeds the rate limiter") - } - } - if body, err := v.LookupValue("request", "body"); err == nil { - r, err = body.CueValue().Reader() - if err != nil { - return nil, err - } - } - if header, err = parseHeaders(v.CueValue(), "header"); err != nil { - return nil, err - } - if trailer, err = parseHeaders(v.CueValue(), "trailer"); err != nil { - return nil, err - } - if header == nil { - header = map[string][]string{} - header.Set("Content-Type", "application/json") - } - - req, err := http.NewRequestWithContext(context.Background(), method, u, r) - if err != nil { - return nil, err - } - req.Header = header - req.Trailer = trailer - - if tr, err := h.getTransport(ctx, v); err == nil && tr != nil { - defaultClient.Transport = tr - } - - resp, err := defaultClient.Do(req) - if err != nil { - return nil, err - } - //nolint:errcheck - defer resp.Body.Close() - b, err := io.ReadAll(resp.Body) - // parse response body and headers - return map[string]interface{}{ - "body": string(b), - "header": resp.Header, - "trailer": resp.Trailer, - "statusCode": resp.StatusCode, - }, err -} - -func (h *provider) getTransport(ctx monitorContext.Context, v *value.Value) (http.RoundTripper, error) { - tlsConfig, err := v.LookupValue("tls_config") - if err != nil { - return nil, nil - } - tr := &http.Transport{ - TLSClientConfig: &tls.Config{ - NextProtos: []string{"http/1.1"}, - }, - } - - secretName, err := tlsConfig.GetString("secret") - if err != nil { - return nil, err - } - objectKey := client.ObjectKey{ - Namespace: h.ns, - Name: secretName, - } - index := strings.Index(secretName, "/") - if index > 0 { - objectKey.Namespace = secretName[:index-1] - objectKey.Name = secretName[index:] - } - secret := new(v1.Secret) - if err := h.cli.Get(ctx, objectKey, secret); err != nil { - return nil, err - } - if ca, ok := secret.Data["ca.crt"]; ok { - caData, err := base64.StdEncoding.DecodeString(string(ca)) - if err != nil { - return nil, err - } - pool := x509.NewCertPool() - pool.AppendCertsFromPEM(caData) - tr.TLSClientConfig.RootCAs = pool - } - var certData, keyData []byte - if clientCert, ok := secret.Data["client.crt"]; ok { - certData, err = base64.StdEncoding.DecodeString(string(clientCert)) - if err != nil { - return nil, err - } - } - if clientKey, ok := secret.Data["client.key"]; ok { - keyData, err = base64.StdEncoding.DecodeString(string(clientKey)) - if err != nil { - return nil, err - } - } - cliCrt, err := tls.X509KeyPair(certData, keyData) - if err != nil { - return nil, errors.WithMessage(err, "parse client keypair") - } - tr.TLSClientConfig.Certificates = []tls.Certificate{cliCrt} - return tr, nil -} - -func parseHeaders(obj cue.Value, label string) (http.Header, error) { - m := obj.LookupPath(value.FieldPath("request", label)) - if !m.Exists() { - return nil, nil - } - iter, err := m.Fields() - if err != nil { - return nil, err - } - h := http.Header{} - for iter.Next() { - str, err := iter.Value().String() - if err != nil { - return nil, err - } - h.Add(iter.Label(), str) - } - return h, nil -} - -// Install register handlers to provider discover. -func Install(p types.Providers, cli client.Client, ns string) { - prd := &provider{ - cli: cli, - ns: ns, - } - p.Register(ProviderName, map[string]types.Handler{ - "do": prd.Do, - }) -} diff --git a/pkg/providers/kube/handle.go b/pkg/providers/kube/handle.go deleted file mode 100644 index 94497ff..0000000 --- a/pkg/providers/kube/handle.go +++ /dev/null @@ -1,369 +0,0 @@ -/* -Copyright 2022 The KubeVela Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package kube - -import ( - "context" - - "cuelang.org/go/cue" - "cuelang.org/go/cue/cuecontext" - "k8s.io/apimachinery/pkg/api/errors" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" - ktypes "k8s.io/apimachinery/pkg/types" - "sigs.k8s.io/controller-runtime/pkg/client" - - monitorContext "github.com/kubevela/pkg/monitor/context" - "github.com/kubevela/pkg/multicluster" - "github.com/kubevela/pkg/util/k8s" - "github.com/kubevela/pkg/util/k8s/patch" - - wfContext "github.com/kubevela/workflow/pkg/context" - velacue "github.com/kubevela/workflow/pkg/cue" - "github.com/kubevela/workflow/pkg/cue/model" - "github.com/kubevela/workflow/pkg/cue/model/value" - "github.com/kubevela/workflow/pkg/types" -) - -const ( - // ProviderName is provider name for install. - ProviderName = "kube" - // AnnoWorkflowLastAppliedConfig is the annotation for last applied config - AnnoWorkflowLastAppliedConfig = "workflow.oam.dev/last-applied-configuration" - // AnnoWorkflowLastAppliedTime is annotation for last applied time - AnnoWorkflowLastAppliedTime = "workflow.oam.dev/last-applied-time" -) - -// Dispatcher is a client for apply resources. -type Dispatcher func(ctx context.Context, cluster, owner string, manifests ...*unstructured.Unstructured) error - -// Deleter is a client for delete resources. -type Deleter func(ctx context.Context, cluster, owner string, manifest *unstructured.Unstructured) error - -// Handlers handles resources. -type Handlers struct { - Apply Dispatcher - Delete Deleter -} - -type filters struct { - Namespace string `json:"namespace"` - MatchingLabels map[string]string `json:"matchingLabels"` -} - -type provider struct { - labels map[string]string - handlers Handlers - cli client.Client -} - -const ( - // WorkflowResourceCreator is the creator name of workflow resource - WorkflowResourceCreator string = "workflow" -) - -func handleContext(ctx context.Context, cluster string) context.Context { - return multicluster.WithCluster(ctx, cluster) -} - -type dispatcher struct { - cli client.Client -} - -func (d *dispatcher) apply(ctx context.Context, cluster, owner string, workloads ...*unstructured.Unstructured) error { //nolint:revive,unused - for _, workload := range workloads { - existing := new(unstructured.Unstructured) - existing.GetObjectKind().SetGroupVersionKind(workload.GetObjectKind().GroupVersionKind()) - if err := d.cli.Get(ctx, ktypes.NamespacedName{ - Namespace: workload.GetNamespace(), - Name: workload.GetName(), - }, existing); err != nil { - if errors.IsNotFound(err) { - // TODO: make the annotation optional - b, err := workload.MarshalJSON() - if err != nil { - return err - } - if err := k8s.AddAnnotation(workload, AnnoWorkflowLastAppliedConfig, string(b)); err != nil { - return err - } - if err := d.cli.Create(ctx, workload); err != nil { - return err - } - } else { - return err - } - } else { - patcher, err := patch.ThreeWayMergePatch(existing, workload, &patch.PatchAction{ - UpdateAnno: true, - AnnoLastAppliedConfig: AnnoWorkflowLastAppliedConfig, - AnnoLastAppliedTime: AnnoWorkflowLastAppliedTime, - }) - if err != nil { - return err - } - if err := d.cli.Patch(ctx, workload, patcher); err != nil { - return err - } - } - } - return nil -} - -func (d *dispatcher) delete(ctx context.Context, cluster, owner string, manifest *unstructured.Unstructured) error { //nolint:revive,unused - return d.cli.Delete(ctx, manifest) -} - -// Patch patch CR in cluster. -func (h *provider) Patch(ctx monitorContext.Context, wfCtx wfContext.Context, v *value.Value, act types.Action) error { //nolint:revive,unused - val, err := v.LookupValue("value") - if err != nil { - return err - } - obj := new(unstructured.Unstructured) - if err := val.UnmarshalTo(obj); err != nil { - return err - } - key := client.ObjectKeyFromObject(obj) - if key.Namespace == "" { - key.Namespace = "default" - } - cluster, err := v.GetString("cluster") - if err != nil { - return err - } - multiCtx := handleContext(ctx, cluster) - if err := h.cli.Get(multiCtx, key, obj); err != nil { - return err - } - baseVal := cuecontext.New().CompileString("").FillPath(cue.ParsePath(""), obj) - patcher, err := v.LookupValue("patch") - if err != nil { - return err - } - - base, err := model.NewBase(baseVal) - if err != nil { - return err - } - if err := base.Unify(patcher.CueValue()); err != nil { - return err - } - workload, err := base.Unstructured() - if err != nil { - return err - } - for k, v := range h.labels { - if err := k8s.AddLabel(workload, k, v); err != nil { - return err - } - } - if err := h.handlers.Apply(multiCtx, cluster, WorkflowResourceCreator, workload); err != nil { - return err - } - return velacue.FillUnstructuredObject(v, workload, "result") -} - -// Apply create or update CR in cluster. -func (h *provider) Apply(ctx monitorContext.Context, wfCtx wfContext.Context, v *value.Value, act types.Action) error { //nolint:revive,unused - val, err := v.LookupValue("value") - if err != nil { - return err - } - var workload = new(unstructured.Unstructured) - if err := val.UnmarshalTo(workload); err != nil { - return err - } - if workload.GetNamespace() == "" { - workload.SetNamespace("default") - } - for k, v := range h.labels { - if err := k8s.AddLabel(workload, k, v); err != nil { - return err - } - } - cluster, err := v.GetString("cluster") - if err != nil { - return err - } - deployCtx := handleContext(ctx, cluster) - if err := h.handlers.Apply(deployCtx, cluster, WorkflowResourceCreator, workload); err != nil { - return err - } - return velacue.FillUnstructuredObject(v, workload, "value") -} - -// ApplyInParallel create or update CRs in parallel. -func (h *provider) ApplyInParallel(ctx monitorContext.Context, wfCtx wfContext.Context, v *value.Value, act types.Action) error { //nolint:revive,unused - val, err := v.LookupValue("value") - if err != nil { - return err - } - iter, err := val.CueValue().List() - if err != nil { - return err - } - workloadNum := 0 - for iter.Next() { - workloadNum++ - } - var workloads = make([]*unstructured.Unstructured, workloadNum) - if err = val.UnmarshalTo(&workloads); err != nil { - return err - } - for i := range workloads { - if workloads[i].GetNamespace() == "" { - workloads[i].SetNamespace("default") - } - } - cluster, err := v.GetString("cluster") - if err != nil { - return err - } - deployCtx := handleContext(ctx, cluster) - if err := h.handlers.Apply(deployCtx, cluster, WorkflowResourceCreator, workloads...); err != nil { - return err - } - return nil -} - -// Read get CR from cluster. -func (h *provider) Read(ctx monitorContext.Context, wfCtx wfContext.Context, v *value.Value, act types.Action) error { //nolint:revive,unused - val, err := v.LookupValue("value") - if err != nil { - return err - } - obj := new(unstructured.Unstructured) - if err := val.UnmarshalTo(obj); err != nil { - return err - } - key := client.ObjectKeyFromObject(obj) - if key.Namespace == "" { - key.Namespace = "default" - } - cluster, err := v.GetString("cluster") - if err != nil { - return err - } - readCtx := handleContext(ctx, cluster) - if err := h.cli.Get(readCtx, key, obj); err != nil { - return v.FillObject(err.Error(), "err") - } - return velacue.FillUnstructuredObject(v, obj, "value") -} - -// List lists CRs from cluster. -func (h *provider) List(ctx monitorContext.Context, wfCtx wfContext.Context, v *value.Value, act types.Action) error { //nolint:revive,unused - r, err := v.LookupValue("resource") - if err != nil { - return err - } - resource := &metav1.TypeMeta{} - if err := r.UnmarshalTo(resource); err != nil { - return err - } - list := &unstructured.UnstructuredList{Object: map[string]interface{}{ - "kind": resource.Kind, - "apiVersion": resource.APIVersion, - }} - - filterValue, err := v.LookupValue("filter") - if err != nil { - return err - } - filter := &filters{} - if err := filterValue.UnmarshalTo(filter); err != nil { - return err - } - cluster, err := v.GetString("cluster") - if err != nil { - return err - } - listOpts := []client.ListOption{ - client.InNamespace(filter.Namespace), - client.MatchingLabels(filter.MatchingLabels), - } - readCtx := handleContext(ctx, cluster) - if err := h.cli.List(readCtx, list, listOpts...); err != nil { - return v.FillObject(err.Error(), "err") - } - return velacue.FillUnstructuredObject(v, list, "list") -} - -// Delete deletes CR from cluster. -func (h *provider) Delete(ctx monitorContext.Context, wfCtx wfContext.Context, v *value.Value, act types.Action) error { //nolint:revive,unused - val, err := v.LookupValue("value") - if err != nil { - return err - } - obj := new(unstructured.Unstructured) - if err := val.UnmarshalTo(obj); err != nil { - return err - } - cluster, err := v.GetString("cluster") - if err != nil { - return err - } - deleteCtx := handleContext(ctx, cluster) - - if filterValue, err := v.LookupValue("filter"); err == nil { - filter := &filters{} - if err := filterValue.UnmarshalTo(filter); err != nil { - return err - } - labelSelector, err := metav1.LabelSelectorAsSelector(&metav1.LabelSelector{MatchLabels: filter.MatchingLabels}) - if err != nil { - return err - } - if err := h.cli.DeleteAllOf(deleteCtx, obj, &client.DeleteAllOfOptions{ListOptions: client.ListOptions{Namespace: filter.Namespace, LabelSelector: labelSelector}}); err != nil { - return v.FillObject(err.Error(), "err") - } - return nil - } - - if err := h.handlers.Delete(deleteCtx, cluster, WorkflowResourceCreator, obj); err != nil { - return v.FillObject(err.Error(), "err") - } - - return nil -} - -// Install register handlers to provider discover. -func Install(p types.Providers, cli client.Client, labels map[string]string, handlers *Handlers) { - if handlers == nil { - d := &dispatcher{ - cli: cli, - } - handlers = &Handlers{ - Apply: d.apply, - Delete: d.delete, - } - } - prd := &provider{ - cli: cli, - handlers: *handlers, - labels: labels, - } - p.Register(ProviderName, map[string]types.Handler{ - "apply": prd.Apply, - "apply-in-parallel": prd.ApplyInParallel, - "read": prd.Read, - "list": prd.List, - "delete": prd.Delete, - "patch": prd.Patch, - }) -} diff --git a/pkg/providers/legacy/email/email.go b/pkg/providers/legacy/email/email.go index a26515c..7cca119 100644 --- a/pkg/providers/legacy/email/email.go +++ b/pkg/providers/legacy/email/email.go @@ -64,7 +64,7 @@ type MailParams = providertypes.LegacyParams[MailVars] var emailRoutine sync.Map // Send sends email -func Send(ctx context.Context, params *MailParams) (res *any, err error) { +func Send(_ context.Context, params *MailParams) (res *any, err error) { pCtx := params.ProcessContext act := params.Action id := fmt.Sprint(pCtx.GetData(model.ContextStepSessionID)) diff --git a/pkg/providers/legacy/kube/kube.go b/pkg/providers/legacy/kube/kube.go index d27c5cb..f925183 100644 --- a/pkg/providers/legacy/kube/kube.go +++ b/pkg/providers/legacy/kube/kube.go @@ -55,7 +55,7 @@ func handleContext(ctx context.Context, cluster string) context.Context { return multicluster.WithCluster(ctx, cluster) } -func apply(ctx context.Context, cluster, owner string, workloads ...*unstructured.Unstructured) error { +func apply(ctx context.Context, _, _ string, workloads ...*unstructured.Unstructured) error { cli := singleton.KubeClient.Get() for _, workload := range workloads { existing := new(unstructured.Unstructured) @@ -96,7 +96,8 @@ func apply(ctx context.Context, cluster, owner string, workloads ...*unstructure return nil } -func delete(ctx context.Context, cluster, owner string, manifest *unstructured.Unstructured) error { +// nolint:revive +func delete(ctx context.Context, _, _ string, manifest *unstructured.Unstructured) error { return singleton.KubeClient.Get().Delete(ctx, manifest) } diff --git a/pkg/providers/legacy/metrics/prom_check.go b/pkg/providers/legacy/metrics/prom_check.go index 068183c..ed255d5 100644 --- a/pkg/providers/legacy/metrics/prom_check.go +++ b/pkg/providers/legacy/metrics/prom_check.go @@ -177,7 +177,7 @@ func getQueryResult(ctx context.Context, vars PromVars) (string, error) { return valueStr, nil } -func compareValueWithCondition(ctx context.Context, valueStr string, vars PromVars) (bool, error) { +func compareValueWithCondition(_ context.Context, valueStr string, vars PromVars) (bool, error) { template := fmt.Sprintf("if: %s %s", valueStr, vars.Condition) res, err := cuecontext.New().CompileString(template).LookupPath(cue.ParsePath("if")).Bool() if err != nil { diff --git a/pkg/providers/legacy/time/time.go b/pkg/providers/legacy/time/time.go index 6db4543..e132adf 100644 --- a/pkg/providers/legacy/time/time.go +++ b/pkg/providers/legacy/time/time.go @@ -37,7 +37,7 @@ type Vars struct { type Params = providertypes.LegacyParams[Vars] // Timestamp convert date to timestamp -func Timestamp(ctx context.Context, params *Params) (*Vars, error) { +func Timestamp(_ context.Context, params *Params) (*Vars, error) { date := params.Params.Date layout := params.Params.Layout if date == "" { @@ -56,7 +56,7 @@ func Timestamp(ctx context.Context, params *Params) (*Vars, error) { } // Date convert timestamp to date -func Date(ctx context.Context, params *Params) (*Vars, error) { +func Date(_ context.Context, params *Params) (*Vars, error) { timestamp := params.Params.Timestamp layout := params.Params.Layout if layout == "" { diff --git a/pkg/providers/legacy/util/util.go b/pkg/providers/legacy/util/util.go index 0ce236f..35c94c9 100644 --- a/pkg/providers/legacy/util/util.go +++ b/pkg/providers/legacy/util/util.go @@ -48,7 +48,7 @@ type PatchResult struct { } // PatchK8sObject patch k8s object -func PatchK8sObject(ctx context.Context, params *providertypes.LegacyParams[cue.Value]) (cue.Value, error) { +func PatchK8sObject(_ context.Context, params *providertypes.LegacyParams[cue.Value]) (cue.Value, error) { base, err := model.NewBase(params.Params.LookupPath(cue.ParsePath("value"))) if err != nil { return cue.Value{}, err @@ -78,7 +78,7 @@ type StringReturns struct { type StringParams = providertypes.LegacyParams[StringVars] // String convert byte to string -func String(ctx context.Context, params *StringParams) (*StringReturns, error) { +func String(_ context.Context, params *StringParams) (*StringReturns, error) { return &StringReturns{ String: string(params.Params.Byte), }, nil @@ -155,7 +155,7 @@ func Log(ctx context.Context, params *LogParams) (*any, error) { return nil, nil } -func printDataInLog(ctx context.Context, data any, level int, pCtx process.Context) error { +func printDataInLog(_ context.Context, data any, level int, pCtx process.Context) error { var message string switch v := data.(type) { case string: diff --git a/pkg/providers/legacy/workspace/workspace.go b/pkg/providers/legacy/workspace/workspace.go index 6a70b58..1cb8414 100644 --- a/pkg/providers/legacy/workspace/workspace.go +++ b/pkg/providers/legacy/workspace/workspace.go @@ -59,7 +59,7 @@ type VarReturns struct { type VarParams = providertypes.LegacyParams[VarVars] // DoVar get & put variable from context. -func DoVar(ctx context.Context, params *VarParams) (*VarReturns, error) { +func DoVar(_ context.Context, params *VarParams) (*VarReturns, error) { wfCtx := params.RuntimeParams.WorkflowContext path := params.Params.Path @@ -111,7 +111,7 @@ type WaitVars struct { type WaitParams = providertypes.LegacyParams[WaitVars] // Wait let workflow wait. -func Wait(ctx context.Context, params *WaitParams) (*any, error) { +func Wait(_ context.Context, params *WaitParams) (*any, error) { if params.Params.Continue { return nil, nil } @@ -120,13 +120,13 @@ func Wait(ctx context.Context, params *WaitParams) (*any, error) { } // Break let workflow terminate. -func Break(ctx context.Context, params *ActionParams) (*any, error) { +func Break(_ context.Context, params *ActionParams) (*any, error) { params.Action.Terminate(params.Params.Message) return nil, errors.GenericActionError(errors.ActionTerminate) } // Fail let the step fail, its status is failed and reason is Action -func Fail(ctx context.Context, params *ActionParams) (*any, error) { +func Fail(_ context.Context, params *ActionParams) (*any, error) { params.Action.Fail(params.Params.Message) return nil, errors.GenericActionError(errors.ActionTerminate) } @@ -141,7 +141,7 @@ type SuspendVars struct { type SuspendParams = providertypes.LegacyParams[SuspendVars] // Suspend let the step suspend, its status is suspending and reason is Suspend -func Suspend(ctx context.Context, params *SuspendParams) (*any, error) { +func Suspend(_ context.Context, params *SuspendParams) (*any, error) { pCtx := params.ProcessContext wfCtx := params.WorkflowContext act := params.Action @@ -184,7 +184,7 @@ func Suspend(ctx context.Context, params *SuspendParams) (*any, error) { } // Message writes message to step status, note that the message will be overwritten by the next message. -func Message(ctx context.Context, params *ActionParams) (*any, error) { +func Message(_ context.Context, params *ActionParams) (*any, error) { params.Action.Message(params.Params.Message) return nil, nil } diff --git a/pkg/providers/metrics/prom_check.go b/pkg/providers/metrics/prom_check.go deleted file mode 100644 index 1b5f24d..0000000 --- a/pkg/providers/metrics/prom_check.go +++ /dev/null @@ -1,210 +0,0 @@ -/* -Copyright 2022 The KubeVela Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package metrics - -import ( - "fmt" - "strconv" - "time" - - monitorContext "github.com/kubevela/pkg/monitor/context" - wfContext "github.com/kubevela/workflow/pkg/context" - "github.com/kubevela/workflow/pkg/cue/model/value" - "github.com/kubevela/workflow/pkg/types" - "github.com/prometheus/client_golang/api" - v1 "github.com/prometheus/client_golang/api/prometheus/v1" - "github.com/prometheus/common/model" -) - -const ( - // ProviderName is provider name for install. - ProviderName = "metrics" -) - -type provider struct{} - -// PromCheck do health check from metrics from prometheus -func (h *provider) PromCheck(ctx monitorContext.Context, wfCtx wfContext.Context, v *value.Value, act types.Action) error { //nolint:revive,unused - stepID, err := v.GetString("stepID") - if err != nil { - return err - } - - valueStr, err := getQueryResult(ctx, v) - if err != nil { - return err - } - - conditionStr, err := v.GetString("condition") - if err != nil { - return err - } - - res, err := compareValueWithCondition(valueStr, conditionStr, v) - - if err != nil { - return err - } - - if res { - // meet the condition - return handleSuccessCompare(wfCtx, stepID, v, conditionStr, valueStr) - } - return handleFailCompare(wfCtx, stepID, v, conditionStr, valueStr) -} - -func handleSuccessCompare(wfCtx wfContext.Context, stepID string, v *value.Value, conditionStr, valueStr string) error { - // clean up fail timeStamp - setMetricsStatusTime(wfCtx, stepID, "fail", 0) - d, err := v.GetString("duration") - if err != nil { - return err - } - duration, err := time.ParseDuration(d) - if err != nil { - return err - } - - st := getMetricsStatusTime(wfCtx, stepID, "success") - if st == 0 { - // first success - if err := v.FillObject(fmt.Sprintf("The healthy condition should be %s, and the query result is %s, indicating success.", conditionStr, valueStr), "message"); err != nil { - return err - } - setMetricsStatusTime(wfCtx, stepID, "success", time.Now().Unix()) - return v.FillObject(false, "result") - } - successTime := time.Unix(st, 0) - if successTime.Add(duration).Before(time.Now()) { - if err = v.FillObject("The metric check has passed successfully.", "message"); err != nil { - return err - } - return v.FillObject(true, "result") - } - if err := v.FillObject(fmt.Sprintf("The healthy condition should be %s, and the query result is %s, indicating success. The success has persisted for %s, with success duration being %s.", conditionStr, valueStr, time.Since(successTime).String(), duration), "message"); err != nil { - return err - } - return v.FillObject(false, "result") -} - -func handleFailCompare(wfCtx wfContext.Context, stepID string, v *value.Value, conditionStr, valueStr string) error { - // clean up success timeStamp - setMetricsStatusTime(wfCtx, stepID, "success", 0) - ft := getMetricsStatusTime(wfCtx, stepID, "") - d, err := v.GetString("failDuration") - if err != nil { - return err - } - failDuration, err := time.ParseDuration(d) - if err != nil { - return err - } - - if ft == 0 { - // first failed - setMetricsStatusTime(wfCtx, stepID, "fail", time.Now().Unix()) - if err := v.FillObject(fmt.Sprintf("The healthy condition should be %s, but the query result is %s, indicating failure, with the failure duration being %s. This is first failed checking.", conditionStr, valueStr, failDuration), "message"); err != nil { - return err - } - return v.FillObject(false, "result") - } - - failTime := time.Unix(ft, 0) - if failTime.Add(failDuration).Before(time.Now()) { - if err = v.FillObject(true, "failed"); err != nil { - return err - } - if err := v.FillObject(fmt.Sprintf("The healthy condition should be %s, but the query result is %s, indicating failure. The failure has persisted for %s, with the failure duration being %s. The check has terminated.", conditionStr, valueStr, time.Since(failTime).String(), failDuration), "message"); err != nil { - return err - } - return v.FillObject(false, "result") - } - if err := v.FillObject(fmt.Sprintf("The healthy condition should be %s, but the query result is %s, indicating failure. The failure has persisted for %s, with the failure duration being %s.", conditionStr, valueStr, time.Since(failTime).String(), failDuration), "message"); err != nil { - return err - } - return v.FillObject(false, "result") -} - -func getQueryResult(ctx monitorContext.Context, v *value.Value) (string, error) { - addr, err := v.GetString("metricEndpoint") - if err != nil { - return "", err - } - c, err := api.NewClient(api.Config{ - Address: addr, - }) - if err != nil { - return "", err - } - promCli := v1.NewAPI(c) - query, err := v.GetString("query") - if err != nil { - return "", err - } - resp, _, err := promCli.Query(ctx, query, time.Now()) - if err != nil { - return "", err - } - - var valueStr string - switch v := resp.(type) { - case *model.Scalar: - valueStr = v.Value.String() - case model.Vector: - if len(v) != 1 { - return "", fmt.Errorf(fmt.Sprintf("ehe query is returning %d results when it should only return one. Please review the query to identify and fix the issue", len(v))) - } - valueStr = v[0].Value.String() - default: - return "", fmt.Errorf("cannot handle the not query value") - } - return valueStr, nil -} - -func compareValueWithCondition(valueStr string, conditionStr string, v *value.Value) (bool, error) { //nolint:revive,unused - template := fmt.Sprintf("if: %s %s", valueStr, conditionStr) - cueValue, err := value.NewValue(template, nil, "") - if err != nil { - return false, err - } - res, err := cueValue.GetBool("if") - if err != nil { - return false, err - } - return res, nil -} - -func setMetricsStatusTime(wfCtx wfContext.Context, stepID string, status string, time int64) { - wfCtx.SetMutableValue(strconv.FormatInt(time, 10), stepID, "metrics", status, "time") -} - -func getMetricsStatusTime(wfCtx wfContext.Context, stepID string, status string) int64 { - str := wfCtx.GetMutableValue(stepID, "metrics", status, "time") - if len(str) == 0 { - return 0 - } - t, _ := strconv.ParseInt(str, 10, 64) - return t -} - -// Install register handlers to provider discover. -func Install(p types.Providers) { - prd := &provider{} - p.Register(ProviderName, map[string]types.Handler{ - "promCheck": prd.PromCheck, - }) -} diff --git a/pkg/providers/util/util.go b/pkg/providers/util/util.go deleted file mode 100644 index 8eaad85..0000000 --- a/pkg/providers/util/util.go +++ /dev/null @@ -1,175 +0,0 @@ -/* - Copyright 2022. The KubeVela Authors. - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -*/ - -package util - -import ( - "encoding/json" - "fmt" - - monitorContext "github.com/kubevela/pkg/monitor/context" - - wfContext "github.com/kubevela/workflow/pkg/context" - "github.com/kubevela/workflow/pkg/cue/model" - "github.com/kubevela/workflow/pkg/cue/model/value" - "github.com/kubevela/workflow/pkg/cue/process" - "github.com/kubevela/workflow/pkg/types" -) - -const ( - // ProviderName is provider name for install. - ProviderName = "util" -) - -type provider struct { - pCtx process.Context -} - -func (p *provider) PatchK8sObject(ctx monitorContext.Context, wfCtx wfContext.Context, v *value.Value, act types.Action) error { //nolint:revive,unused - val, err := v.LookupValue("value") - if err != nil { - return err - } - pv, err := v.LookupValue("patch") - if err != nil { - return err - } - base, err := model.NewBase(val.CueValue()) - if err != nil { - return err - } - if err = base.Unify(pv.CueValue()); err != nil { - return v.FillObject(err, "err") - } - - workload, err := base.Unstructured() - if err != nil { - return v.FillObject(err, "err") - } - return v.FillObject(workload.Object, "result") -} - -// String convert byte to string -func (p *provider) String(ctx monitorContext.Context, wfCtx wfContext.Context, v *value.Value, act types.Action) error { //nolint:revive,unused - b, err := v.LookupValue("bt") - if err != nil { - return err - } - s, err := b.CueValue().Bytes() - if err != nil { - return err - } - return v.FillObject(string(s), "str") -} - -// Log print cue value in log -func (p *provider) Log(ctx monitorContext.Context, wfCtx wfContext.Context, v *value.Value, act types.Action) error { //nolint:revive,unused - stepName := fmt.Sprint(p.pCtx.GetData(model.ContextStepName)) - stepID := fmt.Sprint(p.pCtx.GetData(model.ContextStepSessionID)) - config := make(map[string]types.LogConfig) - c := wfCtx.GetMutableValue(types.ContextKeyLogConfig) - if c != "" { - if err := json.Unmarshal([]byte(c), &config); err != nil { - return err - } - } - stepConfig := config[stepName] - data, err := v.LookupValue("data") - if err == nil { - level := 3 - logLevel, err := v.LookupValue("level") - if err == nil { - l, err := logLevel.CueValue().Int64() - if err == nil { - level = int(l) - } - } - if err := printDataInLog(ctx, data, level, stepID, &stepConfig); err != nil { - return err - } - } - source, err := v.LookupValue("source") - if err == nil { - if err := setSourceInLog(source, &stepConfig); err != nil { - return err - } - } - config[stepName] = stepConfig - b, err := json.Marshal(config) - if err != nil { - return err - } - wfCtx.SetMutableValue(string(b), types.ContextKeyLogConfig) - return nil -} - -func printDataInLog(ctx monitorContext.Context, data *value.Value, level int, stepID string, stepConfig *types.LogConfig) error { - stepConfig.Data = true - logCtx := ctx.Fork("cue logs") - logCtx.AddTag(model.ContextStepSessionID, stepID) - logCtx.V(level) - if s, err := data.GetString(); err == nil { - logCtx.Info(s) - return nil - } - var tmp interface{} - if err := data.UnmarshalTo(&tmp); err != nil { - return err - } - b, err := json.Marshal(tmp) - if err != nil { - return err - } - logCtx.Info(string(b)) - return nil -} - -func setSourceInLog(source *value.Value, stepConfig *types.LogConfig) error { - if stepConfig.Source == nil { - stepConfig.Source = &types.LogSource{} - } - if v, err := source.LookupValue("url"); err == nil { - url, err := v.GetString() - if err != nil { - return err - } - stepConfig.Source.URL = url - } - if v, err := source.LookupValue("resources"); err == nil { - b, err := v.CueValue().MarshalJSON() - if err != nil { - return err - } - resources := []types.Resource{} - if err := json.Unmarshal(b, &resources); err != nil { - return err - } - stepConfig.Source.Resources = resources - } - return nil -} - -// Install register handlers to provider discover. -func Install(p types.Providers, pCtx process.Context) { - prd := &provider{ - pCtx: pCtx, - } - p.Register(ProviderName, map[string]types.Handler{ - "patch-k8s-object": prd.PatchK8sObject, - "string": prd.String, - "log": prd.Log, - }) -} diff --git a/pkg/providers/workspace/workspace.go b/pkg/providers/workspace/workspace.go deleted file mode 100644 index 3e82afc..0000000 --- a/pkg/providers/workspace/workspace.go +++ /dev/null @@ -1,198 +0,0 @@ -/* -Copyright 2022 The KubeVela Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package workspace - -import ( - "fmt" - "strings" - "time" - - monitorContext "github.com/kubevela/pkg/monitor/context" - "sigs.k8s.io/kind/pkg/errors" - - "github.com/kubevela/workflow/api/v1alpha1" - wfContext "github.com/kubevela/workflow/pkg/context" - "github.com/kubevela/workflow/pkg/cue/model" - "github.com/kubevela/workflow/pkg/cue/model/value" - "github.com/kubevela/workflow/pkg/cue/process" - "github.com/kubevela/workflow/pkg/types" -) - -const ( - // ProviderName is provider name. - ProviderName = "builtin" - // ResumeTimeStamp is resume time stamp. - ResumeTimeStamp = "resumeTimeStamp" - // SuspendTimeStamp is suspend time stamp. - SuspendTimeStamp = "suspendTimeStamp" -) - -type provider struct { - pCtx process.Context -} - -// DoVar get & put variable from context. -func (h *provider) DoVar(ctx monitorContext.Context, wfCtx wfContext.Context, v *value.Value, act types.Action) error { //nolint:revive,unused - methodV, err := v.Field("method") - if err != nil { - return err - } - method, err := methodV.String() - if err != nil { - return err - } - - pathV, err := v.Field("path") - if err != nil { - return err - } - path, err := pathV.String() - if err != nil { - return err - } - - switch method { - case "Get": - value, err := wfCtx.GetVar(strings.Split(path, ".")...) - if err != nil { - return err - } - raw, err := value.String() - if err != nil { - return err - } - return v.FillRaw(raw, "value") - case "Put": - value, err := v.LookupValue("value") - if err != nil { - return err - } - return wfCtx.SetVar(value, strings.Split(path, ".")...) - } - return nil -} - -// Wait let workflow wait. -func (h *provider) Wait(ctx monitorContext.Context, wfCtx wfContext.Context, v *value.Value, act types.Action) error { //nolint:revive,unused - cv := v.CueValue() - if cv.Exists() { - ret := cv.LookupPath(value.FieldPath("continue")) - if ret.Exists() { - isContinue, err := ret.Bool() - if err == nil && isContinue { - return nil - } - } - } - msg, _ := v.GetString("message") - act.Wait(msg) - return nil -} - -// Break let workflow terminate. -func (h *provider) Break(ctx monitorContext.Context, wfCtx wfContext.Context, v *value.Value, act types.Action) error { //nolint:revive,unused - var msg string - if v != nil { - msg, _ = v.GetString("message") - } - act.Terminate(msg) - return nil -} - -// Fail let the step fail, its status is failed and reason is Action -func (h *provider) Fail(ctx monitorContext.Context, wfCtx wfContext.Context, v *value.Value, act types.Action) error { //nolint:revive,unused - var msg string - if v != nil { - msg, _ = v.GetString("message") - } - act.Fail(msg) - return nil -} - -// Suspend let the step suspend, its status is suspending and reason is Suspend -func (h *provider) Suspend(ctx monitorContext.Context, wfCtx wfContext.Context, v *value.Value, act types.Action) error { //nolint:revive,unused - stepID := fmt.Sprint(h.pCtx.GetData(model.ContextStepSessionID)) - timestamp := wfCtx.GetMutableValue(stepID, ResumeTimeStamp) - var msg string - if v != nil { - msg, _ = v.GetString("message") - if msg == "" { - msg = fmt.Sprintf("Suspended by field %s", v.FieldName()) - } - } - if timestamp != "" { - t, err := time.Parse(time.RFC3339, timestamp) - if err != nil { - return errors.Wrap(err, "failed to parse timestamp") - } - if time.Now().After(t) { - act.Resume("") - return nil - } - act.Suspend(msg) - return nil - } - if v != nil { - d, _ := v.LookupValue("duration") - if d != nil && d.CueValue().Exists() { - dur, err := d.CueValue().String() - if err != nil { - return err - } - duration, err := time.ParseDuration(dur) - if err != nil { - return errors.Wrap(err, "failed to parse duration") - } - wfCtx.SetMutableValue(time.Now().Add(duration).Format(time.RFC3339), stepID, ResumeTimeStamp) - } - } - if ts := wfCtx.GetMutableValue(stepID, v.FieldName(), SuspendTimeStamp); ts != "" { - if act.GetStatus().Phase == v1alpha1.WorkflowStepPhaseRunning { - // if it is already suspended before and has been resumed, we should not suspend it again. - return nil - } - } else { - wfCtx.SetMutableValue(time.Now().Format(time.RFC3339), stepID, v.FieldName(), SuspendTimeStamp) - } - act.Suspend(msg) - return nil -} - -// Message writes message to step status, note that the message will be overwritten by the next message. -func (h *provider) Message(ctx monitorContext.Context, wfCtx wfContext.Context, v *value.Value, act types.Action) error { //nolint:revive,unused - var msg string - if v != nil { - msg, _ = v.GetString("message") - } - act.Message(msg) - return nil -} - -// Install register handler to provider discover. -func Install(p types.Providers, pCtx process.Context) { - prd := &provider{ - pCtx: pCtx, - } - p.Register(ProviderName, map[string]types.Handler{ - "wait": prd.Wait, - "break": prd.Break, - "fail": prd.Fail, - "message": prd.Message, - "var": prd.DoVar, - "suspend": prd.Suspend, - }) -} diff --git a/pkg/tasks/custom/task.go b/pkg/tasks/custom/task.go index fc6cef1..daf378e 100644 --- a/pkg/tasks/custom/task.go +++ b/pkg/tasks/custom/task.go @@ -168,6 +168,7 @@ func (t *TaskLoader) makeTaskGenerator(templ string) (types.TaskGenerator, error Action: exec, }) + fmt.Println("===make task generator compiler", options.Compiler) basicVal, err := MakeBasicValue(tracer, options.Compiler, wfStep.Properties, options.PCtx) if err != nil { tracer.Error(err, "make context parameter") @@ -257,7 +258,7 @@ func (t *TaskLoader) makeTaskGenerator(templ string) (types.TaskGenerator, error // ValidateIfValue validates the if value func ValidateIfValue(ctx wfContext.Context, step v1alpha1.WorkflowStep, stepStatus map[string]v1alpha1.StepStatus, basicVal cue.Value) (bool, error) { s, _ := util.ToString(basicVal) - template := fmt.Sprintf("if: %s\n%s\n%s\n%s", step.If, getInputsTemplate(ctx, step, basicVal), buildValueForStatus(ctx, step, stepStatus), s) + template := fmt.Sprintf("if: %s\n%s\n%s\n%s", step.If, getInputsTemplate(ctx, step, basicVal), buildValueForStatus(ctx, stepStatus), s) v := cuecontext.New().CompileString(template).LookupPath(cue.ParsePath("if")) if v.Err() != nil { return false, errors.WithMessage(v.Err(), "invalid if value") @@ -269,7 +270,7 @@ func ValidateIfValue(ctx wfContext.Context, step v1alpha1.WorkflowStep, stepStat return check, nil } -func buildValueForStatus(ctx wfContext.Context, step v1alpha1.WorkflowStep, stepStatus map[string]v1alpha1.StepStatus) string { +func buildValueForStatus(_ wfContext.Context, stepStatus map[string]v1alpha1.StepStatus) string { statusMap := make(map[string]interface{}) for name, ss := range stepStatus { abbrStatus := struct { @@ -342,7 +343,7 @@ func getInputsTemplate(ctx wfContext.Context, step v1alpha1.WorkflowStep, basicV } // NewTaskLoader create a tasks loader. -func NewTaskLoader(lt LoadTaskTemplate, logLevel int, pCtx process.Context) *TaskLoader { +func NewTaskLoader(lt LoadTaskTemplate, logLevel int, pCtx process.Context, compiler *cuex.Compiler) *TaskLoader { return &TaskLoader{ loadTemplate: lt, runOptionsProcess: func(options *types.TaskRunOptions) { @@ -353,6 +354,7 @@ func NewTaskLoader(lt LoadTaskTemplate, logLevel int, pCtx process.Context) *Tas options.PostStopHooks = append(options.PostStopHooks, hooks.Output) } options.PCtx = pCtx + options.Compiler = compiler }, logLevel: logLevel, } diff --git a/pkg/tasks/custom/task_test.go b/pkg/tasks/custom/task_test.go index 01bdc98..ff43e67 100644 --- a/pkg/tasks/custom/task_test.go +++ b/pkg/tasks/custom/task_test.go @@ -94,7 +94,7 @@ func TestTaskLoader(t *testing.T) { Name: "app", Namespace: "default", }) - tasksLoader := NewTaskLoader(mockLoadTemplate, 0, pCtx) + tasksLoader := NewTaskLoader(mockLoadTemplate, 0, pCtx, compiler) steps := []v1alpha1.WorkflowStep{ { @@ -154,9 +154,7 @@ func TestTaskLoader(t *testing.T) { r.NoError(err) run, err := gen(step, &types.TaskGeneratorOptions{}) r.NoError(err) - status, action, err := run.Run(wfCtx, &types.TaskRunOptions{ - Compiler: compiler, - }) + status, action, err := run.Run(wfCtx, &types.TaskRunOptions{}) r.NoError(err) if step.Name == "wait" { r.Equal(status.Phase, v1alpha1.WorkflowStepPhaseRunning) @@ -218,7 +216,7 @@ func TestErrCases(t *testing.T) { Name: "app", Namespace: "default", }) - tasksLoader := NewTaskLoader(mockLoadTemplate, 0, pCtx) + tasksLoader := NewTaskLoader(mockLoadTemplate, 0, pCtx, compiler) steps := []v1alpha1.WorkflowStep{ { @@ -278,7 +276,7 @@ func TestErrCases(t *testing.T) { r.NoError(err) run, err := gen(step, &types.TaskGeneratorOptions{}) r.NoError(err) - status, operation, _ := run.Run(wfCtx, &types.TaskRunOptions{Compiler: compiler}) + status, operation, _ := run.Run(wfCtx, &types.TaskRunOptions{}) switch step.Name { case "input-replace": r.Equal(status.Message, "") @@ -334,7 +332,7 @@ func TestPendingInputCheck(t *testing.T) { Name: "app", Namespace: "default", }) - tasksLoader := NewTaskLoader(mockLoadTemplate, 0, pCtx) + tasksLoader := NewTaskLoader(mockLoadTemplate, 0, pCtx, providers.Compiler.Get()) gen, err := tasksLoader.GetTaskGenerator(context.Background(), step.Type) r.NoError(err) run, err := gen(step, &types.TaskGeneratorOptions{}) @@ -364,7 +362,7 @@ func TestPendingDependsOnCheck(t *testing.T) { Name: "app", Namespace: "default", }) - tasksLoader := NewTaskLoader(mockLoadTemplate, 0, pCtx) + tasksLoader := NewTaskLoader(mockLoadTemplate, 0, pCtx, providers.Compiler.Get()) gen, err := tasksLoader.GetTaskGenerator(context.Background(), step.Type) r.NoError(err) run, err := gen(step, &types.TaskGeneratorOptions{}) @@ -393,7 +391,7 @@ func TestSkip(t *testing.T) { Name: "app", Namespace: "default", }) - tasksLoader := NewTaskLoader(mockLoadTemplate, 0, pCtx) + tasksLoader := NewTaskLoader(mockLoadTemplate, 0, pCtx, providers.Compiler.Get()) gen, err := tasksLoader.GetTaskGenerator(context.Background(), step.Type) r.NoError(err) runner, err := gen(step, &types.TaskGeneratorOptions{}) @@ -432,7 +430,7 @@ func TestTimeout(t *testing.T) { Name: "app", Namespace: "default", }) - tasksLoader := NewTaskLoader(mockLoadTemplate, 0, pCtx) + tasksLoader := NewTaskLoader(mockLoadTemplate, 0, pCtx, compiler) gen, err := tasksLoader.GetTaskGenerator(context.Background(), step.Type) r.NoError(err) runner, err := gen(step, &types.TaskGeneratorOptions{}) @@ -444,7 +442,6 @@ func TestTimeout(t *testing.T) { return &types.PreCheckResult{Timeout: true}, nil }, }, - Compiler: compiler, }) r.NoError(err) r.Equal(status.Phase, v1alpha1.WorkflowStepPhaseFailed) diff --git a/pkg/tasks/discover.go b/pkg/tasks/discover.go index 28e8480..3567846 100644 --- a/pkg/tasks/discover.go +++ b/pkg/tasks/discover.go @@ -39,7 +39,7 @@ func NewTaskDiscover(ctx monitorContext.Context, options types.StepGeneratorOpti builtin: map[string]types.TaskGenerator{ types.WorkflowStepTypeStepGroup: builtin.StepGroup, }, - customTaskDiscover: custom.NewTaskLoader(options.TemplateLoader.LoadTemplate, options.LogLevel, options.ProcessCtx), + customTaskDiscover: custom.NewTaskLoader(options.TemplateLoader.LoadTemplate, options.LogLevel, options.ProcessCtx, options.Compiler), } } diff --git a/pkg/tasks/discover_test.go b/pkg/tasks/discover_test.go index 75c4430..d5ea0b7 100644 --- a/pkg/tasks/discover_test.go +++ b/pkg/tasks/discover_test.go @@ -52,7 +52,7 @@ func TestDiscover(t *testing.T) { builtin: map[string]types.TaskGenerator{ "stepGroup": builtin.StepGroup, }, - customTaskDiscover: custom.NewTaskLoader(loadTemplate, 0, pCtx), + customTaskDiscover: custom.NewTaskLoader(loadTemplate, 0, pCtx, nil), } _, err := discover.GetTaskGenerator(context.Background(), "stepGroup") diff --git a/pkg/types/types.go b/pkg/types/types.go index 250dfcb..fa8538e 100644 --- a/pkg/types/types.go +++ b/pkg/types/types.go @@ -145,6 +145,7 @@ type StepGeneratorOptions struct { TemplateLoader template.Loader StepConvertor map[string]func(step v1alpha1.WorkflowStep) (v1alpha1.WorkflowStep, error) LogLevel int + Compiler *cuex.Compiler } // Action is that workflow provider can do. diff --git a/pkg/utils/operation.go b/pkg/utils/operation.go index b56b325..dd0df6f 100644 --- a/pkg/utils/operation.go +++ b/pkg/utils/operation.go @@ -179,12 +179,9 @@ func SuspendWorkflow(ctx context.Context, cli client.Client, run *v1alpha1.Workf if !found { return fmt.Errorf("can not find step %s", stepName) } - if err := retry.RetryOnConflict(retry.DefaultBackoff, func() error { + return retry.RetryOnConflict(retry.DefaultBackoff, func() error { return cli.Status().Patch(ctx, run, client.Merge) - }); err != nil { - return err - } - return nil + }) } // OperateSteps handles the operations to the steps @@ -232,12 +229,9 @@ func ResumeWorkflow(ctx context.Context, cli client.Client, run *v1alpha1.Workfl if !found { return fmt.Errorf("can not find step %s", stepName) } - if err := retry.RetryOnConflict(retry.DefaultBackoff, func() error { + return retry.RetryOnConflict(retry.DefaultBackoff, func() error { return cli.Status().Patch(ctx, run, client.Merge) - }); err != nil { - return err - } - return nil + }) } // Rollback is not supported for WorkflowRun @@ -284,11 +278,7 @@ func RestartWorkflow(ctx context.Context, cli client.Client, run *v1alpha1.Workf // reset the workflow status to restart the workflow run.Status = v1alpha1.WorkflowRunStatus{} - if err := cli.Status().Update(ctx, run); err != nil { - return err - } - - return nil + return cli.Status().Update(ctx, run) } // Terminate terminate workflow @@ -332,12 +322,9 @@ func TerminateWorkflow(ctx context.Context, cli client.Client, run *v1alpha1.Wor } } - if err := retry.RetryOnConflict(retry.DefaultBackoff, func() error { + return retry.RetryOnConflict(retry.DefaultBackoff, func() error { return cli.Status().Patch(ctx, run, client.Merge) - }); err != nil { - return err - } - return nil + }) } // RestartFromStep restart workflow from a failed step @@ -380,13 +367,9 @@ func RestartFromStep(ctx context.Context, cli client.Client, run *v1alpha1.Workf }); err != nil { return err } - if err := retry.RetryOnConflict(retry.DefaultBackoff, func() error { + return retry.RetryOnConflict(retry.DefaultBackoff, func() error { return cli.Update(ctx, cm) - }); err != nil { - return err - } - - return nil + }) } // CleanStatusFromStep cleans status and context data from a specified step diff --git a/pkg/webhook/v1alpha1/workflowrun/validating_handler.go b/pkg/webhook/v1alpha1/workflowrun/validating_handler.go index b9b6d7d..1062e51 100644 --- a/pkg/webhook/v1alpha1/workflowrun/validating_handler.go +++ b/pkg/webhook/v1alpha1/workflowrun/validating_handler.go @@ -101,7 +101,7 @@ func (h *ValidatingHandler) Handle(ctx context.Context, req admission.Request) a } // RegisterValidatingHandler will register application validate handler to the webhook -func RegisterValidatingHandler(mgr manager.Manager, args controllers.Args) { +func RegisterValidatingHandler(mgr manager.Manager, _ controllers.Args) { server := mgr.GetWebhookServer() server.Register("/validating-core-oam-dev-v1alpha1-workflowruns", &webhook.Admission{Handler: &ValidatingHandler{}}) }