From 845b4cd4098904584c848f999941c823c15dddb8 Mon Sep 17 00:00:00 2001 From: Adrien Trouillaud Date: Mon, 29 Jun 2020 13:03:50 -0700 Subject: [PATCH] upgrade k8s libs to 1.18.4 --- .circleci/config.yml | 3 - Makefile | 6 +- .../internal/commands/root/root.go | 2 +- go.mod | 53 ++++--- go.sum | 132 +++++++++++------- internal/test/e2e/framework/node.go | 19 +-- internal/test/e2e/framework/pod.go | 42 +++--- internal/test/e2e/framework/stats.go | 5 +- node/lifecycle_test.go | 32 ++--- node/node.go | 14 +- node/node_test.go | 42 +++--- node/pod.go | 6 +- scripts/validate/check_version.sh | 38 ----- test/e2e/basic.go | 73 ++++++---- test/e2e/node.go | 6 +- 15 files changed, 240 insertions(+), 233 deletions(-) delete mode 100755 scripts/validate/check_version.sh diff --git a/.circleci/config.yml b/.circleci/config.yml index 69c69efde..f7d586910 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -25,9 +25,6 @@ jobs: - run: name: Dependencies command: scripts/validate/gomod.sh - - run: - name: Kubernetes dependency pinning - command: ./scripts/validate/check_version.sh - save_cache: key: validate-{{ checksum "go.mod" }}-{{ checksum "go.sum" }} paths: diff --git a/Makefile b/Makefile index 2ada10b51..ec084e741 100644 --- a/Makefile +++ b/Makefile @@ -51,7 +51,7 @@ release: build goreleaser ##### =====> Utility targets <===== ##### -.PHONY: clean test list cover format docker check_version +.PHONY: clean test list cover format docker mod: @echo "Prune Dependencies..." $Q go mod tidy @@ -119,10 +119,6 @@ format: goimports $Q find . -iname \*.go | grep -v \ -e "^$$" $(addprefix -e ,$(IGNORED_PACKAGES)) | xargs $(gobin_tool) -run $(goimports) -w -check_version: mod - @echo "Checking kubernetes dependency version pinning" - ./scripts/validate/check_version.sh - ##### =====> Internals <===== ##### .PHONY: setup diff --git a/cmd/virtual-kubelet/internal/commands/root/root.go b/cmd/virtual-kubelet/internal/commands/root/root.go index 6cb1dbb22..d8d5fc7de 100644 --- a/cmd/virtual-kubelet/internal/commands/root/root.go +++ b/cmd/virtual-kubelet/internal/commands/root/root.go @@ -161,7 +161,7 @@ func runRootCommand(ctx context.Context, s *provider.Store, c Opts) error { log.G(ctx).Debug("node not found") newNode := pNode.DeepCopy() newNode.ResourceVersion = "" - _, err = client.CoreV1().Nodes().Create(newNode) + _, err = client.CoreV1().Nodes().Create(ctx, newNode, metav1.CreateOptions{}) if err != nil { return err } diff --git a/go.mod b/go.mod index 9c57aa0ac..040e31030 100644 --- a/go.mod +++ b/go.mod @@ -10,7 +10,6 @@ require ( github.com/elazarl/goproxy/ext v0.0.0-20190711103511-473e67f1d7d2 // indirect github.com/golang/groupcache v0.0.0-20181024230925-c65c006176ff // indirect github.com/google/go-cmp v0.3.1 - github.com/googleapis/gnostic v0.1.0 // indirect github.com/gorilla/mux v1.7.0 github.com/konsorten/go-windows-terminal-sequences v1.0.2 // indirect github.com/mitchellh/go-homedir v1.1.0 @@ -20,53 +19,53 @@ require ( github.com/spf13/cobra v0.0.5 github.com/spf13/pflag v1.0.5 go.opencensus.io v0.21.0 - golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456 + golang.org/x/sys v0.0.0-20191022100944-742c48ecaeb7 gotest.tools v2.2.0+incompatible - k8s.io/api v0.0.0 - k8s.io/apimachinery v0.0.0 - k8s.io/client-go v0.0.0 + k8s.io/api v0.18.4 + k8s.io/apimachinery v0.18.4 + k8s.io/client-go v0.18.4 k8s.io/klog v1.0.0 - k8s.io/kubernetes v1.17.6 + k8s.io/kubernetes v1.18.4 ) -replace k8s.io/legacy-cloud-providers => github.com/kubernetes/kubernetes/staging/src/k8s.io/legacy-cloud-providers v0.0.0-20200520130745-d32e40e20d16 +replace k8s.io/legacy-cloud-providers => k8s.io/legacy-cloud-providers v0.18.4 -replace k8s.io/cloud-provider => github.com/kubernetes/kubernetes/staging/src/k8s.io/cloud-provider v0.0.0-20200520130745-d32e40e20d16 +replace k8s.io/cloud-provider => k8s.io/cloud-provider v0.18.4 -replace k8s.io/cli-runtime => github.com/kubernetes/kubernetes/staging/src/k8s.io/cli-runtime v0.0.0-20200520130745-d32e40e20d16 +replace k8s.io/cli-runtime => k8s.io/cli-runtime v0.18.4 -replace k8s.io/apiserver => github.com/kubernetes/kubernetes/staging/src/k8s.io/apiserver v0.0.0-20200520130745-d32e40e20d16 +replace k8s.io/apiserver => k8s.io/apiserver v0.18.4 -replace k8s.io/csi-translation-lib => github.com/kubernetes/kubernetes/staging/src/k8s.io/csi-translation-lib v0.0.0-20200520130745-d32e40e20d16 +replace k8s.io/csi-translation-lib => k8s.io/csi-translation-lib v0.18.4 -replace k8s.io/cri-api => github.com/kubernetes/kubernetes/staging/src/k8s.io/cri-api v0.0.0-20200520130745-d32e40e20d16 +replace k8s.io/cri-api => k8s.io/cri-api v0.18.4 -replace k8s.io/kube-aggregator => github.com/kubernetes/kubernetes/staging/src/k8s.io/kube-aggregator v0.0.0-20200520130745-d32e40e20d16 +replace k8s.io/kube-aggregator => k8s.io/kube-aggregator v0.18.4 -replace k8s.io/kubelet => github.com/kubernetes/kubernetes/staging/src/k8s.io/kubelet v0.0.0-20200520130745-d32e40e20d16 +replace k8s.io/kubelet => k8s.io/kubelet v0.18.4 -replace k8s.io/kube-controller-manager => github.com/kubernetes/kubernetes/staging/src/k8s.io/kube-controller-manager v0.0.0-20200520130745-d32e40e20d16 +replace k8s.io/kube-controller-manager => k8s.io/kube-controller-manager v0.18.4 -replace k8s.io/apimachinery => github.com/kubernetes/kubernetes/staging/src/k8s.io/apimachinery v0.0.0-20200520130745-d32e40e20d16 +replace k8s.io/apimachinery => k8s.io/apimachinery v0.18.4 -replace k8s.io/cluster-bootstrap => github.com/kubernetes/kubernetes/staging/src/k8s.io/cluster-bootstrap v0.0.0-20200520130745-d32e40e20d16 +replace k8s.io/cluster-bootstrap => k8s.io/cluster-bootstrap v0.18.4 -replace k8s.io/kube-proxy => github.com/kubernetes/kubernetes/staging/src/k8s.io/kube-proxy v0.0.0-20200520130745-d32e40e20d16 +replace k8s.io/kube-proxy => k8s.io/kube-proxy v0.18.4 -replace k8s.io/component-base => github.com/kubernetes/kubernetes/staging/src/k8s.io/component-base v0.0.0-20200520130745-d32e40e20d16 +replace k8s.io/component-base => k8s.io/component-base v0.18.4 -replace k8s.io/kube-scheduler => github.com/kubernetes/kubernetes/staging/src/k8s.io/kube-scheduler v0.0.0-20200520130745-d32e40e20d16 +replace k8s.io/kube-scheduler => k8s.io/kube-scheduler v0.18.4 -replace k8s.io/apiextensions-apiserver => github.com/kubernetes/kubernetes/staging/src/k8s.io/apiextensions-apiserver v0.0.0-20200520130745-d32e40e20d16 +replace k8s.io/apiextensions-apiserver => k8s.io/apiextensions-apiserver v0.18.4 -replace k8s.io/metrics => github.com/kubernetes/kubernetes/staging/src/k8s.io/metrics v0.0.0-20200520130745-d32e40e20d16 +replace k8s.io/metrics => k8s.io/metrics v0.18.4 -replace k8s.io/sample-apiserver => github.com/kubernetes/kubernetes/staging/src/k8s.io/sample-apiserver v0.0.0-20200520130745-d32e40e20d16 +replace k8s.io/sample-apiserver => k8s.io/sample-apiserver v0.18.4 -replace k8s.io/code-generator => github.com/kubernetes/kubernetes/staging/src/k8s.io/code-generator v0.0.0-20200520130745-d32e40e20d16 +replace k8s.io/code-generator => k8s.io/code-generator v0.18.4 -replace k8s.io/client-go => github.com/kubernetes/kubernetes/staging/src/k8s.io/client-go v0.0.0-20200520130745-d32e40e20d16 +replace k8s.io/client-go => k8s.io/client-go v0.18.4 -replace k8s.io/kubectl => github.com/kubernetes/kubernetes/staging/src/k8s.io/kubectl v0.0.0-20200520130745-d32e40e20d16 +replace k8s.io/kubectl => k8s.io/kubectl v0.18.4 -replace k8s.io/api => github.com/kubernetes/kubernetes/staging/src/k8s.io/api v0.0.0-20200520130745-d32e40e20d16 +replace k8s.io/api => k8s.io/api v0.18.4 diff --git a/go.sum b/go.sum index 60e56f34c..534890f59 100644 --- a/go.sum +++ b/go.sum @@ -23,7 +23,7 @@ github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym github.com/GoogleCloudPlatform/k8s-cloud-provider v0.0.0-20190822182118-27a4ced34534/go.mod h1:iroGtC8B3tQiqtds1l+mgk/BBOrxbqjH+eUfFQYRc14= github.com/JeffAshton/win_pdh v0.0.0-20161109143554-76bb4ee9f0ab/go.mod h1:3VYc5hodBMJ5+l/7J4xAyMeuM2PNuepvHlGs8yilUCA= github.com/MakeNowJust/heredoc v0.0.0-20170808103936-bb23615498cd/go.mod h1:64YHyfSL2R96J44Nlwm39UHepQbyR5q10x7iYa1ks2E= -github.com/Microsoft/go-winio v0.4.11/go.mod h1:VhR8bwka0BXejwEJY73c50VrPtXAaKcyvVC4A4RozmA= +github.com/Microsoft/go-winio v0.4.14/go.mod h1:qXqCSQ3Xa7+6tgxaGTIe4Kpcdsi+P8jBhyzoq1bpyYA= github.com/Microsoft/hcsshim v0.0.0-20190417211021-672e52e9209d/go.mod h1:Op3hHsoHPAvb6lceZHDtd9OkTew38wNoXnJs8iY7rUg= github.com/NYTimes/gziphandler v0.0.0-20170623195520-56545f4a5d46/go.mod h1:3wb06e3pkSAbeQ52E9H9iFoQsEEwGN64994WTCIhntQ= github.com/OpenPeeDeeP/depguard v1.0.0/go.mod h1:7/4sitnI9YlQgTLLk734QlzXT8DuHVnAyztLplQjk+o= @@ -40,6 +40,7 @@ github.com/Shopify/sarama v1.19.0/go.mod h1:FVkBWblsNy7DGZRfXLU0O9RCGt5g3g3yEuWX github.com/Shopify/toxiproxy v2.1.4+incompatible/go.mod h1:OXgGpZ6Cli1/URJOF1DMxUHB2q5Ap20/P/eIdh4G0pI= github.com/StackExchange/wmi v0.0.0-20180116203802-5d049714c4a6/go.mod h1:3eOhrUMpNV+6aFIbp5/iudMxNCF27Vw2OZgy4xEx0Fg= github.com/agnivade/levenshtein v1.0.1/go.mod h1:CURSv5d9Uaml+FovSIICkLbAUZ9S4RqaHDIsdSBg7lM= +github.com/ajstarks/svgo v0.0.0-20180226025133-644b8db467af/go.mod h1:K08gAheRH3/J6wwsYMMT4xOr94bZjxIelGM0+d/wbFw= github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= github.com/andreyvit/diff v0.0.0-20170406064948-c7f18ee00883/go.mod h1:rCTlJbsFo29Kk6CurOXKm700vrz8f0KW0JNfpkRJY/8= @@ -51,7 +52,7 @@ github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5 github.com/asaskevich/govalidator v0.0.0-20180720115003-f9ffefc3facf/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY= github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY= github.com/auth0/go-jwt-middleware v0.0.0-20170425171159-5493cabe49f7/go.mod h1:LWMyo4iOLWXHGdBki7NIht1kHru/0wM179h+d3g8ATM= -github.com/aws/aws-sdk-go v1.16.26/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= +github.com/aws/aws-sdk-go v1.28.2/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= github.com/bazelbuild/bazel-gazelle v0.18.2/go.mod h1:D0ehMSbS+vesFsLGiD6JXu3mVEzOlfUl8wNnq+x/9p0= github.com/bazelbuild/bazel-gazelle v0.19.1-0.20191105222053-70208cbdc798 h1:1pcd3bq1rC5X4nz56fdK0oQrz9CZup6DGZl8isCPthk= github.com/bazelbuild/bazel-gazelle v0.19.1-0.20191105222053-70208cbdc798/go.mod h1:rPwzNHUqEzngx1iVBfO/2X2npKaT3tqPqqHW6rVsn/A= @@ -73,11 +74,14 @@ github.com/caddyserver/caddy v1.0.3/go.mod h1:G+ouvOY32gENkJC+jhgl62TyhvqEsFaDiZ github.com/cenkalti/backoff v2.1.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= github.com/census-instrumentation/opencensus-proto v0.2.0 h1:LzQXZOgg4CQfE6bFvXGM30YZL1WW/M337pXml+GrcZ4= github.com/census-instrumentation/opencensus-proto v0.2.0/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= +github.com/census-instrumentation/opencensus-proto v0.2.1 h1:glEXhBS5PSLLv4IXzLA5yPRVX4bilULVyxxbrfOtDAk= +github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/cespare/prettybench v0.0.0-20150116022406-03b8cfe5406c h1:p8i+qCbr/dNhS2FoQhRpSS7X5+IlxTa94nRNYXu4fyo= github.com/cespare/prettybench v0.0.0-20150116022406-03b8cfe5406c/go.mod h1:Xe6ZsFhtM8HrDku0pxJ3/Lr51rwykrzgFwpmTzleatY= github.com/chai2010/gettext-go v0.0.0-20160711120539-c6fed771bfd5/go.mod h1:/iP1qXHoty45bqomnu2LM+VVyAEdWN+vtSHGlQgyxbw= -github.com/checkpoint-restore/go-criu v0.0.0-20190109184317-bdb7599cd87b/go.mod h1:TrMrLQfeENAPYPRsJuq3jsqdlRh3lvi6trTZJG8+tho= +github.com/checkpoint-restore/go-criu v0.0.0-20181120144056-17b0214f6c48/go.mod h1:TrMrLQfeENAPYPRsJuq3jsqdlRh3lvi6trTZJG8+tho= github.com/cheekybits/genny v0.0.0-20170328200008-9127e812e1e9/go.mod h1:+tQajlRqAUrPI7DOSpB0XAqZYtQakVtB7wXkRAgjxjQ= +github.com/cilium/ebpf v0.0.0-20191025125908-95b36a581eed/go.mod h1:MA5e5Lr8slmEg9bt0VpxxWqJlO4iwu3FBdHUzV7wQVg= github.com/client9/misspell v0.3.4 h1:ta993UF76GwbvJcIo3Y68y/M3WxlpEHPWIGDkJYwzJI= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= github.com/clusterhq/flocker-go v0.0.0-20160920122132-2b8b7259d313/go.mod h1:P1wt9Z3DP8O6W3rvwCt0REIlshg1InHImaLW0t3ObY0= @@ -88,7 +92,7 @@ github.com/containerd/console v0.0.0-20170925154832-84eeaae905fa/go.mod h1:Tj/on github.com/containerd/containerd v1.0.2/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= github.com/containerd/typeurl v0.0.0-20190228175220-2a93cfde8c20/go.mod h1:Cm3kwCdlkCfMSHURc+r6fwoGH6/F1hH3S4sg0rLFWPc= github.com/containernetworking/cni v0.7.1/go.mod h1:LGwApLUm2FpoOfxTDEeq8T9ipbpZ61X79hmU3w8FmsY= -github.com/coredns/corefile-migration v1.0.4/go.mod h1:OFwBp/Wc9dJt5cAZzHWMNhK1r5L0p0jDwIBc6j8NC8E= +github.com/coredns/corefile-migration v1.0.6/go.mod h1:OFwBp/Wc9dJt5cAZzHWMNhK1r5L0p0jDwIBc6j8NC8E= github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= github.com/coreos/go-etcd v2.0.0+incompatible/go.mod h1:Jez6KQU2B/sWsbdaef3ED8NzMklzPG4d5KIOhIy30Tk= github.com/coreos/go-oidc v2.1.0+incompatible/go.mod h1:CgnwVTmzoESiwO9qyAFEMiHoZ1nMCKZlZ9V6mm3/LKc= @@ -113,7 +117,6 @@ github.com/docker/docker v0.7.3-0.20190327010347-be7ac8be2ae0/go.mod h1:eEKB0N0r github.com/docker/go-connections v0.3.0/go.mod h1:Gbd7IOopHjR8Iph03tsViu4nIes5XhDvyHbTtUxmeec= github.com/docker/go-units v0.3.3/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= github.com/docker/go-units v0.4.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= -github.com/docker/libnetwork v0.8.0-dev.2.0.20190624125649-f0e46a78ea34/go.mod h1:93m0aTqz6z+g32wla4l4WxTrdtvBRmVzYRkYvasA5Z8= github.com/docker/spdystream v0.0.0-20160310174837-449fdfce4d96/go.mod h1:Qh8CwZgvJUkLughtfhJv5dyTYa91l1fOUCrgjqmcifM= github.com/docker/spdystream v0.0.0-20170912183627-bc6354cbbc29 h1:llBx5m8Gk0lrAaiLud2wktkX/e8haX7Ru0oVfQqtZQ4= github.com/docker/spdystream v0.0.0-20170912183627-bc6354cbbc29/go.mod h1:Qh8CwZgvJUkLughtfhJv5dyTYa91l1fOUCrgjqmcifM= @@ -122,7 +125,7 @@ github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25Kn github.com/eapache/go-resiliency v1.1.0/go.mod h1:kFI+JgMyC7bLPUVY133qvEBtVayf5mFgVsvEsIPBvNs= github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21/go.mod h1:+020luEh2TKB4/GOp8oxxtq0Daoen/Cii55CzbTV6DU= github.com/eapache/queue v1.1.0/go.mod h1:6eCeP0CKFpHLu8blIFXhExK/dRa7WDZfr6jVFPTqq+I= -github.com/elazarl/goproxy v0.0.0-20170405201442-c4fc26588b6e/go.mod h1:/Zj4wYkgs4iZTTu3o/KG3Itv/qCCa8VVMlb3i9OVuzc= +github.com/elazarl/goproxy v0.0.0-20180725130230-947c36da3153/go.mod h1:/Zj4wYkgs4iZTTu3o/KG3Itv/qCCa8VVMlb3i9OVuzc= github.com/elazarl/goproxy v0.0.0-20190421051319-9d40249d3c2f h1:8GDPb0tCY8LQ+OJ3dbHb5sA6YZWXFORQYZx5sdsTlMs= github.com/elazarl/goproxy v0.0.0-20190421051319-9d40249d3c2f/go.mod h1:/Zj4wYkgs4iZTTu3o/KG3Itv/qCCa8VVMlb3i9OVuzc= github.com/elazarl/goproxy/ext v0.0.0-20190711103511-473e67f1d7d2 h1:dWB6v3RcOy03t/bUadywsbyrQwCqZeNIEX6M1OtSZOM= @@ -130,6 +133,8 @@ github.com/elazarl/goproxy/ext v0.0.0-20190711103511-473e67f1d7d2/go.mod h1:gNh8 github.com/emicklei/go-restful v0.0.0-20170410110728-ff4f55a20633/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= github.com/emicklei/go-restful v2.9.5+incompatible h1:spTtZBk5DYEvbxMVutUuTyh1Ao2r4iyvLdACqsl/Ljk= github.com/emicklei/go-restful v2.9.5+incompatible/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= +github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= +github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/euank/go-kmsg-parser v2.0.0+incompatible/go.mod h1:MhmAMZ8V4CYH4ybgdRwPr2TU5ThnS43puaKEMpja1uw= github.com/evanphx/json-patch v4.2.0+incompatible h1:fUDGZCv/7iAN7u0puUVhvKCcsR6vRfwrJatElLBEf0I= github.com/evanphx/json-patch v4.2.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= @@ -138,6 +143,7 @@ github.com/fatih/camelcase v1.0.0/go.mod h1:yN2Sb0lFhZJUdVvtELVWefmrXpuZESvPmqwo github.com/fatih/color v1.6.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/flynn/go-shlex v0.0.0-20150515145356-3f9db97f8568/go.mod h1:xEzjJPgXI435gkrCt3MPfRiAkVrwSbHsst4LCFVfpJc= +github.com/fogleman/gg v1.2.1-0.20190220221249-0403632d5b90/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k= github.com/fsnotify/fsnotify v1.4.7 h1:IXs+QLmnXW2CcXuY+8Mzv/fWEsPGWxqefPtCP5CnV9I= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/ghodss/yaml v0.0.0-20150909031657-73d445a93680/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= @@ -221,8 +227,9 @@ github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7a github.com/gogo/protobuf v1.2.0/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= github.com/gogo/protobuf v1.2.1 h1:/s5zKNz0uPFCZ5hddgPdo2TK2TVrUNMn0OOX8/aZMTE= github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= -github.com/gogo/protobuf v1.2.2-0.20190723190241-65acae22fc9d h1:3PaI8p3seN09VjbTYC/QWlUZdZ1qS1zGjy7LH2Wt07I= -github.com/gogo/protobuf v1.2.2-0.20190723190241-65acae22fc9d/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= +github.com/gogo/protobuf v1.3.1 h1:DqDEcV5aeaTmdFBePNpYsp3FlcVH/2ISVVM9Qf8PSls= +github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= +github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0/go.mod h1:E/TSTwGwJL78qG/PmXZO1EjYhfJinVAhrmmHX6Z8B9k= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b h1:VKtxabqXZkF25pY9ekfRL6a582T4P37/31XEstQ5p58= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= @@ -231,6 +238,7 @@ github.com/golang/groupcache v0.0.0-20181024230925-c65c006176ff/go.mod h1:cIg4er github.com/golang/mock v1.0.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= github.com/golang/protobuf v0.0.0-20161109072736-4bd1920723d7/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.1 h1:YF8+flBXS5eO826T4nzqPrxfhQThhXl0YzfuUPu4SBg= @@ -269,6 +277,8 @@ github.com/google/go-github v17.0.0+incompatible/go.mod h1:zLgOLi98H3fifZn+44m+u github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck= github.com/google/gofuzz v1.0.0 h1:A8PeW59pxE9IoFRqBp37U+mSNaQoZ46F1f0f863XSXw= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/gofuzz v1.1.0 h1:Hsa8mG0dQ46ij8Sl2AYJDUv1oA9/d6Vk+3LG99Oe02g= +github.com/google/gofuzz v1.1.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= @@ -325,6 +335,7 @@ github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024 h1:rBMNdl github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= +github.com/jung-kurt/gofpdf v1.0.3-0.20190309125859-24315acbbda5/go.mod h1:7Id9E/uU8ce6rXgefFLlgrJj/GYY22cpxn+r32jIOes= github.com/karrick/godirwalk v1.7.5/go.mod h1:2c9FRhkDxdIbgkOnCEvnSWs71Bhugbl46shStcFDJ34= github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= @@ -345,34 +356,6 @@ github.com/kr/pty v1.1.3/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/pty v1.1.5/go.mod h1:9r2w37qlBe7rQ6e1fg1S/9xpWHSnaqNdHD3WcMdbPDA= github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= -github.com/kubernetes/kubernetes/staging/src/k8s.io/api v0.0.0-20200520130745-d32e40e20d16 h1:q8jMzOlW0yNCj4FtOxV28PIcnpUAWLoGgfCz76BLYQI= -github.com/kubernetes/kubernetes/staging/src/k8s.io/api v0.0.0-20200520130745-d32e40e20d16/go.mod h1:D7sf1F7GAHEK5DOn11dKP5J/QJvUShU2AopXe/AXghk= -github.com/kubernetes/kubernetes/staging/src/k8s.io/apiextensions-apiserver v0.0.0-20200520130745-d32e40e20d16 h1:NWK48JTGA78CaMnoS8y8Gv99fCpuGjQRFqN3YbCUn9w= -github.com/kubernetes/kubernetes/staging/src/k8s.io/apiextensions-apiserver v0.0.0-20200520130745-d32e40e20d16/go.mod h1:t7xE4B3a1No++QbRlihSWT6HFc2hJeKY7tD3hVzUH04= -github.com/kubernetes/kubernetes/staging/src/k8s.io/apimachinery v0.0.0-20200520130745-d32e40e20d16 h1:xv1Y2PRIQX3ZghQsvAZlrsb1DWccDoR5KvngxKTFstc= -github.com/kubernetes/kubernetes/staging/src/k8s.io/apimachinery v0.0.0-20200520130745-d32e40e20d16/go.mod h1:taMyc4h48+UPMRovJrRfC7MgDI0U2Z3DUNmL2qk7dPI= -github.com/kubernetes/kubernetes/staging/src/k8s.io/apiserver v0.0.0-20200520130745-d32e40e20d16 h1:qoFDov8iewHMndIdV/udyIVG3/9pGoeVC9q+t1aHTt4= -github.com/kubernetes/kubernetes/staging/src/k8s.io/apiserver v0.0.0-20200520130745-d32e40e20d16/go.mod h1:AmxuajVungCpgugaLjEnDfRRORiF/6rbjrHbn5wh3L0= -github.com/kubernetes/kubernetes/staging/src/k8s.io/cli-runtime v0.0.0-20200520130745-d32e40e20d16/go.mod h1:2j76SpnTiazjWbdidJY0tDtSLe6k0tY2v3vV9TLV6Cg= -github.com/kubernetes/kubernetes/staging/src/k8s.io/client-go v0.0.0-20200520130745-d32e40e20d16 h1:/y2ZgHIGCyD3Vc1sqYAzqeq1SnKbvPhNhy+WmKYU79c= -github.com/kubernetes/kubernetes/staging/src/k8s.io/client-go v0.0.0-20200520130745-d32e40e20d16/go.mod h1:+QIvGyz23uoE7vc5HTEaIY0e+/jnfJsZHMoP+gSi7Xs= -github.com/kubernetes/kubernetes/staging/src/k8s.io/cloud-provider v0.0.0-20200520130745-d32e40e20d16/go.mod h1:ycFddVBapK98UCwexOuDsvQLD3tfiVdRlXm2jjNP14c= -github.com/kubernetes/kubernetes/staging/src/k8s.io/cluster-bootstrap v0.0.0-20200520130745-d32e40e20d16/go.mod h1:45LXh7SMJ3p4QnHER5TrOGhYz0CWcjb3xyq6aQqnebk= -github.com/kubernetes/kubernetes/staging/src/k8s.io/code-generator v0.0.0-20200520130745-d32e40e20d16 h1:Nam5qtjAg1K8GfgSt8ixg1AMKC6+yRv9odDs9+bMjKU= -github.com/kubernetes/kubernetes/staging/src/k8s.io/code-generator v0.0.0-20200520130745-d32e40e20d16/go.mod h1:SSBU1UzegXPz71t1XwnyfZzhclthC7gz/GVmpj7dezI= -github.com/kubernetes/kubernetes/staging/src/k8s.io/component-base v0.0.0-20200520130745-d32e40e20d16 h1:yNvjnw/r8Ki6y71N80+3ILePtQntW5UqpMkxG2xajh8= -github.com/kubernetes/kubernetes/staging/src/k8s.io/component-base v0.0.0-20200520130745-d32e40e20d16/go.mod h1:cTBtMr/eUcihQ4sFhgiDPlmlFpn1xBY37yQ+zNcT1IE= -github.com/kubernetes/kubernetes/staging/src/k8s.io/cri-api v0.0.0-20200520130745-d32e40e20d16/go.mod h1:MFtntPG6S7PSTqf06WHsjhdZ/gOTxfzFgNEzfhO5Uus= -github.com/kubernetes/kubernetes/staging/src/k8s.io/csi-translation-lib v0.0.0-20200520130745-d32e40e20d16/go.mod h1:k7r//UcXL2LipyGNpT/v/LG7Dsa9wILmaV4XyRhIPF4= -github.com/kubernetes/kubernetes/staging/src/k8s.io/kube-aggregator v0.0.0-20200520130745-d32e40e20d16/go.mod h1:oiCmE5poHbGfbkdIVMoITelay3hTqhonrn8EPg9c4kM= -github.com/kubernetes/kubernetes/staging/src/k8s.io/kube-controller-manager v0.0.0-20200520130745-d32e40e20d16/go.mod h1:mKHow8zS1GpDcLHlAgghj2BKPOZrpEIHA30lWyRF3gg= -github.com/kubernetes/kubernetes/staging/src/k8s.io/kube-proxy v0.0.0-20200520130745-d32e40e20d16/go.mod h1:6SB+e2ragxZ8CPWrgNZ7F9KkCFykx5zQjnLVP2SWQ00= -github.com/kubernetes/kubernetes/staging/src/k8s.io/kube-scheduler v0.0.0-20200520130745-d32e40e20d16/go.mod h1:8rHmgUeQCsvaVrSy79lQc3DKD5PQp9cJH0DLw2GSAdk= -github.com/kubernetes/kubernetes/staging/src/k8s.io/kubectl v0.0.0-20200520130745-d32e40e20d16/go.mod h1:QVBaKxqCuT0pnHRSXIuEmra3WEUm38r14pOxewEXA5I= -github.com/kubernetes/kubernetes/staging/src/k8s.io/kubelet v0.0.0-20200520130745-d32e40e20d16/go.mod h1:oHq6KV/WjiamPxKs2Np7JxcOEwHXfMybRBnLrMsTOHs= -github.com/kubernetes/kubernetes/staging/src/k8s.io/legacy-cloud-providers v0.0.0-20200520130745-d32e40e20d16/go.mod h1:/Ay7JUxnDftnjC20qd2wU13RQSAi6jsvdbx5P3g+Rig= -github.com/kubernetes/kubernetes/staging/src/k8s.io/metrics v0.0.0-20200520130745-d32e40e20d16/go.mod h1:e70DTGI+y72YcU8iGDifilyP5uW6sPmBflDEjtiH/p0= -github.com/kubernetes/kubernetes/staging/src/k8s.io/sample-apiserver v0.0.0-20200520130745-d32e40e20d16/go.mod h1:Aa3q34X2DLzqzugHP1xGSjJsPsaWdzhexM9Thk/AG7g= github.com/kylelemons/godebug v0.0.0-20170820004349-d65d576e9348/go.mod h1:B69LEHPfb2qLo0BaaOLcbitczOKLWTsrBG9LczfCD4k= github.com/libopenstorage/openstorage v1.0.0/go.mod h1:Sp1sIObHjat1BeXhfMqLZ14wnOzEhNx2YQedreMcUyc= github.com/liggitt/tabwriter v0.0.0-20181228230101-89fcab3d43de/go.mod h1:zAbeS9B/r2mtpb6U+EI2rYA5OAXxsYw6wTamcNW+zcE= @@ -423,7 +406,7 @@ github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lN github.com/modern-go/reflect2 v1.0.1 h1:9f412s+6RmYXLWZSEzVVgPGK7C2PphHj5RJrvfx9AWI= github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/mohae/deepcopy v0.0.0-20170603005431-491d3605edfb/go.mod h1:TaXosZuwdSHYgviHp1DAtfrULt5eUgsSMsZf+YrPgl8= -github.com/morikuni/aec v0.0.0-20170113033406-39771216ff4c/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc= +github.com/morikuni/aec v1.0.0/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc= github.com/mozilla/tls-observatory v0.0.0-20180409132520-8791a200eb40/go.mod h1:SrKMQvPiws7F7iqYp8/TX+IhxCYhzr6N/1yb8cwHsGk= github.com/mrunalp/fileutils v0.0.0-20171103030105-7d4729fb3618/go.mod h1:x8F1gnqOkIEiO4rqoeEEEqQbo7HjGMTvyoq3gej4iT0= github.com/munnerz/goautoneg v0.0.0-20120707110453-a547fc61f48d/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= @@ -441,8 +424,8 @@ github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+W github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.8.0 h1:VkHVNpR4iVnU8XQR6DBm8BqYjN7CRzw+xKUbVVbbW9w= github.com/onsi/ginkgo v1.8.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.10.1 h1:q/mM8GF/n0shIN8SaAZ0V+jnLPzen6WIVZdiwrRlMlo= -github.com/onsi/ginkgo v1.10.1/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.11.0 h1:JAKSXpt1YjtLA7YpPiqO9ss6sNXEsPfSGdwN0UHqzrw= +github.com/onsi/ginkgo v1.11.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/gomega v0.0.0-20170829124025-dcabb60a477c/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= github.com/onsi/gomega v1.4.2/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= @@ -452,7 +435,7 @@ github.com/onsi/gomega v1.7.0 h1:XPnZz8VVBHjVsy1vzJmRwIcSwiUO+JFfrv/xGiigmME= github.com/onsi/gomega v1.7.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= github.com/opencontainers/go-digest v1.0.0-rc1/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= github.com/opencontainers/image-spec v1.0.1/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0= -github.com/opencontainers/runc v1.0.0-rc9/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U= +github.com/opencontainers/runc v1.0.0-rc10/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U= github.com/opencontainers/runtime-spec v1.0.0/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= github.com/opencontainers/selinux v1.3.1-0.20190929122143-5215b1806f52/go.mod h1:+BLncwf63G4dgOzykXAxcmnFlUaOlkDdmw/CqsW6pjs= github.com/openzipkin/zipkin-go v0.1.6/go.mod h1:QgAqvLzwWbR/WpD4A3cGpPtJrZXNIiJc5AZX7/PBEpw= @@ -479,6 +462,9 @@ github.com/prometheus/client_model v0.0.0-20190115171406-56726106282f h1:BVwpUVJ github.com/prometheus/client_model v0.0.0-20190115171406-56726106282f/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90 h1:S/YWwWx/RA8rT8tKFRuGUZhuA90OyIBpPCXkcbwU8DE= github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/client_model v0.2.0 h1:uq5h0d+GuxiXLJLNABMgp2qUWDPiLvgCzz2dUR+/W/M= +github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/common v0.2.0 h1:kUZDBDTdBVBYBj5Tmh2NZLlF60mfjA27rM34b+cVwNU= github.com/prometheus/common v0.2.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.4.1 h1:K0MGApIoQvMw27RTdJkPbr3JZ7DNbtxQNyi5STVM6Kw= @@ -511,10 +497,11 @@ github.com/shurcooL/go-goon v0.0.0-20170922171312-37c2f522c041/go.mod h1:N5mDOms github.com/sirupsen/logrus v1.0.5/go.mod h1:pMByvHTf9Beacp5x1UXfOR9xyW/9antXMhjMPG0dEzc= github.com/sirupsen/logrus v1.0.6/go.mod h1:pMByvHTf9Beacp5x1UXfOR9xyW/9antXMhjMPG0dEzc= github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= +github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q= github.com/sirupsen/logrus v1.4.2 h1:SPIRibHv4MatM3XXNO2BJeFLZwZ2LvZgfQ5+UNI2im4= github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= -github.com/smartystreets/goconvey v0.0.0-20190330032615-68dc04aab96a/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= +github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= github.com/sourcegraph/go-diff v0.5.1/go.mod h1:j2dHj3m8aZgQO8lMTcTnBcXkRRRqi34cd2MNlA9u1mE= github.com/spf13/afero v1.1.0/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= @@ -598,10 +585,13 @@ golang.org/x/crypto v0.0.0-20190611184440-5c40567a22f8/go.mod h1:yigFU9vqHzYiE8U golang.org/x/crypto v0.0.0-20190617133340-57b3e21c3d56/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200220183623-bac4c82f6975 h1:/Tl7pH94bvbAAHBdZJT947M/+gp0+CqQXDtMRC0fseo= golang.org/x/crypto v0.0.0-20200220183623-bac4c82f6975/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20180807140117-3d87b88a115f/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190125153040-c74c464bbbf2/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190312203227-4b39c73a6495 h1:I6A9Ag9FpEKOjcKrRNjQkPHawoXIhKyTGfvvjFAiiAk= golang.org/x/exp v0.0.0-20190312203227-4b39c73a6495/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= +golang.org/x/image v0.0.0-20180708004352-c73c2afc3b81/go.mod h1:ux5Hcp/YLpHSI86hEcLt0YII63i6oz57MZXIpbrjZUs= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= @@ -676,6 +666,8 @@ golang.org/x/sys v0.0.0-20190616124812-15dcb6c0061f/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20190813064441-fde4db37ae7a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456 h1:ng0gs1AKnRRuEMZoTLLlbOd+C17zUDepwGQBb/n+JVg= golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191022100944-742c48ecaeb7 h1:HmbHVPwrPEKPGLAcHSrMe6+hqSUlvZU0rab6x5EXfGU= +golang.org/x/sys v0.0.0-20191022100944-742c48ecaeb7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/text v0.0.0-20160726164857-2910a502d2bf/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.0.0-20170915090833-1cbadb444a80/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -707,6 +699,7 @@ golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3 golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190322203728-c1a832b0ad89/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190521203540-521d6ed310dd/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= @@ -717,11 +710,14 @@ golang.org/x/tools v0.0.0-20190909030654-5b82db07426d/go.mod h1:b+2E5dAYhXwXZwtn golang.org/x/tools v0.0.0-20190920225731-5eefd052ad72 h1:bw9doJza/SFBEweII/rHQh338oozWyiFsBRHtrflcws= golang.org/x/tools v0.0.0-20190920225731-5eefd052ad72/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +gonum.org/v1/gonum v0.0.0-20180816165407-929014505bf4/go.mod h1:Y+Yx5eoAFn32cQvJDxZx5Dpnq+c3wtXuadVZAcxbbBo= gonum.org/v1/gonum v0.0.0-20190331200053-3d26580ed485 h1:OB/uP/Puiu5vS5QMRPrXCDWUPb+kt8f1KW8oQzFejQw= gonum.org/v1/gonum v0.0.0-20190331200053-3d26580ed485/go.mod h1:2ltnJ7xHfj0zHS40VVPYEAAMTa3ZGguvHGBSJeRWqE0= +gonum.org/v1/gonum v0.6.2/go.mod h1:9mxDZsDKxgMAuccQkewq682L+0eCu4dCN2yonUJTCLU= gonum.org/v1/netlib v0.0.0-20190313105609-8cb42192e0e0/go.mod h1:wa6Ws7BG/ESfp6dHfk7C6KdzKA7wR7u/rKwOGE66zvw= gonum.org/v1/netlib v0.0.0-20190331212654-76723241ea4e h1:jRyg0XfpwWlhEV8mDfdNGBeSJM2fuyh9Yjrnd8kF2Ts= gonum.org/v1/netlib v0.0.0-20190331212654-76723241ea4e/go.mod h1:kS+toOQn6AQKjmKJ7gzohV1XkqsFehRA2FbsbkopSuQ= +gonum.org/v1/plot v0.0.0-20190515093506-e2840ee46a6b/go.mod h1:Wt8AAjI+ypCyYX3nZBvf6cAIx93T+c/OS2HFAYskSZc= google.golang.org/api v0.3.1/go.mod h1:6wY9I6uQWHQ8EM57III9mq/AjF+i8G65rmVagqKMtkk= google.golang.org/api v0.3.2 h1:iTp+3yyl/KOtxa/d1/JUE0GGSoR6FuW5udver22iwpw= google.golang.org/api v0.3.2/go.mod h1:6wY9I6uQWHQ8EM57III9mq/AjF+i8G65rmVagqKMtkk= @@ -737,12 +733,17 @@ google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRn google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873 h1:nfPFGzJkUDX6uBmpN/pSw7MbOAWegH5QDQuoXFHedLg= google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55 h1:gSJIx1SDwno+2ElGhA4+qG2zF97qiUzTM+rQ0klBOcE= +google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.19.1/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= +google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.23.1 h1:q4XQuHFC6I28BKZpo6IYyb3mNO+l7lSOxRuYTCiDfXk= google.golang.org/grpc v1.23.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= +google.golang.org/grpc v1.26.0 h1:2dTRdpdFEEhJYQD8EMLB61nnrzSCTbG38PhqdhvOltg= +google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= gopkg.in/airbrake/gobrake.v2 v2.0.9/go.mod h1:/h5ZAUhDkGaJfjzjKLSjv6zCL6O0LLBxU4K+aSYdM/U= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= @@ -781,23 +782,48 @@ honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWh honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.1-2019.2.2/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= +k8s.io/api v0.18.4 h1:8x49nBRxuXGUlDlwlWd3RMY1SayZrzFfxea3UZSkFw4= +k8s.io/api v0.18.4/go.mod h1:lOIQAKYgai1+vz9J7YcDZwC26Z0zQewYOGWdyIPUUQ4= +k8s.io/apiextensions-apiserver v0.18.4/go.mod h1:NYeyeYq4SIpFlPxSAB6jHPIdvu3hL0pc36wuRChybio= +k8s.io/apimachinery v0.18.4 h1:ST2beySjhqwJoIFk6p7Hp5v5O0hYY6Gngq/gUYXTPIA= +k8s.io/apimachinery v0.18.4/go.mod h1:OaXp26zu/5J7p0f92ASynJa1pZo06YlV9fG7BoWbCko= +k8s.io/apiserver v0.18.4 h1:pn1jSQkfboPSirZopkVpEdLW4FcQLnYMaIY8LFxxj30= +k8s.io/apiserver v0.18.4/go.mod h1:q+zoFct5ABNnYkGIaGQ3bcbUNdmPyOCoEBcg51LChY8= +k8s.io/cli-runtime v0.18.4/go.mod h1:9/hS/Cuf7NVzWR5F/5tyS6xsnclxoPLVtwhnkJG1Y4g= +k8s.io/client-go v0.18.4 h1:un55V1Q/B3JO3A76eS0kUSywgGK/WR3BQ8fHQjNa6Zc= +k8s.io/client-go v0.18.4/go.mod h1:f5sXwL4yAZRkAtzOxRWUhA/N8XzGCb+nPZI8PfobZ9g= +k8s.io/cloud-provider v0.18.4/go.mod h1:JdI6cuSFPSPANEciv0v5qfwztkeyFCVc1S3krLYrw0E= +k8s.io/cluster-bootstrap v0.18.4/go.mod h1:hNG705ec9SMN2BGlJ81R2CnyJjNKfROtAxvI9JXZdiM= +k8s.io/code-generator v0.18.4/go.mod h1:TgNEVx9hCyPGpdtCWA34olQYLkh3ok9ar7XfSsr8b6c= +k8s.io/component-base v0.18.4 h1:Kr53Fp1iCGNsl9Uv4VcRvLy7YyIqi9oaJOQ7SXtKI98= +k8s.io/component-base v0.18.4/go.mod h1:7jr/Ef5PGmKwQhyAz/pjByxJbC58mhKAhiaDu0vXfPk= +k8s.io/cri-api v0.18.4/go.mod h1:OJtpjDvfsKoLGhvcc0qfygved0S0dGX56IJzPbqTG1s= +k8s.io/csi-translation-lib v0.18.4/go.mod h1:FTci2m8/3oN8E+8OyblBXei8w4mwbiH4boNPeob4piE= k8s.io/gengo v0.0.0-20190128074634-0689ccc1d7d6/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= -k8s.io/gengo v0.0.0-20190822140433-26a664648505 h1:ZY6yclUKVbZ+SdWnkfY+Je5vrMpKOxmGeKRbsXVmqYM= -k8s.io/gengo v0.0.0-20190822140433-26a664648505/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= +k8s.io/gengo v0.0.0-20200114144118-36b2048a9120/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= k8s.io/heapster v1.2.0-beta.1/go.mod h1:h1uhptVXMwC8xtZBYsPXKVi8fpdlYkTs6k949KozGrM= k8s.io/klog v0.0.0-20181102134211-b9b56d5dfc92/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk= k8s.io/klog v0.3.0/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk= k8s.io/klog v1.0.0 h1:Pt+yjF5aB1xDSVbau4VsWe+dQNzA0qv1LlXdC2dF6Q8= k8s.io/klog v1.0.0/go.mod h1:4Bi6QPql/J/LkTDqv7R/cd3hPo4k2DG6Ptcz060Ez5I= -k8s.io/kube-openapi v0.0.0-20200410145947-bcb3869e6f29 h1:NeQXVJ2XFSkRoPzRo8AId01ZER+j8oV4SZADT4iBOXQ= -k8s.io/kube-openapi v0.0.0-20200410145947-bcb3869e6f29/go.mod h1:F+5wygcW0wmRTnM3cOgIqGivxkwSWIWT5YdsDbeAOaU= -k8s.io/kubernetes v1.17.6 h1:tkIRyxVvzOn8f4dA7kah0TBMALcn8T/boJpHu+B8pkc= -k8s.io/kubernetes v1.17.6/go.mod h1:GpyQ+yngwJdtG0MRkt+xbAS7oBj3OZ4mIWIjy6SIjws= +k8s.io/kube-aggregator v0.18.4/go.mod h1:xOVy4wqhpivXCt07Diwdms2gonG+SONVx+1e7O+GfC0= +k8s.io/kube-controller-manager v0.18.4/go.mod h1:GrY1S0F7zA0LQlt0ApOLt4iMpphKTk3mFrQl1+usrfs= +k8s.io/kube-openapi v0.0.0-20200410145947-61e04a5be9a6 h1:Oh3Mzx5pJ+yIumsAD0MOECPVeXsVot0UkiaCGVyfGQY= +k8s.io/kube-openapi v0.0.0-20200410145947-61e04a5be9a6/go.mod h1:GRQhZsXIAJ1xR0C9bd8UpWHZ5plfAS9fzPjJuQ6JL3E= +k8s.io/kube-proxy v0.18.4/go.mod h1:h2c+ckQC1XpybDs53mWhLCvvM6txduWVLPQwwvGqR9M= +k8s.io/kube-scheduler v0.18.4/go.mod h1:vRFb/8Yi7hh670beaPrXttMpjt7H8EooDkgwFm8ts4k= +k8s.io/kubectl v0.18.4/go.mod h1:EzB+nfeUWk6fm6giXQ8P4Fayw3dsN+M7Wjy23mTRtB0= +k8s.io/kubelet v0.18.4/go.mod h1:D0V9JYaTJRF+ry+9JfnM4uyg3ySRLQ02XjfQ5f2u4CM= +k8s.io/kubernetes v1.18.4 h1:AYtJ24PIT91P1K8ekCrvay8LK8WctWhC5+NI0HZ8sqE= +k8s.io/kubernetes v1.18.4/go.mod h1:Efg82S+Ti02A/Mww53bxroc7IgzX2bgPsf6hT8gAs3M= +k8s.io/legacy-cloud-providers v0.18.4/go.mod h1:Mnxtra7DxVrODfGZHPsrkLi22lwmZOlWkjyyO3vW+WM= +k8s.io/metrics v0.18.4/go.mod h1:luze4fyI9JG4eLDZy0kFdYEebqNfi0QrG4xNEbPkHOs= k8s.io/repo-infra v0.0.1-alpha.1 h1:2us1n30u3cOcoPsacNfCvCssS9B9Yldr1ZGOdK0728U= k8s.io/repo-infra v0.0.1-alpha.1/go.mod h1:wO1t9WaB99V80ljbeENTnayuEEwNZt7gECYh/CEyOJ8= +k8s.io/sample-apiserver v0.18.4/go.mod h1:j5XH5FUmMd/ztoz+9ch0+hL+lsvWdgxnTV7l3P3Ijoo= k8s.io/system-validators v1.0.4/go.mod h1:HgSgTg4NAGNoYYjKsUyk52gdNi2PVDswQ9Iyn66R7NI= -k8s.io/utils v0.0.0-20191114184206-e782cd3c129f h1:GiPwtSzdP43eI1hpPCbROQCCIgCuiMMNF8YUVLF3vJo= -k8s.io/utils v0.0.0-20191114184206-e782cd3c129f/go.mod h1:sZAwmy6armz5eXlNoLmJcl4F1QuKu7sr+mFQ0byX7Ew= +k8s.io/utils v0.0.0-20200324210504-a9aa75ae1b89 h1:d4vVOjXm687F1iLSP2q3lyPPuyvTUt3aVoBpi2DqRsU= +k8s.io/utils v0.0.0-20200324210504-a9aa75ae1b89/go.mod h1:sZAwmy6armz5eXlNoLmJcl4F1QuKu7sr+mFQ0byX7Ew= modernc.org/cc v1.0.0/go.mod h1:1Sk4//wdnYJiUIxnW8ddKpaOJCF37yAdqYnkxUpaYxw= modernc.org/golex v1.0.0/go.mod h1:b/QX9oBD/LhixY6NDh+IdGv17hgB+51fET1i2kPSmvk= modernc.org/mathutil v1.0.0/go.mod h1:wU0vUrJsVWBZ4P6e7xtFJEhFSNsfRLJ8H458uRjg03k= @@ -806,9 +832,15 @@ modernc.org/xc v1.0.0/go.mod h1:mRNCo0bvLjGhHO9WsyuKVU4q0ceiDDDoEeWDJHrNx8I= mvdan.cc/interfacer v0.0.0-20180901003855-c20040233aed/go.mod h1:Xkxe497xwlCKkIaQYRfC7CSLworTXY9RMqwhhCm+8Nc= mvdan.cc/lint v0.0.0-20170908181259-adc824a0674b/go.mod h1:2odslEg/xrtNQqCYg2/jCoyKnw3vv5biOc3JnIcYfL4= mvdan.cc/unparam v0.0.0-20190209190245-fbb59629db34/go.mod h1:H6SUd1XjIs+qQCyskXg5OFSrilMRUkD8ePJpHKDPaeY= +rsc.io/pdf v0.1.1/go.mod h1:n8OzWcQ6Sp37PL01nO98y4iUCRdTGarVfzxY20ICaU4= +sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.7/go.mod h1:PHgbrJT7lCHcxMU+mDHEm+nx46H4zuuHZkDP6icnhu0= sigs.k8s.io/kustomize v2.0.3+incompatible/go.mod h1:MkjgH3RdOWrievjo6c9T245dYlB5QeXV4WCbnt/PEpU= -sigs.k8s.io/structured-merge-diff/v2 v2.0.1/go.mod h1:Wb7vfKAodbKgf6tn1Kl0VvGj7mRH6DGaRcixXEJXTsE= +sigs.k8s.io/structured-merge-diff/v3 v3.0.0-20200116222232-67a7b8c61874/go.mod h1:PlARxl6Hbt/+BC80dRLi1qAmnMqwqDg62YvvVkZjemw= +sigs.k8s.io/structured-merge-diff/v3 v3.0.0 h1:dOmIZBMfhcHS09XZkMyUgkq5trg3/jRyJYFZUiaOp8E= +sigs.k8s.io/structured-merge-diff/v3 v3.0.0/go.mod h1:PlARxl6Hbt/+BC80dRLi1qAmnMqwqDg62YvvVkZjemw= sigs.k8s.io/yaml v1.1.0 h1:4A07+ZFc2wgJwo8YNlQpr1rVlgUDlxXHhPJciaPY5gs= sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o= +sigs.k8s.io/yaml v1.2.0 h1:kr/MCeFWJWTwyaHoR9c8EjH9OumOmoF9YGiZd7lFm/Q= +sigs.k8s.io/yaml v1.2.0/go.mod h1:yfXDCHCao9+ENCvLSE62v9VSji2MKu5jeNfTrofGhJc= sourcegraph.com/sqs/pbtypes v0.0.0-20180604144634-d3ebe8f20ae4/go.mod h1:ketZ/q3QxT9HOBeFhu6RdvsftgpsbFHBF5Cas6cDKZ0= vbom.ml/util v0.0.0-20160121211510-db5cfe13f5cc/go.mod h1:so/NYdZXCz+E3ZpW0uAoCj6uzU2+8OWDFv/HxUSs7kI= diff --git a/internal/test/e2e/framework/node.go b/internal/test/e2e/framework/node.go index 4ded8496f..68079f790 100644 --- a/internal/test/e2e/framework/node.go +++ b/internal/test/e2e/framework/node.go @@ -16,23 +16,24 @@ import ( // WaitUntilNodeCondition establishes a watch on the vk node. // Then, it waits for the specified condition function to be verified. func (f *Framework) WaitUntilNodeCondition(fn watch.ConditionFunc) error { + // Watch for updates to the Pod resource until fn is satisfied, or until the timeout is reached. + ctx, cancel := context.WithTimeout(context.Background(), f.WatchTimeout) + defer cancel() + // Create a field selector that matches the specified Pod resource. fs := fields.OneTermEqualSelector("metadata.name", f.NodeName).String() // Create a ListWatch so we can receive events for the matched Pod resource. lw := &cache.ListWatch{ ListFunc: func(options metav1.ListOptions) (runtime.Object, error) { options.FieldSelector = fs - return f.KubeClient.CoreV1().Nodes().List(options) + return f.KubeClient.CoreV1().Nodes().List(ctx, options) }, WatchFunc: func(options metav1.ListOptions) (watchapi.Interface, error) { options.FieldSelector = fs - return f.KubeClient.CoreV1().Nodes().Watch(options) + return f.KubeClient.CoreV1().Nodes().Watch(ctx, options) }, } - // Watch for updates to the Pod resource until fn is satisfied, or until the timeout is reached. - ctx, cancel := context.WithTimeout(context.Background(), f.WatchTimeout) - defer cancel() last, err := watch.UntilWithSync(ctx, lw, &corev1.Node{}, nil, fn) if err != nil { return err @@ -44,17 +45,17 @@ func (f *Framework) WaitUntilNodeCondition(fn watch.ConditionFunc) error { } // DeleteNode deletes the vk node used by the framework -func (f *Framework) DeleteNode() error { +func (f *Framework) DeleteNode(ctx context.Context) error { var gracePeriod int64 propagation := metav1.DeletePropagationBackground opts := metav1.DeleteOptions{ PropagationPolicy: &propagation, GracePeriodSeconds: &gracePeriod, } - return f.KubeClient.CoreV1().Nodes().Delete(f.NodeName, &opts) + return f.KubeClient.CoreV1().Nodes().Delete(ctx, f.NodeName, opts) } // GetNode gets the vk nodeused by the framework -func (f *Framework) GetNode() (*corev1.Node, error) { - return f.KubeClient.CoreV1().Nodes().Get(f.NodeName, metav1.GetOptions{}) +func (f *Framework) GetNode(ctx context.Context) (*corev1.Node, error) { + return f.KubeClient.CoreV1().Nodes().Get(ctx, f.NodeName, metav1.GetOptions{}) } diff --git a/internal/test/e2e/framework/pod.go b/internal/test/e2e/framework/pod.go index 88ca740bc..2054cc0c7 100644 --- a/internal/test/e2e/framework/pod.go +++ b/internal/test/e2e/framework/pod.go @@ -47,21 +47,21 @@ func (f *Framework) CreateDummyPodObjectWithPrefix(testName string, prefix strin } // CreatePod creates the specified pod in the Kubernetes API. -func (f *Framework) CreatePod(pod *corev1.Pod) (*corev1.Pod, error) { - return f.KubeClient.CoreV1().Pods(f.Namespace).Create(pod) +func (f *Framework) CreatePod(ctx context.Context, pod *corev1.Pod) (*corev1.Pod, error) { + return f.KubeClient.CoreV1().Pods(f.Namespace).Create(ctx, pod, metav1.CreateOptions{}) } // DeletePod deletes the pod with the specified name and namespace in the Kubernetes API using the default grace period. -func (f *Framework) DeletePod(namespace, name string) error { - return f.KubeClient.CoreV1().Pods(namespace).Delete(name, &metav1.DeleteOptions{}) +func (f *Framework) DeletePod(ctx context.Context, namespace, name string) error { + return f.KubeClient.CoreV1().Pods(namespace).Delete(ctx, name, metav1.DeleteOptions{}) } // DeletePodImmediately forcibly deletes the pod with the specified name and namespace in the Kubernetes API. // This is equivalent to running "kubectl delete --force --grace-period 0 --namespace pod ". -func (f *Framework) DeletePodImmediately(namespace, name string) error { +func (f *Framework) DeletePodImmediately(ctx context.Context, namespace, name string) error { grace := int64(0) propagation := metav1.DeletePropagationBackground - return f.KubeClient.CoreV1().Pods(namespace).Delete(name, &metav1.DeleteOptions{ + return f.KubeClient.CoreV1().Pods(namespace).Delete(ctx, name, metav1.DeleteOptions{ GracePeriodSeconds: &grace, PropagationPolicy: &propagation, }) @@ -70,22 +70,22 @@ func (f *Framework) DeletePodImmediately(namespace, name string) error { // WaitUntilPodCondition establishes a watch on the pod with the specified name and namespace. // Then, it waits for the specified condition function to be verified. func (f *Framework) WaitUntilPodCondition(namespace, name string, fn watch.ConditionFunc) (*corev1.Pod, error) { + // Watch for updates to the Pod resource until fn is satisfied, or until the timeout is reached. + ctx, cfn := context.WithTimeout(context.Background(), f.WatchTimeout) + defer cfn() // Create a field selector that matches the specified Pod resource. fs := fields.ParseSelectorOrDie(fmt.Sprintf("metadata.namespace==%s,metadata.name==%s", namespace, name)) // Create a ListWatch so we can receive events for the matched Pod resource. lw := &cache.ListWatch{ ListFunc: func(options metav1.ListOptions) (runtime.Object, error) { options.FieldSelector = fs.String() - return f.KubeClient.CoreV1().Pods(namespace).List(options) + return f.KubeClient.CoreV1().Pods(namespace).List(ctx, options) }, WatchFunc: func(options metav1.ListOptions) (watchapi.Interface, error) { options.FieldSelector = fs.String() - return f.KubeClient.CoreV1().Pods(namespace).Watch(options) + return f.KubeClient.CoreV1().Pods(namespace).Watch(ctx, options) }, } - // Watch for updates to the Pod resource until fn is satisfied, or until the timeout is reached. - ctx, cfn := context.WithTimeout(context.Background(), f.WatchTimeout) - defer cfn() last, err := watch.UntilWithSync(ctx, lw, &corev1.Pod{}, nil, fn) if err != nil { return nil, err @@ -129,22 +129,24 @@ func (f *Framework) WaitUntilPodInPhase(namespace, name string, phases ...corev1 // WaitUntilPodEventWithReason establishes a watch on events involving the specified pod. // Then, it waits for an event with the specified reason to be created/updated. func (f *Framework) WaitUntilPodEventWithReason(pod *corev1.Pod, reason string) error { + // Watch for updates to the Event resource until fn is satisfied, or until the timeout is reached. + ctx, cfn := context.WithTimeout(context.Background(), f.WatchTimeout) + defer cfn() + // Create a field selector that matches Event resources involving the specified pod. fs := fields.ParseSelectorOrDie(fmt.Sprintf("involvedObject.kind==Pod,involvedObject.uid==%s", pod.UID)) // Create a ListWatch so we can receive events for the matched Event resource. lw := &cache.ListWatch{ ListFunc: func(options metav1.ListOptions) (runtime.Object, error) { options.FieldSelector = fs.String() - return f.KubeClient.CoreV1().Events(pod.Namespace).List(options) + return f.KubeClient.CoreV1().Events(pod.Namespace).List(ctx, options) }, WatchFunc: func(options metav1.ListOptions) (watchapi.Interface, error) { options.FieldSelector = fs.String() - return f.KubeClient.CoreV1().Events(pod.Namespace).Watch(options) + return f.KubeClient.CoreV1().Events(pod.Namespace).Watch(ctx, options) }, } - // Watch for updates to the Event resource until fn is satisfied, or until the timeout is reached. - ctx, cfn := context.WithTimeout(context.Background(), f.WatchTimeout) - defer cfn() + last, err := watch.UntilWithSync(ctx, lw, &corev1.Event{}, nil, func(event watchapi.Event) (b bool, e error) { switch event.Type { case watchapi.Error: @@ -165,7 +167,7 @@ func (f *Framework) WaitUntilPodEventWithReason(pod *corev1.Pod, reason string) } // GetRunningPodsFromProvider gets the running pods from the provider of the virtual kubelet -func (f *Framework) GetRunningPodsFromProvider() (*corev1.PodList, error) { +func (f *Framework) GetRunningPodsFromProvider(ctx context.Context) (*corev1.PodList, error) { result := &corev1.PodList{} err := f.KubeClient.CoreV1(). @@ -175,14 +177,14 @@ func (f *Framework) GetRunningPodsFromProvider() (*corev1.PodList, error) { Name(f.NodeName). SubResource("proxy"). Suffix("runningpods/"). - Do(). + Do(ctx). Into(result) return result, err } // GetRunningPodsFromProvider gets the running pods from the provider of the virtual kubelet -func (f *Framework) GetRunningPodsFromKubernetes() (*corev1.PodList, error) { +func (f *Framework) GetRunningPodsFromKubernetes(ctx context.Context) (*corev1.PodList, error) { result := &corev1.PodList{} err := f.KubeClient.CoreV1(). @@ -192,7 +194,7 @@ func (f *Framework) GetRunningPodsFromKubernetes() (*corev1.PodList, error) { Name(f.NodeName). SubResource("proxy"). Suffix("pods"). - Do(). + Do(ctx). Into(result) return result, err diff --git a/internal/test/e2e/framework/stats.go b/internal/test/e2e/framework/stats.go index 3dd7b8e55..2a472c832 100644 --- a/internal/test/e2e/framework/stats.go +++ b/internal/test/e2e/framework/stats.go @@ -1,6 +1,7 @@ package framework import ( + "context" "encoding/json" "strconv" @@ -9,7 +10,7 @@ import ( ) // GetStatsSummary queries the /stats/summary endpoint of the virtual-kubelet and returns the Summary object obtained as a response. -func (f *Framework) GetStatsSummary() (*stats.Summary, error) { +func (f *Framework) GetStatsSummary(ctx context.Context) (*stats.Summary, error) { // Query the /stats/summary endpoint. b, err := f.KubeClient.CoreV1(). RESTClient(). @@ -18,7 +19,7 @@ func (f *Framework) GetStatsSummary() (*stats.Summary, error) { Resource("pods"). SubResource("proxy"). Name(net.JoinSchemeNamePort("http", f.NodeName, strconv.Itoa(10255))). - Suffix("/stats/summary").DoRaw() + Suffix("/stats/summary").DoRaw(ctx) if err != nil { return nil, err } diff --git a/node/lifecycle_test.go b/node/lifecycle_test.go index 6af38c037..06171a3ea 100644 --- a/node/lifecycle_test.go +++ b/node/lifecycle_test.go @@ -160,7 +160,7 @@ func TestPodLifecycle(t *testing.T) { mp.setErrorOnDelete(errors.New("random error")) assert.NilError(t, wireUpSystem(ctx, mp, func(ctx context.Context, s *system) { testCreateStartDeleteScenario(ctx, t, s, deletionFunc, false) - pods, err := s.client.CoreV1().Pods(testNamespace).List(metav1.ListOptions{}) + pods, err := s.client.CoreV1().Pods(testNamespace).List(ctx, metav1.ListOptions{}) assert.NilError(t, err) assert.Assert(t, is.Len(pods.Items, 1)) assert.Assert(t, pods.Items[0].DeletionTimestamp != nil) @@ -329,7 +329,7 @@ func testTerminalStatePodScenario(ctx context.Context, t *testing.T, s *system, p1 := newPod() p1.Status.Phase = state // Create the Pod - _, e := s.client.CoreV1().Pods(testNamespace).Create(p1) + _, e := s.client.CoreV1().Pods(testNamespace).Create(ctx, p1, metav1.CreateOptions{}) assert.NilError(t, e) // Start the pod controller @@ -339,7 +339,7 @@ func testTerminalStatePodScenario(ctx context.Context, t *testing.T, s *system, time.Sleep(10 * time.Millisecond) } - p2, err := s.client.CoreV1().Pods(testNamespace).Get(p1.Name, metav1.GetOptions{}) + p2, err := s.client.CoreV1().Pods(testNamespace).Get(ctx, p1.Name, metav1.GetOptions{}) assert.NilError(t, err) // Make sure the pods have not changed @@ -367,7 +367,7 @@ func testDanglingPodScenarioWithDeletionTimestamp(ctx context.Context, t *testin FieldSelector: fields.OneTermEqualSelector("metadata.name", pod.ObjectMeta.Name).String(), } // Setup a watch (prior to pod creation, and pod controller startup) - watcher, err := s.client.CoreV1().Pods(testNamespace).Watch(listOptions) + watcher, err := s.client.CoreV1().Pods(testNamespace).Watch(ctx, listOptions) assert.NilError(t, err) defer watcher.Stop() @@ -379,7 +379,7 @@ func testDanglingPodScenarioWithDeletionTimestamp(ctx context.Context, t *testin podCopyWithDeletionTimestamp.DeletionGracePeriodSeconds = &deletionGracePeriod deletionTimestamp := metav1.NewTime(time.Now().Add(time.Second * time.Duration(deletionGracePeriod))) podCopyWithDeletionTimestamp.DeletionTimestamp = &deletionTimestamp - _, e := s.client.CoreV1().Pods(testNamespace).Create(podCopyWithDeletionTimestamp) + _, e := s.client.CoreV1().Pods(testNamespace).Create(ctx, podCopyWithDeletionTimestamp, metav1.CreateOptions{}) assert.NilError(t, e) // Start the pod controller @@ -415,7 +415,7 @@ func testCreateStartDeleteScenario(ctx context.Context, t *testing.T, s *system, watchErrCh := make(chan error) // Setup a watch (prior to pod creation, and pod controller startup) - watcher, err := s.client.CoreV1().Pods(testNamespace).Watch(listOptions) + watcher, err := s.client.CoreV1().Pods(testNamespace).Watch(ctx, listOptions) assert.NilError(t, err) defer watcher.Stop() // This ensures that the pod is created. @@ -432,7 +432,7 @@ func testCreateStartDeleteScenario(ctx context.Context, t *testing.T, s *system, }() // Create the Pod - _, e := s.client.CoreV1().Pods(testNamespace).Create(p) + _, e := s.client.CoreV1().Pods(testNamespace).Create(ctx, p, metav1.CreateOptions{}) assert.NilError(t, e) log.G(ctx).Debug("Created pod") @@ -446,7 +446,7 @@ func testCreateStartDeleteScenario(ctx context.Context, t *testing.T, s *system, } // Setup a watch to check if the pod is in running - watcher, err = s.client.CoreV1().Pods(testNamespace).Watch(listOptions) + watcher, err = s.client.CoreV1().Pods(testNamespace).Watch(ctx, listOptions) assert.NilError(t, err) defer watcher.Stop() go func() { @@ -471,7 +471,7 @@ func testCreateStartDeleteScenario(ctx context.Context, t *testing.T, s *system, } // Setup a watch to look for the pod eventually going away completely - watcher2, err := s.client.CoreV1().Pods(testNamespace).Watch(listOptions) + watcher2, err := s.client.CoreV1().Pods(testNamespace).Watch(ctx, listOptions) assert.NilError(t, err) defer watcher2.Stop() waitDeleteCh := make(chan error) @@ -483,7 +483,7 @@ func testCreateStartDeleteScenario(ctx context.Context, t *testing.T, s *system, }() // Setup a watch prior to pod deletion - watcher, err = s.client.CoreV1().Pods(testNamespace).Watch(listOptions) + watcher, err = s.client.CoreV1().Pods(testNamespace).Watch(ctx, listOptions) assert.NilError(t, err) defer watcher.Stop() go func() { @@ -493,7 +493,7 @@ func testCreateStartDeleteScenario(ctx context.Context, t *testing.T, s *system, // Delete the pod via deletiontimestamp // 1. Get the pod - currentPod, err := s.client.CoreV1().Pods(testNamespace).Get(p.Name, metav1.GetOptions{}) + currentPod, err := s.client.CoreV1().Pods(testNamespace).Get(ctx, p.Name, metav1.GetOptions{}) assert.NilError(t, err) // 2. Set the pod's deletion timestamp, version, and so on var deletionGracePeriod int64 = 10 @@ -501,7 +501,7 @@ func testCreateStartDeleteScenario(ctx context.Context, t *testing.T, s *system, deletionTimestamp := metav1.NewTime(time.Now().Add(time.Second * time.Duration(deletionGracePeriod))) currentPod.DeletionTimestamp = &deletionTimestamp // 3. Update (overwrite) the pod - _, err = s.client.CoreV1().Pods(testNamespace).Update(currentPod) + _, err = s.client.CoreV1().Pods(testNamespace).Update(ctx, currentPod, metav1.UpdateOptions{}) assert.NilError(t, err) select { @@ -535,11 +535,11 @@ func testUpdatePodWhileRunningScenario(ctx context.Context, t *testing.T, s *sys watchErrCh := make(chan error) // Create a Pod - _, e := s.client.CoreV1().Pods(testNamespace).Create(p) + _, e := s.client.CoreV1().Pods(testNamespace).Create(ctx, p, metav1.CreateOptions{}) assert.NilError(t, e) // Setup a watch to check if the pod is in running - watcher, err := s.client.CoreV1().Pods(testNamespace).Watch(listOptions) + watcher, err := s.client.CoreV1().Pods(testNamespace).Watch(ctx, listOptions) assert.NilError(t, err) defer watcher.Stop() go func() { @@ -576,7 +576,7 @@ func testUpdatePodWhileRunningScenario(ctx context.Context, t *testing.T, s *sys p.Spec.ActiveDeadlineSeconds = &activeDeadlineSeconds log.G(ctx).WithField("pod", p).Info("Updating pod") - _, err = s.client.CoreV1().Pods(p.Namespace).Update(p) + _, err = s.client.CoreV1().Pods(p.Namespace).Update(ctx, p, metav1.UpdateOptions{}) assert.NilError(t, err) assert.NilError(t, m.getUpdates().until(ctx, func(v int) bool { return v > 0 })) } @@ -603,7 +603,7 @@ func benchmarkCreatePods(ctx context.Context, b *testing.B, s *system) { b.ResetTimer() for i := 0; i < b.N; i++ { pod := newPod(randomizeUID, randomizeName) - _, err := s.client.CoreV1().Pods(pod.Namespace).Create(pod) + _, err := s.client.CoreV1().Pods(pod.Namespace).Create(ctx, pod, metav1.CreateOptions{}) assert.NilError(b, err) assert.NilError(b, ctx.Err()) } diff --git a/node/node.go b/node/node.go index 44e0cb1d7..30d8aedb3 100644 --- a/node/node.go +++ b/node/node.go @@ -235,7 +235,7 @@ func (n *NodeController) ensureNode(ctx context.Context) (err error) { return err } - node, err := n.nodes.Create(n.n) + node, err := n.nodes.Create(ctx, n.n, metav1.CreateOptions{}) if err != nil { return pkgerrors.Wrap(err, "error registering node with kubernetes") } @@ -385,18 +385,18 @@ func (n *NodeController) updateStatus(ctx context.Context, skipErrorCb bool) (er } func ensureLease(ctx context.Context, leases v1beta1.LeaseInterface, lease *coord.Lease) (*coord.Lease, error) { - l, err := leases.Create(lease) + l, err := leases.Create(ctx, lease, metav1.CreateOptions{}) if err != nil { switch { case errors.IsNotFound(err): log.G(ctx).WithError(err).Info("Node lease not supported") return nil, err case errors.IsAlreadyExists(err): - if err := leases.Delete(lease.Name, nil); err != nil && !errors.IsNotFound(err) { + if err := leases.Delete(ctx, lease.Name, metav1.DeleteOptions{}); err != nil && !errors.IsNotFound(err) { log.G(ctx).WithError(err).Error("could not delete old node lease") return nil, pkgerrors.Wrap(err, "old lease exists but could not delete it") } - l, err = leases.Create(lease) + l, err = leases.Create(ctx, lease, metav1.CreateOptions{}) } } @@ -421,7 +421,7 @@ func updateNodeLease(ctx context.Context, leases v1beta1.LeaseInterface, lease * ctx = span.WithField(ctx, "lease.expiresSeconds", *lease.Spec.LeaseDurationSeconds) } - l, err := leases.Update(lease) + l, err := leases.Update(ctx, lease, metav1.UpdateOptions{}) if err != nil { if errors.IsNotFound(err) { log.G(ctx).Debug("lease not found") @@ -570,7 +570,7 @@ func updateNodeStatus(ctx context.Context, nodes v1.NodeInterface, nodeFromProvi var updatedNode *corev1.Node err := retry.RetryOnConflict(retry.DefaultRetry, func() error { - apiServerNode, err := nodes.Get(nodeFromProvider.Name, emptyGetOptions) + apiServerNode, err := nodes.Get(ctx, nodeFromProvider.Name, emptyGetOptions) if err != nil { return err } @@ -583,7 +583,7 @@ func updateNodeStatus(ctx context.Context, nodes v1.NodeInterface, nodeFromProvi } log.G(ctx).WithError(err).WithField("patch", string(patchBytes)).Debug("Generated three way patch") - updatedNode, err = nodes.Patch(nodeFromProvider.Name, types.StrategicMergePatchType, patchBytes, "status") + updatedNode, err = nodes.Patch(ctx, nodeFromProvider.Name, types.StrategicMergePatchType, patchBytes, metav1.PatchOptions{}, "status") if err != nil { // We cannot wrap this error because the kubernetes error module doesn't understand wrapping log.G(ctx).WithField("patch", string(patchBytes)).WithError(err).Warn("Failed to patch node status") diff --git a/node/node_test.go b/node/node_test.go index ab8cc6a9e..9fa801292 100644 --- a/node/node_test.go +++ b/node/node_test.go @@ -74,11 +74,11 @@ func testNodeRun(t *testing.T, enableLease bool) { close(chErr) }() - nw := makeWatch(t, nodes, testNodeCopy.Name) + nw := makeWatch(ctx, t, nodes, testNodeCopy.Name) defer nw.Stop() nr := nw.ResultChan() - lw := makeWatch(t, leases, testNodeCopy.Name) + lw := makeWatch(ctx, t, leases, testNodeCopy.Name) defer lw.Stop() lr := lw.ResultChan() @@ -132,7 +132,7 @@ func testNodeRun(t *testing.T, enableLease bool) { } // trigger an async node status update - n, err := nodes.Get(testNode.Name, metav1.GetOptions{}) + n, err := nodes.Get(ctx, testNode.Name, metav1.GetOptions{}) assert.NilError(t, err) newCondition := corev1.NodeCondition{ Type: corev1.NodeConditionType("UPDATED"), @@ -140,7 +140,7 @@ func testNodeRun(t *testing.T, enableLease bool) { } n.Status.Conditions = append(n.Status.Conditions, newCondition) - nw = makeWatch(t, nodes, testNodeCopy.Name) + nw = makeWatch(ctx, t, nodes, testNodeCopy.Name) defer nw.Stop() nr = nw.ResultChan() @@ -207,7 +207,7 @@ func TestNodeCustomUpdateStatusErrorHandler(t *testing.T) { case <-node.Ready(): } - err = nodes.Delete(node.n.Name, nil) + err = nodes.Delete(ctx, node.n.Name, metav1.DeleteOptions{}) assert.NilError(t, err) testP.triggerStatusUpdate(node.n.DeepCopy()) @@ -253,7 +253,7 @@ func TestUpdateNodeStatus(t *testing.T) { updated, err := updateNodeStatus(ctx, nodes, n.DeepCopy()) assert.Equal(t, errors.IsNotFound(err), true, err) - _, err = nodes.Create(n) + _, err = nodes.Create(ctx, n, metav1.CreateOptions{}) assert.NilError(t, err) updated, err = updateNodeStatus(ctx, nodes, n.DeepCopy()) @@ -267,10 +267,10 @@ func TestUpdateNodeStatus(t *testing.T) { assert.NilError(t, err) assert.Check(t, cmp.DeepEqual(n.Status, updated.Status)) - err = nodes.Delete(n.Name, nil) + err = nodes.Delete(ctx, n.Name, metav1.DeleteOptions{}) assert.NilError(t, err) - _, err = nodes.Get(n.Name, metav1.GetOptions{}) + _, err = nodes.Get(ctx, n.Name, metav1.GetOptions{}) assert.Equal(t, errors.IsNotFound(err), true, err) _, err = updateNodeStatus(ctx, nodes, updated.DeepCopy()) @@ -289,7 +289,7 @@ func TestUpdateNodeLease(t *testing.T) { assert.Equal(t, l.Name, lease.Name) assert.Assert(t, cmp.DeepEqual(l.Spec.HolderIdentity, lease.Spec.HolderIdentity)) - compare, err := leases.Get(l.Name, emptyGetOptions) + compare, err := leases.Get(ctx, l.Name, emptyGetOptions) assert.NilError(t, err) assert.Equal(t, l.Spec.RenewTime.Time.Unix(), compare.Spec.RenewTime.Time.Unix()) assert.Equal(t, compare.Name, lease.Name) @@ -397,7 +397,7 @@ func TestBeforeAnnotationsPreserved(t *testing.T) { testNodeCreateCopy.Annotations = map[string]string{ "beforeAnnotation": "value", } - _, err := nodes.Create(testNodeCreateCopy) + _, err := nodes.Create(ctx, testNodeCreateCopy, metav1.CreateOptions{}) assert.NilError(t, err) // We have to refer to testNodeCopy during the course of the test. testNode is modified by the node controller @@ -417,7 +417,7 @@ func TestBeforeAnnotationsPreserved(t *testing.T) { close(chErr) }() - nw := makeWatch(t, nodes, testNodeCopy.Name) + nw := makeWatch(ctx, t, nodes, testNodeCopy.Name) defer nw.Stop() nr := nw.ResultChan() @@ -446,7 +446,7 @@ func TestBeforeAnnotationsPreserved(t *testing.T) { return ok })) - newNode, err := nodes.Get(testNodeCopy.Name, emptyGetOptions) + newNode, err := nodes.Get(ctx, testNodeCopy.Name, emptyGetOptions) assert.NilError(t, err) assert.Assert(t, is.Contains(newNode.Annotations, "testAnnotation")) @@ -487,7 +487,7 @@ func TestManualConditionsPreserved(t *testing.T) { close(chErr) }() - nw := makeWatch(t, nodes, testNodeCopy.Name) + nw := makeWatch(ctx, t, nodes, testNodeCopy.Name) defer nw.Stop() nr := nw.ResultChan() @@ -503,7 +503,7 @@ func TestManualConditionsPreserved(t *testing.T) { return true })) - newNode, err := nodes.Get(testNodeCopy.Name, emptyGetOptions) + newNode, err := nodes.Get(ctx, testNodeCopy.Name, emptyGetOptions) assert.NilError(t, err) assert.Assert(t, is.Len(newNode.Status.Conditions, 0)) @@ -538,7 +538,7 @@ func TestManualConditionsPreserved(t *testing.T) { return false })) - newNode, err = nodes.Get(testNodeCopy.Name, emptyGetOptions) + newNode, err = nodes.Get(ctx, testNodeCopy.Name, emptyGetOptions) assert.NilError(t, err) assert.Assert(t, is.Len(newNode.Status.Conditions, 1)) assert.Assert(t, is.Contains(newNode.Annotations, "testAnnotation")) @@ -551,13 +551,13 @@ func TestManualConditionsPreserved(t *testing.T) { Message: "This is a manually added condition. Outside of VK. It should not be removed.", } assert.NilError(t, retry.RetryOnConflict(retry.DefaultRetry, func() error { - newNode, err = nodes.Get(testNodeCopy.Name, emptyGetOptions) + newNode, err = nodes.Get(ctx, testNodeCopy.Name, emptyGetOptions) if err != nil { return err } newNode.Annotations["manuallyAddedAnnotation"] = "value" newNode.Status.Conditions = append(newNode.Status.Conditions, manuallyAddedCondition) - _, err = nodes.UpdateStatus(newNode) + _, err = nodes.UpdateStatus(ctx, newNode, metav1.UpdateOptions{}) return err })) @@ -608,7 +608,7 @@ func TestManualConditionsPreserved(t *testing.T) { })) // Make sure that all three conditions are there. - newNode, err = nodes.Get(testNodeCopy.Name, emptyGetOptions) + newNode, err = nodes.Get(ctx, testNodeCopy.Name, emptyGetOptions) assert.NilError(t, err) seenConditionTypes := make([]corev1.NodeConditionType, len(newNode.Status.Conditions)) for idx := range newNode.Status.Conditions { @@ -667,13 +667,13 @@ func (tnp *testNodeProviderPing) Ping(ctx context.Context) error { } type watchGetter interface { - Watch(metav1.ListOptions) (watch.Interface, error) + Watch(context.Context, metav1.ListOptions) (watch.Interface, error) } -func makeWatch(t *testing.T, wc watchGetter, name string) watch.Interface { +func makeWatch(ctx context.Context, t *testing.T, wc watchGetter, name string) watch.Interface { t.Helper() - w, err := wc.Watch(metav1.ListOptions{FieldSelector: "name=" + name}) + w, err := wc.Watch(ctx, metav1.ListOptions{FieldSelector: "name=" + name}) assert.NilError(t, err) return w } diff --git a/node/pod.go b/node/pod.go index be329c898..e2a720226 100644 --- a/node/pod.go +++ b/node/pod.go @@ -159,7 +159,7 @@ func (pc *PodController) handleProviderError(ctx context.Context, span trace.Spa "reason": pod.Status.Reason, }) - _, err := pc.client.Pods(pod.Namespace).UpdateStatus(pod) + _, err := pc.client.Pods(pod.Namespace).UpdateStatus(ctx, pod, metav1.UpdateOptions{}) if err != nil { logger.WithError(err).Warn("Failed to update pod status") } else { @@ -216,7 +216,7 @@ func (pc *PodController) updatePodStatus(ctx context.Context, podFromKubernetes // the pod status, and we should be the sole writers of the pod status, we can blind overwrite it. Therefore // we need to copy the pod and set ResourceVersion to 0. podFromProvider.ResourceVersion = "0" - if _, err := pc.client.Pods(podFromKubernetes.Namespace).UpdateStatus(podFromProvider); err != nil { + if _, err := pc.client.Pods(podFromKubernetes.Namespace).UpdateStatus(ctx, podFromProvider, metav1.UpdateOptions{}); err != nil { span.SetStatus(err) return pkgerrors.Wrap(err, "error while updating pod status in kubernetes") } @@ -322,7 +322,7 @@ func (pc *PodController) deletePodHandler(ctx context.Context, key string) (retE // We don't check with the provider before doing this delete. At this point, even if an outstanding pod status update // was in progress, - err = pc.client.Pods(namespace).Delete(name, metav1.NewDeleteOptions(0)) + err = pc.client.Pods(namespace).Delete(ctx, name, *metav1.NewDeleteOptions(0)) if errors.IsNotFound(err) { return nil } diff --git a/scripts/validate/check_version.sh b/scripts/validate/check_version.sh deleted file mode 100755 index 16bb4de65..000000000 --- a/scripts/validate/check_version.sh +++ /dev/null @@ -1,38 +0,0 @@ -#!/bin/bash -set -euo pipefail - -echo "Checking kubernetes version replacement / pinning" - -readonly kubeversion=$(go list -m -f '{{.Version}}' k8s.io/kubernetes) - -if [[ "${kubeversion}" =~ '^v.*' ]]; then - echo "Kube Version: ${kubeversion} in unexpected format, must start with v" - exit 1 -fi - -echo "Found kubernetes version: ${kubeversion}" - -# We postfix the tag to search for with ^{}, as we want the annotated tag -readonly sha=$(git ls-remote --tags git@github.com:kubernetes/kubernetes.git "${kubeversion}^{}"|cut -f1 -d$'\t') - -if [[ ! "${sha}" =~ ^[0-9a-f]{40}$ ]]; then - echo "Kube Sha: ${sha} in unexpected format" - exit 1 -fi - -echo "Found sha for kubernetes version ${kubeversion}: ${sha}" -# TODO: Check direct deps -# Humans should check the versions reference directly (i.e. bits under require) those should either read -# kubeversion, or v0.0.0 - - -readonly short_sha=$(echo $sha|cut -b1-12) -readonly non_matching_versions=$(go list -m -json k8s.io/...|jq --arg short_sha "${short_sha}" 'select(.Replace != null) | select(.Replace.Version[-12:] != $short_sha)') - - -if [[ ! -z "${non_matching_versions}" ]]; then - echo "Found non-matching versions: ${non_matching_versions}" - exit 1 -fi - - diff --git a/test/e2e/basic.go b/test/e2e/basic.go index 9f6c35d28..c0f45c628 100644 --- a/test/e2e/basic.go +++ b/test/e2e/basic.go @@ -1,6 +1,7 @@ package e2e import ( + "context" "fmt" "testing" "time" @@ -20,17 +21,19 @@ const ( // TestGetPods tests that the /pods endpoint works, and only returns pods for our kubelet func (ts *EndToEndTestSuite) TestGetPods(t *testing.T) { + ctx := context.Background() + // Create a pod with prefix "nginx-" having a single container. podSpec := f.CreateDummyPodObjectWithPrefix(t.Name(), "nginx", "foo") podSpec.Spec.NodeName = f.NodeName - nginx, err := f.CreatePod(podSpec) + nginx, err := f.CreatePod(ctx, podSpec) if err != nil { t.Fatal(err) } // Delete the pod after the test finishes. defer func() { - if err := f.DeletePodImmediately(nginx.Namespace, nginx.Name); err != nil && !apierrors.IsNotFound(err) { + if err := f.DeletePodImmediately(ctx, nginx.Namespace, nginx.Name); err != nil && !apierrors.IsNotFound(err) { t.Error(err) } }() @@ -42,7 +45,7 @@ func (ts *EndToEndTestSuite) TestGetPods(t *testing.T) { } t.Logf("Pod %s ready", nginx.Name) - k8sPods, err := f.GetRunningPodsFromKubernetes() + k8sPods, err := f.GetRunningPodsFromKubernetes(ctx) if err != nil { t.Fatal(err) } @@ -64,14 +67,16 @@ func (ts *EndToEndTestSuite) TestGetPods(t *testing.T) { // TestGetStatsSummary creates a pod having two containers and queries the /stats/summary endpoint of the virtual-kubelet. // It expects this endpoint to return stats for the current node, as well as for the aforementioned pod and each of its two containers. func (ts *EndToEndTestSuite) TestGetStatsSummary(t *testing.T) { + ctx := context.Background() + // Create a pod with prefix "nginx-" having three containers. - pod, err := f.CreatePod(f.CreateDummyPodObjectWithPrefix(t.Name(), "nginx", "foo", "bar", "baz")) + pod, err := f.CreatePod(ctx, f.CreateDummyPodObjectWithPrefix(t.Name(), "nginx", "foo", "bar", "baz")) if err != nil { t.Fatal(err) } // Delete the "nginx-0-X" pod after the test finishes. defer func() { - if err := f.DeletePodImmediately(pod.Namespace, pod.Name); err != nil && !apierrors.IsNotFound(err) { + if err := f.DeletePodImmediately(ctx, pod.Namespace, pod.Name); err != nil && !apierrors.IsNotFound(err) { t.Error(err) } }() @@ -82,7 +87,7 @@ func (ts *EndToEndTestSuite) TestGetStatsSummary(t *testing.T) { } // Grab the stats from the provider. - stats, err := f.GetStatsSummary() + stats, err := f.GetStatsSummary(ctx) if err != nil { t.Fatal(err) } @@ -111,17 +116,19 @@ func (ts *EndToEndTestSuite) TestGetStatsSummary(t *testing.T) { // These verifications are made using the /stats/summary endpoint of the virtual-kubelet, by checking for the presence or absence of the pods. // Hence, the provider being tested must implement the PodMetricsProvider interface. func (ts *EndToEndTestSuite) TestPodLifecycleGracefulDelete(t *testing.T) { + ctx := context.Background() + // Create a pod with prefix "nginx-" having a single container. podSpec := f.CreateDummyPodObjectWithPrefix(t.Name(), "nginx", "foo") podSpec.Spec.NodeName = f.NodeName - pod, err := f.CreatePod(podSpec) + pod, err := f.CreatePod(ctx, podSpec) if err != nil { t.Fatal(err) } // Delete the pod after the test finishes. defer func() { - if err := f.DeletePodImmediately(pod.Namespace, pod.Name); err != nil && !apierrors.IsNotFound(err) { + if err := f.DeletePodImmediately(ctx, pod.Namespace, pod.Name); err != nil && !apierrors.IsNotFound(err) { t.Error(err) } }() @@ -134,7 +141,7 @@ func (ts *EndToEndTestSuite) TestPodLifecycleGracefulDelete(t *testing.T) { t.Logf("Pod %s ready", pod.Name) // Grab the pods from the provider. - pods, err := f.GetRunningPodsFromProvider() + pods, err := f.GetRunningPodsFromProvider(ctx) assert.NilError(t, err) // Check if the pod exists in the slice of PodStats. @@ -155,7 +162,7 @@ func (ts *EndToEndTestSuite) TestPodLifecycleGracefulDelete(t *testing.T) { }() // Gracefully delete the "nginx-" pod. - if err := f.DeletePod(pod.Namespace, pod.Name); err != nil { + if err := f.DeletePod(ctx, pod.Namespace, pod.Name); err != nil { t.Fatal(err) } t.Logf("Deleted pod: %s", pod.Name) @@ -168,7 +175,7 @@ func (ts *EndToEndTestSuite) TestPodLifecycleGracefulDelete(t *testing.T) { time.Sleep(deleteGracePeriodForProvider) // Give the provider some time to react to the MODIFIED/DELETED events before proceeding. // Grab the pods from the provider. - pods, err = f.GetRunningPodsFromProvider() + pods, err = f.GetRunningPodsFromProvider(ctx) assert.NilError(t, err) // Make sure the pod DOES NOT exist in the provider's set of running pods @@ -184,15 +191,17 @@ func (ts *EndToEndTestSuite) TestPodLifecycleGracefulDelete(t *testing.T) { // and put them in the running lifecycle. It then does a force delete on the pod, and verifies the provider // has deleted it. func (ts *EndToEndTestSuite) TestPodLifecycleForceDelete(t *testing.T) { + ctx := context.Background() + podSpec := f.CreateDummyPodObjectWithPrefix(t.Name(), "nginx", "foo") // Create a pod with prefix having a single container. - pod, err := f.CreatePod(podSpec) + pod, err := f.CreatePod(ctx, podSpec) if err != nil { t.Fatal(err) } // Delete the pod after the test finishes. defer func() { - if err := f.DeletePodImmediately(pod.Namespace, pod.Name); err != nil && !apierrors.IsNotFound(err) { + if err := f.DeletePodImmediately(ctx, pod.Namespace, pod.Name); err != nil && !apierrors.IsNotFound(err) { t.Error(err) } }() @@ -205,7 +214,7 @@ func (ts *EndToEndTestSuite) TestPodLifecycleForceDelete(t *testing.T) { t.Logf("Pod %s ready", pod.Name) // Grab the pods from the provider. - pods, err := f.GetRunningPodsFromProvider() + pods, err := f.GetRunningPodsFromProvider(ctx) assert.NilError(t, err) // Check if the pod exists in the slice of Pods. @@ -231,7 +240,7 @@ func (ts *EndToEndTestSuite) TestPodLifecycleForceDelete(t *testing.T) { time.Sleep(deleteGracePeriodForProvider) // Forcibly delete the pod. - if err := f.DeletePodImmediately(pod.Namespace, pod.Name); err != nil { + if err := f.DeletePodImmediately(ctx, pod.Namespace, pod.Name); err != nil { t.Logf("Last saw pod in state: %+v", podLast) t.Fatal(err) } @@ -246,7 +255,7 @@ func (ts *EndToEndTestSuite) TestPodLifecycleForceDelete(t *testing.T) { time.Sleep(deleteGracePeriodForProvider) // Grab the pods from the provider. - pods, err = f.GetRunningPodsFromProvider() + pods, err = f.GetRunningPodsFromProvider(ctx) assert.NilError(t, err) // Make sure the "nginx-" pod DOES NOT exist in the slice of Pods anymore. @@ -259,15 +268,17 @@ func (ts *EndToEndTestSuite) TestPodLifecycleForceDelete(t *testing.T) { // TestCreatePodWithOptionalInexistentSecrets tries to create a pod referencing optional, inexistent secrets. // It then verifies that the pod is created successfully. func (ts *EndToEndTestSuite) TestCreatePodWithOptionalInexistentSecrets(t *testing.T) { + ctx := context.Background() + // Create a pod with a single container referencing optional, inexistent secrets. - pod, err := f.CreatePod(f.CreatePodObjectWithOptionalSecretKey(t.Name())) + pod, err := f.CreatePod(ctx, f.CreatePodObjectWithOptionalSecretKey(t.Name())) if err != nil { t.Fatal(err) } // Delete the pod after the test finishes. defer func() { - if err := f.DeletePodImmediately(pod.Namespace, pod.Name); err != nil && !apierrors.IsNotFound(err) { + if err := f.DeletePodImmediately(ctx, pod.Namespace, pod.Name); err != nil && !apierrors.IsNotFound(err) { t.Error(err) } }() @@ -283,7 +294,7 @@ func (ts *EndToEndTestSuite) TestCreatePodWithOptionalInexistentSecrets(t *testi } // Grab the pods from the provider. - pods, err := f.GetRunningPodsFromProvider() + pods, err := f.GetRunningPodsFromProvider(ctx) assert.NilError(t, err) // Check if the pod exists in the slice of Pods. @@ -293,15 +304,17 @@ func (ts *EndToEndTestSuite) TestCreatePodWithOptionalInexistentSecrets(t *testi // TestCreatePodWithMandatoryInexistentSecrets tries to create a pod referencing inexistent secrets. // It then verifies that the pod is not created. func (ts *EndToEndTestSuite) TestCreatePodWithMandatoryInexistentSecrets(t *testing.T) { + ctx := context.Background() + // Create a pod with a single container referencing inexistent secrets. - pod, err := f.CreatePod(f.CreatePodObjectWithMandatorySecretKey(t.Name())) + pod, err := f.CreatePod(ctx, f.CreatePodObjectWithMandatorySecretKey(t.Name())) if err != nil { t.Fatal(err) } // Delete the pod after the test finishes. defer func() { - if err := f.DeletePodImmediately(pod.Namespace, pod.Name); err != nil && !apierrors.IsNotFound(err) { + if err := f.DeletePodImmediately(ctx, pod.Namespace, pod.Name); err != nil && !apierrors.IsNotFound(err) { t.Error(err) } }() @@ -312,7 +325,7 @@ func (ts *EndToEndTestSuite) TestCreatePodWithMandatoryInexistentSecrets(t *test } // Grab the pods from the provider. - pods, err := f.GetRunningPodsFromProvider() + pods, err := f.GetRunningPodsFromProvider(ctx) assert.NilError(t, err) // Check if the pod exists in the slice of PodStats. @@ -322,15 +335,17 @@ func (ts *EndToEndTestSuite) TestCreatePodWithMandatoryInexistentSecrets(t *test // TestCreatePodWithOptionalInexistentConfigMap tries to create a pod referencing optional, inexistent config map. // It then verifies that the pod is created successfully. func (ts *EndToEndTestSuite) TestCreatePodWithOptionalInexistentConfigMap(t *testing.T) { + ctx := context.Background() + // Create a pod with a single container referencing optional, inexistent config map. - pod, err := f.CreatePod(f.CreatePodObjectWithOptionalConfigMapKey(t.Name())) + pod, err := f.CreatePod(ctx, f.CreatePodObjectWithOptionalConfigMapKey(t.Name())) if err != nil { t.Fatal(err) } // Delete the pod after the test finishes. defer func() { - if err := f.DeletePodImmediately(pod.Namespace, pod.Name); err != nil && !apierrors.IsNotFound(err) { + if err := f.DeletePodImmediately(ctx, pod.Namespace, pod.Name); err != nil && !apierrors.IsNotFound(err) { t.Error(err) } }() @@ -346,7 +361,7 @@ func (ts *EndToEndTestSuite) TestCreatePodWithOptionalInexistentConfigMap(t *tes } // Grab the pods from the provider. - pods, err := f.GetRunningPodsFromProvider() + pods, err := f.GetRunningPodsFromProvider(ctx) assert.NilError(t, err) // Check if the pod exists in the slice of PodStats. @@ -356,15 +371,17 @@ func (ts *EndToEndTestSuite) TestCreatePodWithOptionalInexistentConfigMap(t *tes // TestCreatePodWithMandatoryInexistentConfigMap tries to create a pod referencing inexistent secrets. // It then verifies that the pod is not created. func (ts *EndToEndTestSuite) TestCreatePodWithMandatoryInexistentConfigMap(t *testing.T) { + ctx := context.Background() + // Create a pod with a single container referencing inexistent config map. - pod, err := f.CreatePod(f.CreatePodObjectWithMandatoryConfigMapKey(t.Name())) + pod, err := f.CreatePod(ctx, f.CreatePodObjectWithMandatoryConfigMapKey(t.Name())) if err != nil { t.Fatal(err) } // Delete the pod after the test finishes. defer func() { - if err := f.DeletePodImmediately(pod.Namespace, pod.Name); err != nil && !apierrors.IsNotFound(err) { + if err := f.DeletePodImmediately(ctx, pod.Namespace, pod.Name); err != nil && !apierrors.IsNotFound(err) { t.Error(err) } }() @@ -375,7 +392,7 @@ func (ts *EndToEndTestSuite) TestCreatePodWithMandatoryInexistentConfigMap(t *te } // Grab the pods from the provider. - pods, err := f.GetRunningPodsFromProvider() + pods, err := f.GetRunningPodsFromProvider(ctx) assert.NilError(t, err) // Check if the pod exists in the slice of PodStats. diff --git a/test/e2e/node.go b/test/e2e/node.go index c928ea3d1..61bd3aa84 100644 --- a/test/e2e/node.go +++ b/test/e2e/node.go @@ -19,7 +19,7 @@ func (ts *EndToEndTestSuite) TestNodeCreateAfterDelete(t *testing.T) { ctx, cancel := context.WithCancel(context.Background()) defer cancel() - podList, err := f.KubeClient.CoreV1().Pods(f.Namespace).List(metav1.ListOptions{ + podList, err := f.KubeClient.CoreV1().Pods(f.Namespace).List(ctx, metav1.ListOptions{ FieldSelector: fields.OneTermEqualSelector("spec.nodeName", f.NodeName).String(), }) @@ -28,7 +28,7 @@ func (ts *EndToEndTestSuite) TestNodeCreateAfterDelete(t *testing.T) { chErr := make(chan error, 1) - originalNode, err := f.GetNode() + originalNode, err := f.GetNode(ctx) assert.NilError(t, err) ctx, cancel = context.WithTimeout(ctx, time.Minute) @@ -50,7 +50,7 @@ func (ts *EndToEndTestSuite) TestNodeCreateAfterDelete(t *testing.T) { chErr <- f.WaitUntilNodeCondition(wait) }() - assert.NilError(t, f.DeleteNode()) + assert.NilError(t, f.DeleteNode(ctx)) select { case result := <-chErr: