diff --git a/go.mod b/go.mod index 205e250bb0..f73427b046 100644 --- a/go.mod +++ b/go.mod @@ -4,7 +4,7 @@ go 1.23.1 require ( code.cloudfoundry.org/lager v2.0.0+incompatible - github.com/99designs/gqlgen v0.17.61 + github.com/99designs/gqlgen v0.17.62 github.com/Azure/azure-sdk-for-go v68.0.0+incompatible github.com/Azure/go-autorest/autorest v0.11.29 github.com/Azure/go-autorest/autorest/adal v0.9.24 @@ -109,7 +109,7 @@ require ( github.com/stretchr/objx v0.5.2 // indirect github.com/tidwall/gjson v1.17.1 // indirect github.com/tidwall/pretty v1.2.1 // indirect - github.com/vektah/gqlparser/v2 v2.5.20 // indirect + github.com/vektah/gqlparser/v2 v2.5.21 // indirect github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb // indirect github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 // indirect github.com/xeipuuv/gojsonschema v1.2.0 // indirect @@ -123,7 +123,7 @@ require ( golang.org/x/sys v0.28.0 // indirect golang.org/x/term v0.27.0 // indirect golang.org/x/text v0.21.0 // indirect - google.golang.org/protobuf v1.35.2 // indirect + google.golang.org/protobuf v1.36.1 // indirect gopkg.in/inf.v0 v0.9.1 // indirect gotest.tools/v3 v3.5.1 // indirect k8s.io/klog/v2 v2.130.1 // indirect diff --git a/go.sum b/go.sum index 55c6292b44..4f7696fc95 100644 --- a/go.sum +++ b/go.sum @@ -2,8 +2,8 @@ code.cloudfoundry.org/lager v2.0.0+incompatible h1:WZwDKDB2PLd/oL+USK4b4aEjUymIe code.cloudfoundry.org/lager v2.0.0+incompatible/go.mod h1:O2sS7gKP3HM2iemG+EnwvyNQK7pTSC6Foi4QiMp9sSk= dario.cat/mergo v1.0.1 h1:Ra4+bf83h2ztPIQYNP99R6m+Y7KfnARDfID+a+vLl4s= dario.cat/mergo v1.0.1/go.mod h1:uNxQE+84aUszobStD9th8a29P2fMDhsBdgRYvZOxGmk= -github.com/99designs/gqlgen v0.17.61 h1:vE7xLRC066n9wehgjeplILOWtwz75zbzcV2/Iv9i3pw= -github.com/99designs/gqlgen v0.17.61/go.mod h1:rFU1T3lhv/tPeAlww/DJ4ol2YxT/pPpue+xxPbkd3r4= +github.com/99designs/gqlgen v0.17.62 h1:Wovt1+XJN9dTWYh92537Y9a5FuMVSkrQL4bn0a8v5Rg= +github.com/99designs/gqlgen v0.17.62/go.mod h1:sVCM2iwIZisJjTI/DEC3fpH+HFgxY1496ZJ+jbT9IjA= github.com/Azure/azure-sdk-for-go v68.0.0+incompatible h1:fcYLmCpyNYRnvJbPerq7U0hS+6+I79yEDJBqVNcqUzU= github.com/Azure/azure-sdk-for-go v68.0.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161 h1:L/gRVlceqvL25UVaW/CKtUDjefjrs0SPonmDGUVOYP0= @@ -368,8 +368,8 @@ github.com/tidwall/match v1.1.1/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JT github.com/tidwall/pretty v1.2.0/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= github.com/tidwall/pretty v1.2.1 h1:qjsOFOWWQl+N3RsoF5/ssm1pHmJJwhjlSbZ51I6wMl4= github.com/tidwall/pretty v1.2.1/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= -github.com/vektah/gqlparser/v2 v2.5.20 h1:kPaWbhBntxoZPaNdBaIPT1Kh0i1b/onb5kXgEdP5JCo= -github.com/vektah/gqlparser/v2 v2.5.20/go.mod h1:xMl+ta8a5M1Yo1A1Iwt/k7gSpscwSnHZdw7tfhEGfTM= +github.com/vektah/gqlparser/v2 v2.5.21 h1:Zw1rG2dr1pRR4wqwbVq4d6+xk2f4ut/yo+hwr4QjE08= +github.com/vektah/gqlparser/v2 v2.5.21/go.mod h1:xMl+ta8a5M1Yo1A1Iwt/k7gSpscwSnHZdw7tfhEGfTM= github.com/vrischmann/envconfig v1.3.0 h1:4XIvQTXznxmWMnjouj0ST5lFo/WAYf5Exgl3x82crEk= github.com/vrischmann/envconfig v1.3.0/go.mod h1:bbvxFYJdRSpXrhS63mBFtKJzkDiNkyArOLXtY6q0kuI= github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU= @@ -500,8 +500,8 @@ google.golang.org/genproto/googleapis/rpc v0.0.0-20241007155032-5fefd90f89a9 h1: google.golang.org/genproto/googleapis/rpc v0.0.0-20241007155032-5fefd90f89a9/go.mod h1:GX3210XPVPUjJbTUbvwI8f2IpZDMZuPJWDzDuebbviI= google.golang.org/grpc v1.67.1 h1:zWnc1Vrcno+lHZCOofnIMvycFcc0QRGIzm9dhnDX68E= google.golang.org/grpc v1.67.1/go.mod h1:1gLDyUQU7CTLJI90u3nXZ9ekeghjeM7pTDZlqFNg2AA= -google.golang.org/protobuf v1.35.2 h1:8Ar7bF+apOIoThw1EdZl0p1oWvMqTHmpA2fRTyZO8io= -google.golang.org/protobuf v1.35.2/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= +google.golang.org/protobuf v1.36.1 h1:yBPeRvTftaleIgM3PZ/WBIZ7XM/eEYAaEyCwvyjq/gk= +google.golang.org/protobuf v1.36.1/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/resources/keb/Chart.yaml b/resources/keb/Chart.yaml index 7c8f858dba..c9d02eb474 100644 --- a/resources/keb/Chart.yaml +++ b/resources/keb/Chart.yaml @@ -1,7 +1,7 @@ apiVersion: v2 -appVersion: "1.11.3" +appVersion: "1.11.5" name: keb description: description: Kyma Environment Broker Helm chart for Kubernetes -version: 1.11.3 +version: 1.11.5 type: application diff --git a/resources/keb/values.yaml b/resources/keb/values.yaml index 23849edd38..ffd1f5e92e 100644 --- a/resources/keb/values.yaml +++ b/resources/keb/values.yaml @@ -9,34 +9,34 @@ global: path: europe-docker.pkg.dev/kyma-project/prod kyma_environment_broker: dir: - version: "1.11.3" + version: "1.11.5" kyma_environment_broker_schema_migrator: dir: - version: 1.11.3 + version: 1.11.5 kyma_environments_subaccount_cleanup_job: dir: - version: "1.11.3" + version: "1.11.5" kyma_environment_trial_cleanup_job: dir: - version: "1.11.3" + version: "1.11.5" kyma_environment_expirator_job: dir: - version: "1.11.3" + version: "1.11.5" kyma_environment_deprovision_retrigger_job: dir: - version: "1.11.3" + version: "1.11.5" kyma_environment_runtime_reconciler: dir: - version: "1.11.3" + version: "1.11.5" kyma_environment_subaccount_sync: dir: - version: "1.11.3" + version: "1.11.5" kyma_environment_globalaccounts: dir: - version: "1.11.3" + version: "1.11.5" kyma_environment_service_binding_cleanup_job: dir: - version: 1.11.3 + version: 1.11.5 kyma_environment_broker: serviceAccountName: "kcp-kyma-environment-broker" diff --git a/sec-scanners-config.yaml b/sec-scanners-config.yaml index 44976ef262..d072705acf 100644 --- a/sec-scanners-config.yaml +++ b/sec-scanners-config.yaml @@ -1,17 +1,17 @@ module-name: kyma-environment-broker -rc-tag: 1.11.3 +rc-tag: 1.11.5 protecode: - - europe-docker.pkg.dev/kyma-project/prod/kyma-environment-broker:1.11.3 - - europe-docker.pkg.dev/kyma-project/prod/kyma-environment-deprovision-retrigger-job:1.11.3 - - europe-docker.pkg.dev/kyma-project/prod/kyma-environments-cleanup-job:1.11.3 - - europe-docker.pkg.dev/kyma-project/prod/kyma-environment-runtime-reconciler:1.11.3 - - europe-docker.pkg.dev/kyma-project/prod/kyma-environment-archiver-job:1.11.3 - - europe-docker.pkg.dev/kyma-project/prod/kyma-environment-expirator-job:1.11.3 - - europe-docker.pkg.dev/kyma-project/prod/kyma-environment-subaccount-cleanup-job:1.11.3 - - europe-docker.pkg.dev/kyma-project/prod/kyma-environment-subaccount-sync:1.11.3 - - europe-docker.pkg.dev/kyma-project/prod/kyma-environment-broker-globalaccounts:1.11.3 - - europe-docker.pkg.dev/kyma-project/prod/kyma-environment-broker-schema-migrator:1.11.3 - - europe-docker.pkg.dev/kyma-project/prod/kyma-environment-service-binding-cleanup-job:1.11.3 + - europe-docker.pkg.dev/kyma-project/prod/kyma-environment-broker:1.11.5 + - europe-docker.pkg.dev/kyma-project/prod/kyma-environment-deprovision-retrigger-job:1.11.5 + - europe-docker.pkg.dev/kyma-project/prod/kyma-environments-cleanup-job:1.11.5 + - europe-docker.pkg.dev/kyma-project/prod/kyma-environment-runtime-reconciler:1.11.5 + - europe-docker.pkg.dev/kyma-project/prod/kyma-environment-archiver-job:1.11.5 + - europe-docker.pkg.dev/kyma-project/prod/kyma-environment-expirator-job:1.11.5 + - europe-docker.pkg.dev/kyma-project/prod/kyma-environment-subaccount-cleanup-job:1.11.5 + - europe-docker.pkg.dev/kyma-project/prod/kyma-environment-subaccount-sync:1.11.5 + - europe-docker.pkg.dev/kyma-project/prod/kyma-environment-broker-globalaccounts:1.11.5 + - europe-docker.pkg.dev/kyma-project/prod/kyma-environment-broker-schema-migrator:1.11.5 + - europe-docker.pkg.dev/kyma-project/prod/kyma-environment-service-binding-cleanup-job:1.11.5 whitesource: language: golang-mod subprojects: false diff --git a/testing/e2e/skr-tester/Makefile b/testing/e2e/skr-tester/Makefile new file mode 100644 index 0000000000..22c5612ca3 --- /dev/null +++ b/testing/e2e/skr-tester/Makefile @@ -0,0 +1,18 @@ +# +# Make targets to build skr-tester artifacts +# + +ifndef ARTIFACTS + ARTIFACTS = . +endif + +build: $(foreach TOOL,skr-tester,$(foreach OS,linux windows darwin,build-$(OS)-$(TOOL))) + +build-windows-%: + CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build -o $(ARTIFACTS)/$*.exe $(CLI_FLAGS) cmd/main.go + +build-linux-%: + CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o $(ARTIFACTS)/$*-linux $(CLI_FLAGS) cmd/main.go + +build-darwin-%: + CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build -o $(ARTIFACTS)/$*-darwin $(CLI_FLAGS) cmd/main.go diff --git a/testing/e2e/skr-tester/cmd/main.go b/testing/e2e/skr-tester/cmd/main.go new file mode 100644 index 0000000000..07a71c0624 --- /dev/null +++ b/testing/e2e/skr-tester/cmd/main.go @@ -0,0 +1,29 @@ +package main + +import ( + "fmt" + "os" + "os/signal" + "skr-tester/pkg/command" + "syscall" +) + +func main() { + setupCloseHandler() + cmd := command.New() + + err := cmd.Execute() + if err != nil { + os.Exit(1) + } +} + +func setupCloseHandler() { + c := make(chan os.Signal, 2) + signal.Notify(c, syscall.SIGTERM, syscall.SIGINT) + go func() { + sig := <-c + fmt.Printf("\r- Signal '%v' received from Terminal. Exiting...\n ", sig) + os.Exit(0) + }() +} diff --git a/testing/e2e/skr-tester/go.mod b/testing/e2e/skr-tester/go.mod new file mode 100644 index 0000000000..3913c97d31 --- /dev/null +++ b/testing/e2e/skr-tester/go.mod @@ -0,0 +1,21 @@ +module skr-tester + +go 1.23.2 + +toolchain go1.23.4 + +require ( + github.com/int128/kubelogin v1.31.0 + github.com/sirupsen/logrus v1.9.3 + github.com/spf13/cobra v1.8.1 + github.com/spf13/pflag v1.0.5 +) + +require ( + github.com/go-logr/logr v1.4.2 // indirect + github.com/google/uuid v1.6.0 + github.com/google/wire v0.6.0 // indirect + github.com/inconshreveable/mousetrap v1.1.0 // indirect + golang.org/x/sys v0.26.0 // indirect + k8s.io/klog/v2 v2.130.1 // indirect +) diff --git a/testing/e2e/skr-tester/go.sum b/testing/e2e/skr-tester/go.sum new file mode 100644 index 0000000000..ff099d333f --- /dev/null +++ b/testing/e2e/skr-tester/go.sum @@ -0,0 +1,90 @@ +github.com/cpuguy83/go-md2man/v2 v2.0.4/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= +github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY= +github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= +github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= +github.com/google/subcommands v1.2.0/go.mod h1:ZjhPrFU+Olkh9WazFPsl27BQ4UPiG37m3yTrtFlrHVk= +github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= +github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/wire v0.6.0 h1:HBkoIh4BdSxoyo9PveV8giw7ZsaBOvzWKfcg/6MrVwI= +github.com/google/wire v0.6.0/go.mod h1:F4QhpQ9EDIdJ1Mbop/NZBRB+5yrR6qg3BnctaoUk6NA= +github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= +github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= +github.com/int128/kubelogin v1.31.0 h1:llwKwmuVYSjiKmMCDqXnYkx2x3mnAsYyCgXHIummWJA= +github.com/int128/kubelogin v1.31.0/go.mod h1:t2a1H/DrQ7itXsjG3WR1fQxNjAGCYeyhqI75/7B5578= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= +github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= +github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= +github.com/spf13/cobra v1.8.1 h1:e5/vxKd/rZsfSJMUX1agtjeTDf+qv1/JdBF8gg5k9ZM= +github.com/spf13/cobra v1.8.1/go.mod h1:wHxEcudfqmLYa8iTfL+OuZPbBZkmvliBWKIezN3kD9Y= +github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= +github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= +github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= +github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc= +golang.org/x/crypto v0.18.0/go.mod h1:R0j02AL6hcrfOiy9T4ZYp/rcWeMxM3L6QYxlOuEG1mg= +golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= +golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.14.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= +golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= +golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk= +golang.org/x/net v0.20.0/go.mod h1:z8BVo6PvndSri0LbOE3hAn0apkU+1YvI6E70E9jsnvY= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= +golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.16.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.26.0 h1:KHjCJyddX0LoSTb3J+vWpupP9p0oznkqVk/IfjymZbo= +golang.org/x/sys v0.26.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= +golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= +golang.org/x/term v0.12.0/go.mod h1:owVbMEjm3cBLCHdkQu9b1opXd4ETQWc3BhuQGKgXgvU= +golang.org/x/term v0.16.0/go.mod h1:yn7UURbUtPyrVJPGPq404EukNFxcm/foM+bV/bfcDsY= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= +golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= +golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= +golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= +golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= +golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58= +golang.org/x/tools v0.17.0/go.mod h1:xsh6VxdV005rRVaS6SSAf9oiAqljS7UZUacMZ8Bnsps= +golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +k8s.io/klog/v2 v2.130.1 h1:n9Xl7H1Xvksem4KFG4PYbdQCQxqc/tTUyrgXaOhHSzk= +k8s.io/klog/v2 v2.130.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE= diff --git a/testing/e2e/skr-tester/pkg/broker/client.go b/testing/e2e/skr-tester/pkg/broker/client.go new file mode 100644 index 0000000000..20b86d88de --- /dev/null +++ b/testing/e2e/skr-tester/pkg/broker/client.go @@ -0,0 +1,341 @@ +package broker + +import ( + "bytes" + "encoding/json" + "errors" + "fmt" + "io/ioutil" + "net/http" + "os" + "strings" + "time" +) + +const ( + scope = "broker:write" + kymaServiceID = "47c9dcbf-ff30-448e-ab36-d3bad66ba281" + trialPlanID = "7d55d31d-35ae-4438-bf13-6ffdfa107d9f" + defaultExpirationSeconds = 600 +) + +type OAuthCredentials struct { + ClientID string + ClientSecret string +} +type BTPOperatorCreds struct { + ClientID string + ClientSecret string + SMURL string + TokenURL string +} +type OAuthToken struct { + TokenURL string + Credentials OAuthCredentials + Token string + Expiry time.Time +} + +type BrokerClient struct { + Token *OAuthToken + Host string + GlobalAccountID string + SubaccountID string + UserID string + PlatformRegion string +} + +type BrokerConfig struct { + Host string + Credentials OAuthCredentials + GlobalAccountID string + SubaccountID string + UserID string + PlatformRegion string + TokenURL string +} + +func NewBrokerConfig() *BrokerConfig { + return &BrokerConfig{ + Host: getEnvOrThrow("KEB_HOST"), + Credentials: OAuthCredentials{ClientID: getEnvOrThrow("KEB_CLIENT_ID"), ClientSecret: getEnvOrThrow("KEB_CLIENT_SECRET")}, + GlobalAccountID: getEnvOrThrow("KEB_GLOBALACCOUNT_ID"), + SubaccountID: getEnvOrThrow("KEB_SUBACCOUNT_ID"), + UserID: getEnvOrThrow("KEB_USER_ID"), + PlatformRegion: os.Getenv("KEB_PLATFORM_REGION"), + TokenURL: getEnvOrThrow("KEB_TOKEN_URL"), + } +} + +func NewBrokerClient(config *BrokerConfig) *BrokerClient { + tokenURL := fmt.Sprintf("https://oauth2.%s/oauth2/token", config.Host) + if config.TokenURL != "" { + tokenURL = config.TokenURL + } + return &BrokerClient{ + Token: &OAuthToken{TokenURL: tokenURL, Credentials: config.Credentials}, + Host: config.Host, + GlobalAccountID: config.GlobalAccountID, + SubaccountID: config.SubaccountID, + UserID: config.UserID, + PlatformRegion: config.PlatformRegion, + } +} + +func (o *OAuthToken) GetToken(scopes string) (string, error) { + if o.Token != "" && time.Now().Before(o.Expiry) { + return o.Token, nil + } + + data := fmt.Sprintf("grant_type=client_credentials&client_id=%s&client_secret=%s&scope=%s", + o.Credentials.ClientID, o.Credentials.ClientSecret, scopes) + req, err := http.NewRequest("POST", o.TokenURL, strings.NewReader(data)) + if err != nil { + return "", err + } + req.Header.Set("Content-Type", "application/x-www-form-urlencoded") + + client := &http.Client{} + resp, err := client.Do(req) + if err != nil { + return "", err + } + defer resp.Body.Close() + + if resp.StatusCode != http.StatusOK { + return "", errors.New("failed to get token") + } + + var result map[string]interface{} + json.NewDecoder(resp.Body).Decode(&result) + o.Token = result["access_token"].(string) + o.Expiry = time.Now().Add(time.Duration(result["expires_in"].(float64)) * time.Second) + + return o.Token, nil +} + +func (c *BrokerClient) BuildRequest(payload interface{}, endpoint, verb string) (*http.Request, error) { + token, err := c.Token.GetToken(scope) + if err != nil { + return nil, err + } + platformRegion := c.GetPlatformRegion() + url := fmt.Sprintf("https://kyma-env-broker.%s/oauth/%sv2/%s", c.Host, platformRegion, endpoint) + jsonPayload, err := json.Marshal(payload) + if err != nil { + return nil, err + } + req, err := http.NewRequest(verb, url, bytes.NewBuffer(jsonPayload)) + if err != nil { + return nil, err + } + req.Header.Set("X-Broker-API-Version", "2.14") + req.Header.Set("Authorization", fmt.Sprintf("Bearer %s", token)) + req.Header.Set("Content-Type", "application/json") + return req, nil +} + +func (c *BrokerClient) BuildRequestWithoutToken(payload interface{}, endpoint, verb string) (*http.Request, error) { + url := fmt.Sprintf("https://kyma-env-broker.%s/oauth/v2/%s", c.Host, endpoint) + jsonPayload, err := json.Marshal(payload) + if err != nil { + return nil, err + } + req, err := http.NewRequest(verb, url, bytes.NewBuffer(jsonPayload)) + if err != nil { + return nil, err + } + req.Header.Set("X-Broker-API-Version", "2.14") + req.Header.Set("Content-Type", "application/json") + return req, nil +} + +func (c *BrokerClient) CallBroker(payload interface{}, endpoint, verb string) (map[string]interface{}, error) { + req, err := c.BuildRequest(payload, endpoint, verb) + if err != nil { + return nil, err + } + + client := &http.Client{} + resp, err := client.Do(req) + if err != nil { + return nil, err + } + defer resp.Body.Close() + + if resp.StatusCode != http.StatusOK && resp.StatusCode != http.StatusAccepted { + return nil, fmt.Errorf("error calling Broker: %s %s", resp.Status, resp.Status) + } + + var result map[string]interface{} + json.NewDecoder(resp.Body).Decode(&result) + return result, nil +} + +func (c *BrokerClient) CallBrokerWithoutToken(payload interface{}, endpoint, verb string) error { + req, err := c.BuildRequestWithoutToken(payload, endpoint, verb) + fmt.Printf("Request: %s %s\n", req.Method, req.URL) + if err != nil { + return err + } + + client := &http.Client{} + resp, err := client.Do(req) + if err != nil { + return err + } + defer resp.Body.Close() + + body, err := ioutil.ReadAll(resp.Body) + if err != nil { + return err + } + + fmt.Println("Response:", string(body)) + defer resp.Body.Close() + + if resp.StatusCode != http.StatusForbidden && resp.StatusCode != http.StatusUnauthorized { + return fmt.Errorf("unexpected status: %d", resp.StatusCode) + } + return nil +} + +func (c *BrokerClient) GetInstance(instanceID string) (map[string]interface{}, error) { + endpoint := fmt.Sprintf("service_instances/%s", instanceID) + return c.CallBroker(nil, endpoint, "GET") +} + +func (c *BrokerClient) GetCatalog() (map[string]interface{}, error) { + endpoint := "catalog" + return c.CallBroker(nil, endpoint, "GET") +} + +func (c *BrokerClient) BuildPayload(name, instanceID, planID, region string, btpOperatorCreds map[string]interface{}) map[string]interface{} { + payload := map[string]interface{}{ + "service_id": kymaServiceID, + "plan_id": planID, + "context": map[string]interface{}{ + "globalaccount_id": c.GlobalAccountID, + "subaccount_id": c.SubaccountID, + "user_id": c.UserID, + }, + "parameters": map[string]interface{}{ + "name": name, + }, + } + + if planID != trialPlanID { + payload["parameters"].(map[string]interface{})["region"] = region + } + + if btpOperatorCreds != nil { + payload["context"].(map[string]interface{})["sm_operator_credentials"] = map[string]interface{}{ + "clientid": btpOperatorCreds["clientid"], + "clientsecret": btpOperatorCreds["clientsecret"], + "sm_url": btpOperatorCreds["smURL"], + "url": btpOperatorCreds["url"], + } + } + + return payload +} + +func (c *BrokerClient) ProvisionInstance(instanceID, planID, region string, btpOperatorCreds map[string]interface{}) (map[string]interface{}, error) { + payload := c.BuildPayload(instanceID, instanceID, planID, region, btpOperatorCreds) + endpoint := fmt.Sprintf("service_instances/%s", instanceID) + return c.CallBroker(payload, endpoint, "PUT") +} + +func (c *BrokerClient) UpdateInstance(instanceID string, customParams, btpOperatorCreds map[string]interface{}, isMigration bool) (map[string]interface{}, error) { + payload := map[string]interface{}{ + "service_id": kymaServiceID, + "context": map[string]interface{}{ + "globalaccount_id": c.GlobalAccountID, + "isMigration": isMigration, + }, + "parameters": customParams, + } + + if btpOperatorCreds != nil { + payload["context"].(map[string]interface{})["sm_operator_credentials"] = map[string]interface{}{ + "clientid": btpOperatorCreds["clientid"], + "clientsecret": btpOperatorCreds["clientsecret"], + "sm_url": btpOperatorCreds["smURL"], + "url": btpOperatorCreds["url"], + } + } + + endpoint := fmt.Sprintf("service_instances/%s?accepts_incomplete=true", instanceID) + return c.CallBroker(payload, endpoint, "PATCH") +} + +func (c *BrokerClient) GetOperation(instanceID, operationID string) (map[string]interface{}, error) { + endpoint := fmt.Sprintf("service_instances/%s/last_operation?operation=%s", instanceID, operationID) + return c.CallBroker(nil, endpoint, "GET") +} + +func (c *BrokerClient) DeprovisionInstance(instanceID string) (map[string]interface{}, error) { + endpoint := fmt.Sprintf("service_instances/%s?service_id=%s&plan_id=not-empty", instanceID, kymaServiceID) + return c.CallBroker(nil, endpoint, "DELETE") +} + +func (c *BrokerClient) DownloadKubeconfig(instanceID string) (string, error) { + downloadUrl := fmt.Sprintf("https://kyma-env-broker.%s/kubeconfig/%s", c.Host, instanceID) + resp, err := http.Get(downloadUrl) + if err != nil { + return "", err + } + defer resp.Body.Close() + + if resp.StatusCode != http.StatusOK { + return "", fmt.Errorf("failed to download kubeconfig: %s", resp.Status) + } + + data, err := ioutil.ReadAll(resp.Body) + if err != nil { + return "", err + } + + return string(data), nil +} + +func (c *BrokerClient) CreateBinding(instanceID, bindingID string, expirationSeconds int) (map[string]interface{}, error) { + if expirationSeconds == 0 { + expirationSeconds = defaultExpirationSeconds + } + payload := map[string]interface{}{ + "service_id": kymaServiceID, + "plan_id": "not-empty", + "parameters": map[string]interface{}{ + "expiration_seconds": expirationSeconds, + }, + } + endpoint := fmt.Sprintf("service_instances/%s/service_bindings/%s?accepts_incomplete=false", instanceID, bindingID) + return c.CallBroker(payload, endpoint, "PUT") +} + +func (c *BrokerClient) DeleteBinding(instanceID, bindingID string) (map[string]interface{}, error) { + params := fmt.Sprintf("service_id=%s&plan_id=not-empty", kymaServiceID) + endpoint := fmt.Sprintf("service_instances/%s/service_bindings/%s?accepts_incomplete=false&%s", instanceID, bindingID, params) + return c.CallBroker(nil, endpoint, "DELETE") +} + +func (c *BrokerClient) GetBinding(instanceID, bindingID string) (map[string]interface{}, error) { + endpoint := fmt.Sprintf("service_instances/%s/service_bindings/%s?accepts_incomplete=false", instanceID, bindingID) + return c.CallBroker(nil, endpoint, "GET") +} + +func (c *BrokerClient) GetPlatformRegion() string { + if c.PlatformRegion != "" { + return fmt.Sprintf("%s/", c.PlatformRegion) + } + return "" +} + +func getEnvOrThrow(key string) string { + value := os.Getenv(key) + if value == "" { + panic(fmt.Sprintf("Environment variable %s not set", key)) + } + return value +} diff --git a/testing/e2e/skr-tester/pkg/command/deprovision.go b/testing/e2e/skr-tester/pkg/command/deprovision.go new file mode 100644 index 0000000000..b55b21a856 --- /dev/null +++ b/testing/e2e/skr-tester/pkg/command/deprovision.go @@ -0,0 +1,57 @@ +package command + +import ( + "errors" + "fmt" + + broker "skr-tester/pkg/broker" + "skr-tester/pkg/logger" + + "github.com/spf13/cobra" +) + +type DeprovisionCommand struct { + cobraCmd *cobra.Command + log logger.Logger + instanceID string +} + +func NewDeprovisionCmd() *cobra.Command { + cmd := DeprovisionCommand{} + cobraCmd := &cobra.Command{ + Use: "deprovision", + Aliases: []string{"d"}, + Short: "Deprovisions an instance", + Long: "Deprovisions an instance", + Example: "skr-tester deprovision -i instanceID Deprovisions the instance.", + + PreRunE: func(_ *cobra.Command, _ []string) error { return cmd.Validate() }, + RunE: func(_ *cobra.Command, _ []string) error { return cmd.Run() }, + } + cmd.cobraCmd = cobraCmd + + cobraCmd.Flags().StringVarP(&cmd.instanceID, "instanceID", "i", "", "InstanceID of the specific instance.") + + return cobraCmd +} + +func (cmd *DeprovisionCommand) Run() error { + cmd.log = logger.New() + brokerClient := broker.NewBrokerClient(broker.NewBrokerConfig()) + resp, err := brokerClient.DeprovisionInstance(cmd.instanceID) + if err != nil { + fmt.Printf("Error deprovisioning instance: %v\n", err) + } else { + fmt.Printf("Deprovision operationID: %s\n", resp["operation"].(string)) + } + + return nil +} + +func (cmd *DeprovisionCommand) Validate() error { + if cmd.instanceID != "" { + return nil + } else { + return errors.New("at least one of the following options have to be specified: instanceID") + } +} diff --git a/testing/e2e/skr-tester/pkg/command/provision.go b/testing/e2e/skr-tester/pkg/command/provision.go new file mode 100644 index 0000000000..16ff9e46ff --- /dev/null +++ b/testing/e2e/skr-tester/pkg/command/provision.go @@ -0,0 +1,68 @@ +package command + +import ( + "errors" + "fmt" + + broker "skr-tester/pkg/broker" + "skr-tester/pkg/logger" + + "github.com/google/uuid" + "github.com/spf13/cobra" +) + +type ProvisionCommand struct { + cobraCmd *cobra.Command + log logger.Logger + planID string + region string +} + +func NewProvisionCmd() *cobra.Command { + cmd := ProvisionCommand{} + cobraCmd := &cobra.Command{ + Use: "provision", + Aliases: []string{"p"}, + Short: "Provisions an instance", + Long: "Provisions an instance", + Example: "skr-tester provision -p 361c511f-f939-4621-b228-d0fb79a1fe15 -r eu-central-1 Provisions the instance.", + + PreRunE: func(_ *cobra.Command, _ []string) error { return cmd.Validate() }, + RunE: func(_ *cobra.Command, _ []string) error { return cmd.Run() }, + } + cmd.cobraCmd = cobraCmd + + cobraCmd.Flags().StringVarP(&cmd.planID, "planID", "p", "", "PlanID of the specific instance.") + cobraCmd.Flags().StringVarP(&cmd.region, "region", "r", "", "Region of the specific instance.") + + return cobraCmd +} + +func (cmd *ProvisionCommand) Run() error { + cmd.log = logger.New() + brokerClient := broker.NewBrokerClient(broker.NewBrokerConfig()) + dummyCreds := map[string]interface{}{ + "clientid": "dummy_client_id", + "clientsecret": "dummy_client_secret", + "smURL": "dummy_url", + "url": "dummy_token_url", + } + instanceID := uuid.New().String() + fmt.Printf("Instance ID: %s\n", instanceID) + resp, err := brokerClient.ProvisionInstance(instanceID, cmd.planID, cmd.region, dummyCreds) + if err != nil { + fmt.Printf("Error provisioning instance: %v\n", err) + } else { + fmt.Printf("Provision operationID: %s\n", resp["operation"].(string)) + } + + return nil +} + +func (cmd *ProvisionCommand) Validate() error { + if cmd.planID != "" && cmd.region != "" { + return nil + } else { + return errors.New("you must specify the planID and region") + } +} diff --git a/testing/e2e/skr-tester/pkg/command/root.go b/testing/e2e/skr-tester/pkg/command/root.go new file mode 100644 index 0000000000..8fff2c46ab --- /dev/null +++ b/testing/e2e/skr-tester/pkg/command/root.go @@ -0,0 +1,21 @@ +package command + +import ( + "github.com/spf13/cobra" +) + +func New() *cobra.Command { + cmd := &cobra.Command{ + Use: "skr-tester", + Short: "SKR tester", + Long: "SKR tester", + SilenceUsage: true, + } + cmd.PersistentFlags().BoolP("help", "h", false, "Option that displays help for the CLI.") + cmd.AddCommand( + NewProvisionCmd(), + NewDeprovisionCmd(), + ) + + return cmd +} diff --git a/testing/e2e/skr-tester/pkg/logger/logger.go b/testing/e2e/skr-tester/pkg/logger/logger.go new file mode 100644 index 0000000000..3431d7c101 --- /dev/null +++ b/testing/e2e/skr-tester/pkg/logger/logger.go @@ -0,0 +1,66 @@ +package logger + +import ( + "github.com/int128/kubelogin/pkg/infrastructure/logger" + "github.com/sirupsen/logrus" + "github.com/spf13/pflag" +) + +// CfgLevel is the configured logging level +var CfgLevel int + +// New returns a Logger with the standard log.Logger +func New() Logger { + log := logrus.New() + log.Level = logrus.Level(CfgLevel) + return &logging{ + FieldLogger: log, + verbosity: CfgLevel, + } +} + +// Logger is the interface to interact with a CLI logging instance +type Logger interface { + logrus.FieldLogger + AddFlags(f *pflag.FlagSet) + V(level int) logger.Verbose + IsEnabled(level int) bool +} + +// logging provides logging facility using log.Logger and klog. +type logging struct { + logrus.FieldLogger + verbosity int +} + +type verbose struct { + l *logging + level int +} + +// AddFlags adds the flags such as -v. +func (l *logging) AddFlags(f *pflag.FlagSet) { + f.IntVarP(&l.verbosity, "verbose", "v", 0, "Option that turns verbose logging to stderr. Valid values are 0 (default) - 6 (maximum verbosity).") +} + +func AddFlags(f *pflag.FlagSet) { + f.IntVarP(&CfgLevel, "verbose", "v", 0, "Option that turns verbose logging to stderr. Valid values are 0 (default) - 6 (maximum verbosity).") +} + +// V returns a logger enabled only if the level is enabled. +func (l *logging) V(level int) logger.Verbose { + v := &verbose{l: l, level: level} + return v +} + +// IsEnabled returns true if the level is enabled. +func (l *logging) IsEnabled(level int) bool { + return l.verbosity >= level +} + +// Infof logs a verbose info message with he given format and arguments based on the configured verbosity +func (v *verbose) Infof(format string, args ...interface{}) { + if v.l.verbosity >= v.level { + v.l.Infof(format, args...) + } +} diff --git a/utils/archiver/kyma-environment-broker-archiver.yaml b/utils/archiver/kyma-environment-broker-archiver.yaml index df7db08ea1..b5433f4065 100644 --- a/utils/archiver/kyma-environment-broker-archiver.yaml +++ b/utils/archiver/kyma-environment-broker-archiver.yaml @@ -74,4 +74,4 @@ spec: template: spec: containers: - - image: europe-docker.pkg.dev/kyma-project/prod/kyma-environment-archiver-job:1.11.3 + - image: europe-docker.pkg.dev/kyma-project/prod/kyma-environment-archiver-job:1.11.5 diff --git a/utils/kyma-environments-cleanup-job/kyma-environments-cleanup-job.yaml b/utils/kyma-environments-cleanup-job/kyma-environments-cleanup-job.yaml index 34b6128a73..8d26db0103 100644 --- a/utils/kyma-environments-cleanup-job/kyma-environments-cleanup-job.yaml +++ b/utils/kyma-environments-cleanup-job/kyma-environments-cleanup-job.yaml @@ -28,7 +28,7 @@ spec: containers: - name: kyma-environments-cleanup command: ["/bin/main"] - image: europe-docker.pkg.dev/kyma-project/prod/kyma-environments-cleanup-job:1.11.3 + image: europe-docker.pkg.dev/kyma-project/prod/kyma-environments-cleanup-job:1.11.5 imagePullPolicy: IfNotPresent env: - name: DATABASE_EMBEDDED