Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package clusterctl for openSUSE:Factory checked in at 2026-07-17 01:41:12 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/clusterctl (Old) and /work/SRC/openSUSE:Factory/.clusterctl.new.24530 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "clusterctl" Fri Jul 17 01:41:12 2026 rev:34 rq:1366056 version:1.13.4 Changes: -------- --- /work/SRC/openSUSE:Factory/clusterctl/clusterctl.changes 2026-06-25 10:57:49.430654319 +0200 +++ /work/SRC/openSUSE:Factory/.clusterctl.new.24530/clusterctl.changes 2026-07-17 01:43:00.984323862 +0200 @@ -1,0 +2,22 @@ +Thu Jul 16 05:23:04 UTC 2026 - Johannes Kastl <[email protected]> + +- Update to version 1.13.4: + * Bug Fixes + - clusterctl: Raise management cluster client QPS and Burst + (#13901) + * Others + - clusterctl: Bump cert-manager to v1.20.3 (#13851) + - Dependency: Bump Go version to v1.25.12 (#13906) + - Dependency: Bump golang.org/x/crypto version to v0.53.0 + (#13864) + * Dependencies changed + - golang.org/x/crypto: v0.51.0 → v0.53.0 + - golang.org/x/mod: v0.35.0 → v0.36.0 + - golang.org/x/sync: v0.20.0 → v0.21.0 + - golang.org/x/sys: v0.45.0 → v0.46.0 + - golang.org/x/telemetry: be6f6cb → 42602be + - golang.org/x/term: v0.43.0 → v0.44.0 + - golang.org/x/text: v0.37.0 → v0.38.0 + - golang.org/x/tools: v0.44.0 → v0.45.0 + +------------------------------------------------------------------- Old: ---- clusterctl-1.13.3.obscpio New: ---- clusterctl-1.13.4.obscpio ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ clusterctl.spec ++++++ --- /var/tmp/diff_new_pack.GqTGfm/_old 2026-07-17 01:43:01.820352087 +0200 +++ /var/tmp/diff_new_pack.GqTGfm/_new 2026-07-17 01:43:01.820352087 +0200 @@ -20,7 +20,7 @@ %define version_git_minor %(echo %{version} | awk 'BEGIN { FS=\".\"}; {print $2}') Name: clusterctl -Version: 1.13.3 +Version: 1.13.4 Release: 0 Summary: CLI tool to handle the lifecycle of a Cluster API management cluster License: Apache-2.0 ++++++ _service ++++++ --- /var/tmp/diff_new_pack.GqTGfm/_old 2026-07-17 01:43:01.876353978 +0200 +++ /var/tmp/diff_new_pack.GqTGfm/_new 2026-07-17 01:43:01.880354113 +0200 @@ -1,9 +1,9 @@ <services> <service name="obs_scm" mode="manual"> - <param name="url">https://github.com/kubernetes-sigs/cluster-api</param> + <param name="url">https://github.com/kubernetes-sigs/cluster-api.git</param> <param name="scm">git</param> <param name="exclude">.git</param> - <param name="revision">v1.13.3</param> + <param name="revision">refs/tags/v1.13.4</param> <param name="versionformat">@PARENT_TAG@</param> <param name="versionrewrite-pattern">v(.*)</param> <param name="changesgenerate">enable</param> ++++++ _servicedata ++++++ --- /var/tmp/diff_new_pack.GqTGfm/_old 2026-07-17 01:43:01.904354923 +0200 +++ /var/tmp/diff_new_pack.GqTGfm/_new 2026-07-17 01:43:01.908355058 +0200 @@ -1,6 +1,8 @@ <servicedata> <service name="tar_scm"> <param name="url">https://github.com/kubernetes-sigs/cluster-api</param> - <param name="changesrevision">cf0f6c00fbf7d5c5dbf37bd09554c6389de93861</param></service></servicedata> + <param name="changesrevision">cf0f6c00fbf7d5c5dbf37bd09554c6389de93861</param></service><service name="tar_scm"> + <param name="url">https://github.com/kubernetes-sigs/cluster-api.git</param> + <param name="changesrevision">27f464418c195d96ae2ef4b96f3b6a047ea89310</param></service></servicedata> (No newline at EOF) ++++++ clusterctl-1.13.3.obscpio -> clusterctl-1.13.4.obscpio ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/clusterctl-1.13.3/Makefile new/clusterctl-1.13.4/Makefile --- old/clusterctl-1.13.3/Makefile 2026-06-17 18:14:43.000000000 +0200 +++ new/clusterctl-1.13.4/Makefile 2026-07-14 13:31:17.000000000 +0200 @@ -23,7 +23,7 @@ # # Go. # -GO_VERSION ?= 1.25.11 +GO_VERSION ?= 1.25.12 GO_DIRECTIVE_VERSION ?= 1.25.0 GO_CONTAINER_IMAGE ?= docker.io/library/golang:$(GO_VERSION) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/clusterctl-1.13.3/Tiltfile new/clusterctl-1.13.4/Tiltfile --- old/clusterctl-1.13.3/Tiltfile 2026-06-17 18:14:43.000000000 +0200 +++ new/clusterctl-1.13.4/Tiltfile 2026-07-14 13:31:17.000000000 +0200 @@ -174,7 +174,7 @@ tilt_helper_dockerfile_header = """ # Tilt image -FROM golang:1.25.11 as tilt-helper +FROM golang:1.25.12 as tilt-helper # Install delve. Note this should be kept in step with the Go release minor version. RUN go install github.com/go-delve/delve/cmd/[email protected] # Support live reloading with Tilt @@ -185,7 +185,7 @@ """ tilt_dockerfile_header = """ -FROM golang:1.25.11 as tilt +FROM golang:1.25.12 as tilt WORKDIR / COPY --from=tilt-helper /process.txt . COPY --from=tilt-helper /start.sh . diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/clusterctl-1.13.3/cmd/clusterctl/client/cluster/proxy.go new/clusterctl-1.13.4/cmd/clusterctl/client/cluster/proxy.go --- old/clusterctl-1.13.3/cmd/clusterctl/client/cluster/proxy.go 2026-06-17 18:14:43.000000000 +0200 +++ new/clusterctl-1.13.4/cmd/clusterctl/client/cluster/proxy.go 2026-07-14 13:31:17.000000000 +0200 @@ -152,9 +152,11 @@ } restConfig.UserAgent = fmt.Sprintf("clusterctl/%s (%s)", version.Get().GitVersion, version.Get().Platform) - // Set QPS and Burst to a threshold that ensures the controller runtime client/client go doesn't generate throttling log messages - restConfig.QPS = 20 - restConfig.Burst = 100 + // Set QPS and Burst high enough that clusterctl doesn't get throttled when it enumerates large + // resource sets such as many CRDs, while still relying on API Priority and Fairness for + // server-side protection. + restConfig.QPS = 500 + restConfig.Burst = 1000 restConfig.WarningHandler = k.warningHandler diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/clusterctl-1.13.3/cmd/clusterctl/client/cluster/proxy_test.go new/clusterctl-1.13.4/cmd/clusterctl/client/cluster/proxy_test.go --- old/clusterctl-1.13.3/cmd/clusterctl/client/cluster/proxy_test.go 2026-06-17 18:14:43.000000000 +0200 +++ new/clusterctl-1.13.4/cmd/clusterctl/client/cluster/proxy_test.go 2026-07-14 13:31:17.000000000 +0200 @@ -80,8 +80,8 @@ // context g.Expect(conf.Host).To(Equal(tt.expectedHost)) g.Expect(conf.UserAgent).To(Equal(fmt.Sprintf("clusterctl/%s (%s)", version.Get().GitVersion, version.Get().Platform))) - g.Expect(conf.QPS).To(BeEquivalentTo(20)) - g.Expect(conf.Burst).To(BeEquivalentTo(100)) + g.Expect(conf.QPS).To(BeEquivalentTo(500)) + g.Expect(conf.Burst).To(BeEquivalentTo(1000)) g.Expect(conf.Timeout.String()).To(Equal("30s")) }) } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/clusterctl-1.13.3/cmd/clusterctl/client/config/cert_manager_client.go new/clusterctl-1.13.4/cmd/clusterctl/client/config/cert_manager_client.go --- old/clusterctl-1.13.3/cmd/clusterctl/client/config/cert_manager_client.go 2026-06-17 18:14:43.000000000 +0200 +++ new/clusterctl-1.13.4/cmd/clusterctl/client/config/cert_manager_client.go 2026-07-14 13:31:17.000000000 +0200 @@ -29,7 +29,7 @@ CertManagerConfigKey = "cert-manager" // CertManagerDefaultVersion defines the default cert-manager version to be used by clusterctl. - CertManagerDefaultVersion = "v1.20.2" + CertManagerDefaultVersion = "v1.20.3" // CertManagerDefaultURL defines the default cert-manager repository url to be used by clusterctl. // NOTE: At runtime CertManagerDefaultVersion may be replaced with the diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/clusterctl-1.13.3/docs/book/src/clusterctl/commands/init.md new/clusterctl-1.13.4/docs/book/src/clusterctl/commands/init.md --- old/clusterctl-1.13.3/docs/book/src/clusterctl/commands/init.md 2026-06-17 18:14:43.000000000 +0200 +++ new/clusterctl-1.13.4/docs/book/src/clusterctl/commands/init.md 2026-07-14 13:31:17.000000000 +0200 @@ -194,7 +194,7 @@ Cluster API providers require a cert-manager version supporting the `cert-manager.io/v1` API to be installed in the cluster. While doing init, clusterctl checks if there is a version of cert-manager already installed. If not, clusterctl will -install a default version (currently cert-manager v1.20.2). See [clusterctl configuration](../configuration.md) for +install a default version (currently cert-manager v1.20.3). See [clusterctl configuration](../configuration.md) for available options to customize this operation. <aside class="note warning"> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/clusterctl-1.13.3/docs/book/src/developer/getting-started.md new/clusterctl-1.13.4/docs/book/src/developer/getting-started.md --- old/clusterctl-1.13.3/docs/book/src/developer/getting-started.md 2026-06-17 18:14:43.000000000 +0200 +++ new/clusterctl-1.13.4/docs/book/src/developer/getting-started.md 2026-07-14 13:31:17.000000000 +0200 @@ -83,7 +83,7 @@ You'll need to deploy [cert-manager] components on your [management cluster][mcluster], using `kubectl` ```bash -kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.20.2/cert-manager.yaml +kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.20.3/cert-manager.yaml ``` Ensure the cert-manager webhook service is ready before creating the Cluster API components. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/clusterctl-1.13.3/go.mod new/clusterctl-1.13.4/go.mod --- old/clusterctl-1.13.3/go.mod 2026-06-17 18:14:43.000000000 +0200 +++ new/clusterctl-1.13.4/go.mod 2026-07-14 13:31:17.000000000 +0200 @@ -37,7 +37,7 @@ go.uber.org/zap v1.27.1 golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56 // indirect golang.org/x/oauth2 v0.36.0 - golang.org/x/text v0.37.0 + golang.org/x/text v0.38.0 gomodules.xyz/jsonpatch/v2 v2.5.0 google.golang.org/grpc v1.80.0 k8s.io/api v0.35.4 @@ -140,14 +140,14 @@ go.yaml.in/yaml/v2 v2.4.3 // indirect go.yaml.in/yaml/v3 v3.0.4 // indirect go4.org v0.0.0-20201209231011-d4a079459e60 // indirect - golang.org/x/crypto v0.51.0 // indirect - golang.org/x/mod v0.35.0 // indirect + golang.org/x/crypto v0.53.0 // indirect + golang.org/x/mod v0.36.0 // indirect golang.org/x/net v0.55.0 // indirect - golang.org/x/sync v0.20.0 // indirect - golang.org/x/sys v0.45.0 // indirect - golang.org/x/term v0.43.0 // indirect + golang.org/x/sync v0.21.0 // indirect + golang.org/x/sys v0.46.0 // indirect + golang.org/x/term v0.44.0 // indirect golang.org/x/time v0.9.0 // indirect - golang.org/x/tools v0.44.0 // indirect + golang.org/x/tools v0.45.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20260401024825-9d38bb4040a9 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20260401024825-9d38bb4040a9 // indirect google.golang.org/protobuf v1.36.11 // indirect diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/clusterctl-1.13.3/go.sum new/clusterctl-1.13.4/go.sum --- old/clusterctl-1.13.3/go.sum 2026-06-17 18:14:43.000000000 +0200 +++ new/clusterctl-1.13.4/go.sum 2026-07-14 13:31:17.000000000 +0200 @@ -398,8 +398,8 @@ golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.51.0 h1:IBPXwPfKxY7cWQZ38ZCIRPI50YLeevDLlLnyC5wRGTI= -golang.org/x/crypto v0.51.0/go.mod h1:8AdwkbraGNABw2kOX6YFPs3WM22XqI4EXEd8g+x7Oc8= +golang.org/x/crypto v0.53.0 h1:QZ4Muo8THX6CizN2vPPd5fBGHyogrdK9fG4wLPFUsto= +golang.org/x/crypto v0.53.0/go.mod h1:DNLU434OwVakk9PzuwV8w62mAJpRJL3vsgcfp4Qnsio= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= @@ -428,8 +428,8 @@ golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.35.0 h1:Ww1D637e6Pg+Zb2KrWfHQUnH2dQRLBQyAtpr/haaJeM= -golang.org/x/mod v0.35.0/go.mod h1:+GwiRhIInF8wPm+4AoT6L0FA1QWAad3OMdTRx4tFYlU= +golang.org/x/mod v0.36.0 h1:JJjpVx6myfUsUdAzZuOSTTmRE0PfZeNWzzvKrP7amb4= +golang.org/x/mod v0.36.0/go.mod h1:moc6ELqsWcOw5Ef3xVprK5ul/MvtVvkIXLziUOICjUQ= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -463,8 +463,8 @@ golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.20.0 h1:e0PTpb7pjO8GAtTs2dQ6jYa5BWYlMuX047Dco/pItO4= -golang.org/x/sync v0.20.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0= +golang.org/x/sync v0.21.0 h1:HLII4xRRTtCRkxYp4HNFF0Js/Og6q2i++KXbg0gHCwM= +golang.org/x/sync v0.21.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -480,18 +480,18 @@ golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.45.0 h1:dO4czNzziLiiXplLQgBCEpCvXQ3dnkn0SdaZSYdQ+FY= -golang.org/x/sys v0.45.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= -golang.org/x/term v0.43.0 h1:S4RLU2sB31O/NCl+zFN9Aru9A/Cq2aqKpTZJ6B+DwT4= -golang.org/x/term v0.43.0/go.mod h1:lrhlHNdQJHO+1qVYiHfFKVuVioJIheAc3fBSMFYEIsk= +golang.org/x/sys v0.46.0 h1:noSf2Fq6F8DBgS+LysIkx7rIExoNHJsxOAtPp4rthXw= +golang.org/x/sys v0.46.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= +golang.org/x/term v0.44.0 h1:0rLvDRCtNj0gZkyIXhCyOb2OAzEhLVqc4B+hrsBhrmc= +golang.org/x/term v0.44.0/go.mod h1:7ze4MdzUzLXpSAoFP1H0bOI9aXDqveSvatT5vKcFh2Y= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= 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.37.0 h1:Cqjiwd9eSg8e0QAkyCaQTNHFIIzWtidPahFWR83rTrc= -golang.org/x/text v0.37.0/go.mod h1:a5sjxXGs9hsn/AJVwuElvCAo9v8QYLzvavO5z2PiM38= +golang.org/x/text v0.38.0 h1:sXmwo9DwP3OK9EZ7PqAdaooSGozfl/3a6/xJcbzPRhE= +golang.org/x/text v0.38.0/go.mod h1:YXZt3QhHUKYT53r2lLKFIVi6Ao1jdzrTR/KQ09qyxF4= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.9.0 h1:EsRrnYcQiGH+5FfbgvV4AP7qEZstoyrHB0DzarOQ4ZY= @@ -523,8 +523,8 @@ golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.44.0 h1:UP4ajHPIcuMjT1GqzDWRlalUEoY+uzoZKnhOjbIPD2c= -golang.org/x/tools v0.44.0/go.mod h1:KA0AfVErSdxRZIsOVipbv3rQhVXTnlU6UhKxHd1seDI= +golang.org/x/tools v0.45.0 h1:18qN3FAooORvApf5XjCXgsuayZOEtXf6JK18I3+ONa8= +golang.org/x/tools v0.45.0/go.mod h1:LuUGqqaXcXMEFEruIVJVm5mgDD8vww/z/SR1gQ4uE/0= 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 -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/clusterctl-1.13.3/hack/tools/go.mod new/clusterctl-1.13.4/hack/tools/go.mod --- old/clusterctl-1.13.3/hack/tools/go.mod 2026-06-17 18:14:43.000000000 +0200 +++ new/clusterctl-1.13.4/hack/tools/go.mod 2026-07-14 13:31:17.000000000 +0200 @@ -149,15 +149,15 @@ go.opentelemetry.io/otel v1.43.0 // indirect go.opentelemetry.io/otel/metric v1.43.0 // indirect go.opentelemetry.io/otel/trace v1.43.0 // indirect - golang.org/x/crypto v0.51.0 // indirect - golang.org/x/mod v0.35.0 // indirect + golang.org/x/crypto v0.53.0 // indirect + golang.org/x/mod v0.36.0 // indirect golang.org/x/net v0.55.0 // indirect - golang.org/x/sync v0.20.0 // indirect - golang.org/x/sys v0.45.0 // indirect - golang.org/x/term v0.43.0 // indirect - golang.org/x/text v0.37.0 // indirect + golang.org/x/sync v0.21.0 // indirect + golang.org/x/sys v0.46.0 // indirect + golang.org/x/term v0.44.0 // indirect + golang.org/x/text v0.38.0 // indirect golang.org/x/time v0.15.0 // indirect - golang.org/x/tools v0.44.0 // indirect + golang.org/x/tools v0.45.0 // indirect gomodules.xyz/jsonpatch/v2 v2.5.0 // indirect google.golang.org/genproto v0.0.0-20260319201613-d00831a3d3e7 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20260401024825-9d38bb4040a9 // indirect diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/clusterctl-1.13.3/hack/tools/go.sum new/clusterctl-1.13.4/hack/tools/go.sum --- old/clusterctl-1.13.3/hack/tools/go.sum 2026-06-17 18:14:43.000000000 +0200 +++ new/clusterctl-1.13.4/hack/tools/go.sum 2026-07-14 13:31:17.000000000 +0200 @@ -338,12 +338,12 @@ golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.3.1-0.20221117191849-2c476679df9a/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4= golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU= -golang.org/x/crypto v0.51.0 h1:IBPXwPfKxY7cWQZ38ZCIRPI50YLeevDLlLnyC5wRGTI= -golang.org/x/crypto v0.51.0/go.mod h1:8AdwkbraGNABw2kOX6YFPs3WM22XqI4EXEd8g+x7Oc8= +golang.org/x/crypto v0.53.0 h1:QZ4Muo8THX6CizN2vPPd5fBGHyogrdK9fG4wLPFUsto= +golang.org/x/crypto v0.53.0/go.mod h1:DNLU434OwVakk9PzuwV8w62mAJpRJL3vsgcfp4Qnsio= 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.35.0 h1:Ww1D637e6Pg+Zb2KrWfHQUnH2dQRLBQyAtpr/haaJeM= -golang.org/x/mod v0.35.0/go.mod h1:+GwiRhIInF8wPm+4AoT6L0FA1QWAad3OMdTRx4tFYlU= +golang.org/x/mod v0.36.0 h1:JJjpVx6myfUsUdAzZuOSTTmRE0PfZeNWzzvKrP7amb4= +golang.org/x/mod v0.36.0/go.mod h1:moc6ELqsWcOw5Ef3xVprK5ul/MvtVvkIXLziUOICjUQ= 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-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= @@ -358,8 +358,8 @@ 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.20.0 h1:e0PTpb7pjO8GAtTs2dQ6jYa5BWYlMuX047Dco/pItO4= -golang.org/x/sync v0.20.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0= +golang.org/x/sync v0.21.0 h1:HLII4xRRTtCRkxYp4HNFF0Js/Og6q2i++KXbg0gHCwM= +golang.org/x/sync v0.21.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -373,15 +373,15 @@ golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.45.0 h1:dO4czNzziLiiXplLQgBCEpCvXQ3dnkn0SdaZSYdQ+FY= -golang.org/x/sys v0.45.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= +golang.org/x/sys v0.46.0 h1:noSf2Fq6F8DBgS+LysIkx7rIExoNHJsxOAtPp4rthXw= +golang.org/x/sys v0.46.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= 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.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= -golang.org/x/term v0.43.0 h1:S4RLU2sB31O/NCl+zFN9Aru9A/Cq2aqKpTZJ6B+DwT4= -golang.org/x/term v0.43.0/go.mod h1:lrhlHNdQJHO+1qVYiHfFKVuVioJIheAc3fBSMFYEIsk= +golang.org/x/term v0.44.0 h1:0rLvDRCtNj0gZkyIXhCyOb2OAzEhLVqc4B+hrsBhrmc= +golang.org/x/term v0.44.0/go.mod h1:7ze4MdzUzLXpSAoFP1H0bOI9aXDqveSvatT5vKcFh2Y= 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.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= @@ -389,16 +389,16 @@ golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= -golang.org/x/text v0.37.0 h1:Cqjiwd9eSg8e0QAkyCaQTNHFIIzWtidPahFWR83rTrc= -golang.org/x/text v0.37.0/go.mod h1:a5sjxXGs9hsn/AJVwuElvCAo9v8QYLzvavO5z2PiM38= +golang.org/x/text v0.38.0 h1:sXmwo9DwP3OK9EZ7PqAdaooSGozfl/3a6/xJcbzPRhE= +golang.org/x/text v0.38.0/go.mod h1:YXZt3QhHUKYT53r2lLKFIVi6Ao1jdzrTR/KQ09qyxF4= golang.org/x/time v0.15.0 h1:bbrp8t3bGUeFOx08pvsMYRTCVSMk89u4tKbNOZbp88U= golang.org/x/time v0.15.0/go.mod h1:Y4YMaQmXwGQZoFaVFk4YpCt4FLQMYKZe9oeV/f4MSno= 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.44.0 h1:UP4ajHPIcuMjT1GqzDWRlalUEoY+uzoZKnhOjbIPD2c= -golang.org/x/tools v0.44.0/go.mod h1:KA0AfVErSdxRZIsOVipbv3rQhVXTnlU6UhKxHd1seDI= +golang.org/x/tools v0.45.0 h1:18qN3FAooORvApf5XjCXgsuayZOEtXf6JK18I3+ONa8= +golang.org/x/tools v0.45.0/go.mod h1:LuUGqqaXcXMEFEruIVJVm5mgDD8vww/z/SR1gQ4uE/0= golang.org/x/tools/go/expect v0.1.1-deprecated h1:jpBZDwmgPhXsKZC6WhL20P4b/wmnpsEAGHaNy0n/rJM= golang.org/x/tools/go/expect v0.1.1-deprecated/go.mod h1:eihoPOH+FgIqa3FpoTwguz/bVUSGBlGQU67vpBeOrBY= golang.org/x/tools/go/packages/packagestest v0.1.1-deprecated h1:1h2MnaIAIXISqTFKdENegdpAgUXz6NrPEsbIeWaBRvM= diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/clusterctl-1.13.3/internal/controllers/machineset/machineset_controller.go new/clusterctl-1.13.4/internal/controllers/machineset/machineset_controller.go --- old/clusterctl-1.13.3/internal/controllers/machineset/machineset_controller.go 2026-06-17 18:14:43.000000000 +0200 +++ new/clusterctl-1.13.4/internal/controllers/machineset/machineset_controller.go 2026-07-14 13:31:17.000000000 +0200 @@ -1006,6 +1006,7 @@ errs := []error{} machinesMoved := []*clusterv1.Machine{} + machinesDeleted := []*clusterv1.Machine{} for _, machine := range machinesToMoveByPriority { if machinesToMove <= 0 { break @@ -1013,6 +1014,29 @@ log := log.WithValues("Machine", klog.KObj(machine)) + // Note: Using the same logic to determine if a Machine should be remediated as in reconcileUnhealthyMachines. + // But remediation will happen here by deleting the Machine and another Machine will be eventually + // created for the new MachineSet (remediation means usually re-creating a Machine on the same MachineSet). + if collections.IsUnhealthyAndOwnerRemediated(machine) && machine.DeletionTimestamp.IsZero() { + machinesToMove-- + + if err := r.Client.Delete(ctx, machine); err != nil { + errs = append(errs, errors.Wrapf(err, "failed to delete Machine %s (tried to delete the Machine instead of moving it to MachineSet %s because Machine is marked for remediation)", klog.KObj(machine), klog.KObj(targetMS))) + continue + } + machinesDeleted = append(machinesDeleted, machine) + + log.Info(fmt.Sprintf("Machine %s deleting (deleting the Machine instead of moving it to MachineSet %s because Machine is marked for remediation)", klog.KObj(machine), targetMS.Name)) + r.recorder.Eventf(ms, corev1.EventTypeNormal, "SuccessfulDelete", "Deleted Machine %q", machine.Name) + continue + } + + // If there are machines already deleting, wait for them to go away before further scaling down with move. + if !machine.DeletionTimestamp.IsZero() { + machinesToMove-- + continue + } + // Make sure we are not moving machines still updating in place from a previous move (this includes also machines still pending AcknowledgeMove). if inplace.IsUpdateInProgress(machine) { continue @@ -1024,17 +1048,10 @@ } // Note. Machines with the DeleteMachineAnnotation are going to be moved and the new MS - // will take care of fulfilling this intent as soon as it scales down. - // Note. Also Machines marked as unhealthy by MHC are going to be moved, because otherwise - // remediation will not complete as the Machine is owned by an old MS. + // will take care of fulfilling this intent/prioritization as soon as it scales down. machinesToMove-- - // If there are machines already deleting, wait for them to go away before further scaling down with move. - if !machine.DeletionTimestamp.IsZero() { - continue - } - log.Info(fmt.Sprintf("Triggering in-place update for Machine %s (by moving to MachineSet %s)", machine.Name, targetMS.Name)) // Perform the first part of a move operation, the part under the responsibility of the oldMS. @@ -1084,6 +1101,9 @@ if err := clientutil.WaitForCacheToBeUpToDate(ctx, r.Client, "moving Machines", machinesMoved...); err != nil { errs = append(errs, err) } + if err := clientutil.WaitForObjectsToBeDeletedFromTheCache(ctx, r.Client, "Machine deletion (fallback for Machines marked for remediation)", machinesDeleted...); err != nil { + errs = append(errs, err) + } if len(errs) > 0 { return ctrl.Result{}, kerrors.NewAggregate(errs) } @@ -1556,6 +1576,9 @@ if isDeploymentChild(ms) { if owner.Annotations[clusterv1.RevisionAnnotation] != ms.Annotations[clusterv1.RevisionAnnotation] { // MachineSet is part of a MachineDeployment but isn't the current revision, no remediations allowed. + // Note: While remediation won't delete these Machines deleteMachines or startMoveMachines will delete + // them as part of the rollout. After that deletion the MD controller will scale up the new MS and then + // a new Machine will be created accordingly. if err := patchMachineConditions(ctx, r.Client, machinesToRemediate, metav1.Condition{ Type: clusterv1.MachineOwnerRemediatedCondition, Status: metav1.ConditionFalse, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/clusterctl-1.13.3/internal/controllers/machineset/machineset_controller_test.go new/clusterctl-1.13.4/internal/controllers/machineset/machineset_controller_test.go --- old/clusterctl-1.13.3/internal/controllers/machineset/machineset_controller_test.go 2026-06-17 18:14:43.000000000 +0200 +++ new/clusterctl-1.13.4/internal/controllers/machineset/machineset_controller_test.go 2026-07-14 13:31:17.000000000 +0200 @@ -2957,18 +2957,21 @@ sort.Strings(msMachines) return msMachines } + healthCheckNotSucceeded := metav1.Condition{Type: clusterv1.MachineHealthCheckSucceededCondition, Status: metav1.ConditionFalse, Reason: clusterv1.MachineHealthCheckNodeStartupTimeoutReason, Message: "Health check failed:\n * Node failed to report startup in 1h0m0s"} + ownerRemediated := metav1.Condition{Type: clusterv1.MachineOwnerRemediatedCondition, Status: metav1.ConditionFalse, Reason: clusterv1.MachineSetMachineCannotBeRemediatedReason, Message: "Machine won't be remediated because it is pending removal due to rollout"} tests := []struct { - name string - ms *clusterv1.MachineSet - targetMS *clusterv1.MachineSet - machines []*clusterv1.Machine - machinesToMove int - interceptorFuncs interceptor.Funcs - wantMachinesNotMoved []string - wantMovedMachines []string - wantErr bool - wantErrorMessage string + name string + ms *clusterv1.MachineSet + targetMS *clusterv1.MachineSet + machines []*clusterv1.Machine + machinesToMove int + interceptorFuncs interceptor.Funcs + wantMachinesNotMoved []string + wantMovedMachines []string + wantMachinesWithDeletionTimestamp []string + wantErr bool + wantErrorMessage string }{ { name: "should fail when taget ms cannot be found", @@ -3054,6 +3057,28 @@ wantErr: false, }, { + name: "should delete unhealthy Machines with OwnerRemediated set", + ms: newMachineSet("ms1", "cluster1", 2, + withDeletionOrder(clusterv1.NewestMachineSetDeletionOrder), + withMachineSetLabels(map[string]string{clusterv1.MachineDeploymentUniqueLabel: "123"}), + withMachineSetAnnotations(map[string]string{clusterv1.MachineSetMoveMachinesToMachineSetAnnotation: "ms2"}), + ), + targetMS: newMachineSet("ms2", "cluster1", 2, + withMachineSetLabels(map[string]string{clusterv1.MachineDeploymentUniqueLabel: "456"}), + withMachineSetAnnotations(map[string]string{clusterv1.MachineSetReceiveMachinesFromMachineSetsAnnotation: "ms1,ms3"}), + ), + machines: []*clusterv1.Machine{ + fakeMachine("m1", withOwnerMachineSet("ms1"), withMachineLabels(map[string]string{clusterv1.MachineDeploymentUniqueLabel: "123"}), withMachineFinalizer(), withCreationTimestamp(time.Now().Add(-4*time.Minute)), withCondition(healthCheckNotSucceeded), withCondition(ownerRemediated)), + fakeMachine("m2", withOwnerMachineSet("ms1"), withMachineLabels(map[string]string{clusterv1.MachineDeploymentUniqueLabel: "123"}), withMachineFinalizer(), withCreationTimestamp(time.Now().Add(-3*time.Minute))), + }, + machinesToMove: 2, + interceptorFuncs: interceptor.Funcs{}, + wantMachinesNotMoved: []string{"m1", "m2"}, + wantMovedMachines: []string{}, + wantMachinesWithDeletionTimestamp: []string{"m1"}, + wantErr: false, + }, + { name: "should not move machines not yet provisioned", ms: newMachineSet("ms1", "cluster1", 2, withDeletionOrder(clusterv1.NewestMachineSetDeletionOrder), @@ -3091,11 +3116,12 @@ fakeMachine("m3", withOwnerMachineSet("ms1"), withMachineLabels(map[string]string{clusterv1.MachineDeploymentUniqueLabel: "123"}), withMachineFinalizer(), withCreationTimestamp(time.Now().Add(-2*time.Minute)), withHealthyNode()), fakeMachine("m4", withOwnerMachineSet("ms1"), withMachineLabels(map[string]string{clusterv1.MachineDeploymentUniqueLabel: "123"}), withMachineFinalizer(), withCreationTimestamp(time.Now().Add(-1*time.Minute)), withHealthyNode(), withDeletionTimestamp()), // newest }, - machinesToMove: 2, - interceptorFuncs: interceptor.Funcs{}, - wantMachinesNotMoved: []string{"m1", "m2", "m4"}, - wantMovedMachines: []string{"m3"}, // newest machines moved first with NewestMachineSetDeletionOrder, but m4 is deleting so don't touch it - wantErr: false, + machinesToMove: 2, + interceptorFuncs: interceptor.Funcs{}, + wantMachinesNotMoved: []string{"m1", "m2", "m4"}, + wantMovedMachines: []string{"m3"}, // newest machines moved first with NewestMachineSetDeletionOrder, but m4 is deleting so don't touch it + wantMachinesWithDeletionTimestamp: []string{"m4"}, + wantErr: false, }, { name: "should not move more machines that are already updating in place, pick another machine instead", @@ -3196,6 +3222,14 @@ } } } + + var machinesWithDeletionTimestamp []string + for _, m := range machines.Items { + if !m.DeletionTimestamp.IsZero() { + machinesWithDeletionTimestamp = append(machinesWithDeletionTimestamp, m.Name) + } + } + g.Expect(machinesWithDeletionTimestamp).To(ConsistOf(tt.wantMachinesWithDeletionTimestamp)) }) } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/clusterctl-1.13.3/netlify.toml new/clusterctl-1.13.4/netlify.toml --- old/clusterctl-1.13.3/netlify.toml 2026-06-17 18:14:43.000000000 +0200 +++ new/clusterctl-1.13.4/netlify.toml 2026-07-14 13:31:17.000000000 +0200 @@ -4,7 +4,7 @@ publish = "docs/book/book" [build.environment] - GO_VERSION = "1.25.7" + GO_VERSION = "1.25.12" # Standard Netlify redirects [[redirects]] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/clusterctl-1.13.3/scripts/ci-e2e-lib.sh new/clusterctl-1.13.4/scripts/ci-e2e-lib.sh --- old/clusterctl-1.13.3/scripts/ci-e2e-lib.sh 2026-06-17 18:14:43.000000000 +0200 +++ new/clusterctl-1.13.4/scripts/ci-e2e-lib.sh 2026-07-14 13:31:17.000000000 +0200 @@ -258,9 +258,9 @@ # the actual test run less sensible to the network speed. kind:prepullAdditionalImages () { # Pulling cert manager images so we can pre-load in kind nodes - kind::prepullImage "quay.io/jetstack/cert-manager-cainjector:v1.20.2" - kind::prepullImage "quay.io/jetstack/cert-manager-webhook:v1.20.2" - kind::prepullImage "quay.io/jetstack/cert-manager-controller:v1.20.2" + kind::prepullImage "quay.io/jetstack/cert-manager-cainjector:v1.20.3" + kind::prepullImage "quay.io/jetstack/cert-manager-webhook:v1.20.3" + kind::prepullImage "quay.io/jetstack/cert-manager-controller:v1.20.3" # Pull all images defined in DOCKER_PRELOAD_IMAGES. for IMAGE in $(grep DOCKER_PRELOAD_IMAGES: < "$E2E_CONF_FILE" | sed -E 's/.*\[(.*)\].*/\1/' | tr ',' ' '); do diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/clusterctl-1.13.3/test/e2e/clusterctl_upgrade_test.go new/clusterctl-1.13.4/test/e2e/clusterctl_upgrade_test.go --- old/clusterctl-1.13.3/test/e2e/clusterctl_upgrade_test.go 2026-06-17 18:14:43.000000000 +0200 +++ new/clusterctl-1.13.4/test/e2e/clusterctl_upgrade_test.go 2026-07-14 13:31:17.000000000 +0200 @@ -63,8 +63,11 @@ InitWithProvidersContract: "v1beta1", // Note: Both InitWithKubernetesVersion and WorkloadKubernetesVersion should be the highest mgmt cluster version supported by the source Cluster API version. // When picking this version, please check also the list of versions known by the source Cluster API version (rif. test/infrastructure/kind/mapper.go). - InitWithKubernetesVersion: "v1.33.0", - WorkloadKubernetesVersion: "v1.33.0", + // Note: Using v1.34.0 instead of v1.33.0 because we are getting the following error with containerd with the + // v1.33.0 image and then afterward kubelet cannot communicate with containerd anymore: + // > Jun 24 23:17:18.106114 clusterctl-upgrade-workload-2mklrf-lg6pq-tskhm systemd[1]: containerd.service: Main process exited, code=dumped, status=11/SEGV + InitWithKubernetesVersion: "v1.34.0", + WorkloadKubernetesVersion: "v1.34.0", MgmtFlavor: "topology", WorkloadFlavor: "topology", UseKindForManagementCluster: true, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/clusterctl-1.13.3/test/e2e/config/docker.yaml new/clusterctl-1.13.4/test/e2e/config/docker.yaml --- old/clusterctl-1.13.3/test/e2e/config/docker.yaml 2026-06-17 18:14:43.000000000 +0200 +++ new/clusterctl-1.13.4/test/e2e/config/docker.yaml 2026-07-14 13:31:17.000000000 +0200 @@ -21,11 +21,11 @@ loadBehavior: tryLoad - name: gcr.io/k8s-staging-cluster-api/test-extension-{ARCH}:dev loadBehavior: tryLoad -- name: quay.io/jetstack/cert-manager-cainjector:v1.20.2 +- name: quay.io/jetstack/cert-manager-cainjector:v1.20.3 loadBehavior: tryLoad -- name: quay.io/jetstack/cert-manager-webhook:v1.20.2 +- name: quay.io/jetstack/cert-manager-webhook:v1.20.3 loadBehavior: tryLoad -- name: quay.io/jetstack/cert-manager-controller:v1.20.2 +- name: quay.io/jetstack/cert-manager-controller:v1.20.3 loadBehavior: tryLoad providers: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/clusterctl-1.13.3/test/framework/controlplane_helpers.go new/clusterctl-1.13.4/test/framework/controlplane_helpers.go --- old/clusterctl-1.13.3/test/framework/controlplane_helpers.go 2026-06-17 18:14:43.000000000 +0200 +++ new/clusterctl-1.13.4/test/framework/controlplane_helpers.go 2026-07-14 13:31:17.000000000 +0200 @@ -188,7 +188,7 @@ } return true, nil - }, intervals...).Should(BeTrue(), PrettyPrint(controlplane)+"\n") + }, intervals...).Should(BeTrue(), func() string { return PrettyPrint(controlplane) + "\n" }) } // AssertControlPlaneFailureDomainsInput is the input for AssertControlPlaneFailureDomains. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/clusterctl-1.13.3/test/go.mod new/clusterctl-1.13.4/test/go.mod --- old/clusterctl-1.13.3/test/go.mod 2026-06-17 18:14:43.000000000 +0200 +++ new/clusterctl-1.13.4/test/go.mod 2026-07-14 13:31:17.000000000 +0200 @@ -144,17 +144,17 @@ go.uber.org/zap v1.27.1 // indirect go.yaml.in/yaml/v2 v2.4.3 // indirect go.yaml.in/yaml/v3 v3.0.4 // indirect - golang.org/x/crypto v0.51.0 // indirect + golang.org/x/crypto v0.53.0 // indirect golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56 // indirect - golang.org/x/mod v0.35.0 // indirect + golang.org/x/mod v0.36.0 // indirect golang.org/x/net v0.55.0 // indirect golang.org/x/oauth2 v0.36.0 // indirect - golang.org/x/sync v0.20.0 // indirect - golang.org/x/sys v0.45.0 // indirect - golang.org/x/term v0.43.0 // indirect - golang.org/x/text v0.37.0 // indirect + golang.org/x/sync v0.21.0 // indirect + golang.org/x/sys v0.46.0 // indirect + golang.org/x/term v0.44.0 // indirect + golang.org/x/text v0.38.0 // indirect golang.org/x/time v0.11.0 // indirect - golang.org/x/tools v0.44.0 // indirect + golang.org/x/tools v0.45.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20260401024825-9d38bb4040a9 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20260401024825-9d38bb4040a9 // indirect google.golang.org/protobuf v1.36.11 // indirect diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/clusterctl-1.13.3/test/go.sum new/clusterctl-1.13.4/test/go.sum --- old/clusterctl-1.13.3/test/go.sum 2026-06-17 18:14:43.000000000 +0200 +++ new/clusterctl-1.13.4/test/go.sum 2026-07-14 13:31:17.000000000 +0200 @@ -370,14 +370,14 @@ golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.51.0 h1:IBPXwPfKxY7cWQZ38ZCIRPI50YLeevDLlLnyC5wRGTI= -golang.org/x/crypto v0.51.0/go.mod h1:8AdwkbraGNABw2kOX6YFPs3WM22XqI4EXEd8g+x7Oc8= +golang.org/x/crypto v0.53.0 h1:QZ4Muo8THX6CizN2vPPd5fBGHyogrdK9fG4wLPFUsto= +golang.org/x/crypto v0.53.0/go.mod h1:DNLU434OwVakk9PzuwV8w62mAJpRJL3vsgcfp4Qnsio= golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56 h1:2dVuKD2vS7b0QIHQbpyTISPd0LeHDbnYEryqj5Q1ug8= golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56/go.mod h1:M4RDyNAINzryxdtnbRXRL/OHtkFuWGRjvuhBJpk2IlY= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.35.0 h1:Ww1D637e6Pg+Zb2KrWfHQUnH2dQRLBQyAtpr/haaJeM= -golang.org/x/mod v0.35.0/go.mod h1:+GwiRhIInF8wPm+4AoT6L0FA1QWAad3OMdTRx4tFYlU= +golang.org/x/mod v0.36.0 h1:JJjpVx6myfUsUdAzZuOSTTmRE0PfZeNWzzvKrP7amb4= +golang.org/x/mod v0.36.0/go.mod h1:moc6ELqsWcOw5Ef3xVprK5ul/MvtVvkIXLziUOICjUQ= golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190320064053-1272bf9dcd53/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= @@ -391,21 +391,21 @@ golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.20.0 h1:e0PTpb7pjO8GAtTs2dQ6jYa5BWYlMuX047Dco/pItO4= -golang.org/x/sync v0.20.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0= +golang.org/x/sync v0.21.0 h1:HLII4xRRTtCRkxYp4HNFF0Js/Og6q2i++KXbg0gHCwM= +golang.org/x/sync v0.21.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.45.0 h1:dO4czNzziLiiXplLQgBCEpCvXQ3dnkn0SdaZSYdQ+FY= -golang.org/x/sys v0.45.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= -golang.org/x/term v0.43.0 h1:S4RLU2sB31O/NCl+zFN9Aru9A/Cq2aqKpTZJ6B+DwT4= -golang.org/x/term v0.43.0/go.mod h1:lrhlHNdQJHO+1qVYiHfFKVuVioJIheAc3fBSMFYEIsk= +golang.org/x/sys v0.46.0 h1:noSf2Fq6F8DBgS+LysIkx7rIExoNHJsxOAtPp4rthXw= +golang.org/x/sys v0.46.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= +golang.org/x/term v0.44.0 h1:0rLvDRCtNj0gZkyIXhCyOb2OAzEhLVqc4B+hrsBhrmc= +golang.org/x/term v0.44.0/go.mod h1:7ze4MdzUzLXpSAoFP1H0bOI9aXDqveSvatT5vKcFh2Y= 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.37.0 h1:Cqjiwd9eSg8e0QAkyCaQTNHFIIzWtidPahFWR83rTrc= -golang.org/x/text v0.37.0/go.mod h1:a5sjxXGs9hsn/AJVwuElvCAo9v8QYLzvavO5z2PiM38= +golang.org/x/text v0.38.0 h1:sXmwo9DwP3OK9EZ7PqAdaooSGozfl/3a6/xJcbzPRhE= +golang.org/x/text v0.38.0/go.mod h1:YXZt3QhHUKYT53r2lLKFIVi6Ao1jdzrTR/KQ09qyxF4= golang.org/x/time v0.11.0 h1:/bpjEDfN9tkoN/ryeYHnv5hcMlc8ncjMcM4XBk5NWV0= golang.org/x/time v0.11.0/go.mod h1:CDIdPxbZBQxdj6cxyCIdrNogrJKMJ7pr37NYpMcMDSg= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -413,8 +413,8 @@ golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.44.0 h1:UP4ajHPIcuMjT1GqzDWRlalUEoY+uzoZKnhOjbIPD2c= -golang.org/x/tools v0.44.0/go.mod h1:KA0AfVErSdxRZIsOVipbv3rQhVXTnlU6UhKxHd1seDI= +golang.org/x/tools v0.45.0 h1:18qN3FAooORvApf5XjCXgsuayZOEtXf6JK18I3+ONa8= +golang.org/x/tools v0.45.0/go.mod h1:LuUGqqaXcXMEFEruIVJVm5mgDD8vww/z/SR1gQ4uE/0= 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= ++++++ clusterctl.obsinfo ++++++ --- /var/tmp/diff_new_pack.GqTGfm/_old 2026-07-17 01:43:04.696449186 +0200 +++ /var/tmp/diff_new_pack.GqTGfm/_new 2026-07-17 01:43:04.716449862 +0200 @@ -1,5 +1,5 @@ name: clusterctl -version: 1.13.3 -mtime: 1781712883 -commit: cf0f6c00fbf7d5c5dbf37bd09554c6389de93861 +version: 1.13.4 +mtime: 1784028677 +commit: 27f464418c195d96ae2ef4b96f3b6a047ea89310 ++++++ vendor.tar.gz ++++++ /work/SRC/openSUSE:Factory/clusterctl/vendor.tar.gz /work/SRC/openSUSE:Factory/.clusterctl.new.24530/vendor.tar.gz differ: char 129, line 2
