From 22a734153b37c3706069cb7a0a8eb92167040b9e Mon Sep 17 00:00:00 2001 From: Luboslav Pivarc Date: Wed, 9 Aug 2023 11:51:10 +0200 Subject: [PATCH] Fix Aggregated Discovery Bump client-go dependency to update bug with Aggregated Discovery Signed-off-by: Luboslav Pivarc --- go.mod | 52 +++---- go.sum | 32 ++--- staging/src/kubevirt.io/client-go/go.mod | 50 +++---- staging/src/kubevirt.io/client-go/go.sum | 24 ++-- .../discovery/aggregated_discovery.go | 58 +++++--- .../client-go/tools/cache/controller.go | 22 +-- .../client-go/tools/cache/delta_fifo.go | 135 ++++++++++++------ .../client-go/tools/cache/shared_informer.go | 8 +- vendor/modules.txt | 60 ++++---- 9 files changed, 241 insertions(+), 200 deletions(-) diff --git a/go.mod b/go.mod index 64a39278f..8bc66a1c5 100644 --- a/go.mod +++ b/go.mod @@ -65,11 +65,11 @@ require ( gopkg.in/cheggaaa/pb.v1 v1.0.28 gopkg.in/yaml.v2 v2.4.0 k8s.io/api v0.27.1 - k8s.io/apiextensions-apiserver v0.26.3 + k8s.io/apiextensions-apiserver v0.26.4 k8s.io/apimachinery v0.27.1 k8s.io/client-go v12.0.0+incompatible k8s.io/klog/v2 v2.90.1 - k8s.io/kube-aggregator v0.26.3 + k8s.io/kube-aggregator v0.26.4 k8s.io/kube-openapi v0.0.0-20230501164219-8b0f38b5fd1f k8s.io/kubectl v0.0.0-00010101000000-000000000000 k8s.io/utils v0.0.0-20230505201702-9f6742963106 @@ -165,32 +165,32 @@ replace ( github.com/openshift/client-go => github.com/openshift/client-go v0.0.0-20210112165513-ebc401615f47 github.com/operator-framework/operator-lifecycle-manager => github.com/operator-framework/operator-lifecycle-manager v0.0.0-20190128024246-5eb7ae5bdb7a - k8s.io/api => k8s.io/api v0.26.3 - k8s.io/apiextensions-apiserver => k8s.io/apiextensions-apiserver v0.26.3 - k8s.io/apimachinery => k8s.io/apimachinery v0.26.3 - k8s.io/apiserver => k8s.io/apiserver v0.26.3 - k8s.io/cli-runtime => k8s.io/cli-runtime v0.26.3 - k8s.io/client-go => k8s.io/client-go v0.26.3 - k8s.io/cloud-provider => k8s.io/cloud-provider v0.26.3 - k8s.io/cluster-bootstrap => k8s.io/cluster-bootstrap v0.26.3 - k8s.io/code-generator => k8s.io/code-generator v0.26.3 - k8s.io/component-base => k8s.io/component-base v0.26.3 - k8s.io/cri-api => k8s.io/cri-api v0.26.3 - k8s.io/csi-translation-lib => k8s.io/csi-translation-lib v0.26.3 + k8s.io/api => k8s.io/api v0.26.4 + k8s.io/apiextensions-apiserver => k8s.io/apiextensions-apiserver v0.26.4 + k8s.io/apimachinery => k8s.io/apimachinery v0.26.4 + k8s.io/apiserver => k8s.io/apiserver v0.26.4 + k8s.io/cli-runtime => k8s.io/cli-runtime v0.26.4 + k8s.io/client-go => k8s.io/client-go v0.26.4 + k8s.io/cloud-provider => k8s.io/cloud-provider v0.26.4 + k8s.io/cluster-bootstrap => k8s.io/cluster-bootstrap v0.26.4 + k8s.io/code-generator => k8s.io/code-generator v0.26.4 + k8s.io/component-base => k8s.io/component-base v0.26.4 + k8s.io/cri-api => k8s.io/cri-api v0.26.4 + k8s.io/csi-translation-lib => k8s.io/csi-translation-lib v0.26.4 k8s.io/klog => k8s.io/klog v0.4.0 - k8s.io/kube-aggregator => k8s.io/kube-aggregator v0.26.3 - k8s.io/kube-controller-manager => k8s.io/kube-controller-manager v0.26.3 + k8s.io/kube-aggregator => k8s.io/kube-aggregator v0.26.4 + k8s.io/kube-controller-manager => k8s.io/kube-controller-manager v0.26.4 k8s.io/kube-openapi => k8s.io/kube-openapi v0.0.0-20221012153701-172d655c2280 - k8s.io/kube-proxy => k8s.io/kube-proxy v0.26.3 - k8s.io/kube-scheduler => k8s.io/kube-scheduler v0.26.3 - k8s.io/kubectl => k8s.io/kubectl v0.26.3 - k8s.io/kubelet => k8s.io/kubelet v0.26.3 - k8s.io/legacy-cloud-providers => k8s.io/legacy-cloud-providers v0.26.3 - k8s.io/metrics => k8s.io/metrics v0.26.3 - k8s.io/node-api => k8s.io/node-api v0.26.3 - k8s.io/sample-apiserver => k8s.io/sample-apiserver v0.26.3 - k8s.io/sample-cli-plugin => k8s.io/sample-cli-plugin v0.26.3 - k8s.io/sample-controller => k8s.io/sample-controller v0.26.3 + k8s.io/kube-proxy => k8s.io/kube-proxy v0.26.4 + k8s.io/kube-scheduler => k8s.io/kube-scheduler v0.26.4 + k8s.io/kubectl => k8s.io/kubectl v0.26.4 + k8s.io/kubelet => k8s.io/kubelet v0.26.4 + k8s.io/legacy-cloud-providers => k8s.io/legacy-cloud-providers v0.26.4 + k8s.io/metrics => k8s.io/metrics v0.26.4 + k8s.io/node-api => k8s.io/node-api v0.26.4 + k8s.io/sample-apiserver => k8s.io/sample-apiserver v0.26.4 + k8s.io/sample-cli-plugin => k8s.io/sample-cli-plugin v0.26.4 + k8s.io/sample-controller => k8s.io/sample-controller v0.26.4 kubevirt.io/api => ./staging/src/kubevirt.io/api kubevirt.io/client-go => ./staging/src/kubevirt.io/client-go diff --git a/go.sum b/go.sum index fdd556ec6..3f7fe3ce3 100644 --- a/go.sum +++ b/go.sum @@ -1927,17 +1927,17 @@ honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= howett.net/plist v0.0.0-20181124034731-591f970eefbb/go.mod h1:vMygbs4qMhSZSc4lCUl2OEE+rDiIIJAIdR4m7MiMcm0= -k8s.io/api v0.26.3 h1:emf74GIQMTik01Aum9dPP0gAypL8JTLl/lHa4V9RFSU= -k8s.io/api v0.26.3/go.mod h1:PXsqwPMXBSBcL1lJ9CYDKy7kIReUydukS5JiRlxC3qE= -k8s.io/apiextensions-apiserver v0.26.3 h1:5PGMm3oEzdB1W/FTMgGIDmm100vn7IaUP5er36dB+YE= -k8s.io/apiextensions-apiserver v0.26.3/go.mod h1:jdA5MdjNWGP+njw1EKMZc64xAT5fIhN6VJrElV3sfpQ= -k8s.io/apimachinery v0.26.3 h1:dQx6PNETJ7nODU3XPtrwkfuubs6w7sX0M8n61zHIV/k= -k8s.io/apimachinery v0.26.3/go.mod h1:ats7nN1LExKHvJ9TmwootT00Yz05MuYqPXEXaVeOy5I= -k8s.io/apiserver v0.26.3/go.mod h1:CJe/VoQNcXdhm67EvaVjYXxR3QyfwpceKPuPaeLibTA= -k8s.io/client-go v0.26.3 h1:k1UY+KXfkxV2ScEL3gilKcF7761xkYsSD6BC9szIu8s= -k8s.io/client-go v0.26.3/go.mod h1:ZPNu9lm8/dbRIPAgteN30RSXea6vrCpFvq+MateTUuQ= -k8s.io/code-generator v0.26.3/go.mod h1:ryaiIKwfxEJEaywEzx3dhWOydpVctKYbqLajJf0O8dI= -k8s.io/component-base v0.26.3/go.mod h1:5kj1kZYwSC6ZstHJN7oHBqcJC6yyn41eR+Sqa/mQc8E= +k8s.io/api v0.26.4 h1:qSG2PmtcD23BkYiWfoYAcak870eF/hE7NNYBYavTT94= +k8s.io/api v0.26.4/go.mod h1:WwKEXU3R1rgCZ77AYa7DFksd9/BAIKyOmRlbVxgvjCk= +k8s.io/apiextensions-apiserver v0.26.4 h1:9D2RTxYGxrG5uYg6D7QZRcykXvavBvcA59j5kTaedQI= +k8s.io/apiextensions-apiserver v0.26.4/go.mod h1:cd4uGFGIgzEqUghWpRsr9KE8j2KNTjY8Ji8pnMMazyw= +k8s.io/apimachinery v0.26.4 h1:rZccKdBLg9vP6J09JD+z8Yr99Ce8gk3Lbi9TCx05Jzs= +k8s.io/apimachinery v0.26.4/go.mod h1:ats7nN1LExKHvJ9TmwootT00Yz05MuYqPXEXaVeOy5I= +k8s.io/apiserver v0.26.4/go.mod h1:yAY3O1vBM4/0OIGAGeWcdfzQvgdwJ188VirLcuSAVnw= +k8s.io/client-go v0.26.4 h1:/7P/IbGBuT73A+G97trf44NTPSNqvuBREpOfdLbHvD4= +k8s.io/client-go v0.26.4/go.mod h1:6qOItWm3EwxJdl/8p5t7FWtWUOwyMdA8N9ekbW4idpI= +k8s.io/code-generator v0.26.4/go.mod h1:ryaiIKwfxEJEaywEzx3dhWOydpVctKYbqLajJf0O8dI= +k8s.io/component-base v0.26.4/go.mod h1:lTuWL1Xz/a4e80gmIC3YZG2JCO4xNwtKWHJWeJmsq20= k8s.io/gengo v0.0.0-20181113154421-fd15ee9cc2f7/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= k8s.io/gengo v0.0.0-20210813121822-485abfe95c7c/go.mod h1:FiNAH4ZV3gBg2Kwh89tzAEV2be7d5xI0vBa/VySYy3E= k8s.io/gengo v0.0.0-20211129171323-c02415ce4185/go.mod h1:FiNAH4ZV3gBg2Kwh89tzAEV2be7d5xI0vBa/VySYy3E= @@ -1949,13 +1949,13 @@ k8s.io/klog/v2 v2.40.1/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0= k8s.io/klog/v2 v2.80.1/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0= k8s.io/klog/v2 v2.90.1 h1:m4bYOKall2MmOiRaR1J+We67Do7vm9KiQVlT96lnHUw= k8s.io/klog/v2 v2.90.1/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0= -k8s.io/kms v0.26.3/go.mod h1:69qGnf1NsFOQP07fBYqNLZklqEHSJF024JqYCaeVxHg= -k8s.io/kube-aggregator v0.26.3 h1:nc4H5ymGkWPU3c9U9UM468JcmNENY/s/mDYVW3t3uRo= -k8s.io/kube-aggregator v0.26.3/go.mod h1:SgBESB/+PfZAyceTPIanfQ7GtX9G/+mjfUbTHg3Twbo= +k8s.io/kms v0.26.4/go.mod h1:69qGnf1NsFOQP07fBYqNLZklqEHSJF024JqYCaeVxHg= +k8s.io/kube-aggregator v0.26.4 h1:iGljhq5exQkbuc3bnkwUx95RPCBDExg7DkX9XaYhg6w= +k8s.io/kube-aggregator v0.26.4/go.mod h1:eWfg4tU0+l57ebWiS5THOANIJUrKRxudSVDJ+63bqvQ= k8s.io/kube-openapi v0.0.0-20221012153701-172d655c2280 h1:+70TFaan3hfJzs+7VK2o+OGxg8HsuBr/5f6tVAjDu6E= k8s.io/kube-openapi v0.0.0-20221012153701-172d655c2280/go.mod h1:+Axhij7bCpeqhklhUTe3xmOn6bWxolyZEeyaFpjGtl4= -k8s.io/kubectl v0.26.3 h1:bZ5SgFyeEXw6XTc1Qji0iNdtqAC76lmeIIQULg2wNXM= -k8s.io/kubectl v0.26.3/go.mod h1:02+gv7Qn4dupzN3fi/9OvqqdW+uG/4Zi56vc4Zmsp1g= +k8s.io/kubectl v0.26.4 h1:A0Oa0u/po4KxXnXsNCOwLojAe9cQR3TJNJabEIf7U1w= +k8s.io/kubectl v0.26.4/go.mod h1:cWtp/+I4p+h5En3s2zO1zCry9v3/6h37EQ2tF3jNRnM= k8s.io/kubernetes v1.11.8-beta.0.0.20190124204751-3a10094374f2/go.mod h1:ocZa8+6APFNC2tX1DZASIbocyYT5jHzqFVsY5aoB7Jk= k8s.io/utils v0.0.0-20190801114015-581e00157fb1/go.mod h1:sZAwmy6armz5eXlNoLmJcl4F1QuKu7sr+mFQ0byX7Ew= k8s.io/utils v0.0.0-20191114200735-6ca3b61696b6/go.mod h1:sZAwmy6armz5eXlNoLmJcl4F1QuKu7sr+mFQ0byX7Ew= diff --git a/staging/src/kubevirt.io/client-go/go.mod b/staging/src/kubevirt.io/client-go/go.mod index b8b0074df..2c8edf077 100644 --- a/staging/src/kubevirt.io/client-go/go.mod +++ b/staging/src/kubevirt.io/client-go/go.mod @@ -16,7 +16,7 @@ require ( github.com/openshift/client-go v0.0.0-20210112165513-ebc401615f47 github.com/spf13/pflag v1.0.5 k8s.io/api v0.27.1 - k8s.io/apiextensions-apiserver v0.26.3 + k8s.io/apiextensions-apiserver v0.26.4 k8s.io/apimachinery v0.27.1 k8s.io/client-go v12.0.0+incompatible k8s.io/kube-openapi v0.0.0-20230501164219-8b0f38b5fd1f @@ -71,32 +71,32 @@ require ( replace ( github.com/openshift/api => github.com/openshift/api v0.0.0-20210105115604-44119421ec6b - k8s.io/api => k8s.io/api v0.26.3 - k8s.io/apiextensions-apiserver => k8s.io/apiextensions-apiserver v0.26.3 - k8s.io/apimachinery => k8s.io/apimachinery v0.26.3 - k8s.io/apiserver => k8s.io/apiserver v0.26.3 - k8s.io/cli-runtime => k8s.io/cli-runtime v0.26.3 - k8s.io/client-go => k8s.io/client-go v0.26.3 - k8s.io/cloud-provider => k8s.io/cloud-provider v0.26.3 - k8s.io/cluster-bootstrap => k8s.io/cluster-bootstrap v0.26.3 - k8s.io/code-generator => k8s.io/code-generator v0.26.3 - k8s.io/component-base => k8s.io/component-base v0.26.3 - k8s.io/cri-api => k8s.io/cri-api v0.26.3 - k8s.io/csi-translation-lib => k8s.io/csi-translation-lib v0.26.3 + k8s.io/api => k8s.io/api v0.26.4 + k8s.io/apiextensions-apiserver => k8s.io/apiextensions-apiserver v0.26.4 + k8s.io/apimachinery => k8s.io/apimachinery v0.26.4 + k8s.io/apiserver => k8s.io/apiserver v0.26.4 + k8s.io/cli-runtime => k8s.io/cli-runtime v0.26.4 + k8s.io/client-go => k8s.io/client-go v0.26.4 + k8s.io/cloud-provider => k8s.io/cloud-provider v0.26.4 + k8s.io/cluster-bootstrap => k8s.io/cluster-bootstrap v0.26.4 + k8s.io/code-generator => k8s.io/code-generator v0.26.4 + k8s.io/component-base => k8s.io/component-base v0.26.4 + k8s.io/cri-api => k8s.io/cri-api v0.26.4 + k8s.io/csi-translation-lib => k8s.io/csi-translation-lib v0.26.4 k8s.io/klog => k8s.io/klog v0.4.0 - k8s.io/kube-aggregator => k8s.io/kube-aggregator v0.26.3 - k8s.io/kube-controller-manager => k8s.io/kube-controller-manager v0.26.3 + k8s.io/kube-aggregator => k8s.io/kube-aggregator v0.26.4 + k8s.io/kube-controller-manager => k8s.io/kube-controller-manager v0.26.4 k8s.io/kube-openapi => k8s.io/kube-openapi v0.0.0-20221012153701-172d655c2280 - k8s.io/kube-proxy => k8s.io/kube-proxy v0.26.3 - k8s.io/kube-scheduler => k8s.io/kube-scheduler v0.26.3 - k8s.io/kubectl => k8s.io/kubectl v0.26.3 - k8s.io/kubelet => k8s.io/kubelet v0.26.3 - k8s.io/legacy-cloud-providers => k8s.io/legacy-cloud-providers v0.26.3 - k8s.io/metrics => k8s.io/metrics v0.26.3 - k8s.io/node-api => k8s.io/node-api v0.26.3 - k8s.io/sample-apiserver => k8s.io/sample-apiserver v0.26.3 - k8s.io/sample-cli-plugin => k8s.io/sample-cli-plugin v0.26.3 - k8s.io/sample-controller => k8s.io/sample-controller v0.26.3 + k8s.io/kube-proxy => k8s.io/kube-proxy v0.26.4 + k8s.io/kube-scheduler => k8s.io/kube-scheduler v0.26.4 + k8s.io/kubectl => k8s.io/kubectl v0.26.4 + k8s.io/kubelet => k8s.io/kubelet v0.26.4 + k8s.io/legacy-cloud-providers => k8s.io/legacy-cloud-providers v0.26.4 + k8s.io/metrics => k8s.io/metrics v0.26.4 + k8s.io/node-api => k8s.io/node-api v0.26.4 + k8s.io/sample-apiserver => k8s.io/sample-apiserver v0.26.4 + k8s.io/sample-cli-plugin => k8s.io/sample-cli-plugin v0.26.4 + k8s.io/sample-controller => k8s.io/sample-controller v0.26.4 kubevirt.io/api => ../api ) diff --git a/staging/src/kubevirt.io/client-go/go.sum b/staging/src/kubevirt.io/client-go/go.sum index 3fcf63dc1..89daf9285 100644 --- a/staging/src/kubevirt.io/client-go/go.sum +++ b/staging/src/kubevirt.io/client-go/go.sum @@ -1668,17 +1668,17 @@ honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= howett.net/plist v0.0.0-20181124034731-591f970eefbb/go.mod h1:vMygbs4qMhSZSc4lCUl2OEE+rDiIIJAIdR4m7MiMcm0= -k8s.io/api v0.26.3 h1:emf74GIQMTik01Aum9dPP0gAypL8JTLl/lHa4V9RFSU= -k8s.io/api v0.26.3/go.mod h1:PXsqwPMXBSBcL1lJ9CYDKy7kIReUydukS5JiRlxC3qE= -k8s.io/apiextensions-apiserver v0.26.3 h1:5PGMm3oEzdB1W/FTMgGIDmm100vn7IaUP5er36dB+YE= -k8s.io/apiextensions-apiserver v0.26.3/go.mod h1:jdA5MdjNWGP+njw1EKMZc64xAT5fIhN6VJrElV3sfpQ= -k8s.io/apimachinery v0.26.3 h1:dQx6PNETJ7nODU3XPtrwkfuubs6w7sX0M8n61zHIV/k= -k8s.io/apimachinery v0.26.3/go.mod h1:ats7nN1LExKHvJ9TmwootT00Yz05MuYqPXEXaVeOy5I= -k8s.io/apiserver v0.26.3/go.mod h1:CJe/VoQNcXdhm67EvaVjYXxR3QyfwpceKPuPaeLibTA= -k8s.io/client-go v0.26.3 h1:k1UY+KXfkxV2ScEL3gilKcF7761xkYsSD6BC9szIu8s= -k8s.io/client-go v0.26.3/go.mod h1:ZPNu9lm8/dbRIPAgteN30RSXea6vrCpFvq+MateTUuQ= -k8s.io/code-generator v0.26.3/go.mod h1:ryaiIKwfxEJEaywEzx3dhWOydpVctKYbqLajJf0O8dI= -k8s.io/component-base v0.26.3/go.mod h1:5kj1kZYwSC6ZstHJN7oHBqcJC6yyn41eR+Sqa/mQc8E= +k8s.io/api v0.26.4 h1:qSG2PmtcD23BkYiWfoYAcak870eF/hE7NNYBYavTT94= +k8s.io/api v0.26.4/go.mod h1:WwKEXU3R1rgCZ77AYa7DFksd9/BAIKyOmRlbVxgvjCk= +k8s.io/apiextensions-apiserver v0.26.4 h1:9D2RTxYGxrG5uYg6D7QZRcykXvavBvcA59j5kTaedQI= +k8s.io/apiextensions-apiserver v0.26.4/go.mod h1:cd4uGFGIgzEqUghWpRsr9KE8j2KNTjY8Ji8pnMMazyw= +k8s.io/apimachinery v0.26.4 h1:rZccKdBLg9vP6J09JD+z8Yr99Ce8gk3Lbi9TCx05Jzs= +k8s.io/apimachinery v0.26.4/go.mod h1:ats7nN1LExKHvJ9TmwootT00Yz05MuYqPXEXaVeOy5I= +k8s.io/apiserver v0.26.4/go.mod h1:yAY3O1vBM4/0OIGAGeWcdfzQvgdwJ188VirLcuSAVnw= +k8s.io/client-go v0.26.4 h1:/7P/IbGBuT73A+G97trf44NTPSNqvuBREpOfdLbHvD4= +k8s.io/client-go v0.26.4/go.mod h1:6qOItWm3EwxJdl/8p5t7FWtWUOwyMdA8N9ekbW4idpI= +k8s.io/code-generator v0.26.4/go.mod h1:ryaiIKwfxEJEaywEzx3dhWOydpVctKYbqLajJf0O8dI= +k8s.io/component-base v0.26.4/go.mod h1:lTuWL1Xz/a4e80gmIC3YZG2JCO4xNwtKWHJWeJmsq20= k8s.io/gengo v0.0.0-20190907103519-ebc107f98eab/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= k8s.io/gengo v0.0.0-20210813121822-485abfe95c7c/go.mod h1:FiNAH4ZV3gBg2Kwh89tzAEV2be7d5xI0vBa/VySYy3E= k8s.io/gengo v0.0.0-20211129171323-c02415ce4185/go.mod h1:FiNAH4ZV3gBg2Kwh89tzAEV2be7d5xI0vBa/VySYy3E= @@ -1692,7 +1692,7 @@ k8s.io/klog/v2 v2.40.1/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0= k8s.io/klog/v2 v2.80.1/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0= k8s.io/klog/v2 v2.90.1 h1:m4bYOKall2MmOiRaR1J+We67Do7vm9KiQVlT96lnHUw= k8s.io/klog/v2 v2.90.1/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0= -k8s.io/kms v0.26.3/go.mod h1:69qGnf1NsFOQP07fBYqNLZklqEHSJF024JqYCaeVxHg= +k8s.io/kms v0.26.4/go.mod h1:69qGnf1NsFOQP07fBYqNLZklqEHSJF024JqYCaeVxHg= k8s.io/kube-openapi v0.0.0-20221012153701-172d655c2280 h1:+70TFaan3hfJzs+7VK2o+OGxg8HsuBr/5f6tVAjDu6E= k8s.io/kube-openapi v0.0.0-20221012153701-172d655c2280/go.mod h1:+Axhij7bCpeqhklhUTe3xmOn6bWxolyZEeyaFpjGtl4= k8s.io/utils v0.0.0-20190801114015-581e00157fb1/go.mod h1:sZAwmy6armz5eXlNoLmJcl4F1QuKu7sr+mFQ0byX7Ew= diff --git a/vendor/k8s.io/client-go/discovery/aggregated_discovery.go b/vendor/k8s.io/client-go/discovery/aggregated_discovery.go index 758b0a3ac..7470259dc 100644 --- a/vendor/k8s.io/client-go/discovery/aggregated_discovery.go +++ b/vendor/k8s.io/client-go/discovery/aggregated_discovery.go @@ -92,12 +92,18 @@ func convertAPIGroup(g apidiscovery.APIGroupDiscovery) ( resourceList := &metav1.APIResourceList{} resourceList.GroupVersion = gv.String() for _, r := range v.Resources { - resource := convertAPIResource(r) - resourceList.APIResources = append(resourceList.APIResources, resource) + resource, err := convertAPIResource(r) + if err == nil { + resourceList.APIResources = append(resourceList.APIResources, resource) + } // Subresources field in new format get transformed into full APIResources. + // It is possible a partial result with an error was returned to be used + // as the parent resource for the subresource. for _, subresource := range r.Subresources { - sr := convertAPISubresource(resource, subresource) - resourceList.APIResources = append(resourceList.APIResources, sr) + sr, err := convertAPISubresource(resource, subresource) + if err == nil { + resourceList.APIResources = append(resourceList.APIResources, sr) + } } } gvResources[gv] = resourceList @@ -105,30 +111,44 @@ func convertAPIGroup(g apidiscovery.APIGroupDiscovery) ( return group, gvResources, failedGVs } -// convertAPIResource tranforms a APIResourceDiscovery to an APIResource. -func convertAPIResource(in apidiscovery.APIResourceDiscovery) metav1.APIResource { - return metav1.APIResource{ +// convertAPIResource tranforms a APIResourceDiscovery to an APIResource. We are +// resilient to missing GVK, since this resource might be the parent resource +// for a subresource. If the parent is missing a GVK, it is not returned in +// discovery, and the subresource MUST have the GVK. +func convertAPIResource(in apidiscovery.APIResourceDiscovery) (metav1.APIResource, error) { + result := metav1.APIResource{ Name: in.Resource, SingularName: in.SingularResource, Namespaced: in.Scope == apidiscovery.ScopeNamespace, - Group: in.ResponseKind.Group, - Version: in.ResponseKind.Version, - Kind: in.ResponseKind.Kind, Verbs: in.Verbs, ShortNames: in.ShortNames, Categories: in.Categories, } + var err error + if in.ResponseKind != nil { + result.Group = in.ResponseKind.Group + result.Version = in.ResponseKind.Version + result.Kind = in.ResponseKind.Kind + } else { + err = fmt.Errorf("discovery resource %s missing GVK", in.Resource) + } + // Can return partial result with error, which can be the parent for a + // subresource. Do not add this result to the returned discovery resources. + return result, err } // convertAPISubresource tranforms a APISubresourceDiscovery to an APIResource. -func convertAPISubresource(parent metav1.APIResource, in apidiscovery.APISubresourceDiscovery) metav1.APIResource { - return metav1.APIResource{ - Name: fmt.Sprintf("%s/%s", parent.Name, in.Subresource), - SingularName: parent.SingularName, - Namespaced: parent.Namespaced, - Group: in.ResponseKind.Group, - Version: in.ResponseKind.Version, - Kind: in.ResponseKind.Kind, - Verbs: in.Verbs, +func convertAPISubresource(parent metav1.APIResource, in apidiscovery.APISubresourceDiscovery) (metav1.APIResource, error) { + result := metav1.APIResource{} + if in.ResponseKind == nil { + return result, fmt.Errorf("subresource %s/%s missing GVK", parent.Name, in.Subresource) } + result.Name = fmt.Sprintf("%s/%s", parent.Name, in.Subresource) + result.SingularName = parent.SingularName + result.Namespaced = parent.Namespaced + result.Group = in.ResponseKind.Group + result.Version = in.ResponseKind.Version + result.Kind = in.ResponseKind.Kind + result.Verbs = in.Verbs + return result, nil } diff --git a/vendor/k8s.io/client-go/tools/cache/controller.go b/vendor/k8s.io/client-go/tools/cache/controller.go index 0762da3be..96005ff58 100644 --- a/vendor/k8s.io/client-go/tools/cache/controller.go +++ b/vendor/k8s.io/client-go/tools/cache/controller.go @@ -353,17 +353,6 @@ func NewIndexerInformer( return clientState, newInformer(lw, objType, resyncPeriod, h, clientState, nil) } -// TransformFunc allows for transforming an object before it will be processed -// and put into the controller cache and before the corresponding handlers will -// be called on it. -// TransformFunc (similarly to ResourceEventHandler functions) should be able -// to correctly handle the tombstone of type cache.DeletedFinalStateUnknown -// -// The most common usage pattern is to clean-up some parts of the object to -// reduce component memory usage if a given component doesn't care about them. -// given controller doesn't care for them -type TransformFunc func(interface{}) (interface{}, error) - // NewTransformingInformer returns a Store and a controller for populating // the store while also providing event notifications. You should only used // the returned Store for Get/List operations; Add/Modify/Deletes will cause @@ -411,19 +400,11 @@ func processDeltas( // Object which receives event notifications from the given deltas handler ResourceEventHandler, clientState Store, - transformer TransformFunc, deltas Deltas, ) error { // from oldest to newest for _, d := range deltas { obj := d.Object - if transformer != nil { - var err error - obj, err = transformer(obj) - if err != nil { - return err - } - } switch d.Type { case Sync, Replaced, Added, Updated: @@ -475,6 +456,7 @@ func newInformer( fifo := NewDeltaFIFOWithOptions(DeltaFIFOOptions{ KnownObjects: clientState, EmitDeltaTypeReplaced: true, + Transformer: transformer, }) cfg := &Config{ @@ -486,7 +468,7 @@ func newInformer( Process: func(obj interface{}) error { if deltas, ok := obj.(Deltas); ok { - return processDeltas(h, clientState, transformer, deltas) + return processDeltas(h, clientState, deltas) } return errors.New("object given as Process argument is not Deltas") }, diff --git a/vendor/k8s.io/client-go/tools/cache/delta_fifo.go b/vendor/k8s.io/client-go/tools/cache/delta_fifo.go index 0c13a41f0..84f3ab9ca 100644 --- a/vendor/k8s.io/client-go/tools/cache/delta_fifo.go +++ b/vendor/k8s.io/client-go/tools/cache/delta_fifo.go @@ -51,6 +51,10 @@ type DeltaFIFOOptions struct { // When true, `Replaced` events will be sent for items passed to a Replace() call. // When false, `Sync` events will be sent instead. EmitDeltaTypeReplaced bool + + // If set, will be called for objects before enqueueing them. Please + // see the comment on TransformFunc for details. + Transformer TransformFunc } // DeltaFIFO is like FIFO, but differs in two ways. One is that the @@ -129,8 +133,32 @@ type DeltaFIFO struct { // emitDeltaTypeReplaced is whether to emit the Replaced or Sync // DeltaType when Replace() is called (to preserve backwards compat). emitDeltaTypeReplaced bool + + // Called with every object if non-nil. + transformer TransformFunc } +// TransformFunc allows for transforming an object before it will be processed. +// TransformFunc (similarly to ResourceEventHandler functions) should be able +// to correctly handle the tombstone of type cache.DeletedFinalStateUnknown. +// +// New in v1.27: In such cases, the contained object will already have gone +// through the transform object separately (when it was added / updated prior +// to the delete), so the TransformFunc can likely safely ignore such objects +// (i.e., just return the input object). +// +// The most common usage pattern is to clean-up some parts of the object to +// reduce component memory usage if a given component doesn't care about them. +// +// New in v1.27: unless the object is a DeletedFinalStateUnknown, TransformFunc +// sees the object before any other actor, and it is now safe to mutate the +// object in place instead of making a copy. +// +// Note that TransformFunc is called while inserting objects into the +// notification queue and is therefore extremely performance sensitive; please +// do not do anything that will take a long time. +type TransformFunc func(interface{}) (interface{}, error) + // DeltaType is the type of a change (addition, deletion, etc) type DeltaType string @@ -227,6 +255,7 @@ func NewDeltaFIFOWithOptions(opts DeltaFIFOOptions) *DeltaFIFO { knownObjects: opts.KnownObjects, emitDeltaTypeReplaced: opts.EmitDeltaTypeReplaced, + transformer: opts.Transformer, } f.cond.L = &f.lock return f @@ -411,6 +440,21 @@ func (f *DeltaFIFO) queueActionLocked(actionType DeltaType, obj interface{}) err if err != nil { return KeyError{obj, err} } + + // Every object comes through this code path once, so this is a good + // place to call the transform func. If obj is a + // DeletedFinalStateUnknown tombstone, then the containted inner object + // will already have gone through the transformer, but we document that + // this can happen. In cases involving Replace(), such an object can + // come through multiple times. + if f.transformer != nil { + var err error + obj, err = f.transformer(obj) + if err != nil { + return err + } + } + oldDeltas := f.items[id] newDeltas := append(oldDeltas, Delta{actionType, obj}) newDeltas = dedupDeltas(newDeltas) @@ -566,12 +610,11 @@ func (f *DeltaFIFO) Pop(process PopProcessFunc) (interface{}, error) { // using the Sync or Replace DeltaType and then (2) it does some deletions. // In particular: for every pre-existing key K that is not the key of // an object in `list` there is the effect of -// `Delete(DeletedFinalStateUnknown{K, O})` where O is current object -// of K. If `f.knownObjects == nil` then the pre-existing keys are -// those in `f.items` and the current object of K is the `.Newest()` -// of the Deltas associated with K. Otherwise the pre-existing keys -// are those listed by `f.knownObjects` and the current object of K is -// what `f.knownObjects.GetByKey(K)` returns. +// `Delete(DeletedFinalStateUnknown{K, O})` where O is the latest known +// object of K. The pre-existing keys are those in the union set of the keys in +// `f.items` and `f.knownObjects` (if not nil). The last known object for key K is +// the one present in the last delta in `f.items`. If there is no delta for K +// in `f.items`, it is the object in `f.knownObjects` func (f *DeltaFIFO) Replace(list []interface{}, _ string) error { f.lock.Lock() defer f.lock.Unlock() @@ -595,51 +638,23 @@ func (f *DeltaFIFO) Replace(list []interface{}, _ string) error { } } - if f.knownObjects == nil { - // Do deletion detection against our own list. - queuedDeletions := 0 - for k, oldItem := range f.items { - if keys.Has(k) { - continue - } - // Delete pre-existing items not in the new list. - // This could happen if watch deletion event was missed while - // disconnected from apiserver. - var deletedObj interface{} - if n := oldItem.Newest(); n != nil { - deletedObj = n.Object - } - queuedDeletions++ - if err := f.queueActionLocked(Deleted, DeletedFinalStateUnknown{k, deletedObj}); err != nil { - return err - } - } - - if !f.populated { - f.populated = true - // While there shouldn't be any queued deletions in the initial - // population of the queue, it's better to be on the safe side. - f.initialPopulationCount = keys.Len() + queuedDeletions - } - - return nil - } - - // Detect deletions not already in the queue. - knownKeys := f.knownObjects.ListKeys() + // Do deletion detection against objects in the queue queuedDeletions := 0 - for _, k := range knownKeys { + for k, oldItem := range f.items { if keys.Has(k) { continue } - - deletedObj, exists, err := f.knownObjects.GetByKey(k) - if err != nil { - deletedObj = nil - klog.Errorf("Unexpected error %v during lookup of key %v, placing DeleteFinalStateUnknown marker without object", err, k) - } else if !exists { - deletedObj = nil - klog.Infof("Key %v does not exist in known objects store, placing DeleteFinalStateUnknown marker without object", k) + // Delete pre-existing items not in the new list. + // This could happen if watch deletion event was missed while + // disconnected from apiserver. + var deletedObj interface{} + if n := oldItem.Newest(); n != nil { + deletedObj = n.Object + + // if the previous object is a DeletedFinalStateUnknown, we have to extract the actual Object + if d, ok := deletedObj.(DeletedFinalStateUnknown); ok { + deletedObj = d.Obj + } } queuedDeletions++ if err := f.queueActionLocked(Deleted, DeletedFinalStateUnknown{k, deletedObj}); err != nil { @@ -647,6 +662,32 @@ func (f *DeltaFIFO) Replace(list []interface{}, _ string) error { } } + if f.knownObjects != nil { + // Detect deletions for objects not present in the queue, but present in KnownObjects + knownKeys := f.knownObjects.ListKeys() + for _, k := range knownKeys { + if keys.Has(k) { + continue + } + if len(f.items[k]) > 0 { + continue + } + + deletedObj, exists, err := f.knownObjects.GetByKey(k) + if err != nil { + deletedObj = nil + klog.Errorf("Unexpected error %v during lookup of key %v, placing DeleteFinalStateUnknown marker without object", err, k) + } else if !exists { + deletedObj = nil + klog.Infof("Key %v does not exist in known objects store, placing DeleteFinalStateUnknown marker without object", k) + } + queuedDeletions++ + if err := f.queueActionLocked(Deleted, DeletedFinalStateUnknown{k, deletedObj}); err != nil { + return err + } + } + } + if !f.populated { f.populated = true f.initialPopulationCount = keys.Len() + queuedDeletions diff --git a/vendor/k8s.io/client-go/tools/cache/shared_informer.go b/vendor/k8s.io/client-go/tools/cache/shared_informer.go index f5c7316a1..4979642ce 100644 --- a/vendor/k8s.io/client-go/tools/cache/shared_informer.go +++ b/vendor/k8s.io/client-go/tools/cache/shared_informer.go @@ -198,10 +198,7 @@ type SharedInformer interface { // // Must be set before starting the informer. // - // Note: Since the object given to the handler may be already shared with - // other goroutines, it is advisable to copy the object being - // transform before mutating it at all and returning the copy to prevent - // data races. + // Please see the comment on TransformFunc for more details. SetTransform(handler TransformFunc) error // IsStopped reports whether the informer has already been stopped. @@ -422,6 +419,7 @@ func (s *sharedIndexInformer) Run(stopCh <-chan struct{}) { fifo := NewDeltaFIFOWithOptions(DeltaFIFOOptions{ KnownObjects: s.indexer, EmitDeltaTypeReplaced: true, + Transformer: s.transform, }) cfg := &Config{ @@ -585,7 +583,7 @@ func (s *sharedIndexInformer) HandleDeltas(obj interface{}) error { defer s.blockDeltas.Unlock() if deltas, ok := obj.(Deltas); ok { - return processDeltas(s, s.indexer, s.transform, deltas) + return processDeltas(s, s.indexer, deltas) } return errors.New("object given as Process argument is not Deltas") } diff --git a/vendor/modules.txt b/vendor/modules.txt index 2806f50a8..a863ab45f 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -658,7 +658,7 @@ gopkg.in/yaml.v2 # gopkg.in/yaml.v3 v3.0.1 ## explicit gopkg.in/yaml.v3 -# k8s.io/api v0.27.1 => k8s.io/api v0.26.3 +# k8s.io/api v0.27.1 => k8s.io/api v0.26.4 ## explicit; go 1.19 k8s.io/api/admission/v1 k8s.io/api/admissionregistration/v1 @@ -712,7 +712,7 @@ k8s.io/api/scheduling/v1beta1 k8s.io/api/storage/v1 k8s.io/api/storage/v1alpha1 k8s.io/api/storage/v1beta1 -# k8s.io/apiextensions-apiserver v0.26.3 => k8s.io/apiextensions-apiserver v0.26.3 +# k8s.io/apiextensions-apiserver v0.26.4 => k8s.io/apiextensions-apiserver v0.26.4 ## explicit; go 1.19 k8s.io/apiextensions-apiserver/pkg/apis/apiextensions k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1 @@ -724,7 +724,7 @@ k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/typed/apiextension k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/typed/apiextensions/v1/fake k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/typed/apiextensions/v1beta1 k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/typed/apiextensions/v1beta1/fake -# k8s.io/apimachinery v0.27.1 => k8s.io/apimachinery v0.26.3 +# k8s.io/apimachinery v0.27.1 => k8s.io/apimachinery v0.26.4 ## explicit; go 1.19 k8s.io/apimachinery/pkg/api/equality k8s.io/apimachinery/pkg/api/errors @@ -777,7 +777,7 @@ k8s.io/apimachinery/pkg/watch k8s.io/apimachinery/third_party/forked/golang/json k8s.io/apimachinery/third_party/forked/golang/netutil k8s.io/apimachinery/third_party/forked/golang/reflect -# k8s.io/client-go v12.0.0+incompatible => k8s.io/client-go v0.26.3 +# k8s.io/client-go v12.0.0+incompatible => k8s.io/client-go v0.26.4 ## explicit; go 1.19 k8s.io/client-go/applyconfigurations/admissionregistration/v1 k8s.io/client-go/applyconfigurations/admissionregistration/v1alpha1 @@ -1096,7 +1096,7 @@ k8s.io/klog/v2/internal/clock k8s.io/klog/v2/internal/dbg k8s.io/klog/v2/internal/serialize k8s.io/klog/v2/internal/severity -# k8s.io/kube-aggregator v0.26.3 => k8s.io/kube-aggregator v0.26.3 +# k8s.io/kube-aggregator v0.26.4 => k8s.io/kube-aggregator v0.26.4 ## explicit; go 1.19 k8s.io/kube-aggregator/pkg/apis/apiregistration k8s.io/kube-aggregator/pkg/apis/apiregistration/v1 @@ -1124,7 +1124,7 @@ k8s.io/kube-openapi/pkg/util k8s.io/kube-openapi/pkg/util/proto k8s.io/kube-openapi/pkg/validation/errors k8s.io/kube-openapi/pkg/validation/spec -# k8s.io/kubectl v0.0.0-00010101000000-000000000000 => k8s.io/kubectl v0.26.3 +# k8s.io/kubectl v0.0.0-00010101000000-000000000000 => k8s.io/kubectl v0.26.4 ## explicit; go 1.19 k8s.io/kubectl/pkg/cmd/util/podcmd # k8s.io/utils v0.0.0-20230505201702-9f6742963106 @@ -1253,32 +1253,32 @@ sigs.k8s.io/yaml # github.com/openshift/api => github.com/openshift/api v0.0.0-20191219222812-2987a591a72c # github.com/openshift/client-go => github.com/openshift/client-go v0.0.0-20210112165513-ebc401615f47 # github.com/operator-framework/operator-lifecycle-manager => github.com/operator-framework/operator-lifecycle-manager v0.0.0-20190128024246-5eb7ae5bdb7a -# k8s.io/api => k8s.io/api v0.26.3 -# k8s.io/apiextensions-apiserver => k8s.io/apiextensions-apiserver v0.26.3 -# k8s.io/apimachinery => k8s.io/apimachinery v0.26.3 -# k8s.io/apiserver => k8s.io/apiserver v0.26.3 -# k8s.io/cli-runtime => k8s.io/cli-runtime v0.26.3 -# k8s.io/client-go => k8s.io/client-go v0.26.3 -# k8s.io/cloud-provider => k8s.io/cloud-provider v0.26.3 -# k8s.io/cluster-bootstrap => k8s.io/cluster-bootstrap v0.26.3 -# k8s.io/code-generator => k8s.io/code-generator v0.26.3 -# k8s.io/component-base => k8s.io/component-base v0.26.3 -# k8s.io/cri-api => k8s.io/cri-api v0.26.3 -# k8s.io/csi-translation-lib => k8s.io/csi-translation-lib v0.26.3 +# k8s.io/api => k8s.io/api v0.26.4 +# k8s.io/apiextensions-apiserver => k8s.io/apiextensions-apiserver v0.26.4 +# k8s.io/apimachinery => k8s.io/apimachinery v0.26.4 +# k8s.io/apiserver => k8s.io/apiserver v0.26.4 +# k8s.io/cli-runtime => k8s.io/cli-runtime v0.26.4 +# k8s.io/client-go => k8s.io/client-go v0.26.4 +# k8s.io/cloud-provider => k8s.io/cloud-provider v0.26.4 +# k8s.io/cluster-bootstrap => k8s.io/cluster-bootstrap v0.26.4 +# k8s.io/code-generator => k8s.io/code-generator v0.26.4 +# k8s.io/component-base => k8s.io/component-base v0.26.4 +# k8s.io/cri-api => k8s.io/cri-api v0.26.4 +# k8s.io/csi-translation-lib => k8s.io/csi-translation-lib v0.26.4 # k8s.io/klog => k8s.io/klog v0.4.0 -# k8s.io/kube-aggregator => k8s.io/kube-aggregator v0.26.3 -# k8s.io/kube-controller-manager => k8s.io/kube-controller-manager v0.26.3 +# k8s.io/kube-aggregator => k8s.io/kube-aggregator v0.26.4 +# k8s.io/kube-controller-manager => k8s.io/kube-controller-manager v0.26.4 # k8s.io/kube-openapi => k8s.io/kube-openapi v0.0.0-20221012153701-172d655c2280 -# k8s.io/kube-proxy => k8s.io/kube-proxy v0.26.3 -# k8s.io/kube-scheduler => k8s.io/kube-scheduler v0.26.3 -# k8s.io/kubectl => k8s.io/kubectl v0.26.3 -# k8s.io/kubelet => k8s.io/kubelet v0.26.3 -# k8s.io/legacy-cloud-providers => k8s.io/legacy-cloud-providers v0.26.3 -# k8s.io/metrics => k8s.io/metrics v0.26.3 -# k8s.io/node-api => k8s.io/node-api v0.26.3 -# k8s.io/sample-apiserver => k8s.io/sample-apiserver v0.26.3 -# k8s.io/sample-cli-plugin => k8s.io/sample-cli-plugin v0.26.3 -# k8s.io/sample-controller => k8s.io/sample-controller v0.26.3 +# k8s.io/kube-proxy => k8s.io/kube-proxy v0.26.4 +# k8s.io/kube-scheduler => k8s.io/kube-scheduler v0.26.4 +# k8s.io/kubectl => k8s.io/kubectl v0.26.4 +# k8s.io/kubelet => k8s.io/kubelet v0.26.4 +# k8s.io/legacy-cloud-providers => k8s.io/legacy-cloud-providers v0.26.4 +# k8s.io/metrics => k8s.io/metrics v0.26.4 +# k8s.io/node-api => k8s.io/node-api v0.26.4 +# k8s.io/sample-apiserver => k8s.io/sample-apiserver v0.26.4 +# k8s.io/sample-cli-plugin => k8s.io/sample-cli-plugin v0.26.4 +# k8s.io/sample-controller => k8s.io/sample-controller v0.26.4 # kubevirt.io/api => ./staging/src/kubevirt.io/api # kubevirt.io/client-go => ./staging/src/kubevirt.io/client-go # sigs.k8s.io/controller-runtime => sigs.k8s.io/controller-runtime v0.6.2 -- 2.41.0