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-04-10 17:50:51 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/clusterctl (Old) and /work/SRC/openSUSE:Factory/.clusterctl.new.21863 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "clusterctl" Fri Apr 10 17:50:51 2026 rev:30 rq:1345549 version:1.12.5 Changes: -------- --- /work/SRC/openSUSE:Factory/clusterctl/clusterctl.changes 2026-03-18 16:52:28.061928923 +0100 +++ /work/SRC/openSUSE:Factory/.clusterctl.new.21863/clusterctl.changes 2026-04-10 17:57:17.460435397 +0200 @@ -1,0 +2,13 @@ +Thu Apr 09 11:54:11 UTC 2026 - Johannes Kastl <[email protected]> + +- Update to version 1.12.5: + * clusterctl: Bump cert-manager to v1.20.0 (#13484) + * clusterctl: Bump cert-manager to v1.20.1 (#13519) + * Others + - Dependency: Bump corefile-migration to v1.0.31 (#13526) + - Dependency: Bump dependencies to fix CVE-2026-33186 + (google.golang.org/grpc) (#13504) + - Dependency: Bump go v1.25.9 (#13554) + - Dependency: Switch from docker to moby dependencies (#13550) + +------------------------------------------------------------------- Old: ---- clusterctl-1.12.4.obscpio New: ---- clusterctl-1.12.5.obscpio ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ clusterctl.spec ++++++ --- /var/tmp/diff_new_pack.40Kk9z/_old 2026-04-10 17:57:20.440558549 +0200 +++ /var/tmp/diff_new_pack.40Kk9z/_new 2026-04-10 17:57:20.460559375 +0200 @@ -20,7 +20,7 @@ %define version_git_minor %(echo %{version} | awk 'BEGIN { FS=\".\"}; {print $2}') Name: clusterctl -Version: 1.12.4 +Version: 1.12.5 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.40Kk9z/_old 2026-04-10 17:57:20.676568302 +0200 +++ /var/tmp/diff_new_pack.40Kk9z/_new 2026-04-10 17:57:20.700569293 +0200 @@ -3,7 +3,7 @@ <param name="url">https://github.com/kubernetes-sigs/cluster-api</param> <param name="scm">git</param> <param name="exclude">.git</param> - <param name="revision">v1.12.4</param> + <param name="revision">v1.12.5</param> <param name="versionformat">@PARENT_TAG@</param> <param name="versionrewrite-pattern">v(.*)</param> <param name="changesgenerate">enable</param> ++++++ _servicedata ++++++ --- /var/tmp/diff_new_pack.40Kk9z/_old 2026-04-10 17:57:20.844575244 +0200 +++ /var/tmp/diff_new_pack.40Kk9z/_new 2026-04-10 17:57:20.860575906 +0200 @@ -1,6 +1,6 @@ <servicedata> <service name="tar_scm"> <param name="url">https://github.com/kubernetes-sigs/cluster-api</param> - <param name="changesrevision">233b59b164f56e13db488aeca83c9ef6839ea74d</param></service></servicedata> + <param name="changesrevision">efc7142fa2ca086e4e2392640affa22f47cbcc11</param></service></servicedata> (No newline at EOF) ++++++ clusterctl-1.12.4.obscpio -> clusterctl-1.12.5.obscpio ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/clusterctl-1.12.4/Makefile new/clusterctl-1.12.5/Makefile --- old/clusterctl-1.12.4/Makefile 2026-03-17 12:51:40.000000000 +0100 +++ new/clusterctl-1.12.5/Makefile 2026-04-08 11:51:33.000000000 +0200 @@ -23,7 +23,7 @@ # # Go. # -GO_VERSION ?= 1.25.8 +GO_VERSION ?= 1.25.9 GO_DIRECTIVE_VERSION ?= 1.24.0 GO_CONTAINER_IMAGE ?= docker.io/library/golang:$(GO_VERSION) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/clusterctl-1.12.4/Tiltfile new/clusterctl-1.12.5/Tiltfile --- old/clusterctl-1.12.4/Tiltfile 2026-03-17 12:51:40.000000000 +0100 +++ new/clusterctl-1.12.5/Tiltfile 2026-04-08 11:51:33.000000000 +0200 @@ -172,7 +172,7 @@ tilt_helper_dockerfile_header = """ # Tilt image -FROM golang:1.25.8 as tilt-helper +FROM golang:1.25.9 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 @@ -183,7 +183,7 @@ """ tilt_dockerfile_header = """ -FROM golang:1.25.8 as tilt +FROM golang:1.25.9 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.12.4/cmd/clusterctl/client/config/cert_manager_client.go new/clusterctl-1.12.5/cmd/clusterctl/client/config/cert_manager_client.go --- old/clusterctl-1.12.4/cmd/clusterctl/client/config/cert_manager_client.go 2026-03-17 12:51:40.000000000 +0100 +++ new/clusterctl-1.12.5/cmd/clusterctl/client/config/cert_manager_client.go 2026-04-08 11:51:33.000000000 +0200 @@ -29,7 +29,7 @@ CertManagerConfigKey = "cert-manager" // CertManagerDefaultVersion defines the default cert-manager version to be used by clusterctl. - CertManagerDefaultVersion = "v1.19.4" + CertManagerDefaultVersion = "v1.20.1" // 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.12.4/controllers/crdmigrator/crd_migrator_test.go new/clusterctl-1.12.5/controllers/crdmigrator/crd_migrator_test.go --- old/clusterctl-1.12.4/controllers/crdmigrator/crd_migrator_test.go 2026-03-17 12:51:40.000000000 +0100 +++ new/clusterctl-1.12.5/controllers/crdmigrator/crd_migrator_test.go 2026-04-08 11:51:33.000000000 +0200 @@ -28,6 +28,7 @@ . "github.com/onsi/gomega" corev1 "k8s.io/api/core/v1" apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1" + apierrors "k8s.io/apimachinery/pkg/api/errors" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" "k8s.io/apimachinery/pkg/labels" @@ -163,7 +164,14 @@ defer func() { crd := &apiextensionsv1.CustomResourceDefinition{} crd.SetName(crdName) - g.Expect(env.CleanupAndWait(ctx, crd)).To(Succeed()) + g.Expect(env.Cleanup(ctx, crd)).To(Succeed()) + // Wait for the CRD to be fully deleted. CRDs have a built-in finalizer + // (customresourcecleanup.apiextensions.k8s.io) processed by the API server, + // which can take longer than cacheSyncBackoff under heavy load. + g.Eventually(func(g Gomega) { + err := env.Get(ctx, client.ObjectKeyFromObject(crd), crd) + g.Expect(apierrors.IsNotFound(err)).To(BeTrue(), "CRD %s still exists: %v", crdName, err) + }).WithTimeout(1 * time.Minute).WithPolling(100 * time.Millisecond).Should(Succeed()) }() t.Logf("T1: Install CRDs") diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/clusterctl-1.12.4/controlplane/kubeadm/internal/workload_cluster_conditions.go new/clusterctl-1.12.5/controlplane/kubeadm/internal/workload_cluster_conditions.go --- old/clusterctl-1.12.4/controlplane/kubeadm/internal/workload_cluster_conditions.go 2026-03-17 12:51:40.000000000 +0100 +++ new/clusterctl-1.12.5/controlplane/kubeadm/internal/workload_cluster_conditions.go 2026-04-08 11:51:33.000000000 +0200 @@ -147,6 +147,18 @@ continue } + if member.IsLearner { + v1beta1conditions.MarkFalse(machine, controlplanev1.MachineEtcdMemberHealthyV1Beta1Condition, controlplanev1.EtcdMemberUnhealthyV1Beta1Reason, clusterv1.ConditionSeverityError, "Waiting for learner etcd member to be promoted") + + conditions.Set(machine, metav1.Condition{ + Type: controlplanev1.KubeadmControlPlaneMachineEtcdMemberHealthyCondition, + Status: metav1.ConditionFalse, + Reason: controlplanev1.KubeadmControlPlaneMachineEtcdMemberNotHealthyReason, + Message: "Waiting for learner etcd member to be promoted", + }) + continue + } + // Check for alarms for the etcd member alarmList := []string{} for _, alarm := range alarms { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/clusterctl-1.12.4/controlplane/kubeadm/internal/workload_cluster_conditions_test.go new/clusterctl-1.12.5/controlplane/kubeadm/internal/workload_cluster_conditions_test.go --- old/clusterctl-1.12.4/controlplane/kubeadm/internal/workload_cluster_conditions_test.go 2026-03-17 12:51:40.000000000 +0100 +++ new/clusterctl-1.12.5/controlplane/kubeadm/internal/workload_cluster_conditions_test.go 2026-04-08 11:51:33.000000000 +0200 @@ -391,6 +391,52 @@ expectedEtcdMembersAndMachinesAreMatching: false, // without reading members, we can not make assumptions. }, { + name: "an etcd member in learner mode should be reported", + machines: []*clusterv1.Machine{ + fakeMachine("m1", withNodeRef("n1")), + }, + injectClient: &fakeClient{ + list: &corev1.NodeList{ + Items: []corev1.Node{*fakeNode("n1")}, + }, + }, + injectEtcdClientGenerator: &fakeEtcdClientGenerator{ + forNodesClient: &etcd.Client{ + EtcdClient: &fake2.FakeEtcdClient{ + EtcdEndpoints: []string{}, + MemberListResponse: &clientv3.MemberListResponse{ + Members: []*pb.Member{ + {Name: "n1", ID: uint64(1), IsLearner: true}, + }, + }, + AlarmResponse: &clientv3.AlarmResponse{ + Alarms: []*pb.AlarmMember{}, + }, + }, + }, + }, + expectedKCPV1Beta1Condition: v1beta1conditions.FalseCondition(controlplanev1.EtcdClusterHealthyV1Beta1Condition, controlplanev1.EtcdClusterUnhealthyV1Beta1Reason, clusterv1.ConditionSeverityError, "Following Machines are reporting etcd member errors: %s", "m1"), + expectedMachineV1Beta1Conditions: map[string]clusterv1.Conditions{ + "m1": { + *v1beta1conditions.FalseCondition(controlplanev1.MachineEtcdMemberHealthyV1Beta1Condition, controlplanev1.EtcdMemberUnhealthyV1Beta1Reason, clusterv1.ConditionSeverityError, "Waiting for learner etcd member to be promoted"), + }, + }, + expectedKCPCondition: &metav1.Condition{ + Type: controlplanev1.KubeadmControlPlaneEtcdClusterHealthyCondition, + Status: metav1.ConditionFalse, + Reason: controlplanev1.KubeadmControlPlaneEtcdClusterNotHealthyReason, + Message: "* Machine m1:\n" + + " * EtcdMemberHealthy: Waiting for learner etcd member to be promoted", + }, + expectedMachineConditions: map[string][]metav1.Condition{ + "m1": { + {Type: controlplanev1.KubeadmControlPlaneMachineEtcdMemberHealthyCondition, Status: metav1.ConditionFalse, Reason: controlplanev1.KubeadmControlPlaneMachineEtcdMemberNotHealthyReason, Message: "Waiting for learner etcd member to be promoted"}, + }, + }, + expectedEtcdMembers: []string{"n1"}, + expectedEtcdMembersAndMachinesAreMatching: true, + }, + { name: "an etcd member with alarms should report false condition", machines: []*clusterv1.Machine{ fakeMachine("m1", withNodeRef("n1")), diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/clusterctl-1.12.4/docs/book/src/clusterctl/commands/init.md new/clusterctl-1.12.5/docs/book/src/clusterctl/commands/init.md --- old/clusterctl-1.12.4/docs/book/src/clusterctl/commands/init.md 2026-03-17 12:51:40.000000000 +0100 +++ new/clusterctl-1.12.5/docs/book/src/clusterctl/commands/init.md 2026-04-08 11:51:33.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.19.4). See [clusterctl configuration](../configuration.md) for +install a default version (currently cert-manager v1.20.1). 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.12.4/docs/book/src/developer/getting-started.md new/clusterctl-1.12.5/docs/book/src/developer/getting-started.md --- old/clusterctl-1.12.4/docs/book/src/developer/getting-started.md 2026-03-17 12:51:40.000000000 +0100 +++ new/clusterctl-1.12.5/docs/book/src/developer/getting-started.md 2026-04-08 11:51:33.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.19.4/cert-manager.yaml +kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.20.1/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.12.4/docs/book/src/reference/versions.md new/clusterctl-1.12.5/docs/book/src/reference/versions.md --- old/clusterctl-1.12.4/docs/book/src/reference/versions.md 2026-03-17 12:51:40.000000000 +0100 +++ new/clusterctl-1.12.5/docs/book/src/reference/versions.md 2026-04-08 11:51:33.000000000 +0200 @@ -381,33 +381,12 @@ #### CoreDNS Support Each version of the Kubeadm Control Plane can upgrade up to a max CoreDNS version. -Notably, the Max CoreDNS version could change also with patch releases. +Notably, the Max CoreDNS version could change also with Cluster API patch releases. +The version depends on the version of the `corefile-migration` library. -| KCP Version | Max CoreDNS Version | -|-------------|---------------------| -| v1.5 | v1.10.1 | -| >= v1.5.1 | v1.11.1 | -| v1.6 | v1.11.1 | -| v1.7 | v1.11.1 | -| v1.8 | v1.11.3 | -| >= v1.8.9 | v1.12.0 | -| >= v1.8.12 | v1.12.1 | -| v1.9 | v1.11.3 | -| >= v1.9.4 | v1.12.0 | -| >= v1.9.7 | v1.12.1 | -| >= v1.9.11 | v1.12.3 | -| v1.10 | v1.12.1 | -| >= v1.10.5 | v1.12.3 | -| v1.10.7 | v1.12.4 | -| >= v1.10.8 | v1.13.1 | -| v1.11 | v1.12.3 | -| v1.11.2 | v1.12.4 | -| >= v1.11.3 | v1.13.1 | -| >= v1.11.6 | v1.14.1 | -| v1.12 | v1.13.1 | -| >= v1.12.3 | v1.14.1 | - -See [corefile-migration](https://github.com/coredns/corefile-migration) +To look up the max supported CoreDNS version of a specific Cluster API version: +* Look up the `corefile-migration` version in the CAPI top-level go.mod file, e.g. `github.com/coredns/corefile-migration v1.0.31` +* Look up the highest supported CoreDNS version, e.g. in https://github.com/coredns/corefile-migration/blob/v1.0.31/migration/versions.go#L32 ### Other providers diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/clusterctl-1.12.4/go.mod new/clusterctl-1.12.5/go.mod --- old/clusterctl-1.12.4/go.mod 2026-03-17 12:51:40.000000000 +0100 +++ new/clusterctl-1.12.5/go.mod 2026-04-08 11:51:33.000000000 +0200 @@ -7,7 +7,7 @@ github.com/Masterminds/sprig/v3 v3.3.0 github.com/adrg/xdg v0.5.3 github.com/blang/semver/v4 v4.0.0 - github.com/coredns/corefile-migration v1.0.30 + github.com/coredns/corefile-migration v1.0.31 github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc github.com/distribution/reference v0.6.0 github.com/drone/envsubst/v2 v2.0.0-20210730161058-179042472c46 @@ -39,7 +39,7 @@ golang.org/x/oauth2 v0.34.0 golang.org/x/text v0.33.0 gomodules.xyz/jsonpatch/v2 v2.5.0 - google.golang.org/grpc v1.78.0 + google.golang.org/grpc v1.79.3 k8s.io/api v0.34.3 k8s.io/apiextensions-apiserver v0.34.3 k8s.io/apimachinery v0.34.3 @@ -57,7 +57,7 @@ ) require ( - cel.dev/expr v0.24.0 // indirect + cel.dev/expr v0.25.1 // indirect dario.cat/mergo v1.0.1 // indirect github.com/Masterminds/goutils v1.1.1 // indirect github.com/Masterminds/semver/v3 v3.4.0 // indirect diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/clusterctl-1.12.4/go.sum new/clusterctl-1.12.5/go.sum --- old/clusterctl-1.12.4/go.sum 2026-03-17 12:51:40.000000000 +0100 +++ new/clusterctl-1.12.5/go.sum 2026-04-08 11:51:33.000000000 +0200 @@ -1,5 +1,5 @@ -cel.dev/expr v0.24.0 h1:56OvJKSH3hDGL0ml5uSxZmz3/3Pq4tJ+fb1unVLAFcY= -cel.dev/expr v0.24.0/go.mod h1:hLPLo1W4QUmuYdA72RBX06QTs6MXw941piREPl3Yfiw= +cel.dev/expr v0.25.1 h1:1KrZg61W6TWSxuNZ37Xy49ps13NUovb66QLprthtwi4= +cel.dev/expr v0.25.1/go.mod h1:hrXvqGP6G6gyx8UAHSHJ5RGk//1Oj5nXQ2NI02Nrsg4= cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= @@ -65,8 +65,8 @@ github.com/cloudflare/circl v1.6.3/go.mod h1:2eXP6Qfat4O/Yhh8BznvKnJ+uzEoTQ6jVKJRn81BiS4= github.com/coredns/caddy v1.1.1 h1:2eYKZT7i6yxIfGP3qLJoJ7HAsDJqYB+X68g4NYjSrE0= github.com/coredns/caddy v1.1.1/go.mod h1:A6ntJQlAWuQfFlsd9hvigKbo2WS0VUs2l1e2F+BawD4= -github.com/coredns/corefile-migration v1.0.30 h1:ljZNPGgna+4yKv81gfkvkgLEWdtz0NjBR1glaiPI140= -github.com/coredns/corefile-migration v1.0.30/go.mod h1:56DPqONc3njpVPsdilEnfijCwNGC3/kTJLl7i7SPavY= +github.com/coredns/corefile-migration v1.0.31 h1:f7WGhY8M2Jn8P2dVO0p7wSQ1QKsMARl6WEyUjCb/V38= +github.com/coredns/corefile-migration v1.0.31/go.mod h1:56DPqONc3njpVPsdilEnfijCwNGC3/kTJLl7i7SPavY= github.com/coreos/go-semver v0.1.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= github.com/coreos/go-semver v0.3.1 h1:yi21YpKnrx1gt5R+la8n5WgS0kCrsPp33dmEyHReZr4= @@ -582,8 +582,8 @@ google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= -google.golang.org/grpc v1.78.0 h1:K1XZG/yGDJnzMdd/uZHAkVqJE+xIDOcmdSFZkBUicNc= -google.golang.org/grpc v1.78.0/go.mod h1:I47qjTo4OKbMkjA/aOOwxDIiPSBofUtQUI5EfpWvW7U= +google.golang.org/grpc v1.79.3 h1:sybAEdRIEtvcD68Gx7dmnwjZKlyfuc61Dyo9pGXXkKE= +google.golang.org/grpc v1.79.3/go.mod h1:KmT0Kjez+0dde/v2j9vzwoAScgEPx/Bw1CYChhHLrHQ= google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= google.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/clusterctl-1.12.4/hack/tools/go.mod new/clusterctl-1.12.5/hack/tools/go.mod --- old/clusterctl-1.12.4/hack/tools/go.mod 2026-03-17 12:51:40.000000000 +0100 +++ new/clusterctl-1.12.5/hack/tools/go.mod 2026-04-08 11:51:33.000000000 +0200 @@ -34,24 +34,25 @@ ) require ( - cel.dev/expr v0.24.0 // indirect + cel.dev/expr v0.25.1 // indirect cloud.google.com/go/auth v0.17.0 // indirect cloud.google.com/go/auth/oauth2adapt v0.2.8 // indirect cloud.google.com/go/monitoring v1.24.2 // indirect github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.31.0 // indirect github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.53.0 // indirect github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.53.0 // indirect - github.com/cncf/xds/go v0.0.0-20251022180443-0feb69152e9f // indirect + github.com/cncf/xds/go v0.0.0-20251210132809-ee656c7534f5 // indirect github.com/containerd/errdefs v1.0.0 // indirect github.com/containerd/errdefs/pkg v0.3.0 // indirect - github.com/envoyproxy/go-control-plane/envoy v1.35.0 // indirect - github.com/envoyproxy/protoc-gen-validate v1.2.1 // indirect + github.com/envoyproxy/go-control-plane/envoy v1.36.0 // indirect + github.com/envoyproxy/protoc-gen-validate v1.3.0 // indirect github.com/fxamacker/cbor/v2 v2.9.0 // indirect github.com/go-jose/go-jose/v4 v4.1.3 // indirect github.com/go-viper/mapstructure/v2 v2.4.0 // indirect github.com/google/btree v1.1.3 // indirect github.com/moby/docker-image-spec v1.3.1 // indirect - github.com/moby/sys/sequential v0.6.0 // indirect + github.com/moby/moby/api v1.54.1 // indirect + github.com/moby/moby/client v0.4.0 // indirect github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/spiffe/go-spiffe/v2 v2.6.0 // indirect @@ -84,9 +85,8 @@ github.com/cyphar/filepath-securejoin v0.2.4 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/distribution/reference v0.6.0 // indirect - github.com/docker/docker v28.5.2+incompatible // indirect github.com/docker/go-connections v0.6.0 // indirect - github.com/docker/go-units v0.4.0 // indirect + github.com/docker/go-units v0.5.0 // indirect github.com/drone/envsubst/v2 v2.0.0-20210730161058-179042472c46 github.com/emicklei/go-restful/v3 v3.13.0 // indirect github.com/emirpasic/gods v1.18.1 // indirect @@ -127,7 +127,7 @@ github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect github.com/nozzle/throttler v0.0.0-20180817012639-2ea982251481 // indirect github.com/opencontainers/go-digest v1.0.0 // indirect - github.com/opencontainers/image-spec v1.1.0-rc5 // indirect + github.com/opencontainers/image-spec v1.1.1 // indirect github.com/pelletier/go-toml/v2 v2.2.4 // indirect github.com/pjbgf/sha1cd v0.3.0 // indirect github.com/prometheus/client_golang v1.22.0 // indirect @@ -164,7 +164,7 @@ google.golang.org/genproto v0.0.0-20250603155806-513f23925822 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20260128011058-8636f8732409 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20260128011058-8636f8732409 // indirect - google.golang.org/grpc v1.78.0 // indirect + google.golang.org/grpc v1.79.3 // indirect google.golang.org/protobuf v1.36.11 // indirect gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/warnings.v0 v0.1.2 // indirect diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/clusterctl-1.12.4/hack/tools/go.sum new/clusterctl-1.12.5/hack/tools/go.sum --- old/clusterctl-1.12.4/hack/tools/go.sum 2026-03-17 12:51:40.000000000 +0100 +++ new/clusterctl-1.12.5/hack/tools/go.sum 2026-04-08 11:51:33.000000000 +0200 @@ -1,5 +1,5 @@ -cel.dev/expr v0.24.0 h1:56OvJKSH3hDGL0ml5uSxZmz3/3Pq4tJ+fb1unVLAFcY= -cel.dev/expr v0.24.0/go.mod h1:hLPLo1W4QUmuYdA72RBX06QTs6MXw941piREPl3Yfiw= +cel.dev/expr v0.25.1 h1:1KrZg61W6TWSxuNZ37Xy49ps13NUovb66QLprthtwi4= +cel.dev/expr v0.25.1/go.mod h1:hrXvqGP6G6gyx8UAHSHJ5RGk//1Oj5nXQ2NI02Nrsg4= cloud.google.com/go v0.121.6 h1:waZiuajrI28iAf40cWgycWNgaXPO06dupuS+sgibK6c= cloud.google.com/go v0.121.6/go.mod h1:coChdst4Ea5vUpiALcYKXEpR1S9ZgXbhEzzMcMR66vI= cloud.google.com/go/auth v0.17.0 h1:74yCm7hCj2rUyyAocqnFzsAYXgJhrG26XCFimrc/Kz4= @@ -22,8 +22,6 @@ cloud.google.com/go/trace v1.11.6/go.mod h1:GA855OeDEBiBMzcckLPE2kDunIpC72N+Pq8WFieFjnI= 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/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161 h1:L/gRVlceqvL25UVaW/CKtUDjefjrs0SPonmDGUVOYP0= -github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E= github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.31.0 h1:DHa2U07rk8syqvCge0QIGMCE1WxGj9njT44GH7zNJLQ= github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.31.0/go.mod h1:P4WPRUkOhJC13W//jWpyfJNDAIpvRbAUIYLX/4jtlE0= github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.53.0 h1:owcC2UnmsZycprQ5RfRgjydWhuoxg71LUfyiQdijZuM= @@ -69,18 +67,16 @@ github.com/cloudflare/circl v1.3.3/go.mod h1:5XYMA4rFBvNIrhs50XuiBJ15vF2pZn4nnUKZrLbUZFA= github.com/cloudflare/circl v1.6.3 h1:9GPOhQGF9MCYUeXyMYlqTR6a5gTrgR/fBLXvUgtVcg8= github.com/cloudflare/circl v1.6.3/go.mod h1:2eXP6Qfat4O/Yhh8BznvKnJ+uzEoTQ6jVKJRn81BiS4= -github.com/cncf/xds/go v0.0.0-20251022180443-0feb69152e9f h1:Y8xYupdHxryycyPlc9Y+bSQAYZnetRJ70VMVKm5CKI0= -github.com/cncf/xds/go v0.0.0-20251022180443-0feb69152e9f/go.mod h1:HlzOvOjVBOfTGSRXRyY0OiCS/3J1akRGQQpRO/7zyF4= +github.com/cncf/xds/go v0.0.0-20251210132809-ee656c7534f5 h1:6xNmx7iTtyBRev0+D/Tv1FZd4SCg8axKApyNyRsAt/w= +github.com/cncf/xds/go v0.0.0-20251210132809-ee656c7534f5/go.mod h1:KdCmV+x/BuvyMxRnYBlmVaq4OLiKW6iRQfvC62cvdkI= github.com/containerd/errdefs v1.0.0 h1:tg5yIfIlQIrxYtu9ajqY42W3lpS19XqdxRQeEwYG8PI= github.com/containerd/errdefs v1.0.0/go.mod h1:+YBYIdtsnF4Iw6nWZhJcqGSg/dwvV7tyJ/kCkyJ2k+M= github.com/containerd/errdefs/pkg v0.3.0 h1:9IKJ06FvyNlexW690DXuQNx2KA2cUJXx151Xdx3ZPPE= github.com/containerd/errdefs/pkg v0.3.0/go.mod h1:NJw6s9HwNuRhnjJhM7pylWwMyAkmCQvQ4GpJHEqRLVk= -github.com/containerd/log v0.1.0 h1:TCJt7ioM2cr/tfR8GPbGf9/VRAX8D2B4PjzCpfX540I= -github.com/containerd/log v0.1.0/go.mod h1:VRRf09a7mHDIRezVKTRCrOq78v577GXq3bSa3EhrzVo= github.com/coredns/caddy v1.1.1 h1:2eYKZT7i6yxIfGP3qLJoJ7HAsDJqYB+X68g4NYjSrE0= github.com/coredns/caddy v1.1.1/go.mod h1:A6ntJQlAWuQfFlsd9hvigKbo2WS0VUs2l1e2F+BawD4= -github.com/coredns/corefile-migration v1.0.30 h1:ljZNPGgna+4yKv81gfkvkgLEWdtz0NjBR1glaiPI140= -github.com/coredns/corefile-migration v1.0.30/go.mod h1:56DPqONc3njpVPsdilEnfijCwNGC3/kTJLl7i7SPavY= +github.com/coredns/corefile-migration v1.0.31 h1:f7WGhY8M2Jn8P2dVO0p7wSQ1QKsMARl6WEyUjCb/V38= +github.com/coredns/corefile-migration v1.0.31/go.mod h1:56DPqONc3njpVPsdilEnfijCwNGC3/kTJLl7i7SPavY= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/cyphar/filepath-securejoin v0.2.4 h1:Ugdm7cg7i6ZK6x3xDF1oEu1nfkyfH53EtKeQYTC3kyg= github.com/cyphar/filepath-securejoin v0.2.4/go.mod h1:aPGpWjXOXUn2NCNjFvBE6aRxGGx79pTxQpKOJNYHHl4= @@ -90,12 +86,10 @@ github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/distribution/reference v0.6.0 h1:0IXCQ5g4/QMHHkarYzh5l+u8T3t73zM5QvfrDyIgxBk= github.com/distribution/reference v0.6.0/go.mod h1:BbU0aIcezP1/5jX/8MP0YiH4SdvB5Y4f/wlDRiLyi3E= -github.com/docker/docker v28.5.2+incompatible h1:DBX0Y0zAjZbSrm1uzOkdr1onVghKaftjlSWt4AFexzM= -github.com/docker/docker v28.5.2+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= github.com/docker/go-connections v0.6.0 h1:LlMG9azAe1TqfR7sO+NJttz1gy6KO7VJBh+pMmjSD94= github.com/docker/go-connections v0.6.0/go.mod h1:AahvXYshr6JgfUJGdDCs2b5EZG/vmaMAntpSFH5BFKE= -github.com/docker/go-units v0.4.0 h1:3uh0PgVws3nIA0Q+MwDC8yjEPf9zjRfZZWXZYDct3Tw= -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/drone/envsubst/v2 v2.0.0-20210730161058-179042472c46 h1:7QPwrLT79GlD5sizHf27aoY2RTvw62mO6x7mxkScNk0= github.com/drone/envsubst/v2 v2.0.0-20210730161058-179042472c46/go.mod h1:esf2rsHFNlZlxsqsZDojNBcnNs5REqIvRrWRHqX0vEU= github.com/elazarl/goproxy v0.0.0-20230808193330-2592e75ae04a h1:mATvB/9r/3gvcejNsXKSkQ6lcIaNec2nyfOdlTBR2lU= @@ -104,14 +98,14 @@ github.com/emicklei/go-restful/v3 v3.13.0/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc= github.com/emirpasic/gods v1.18.1 h1:FXtiHYKDGKCW2KzwZKx0iC0PQmdlorYgdFG9jPXJ1Bc= github.com/emirpasic/gods v1.18.1/go.mod h1:8tpGGwCnJ5H4r6BWwaV6OrWmMoPhUl5jm/FMNAnJvWQ= -github.com/envoyproxy/go-control-plane v0.13.5-0.20251024222203-75eaa193e329 h1:K+fnvUM0VZ7ZFJf0n4L/BRlnsb9pL/GuDG6FqaH+PwM= -github.com/envoyproxy/go-control-plane v0.13.5-0.20251024222203-75eaa193e329/go.mod h1:Alz8LEClvR7xKsrq3qzoc4N0guvVNSS8KmSChGYr9hs= -github.com/envoyproxy/go-control-plane/envoy v1.35.0 h1:ixjkELDE+ru6idPxcHLj8LBVc2bFP7iBytj353BoHUo= -github.com/envoyproxy/go-control-plane/envoy v1.35.0/go.mod h1:09qwbGVuSWWAyN5t/b3iyVfz5+z8QWGrzkoqm/8SbEs= +github.com/envoyproxy/go-control-plane v0.14.0 h1:hbG2kr4RuFj222B6+7T83thSPqLjwBIfQawTkC++2HA= +github.com/envoyproxy/go-control-plane v0.14.0/go.mod h1:NcS5X47pLl/hfqxU70yPwL9ZMkUlwlKxtAohpi2wBEU= +github.com/envoyproxy/go-control-plane/envoy v1.36.0 h1:yg/JjO5E7ubRyKX3m07GF3reDNEnfOboJ0QySbH736g= +github.com/envoyproxy/go-control-plane/envoy v1.36.0/go.mod h1:ty89S1YCCVruQAm9OtKeEkQLTb+Lkz0k8v9W0Oxsv98= github.com/envoyproxy/go-control-plane/ratelimit v0.1.0 h1:/G9QYbddjL25KvtKTv3an9lx6VBE2cnb8wp1vEGNYGI= github.com/envoyproxy/go-control-plane/ratelimit v0.1.0/go.mod h1:Wk+tMFAFbCXaJPzVVHnPgRKdUdwW/KdbRt94AzgRee4= -github.com/envoyproxy/protoc-gen-validate v1.2.1 h1:DEo3O99U8j4hBFwbJfrz9VtgcDfUKS7KJ7spH3d86P8= -github.com/envoyproxy/protoc-gen-validate v1.2.1/go.mod h1:d/C80l/jxXLdfEIhX1W2TmLfsJ31lvEjwamM4DxlWXU= +github.com/envoyproxy/protoc-gen-validate v1.3.0 h1:TvGH1wof4H33rezVKWSpqKz5NXWg5VPuZ0uONDT6eb4= +github.com/envoyproxy/protoc-gen-validate v1.3.0/go.mod h1:HvYl7zwPa5mffgyeTUHA9zHIH36nmrm7oCbo4YKoSWA= github.com/evanphx/json-patch v5.7.0+incompatible h1:vgGkfT/9f8zE6tvSCe74nfpAVDQ2tG6yudJd8LBksgI= github.com/evanphx/json-patch v5.7.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= github.com/evanphx/json-patch/v5 v5.9.11 h1:/8HVnzMq13/3x9TPvjG08wUGqBTmZBsCWzjTM0wiaDU= @@ -243,20 +237,16 @@ github.com/mitchellh/reflectwalk v1.0.2/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= github.com/moby/docker-image-spec v1.3.1 h1:jMKff3w6PgbfSa69GfNg+zN/XLhfXJGnEx3Nl2EsFP0= github.com/moby/docker-image-spec v1.3.1/go.mod h1:eKmb5VW8vQEh/BAr2yvVNvuiJuY6UIocYsFu/DxxRpo= -github.com/moby/sys/atomicwriter v0.1.0 h1:kw5D/EqkBwsBFi0ss9v1VG3wIkVhzGvLklJ+w3A14Sw= -github.com/moby/sys/atomicwriter v0.1.0/go.mod h1:Ul8oqv2ZMNHOceF643P6FKPXeCmYtlQMvpizfsSoaWs= -github.com/moby/sys/sequential v0.6.0 h1:qrx7XFUd/5DxtqcoH1h438hF5TmOvzC/lspjy7zgvCU= -github.com/moby/sys/sequential v0.6.0/go.mod h1:uyv8EUTrca5PnDsdMGXhZe6CCe8U/UiTWd+lL+7b/Ko= -github.com/moby/term v0.5.0 h1:xt8Q1nalod/v7BqbG21f8mQPqH+xAaC9C3N3wfWbVP0= -github.com/moby/term v0.5.0/go.mod h1:8FzsFHVUBGZdbDsJw/ot+X+d5HLUbvklYLJ9uGfcI3Y= +github.com/moby/moby/api v1.54.1 h1:TqVzuJkOLsgLDDwNLmYqACUuTehOHRGKiPhvH8V3Nn4= +github.com/moby/moby/api v1.54.1/go.mod h1:+RQ6wluLwtYaTd1WnPLykIDPekkuyD/ROWQClE83pzs= +github.com/moby/moby/client v0.4.0 h1:S+2XegzHQrrvTCvF6s5HFzcrywWQmuVnhOXe2kiWjIw= +github.com/moby/moby/client v0.4.0/go.mod h1:QWPbvWchQbxBNdaLSpoKpCdf5E+WxFAgNHogCWDoa7g= 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= github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee h1:W5t00kpgFdJifH4BDsTlE89Zl93FEloxaWZfGcifgq8= github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= -github.com/morikuni/aec v1.0.0 h1:nP9CBfwrvYnBRgY6qfDQkygYDmYwOilePFkwzv4dU8A= -github.com/morikuni/aec v1.0.0/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= github.com/nozzle/throttler v0.0.0-20180817012639-2ea982251481 h1:Up6+btDp321ZG5/zdSLo48H9Iaq0UQGthrhWC6pCxzE= @@ -271,8 +261,8 @@ github.com/onsi/gomega v1.38.2/go.mod h1:W2MJcYxRGV63b418Ai34Ud0hEdTVXq9NW9+Sx6uXf3k= github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U= github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= -github.com/opencontainers/image-spec v1.1.0-rc5 h1:Ygwkfw9bpDvs+c9E34SdgGOj41dX/cbdlwvlWt0pnFI= -github.com/opencontainers/image-spec v1.1.0-rc5/go.mod h1:X4pATf0uXsnn3g5aiGIsVnJBR4mxhKzfwmvK/B2NTm8= +github.com/opencontainers/image-spec v1.1.1 h1:y0fUlFfIZhPF1W537XOLg0/fcx6zcHCJwooC2xJA040= +github.com/opencontainers/image-spec v1.1.1/go.mod h1:qpqAh3Dmcf36wStyyWU+kCeDgrGnAve2nCC8+7h8Q0M= github.com/pelletier/go-toml/v2 v2.2.4 h1:mye9XuhQ6gvn5h28+VilKrrPoQVanw5PMw/TB0t5Ec4= github.com/pelletier/go-toml/v2 v2.2.4/go.mod h1:2gIqNv+qfxSVS7cM2xJQKtLSTLUE9V8t9Stt+h56mCY= github.com/pjbgf/sha1cd v0.3.0 h1:4D5XXmUUBUl/xQ6IjCkEAbqXskkq/4O7LmGn0AqMDs4= @@ -365,8 +355,6 @@ go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.40.0/go.mod h1:bTdK1nhqF76qiPoCCdyFIV+N/sRHYXYCTQc+3VCi3MI= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.40.0 h1:DvJDOPmSWQHWywQS6lKL+pb8s3gBLOZUtw4N+mavW1I= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.40.0/go.mod h1:EtekO9DEJb4/jRyN4v4Qjc2yA7AtfCBuz2FynRUWTXs= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.40.0 h1:wVZXIWjQSeSmMoxF74LzAnpVQOAFDo3pPji9Y4SOFKc= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.40.0/go.mod h1:khvBS2IggMFNwZK/6lEeHg/W57h/IX6J4URh57fuI40= go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.36.0 h1:rixTyDGXFxRy1xzhKrotaHy3/KXdPhlWARrCgK+eqUY= go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.36.0/go.mod h1:dowW6UsM9MKbJq5JTz2AMVp3/5iW5I/TStsk8S+CfHw= go.opentelemetry.io/otel/metric v1.40.0 h1:rcZe317KPftE2rstWIBitCdVp89A2HqjkxR3c11+p9g= @@ -490,8 +478,8 @@ google.golang.org/genproto/googleapis/api v0.0.0-20260128011058-8636f8732409/go.mod h1:fl8J1IvUjCilwZzQowmw2b7HQB2eAuYBabMXzWurF+I= google.golang.org/genproto/googleapis/rpc v0.0.0-20260128011058-8636f8732409 h1:H86B94AW+VfJWDqFeEbBPhEtHzJwJfTbgE2lZa54ZAQ= google.golang.org/genproto/googleapis/rpc v0.0.0-20260128011058-8636f8732409/go.mod h1:j9x/tPzZkyxcgEFkiKEEGxfvyumM01BEtsW8xzOahRQ= -google.golang.org/grpc v1.78.0 h1:K1XZG/yGDJnzMdd/uZHAkVqJE+xIDOcmdSFZkBUicNc= -google.golang.org/grpc v1.78.0/go.mod h1:I47qjTo4OKbMkjA/aOOwxDIiPSBofUtQUI5EfpWvW7U= +google.golang.org/grpc v1.79.3 h1:sybAEdRIEtvcD68Gx7dmnwjZKlyfuc61Dyo9pGXXkKE= +google.golang.org/grpc v1.79.3/go.mod h1:KmT0Kjez+0dde/v2j9vzwoAScgEPx/Bw1CYChhHLrHQ= google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= google.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= @@ -512,8 +500,8 @@ 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= -gotest.tools/v3 v3.4.0 h1:ZazjZUfuVeZGLAmlKKuyv3IKP5orXcwtOwDQH6YVr6o= -gotest.tools/v3 v3.4.0/go.mod h1:CtbdzLSsqVhDgMtKsx03ird5YTGB3ar27v0u/yKBW5g= +gotest.tools/v3 v3.5.2 h1:7koQfIKdy+I8UTetycgUqXWSDwpgv193Ka+qRsmBY8Q= +gotest.tools/v3 v3.5.2/go.mod h1:LtdLGcnqToBH83WByAAi/wiwSFCArdFIUV/xxN4pcjA= k8s.io/api v0.34.3 h1:D12sTP257/jSH2vHV2EDYrb16bS7ULlHpdNdNhEw2S4= k8s.io/api v0.34.3/go.mod h1:PyVQBF886Q5RSQZOim7DybQjAbVs8g7gwJNhGtY5MBk= k8s.io/apiextensions-apiserver v0.34.3 h1:p10fGlkDY09eWKOTeUSioxwLukJnm+KuDZdrW71y40g= @@ -536,6 +524,8 @@ k8s.io/release v0.16.9/go.mod h1:iRTTQYssZDVke2X7bqhdbi3cPjdmRqZXpIJsp2IRDyM= k8s.io/utils v0.0.0-20250604170112-4c0f3b243397 h1:hwvWFiBzdWw1FhfY1FooPn3kzWuJ8tmbZBHi4zVsl1Y= k8s.io/utils v0.0.0-20250604170112-4c0f3b243397/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= +pgregory.net/rapid v1.2.0 h1:keKAYRcjm+e1F0oAuU5F5+YPAWcyxNNRK2wud503Gnk= +pgregory.net/rapid v1.2.0/go.mod h1:PY5XlDGj0+V1FCq0o192FdRhpKHGTRIWBgqjDBTrq04= sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.31.2 h1:jpcvIRr3GLoUoEKRkHKSmGjxb6lWwrBlJsXc+eUYQHM= sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.31.2/go.mod h1:Ve9uj1L+deCXFrPOk1LpFXqTg7LCFzFso6PA48q/XZw= sigs.k8s.io/controller-runtime v0.22.5 h1:v3nfSUMowX/2WMp27J9slwGFyAt7IV0YwBxAkrUr0GE= diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/clusterctl-1.12.4/internal/controllers/cluster/cluster_controller_test.go new/clusterctl-1.12.5/internal/controllers/cluster/cluster_controller_test.go --- old/clusterctl-1.12.4/internal/controllers/cluster/cluster_controller_test.go 2026-03-17 12:51:40.000000000 +0100 +++ new/clusterctl-1.12.5/internal/controllers/cluster/cluster_controller_test.go 2026-04-08 11:51:33.000000000 +0200 @@ -262,9 +262,9 @@ ph, err := patch.NewHelper(cluster, env) g.Expect(err).ToNot(HaveOccurred()) conditions.Set(cluster, metav1.Condition{ - Type: clusterv1.ClusterInfrastructureReadyCondition, + Type: "CustomType", Status: metav1.ConditionTrue, - Reason: clusterv1.ClusterInfrastructureReadyReason, + Reason: "CustomReason", }) g.Expect(ph.Patch(ctx, cluster, patch.WithStatusObservedGeneration{})).To(Succeed()) return true @@ -276,7 +276,7 @@ if err := env.Get(ctx, key, instance); err != nil { return false } - return conditions.IsTrue(cluster, clusterv1.ClusterInfrastructureReadyCondition) + return conditions.IsTrue(cluster, "CustomType") }, timeout).Should(BeTrue()) }) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/clusterctl-1.12.4/internal/controllers/machineset/machineset_controller_test.go new/clusterctl-1.12.5/internal/controllers/machineset/machineset_controller_test.go --- old/clusterctl-1.12.4/internal/controllers/machineset/machineset_controller_test.go 2026-03-17 12:51:40.000000000 +0100 +++ new/clusterctl-1.12.5/internal/controllers/machineset/machineset_controller_test.go 2026-04-08 11:51:33.000000000 +0200 @@ -2599,7 +2599,7 @@ }, } - fakeClient := fake.NewClientBuilder().WithObjects(controlPlaneUpgrading, builder.GenericControlPlaneCRD, machineSet).WithStatusSubresource(&clusterv1.MachineSet{}).Build() + fakeClient := fake.NewClientBuilder().WithObjects(controlPlaneUpgrading, builder.GenericControlPlaneCRD, machineSet).WithStatusSubresource(&clusterv1.MachineSet{}).WithScheme(fakeScheme).Build() r := &Reconciler{ Client: fakeClient, PreflightChecks: sets.Set[clusterv1.MachineSetPreflightCheck]{}.Insert(clusterv1.MachineSetPreflightCheckAll), diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/clusterctl-1.12.4/scripts/ci-e2e-lib.sh new/clusterctl-1.12.5/scripts/ci-e2e-lib.sh --- old/clusterctl-1.12.4/scripts/ci-e2e-lib.sh 2026-03-17 12:51:40.000000000 +0100 +++ new/clusterctl-1.12.5/scripts/ci-e2e-lib.sh 2026-04-08 11:51:33.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.19.4" - kind::prepullImage "quay.io/jetstack/cert-manager-webhook:v1.19.4" - kind::prepullImage "quay.io/jetstack/cert-manager-controller:v1.19.4" + kind::prepullImage "quay.io/jetstack/cert-manager-cainjector:v1.20.1" + kind::prepullImage "quay.io/jetstack/cert-manager-webhook:v1.20.1" + kind::prepullImage "quay.io/jetstack/cert-manager-controller:v1.20.1" # 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.12.4/test/e2e/config/docker.yaml new/clusterctl-1.12.5/test/e2e/config/docker.yaml --- old/clusterctl-1.12.4/test/e2e/config/docker.yaml 2026-03-17 12:51:40.000000000 +0100 +++ new/clusterctl-1.12.5/test/e2e/config/docker.yaml 2026-04-08 11:51:33.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.19.4 +- name: quay.io/jetstack/cert-manager-cainjector:v1.20.1 loadBehavior: tryLoad -- name: quay.io/jetstack/cert-manager-webhook:v1.19.4 +- name: quay.io/jetstack/cert-manager-webhook:v1.20.1 loadBehavior: tryLoad -- name: quay.io/jetstack/cert-manager-controller:v1.19.4 +- name: quay.io/jetstack/cert-manager-controller:v1.20.1 loadBehavior: tryLoad providers: @@ -371,14 +371,14 @@ # allowing the same e2e config file to be re-used in different Prow jobs e.g. each one with a K8s version permutation. # The following Kubernetes versions should be the latest versions with already published kindest/node images. # This avoids building node images in the default case which improves the test duration significantly. - KUBERNETES_VERSION_MANAGEMENT: "v1.35.0" - KUBERNETES_VERSION: "v1.35.0" - KUBERNETES_VERSION_CHAINED_UPGRADE_FROM: "v1.31.14" # Should always be KUBERNETES_VERSION_UPGRADE_TO - 4 minor - KUBERNETES_VERSION_UPGRADE_FROM: "v1.34.3" - KUBERNETES_VERSION_UPGRADE_TO: "v1.35.0" - KUBERNETES_VERSION_LATEST_CI: "ci/latest-1.35" - ETCD_VERSION_UPGRADE_TO: "3.6.6-0" - COREDNS_VERSION_UPGRADE_TO: "v1.13.1" + KUBERNETES_VERSION_MANAGEMENT: "v1.36.0-beta.0" + KUBERNETES_VERSION: "v1.36.0-beta.0" + KUBERNETES_VERSION_CHAINED_UPGRADE_FROM: "v1.32.11" # Should always be KUBERNETES_VERSION_UPGRADE_TO - 4 minor + KUBERNETES_VERSION_UPGRADE_FROM: "v1.35.0" + KUBERNETES_VERSION_UPGRADE_TO: "v1.36.0-beta.0" + KUBERNETES_VERSION_LATEST_CI: "ci/latest-1.36" + ETCD_VERSION_UPGRADE_TO: "3.6.8-0" + COREDNS_VERSION_UPGRADE_TO: "v1.14.2" DOCKER_SERVICE_DOMAIN: "cluster.local" IP_FAMILY: "dual" DOCKER_SERVICE_CIDRS: "10.128.0.0/12" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/clusterctl-1.12.4/test/framework/kubetest/run.go new/clusterctl-1.12.5/test/framework/kubetest/run.go --- old/clusterctl-1.12.4/test/framework/kubetest/run.go 2026-03-17 12:51:40.000000000 +0100 +++ new/clusterctl-1.12.5/test/framework/kubetest/run.go 2026-04-08 11:51:33.000000000 +0200 @@ -27,7 +27,7 @@ "strconv" "strings" - dockercontainer "github.com/docker/docker/api/types/container" + dockercontainer "github.com/moby/moby/api/types/container" "github.com/onsi/ginkgo/v2" "github.com/pkg/errors" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/clusterctl-1.12.4/test/go.mod new/clusterctl-1.12.5/test/go.mod --- old/clusterctl-1.12.4/test/go.mod 2026-03-17 12:51:40.000000000 +0100 +++ new/clusterctl-1.12.5/test/go.mod 2026-04-08 11:51:33.000000000 +0200 @@ -6,13 +6,12 @@ require ( github.com/blang/semver/v4 v4.0.0 - github.com/docker/docker v28.5.2+incompatible - github.com/docker/go-connections v0.6.0 github.com/emicklei/go-restful/v3 v3.13.0 github.com/evanphx/json-patch/v5 v5.9.11 github.com/flatcar/ignition v0.36.2 github.com/go-logr/logr v1.4.3 github.com/google/go-cmp v0.7.0 + github.com/moby/moby/api v1.54.1 github.com/onsi/ginkgo/v2 v2.27.2 github.com/onsi/gomega v1.38.2 github.com/pkg/errors v0.9.1 @@ -24,7 +23,7 @@ go.etcd.io/etcd/client/v3 v3.6.6 golang.org/x/net v0.49.0 gomodules.xyz/jsonpatch/v2 v2.5.0 - google.golang.org/grpc v1.78.0 + google.golang.org/grpc v1.79.3 k8s.io/api v0.34.3 k8s.io/apiextensions-apiserver v0.34.3 k8s.io/apimachinery v0.34.3 @@ -42,14 +41,14 @@ require ( al.essio.dev/pkg/shellescape v1.5.1 // indirect - cel.dev/expr v0.24.0 // indirect + cel.dev/expr v0.25.1 // indirect dario.cat/mergo v1.0.1 // indirect github.com/BurntSushi/toml v1.4.0 // indirect github.com/MakeNowJust/heredoc v1.0.0 // indirect github.com/Masterminds/goutils v1.1.1 // indirect github.com/Masterminds/semver/v3 v3.4.0 // indirect github.com/Masterminds/sprig/v3 v3.3.0 // indirect - github.com/Microsoft/go-winio v0.5.0 // indirect + github.com/Microsoft/go-winio v0.6.2 // indirect github.com/NYTimes/gziphandler v1.1.1 // indirect github.com/ProtonMail/go-crypto v0.0.0-20230217124315-7d5c6f04bbb8 // indirect github.com/adrg/xdg v0.5.3 // indirect @@ -60,13 +59,13 @@ github.com/cloudflare/circl v1.6.3 // indirect github.com/containerd/errdefs v1.0.0 // indirect github.com/containerd/errdefs/pkg v0.3.0 // indirect - github.com/containerd/log v0.1.0 // indirect github.com/coreos/go-semver v0.3.1 // indirect github.com/coreos/go-systemd v0.0.0-20191104093116-d3cd4ed1dbcf // indirect github.com/coreos/go-systemd/v22 v22.5.0 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/distribution/reference v0.6.0 // indirect - github.com/docker/go-units v0.4.0 // indirect + github.com/docker/go-connections v0.6.0 // indirect + github.com/docker/go-units v0.5.0 // indirect github.com/drone/envsubst/v2 v2.0.0-20210730161058-179042472c46 // indirect github.com/fatih/color v1.18.0 // indirect github.com/felixge/httpsnoop v1.0.4 // indirect @@ -104,11 +103,10 @@ github.com/mitchellh/copystructure v1.2.0 // indirect github.com/mitchellh/reflectwalk v1.0.2 // indirect github.com/moby/docker-image-spec v1.3.1 // indirect + github.com/moby/moby/client v0.4.0 github.com/moby/spdystream v0.5.0 // indirect - github.com/moby/sys/atomicwriter v0.1.0 // indirect github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee // indirect - github.com/morikuni/aec v1.0.0 // indirect github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f // indirect github.com/olekukonko/cat v0.0.0-20250911104152-50322a0618f6 // indirect @@ -116,7 +114,7 @@ github.com/olekukonko/ll v0.1.1 // indirect github.com/olekukonko/tablewriter v1.0.9 // indirect github.com/opencontainers/go-digest v1.0.0 // indirect - github.com/opencontainers/image-spec v1.0.2 // indirect + github.com/opencontainers/image-spec v1.1.1 // indirect github.com/pelletier/go-toml v1.9.5 // indirect github.com/pelletier/go-toml/v2 v2.2.4 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect @@ -141,7 +139,6 @@ go.opentelemetry.io/otel v1.40.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.40.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.40.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.40.0 // indirect go.opentelemetry.io/otel/metric v1.40.0 // indirect go.opentelemetry.io/otel/sdk v1.40.0 // indirect go.opentelemetry.io/otel/trace v1.40.0 // indirect @@ -158,7 +155,7 @@ golang.org/x/sys v0.40.0 // indirect golang.org/x/term v0.39.0 // indirect golang.org/x/text v0.33.0 // indirect - golang.org/x/time v0.9.0 // indirect + golang.org/x/time v0.11.0 // indirect golang.org/x/tools v0.40.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20260128011058-8636f8732409 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20260128011058-8636f8732409 // indirect @@ -166,7 +163,6 @@ gopkg.in/evanphx/json-patch.v4 v4.12.0 // indirect gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect - gotest.tools/v3 v3.4.0 // indirect k8s.io/cluster-bootstrap v0.34.2 // indirect k8s.io/kube-openapi v0.0.0-20250710124328-f3f2b991d03b // indirect sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.31.2 // indirect diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/clusterctl-1.12.4/test/go.sum new/clusterctl-1.12.5/test/go.sum --- old/clusterctl-1.12.4/test/go.sum 2026-03-17 12:51:40.000000000 +0100 +++ new/clusterctl-1.12.5/test/go.sum 2026-04-08 11:51:33.000000000 +0200 @@ -1,11 +1,9 @@ al.essio.dev/pkg/shellescape v1.5.1 h1:86HrALUujYS/h+GtqoB26SBEdkWfmMI6FubjXlsXyho= al.essio.dev/pkg/shellescape v1.5.1/go.mod h1:6sIqp7X2P6mThCQ7twERpZTuigpr6KbZWtls1U8I890= -cel.dev/expr v0.24.0 h1:56OvJKSH3hDGL0ml5uSxZmz3/3Pq4tJ+fb1unVLAFcY= -cel.dev/expr v0.24.0/go.mod h1:hLPLo1W4QUmuYdA72RBX06QTs6MXw941piREPl3Yfiw= +cel.dev/expr v0.25.1 h1:1KrZg61W6TWSxuNZ37Xy49ps13NUovb66QLprthtwi4= +cel.dev/expr v0.25.1/go.mod h1:hrXvqGP6G6gyx8UAHSHJ5RGk//1Oj5nXQ2NI02Nrsg4= 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/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161 h1:L/gRVlceqvL25UVaW/CKtUDjefjrs0SPonmDGUVOYP0= -github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E= github.com/BurntSushi/toml v1.4.0 h1:kuoIxZQy2WRRk1pttg9asf+WVv6tWQuBNVmK8+nqPr0= github.com/BurntSushi/toml v1.4.0/go.mod h1:ukJfTF/6rtPPRCnwkur4qwRxa8vTRFBF0uk2lLoLwho= github.com/MakeNowJust/heredoc v1.0.0 h1:cXCdzVdstXyiTqTvfqk9SDHpKNjxuom+DOlyEeQ4pzQ= @@ -16,8 +14,8 @@ github.com/Masterminds/semver/v3 v3.4.0/go.mod h1:4V+yj/TJE1HU9XfppCwVMZq3I84lprf4nC11bSS5beM= github.com/Masterminds/sprig/v3 v3.3.0 h1:mQh0Yrg1XPo6vjYXgtf5OtijNAKJRNcTdOOGZe3tPhs= github.com/Masterminds/sprig/v3 v3.3.0/go.mod h1:Zy1iXRYNqNLUolqCpL4uhk6SHUMAOSCzdgBfDb35Lz0= -github.com/Microsoft/go-winio v0.5.0 h1:Elr9Wn+sGKPlkaBvwu4mTrxtmOp3F3yV9qhaHbXGjwU= -github.com/Microsoft/go-winio v0.5.0/go.mod h1:JPGBdM1cNvN/6ISo+n8V5iA4v8pBzdOpzfwIujj1a84= +github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY= +github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU= github.com/NYTimes/gziphandler v1.1.1 h1:ZUDjpQae29j0ryrS0u/B8HZfJBtBQHjqw2rQ2cqUQ3I= github.com/NYTimes/gziphandler v1.1.1/go.mod h1:n/CVRwUEOgIxrgPvAQhUUr9oeUtvrhMomdKFjzJNB0c= github.com/ProtonMail/go-crypto v0.0.0-20230217124315-7d5c6f04bbb8 h1:wPbRQzjjwFc0ih8puEVAOFGELsn1zoIIYdxvML7mDxA= @@ -46,12 +44,10 @@ github.com/containerd/errdefs v1.0.0/go.mod h1:+YBYIdtsnF4Iw6nWZhJcqGSg/dwvV7tyJ/kCkyJ2k+M= github.com/containerd/errdefs/pkg v0.3.0 h1:9IKJ06FvyNlexW690DXuQNx2KA2cUJXx151Xdx3ZPPE= github.com/containerd/errdefs/pkg v0.3.0/go.mod h1:NJw6s9HwNuRhnjJhM7pylWwMyAkmCQvQ4GpJHEqRLVk= -github.com/containerd/log v0.1.0 h1:TCJt7ioM2cr/tfR8GPbGf9/VRAX8D2B4PjzCpfX540I= -github.com/containerd/log v0.1.0/go.mod h1:VRRf09a7mHDIRezVKTRCrOq78v577GXq3bSa3EhrzVo= github.com/coredns/caddy v1.1.1 h1:2eYKZT7i6yxIfGP3qLJoJ7HAsDJqYB+X68g4NYjSrE0= github.com/coredns/caddy v1.1.1/go.mod h1:A6ntJQlAWuQfFlsd9hvigKbo2WS0VUs2l1e2F+BawD4= -github.com/coredns/corefile-migration v1.0.30 h1:ljZNPGgna+4yKv81gfkvkgLEWdtz0NjBR1glaiPI140= -github.com/coredns/corefile-migration v1.0.30/go.mod h1:56DPqONc3njpVPsdilEnfijCwNGC3/kTJLl7i7SPavY= +github.com/coredns/corefile-migration v1.0.31 h1:f7WGhY8M2Jn8P2dVO0p7wSQ1QKsMARl6WEyUjCb/V38= +github.com/coredns/corefile-migration v1.0.31/go.mod h1:56DPqONc3njpVPsdilEnfijCwNGC3/kTJLl7i7SPavY= github.com/coreos/go-semver v0.1.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= github.com/coreos/go-semver v0.3.1 h1:yi21YpKnrx1gt5R+la8n5WgS0kCrsPp33dmEyHReZr4= github.com/coreos/go-semver v0.3.1/go.mod h1:irMmmIw/7yzSRPWryHsK7EYSg09caPQL03VsM8rvUec= @@ -68,12 +64,10 @@ github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/distribution/reference v0.6.0 h1:0IXCQ5g4/QMHHkarYzh5l+u8T3t73zM5QvfrDyIgxBk= github.com/distribution/reference v0.6.0/go.mod h1:BbU0aIcezP1/5jX/8MP0YiH4SdvB5Y4f/wlDRiLyi3E= -github.com/docker/docker v28.5.2+incompatible h1:DBX0Y0zAjZbSrm1uzOkdr1onVghKaftjlSWt4AFexzM= -github.com/docker/docker v28.5.2+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= github.com/docker/go-connections v0.6.0 h1:LlMG9azAe1TqfR7sO+NJttz1gy6KO7VJBh+pMmjSD94= github.com/docker/go-connections v0.6.0/go.mod h1:AahvXYshr6JgfUJGdDCs2b5EZG/vmaMAntpSFH5BFKE= -github.com/docker/go-units v0.4.0 h1:3uh0PgVws3nIA0Q+MwDC8yjEPf9zjRfZZWXZYDct3Tw= -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/drone/envsubst/v2 v2.0.0-20210730161058-179042472c46 h1:7QPwrLT79GlD5sizHf27aoY2RTvw62mO6x7mxkScNk0= github.com/drone/envsubst/v2 v2.0.0-20210730161058-179042472c46/go.mod h1:esf2rsHFNlZlxsqsZDojNBcnNs5REqIvRrWRHqX0vEU= github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY= @@ -142,7 +136,6 @@ github.com/google/gnostic-models v0.7.0/go.mod h1:whL5G0m6dmc5cPxKc5bdKdEN3UjI7OUGxBlw57miDrQ= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= github.com/google/go-github/v53 v53.2.0 h1:wvz3FyF53v4BK+AsnvCmeNhf8AkTaeh2SoYu/XUvTtI= @@ -214,22 +207,18 @@ github.com/mitchellh/reflectwalk v1.0.2/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= github.com/moby/docker-image-spec v1.3.1 h1:jMKff3w6PgbfSa69GfNg+zN/XLhfXJGnEx3Nl2EsFP0= github.com/moby/docker-image-spec v1.3.1/go.mod h1:eKmb5VW8vQEh/BAr2yvVNvuiJuY6UIocYsFu/DxxRpo= +github.com/moby/moby/api v1.54.1 h1:TqVzuJkOLsgLDDwNLmYqACUuTehOHRGKiPhvH8V3Nn4= +github.com/moby/moby/api v1.54.1/go.mod h1:+RQ6wluLwtYaTd1WnPLykIDPekkuyD/ROWQClE83pzs= +github.com/moby/moby/client v0.4.0 h1:S+2XegzHQrrvTCvF6s5HFzcrywWQmuVnhOXe2kiWjIw= +github.com/moby/moby/client v0.4.0/go.mod h1:QWPbvWchQbxBNdaLSpoKpCdf5E+WxFAgNHogCWDoa7g= github.com/moby/spdystream v0.5.0 h1:7r0J1Si3QO/kjRitvSLVVFUjxMEb/YLj6S9FF62JBCU= github.com/moby/spdystream v0.5.0/go.mod h1:xBAYlnt/ay+11ShkdFKNAG7LsyK/tmNBVvVOwrfMgdI= -github.com/moby/sys/atomicwriter v0.1.0 h1:kw5D/EqkBwsBFi0ss9v1VG3wIkVhzGvLklJ+w3A14Sw= -github.com/moby/sys/atomicwriter v0.1.0/go.mod h1:Ul8oqv2ZMNHOceF643P6FKPXeCmYtlQMvpizfsSoaWs= -github.com/moby/sys/sequential v0.6.0 h1:qrx7XFUd/5DxtqcoH1h438hF5TmOvzC/lspjy7zgvCU= -github.com/moby/sys/sequential v0.6.0/go.mod h1:uyv8EUTrca5PnDsdMGXhZe6CCe8U/UiTWd+lL+7b/Ko= -github.com/moby/term v0.5.0 h1:xt8Q1nalod/v7BqbG21f8mQPqH+xAaC9C3N3wfWbVP0= -github.com/moby/term v0.5.0/go.mod h1:8FzsFHVUBGZdbDsJw/ot+X+d5HLUbvklYLJ9uGfcI3Y= 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= github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee h1:W5t00kpgFdJifH4BDsTlE89Zl93FEloxaWZfGcifgq8= github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= -github.com/morikuni/aec v1.0.0 h1:nP9CBfwrvYnBRgY6qfDQkygYDmYwOilePFkwzv4dU8A= -github.com/morikuni/aec v1.0.0/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f h1:y5//uYreIhSUg3J1GEMiLbxo1LJaP8RfCpH6pymGZus= @@ -248,8 +237,8 @@ github.com/onsi/gomega v1.38.2/go.mod h1:W2MJcYxRGV63b418Ai34Ud0hEdTVXq9NW9+Sx6uXf3k= github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U= github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= -github.com/opencontainers/image-spec v1.0.2 h1:9yCKha/T5XdGtO0q9Q9a6T5NUCsTn/DrBg0D7ufOcFM= -github.com/opencontainers/image-spec v1.0.2/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0= +github.com/opencontainers/image-spec v1.1.1 h1:y0fUlFfIZhPF1W537XOLg0/fcx6zcHCJwooC2xJA040= +github.com/opencontainers/image-spec v1.1.1/go.mod h1:qpqAh3Dmcf36wStyyWU+kCeDgrGnAve2nCC8+7h8Q0M= github.com/pborman/uuid v0.0.0-20170612153648-e790cca94e6c/go.mod h1:VyrYX9gd7irzKovcSS6BIIEwPRkP2Wm2m9ufcdFSJ34= github.com/pelletier/go-toml v1.9.5 h1:4yBQzkHv+7BHq2PQUZF3Mx0IYxG7LsP222s7Agd3ve8= github.com/pelletier/go-toml v1.9.5/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= @@ -280,7 +269,6 @@ github.com/shopspring/decimal v1.4.0/go.mod h1:gawqmDU56v4yIKSwfBSFip1HdCCXN8/+DMd9qYNcwME= github.com/sigma/bdoor v0.0.0-20160202064022-babf2a4017b0/go.mod h1:WBu7REWbxC/s/J06jsk//d+9DOz9BbsmcIrimuGRFbs= github.com/sigma/vmw-guestinfo v0.0.0-20160204083807-95dd4126d6e8/go.mod h1:JrRFFC0veyh0cibh0DAhriSY7/gV3kDdNaVUOmfx01U= -github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= github.com/smartystreets/assertions v1.2.0/go.mod h1:tcbTF8ujkAEcZ8TElKY+i30BzYlVhC/LOxJk7iOWnoo= @@ -307,7 +295,6 @@ github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= github.com/stretchr/objx v0.5.2 h1:xuMeJ0Sdp5ZMRXx/aWO6RZxdr3beISkG5/G/aIRr3pY= github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA= -github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= @@ -365,8 +352,6 @@ go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.40.0/go.mod h1:bTdK1nhqF76qiPoCCdyFIV+N/sRHYXYCTQc+3VCi3MI= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.40.0 h1:DvJDOPmSWQHWywQS6lKL+pb8s3gBLOZUtw4N+mavW1I= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.40.0/go.mod h1:EtekO9DEJb4/jRyN4v4Qjc2yA7AtfCBuz2FynRUWTXs= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.40.0 h1:wVZXIWjQSeSmMoxF74LzAnpVQOAFDo3pPji9Y4SOFKc= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.40.0/go.mod h1:khvBS2IggMFNwZK/6lEeHg/W57h/IX6J4URh57fuI40= go.opentelemetry.io/otel/metric v1.40.0 h1:rcZe317KPftE2rstWIBitCdVp89A2HqjkxR3c11+p9g= go.opentelemetry.io/otel/metric v1.40.0/go.mod h1:ib/crwQH7N3r5kfiBZQbwrTge743UDc7DTFVZrrXnqc= go.opentelemetry.io/otel/sdk v1.40.0 h1:KHW/jUzgo6wsPh9At46+h4upjtccTmuZCFAc9OJ71f8= @@ -418,11 +403,8 @@ golang.org/x/sync v0.19.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= 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-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/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-20211007075335-d3039528d8ac/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= @@ -436,14 +418,13 @@ golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.33.0 h1:B3njUFyqtHDUI5jMn1YIr5B0IE2U0qck04r6d4KPAxE= golang.org/x/text v0.33.0/go.mod h1:LuMebE6+rBincTi9+xWTY8TztLzKHc/9C1uBCG27+q8= -golang.org/x/time v0.9.0 h1:EsRrnYcQiGH+5FfbgvV4AP7qEZstoyrHB0DzarOQ4ZY= -golang.org/x/time v0.9.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= +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= golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= 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.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= golang.org/x/tools v0.40.0 h1:yLkxfA+Qnul4cs9QA3KnlFu0lVmd8JJfoq+E41uSutA= golang.org/x/tools v0.40.0/go.mod h1:Ik/tzLRlbscWpqqMRjyWYDisX8bG13FrdXp3o4Sr9lc= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -458,8 +439,8 @@ google.golang.org/genproto/googleapis/api v0.0.0-20260128011058-8636f8732409/go.mod h1:fl8J1IvUjCilwZzQowmw2b7HQB2eAuYBabMXzWurF+I= google.golang.org/genproto/googleapis/rpc v0.0.0-20260128011058-8636f8732409 h1:H86B94AW+VfJWDqFeEbBPhEtHzJwJfTbgE2lZa54ZAQ= google.golang.org/genproto/googleapis/rpc v0.0.0-20260128011058-8636f8732409/go.mod h1:j9x/tPzZkyxcgEFkiKEEGxfvyumM01BEtsW8xzOahRQ= -google.golang.org/grpc v1.78.0 h1:K1XZG/yGDJnzMdd/uZHAkVqJE+xIDOcmdSFZkBUicNc= -google.golang.org/grpc v1.78.0/go.mod h1:I47qjTo4OKbMkjA/aOOwxDIiPSBofUtQUI5EfpWvW7U= +google.golang.org/grpc v1.79.3 h1:sybAEdRIEtvcD68Gx7dmnwjZKlyfuc61Dyo9pGXXkKE= +google.golang.org/grpc v1.79.3/go.mod h1:KmT0Kjez+0dde/v2j9vzwoAScgEPx/Bw1CYChhHLrHQ= google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= google.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= @@ -475,8 +456,8 @@ 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= -gotest.tools/v3 v3.4.0 h1:ZazjZUfuVeZGLAmlKKuyv3IKP5orXcwtOwDQH6YVr6o= -gotest.tools/v3 v3.4.0/go.mod h1:CtbdzLSsqVhDgMtKsx03ird5YTGB3ar27v0u/yKBW5g= +gotest.tools/v3 v3.5.2 h1:7koQfIKdy+I8UTetycgUqXWSDwpgv193Ka+qRsmBY8Q= +gotest.tools/v3 v3.5.2/go.mod h1:LtdLGcnqToBH83WByAAi/wiwSFCArdFIUV/xxN4pcjA= k8s.io/api v0.34.3 h1:D12sTP257/jSH2vHV2EDYrb16bS7ULlHpdNdNhEw2S4= k8s.io/api v0.34.3/go.mod h1:PyVQBF886Q5RSQZOim7DybQjAbVs8g7gwJNhGtY5MBk= k8s.io/apiextensions-apiserver v0.34.3 h1:p10fGlkDY09eWKOTeUSioxwLukJnm+KuDZdrW71y40g= @@ -497,6 +478,8 @@ k8s.io/kube-openapi v0.0.0-20250710124328-f3f2b991d03b/go.mod h1:UZ2yyWbFTpuhSbFhv24aGNOdoRdJZgsIObGBUaYVsts= k8s.io/utils v0.0.0-20250604170112-4c0f3b243397 h1:hwvWFiBzdWw1FhfY1FooPn3kzWuJ8tmbZBHi4zVsl1Y= k8s.io/utils v0.0.0-20250604170112-4c0f3b243397/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= +pgregory.net/rapid v1.2.0 h1:keKAYRcjm+e1F0oAuU5F5+YPAWcyxNNRK2wud503Gnk= +pgregory.net/rapid v1.2.0/go.mod h1:PY5XlDGj0+V1FCq0o192FdRhpKHGTRIWBgqjDBTrq04= sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.31.2 h1:jpcvIRr3GLoUoEKRkHKSmGjxb6lWwrBlJsXc+eUYQHM= sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.31.2/go.mod h1:Ve9uj1L+deCXFrPOk1LpFXqTg7LCFzFso6PA48q/XZw= sigs.k8s.io/controller-runtime v0.22.5 h1:v3nfSUMowX/2WMp27J9slwGFyAt7IV0YwBxAkrUr0GE= diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/clusterctl-1.12.4/test/infrastructure/container/docker.go new/clusterctl-1.12.5/test/infrastructure/container/docker.go --- old/clusterctl-1.12.4/test/infrastructure/container/docker.go 2026-03-17 12:51:40.000000000 +0100 +++ new/clusterctl-1.12.5/test/infrastructure/container/docker.go 2026-04-08 11:51:33.000000000 +0200 @@ -25,19 +25,16 @@ "encoding/json" "fmt" "io" + "net/netip" "os" "strings" "time" - "github.com/docker/docker/api/types" - dockercontainer "github.com/docker/docker/api/types/container" - dockerfilters "github.com/docker/docker/api/types/filters" - dockerimage "github.com/docker/docker/api/types/image" - "github.com/docker/docker/api/types/network" - dockersystem "github.com/docker/docker/api/types/system" - "github.com/docker/docker/client" - "github.com/docker/docker/pkg/stdcopy" - "github.com/docker/go-connections/nat" + dockerstdcopy "github.com/moby/moby/api/pkg/stdcopy" + dockercontainer "github.com/moby/moby/api/types/container" + dockernetwork "github.com/moby/moby/api/types/network" + dockersystem "github.com/moby/moby/api/types/system" + "github.com/moby/moby/client" "github.com/pkg/errors" kerrors "k8s.io/apimachinery/pkg/util/errors" "k8s.io/utils/ptr" @@ -72,7 +69,7 @@ // getDockerClient returns a new client connection for interacting with the Docker engine. func getDockerClient() (*client.Client, error) { - dockerClient, err := client.NewClientWithOpts(client.FromEnv, client.WithAPIVersionNegotiation()) + dockerClient, err := client.New(client.FromEnv) if err != nil { return nil, fmt.Errorf("create Docker client: %v", err) } @@ -119,7 +116,7 @@ // PullContainerImage triggers the Docker engine to pull an image. func (d *dockerRuntime) PullContainerImage(ctx context.Context, image string) error { - pullResp, err := d.dockerClient.ImagePull(ctx, image, dockerimage.PullOptions{}) + pullResp, err := d.dockerClient.ImagePull(ctx, image, client.ImagePullOptions{}) if err != nil { return fmt.Errorf("failure pulling container image: %v", err) } @@ -136,15 +133,15 @@ // ImageExistsLocally returns if the specified image exists in local container image cache. func (d *dockerRuntime) ImageExistsLocally(ctx context.Context, image string) (bool, error) { - filters := dockerfilters.NewArgs() + filters := make(client.Filters) filters.Add("reference", image) - images, err := d.dockerClient.ImageList(ctx, dockerimage.ListOptions{ + images, err := d.dockerClient.ImageList(ctx, client.ImageListOptions{ Filters: filters, }) if err != nil { return false, errors.Wrapf(err, "failure listing container image: %s", image) } - if len(images) > 0 { + if len(images.Items) > 0 { return true, nil } return false, nil @@ -153,14 +150,14 @@ // GetHostPort looks up the host port bound for the port and protocol (e.g. "6443/tcp"). func (d *dockerRuntime) GetHostPort(ctx context.Context, containerName, portAndProtocol string) (string, error) { // Get details about the container - containerInfo, err := d.dockerClient.ContainerInspect(ctx, containerName) + containerInfo, err := d.dockerClient.ContainerInspect(ctx, containerName, client.ContainerInspectOptions{}) if err != nil { return "", fmt.Errorf("error getting container information for %q: %v", containerName, err) } // Loop through the container port bindings and return the first HostPort - for port, bindings := range containerInfo.NetworkSettings.Ports { - if string(port) == portAndProtocol { + for port, bindings := range containerInfo.Container.NetworkSettings.Ports { + if port.Port() == portAndProtocol { for _, binding := range bindings { return binding.HostPort, nil } @@ -172,7 +169,7 @@ // ExecContainer executes a command in a running container and writes any output to the provided writer. func (d *dockerRuntime) ExecContainer(ctx context.Context, containerName string, config *ExecContainerInput, command string, args ...string) error { - execConfig := dockercontainer.ExecOptions{ + execConfig := client.ExecCreateOptions{ // Run with privileges so we can remount etc.. // This might not make sense in the most general sense, but it is // important to many kind commands. @@ -184,7 +181,7 @@ Env: config.EnvironmentVars, } - response, err := d.dockerClient.ContainerExecCreate(ctx, containerName, execConfig) + response, err := d.dockerClient.ExecCreate(ctx, containerName, execConfig) if err != nil { return errors.Wrap(err, "error creating container exec") } @@ -194,7 +191,7 @@ return errors.Wrap(err, "exec ID empty") } - resp, err := d.dockerClient.ContainerExecAttach(ctx, execID, dockercontainer.ExecStartOptions{}) + resp, err := d.dockerClient.ExecAttach(ctx, execID, client.ExecAttachOptions{}) if err != nil { return errors.Wrap(err, "error attaching to container exec") } @@ -220,7 +217,7 @@ // Send the output to the output writer var err error if config.ErrorBuffer != nil { - _, err = stdcopy.StdCopy(config.OutputBuffer, config.ErrorBuffer, resp.Reader) + _, err = dockerstdcopy.StdCopy(config.OutputBuffer, config.ErrorBuffer, resp.Reader) } else { _, err = io.Copy(config.OutputBuffer, resp.Reader) } @@ -245,7 +242,7 @@ retry := 0 for retry < 600 { - inspect, err := d.dockerClient.ContainerExecInspect(ctx, execID) + inspect, err := d.dockerClient.ExecInspect(ctx, execID, client.ExecInspectOptions{}) if err != nil { return errors.Wrap(err, "failed to get exec status") } @@ -266,10 +263,10 @@ // ListContainers returns a list of all containers. func (d *dockerRuntime) ListContainers(ctx context.Context, filters FilterBuilder) ([]Container, error) { - listOptions := dockercontainer.ListOptions{ + listOptions := client.ContainerListOptions{ All: true, Limit: -1, - Filters: dockerfilters.NewArgs(), + Filters: make(client.Filters), } // Construct our filtering options @@ -291,8 +288,8 @@ } containers := []Container{} - for i := range dockerContainers { - container := dockerContainerToContainer(&dockerContainers[i]) + for i := range dockerContainers.Items { + container := dockerContainerToContainer(&dockerContainers.Items[i]) containers = append(containers, container) } @@ -301,28 +298,38 @@ // DeleteContainer will remove a container, forcing removal if still running. func (d *dockerRuntime) DeleteContainer(ctx context.Context, containerName string) error { - return d.dockerClient.ContainerRemove(ctx, containerName, dockercontainer.RemoveOptions{ + _, err := d.dockerClient.ContainerRemove(ctx, containerName, client.ContainerRemoveOptions{ Force: true, // force the container to be deleted now RemoveVolumes: true, // delete volumes - }) + }) // Note: first return value is an empty struct. Ignored. + if err != nil { + return errors.Wrap(err, "error deleting container") + } + return nil } // KillContainer will kill a running container with the specified signal. func (d *dockerRuntime) KillContainer(ctx context.Context, containerName, signal string) error { - return d.dockerClient.ContainerKill(ctx, containerName, signal) + _, err := d.dockerClient.ContainerKill(ctx, containerName, client.ContainerKillOptions{ + Signal: signal, + }) // Note: first return value is an empty struct. Ignored. + if err != nil { + return errors.Wrap(err, "error killing a container") + } + return nil } // GetContainerIPs inspects a container to get its IPv4 and IPv6 IP addresses. // Will not error if there is no IP address assigned. Calling code will need to // determine whether that is an issue or not. func (d *dockerRuntime) GetContainerIPs(ctx context.Context, containerName string) (string, string, error) { - containerInfo, err := d.dockerClient.ContainerInspect(ctx, containerName) + containerInfo, err := d.dockerClient.ContainerInspect(ctx, containerName, client.ContainerInspectOptions{}) if err != nil { return "", "", errors.Wrap(err, "failed to get container details") } - for _, net := range containerInfo.NetworkSettings.Networks { - return net.IPAddress, net.GlobalIPv6Address, nil + for _, net := range containerInfo.Container.NetworkSettings.Networks { + return net.IPAddress.String(), net.GlobalIPv6Address.String(), nil } return "", "", nil @@ -330,7 +337,7 @@ // GetContainerLogs gets container logs. func (d *dockerRuntime) GetContainerLogs(ctx context.Context, containerName string) (string, error) { - logsReader, err := d.dockerClient.ContainerLogs(ctx, containerName, dockercontainer.LogsOptions{ + logsReader, err := d.dockerClient.ContainerLogs(ctx, containerName, client.ContainerLogsOptions{ ShowStdout: true, ShowStderr: true, }) @@ -349,7 +356,7 @@ // ContainerDebugInfo gets the container metadata and logs from the runtime (docker inspect, docker logs). func (d *dockerRuntime) ContainerDebugInfo(ctx context.Context, containerName string, w io.Writer) error { - containerInfo, err := d.dockerClient.ContainerInspect(ctx, containerName) + containerInfo, err := d.dockerClient.ContainerInspect(ctx, containerName, client.ContainerInspectOptions{}) if err != nil { return errors.Wrapf(err, "failed to inspect container %q", containerName) } @@ -362,11 +369,11 @@ fmt.Fprintln(w, "Inspected the container:") fmt.Fprintf(w, "%s\n", rawJSON) - options := dockercontainer.LogsOptions{ + options := client.ContainerLogsOptions{ ShowStdout: true, ShowStderr: true, } - responseBody, err := d.dockerClient.ContainerLogs(ctx, containerInfo.ID, options) + responseBody, err := d.dockerClient.ContainerLogs(ctx, containerInfo.Container.ID, options) if err != nil { return errors.Wrapf(err, "error getting container logs for %q", containerName) } @@ -424,11 +431,11 @@ SecurityOpt: []string{"seccomp=unconfined", "apparmor=unconfined"}, // ignore seccomp NetworkMode: dockercontainer.NetworkMode(runConfig.Network), Tmpfs: runConfig.Tmpfs, - PortBindings: nat.PortMap{}, + PortBindings: dockernetwork.PortMap{}, RestartPolicy: dockercontainer.RestartPolicy{Name: restartPolicy, MaximumRetryCount: restartMaximumRetryCount}, Init: ptr.To(false), } - networkConfig := network.NetworkingConfig{} + networkConfig := dockernetwork.NetworkingConfig{} // NOTE: starting from Kind 0.20 kind requires CgroupnsMode to be set to private. if runConfig.KindMode != kind.ModeNone && runConfig.KindMode != kind.Mode0_19 { @@ -442,14 +449,14 @@ } } - info, err := d.dockerClient.Info(ctx) + info, err := d.dockerClient.Info(ctx, client.InfoOptions{}) if err != nil { return errors.Wrapf(err, "unable to get Docker engine info, failed to create container %q", runConfig.Name) } // mount /dev/mapper if docker storage driver if Btrfs or ZFS // https://github.com/kubernetes-sigs/kind/pull/1464 - if d.needsDevMapper(info) { + if d.needsDevMapper(info.Info) { hostConfig.Binds = append(hostConfig.Binds, "/dev/mapper:/dev/mapper:ro") } @@ -466,9 +473,11 @@ containerConfig.Env = envVars configureVolumes(runConfig, &containerConfig, &hostConfig) - configurePortMappings(runConfig.PortMappings, &containerConfig, &hostConfig) + if err := configurePortMappings(runConfig.PortMappings, &containerConfig, &hostConfig); err != nil { + return err + } - if d.usernsRemap(info) { + if d.usernsRemap(info.Info) { // We need this argument in order to make this command work // in systems that have userns-remap enabled on the docker daemon hostConfig.UsernsMode = "host" @@ -476,7 +485,7 @@ // enable /dev/fuse explicitly for fuse-overlayfs // (Rootless Docker does not automatically mount /dev/fuse with --privileged) - if d.mountFuse(info) { + if d.mountFuse(info.Info) { hostConfig.Devices = append(hostConfig.Devices, dockercontainer.DeviceMapping{PathOnHost: "/dev/fuse", PathInContainer: "/dev/fuse", CgroupPermissions: "rw"}) } @@ -488,20 +497,21 @@ // Create the container using our settings resp, err := d.dockerClient.ContainerCreate( ctx, - &containerConfig, - &hostConfig, - &networkConfig, - nil, - runConfig.Name, + client.ContainerCreateOptions{ + Name: runConfig.Name, + Config: &containerConfig, + HostConfig: &hostConfig, + NetworkingConfig: &networkConfig, + }, ) if err != nil { return errors.Wrapf(err, "error creating container %q", runConfig.Name) } - var containerOutput types.HijackedResponse + var containerOutput client.ContainerAttachResult if output != nil { // Read out any output from the container - attachOpts := dockercontainer.AttachOptions{ + attachOpts := client.ContainerAttachOptions{ Stream: true, Stdin: false, Stdout: true, @@ -516,11 +526,11 @@ } // Actually start the container - if err := d.dockerClient.ContainerStart(ctx, resp.ID, dockercontainer.StartOptions{}); err != nil { + if _, err := d.dockerClient.ContainerStart(ctx, resp.ID, client.ContainerStartOptions{}); err != nil { err := errors.Wrapf(err, "error starting container %q", runConfig.Name) // Delete the container and retry later on. This helps getting around the race // condition where of hitting "port is already allocated" issues. - if reterr := d.dockerClient.ContainerRemove(ctx, resp.ID, dockercontainer.RemoveOptions{Force: true, RemoveVolumes: true}); reterr != nil { + if _, reterr := d.dockerClient.ContainerRemove(ctx, resp.ID, client.ContainerRemoveOptions{Force: true, RemoveVolumes: true}); reterr != nil { return kerrors.NewAggregate([]error{err, errors.Wrapf(reterr, "error deleting container")}) } return err @@ -536,9 +546,12 @@ defer containerOutput.Close() // Wait for the run to complete - statusCh, errCh := d.dockerClient.ContainerWait(ctx, resp.ID, dockercontainer.WaitConditionNotRunning) + r := d.dockerClient.ContainerWait(ctx, resp.ID, client.ContainerWaitOptions{ + Condition: dockercontainer.WaitConditionNotRunning, + }) + select { - case err := <-errCh: + case err := <-r.Error: if err != nil { return errors.Wrap(err, "error waiting for container run") } @@ -546,19 +559,19 @@ if err != nil { return errors.Wrap(err, "error reading output from container run") } - case <-statusCh: + case <-r.Result: case <-ctx.Done(): return ctx.Err() } } - containerJSON, err := d.dockerClient.ContainerInspect(ctx, resp.ID) + containerJSON, err := d.dockerClient.ContainerInspect(ctx, resp.ID, client.ContainerInspectOptions{}) if err != nil { return fmt.Errorf("error inspecting container %s: %v", resp.ID, err) } - if containerJSON.State.ExitCode != 0 { - return fmt.Errorf("error container run failed with exit code %d", containerJSON.State.ExitCode) + if containerJSON.Container.State.ExitCode != 0 { + return fmt.Errorf("error container run failed with exit code %d", containerJSON.Container.State.ExitCode) } return nil @@ -566,7 +579,11 @@ // GetSystemInfo will return the docker system info. func (d *dockerRuntime) GetSystemInfo(ctx context.Context) (dockersystem.Info, error) { - return d.dockerClient.Info(ctx) + r, err := d.dockerClient.Info(ctx, client.InfoOptions{}) + if err != nil { + return dockersystem.Info{}, fmt.Errorf("error getting docker system info: %v", err) + } + return r.Info, nil } // needsDevMapper checks whether we need to mount /dev/mapper. @@ -638,13 +655,13 @@ // getSubnets returns a slice of subnets for a specified network. func (d *dockerRuntime) getSubnets(ctx context.Context, networkName string) ([]string, error) { subnets := []string{} - networkInfo, err := d.dockerClient.NetworkInspect(ctx, networkName, network.InspectOptions{}) + networkInfo, err := d.dockerClient.NetworkInspect(ctx, networkName, client.NetworkInspectOptions{}) if err != nil { return subnets, errors.Wrapf(err, "failed to inspect network %q", networkName) } - for _, network := range networkInfo.IPAM.Config { - subnets = append(subnets, network.Subnet) + for _, config := range networkInfo.Network.IPAM.Config { + subnets = append(subnets, config.Subnet.String()) } return subnets, nil @@ -737,16 +754,24 @@ return string(dat) == "1" } -func configurePortMappings(portMappings []PortMapping, config *dockercontainer.Config, hostConfig *dockercontainer.HostConfig) { - exposedPorts := nat.PortSet{} +func configurePortMappings(portMappings []PortMapping, config *dockercontainer.Config, hostConfig *dockercontainer.HostConfig) error { + exposedPorts := dockernetwork.PortSet{} for _, pm := range portMappings { protocol := pm.Protocol if protocol == "" { protocol = "tcp" } - port := nat.Port(fmt.Sprintf("%d/%s", pm.ContainerPort, protocol)) - mapping := nat.PortBinding{ - HostIP: pm.ListenAddress, + port, err := dockernetwork.ParsePort(fmt.Sprintf("%d/%s", pm.ContainerPort, protocol)) + if err != nil { + return errors.Wrapf(err, "error parsing port %d", pm.ContainerPort) + } + addr, err := netip.ParseAddr(pm.ListenAddress) + if err != nil { + return errors.Wrapf(err, "error parsing address %s", pm.ListenAddress) + } + + mapping := dockernetwork.PortBinding{ + HostIP: addr, HostPort: fmt.Sprintf("%d", pm.HostPort), } hostConfig.PortBindings[port] = append(hostConfig.PortBindings[port], mapping) @@ -754,4 +779,5 @@ } config.ExposedPorts = exposedPorts + return nil } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/clusterctl-1.12.4/test/infrastructure/container/fake.go new/clusterctl-1.12.5/test/infrastructure/container/fake.go --- old/clusterctl-1.12.4/test/infrastructure/container/fake.go 2026-03-17 12:51:40.000000000 +0100 +++ new/clusterctl-1.12.5/test/infrastructure/container/fake.go 2026-04-08 11:51:33.000000000 +0200 @@ -20,7 +20,7 @@ "context" "io" - dockersystem "github.com/docker/docker/api/types/system" + dockersystem "github.com/moby/moby/api/types/system" ) var runContainerCallLog []RunContainerArgs diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/clusterctl-1.12.4/test/infrastructure/container/interface.go new/clusterctl-1.12.5/test/infrastructure/container/interface.go --- old/clusterctl-1.12.4/test/infrastructure/container/interface.go 2026-03-17 12:51:40.000000000 +0100 +++ new/clusterctl-1.12.5/test/infrastructure/container/interface.go 2026-04-08 11:51:33.000000000 +0200 @@ -22,8 +22,8 @@ "io" "net" - dockercontainer "github.com/docker/docker/api/types/container" - dockersystem "github.com/docker/docker/api/types/system" + dockercontainer "github.com/moby/moby/api/types/container" + dockersystem "github.com/moby/moby/api/types/system" "github.com/pkg/errors" clusterv1 "sigs.k8s.io/cluster-api/api/core/v1beta2" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/clusterctl-1.12.4/test/infrastructure/docker/api/v1beta2/devmachine_types.go new/clusterctl-1.12.5/test/infrastructure/docker/api/v1beta2/devmachine_types.go --- old/clusterctl-1.12.4/test/infrastructure/docker/api/v1beta2/devmachine_types.go 2026-03-17 12:51:40.000000000 +0100 +++ new/clusterctl-1.12.5/test/infrastructure/docker/api/v1beta2/devmachine_types.go 2026-04-08 11:51:33.000000000 +0200 @@ -293,7 +293,7 @@ Bootstrapped bool `json:"bootstrapped,omitempty"` // bootstrapTimeout is the total amount of time to wait for the machine to bootstrap before timing out. - // The default value is 3m. + // The default value is 5m. // +optional BootstrapTimeout *metav1.Duration `json:"bootstrapTimeout,omitempty"` } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/clusterctl-1.12.4/test/infrastructure/docker/api/v1beta2/dockermachine_types.go new/clusterctl-1.12.5/test/infrastructure/docker/api/v1beta2/dockermachine_types.go --- old/clusterctl-1.12.4/test/infrastructure/docker/api/v1beta2/dockermachine_types.go 2026-03-17 12:51:40.000000000 +0100 +++ new/clusterctl-1.12.5/test/infrastructure/docker/api/v1beta2/dockermachine_types.go 2026-04-08 11:51:33.000000000 +0200 @@ -60,7 +60,7 @@ Bootstrapped bool `json:"bootstrapped,omitempty"` // BootstrapTimeout is the total amount of time to wait for the machine to bootstrap before timing out. - // The default value is 3m. + // The default value is 5m. // +optional BootstrapTimeout *metav1.Duration `json:"bootstrapTimeout,omitempty"` } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/clusterctl-1.12.4/test/infrastructure/docker/config/crd/bases/infrastructure.cluster.x-k8s.io_devmachines.yaml new/clusterctl-1.12.5/test/infrastructure/docker/config/crd/bases/infrastructure.cluster.x-k8s.io_devmachines.yaml --- old/clusterctl-1.12.4/test/infrastructure/docker/config/crd/bases/infrastructure.cluster.x-k8s.io_devmachines.yaml 2026-03-17 12:51:40.000000000 +0100 +++ new/clusterctl-1.12.5/test/infrastructure/docker/config/crd/bases/infrastructure.cluster.x-k8s.io_devmachines.yaml 2026-04-08 11:51:33.000000000 +0200 @@ -453,7 +453,7 @@ bootstrapTimeout: description: |- bootstrapTimeout is the total amount of time to wait for the machine to bootstrap before timing out. - The default value is 3m. + The default value is 5m. type: string bootstrapped: description: |- diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/clusterctl-1.12.4/test/infrastructure/docker/config/crd/bases/infrastructure.cluster.x-k8s.io_devmachinetemplates.yaml new/clusterctl-1.12.5/test/infrastructure/docker/config/crd/bases/infrastructure.cluster.x-k8s.io_devmachinetemplates.yaml --- old/clusterctl-1.12.4/test/infrastructure/docker/config/crd/bases/infrastructure.cluster.x-k8s.io_devmachinetemplates.yaml 2026-03-17 12:51:40.000000000 +0100 +++ new/clusterctl-1.12.5/test/infrastructure/docker/config/crd/bases/infrastructure.cluster.x-k8s.io_devmachinetemplates.yaml 2026-04-08 11:51:33.000000000 +0200 @@ -325,7 +325,7 @@ bootstrapTimeout: description: |- bootstrapTimeout is the total amount of time to wait for the machine to bootstrap before timing out. - The default value is 3m. + The default value is 5m. type: string bootstrapped: description: |- diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/clusterctl-1.12.4/test/infrastructure/docker/config/crd/bases/infrastructure.cluster.x-k8s.io_dockermachines.yaml new/clusterctl-1.12.5/test/infrastructure/docker/config/crd/bases/infrastructure.cluster.x-k8s.io_dockermachines.yaml --- old/clusterctl-1.12.4/test/infrastructure/docker/config/crd/bases/infrastructure.cluster.x-k8s.io_dockermachines.yaml 2026-03-17 12:51:40.000000000 +0100 +++ new/clusterctl-1.12.5/test/infrastructure/docker/config/crd/bases/infrastructure.cluster.x-k8s.io_dockermachines.yaml 2026-04-08 11:51:33.000000000 +0200 @@ -646,7 +646,7 @@ bootstrapTimeout: description: |- BootstrapTimeout is the total amount of time to wait for the machine to bootstrap before timing out. - The default value is 3m. + The default value is 5m. type: string bootstrapped: description: |- diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/clusterctl-1.12.4/test/infrastructure/docker/config/crd/bases/infrastructure.cluster.x-k8s.io_dockermachinetemplates.yaml new/clusterctl-1.12.5/test/infrastructure/docker/config/crd/bases/infrastructure.cluster.x-k8s.io_dockermachinetemplates.yaml --- old/clusterctl-1.12.4/test/infrastructure/docker/config/crd/bases/infrastructure.cluster.x-k8s.io_dockermachinetemplates.yaml 2026-03-17 12:51:40.000000000 +0100 +++ new/clusterctl-1.12.5/test/infrastructure/docker/config/crd/bases/infrastructure.cluster.x-k8s.io_dockermachinetemplates.yaml 2026-04-08 11:51:33.000000000 +0200 @@ -398,7 +398,7 @@ bootstrapTimeout: description: |- BootstrapTimeout is the total amount of time to wait for the machine to bootstrap before timing out. - The default value is 3m. + The default value is 5m. type: string bootstrapped: description: |- diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/clusterctl-1.12.4/test/infrastructure/docker/examples/machine-pool.yaml new/clusterctl-1.12.5/test/infrastructure/docker/examples/machine-pool.yaml --- old/clusterctl-1.12.4/test/infrastructure/docker/examples/machine-pool.yaml 2026-03-17 12:51:40.000000000 +0100 +++ new/clusterctl-1.12.5/test/infrastructure/docker/examples/machine-pool.yaml 2026-04-08 11:51:33.000000000 +0200 @@ -33,7 +33,7 @@ namespace: default spec: replicas: 1 - version: v1.35.0 + version: v1.36.0-beta.0 machineTemplate: spec: infrastructureRef: @@ -80,7 +80,7 @@ replicas: 2 template: spec: - version: v1.35.0 + version: v1.36.0-beta.0 clusterName: my-cluster bootstrap: configRef: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/clusterctl-1.12.4/test/infrastructure/docker/examples/simple-cluster-ipv6.yaml new/clusterctl-1.12.5/test/infrastructure/docker/examples/simple-cluster-ipv6.yaml --- old/clusterctl-1.12.4/test/infrastructure/docker/examples/simple-cluster-ipv6.yaml 2026-03-17 12:51:40.000000000 +0100 +++ new/clusterctl-1.12.5/test/infrastructure/docker/examples/simple-cluster-ipv6.yaml 2026-04-08 11:51:33.000000000 +0200 @@ -33,7 +33,7 @@ namespace: default spec: replicas: 1 - version: v1.35.0 + version: v1.36.0-beta.0 machineTemplate: spec: infrastructureRef: @@ -92,7 +92,7 @@ cluster.x-k8s.io/cluster-name: my-cluster template: spec: - version: v1.35.0 + version: v1.36.0-beta.0 clusterName: my-cluster bootstrap: configRef: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/clusterctl-1.12.4/test/infrastructure/docker/examples/simple-cluster-without-kcp.yaml new/clusterctl-1.12.5/test/infrastructure/docker/examples/simple-cluster-without-kcp.yaml --- old/clusterctl-1.12.4/test/infrastructure/docker/examples/simple-cluster-without-kcp.yaml 2026-03-17 12:51:40.000000000 +0100 +++ new/clusterctl-1.12.5/test/infrastructure/docker/examples/simple-cluster-without-kcp.yaml 2026-04-08 11:51:33.000000000 +0200 @@ -31,7 +31,7 @@ name: controlplane-0 namespace: default spec: - version: v1.35.0 + version: v1.36.0-beta.0 clusterName: my-cluster bootstrap: configRef: @@ -74,7 +74,7 @@ cluster.x-k8s.io/cluster-name: my-cluster template: spec: - version: v1.35.0 + version: v1.36.0-beta.0 clusterName: my-cluster bootstrap: configRef: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/clusterctl-1.12.4/test/infrastructure/docker/examples/simple-cluster.yaml new/clusterctl-1.12.5/test/infrastructure/docker/examples/simple-cluster.yaml --- old/clusterctl-1.12.4/test/infrastructure/docker/examples/simple-cluster.yaml 2026-03-17 12:51:40.000000000 +0100 +++ new/clusterctl-1.12.5/test/infrastructure/docker/examples/simple-cluster.yaml 2026-04-08 11:51:33.000000000 +0200 @@ -33,7 +33,7 @@ namespace: default spec: replicas: 1 - version: v1.35.0 + version: v1.36.0-beta.0 machineTemplate: spec: infrastructureRef: @@ -83,7 +83,7 @@ cluster.x-k8s.io/cluster-name: my-cluster template: spec: - version: v1.35.0 + version: v1.36.0-beta.0 clusterName: my-cluster bootstrap: configRef: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/clusterctl-1.12.4/test/infrastructure/docker/internal/controllers/backends/docker/dockermachine_backend.go new/clusterctl-1.12.5/test/infrastructure/docker/internal/controllers/backends/docker/dockermachine_backend.go --- old/clusterctl-1.12.4/test/infrastructure/docker/internal/controllers/backends/docker/dockermachine_backend.go 2026-03-17 12:51:40.000000000 +0100 +++ new/clusterctl-1.12.5/test/infrastructure/docker/internal/controllers/backends/docker/dockermachine_backend.go 2026-04-08 11:51:33.000000000 +0200 @@ -209,13 +209,6 @@ } } - // Preload images into the container - if len(dockerMachine.Spec.Backend.Docker.PreLoadImages) > 0 { - if err := externalMachine.PreloadLoadImages(ctx, dockerMachine.Spec.Backend.Docker.PreLoadImages); err != nil { - return ctrl.Result{}, errors.Wrap(err, "failed to pre-load images into the DockerMachine") - } - } - // if the machine is a control plane update the load balancer configuration // we should only do this once, as reconfiguration more or less ensures // node ref setting fails @@ -262,7 +255,7 @@ if dockerMachine.Spec.Backend.Docker.BootstrapTimeout != nil { bootstrapTimeout = *dockerMachine.Spec.Backend.Docker.BootstrapTimeout } else { - bootstrapTimeout = metav1.Duration{Duration: 3 * time.Minute} + bootstrapTimeout = metav1.Duration{Duration: 5 * time.Minute} } timeoutCtx, cancel := context.WithTimeout(ctx, bootstrapTimeout.Duration) defer cancel() @@ -311,6 +304,20 @@ return ctrl.Result{}, errors.Wrap(err, "waiting for multi-user target") } + // Preload images into the container + if len(dockerMachine.Spec.Backend.Docker.PreLoadImages) > 0 { + if err := externalMachine.PreloadLoadImages(timeoutCtx, dockerMachine.Spec.Backend.Docker.PreLoadImages); err != nil { + v1beta1conditions.MarkFalse(dockerMachine, infrav1.BootstrapExecSucceededV1Beta1Condition, infrav1.BootstrapFailedV1Beta1Reason, clusterv1.ConditionSeverityWarning, "Pre-loading images: %s", err.Error()) + conditions.Set(dockerMachine, metav1.Condition{ + Type: infrav1.DevMachineDockerContainerBootstrapExecSucceededCondition, + Status: metav1.ConditionFalse, + Reason: infrav1.DevMachineDockerContainerBootstrapExecWaitingForMultiUserTargetReason, + Message: fmt.Sprintf("Pre-loading images: %s", err.Error()), + }) + return ctrl.Result{}, errors.Wrap(err, "failed to pre-load images into the DockerMachine") + } + } + // Run the bootstrap script. Simulates cloud-init/Ignition. if err := externalMachine.ExecBootstrap(timeoutCtx, bootstrapData, format, version, dockerMachine.Spec.Backend.Docker.CustomImage); err != nil { v1beta1conditions.MarkFalse(dockerMachine, infrav1.BootstrapExecSucceededV1Beta1Condition, infrav1.BootstrapFailedV1Beta1Reason, clusterv1.ConditionSeverityWarning, "Repeating bootstrap") diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/clusterctl-1.12.4/test/infrastructure/docker/internal/docker/machine.go new/clusterctl-1.12.5/test/infrastructure/docker/internal/docker/machine.go --- old/clusterctl-1.12.4/test/infrastructure/docker/internal/docker/machine.go 2026-03-17 12:51:40.000000000 +0100 +++ new/clusterctl-1.12.5/test/infrastructure/docker/internal/docker/machine.go 2026-04-08 11:51:33.000000000 +0200 @@ -268,6 +268,16 @@ default: return errors.Errorf("unable to create machine for role %s", role) } + + containerRuntime, err := container.RuntimeFrom(ctx) + if err != nil { + return errors.Wrap(err, "failed to connect to container runtime") + } + + if err := m.WaitForMultiUserTarget(ctx, containerRuntime); err != nil { + return errors.Wrap(err, "waiting for multi-user target after container creation") + } + // After creating a node we need to wait a small amount of time until crictl does not return an error. // This fixes an issue where we try to kubeadm init too quickly after creating the container. err = wait.PollUntilContextTimeout(ctx, 500*time.Millisecond, 4*time.Second, true, func(ctx context.Context) (bool, error) { @@ -406,7 +416,7 @@ var outErr bytes.Buffer var outStd bytes.Buffer for _, command := range commands { - log.Info("Running command", "instance", m.Name(), "command", command) + log.Info("Running command", "instance", m.Name(), "command", command.Cmd) cmd := m.container.Commander.Command(command.Cmd, command.Args...) cmd.SetStderr(&outErr) cmd.SetStdout(&outStd) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/clusterctl-1.12.4/test/infrastructure/docker/main.go new/clusterctl-1.12.5/test/infrastructure/docker/main.go --- old/clusterctl-1.12.4/test/infrastructure/docker/main.go 2026-03-17 12:51:40.000000000 +0100 +++ new/clusterctl-1.12.5/test/infrastructure/docker/main.go 2026-04-08 11:51:33.000000000 +0200 @@ -427,7 +427,7 @@ WatchFilterValue: watchFilterValue, }).SetupWithManager(ctx, mgr, controller.Options{ MaxConcurrentReconciles: concurrency, - ReconciliationTimeout: 5 * time.Minute, // increase reconciliation timeout because the DockerMachineReconciler performs long operations like kubeadm init/join, image copy, etc. + ReconciliationTimeout: 6 * time.Minute, // increase reconciliation timeout because the DockerMachineReconciler performs long operations like kubeadm init/join, image copy, etc. }); err != nil { setupLog.Error(err, "Unable to create controller", "controller", "DockerMachine") os.Exit(1) ++++++ clusterctl.obsinfo ++++++ --- /var/tmp/diff_new_pack.40Kk9z/_old 2026-04-10 17:57:24.536727821 +0200 +++ /var/tmp/diff_new_pack.40Kk9z/_new 2026-04-10 17:57:24.540727987 +0200 @@ -1,5 +1,5 @@ name: clusterctl -version: 1.12.4 -mtime: 1773748300 -commit: 233b59b164f56e13db488aeca83c9ef6839ea74d +version: 1.12.5 +mtime: 1775641893 +commit: efc7142fa2ca086e4e2392640affa22f47cbcc11 ++++++ vendor.tar.gz ++++++ /work/SRC/openSUSE:Factory/clusterctl/vendor.tar.gz /work/SRC/openSUSE:Factory/.clusterctl.new.21863/vendor.tar.gz differ: char 13, line 1
