diff --git a/go.mod b/go.mod index 88aa2ae..29dca4a 100644 --- a/go.mod +++ b/go.mod @@ -6,7 +6,6 @@ require ( github.com/JamesStewy/go-mysqldump v0.2.2 github.com/blang/semver v3.5.1+incompatible github.com/clastix/kamaji-telemetry v1.0.0 - github.com/docker/docker v28.5.2+incompatible github.com/evanphx/json-patch/v5 v5.9.11 github.com/go-logr/logr v1.4.3 github.com/go-pg/pg/v10 v10.15.0 @@ -15,6 +14,7 @@ require ( github.com/google/uuid v1.6.0 github.com/json-iterator/go v1.1.12 github.com/juju/mutex/v2 v2.0.0 + github.com/moby/moby/api v1.54.1 github.com/nats-io/nats.go v1.50.0 github.com/onsi/ginkgo/v2 v2.28.1 github.com/onsi/gomega v1.39.1 @@ -28,16 +28,16 @@ require ( go.etcd.io/etcd/client/v3 v3.6.10 go.uber.org/automaxprocs v1.6.0 gomodules.xyz/jsonpatch/v2 v2.5.0 - k8s.io/api v0.35.0 - k8s.io/apiextensions-apiserver v0.34.1 - k8s.io/apimachinery v0.35.0 - k8s.io/client-go v0.35.0 + k8s.io/api v0.35.3 + k8s.io/apiextensions-apiserver v0.35.3 + k8s.io/apimachinery v0.35.3 + k8s.io/client-go v0.35.3 k8s.io/cluster-bootstrap v0.0.0 k8s.io/klog/v2 v2.140.0 k8s.io/kubelet v0.0.0 k8s.io/kubernetes v1.35.3 k8s.io/utils v0.0.0-20251002143259-bc988d571ff4 - sigs.k8s.io/controller-runtime v0.22.4 + sigs.k8s.io/controller-runtime v0.23.3 sigs.k8s.io/gateway-api v1.4.1 ) @@ -107,7 +107,6 @@ require ( github.com/mailru/easyjson v0.9.0 // indirect github.com/moby/docker-image-spec v1.3.1 // indirect github.com/moby/go-archive v0.2.0 // indirect - github.com/moby/moby/api v1.54.1 // indirect github.com/moby/moby/client v0.4.0 // indirect github.com/moby/patternmatcher v0.6.1 // indirect github.com/moby/sys/sequential v0.6.0 // indirect @@ -183,15 +182,15 @@ require ( gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect - k8s.io/apiserver v0.35.0 // indirect + k8s.io/apiserver v0.35.3 // indirect k8s.io/cli-runtime v0.0.0 // indirect k8s.io/cloud-provider v0.0.0 // indirect - k8s.io/component-base v0.35.0 // indirect - k8s.io/component-helpers v0.35.0 // indirect - k8s.io/controller-manager v0.35.0 // indirect - k8s.io/cri-api v0.35.0 // indirect + k8s.io/component-base v0.35.3 // indirect + k8s.io/component-helpers v0.35.3 // indirect + k8s.io/controller-manager v0.35.3 // indirect + k8s.io/cri-api v0.35.3 // indirect k8s.io/cri-client v0.0.0 // indirect - k8s.io/kms v0.35.0 // indirect + k8s.io/kms v0.35.3 // indirect k8s.io/kube-openapi v0.0.0-20250910181357-589584f1c912 // indirect k8s.io/kube-proxy v0.0.0 // indirect k8s.io/system-validators v1.12.1 // indirect @@ -201,40 +200,40 @@ require ( sigs.k8s.io/kustomize/api v0.20.1 // indirect sigs.k8s.io/kustomize/kyaml v0.20.1 // indirect sigs.k8s.io/randfill v1.0.0 // indirect - sigs.k8s.io/structured-merge-diff/v6 v6.3.0 // indirect + sigs.k8s.io/structured-merge-diff/v6 v6.3.2-0.20260122202528-d9cc6641c482 // indirect sigs.k8s.io/yaml v1.6.0 // indirect ) replace ( - k8s.io/api => k8s.io/api v0.35.0 - k8s.io/apiextensions-apiserver => k8s.io/apiextensions-apiserver v0.35.0 - k8s.io/apimachinery => k8s.io/apimachinery v0.35.0 - k8s.io/apiserver => k8s.io/apiserver v0.35.0 - k8s.io/cli-runtime => k8s.io/cli-runtime v0.35.0 - k8s.io/client-go => k8s.io/client-go v0.35.0 - k8s.io/cloud-provider => k8s.io/cloud-provider v0.35.0 - k8s.io/cluster-bootstrap => k8s.io/cluster-bootstrap v0.35.0 - k8s.io/code-generator => k8s.io/code-generator v0.35.0 - k8s.io/component-base => k8s.io/component-base v0.35.0 - k8s.io/component-helpers => k8s.io/component-helpers v0.35.0 - k8s.io/controller-manager => k8s.io/controller-manager v0.35.0 - k8s.io/cri-api => k8s.io/cri-api v0.35.0 - k8s.io/cri-client => k8s.io/cri-client v0.35.0 - k8s.io/csi-translation-lib => k8s.io/csi-translation-lib v0.35.0 - k8s.io/dynamic-resource-allocation => k8s.io/dynamic-resource-allocation v0.35.0 - k8s.io/endpointslice => k8s.io/endpointslice v0.35.0 - k8s.io/externaljwt => k8s.io/externaljwt v0.35.0 - k8s.io/kube-aggregator => k8s.io/kube-aggregator v0.35.0 - k8s.io/kube-controller-manager => k8s.io/kube-controller-manager v0.35.0 - k8s.io/kube-proxy => k8s.io/kube-proxy v0.35.0 - k8s.io/kube-scheduler => k8s.io/kube-scheduler v0.35.0 - k8s.io/kubectl => k8s.io/kubectl v0.35.0 - k8s.io/kubelet => k8s.io/kubelet v0.35.0 - k8s.io/legacy-cloud-providers => k8s.io/legacy-cloud-providers v0.35.0 - k8s.io/metrics => k8s.io/metrics v0.35.0 - k8s.io/mount-utils => k8s.io/mount-utils v0.35.0 - k8s.io/pod-security-admission => k8s.io/pod-security-admission v0.35.0 - k8s.io/sample-apiserver => k8s.io/sample-apiserver v0.35.0 + k8s.io/api => k8s.io/api v0.35.3 + k8s.io/apiextensions-apiserver => k8s.io/apiextensions-apiserver v0.35.3 + k8s.io/apimachinery => k8s.io/apimachinery v0.35.3 + k8s.io/apiserver => k8s.io/apiserver v0.35.3 + k8s.io/cli-runtime => k8s.io/cli-runtime v0.35.3 + k8s.io/client-go => k8s.io/client-go v0.35.3 + k8s.io/cloud-provider => k8s.io/cloud-provider v0.35.3 + k8s.io/cluster-bootstrap => k8s.io/cluster-bootstrap v0.35.3 + k8s.io/code-generator => k8s.io/code-generator v0.35.3 + k8s.io/component-base => k8s.io/component-base v0.35.3 + k8s.io/component-helpers => k8s.io/component-helpers v0.35.3 + k8s.io/controller-manager => k8s.io/controller-manager v0.35.3 + k8s.io/cri-api => k8s.io/cri-api v0.35.3 + k8s.io/cri-client => k8s.io/cri-client v0.35.3 + k8s.io/csi-translation-lib => k8s.io/csi-translation-lib v0.35.3 + k8s.io/dynamic-resource-allocation => k8s.io/dynamic-resource-allocation v0.35.3 + k8s.io/endpointslice => k8s.io/endpointslice v0.35.3 + k8s.io/externaljwt => k8s.io/externaljwt v0.35.3 + k8s.io/kube-aggregator => k8s.io/kube-aggregator v0.35.3 + k8s.io/kube-controller-manager => k8s.io/kube-controller-manager v0.35.3 + k8s.io/kube-proxy => k8s.io/kube-proxy v0.35.3 + k8s.io/kube-scheduler => k8s.io/kube-scheduler v0.35.3 + k8s.io/kubectl => k8s.io/kubectl v0.35.3 + k8s.io/kubelet => k8s.io/kubelet v0.35.3 + k8s.io/legacy-cloud-providers => k8s.io/legacy-cloud-providers v0.35.3 + k8s.io/metrics => k8s.io/metrics v0.35.3 + k8s.io/mount-utils => k8s.io/mount-utils v0.35.3 + k8s.io/pod-security-admission => k8s.io/pod-security-admission v0.35.3 + k8s.io/sample-apiserver => k8s.io/sample-apiserver v0.35.3 ) replace github.com/JamesStewy/go-mysqldump => github.com/vtoma/go-mysqldump v1.0.0 diff --git a/go.sum b/go.sum index e5d013c..6b0cf0c 100644 --- a/go.sum +++ b/go.sum @@ -57,8 +57,6 @@ github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1 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.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4= @@ -508,42 +506,42 @@ 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.5.2 h1:7koQfIKdy+I8UTetycgUqXWSDwpgv193Ka+qRsmBY8Q= gotest.tools/v3 v3.5.2/go.mod h1:LtdLGcnqToBH83WByAAi/wiwSFCArdFIUV/xxN4pcjA= -k8s.io/api v0.35.0 h1:iBAU5LTyBI9vw3L5glmat1njFK34srdLmktWwLTprlY= -k8s.io/api v0.35.0/go.mod h1:AQ0SNTzm4ZAczM03QH42c7l3bih1TbAXYo0DkF8ktnA= -k8s.io/apiextensions-apiserver v0.35.0 h1:3xHk2rTOdWXXJM+RDQZJvdx0yEOgC0FgQ1PlJatA5T4= -k8s.io/apiextensions-apiserver v0.35.0/go.mod h1:E1Ahk9SADaLQ4qtzYFkwUqusXTcaV2uw3l14aqpL2LU= -k8s.io/apimachinery v0.35.0 h1:Z2L3IHvPVv/MJ7xRxHEtk6GoJElaAqDCCU0S6ncYok8= -k8s.io/apimachinery v0.35.0/go.mod h1:jQCgFZFR1F4Ik7hvr2g84RTJSZegBc8yHgFWKn//hns= -k8s.io/apiserver v0.35.0 h1:CUGo5o+7hW9GcAEF3x3usT3fX4f9r8xmgQeCBDaOgX4= -k8s.io/apiserver v0.35.0/go.mod h1:QUy1U4+PrzbJaM3XGu2tQ7U9A4udRRo5cyxkFX0GEds= -k8s.io/cli-runtime v0.35.0 h1:PEJtYS/Zr4p20PfZSLCbY6YvaoLrfByd6THQzPworUE= -k8s.io/cli-runtime v0.35.0/go.mod h1:VBRvHzosVAoVdP3XwUQn1Oqkvaa8facnokNkD7jOTMY= -k8s.io/client-go v0.35.0 h1:IAW0ifFbfQQwQmga0UdoH0yvdqrbwMdq9vIFEhRpxBE= -k8s.io/client-go v0.35.0/go.mod h1:q2E5AAyqcbeLGPdoRB+Nxe3KYTfPce1Dnu1myQdqz9o= -k8s.io/cloud-provider v0.35.0 h1:syiBCQbKh2gho/S1BkIl006Dc44pV8eAtGZmv5NMe7M= -k8s.io/cloud-provider v0.35.0/go.mod h1:7grN+/Nt5Hf7tnSGPT3aErt4K7aQpygyCrGpbrQbzNc= -k8s.io/cluster-bootstrap v0.35.0 h1:VXnil8zw+FikqvytJYLB8wcvjxbUCyqMkiC//k426Y0= -k8s.io/cluster-bootstrap v0.35.0/go.mod h1:X6sjEjVUFSfFNIzJ6VAIuwwh2QiDtsVX1xZgcGX4gD8= -k8s.io/component-base v0.35.0 h1:+yBrOhzri2S1BVqyVSvcM3PtPyx5GUxCK2tinZz1G94= -k8s.io/component-base v0.35.0/go.mod h1:85SCX4UCa6SCFt6p3IKAPej7jSnF3L8EbfSyMZayJR0= -k8s.io/component-helpers v0.35.0 h1:wcXv7HJRksgVjM4VlXJ1CNFBpyDHruRI99RrBtrJceA= -k8s.io/component-helpers v0.35.0/go.mod h1:ahX0m/LTYmu7fL3W8zYiIwnQ/5gT28Ex4o2pymF63Co= -k8s.io/controller-manager v0.35.0 h1:KteodmfVIRzfZ3RDaxhnHb72rswBxEngvdL9vuZOA9A= -k8s.io/controller-manager v0.35.0/go.mod h1:1bVuPNUG6/dpWpevsJpXioS0E0SJnZ7I/Wqc9Awyzm4= -k8s.io/cri-api v0.35.0 h1:fxLSKyJHqbyCSUsg1rW4DRpmjSEM/elZ1GXzYTSLoDQ= -k8s.io/cri-api v0.35.0/go.mod h1:Cnt29u/tYl1Se1cBRL30uSZ/oJ5TaIp4sZm1xDLvcMc= -k8s.io/cri-client v0.35.0 h1:U1K4bteO93yioUS38804ybN+kWaon9zrzVtB37I3fCs= -k8s.io/cri-client v0.35.0/go.mod h1:XG5GkuuSpxvungsJVzW58NyWBoGSQhMMJmE5c66m9N8= +k8s.io/api v0.35.3 h1:pA2fiBc6+N9PDf7SAiluKGEBuScsTzd2uYBkA5RzNWQ= +k8s.io/api v0.35.3/go.mod h1:9Y9tkBcFwKNq2sxwZTQh1Njh9qHl81D0As56tu42GA4= +k8s.io/apiextensions-apiserver v0.35.3 h1:2fQUhEO7P17sijylbdwt0nBdXP0TvHrHj0KeqHD8FiU= +k8s.io/apiextensions-apiserver v0.35.3/go.mod h1:tK4Kz58ykRpwAEkXUb634HD1ZAegEElktz/B3jgETd8= +k8s.io/apimachinery v0.35.3 h1:MeaUwQCV3tjKP4bcwWGgZ/cp/vpsRnQzqO6J6tJyoF8= +k8s.io/apimachinery v0.35.3/go.mod h1:jQCgFZFR1F4Ik7hvr2g84RTJSZegBc8yHgFWKn//hns= +k8s.io/apiserver v0.35.3 h1:D2eIcfJ05hEAEewoSDg+05e0aSRwx8Y4Agvd/wiomUI= +k8s.io/apiserver v0.35.3/go.mod h1:JI0n9bHYzSgIxgIrfe21dbduJ9NHzKJ6RchcsmIKWKY= +k8s.io/cli-runtime v0.35.3 h1:UZq4ipNimtzBmhN7PPKbfAdqo8quK0H0UdGl6qAQnqI= +k8s.io/cli-runtime v0.35.3/go.mod h1:O7MUmCqcKSd5xI+O5X7/pRkB5l0O2NIhOdUVwbHLXu4= +k8s.io/client-go v0.35.3 h1:s1lZbpN4uI6IxeTM2cpdtrwHcSOBML1ODNTCCfsP1pg= +k8s.io/client-go v0.35.3/go.mod h1:RzoXkc0mzpWIDvBrRnD+VlfXP+lRzqQjCmKtiwZ8Q9c= +k8s.io/cloud-provider v0.35.3 h1:8gmlIXd9LHhDOXfv0fqsM9KIgVbgl3fwtNI2lDL0qWE= +k8s.io/cloud-provider v0.35.3/go.mod h1:bHkYmoCLBoyDkx8r8usg0sOo6PIzYrM5qYuDxCyuUxw= +k8s.io/cluster-bootstrap v0.35.3 h1:fDSLN5jLBX6SdEB3EOaOmVytfpLkhUzEpfdijRNkGPs= +k8s.io/cluster-bootstrap v0.35.3/go.mod h1:Sr0FYu1mGqLOrtrPBBh2U323YtTBiIo2oue4w2VvhHI= +k8s.io/component-base v0.35.3 h1:mbKbzoIMy7JDWS/wqZobYW1JDVRn/RKRaoMQHP9c4P0= +k8s.io/component-base v0.35.3/go.mod h1:IZ8LEG30kPN4Et5NeC7vjNv5aU73ku5MS15iZyvyMYk= +k8s.io/component-helpers v0.35.3 h1:Rl2p3wNMC0YU21rziLkWXavr7MwkB5Td3lNZ/+gYGm8= +k8s.io/component-helpers v0.35.3/go.mod h1:8BkyfcBA6XsCtFYxDB+mCfZqM6P39Aco12AKigNn0C8= +k8s.io/controller-manager v0.35.3 h1:BlX95jtN41/vCwuTsmfzR9UpqweX7KDWdwm/mRHez/o= +k8s.io/controller-manager v0.35.3/go.mod h1:OaG4bXsMfN5zpqowtdyfoRX20LrfwUh6V0zmpF7hw30= +k8s.io/cri-api v0.35.3 h1:gONTLBvK1eBPyveXEQ39mtTqi2oANeHj1mCo1YhQosI= +k8s.io/cri-api v0.35.3/go.mod h1:Cnt29u/tYl1Se1cBRL30uSZ/oJ5TaIp4sZm1xDLvcMc= +k8s.io/cri-client v0.35.3 h1:CJb9RNVGv/8Eso/Ysp1dBWC9Ya2jVYWhXV/I0X3rJTA= +k8s.io/cri-client v0.35.3/go.mod h1:PrjaeLyPTosFRzTyJ6xNZEZyrWdza1BARYPmNwBKMno= k8s.io/klog/v2 v2.140.0 h1:Tf+J3AH7xnUzZyVVXhTgGhEKnFqye14aadWv7bzXdzc= k8s.io/klog/v2 v2.140.0/go.mod h1:o+/RWfJ6PwpnFn7OyAG3QnO47BFsymfEfrz6XyYSSp0= -k8s.io/kms v0.35.0 h1:/x87FED2kDSo66csKtcYCEHsxF/DBlNl7LfJ1fVQs1o= -k8s.io/kms v0.35.0/go.mod h1:VT+4ekZAdrZDMgShK37vvlyHUVhwI9t/9tvh0AyCWmQ= +k8s.io/kms v0.35.3 h1:jaxr/7dNqcztGldnfCEZg8DegEOnHV6cfoBC2ACMWEg= +k8s.io/kms v0.35.3/go.mod h1:VT+4ekZAdrZDMgShK37vvlyHUVhwI9t/9tvh0AyCWmQ= k8s.io/kube-openapi v0.0.0-20250910181357-589584f1c912 h1:Y3gxNAuB0OBLImH611+UDZcmKS3g6CthxToOb37KgwE= k8s.io/kube-openapi v0.0.0-20250910181357-589584f1c912/go.mod h1:kdmbQkyfwUagLfXIad1y2TdrjPFWp2Q89B3qkRwf/pQ= -k8s.io/kube-proxy v0.35.0 h1:erv2wYmGZ6nyu/FtmaIb+ORD3q2rfZ4Fhn7VXs/8cPQ= -k8s.io/kube-proxy v0.35.0/go.mod h1:bd9lpN3uLLOOWc/CFZbkPEi9DTkzQQymbE8FqSU4bWk= -k8s.io/kubelet v0.35.0 h1:8cgJHCBCKLYuuQ7/Pxb/qWbJfX1LXIw7790ce9xHq7c= -k8s.io/kubelet v0.35.0/go.mod h1:ciRzAXn7C4z5iB7FhG1L2CGPPXLTVCABDlbXt/Zz8YA= +k8s.io/kube-proxy v0.35.3 h1:No+7t68UGdwg6lwkIndte34Q8Cb5UFWi+id8dDYM6oI= +k8s.io/kube-proxy v0.35.3/go.mod h1:dzn7MfHWCkNFUe4KVOYitTzUE0NkqIku/s353gFHsbs= +k8s.io/kubelet v0.35.3 h1:Y6b9+U/aTBmou9JZ6qv18O4dpFbJOfl7cBe+ZksT7RY= +k8s.io/kubelet v0.35.3/go.mod h1:aWoMogtyUEf/mTl8VjqHbSkW5ZZkB8vTkrg9Fi6TKwE= k8s.io/kubernetes v1.35.3 h1:J3dk2wybKFHwoH4eydDUGHJo4HAD+9CZbSlvk/YQuao= k8s.io/kubernetes v1.35.3/go.mod h1:AaPpCpiS8oAqRbEwpY5r3RitLpwpVp5lVXKFkJril58= k8s.io/system-validators v1.12.1 h1:AY1+COTLJN/Sj0w9QzH1H0yvyF3Kl6CguMnh32WlcUU= @@ -556,8 +554,8 @@ 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.4 h1:GEjV7KV3TY8e+tJ2LCTxUTanW4z/FmNB7l327UfMq9A= -sigs.k8s.io/controller-runtime v0.22.4/go.mod h1:+QX1XUpTXN4mLoblf4tqr5CQcyHPAki2HLXqQMY6vh8= +sigs.k8s.io/controller-runtime v0.23.3 h1:VjB/vhoPoA9l1kEKZHBMnQF33tdCLQKJtydy4iqwZ80= +sigs.k8s.io/controller-runtime v0.23.3/go.mod h1:B6COOxKptp+YaUT5q4l6LqUJTRpizbgf9KSRNdQGns0= sigs.k8s.io/gateway-api v1.4.1 h1:NPxFutNkKNa8UfLd2CMlEuhIPMQgDQ6DXNKG9sHbJU8= sigs.k8s.io/gateway-api v1.4.1/go.mod h1:AR5RSqciWP98OPckEjOjh2XJhAe2Na4LHyXD2FUY7Qk= sigs.k8s.io/json v0.0.0-20250730193827-2d320260d730 h1:IpInykpT6ceI+QxKBbEflcR5EXP7sU1kvOlxwZh5txg= @@ -568,7 +566,7 @@ sigs.k8s.io/kustomize/kyaml v0.20.1 h1:PCMnA2mrVbRP3NIB6v9kYCAc38uvFLVs8j/CD567A sigs.k8s.io/kustomize/kyaml v0.20.1/go.mod h1:0EmkQHRUsJxY8Ug9Niig1pUMSCGHxQ5RklbpV/Ri6po= sigs.k8s.io/randfill v1.0.0 h1:JfjMILfT8A6RbawdsK2JXGBR5AQVfd+9TbzrlneTyrU= sigs.k8s.io/randfill v1.0.0/go.mod h1:XeLlZ/jmk4i1HRopwe7/aU3H5n1zNUcX6TM94b3QxOY= -sigs.k8s.io/structured-merge-diff/v6 v6.3.0 h1:jTijUJbW353oVOd9oTlifJqOGEkUw2jB/fXCbTiQEco= -sigs.k8s.io/structured-merge-diff/v6 v6.3.0/go.mod h1:M3W8sfWvn2HhQDIbGWj3S099YozAsymCo/wrT5ohRUE= +sigs.k8s.io/structured-merge-diff/v6 v6.3.2-0.20260122202528-d9cc6641c482 h1:2WOzJpHUBVrrkDjU4KBT8n5LDcj824eX0I5UKcgeRUs= +sigs.k8s.io/structured-merge-diff/v6 v6.3.2-0.20260122202528-d9cc6641c482/go.mod h1:M3W8sfWvn2HhQDIbGWj3S099YozAsymCo/wrT5ohRUE= sigs.k8s.io/yaml v1.6.0 h1:G8fkbMSAFqgEFgh4b1wmtzDnioxFCUgTZhlbj5P9QYs= sigs.k8s.io/yaml v1.6.0/go.mod h1:796bPqUfzR/0jLAl6XjHl3Ck7MiyVv8dbTdyT3/pMf4= diff --git a/internal/resources/addons/coredns.go b/internal/resources/addons/coredns.go index a0af973..a80fa5d 100644 --- a/internal/resources/addons/coredns.go +++ b/internal/resources/addons/coredns.go @@ -309,7 +309,7 @@ func (c *CoreDNS) mutateDeployment(ctx context.Context, tenantClient client.Clie if err := controllerutil.SetControllerReference(c.clusterRoleBinding, c.deployment, tenantClient.Scheme()); err != nil { return controllerutil.OperationResultNone, err } - + //nolint:staticcheck return controllerutil.OperationResultNone, tenantClient.Patch(ctx, c.deployment, client.Apply, client.FieldOwner("kamaji"), client.ForceOwnership) } @@ -345,7 +345,7 @@ func (c *CoreDNS) mutateService(ctx context.Context, tenantClient client.Client) if err := controllerutil.SetControllerReference(c.clusterRoleBinding, c.service, tenantClient.Scheme()); err != nil { return controllerutil.OperationResultNone, err } - + //nolint:staticcheck return controllerutil.OperationResultNone, tenantClient.Patch(ctx, c.service, client.Apply, client.FieldOwner("kamaji"), client.ForceOwnership) } diff --git a/internal/resources/addons/kube_proxy.go b/internal/resources/addons/kube_proxy.go index 5e222b3..b5059c5 100644 --- a/internal/resources/addons/kube_proxy.go +++ b/internal/resources/addons/kube_proxy.go @@ -314,7 +314,7 @@ func (k *KubeProxy) mutateDaemonSet(ctx context.Context, tenantClient client.Cli if err := controllerutil.SetControllerReference(k.clusterRoleBinding, k.daemonSet, tenantClient.Scheme()); err != nil { return controllerutil.OperationResultNone, err } - + //nolint:staticcheck return controllerutil.OperationResultNone, tenantClient.Patch(ctx, k.daemonSet, client.Apply, client.FieldOwner("kamaji"), client.ForceOwnership) } diff --git a/internal/workqueue_metrics_test.go b/internal/workqueue_metrics_test.go index 4e51f93..b5217c8 100644 --- a/internal/workqueue_metrics_test.go +++ b/internal/workqueue_metrics_test.go @@ -9,13 +9,19 @@ import ( "time" dto "github.com/prometheus/client_model/go" + "github.com/stretchr/testify/require" + corev1 "k8s.io/api/core/v1" "k8s.io/apimachinery/pkg/runtime" + clientgoscheme "k8s.io/client-go/kubernetes/scheme" "k8s.io/client-go/rest" - "sigs.k8s.io/controller-runtime/pkg/controller" + ctrl "sigs.k8s.io/controller-runtime" + "sigs.k8s.io/controller-runtime/pkg/event" + "sigs.k8s.io/controller-runtime/pkg/handler" "sigs.k8s.io/controller-runtime/pkg/manager" "sigs.k8s.io/controller-runtime/pkg/metrics" metricsserver "sigs.k8s.io/controller-runtime/pkg/metrics/server" "sigs.k8s.io/controller-runtime/pkg/reconcile" + "sigs.k8s.io/controller-runtime/pkg/source" ) // dummyReconciler is a minimal reconciler for testing. @@ -31,7 +37,7 @@ func (r *dummyReconciler) Reconcile(ctx context.Context, req reconcile.Request) func TestWorkqueueMetricsRegistration(t *testing.T) { // Create a minimal scheme and manager scheme := runtime.NewScheme() - + require.NoError(t, clientgoscheme.AddToScheme(scheme), "registering schema") // Create a manager with a fake config - this will trigger controller-runtime initialization mgr, err := manager.New(&rest.Config{ Host: "https://localhost:6443", @@ -50,15 +56,14 @@ func TestWorkqueueMetricsRegistration(t *testing.T) { return } - // Create a controller with the manager - this triggers workqueue creation - _, err = controller.New("test-controller", mgr, controller.Options{ - Reconciler: &dummyReconciler{}, - }) - if err != nil { - t.Fatalf("Failed to create controller: %v", err) - } + ch := make(chan event.GenericEvent) + err = ctrl.NewControllerManagedBy(mgr). + For(&corev1.Pod{}). + WatchesRawSource(source.Channel(ch, &handler.EnqueueRequestForObject{})). + Complete(&dummyReconciler{}) + require.NoError(t, err, "failed to create controller") // Start the manager in background ctx, cancel := context.WithTimeout(t.Context(), 2*time.Second) defer cancel() @@ -67,15 +72,13 @@ func TestWorkqueueMetricsRegistration(t *testing.T) { _ = mgr.Start(ctx) }() + ch <- event.GenericEvent{Object: &corev1.Pod{}} // Give it a moment to initialize time.Sleep(100 * time.Millisecond) // Gather all registered metrics from controller-runtime's registry metricFamilies, err := metrics.Registry.Gather() - if err != nil { - t.Fatalf("Failed to gather metrics: %v", err) - } - + require.NoError(t, err, "gathering metrics") // Collect all workqueue metrics workqueueMetrics := make(map[string]*dto.MetricFamily) for _, mf := range metricFamilies { @@ -89,10 +92,7 @@ func TestWorkqueueMetricsRegistration(t *testing.T) { t.Logf("Workqueue metrics found: %d", len(workqueueMetrics)) // Verify we have workqueue metrics - if len(workqueueMetrics) == 0 { - t.Fatal("FAILED: No workqueue metrics found! The initialization conflict is still present.") - } - + require.NotEmpty(t, workqueueMetrics, "workqueueMetrics should not be empty") // List all found workqueue metrics t.Log("Found workqueue metrics:") for name := range workqueueMetrics { @@ -110,19 +110,16 @@ func TestWorkqueueMetricsRegistration(t *testing.T) { "workqueue_longest_running_processor_seconds", } - missingMetrics := []string{} + var missingMetrics []string for _, expected := range expectedMetrics { if _, found := workqueueMetrics[expected]; !found { missingMetrics = append(missingMetrics, expected) } } + require.Empty(t, missingMetrics, "missing expected workqueue metrics", "values", missingMetrics) - if len(missingMetrics) > 0 { - t.Errorf("Missing expected workqueue metrics: %v", missingMetrics) - } else { - t.Log("✅ SUCCESS: All expected workqueue metrics are present!") - t.Log("The fix successfully resolved issue #1026 - workqueue metrics are now registered.") - } + t.Log("✅ SUCCESS: All expected workqueue metrics are present!") + t.Log("The fix successfully resolved issue #1026 - workqueue metrics are now registered.") } // checkBasicMetrics is a fallback check when we can't create a full manager.