diff --git a/LICENSES b/LICENSES index 2b794be57..d0a2cc520 100644 --- a/LICENSES +++ b/LICENSES @@ -26645,6 +26645,252 @@ third-party archives. ================================================================================ +================================================================================ += vendor/sigs.k8s.io/json licensed under: = + +Files other than internal/golang/* licensed under: + + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright {yyyy} {name of copyright owner} + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + +------------------ + +internal/golang/* files licensed under: + + +Copyright (c) 2009 The Go Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + += vendor/sigs.k8s.io/json/LICENSE 545d3f23616dee7495323aeb0b098df3 +================================================================================ + + ================================================================================ = vendor/sigs.k8s.io/kustomize/api licensed under: = diff --git a/cmd/acmesolver/app/app.go b/cmd/acmesolver/app/app.go index 7b4954daa..325132633 100644 --- a/cmd/acmesolver/app/app.go +++ b/cmd/acmesolver/app/app.go @@ -35,7 +35,7 @@ func NewACMESolverCommand(stopCh <-chan struct{}) *cobra.Command { Short: "HTTP server used to solve ACME challenges.", RunE: func(cmd *cobra.Command, args []string) error { rootCtx := util.ContextWithStopCh(context.Background(), stopCh) - rootCtx = logf.NewContext(rootCtx, nil, "acmesolver") + rootCtx = logf.NewContext(rootCtx, logf.Log, "acmesolver") log := logf.FromContext(rootCtx) completedCh := make(chan struct{}) diff --git a/cmd/controller/app/controller.go b/cmd/controller/app/controller.go index 31145ba6b..d795a6132 100644 --- a/cmd/controller/app/controller.go +++ b/cmd/controller/app/controller.go @@ -70,12 +70,11 @@ const controllerAgentName = "cert-manager" const resyncPeriod = 10 * time.Hour func Run(opts *options.ControllerOptions, stopCh <-chan struct{}) error { - rootCtx := cmdutil.ContextWithStopCh(context.Background(), stopCh) - rootCtx, cancelContext := context.WithCancel(rootCtx) + rootCtx, cancelContext := context.WithCancel(cmdutil.ContextWithStopCh(context.Background(), stopCh)) defer cancelContext() - g, rootCtx := errgroup.WithContext(rootCtx) - rootCtx = logf.NewContext(rootCtx, nil, "controller") + rootCtx = logf.NewContext(rootCtx, logf.Log, "controller") log := logf.FromContext(rootCtx) + g, rootCtx := errgroup.WithContext(rootCtx) ctx, kubeCfg, err := buildControllerContext(rootCtx, opts) if err != nil { diff --git a/cmd/webhook/app/testing/BUILD.bazel b/cmd/webhook/app/testing/BUILD.bazel index cb06308e4..52c67e689 100644 --- a/cmd/webhook/app/testing/BUILD.bazel +++ b/cmd/webhook/app/testing/BUILD.bazel @@ -8,9 +8,9 @@ go_library( deps = [ "//cmd/webhook/app:go_default_library", "//cmd/webhook/app/options:go_default_library", - "//pkg/logs/testing:go_default_library", "//pkg/util/pki:go_default_library", "//pkg/webhook/server:go_default_library", + "@com_github_go_logr_logr//testing:go_default_library", "@com_github_spf13_pflag//:go_default_library", "@io_k8s_apimachinery//pkg/util/wait:go_default_library", "@io_k8s_utils//pointer:go_default_library", diff --git a/cmd/webhook/app/testing/testwebhook.go b/cmd/webhook/app/testing/testwebhook.go index e0df906e7..26cc1ca78 100644 --- a/cmd/webhook/app/testing/testwebhook.go +++ b/cmd/webhook/app/testing/testwebhook.go @@ -31,13 +31,13 @@ import ( "testing" "time" + logtesting "github.com/go-logr/logr/testing" "github.com/spf13/pflag" "k8s.io/apimachinery/pkg/util/wait" "k8s.io/utils/pointer" "github.com/jetstack/cert-manager/cmd/webhook/app" "github.com/jetstack/cert-manager/cmd/webhook/app/options" - logtesting "github.com/jetstack/cert-manager/pkg/logs/testing" "github.com/jetstack/cert-manager/pkg/util/pki" "github.com/jetstack/cert-manager/pkg/webhook/server" ) @@ -57,7 +57,7 @@ type ServerOptions struct { } func StartWebhookServer(t *testing.T, ctx context.Context, args []string, argumentsForNewServerWithOptions ...app.ServerOption) (ServerOptions, StopFunc) { - log := logtesting.TestLogger{T: t} + log := logtesting.NewTestLogger(t) fs := pflag.NewFlagSet("testset", pflag.ExitOnError) webhookFlags := options.NewWebhookFlags() @@ -98,16 +98,16 @@ func StartWebhookServer(t *testing.T, ctx context.Context, args []string, argume webhookConfig.SecurePort = pointer.Int(0) webhookConfig.HealthzPort = pointer.Int(0) - stopCh := make(chan struct{}) errCh := make(chan error) srv, err := app.NewServerWithOptions(log, *webhookFlags, *webhookConfig, argumentsForNewServerWithOptions...) if err != nil { t.Fatal(err) } + ctx, cancel := context.WithCancel(ctx) go func() { defer close(errCh) - if err := srv.Run(stopCh); err != nil { + if err := srv.Run(ctx); err != nil { errCh <- fmt.Errorf("error running webhook server: %v", err) } }() @@ -132,7 +132,7 @@ func StartWebhookServer(t *testing.T, ctx context.Context, args []string, argume CAPEM: caPEM, } return serverOpts, func() { - close(stopCh) + cancel() err := <-errCh // Wait for shutdown if err != nil { t.Fatal(err) diff --git a/cmd/webhook/app/webhook.go b/cmd/webhook/app/webhook.go index 1f2722994..7690156cd 100644 --- a/cmd/webhook/app/webhook.go +++ b/cmd/webhook/app/webhook.go @@ -75,7 +75,6 @@ func NewServerWithOptions(log logr.Logger, _ options.WebhookFlags, opts config.W source = &tls.FileCertificateSource{ CertPath: opts.TLSConfig.Filesystem.CertFile, KeyPath: opts.TLSConfig.Filesystem.KeyFile, - Log: log, } case opts.TLSConfig.DynamicConfigProvided(): restcfg, err := clientcmd.BuildConfigFromFlags("", opts.KubeConfig) @@ -90,9 +89,7 @@ func NewServerWithOptions(log logr.Logger, _ options.WebhookFlags, opts config.W SecretNamespace: opts.TLSConfig.Dynamic.SecretNamespace, SecretName: opts.TLSConfig.Dynamic.SecretName, RESTConfig: restcfg, - Log: log, }, - Log: log, } default: log.V(logf.WarnLevel).Info("serving insecurely as tls certificate data not provided") @@ -109,7 +106,6 @@ func NewServerWithOptions(log logr.Logger, _ options.WebhookFlags, opts config.W ValidationWebhook: validationHook, MutationWebhook: mutationHook, ConversionWebhook: conversionHook, - Log: log, } for _, f := range optionFunctions { f(s) @@ -121,8 +117,8 @@ const componentWebhook = "webhook" func NewServerCommand(stopCh <-chan struct{}) *cobra.Command { ctx := cmdutil.ContextWithStopCh(context.Background(), stopCh) - ctx = logf.NewContext(ctx, nil, "webhook") - log := logf.FromContext(ctx) + log := logf.Log + ctx = logf.NewContext(ctx, log, "webhook") cleanFlagSet := pflag.NewFlagSet(componentWebhook, pflag.ContinueOnError) // Replaces all instances of `_` in flag names with `-` @@ -193,7 +189,7 @@ func NewServerCommand(stopCh <-chan struct{}) *cobra.Command { os.Exit(1) } - if err := srv.Run(stopCh); err != nil { + if err := srv.Run(ctx); err != nil { log.Error(err, "Failed running server") os.Exit(1) } diff --git a/go.mod b/go.mod index 378bef51a..758a4a2a2 100644 --- a/go.mod +++ b/go.mod @@ -13,7 +13,7 @@ require ( github.com/cloudflare/cloudflare-go v0.20.0 github.com/cpu/goacmedns v0.1.1 github.com/digitalocean/godo v1.65.0 - github.com/go-logr/logr v0.4.0 + github.com/go-logr/logr v1.2.0 github.com/google/gofuzz v1.2.0 github.com/googleapis/gnostic v0.5.5 github.com/hashicorp/vault/api v1.1.1 @@ -22,8 +22,8 @@ require ( github.com/miekg/dns v1.1.34 github.com/mitchellh/go-homedir v1.1.0 github.com/munnerz/crd-schema-fuzz v1.0.0 - github.com/onsi/ginkgo v1.16.4 - github.com/onsi/gomega v1.15.0 + github.com/onsi/ginkgo v1.16.5 + github.com/onsi/gomega v1.17.0 github.com/pavel-v-chernykh/keystore-go/v4 v4.2.0 github.com/pkg/errors v0.9.1 github.com/prometheus/client_golang v1.11.0 @@ -32,29 +32,29 @@ require ( github.com/spf13/pflag v1.0.5 github.com/stretchr/testify v1.7.0 golang.org/x/crypto v0.0.0-20210921155107-089bfa567519 - golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d - golang.org/x/oauth2 v0.0.0-20210810183815-faf39c7919d5 + golang.org/x/net v0.0.0-20211209124913-491a49abca63 + golang.org/x/oauth2 v0.0.0-20210819190943-2bc19b11175f golang.org/x/sync v0.0.0-20210220032951-036812b2e83c gomodules.xyz/jsonpatch/v2 v2.2.0 google.golang.org/api v0.53.0 helm.sh/helm/v3 v3.7.1 - k8s.io/api v0.22.2 - k8s.io/apiextensions-apiserver v0.22.2 - k8s.io/apimachinery v0.22.2 - k8s.io/apiserver v0.22.2 - k8s.io/cli-runtime v0.22.1 - k8s.io/client-go v0.22.2 - k8s.io/code-generator v0.22.2 - k8s.io/component-base v0.22.2 - k8s.io/klog/v2 v2.9.0 - k8s.io/kube-aggregator v0.22.0 - k8s.io/kube-openapi v0.0.0-20210527164424-3c818078ee3d - k8s.io/kubectl v0.22.1 - k8s.io/utils v0.0.0-20210819203725-bdf08cb9a70a - sigs.k8s.io/controller-runtime v0.10.1 + k8s.io/api v0.23.1 + k8s.io/apiextensions-apiserver v0.23.1 + k8s.io/apimachinery v0.23.1 + k8s.io/apiserver v0.23.1 + k8s.io/cli-runtime v0.23.1 + k8s.io/client-go v0.23.1 + k8s.io/code-generator v0.23.1 + k8s.io/component-base v0.23.1 + k8s.io/klog/v2 v2.30.0 + k8s.io/kube-aggregator v0.23.1 + k8s.io/kube-openapi v0.0.0-20211115234752-e816edb12b65 + k8s.io/kubectl v0.23.1 + k8s.io/utils v0.0.0-20210930125809-cb0fa318a74b + sigs.k8s.io/controller-runtime v0.11.0 sigs.k8s.io/controller-tools v0.7.0 sigs.k8s.io/gateway-api v0.3.0 - sigs.k8s.io/yaml v1.2.0 + sigs.k8s.io/yaml v1.3.0 software.sslmate.com/src/go-pkcs12 v0.0.0-20210415151418-c5206de65a78 ) @@ -98,13 +98,13 @@ require ( github.com/docker/go-metrics v0.0.1 // indirect github.com/docker/go-units v0.4.0 // indirect github.com/emicklei/go-restful v2.9.5+incompatible // indirect - github.com/evanphx/json-patch v4.11.0+incompatible // indirect + github.com/evanphx/json-patch v4.12.0+incompatible // indirect github.com/exponent-io/jsonpath v0.0.0-20151013193312-d6023ce2651d // indirect github.com/fatih/camelcase v1.0.0 // indirect github.com/fatih/color v1.12.0 // indirect github.com/felixge/httpsnoop v1.0.1 // indirect github.com/form3tech-oss/jwt-go v3.2.3+incompatible // indirect - github.com/fsnotify/fsnotify v1.4.9 // indirect + github.com/fsnotify/fsnotify v1.5.1 // indirect github.com/go-errors/errors v1.0.1 // indirect github.com/go-openapi/jsonpointer v0.19.5 // indirect github.com/go-openapi/jsonreference v0.19.5 // indirect @@ -141,7 +141,7 @@ require ( github.com/jmespath/go-jmespath v0.4.0 // indirect github.com/jmoiron/sqlx v1.3.1 // indirect github.com/josharian/intern v1.0.0 // indirect - github.com/json-iterator/go v1.1.11 // indirect + github.com/json-iterator/go v1.1.12 // indirect github.com/klauspost/compress v1.13.6 // indirect github.com/kr/text v0.2.0 // indirect github.com/lann/builder v0.0.0-20180802200727-47ae307949d0 // indirect @@ -161,7 +161,7 @@ require ( github.com/moby/spdystream v0.2.0 // indirect github.com/moby/term v0.0.0-20210610120745-9d4ed1856297 // indirect github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect - github.com/modern-go/reflect2 v1.0.1 // indirect + github.com/modern-go/reflect2 v1.0.2 // indirect github.com/monochromegane/go-gitignore v0.0.0-20200626010858-205db1a8cc00 // indirect github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect github.com/nxadm/tail v1.4.8 // indirect @@ -174,7 +174,7 @@ require ( github.com/pierrec/lz4 v2.5.2+incompatible // indirect github.com/pmezard/go-difflib v1.0.0 // indirect github.com/prometheus/client_model v0.2.0 // indirect - github.com/prometheus/common v0.26.0 // indirect + github.com/prometheus/common v0.28.0 // indirect github.com/prometheus/procfs v0.6.0 // indirect github.com/rogpeppe/go-internal v1.6.1 // indirect github.com/rubenv/sql-migrate v0.0.0-20210614095031-55d5740dbbcc // indirect @@ -207,13 +207,13 @@ require ( go.starlark.net v0.0.0-20200306205701-8dd3e2ee1dd5 // indirect go.uber.org/atomic v1.7.0 // indirect go.uber.org/multierr v1.6.0 // indirect - go.uber.org/zap v1.19.0 // indirect + go.uber.org/zap v1.19.1 // indirect golang.org/x/mod v0.4.2 // indirect - golang.org/x/sys v0.0.0-20210817190340-bfb29a6856f2 // indirect - golang.org/x/term v0.0.0-20210220032956-6a3ed077a48d // indirect - golang.org/x/text v0.3.6 // indirect + golang.org/x/sys v0.0.0-20211029165221-6e7872819dc8 // indirect + golang.org/x/term v0.0.0-20210615171337-6886f2dfbf5b // indirect + golang.org/x/text v0.3.7 // indirect golang.org/x/time v0.0.0-20210723032227-1f47c861a9ac // indirect - golang.org/x/tools v0.1.5 // indirect + golang.org/x/tools v0.1.6-0.20210820212750-d4cc65f0b2ff // indirect golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 // indirect google.golang.org/appengine v1.6.7 // indirect google.golang.org/genproto v0.0.0-20211005153810-c76a74d43a8e // indirect @@ -227,12 +227,13 @@ require ( gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b // indirect - k8s.io/gengo v0.0.0-20201214224949-b6c5ce23f027 // indirect + k8s.io/gengo v0.0.0-20210813121822-485abfe95c7c // indirect oras.land/oras-go v0.4.0 // indirect - sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.22 // indirect - sigs.k8s.io/kustomize/api v0.8.11 // indirect - sigs.k8s.io/kustomize/kyaml v0.11.0 // indirect - sigs.k8s.io/structured-merge-diff/v4 v4.1.2 // indirect + sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.25 // indirect + sigs.k8s.io/json v0.0.0-20211020170558-c049b76a60c6 // indirect + sigs.k8s.io/kustomize/api v0.10.1 // indirect + sigs.k8s.io/kustomize/kyaml v0.13.0 // indirect + sigs.k8s.io/structured-merge-diff/v4 v4.2.0 // indirect ) replace golang.org/x/net => golang.org/x/net v0.0.0-20210224082022-3d97a244fca7 diff --git a/go.sum b/go.sum index 85cab5b64..35efcf686 100644 --- a/go.sum +++ b/go.sum @@ -158,6 +158,7 @@ github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk5 github.com/alexflint/go-filemutex v0.0.0-20171022225611-72bdc8eae2ae/go.mod h1:CgnQgUtFrFz9mxFNtED3jI5tLDjKlOM+oUF/sTk6ps0= github.com/andreyvit/diff v0.0.0-20170406064948-c7f18ee00883/go.mod h1:rCTlJbsFo29Kk6CurOXKm700vrz8f0KW0JNfpkRJY/8= github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= +github.com/antlr/antlr4/runtime/Go/antlr v0.0.0-20210826220005-b48c857c3a0e/go.mod h1:F7bn7fEU90QkQ3tnmaTx3LTKLEDqnwWODIYppRQ5hnY= github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= @@ -434,8 +435,9 @@ github.com/evanphx/json-patch v0.5.2/go.mod h1:ZWS5hhDbVDyob71nXKNL0+PWn6ToqBHMi github.com/evanphx/json-patch v4.2.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= github.com/evanphx/json-patch v4.5.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= github.com/evanphx/json-patch v4.9.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= -github.com/evanphx/json-patch v4.11.0+incompatible h1:glyUF9yIYtMHzn8xaKw5rMhdWcwsYV8dZHIq5567/xs= github.com/evanphx/json-patch v4.11.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= +github.com/evanphx/json-patch v4.12.0+incompatible h1:4onqiflcdA9EOZ4RxV643DvftH5pOlLGNtQ5lPWQu84= +github.com/evanphx/json-patch v4.12.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= github.com/exponent-io/jsonpath v0.0.0-20151013193312-d6023ce2651d h1:105gxyaGwCFad8crR9dcMQWvV9Hvulu6hwUh4tWPJnM= github.com/exponent-io/jsonpath v0.0.0-20151013193312-d6023ce2651d/go.mod h1:ZZMPRZwes7CROmyNKgQzC3XPs6L/G2EJLHddWejkmf4= github.com/fatih/camelcase v1.0.0 h1:hxNvNX/xYBp0ovncs8WyWZrOrpBNub/JfaMvbURyft8= @@ -455,12 +457,14 @@ github.com/frankban/quicktest v1.10.0/go.mod h1:ui7WezCLWMWxVWr1GETZY3smRy0G4KWq github.com/frankban/quicktest v1.11.3 h1:8sXhOn0uLys67V8EsXLc6eszDs8VXWxL3iRvebPhedY= github.com/frankban/quicktest v1.11.3/go.mod h1:wRf/ReqHper53s+kmmSZizM8NamnL3IM0I9ntUbOk+k= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= -github.com/fsnotify/fsnotify v1.4.9 h1:hsms1Qyu0jgnwNXIxa+/V/PDsU6CfLf6CNO8H7IWoS4= github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= +github.com/fsnotify/fsnotify v1.5.1 h1:mZcQUHVQUQWoPXXtuf9yuEXKudkV2sx1E06UadKWpgI= +github.com/fsnotify/fsnotify v1.5.1/go.mod h1:T3375wBYaZdLLcVNkcVbzGHY7f1l/uK5T5Ai1i3InKU= github.com/fullsailor/pkcs7 v0.0.0-20190404230743-d7302db945fa/go.mod h1:KnogPXtdwXqoenmZCw6S+25EAm2MkxbG0deNDu4cbSA= github.com/fvbommel/sortorder v1.0.1/go.mod h1:uk88iVf1ovNn1iLfgUVU2F9o5eO30ui720w+kxuqRs0= github.com/garyburd/redigo v0.0.0-20150301180006-535138d7bcd7 h1:LofdAjjjqCSXMwLGgOgnE+rdPuvX9DxCqaHwKy7i/ko= github.com/garyburd/redigo v0.0.0-20150301180006-535138d7bcd7/go.mod h1:NR3MbYisc3/PwhQ00EMzDiPmrwpPxAn5GI05/YaO1SY= +github.com/getkin/kin-openapi v0.76.0/go.mod h1:660oXbgy5JFMKreazJaQTw7o+X00qeSyhcnluiMv+Xg= github.com/getsentry/raven-go v0.2.0/go.mod h1:KungGk8q33+aIAZUIVWZDr2OfAEBsO49PX4NzFV5kcQ= github.com/ghodss/yaml v0.0.0-20150909031657-73d445a93680/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= @@ -484,11 +488,12 @@ github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG github.com/go-logr/logr v0.1.0/go.mod h1:ixOQHD9gLJUVQQ2ZOR7zLEifBX6tGkNJF4QyIY7sIas= github.com/go-logr/logr v0.2.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU= github.com/go-logr/logr v0.3.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU= -github.com/go-logr/logr v0.4.0 h1:K7/B1jt6fIBQVd4Owv2MqGQClcgf0R266+7C/QjRcLc= github.com/go-logr/logr v0.4.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU= +github.com/go-logr/logr v1.2.0 h1:QK40JKJyMdUDz+h+xvCsru/bJhvG0UxvePV0ufL/AcE= +github.com/go-logr/logr v1.2.0/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= github.com/go-logr/zapr v0.2.0/go.mod h1:qhKdvif7YF5GI9NWEpyxTSSBdGmzkNguibrdCNVPunU= -github.com/go-logr/zapr v0.4.0 h1:uc1uML3hRYL9/ZZPdgHS/n8Nzo+eaYL/Efxkkamf7OM= -github.com/go-logr/zapr v0.4.0/go.mod h1:tabnROwaDl0UNxkVeFRbY8bwB37GwRv0P8lg6aAiEnk= +github.com/go-logr/zapr v1.2.0 h1:n4JnPI1T3Qq1SFEi/F8rwLrZERp2bso19PJZDB9dayk= +github.com/go-logr/zapr v1.2.0/go.mod h1:Qa4Bsj2Vb+FAVeAKsLD8RLQ+YRJB8YDmOAKxaBQf7Ro= github.com/go-openapi/analysis v0.0.0-20180825180245-b006789cd277/go.mod h1:k70tL6pCuVxPJOHXQ+wIac1FUrvNkHolPie/cLEU6hI= github.com/go-openapi/analysis v0.17.0/go.mod h1:IowGgpVeD0vNm45So8nr+IcQ3pxVtpRoBWb8PVZO0ik= github.com/go-openapi/analysis v0.18.0/go.mod h1:IowGgpVeD0vNm45So8nr+IcQ3pxVtpRoBWb8PVZO0ik= @@ -576,6 +581,7 @@ github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= github.com/golang-sql/civil v0.0.0-20190719163853-cb61b32ac6fe/go.mod h1:8vg3r2VgvsThLBIFL93Qb5yWzgyZWhEmBwUJWevAkK0= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= +github.com/golang/glog v1.0.0/go.mod h1:EWib/APOK0SL3dFbYqvxE3UYd8E6s1ouQ7iEp/0LWV4= github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= @@ -621,6 +627,8 @@ github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Z github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v1.0.1 h1:gK4Kx5IaGY9CD5sPJ36FHiBJ6ZXl0kilRiiCj+jdYp4= github.com/google/btree v1.0.1/go.mod h1:xXMiIv4Fb/0kKde4SpL7qlzvu5cMJDRkFDxJfI9uaxA= +github.com/google/cel-go v0.9.0/go.mod h1:U7ayypeSkw23szu4GaQTPJGx66c20mx8JklMSxrmI1w= +github.com/google/cel-spec v0.6.0/go.mod h1:Nwjgxy5CbjlPrtCWjeDjUyKMl8w41YBYGjsyDdqk0xA= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= @@ -804,8 +812,9 @@ github.com/json-iterator/go v1.1.7/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/u github.com/json-iterator/go v1.1.8/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= -github.com/json-iterator/go v1.1.11 h1:uVUAXhF2To8cbw/3xN3pxj6kk7TYKs98NIrTqPlMWAQ= github.com/json-iterator/go v1.1.11/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= +github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= github.com/jtolds/gls v4.20.0+incompatible h1:xdiiI2gbIgH/gLH7ADydsJ1uDOEzR8yvV7C0MuV77Wo= @@ -933,8 +942,9 @@ github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJ github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= -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/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= +github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= github.com/monochromegane/go-gitignore v0.0.0-20200626010858-205db1a8cc00 h1:n6/2gBQ3RWajuToeY6ZtZTIKv2v7ThUy5KKusIT0yc0= github.com/monochromegane/go-gitignore v0.0.0-20200626010858-205db1a8cc00/go.mod h1:Pm3mSP3c5uWn86xMLZ5Sa7JB9GsEZySvHYXCTK4E9q4= github.com/morikuni/aec v1.0.0/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc= @@ -967,8 +977,9 @@ github.com/onsi/ginkgo v1.11.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+ github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk= github.com/onsi/ginkgo v1.14.0/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY= github.com/onsi/ginkgo v1.14.1/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY= -github.com/onsi/ginkgo v1.16.4 h1:29JGrr5oVBm5ulCWet69zQkzWipVXIol6ygQUe/EzNc= github.com/onsi/ginkgo v1.16.4/go.mod h1:dX+/inL/fNMqNlz0e9LfyB9TswhZpCVdJM/Z6Vvnwo0= +github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE= +github.com/onsi/ginkgo v1.16.5/go.mod h1:+E8gABHa3K6zRBolWtd+ROzc/U5bkGt0FwiG042wbpU= github.com/onsi/gomega v0.0.0-20151007035656-2152b45fa28a/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= github.com/onsi/gomega v0.0.0-20170829124025-dcabb60a477c/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= github.com/onsi/gomega v1.7.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= @@ -977,8 +988,8 @@ github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1y github.com/onsi/gomega v1.10.2/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= github.com/onsi/gomega v1.10.3/go.mod h1:V9xEwhxec5O8UDM77eCW8vLymOMltsqPVYWrpDsH8xc= github.com/onsi/gomega v1.14.0/go.mod h1:cIuvLEne0aoVhAgh/O6ac0Op8WWw9H6eYCriF+tEHG0= -github.com/onsi/gomega v1.15.0 h1:WjP/FQ/sk43MRmnEcT+MlDw2TFvkrXlprrPST/IudjU= -github.com/onsi/gomega v1.15.0/go.mod h1:cIuvLEne0aoVhAgh/O6ac0Op8WWw9H6eYCriF+tEHG0= +github.com/onsi/gomega v1.17.0 h1:9Luw4uT5HTjHTN8+aNcSThgH1vdXnmdJ8xIfZ4wyTRE= +github.com/onsi/gomega v1.17.0/go.mod h1:HnhC7FXeEQY45zxNK3PPoIUhzk/80Xly9PcubAlGdZY= github.com/opencontainers/go-digest v0.0.0-20170106003457-a6d0ee40d420/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= github.com/opencontainers/go-digest v0.0.0-20180430190053-c9281466c8b2/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= github.com/opencontainers/go-digest v1.0.0-rc1/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= @@ -1062,8 +1073,9 @@ github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y8 github.com/prometheus/common v0.6.0/go.mod h1:eBmuwkDJBwy6iBfxCBob6t6dR6ENT/y+J+Zk0j9GMYc= github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= -github.com/prometheus/common v0.26.0 h1:iMAkS2TDoNWnKM+Kopnx/8tnEStIfpYA0ur0xQzzhMQ= github.com/prometheus/common v0.26.0/go.mod h1:M7rCNAaPfAosfx8veZJCuw84e35h3Cfd9VFqTh1DIvc= +github.com/prometheus/common v0.28.0 h1:vGVfV9KrDTvWt5boZO0I19g2E3CsWfpPPKZM9dt3mEw= +github.com/prometheus/common v0.28.0/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls= github.com/prometheus/procfs v0.0.0-20180125133057-cb4147076ac7/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20181204211112-1dc9a6cbc91a/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= @@ -1213,6 +1225,7 @@ github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9de github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= +github.com/yuin/goldmark v1.4.0/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= github.com/yvasiyarov/go-metrics v0.0.0-20140926110328-57bccd1ccd43 h1:+lm10QQTNSBd8DVTNGHx7o/IKu9HYDvLMffDhbyLccI= github.com/yvasiyarov/go-metrics v0.0.0-20140926110328-57bccd1ccd43/go.mod h1:aX5oPXxHm3bOH+xeAttToC8pqch2ScQN/JoXYupl6xs= github.com/yvasiyarov/gorelic v0.0.0-20141212073537-a9bba5b9ab50 h1:hlE8//ciYMztlGpl/VA+Zm1AcTPHYkHJPbHqE6WJUXE= @@ -1286,8 +1299,10 @@ go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.6.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= go.uber.org/atomic v1.7.0 h1:ADUqmZGgLDDfbSL9ZmPxKTybcoEYHgpYfELNoN+7hsw= go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= -go.uber.org/goleak v1.1.10 h1:z+mqJhf6ss6BSfSM671tgKyZBFPTTJM+HLxnhPC3wu0= go.uber.org/goleak v1.1.10/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A= +go.uber.org/goleak v1.1.11-0.20210813005559-691160354723/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ= +go.uber.org/goleak v1.1.12 h1:gZAh5/EyT/HQwlpkCy6wTpqfH9H8Lz8zbm3dZh+OyzA= +go.uber.org/goleak v1.1.12/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ= go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= go.uber.org/multierr v1.5.0/go.mod h1:FeouvMocqHpRaaGuG9EjoKcStLC43Zu/fmqdUMPcKYU= go.uber.org/multierr v1.6.0 h1:y6IPFStTAIT5Ytl7/XYmHvzXQ7S3g/IeZW9hyZ5thw4= @@ -1297,8 +1312,9 @@ go.uber.org/zap v1.8.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= go.uber.org/zap v1.15.0/go.mod h1:Mb2vm2krFEG5DV0W9qcHBYFtp/Wku1cvYaqPsS/WYfc= go.uber.org/zap v1.17.0/go.mod h1:MXVU+bhUf/A7Xi2HNOnopQOrmycQ5Ih87HtOu4q5SSo= -go.uber.org/zap v1.19.0 h1:mZQZefskPPCMIBCSEH0v2/iUqqLrYtaeqwD6FUGUnFE= go.uber.org/zap v1.19.0/go.mod h1:xg/QME4nWcxGxrpdeYfq7UvYrLh66cuVKdrbD1XF/NI= +go.uber.org/zap v1.19.1 h1:ue41HOKd1vGURxrmeKIgELGb3jPW9DMUDGtsinblHwI= +go.uber.org/zap v1.19.1/go.mod h1:j3DNczoxDZroyBnOT1L/Q79cfUMGZxlv/9dzN7SM1rI= golang.org/x/crypto v0.0.0-20171113213409-9f005a07e0d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181009213950-7c1a557ab941/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= @@ -1328,6 +1344,7 @@ golang.org/x/crypto v0.0.0-20201002170205-7f63de1d35b0/go.mod h1:LzIPMQfyMNhhGPh golang.org/x/crypto v0.0.0-20210220033148-5ea612d1eb83/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= golang.org/x/crypto v0.0.0-20210513164829-c07d793c2f9a/go.mod h1:P+XmwS30IXTQdn5tA2iutPOUgjI07+tq3H3K9MVA1s8= +golang.org/x/crypto v0.0.0-20210817164053-32db794688a5/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519 h1:7I4JAnoQBe7ZtJcBaYHi5UtiO8tQHbUSXxL+pnGRANg= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= @@ -1353,7 +1370,6 @@ golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRu golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= golang.org/x/lint v0.0.0-20201208152925-83fdc39ff7b5/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/lint v0.0.0-20210508222113-6edffad5e616 h1:VLliZ0d+/avPrXXH+OakdXhpJuEoBZuwh1m2j7U6Iug= golang.org/x/lint v0.0.0-20210508222113-6edffad5e616/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= @@ -1385,8 +1401,8 @@ golang.org/x/oauth2 v0.0.0-20210402161424-2e8d93401602/go.mod h1:KelEdhl1UZF7XfJ golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210628180205-a41e5a781914/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210805134026-6f1e6394065a/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210810183815-faf39c7919d5 h1:Ati8dO7+U7mxpkPSxBZQEvzHVUYB/MqCklCN8ig5w/o= -golang.org/x/oauth2 v0.0.0-20210810183815-faf39c7919d5/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210819190943-2bc19b11175f h1:Qmd2pbz05z7z6lm0DrgQVVPuBm92jqujBKMHMOlOQEw= +golang.org/x/oauth2 v0.0.0-20210819190943-2bc19b11175f/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -1499,12 +1515,15 @@ golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210817190340-bfb29a6856f2 h1:c8PlLMqBbOHoqtjteWm5/kbe6rNY2pbRfbIMVnepueo= -golang.org/x/sys v0.0.0-20210817190340-bfb29a6856f2/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210809222454-d867a43fc93e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210831042530-f4d43177bf5e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211029165221-6e7872819dc8 h1:M69LAlWZCshgp0QSzyDcSsSIejIEeuaCVpmwcKwyLMk= +golang.org/x/sys v0.0.0-20211029165221-6e7872819dc8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= -golang.org/x/term v0.0.0-20210220032956-6a3ed077a48d h1:SZxvLBoTP5yHO3Frd4z4vrF+DBX9vMVanchswa69toE= golang.org/x/term v0.0.0-20210220032956-6a3ed077a48d/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +golang.org/x/term v0.0.0-20210615171337-6886f2dfbf5b h1:9zKuko04nR4gjZ4+DNjHqRlAJqbJETHwiNKDqTfOjfE= +golang.org/x/term v0.0.0-20210615171337-6886f2dfbf5b/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/text v0.0.0-20160726164857-2910a502d2bf/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -1513,8 +1532,9 @@ golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.6 h1:aRYxNxv6iGQlyVaZmk6ZgYEDa+Jg18DxebPSrd6bg1M= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.7 h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk= +golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= @@ -1595,8 +1615,9 @@ golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.3/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.4/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.5 h1:ouewzE6p+/VEB31YYnTbEJdi8pFqKp4P4n85vwo3DHA= golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.6-0.20210820212750-d4cc65f0b2ff h1:VX/uD7MK0AHXGiScH3fsieUQUcpmRERPDYtqZdJnA+Q= +golang.org/x/tools v0.1.6-0.20210820212750-d4cc65f0b2ff/go.mod h1:YD9qOF0M9xpSpdWTBbzEl5e/RnCefISl8E5Noe10jFM= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -1678,6 +1699,7 @@ google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6D google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20200904004341-0bd0a958aa1d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20201019141844-1ed22bb0c154/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201102152239-715cce707fb0/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20201110150050-8816d57aaa9a/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20201201144952-b05cb90ed32e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= @@ -1697,6 +1719,7 @@ google.golang.org/genproto v0.0.0-20210713002101-d411969a0d9a/go.mod h1:AxrInvYm google.golang.org/genproto v0.0.0-20210716133855-ce7ef5c701ea/go.mod h1:AxrInvYm1dci+enl5hChSFPOmmUF1+uAa/UsgNRWd7k= google.golang.org/genproto v0.0.0-20210728212813-7823e685a01f/go.mod h1:ob2IJxKrgPT52GcgX759i1sleT07tiKowYBGbczaW48= google.golang.org/genproto v0.0.0-20210805201207-89edb61ffb67/go.mod h1:ob2IJxKrgPT52GcgX759i1sleT07tiKowYBGbczaW48= +google.golang.org/genproto v0.0.0-20210831024726-fe130286e0e2/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= google.golang.org/genproto v0.0.0-20211005153810-c76a74d43a8e h1:Im71rbA1N3CbIag/PumYhQcNR8bLNmuOtRIyOnnLsT8= google.golang.org/genproto v0.0.0-20211005153810-c76a74d43a8e/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= google.golang.org/grpc v0.0.0-20160317175043-d3ddb4469d5a/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= @@ -1813,65 +1836,75 @@ k8s.io/api v0.20.2/go.mod h1:d7n6Ehyzx+S+cE3VhTGfVNNqtGc/oL9DCdYYahlurV8= k8s.io/api v0.20.4/go.mod h1:++lNL1AJMkDymriNniQsWRkMDzRaX2Y/POTUi8yvqYQ= k8s.io/api v0.20.6/go.mod h1:X9e8Qag6JV/bL5G6bU8sdVRltWKmdHsFUGS3eVndqE8= k8s.io/api v0.21.0/go.mod h1:+YbrhBBGgsxbF6o6Kj4KJPJnBmAKuXDeS3E18bgHNVU= -k8s.io/api v0.22.0/go.mod h1:0AoXXqst47OI/L0oGKq9DG61dvGRPXs7X4/B7KyjBCU= k8s.io/api v0.22.1/go.mod h1:bh13rkTp3F1XEaLGykbyRD2QaTTzPm0e/BMd8ptFONY= -k8s.io/api v0.22.2 h1:M8ZzAD0V6725Fjg53fKeTJxGsJvRbk4TEm/fexHMtfw= k8s.io/api v0.22.2/go.mod h1:y3ydYpLJAaDI+BbSe2xmGcqxiWHmWjkEeIbiwHvnPR8= +k8s.io/api v0.23.0/go.mod h1:8wmDdLBHBNxtOIytwLstXt5E9PddnZb0GaMcqsvDBpg= +k8s.io/api v0.23.1 h1:ncu/qfBfUoClqwkTGbeRqqOqBCRoUAflMuOaOD7J0c8= +k8s.io/api v0.23.1/go.mod h1:WfXnOnwSqNtG62Y1CdjoMxh7r7u9QXGCkA1u0na2jgo= k8s.io/apiextensions-apiserver v0.18.0/go.mod h1:18Cwn1Xws4xnWQNC00FLq1E350b9lUF+aOdIWDOZxgo= k8s.io/apiextensions-apiserver v0.20.1/go.mod h1:ntnrZV+6a3dB504qwC5PN/Yg9PBiDNt1EVqbW2kORVk= k8s.io/apiextensions-apiserver v0.20.2/go.mod h1:F6TXp389Xntt+LUq3vw6HFOLttPa0V8821ogLGwb6Zs= k8s.io/apiextensions-apiserver v0.22.1/go.mod h1:HeGmorjtRmRLE+Q8dJu6AYRoZccvCMsghwS8XTUYb2c= -k8s.io/apiextensions-apiserver v0.22.2 h1:zK7qI8Ery7j2CaN23UCFaC1hj7dMiI87n01+nKuewd4= k8s.io/apiextensions-apiserver v0.22.2/go.mod h1:2E0Ve/isxNl7tWLSUDgi6+cmwHi5fQRdwGVCxbC+KFA= +k8s.io/apiextensions-apiserver v0.23.0/go.mod h1:xIFAEEDlAZgpVBl/1VSjGDmLoXAWRG40+GsWhKhAxY4= +k8s.io/apiextensions-apiserver v0.23.1 h1:xxE0q1vLOVZiWORu1KwNRQFsGWtImueOrqSl13sS5EU= +k8s.io/apiextensions-apiserver v0.23.1/go.mod h1:0qz4fPaHHsVhRApbtk3MGXNn2Q9M/cVWWhfHdY2SxiM= k8s.io/apimachinery v0.18.0/go.mod h1:9SnR/e11v5IbyPCGbvJViimtJ0SwHG4nfZFjU77ftcA= k8s.io/apimachinery v0.20.1/go.mod h1:WlLqWAHZGg07AeltaI0MV5uk1Omp8xaN0JGLY6gkRpU= k8s.io/apimachinery v0.20.2/go.mod h1:WlLqWAHZGg07AeltaI0MV5uk1Omp8xaN0JGLY6gkRpU= k8s.io/apimachinery v0.20.4/go.mod h1:WlLqWAHZGg07AeltaI0MV5uk1Omp8xaN0JGLY6gkRpU= k8s.io/apimachinery v0.20.6/go.mod h1:ejZXtW1Ra6V1O5H8xPBGz+T3+4gfkTCeExAHKU57MAc= k8s.io/apimachinery v0.21.0/go.mod h1:jbreFvJo3ov9rj7eWT7+sYiRx+qZuCYXwWT1bcDswPY= -k8s.io/apimachinery v0.22.0/go.mod h1:O3oNtNadZdeOMxHFVxOreoznohCpy0z6mocxbZr7oJ0= k8s.io/apimachinery v0.22.1/go.mod h1:O3oNtNadZdeOMxHFVxOreoznohCpy0z6mocxbZr7oJ0= -k8s.io/apimachinery v0.22.2 h1:ejz6y/zNma8clPVfNDLnPbleBo6MpoFy/HBiBqCouVk= k8s.io/apimachinery v0.22.2/go.mod h1:O3oNtNadZdeOMxHFVxOreoznohCpy0z6mocxbZr7oJ0= +k8s.io/apimachinery v0.23.0/go.mod h1:fFCTTBKvKcwTPFzjlcxp91uPFZr+JA0FubU4fLzzFYc= +k8s.io/apimachinery v0.23.1 h1:sfBjlDFwj2onG0Ijx5C+SrAoeUscPrmghm7wHP+uXlo= +k8s.io/apimachinery v0.23.1/go.mod h1:SADt2Kl8/sttJ62RRsi9MIV4o8f5S3coArm0Iu3fBno= k8s.io/apiserver v0.18.0/go.mod h1:3S2O6FeBBd6XTo0njUrLxiqk8GNy6wWOftjhJcXYnjw= k8s.io/apiserver v0.20.1/go.mod h1:ro5QHeQkgMS7ZGpvf4tSMx6bBOgPfE+f52KwvXfScaU= k8s.io/apiserver v0.20.2/go.mod h1:2nKd93WyMhZx4Hp3RfgH2K5PhwyTrprrkWYnI7id7jA= k8s.io/apiserver v0.20.4/go.mod h1:Mc80thBKOyy7tbvFtB4kJv1kbdD0eIH8k8vianJcbFM= k8s.io/apiserver v0.20.6/go.mod h1:QIJXNt6i6JB+0YQRNcS0hdRHJlMhflFmsBDeSgT1r8Q= -k8s.io/apiserver v0.22.0/go.mod h1:04kaIEzIQrTGJ5syLppQWvpkLJXQtJECHmae+ZGc/nc= k8s.io/apiserver v0.22.1/go.mod h1:2mcM6dzSt+XndzVQJX21Gx0/Klo7Aen7i0Ai6tIa400= -k8s.io/apiserver v0.22.2 h1:TdIfZJc6YNhu2WxeAOWq1TvukHF0Sfx0+ln4XK9qnL4= k8s.io/apiserver v0.22.2/go.mod h1:vrpMmbyjWrgdyOvZTSpsusQq5iigKNWv9o9KlDAbBHI= -k8s.io/cli-runtime v0.22.1 h1:WIueieKvT+IiSVSFosRLI6rkM0tyBGEGH1WUEztVjho= +k8s.io/apiserver v0.23.0/go.mod h1:Cec35u/9zAepDPPFyT+UMrgqOCjgJ5qtfVJDxjZYmt4= +k8s.io/apiserver v0.23.1 h1:vWGf8LcV9Pk/z5rdLmCiBDqE21ccbe930dzrtVMhw9g= +k8s.io/apiserver v0.23.1/go.mod h1:Bqt0gWbeM2NefS8CjWswwd2VNAKN6lUKR85Ft4gippY= k8s.io/cli-runtime v0.22.1/go.mod h1:YqwGrlXeEk15Yn3em2xzr435UGwbrCw5x+COQoTYfoo= +k8s.io/cli-runtime v0.23.1 h1:vHUZrq1Oejs0WaJnxs09mLHKScvIIl2hMSthhS8o8Yo= +k8s.io/cli-runtime v0.23.1/go.mod h1:r9r8H/qfXo9w+69vwUL7LokKlLRKW5D6A8vUKCx+YL0= k8s.io/client-go v0.18.0/go.mod h1:uQSYDYs4WhVZ9i6AIoEZuwUggLVEF64HOD37boKAtF8= k8s.io/client-go v0.20.1/go.mod h1:/zcHdt1TeWSd5HoUe6elJmHSQ6uLLgp4bIJHVEuy+/Y= k8s.io/client-go v0.20.2/go.mod h1:kH5brqWqp7HDxUFKoEgiI4v8G1xzbe9giaCenUWJzgE= k8s.io/client-go v0.20.4/go.mod h1:LiMv25ND1gLUdBeYxBIwKpkSC5IsozMMmOOeSJboP+k= k8s.io/client-go v0.20.6/go.mod h1:nNQMnOvEUEsOzRRFIIkdmYOjAZrC8bgq0ExboWSU1I0= k8s.io/client-go v0.21.0/go.mod h1:nNBytTF9qPFDEhoqgEPaarobC8QPae13bElIVHzIglA= -k8s.io/client-go v0.22.0/go.mod h1:GUjIuXR5PiEv/RVK5OODUsm6eZk7wtSWZSaSJbpFdGg= k8s.io/client-go v0.22.1/go.mod h1:BquC5A4UOo4qVDUtoc04/+Nxp1MeHcVc1HJm1KmG8kk= -k8s.io/client-go v0.22.2 h1:DaSQgs02aCC1QcwUdkKZWOeaVsQjYvWv8ZazcZ6JcHc= k8s.io/client-go v0.22.2/go.mod h1:sAlhrkVDf50ZHx6z4K0S40wISNTarf1r800F+RlCF6U= +k8s.io/client-go v0.23.0/go.mod h1:hrDnpnK1mSr65lHHcUuIZIXDgEbzc7/683c6hyG4jTA= +k8s.io/client-go v0.23.1 h1:Ma4Fhf/p07Nmj9yAB1H7UwbFHEBrSPg8lviR24U2GiQ= +k8s.io/client-go v0.23.1/go.mod h1:6QSI8fEuqD4zgFK0xbdwfB/PthBsIxCJMa3s17WlcO0= k8s.io/code-generator v0.18.0/go.mod h1:+UHX5rSbxmR8kzS+FAv7um6dtYrZokQvjHpDSYRVkTc= k8s.io/code-generator v0.20.1/go.mod h1:UsqdF+VX4PU2g46NC2JRs4gc+IfrctnwHb76RNbWHJg= k8s.io/code-generator v0.20.2/go.mod h1:UsqdF+VX4PU2g46NC2JRs4gc+IfrctnwHb76RNbWHJg= k8s.io/code-generator v0.21.0/go.mod h1:hUlps5+9QaTrKx+jiM4rmq7YmH8wPOIko64uZCHDh6Q= -k8s.io/code-generator v0.22.0/go.mod h1:eV77Y09IopzeXOJzndrDyCI88UBok2h6WxAlBwpxa+o= k8s.io/code-generator v0.22.1/go.mod h1:eV77Y09IopzeXOJzndrDyCI88UBok2h6WxAlBwpxa+o= -k8s.io/code-generator v0.22.2 h1:+bUv9lpTnAWABtPkvO4x0kfz7j/kDEchVt0P/wXU3jQ= k8s.io/code-generator v0.22.2/go.mod h1:eV77Y09IopzeXOJzndrDyCI88UBok2h6WxAlBwpxa+o= +k8s.io/code-generator v0.23.0/go.mod h1:vQvOhDXhuzqiVfM/YHp+dmg10WDZCchJVObc9MvowsE= +k8s.io/code-generator v0.23.1 h1:ViFOlP/0bYD7VrnUDS+ch5ej5EIuMawFmHcRuv9Yxyw= +k8s.io/code-generator v0.23.1/go.mod h1:V7yn6VNTCWW8GqodYCESVo95fuiEg713S8B7WacWZDA= k8s.io/component-base v0.18.0/go.mod h1:u3BCg0z1uskkzrnAKFzulmYaEpZF7XC9Pf/uFyb1v2c= k8s.io/component-base v0.20.1/go.mod h1:guxkoJnNoh8LNrbtiQOlyp2Y2XFCZQmrcg2n/DeYNLk= k8s.io/component-base v0.20.2/go.mod h1:pzFtCiwe/ASD0iV7ySMu8SYVJjCapNM9bjvk7ptpKh0= k8s.io/component-base v0.20.4/go.mod h1:t4p9EdiagbVCJKrQ1RsA5/V4rFQNDfRlevJajlGwgjI= k8s.io/component-base v0.20.6/go.mod h1:6f1MPBAeI+mvuts3sIdtpjljHWBQ2cIy38oBIWMYnrM= -k8s.io/component-base v0.22.0/go.mod h1:SXj6Z+V6P6GsBhHZVbWCw9hFjUdUYnJerlhhPnYCBCg= k8s.io/component-base v0.22.1/go.mod h1:0D+Bl8rrnsPN9v0dyYvkqFfBeAd4u7n77ze+p8CMiPo= -k8s.io/component-base v0.22.2 h1:vNIvE0AIrLhjX8drH0BgCNJcR4QZxMXcJzBsDplDx9M= k8s.io/component-base v0.22.2/go.mod h1:5Br2QhI9OTe79p+TzPe9JKNQYvEKbq9rTJDWllunGug= +k8s.io/component-base v0.23.0/go.mod h1:DHH5uiFvLC1edCpvcTDV++NKULdYYU6pR9Tt3HIKMKI= +k8s.io/component-base v0.23.1 h1:j/BqdZUWeWKCy2v/jcgnOJAzpRYWSbGcjGVYICko8Uc= +k8s.io/component-base v0.23.1/go.mod h1:6llmap8QtJIXGDd4uIWJhAq0Op8AtQo6bDW2RrNMTeo= k8s.io/component-helpers v0.22.1/go.mod h1:QvBcDbX+qU5I2tMZABBF5fRwAlQwiv771IGBHK9WYh4= +k8s.io/component-helpers v0.23.1/go.mod h1:ZK24U+2oXnBPcas2KolLigVVN9g5zOzaHLkHiQMFGr0= k8s.io/cri-api v0.17.3/go.mod h1:X1sbHmuXhwaHs9xxYffLqJogVsnI+f6cPRcgPel7ywM= k8s.io/cri-api v0.20.1/go.mod h1:2JRbKt+BFLTjtrILYVqQK5jqhI+XNdF6UiGMgczeBCI= k8s.io/cri-api v0.20.4/go.mod h1:2JRbKt+BFLTjtrILYVqQK5jqhI+XNdF6UiGMgczeBCI= @@ -1881,8 +1914,9 @@ k8s.io/gengo v0.0.0-20200114144118-36b2048a9120/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8 k8s.io/gengo v0.0.0-20200413195148-3a45101e95ac/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= k8s.io/gengo v0.0.0-20201113003025-83324d819ded/go.mod h1:FiNAH4ZV3gBg2Kwh89tzAEV2be7d5xI0vBa/VySYy3E= k8s.io/gengo v0.0.0-20201203183100-97869a43a9d9/go.mod h1:FiNAH4ZV3gBg2Kwh89tzAEV2be7d5xI0vBa/VySYy3E= -k8s.io/gengo v0.0.0-20201214224949-b6c5ce23f027 h1:Uusb3oh8XcdzDF/ndlI4ToKTYVlkCSJP39SRY2mfRAw= k8s.io/gengo v0.0.0-20201214224949-b6c5ce23f027/go.mod h1:FiNAH4ZV3gBg2Kwh89tzAEV2be7d5xI0vBa/VySYy3E= +k8s.io/gengo v0.0.0-20210813121822-485abfe95c7c h1:GohjlNKauSai7gN4wsJkeZ3WAJx4Sh+oT/b5IYn5suA= +k8s.io/gengo v0.0.0-20210813121822-485abfe95c7c/go.mod h1:FiNAH4ZV3gBg2Kwh89tzAEV2be7d5xI0vBa/VySYy3E= k8s.io/klog v0.0.0-20181102134211-b9b56d5dfc92/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk= k8s.io/klog v0.2.0/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk= k8s.io/klog v0.3.0/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk= @@ -1892,27 +1926,32 @@ k8s.io/klog/v2 v2.0.0/go.mod h1:PBfzABfn139FHAV07az/IF9Wp1bkk3vpT2XSJ76fSDE= k8s.io/klog/v2 v2.2.0/go.mod h1:Od+F08eJP+W3HUb4pSrPpgp9DGU4GzlpG/TmITuYh/Y= k8s.io/klog/v2 v2.4.0/go.mod h1:Od+F08eJP+W3HUb4pSrPpgp9DGU4GzlpG/TmITuYh/Y= k8s.io/klog/v2 v2.8.0/go.mod h1:hy9LJ/NvuK+iVyP4Ehqva4HxZG/oXyIS3n3Jmire4Ec= -k8s.io/klog/v2 v2.9.0 h1:D7HV+n1V57XeZ0m6tdRkfknthUaM06VFbWldOFh8kzM= k8s.io/klog/v2 v2.9.0/go.mod h1:hy9LJ/NvuK+iVyP4Ehqva4HxZG/oXyIS3n3Jmire4Ec= -k8s.io/kube-aggregator v0.22.0 h1:he3plI8vlaPJxR9vsy/lL5ga1V8CoA8M8x1Bn8eTCeM= -k8s.io/kube-aggregator v0.22.0/go.mod h1:zHTepg0Q4tKzru7Pwg1QYHWrU/wrvIXM8hUdDAH66qg= +k8s.io/klog/v2 v2.30.0 h1:bUO6drIvCIsvZ/XFgfxoGFQU/a4Qkh0iAlvUR7vlHJw= +k8s.io/klog/v2 v2.30.0/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0= +k8s.io/kube-aggregator v0.23.1 h1:w05VLh3ji05gYQglMKKrwafgqjgIxZoBusxdSWS9d/4= +k8s.io/kube-aggregator v0.23.1/go.mod h1:1SPZXYD/je2gKxxLBkYyG3yFxSCUWI5QTyjqP2ZxRDI= k8s.io/kube-openapi v0.0.0-20200121204235-bf4fb3bd569c/go.mod h1:GRQhZsXIAJ1xR0C9bd8UpWHZ5plfAS9fzPjJuQ6JL3E= k8s.io/kube-openapi v0.0.0-20201113171705-d219536bb9fd/go.mod h1:WOJ3KddDSol4tAGcJo0Tvi+dK12EcqSLqcWsryKMpfM= k8s.io/kube-openapi v0.0.0-20210305001622-591a79e4bda7/go.mod h1:wXW5VT87nVfh/iLV8FpR2uDvrFyomxbtb1KivDbvPTE= k8s.io/kube-openapi v0.0.0-20210421082810-95288971da7e/go.mod h1:vHXdDvt9+2spS2Rx9ql3I8tycm3H9FDfdUoIuKCefvw= -k8s.io/kube-openapi v0.0.0-20210527164424-3c818078ee3d h1:lUK8GPtuJy8ClWZhuvKoaLdKGPLq9H1PxWp7VPBZBkU= -k8s.io/kube-openapi v0.0.0-20210527164424-3c818078ee3d/go.mod h1:vHXdDvt9+2spS2Rx9ql3I8tycm3H9FDfdUoIuKCefvw= -k8s.io/kubectl v0.22.1 h1:kpXO+ajPNTzAVLDM9pAzCsWH9MtCMr92zpcvXMt7P6E= +k8s.io/kube-openapi v0.0.0-20211115234752-e816edb12b65 h1:E3J9oCLlaobFUqsjG9DfKbP2BmgwBL2p7pn0A3dG9W4= +k8s.io/kube-openapi v0.0.0-20211115234752-e816edb12b65/go.mod h1:sX9MT8g7NVZM5lVL/j8QyCCJe8YSMW30QvGZWaCIDIk= k8s.io/kubectl v0.22.1/go.mod h1:mjAOgEbMNMtZWxnfM6jd+nPjPsaoLqO5xanc78WcSbw= +k8s.io/kubectl v0.23.1 h1:gmscOiV4Y4XIRIn14gQBBADoyyVrDZPbxRCTDga4RSA= +k8s.io/kubectl v0.23.1/go.mod h1:Ui7dJKdUludF8yWAOSN7JZEkOuYixX5yF6E6NjoukKE= k8s.io/kubernetes v1.13.0/go.mod h1:ocZa8+6APFNC2tX1DZASIbocyYT5jHzqFVsY5aoB7Jk= k8s.io/metrics v0.22.1/go.mod h1:i/ZNap89UkV1gLa26dn7fhKAdheJaKy+moOqJbiif7E= +k8s.io/metrics v0.23.1/go.mod h1:qXvsM1KANrc+ZZeFwj6Phvf0NLiC+d3RwcsLcdGc+xs= k8s.io/utils v0.0.0-20200324210504-a9aa75ae1b89/go.mod h1:sZAwmy6armz5eXlNoLmJcl4F1QuKu7sr+mFQ0byX7Ew= k8s.io/utils v0.0.0-20201110183641-67b214c5f920/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= k8s.io/utils v0.0.0-20210111153108-fddb29f9d009/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= k8s.io/utils v0.0.0-20210305010621-2afb4311ab10/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= k8s.io/utils v0.0.0-20210707171843-4b05e18ac7d9/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= -k8s.io/utils v0.0.0-20210819203725-bdf08cb9a70a h1:8dYfu/Fc9Gz2rNJKB9IQRGgQOh2clmRzNIPPY1xLY5g= +k8s.io/utils v0.0.0-20210802155522-efc7438f0176/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= k8s.io/utils v0.0.0-20210819203725-bdf08cb9a70a/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= +k8s.io/utils v0.0.0-20210930125809-cb0fa318a74b h1:wxEMGetGMur3J1xuGLQY7GEQYg9bZxKn3tKo5k/eYcs= +k8s.io/utils v0.0.0-20210930125809-cb0fa318a74b/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= oras.land/oras-go v0.4.0 h1:u6+7D+raZDYHwlz/uOwNANiRmyYDSSMW7A9E1xXycUQ= oras.land/oras-go v0.4.0/go.mod h1:VJcU+VE4rkclUbum5C0O7deEZbBYnsnpbGSACwTjOcg= rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= @@ -1923,32 +1962,41 @@ rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.7/go.mod h1:PHgbrJT7lCHcxMU+mDHEm+nx46H4zuuHZkDP6icnhu0= sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.14/go.mod h1:LEScyzhFmoF5pso/YSeBstl57mOzx9xlU9n85RGrDQg= sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.15/go.mod h1:LEScyzhFmoF5pso/YSeBstl57mOzx9xlU9n85RGrDQg= -sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.22 h1:fmRfl9WJ4ApJn7LxNuED4m0t18qivVQOxP6aAYG9J6c= sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.22/go.mod h1:LEScyzhFmoF5pso/YSeBstl57mOzx9xlU9n85RGrDQg= +sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.25 h1:DEQ12ZRxJjsglk5JIi5bLgpKaHihGervKmg5uryaEHw= +sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.25/go.mod h1:Mlj9PNLmG9bZ6BHFwFKDo5afkpWyUISkb9Me0GnK66I= sigs.k8s.io/controller-runtime v0.8.3/go.mod h1:U/l+DUopBc1ecfRZ5aviA9JDmGFQKvLf5YkZNx2e0sU= -sigs.k8s.io/controller-runtime v0.10.1 h1:+eLHgY/VrJWnfg6iXUqhCUqNXgPH1NZeP9drNAAgWlg= -sigs.k8s.io/controller-runtime v0.10.1/go.mod h1:CQp8eyUQZ/Q7PJvnIrB6/hgfTC1kBkGylwsLgOQi1WY= +sigs.k8s.io/controller-runtime v0.11.0 h1:DqO+c8mywcZLFJWILq4iktoECTyn30Bkj0CwgqMpZWQ= +sigs.k8s.io/controller-runtime v0.11.0/go.mod h1:KKwLiTooNGu+JmLZGn9Sl3Gjmfj66eMbCQznLP5zcqA= sigs.k8s.io/controller-tools v0.5.0/go.mod h1:JTsstrMpxs+9BUj6eGuAaEb6SDSPTeVtUyp0jmnAM/I= sigs.k8s.io/controller-tools v0.7.0 h1:iZIz1vEcavyEfxjcTLs1WH/MPf4vhPCtTKhoHqV8/G0= sigs.k8s.io/controller-tools v0.7.0/go.mod h1:bpBAo0VcSDDLuWt47evLhMLPxRPxMDInTEH/YbdeMK0= sigs.k8s.io/gateway-api v0.3.0 h1:mKbQRlRIIY3dsCCbNF9Jv30V9vvOf6SRG82l0MfJQ9U= sigs.k8s.io/gateway-api v0.3.0/go.mod h1:Wb8bx7QhGVZxOSEU3i9vw/JqTB5Nlai9MLMYVZeDmRQ= -sigs.k8s.io/kustomize/api v0.8.11 h1:LzQzlq6Z023b+mBtc6v72N2mSHYmN8x7ssgbf/hv0H8= +sigs.k8s.io/json v0.0.0-20211020170558-c049b76a60c6 h1:fD1pz4yfdADVNfFmcP2aBEtudwUQ1AlLnRBALr33v3s= +sigs.k8s.io/json v0.0.0-20211020170558-c049b76a60c6/go.mod h1:p4QtZmO4uMYipTQNzagwnNoseA6OxSUutVw05NhYDRs= sigs.k8s.io/kustomize/api v0.8.11/go.mod h1:a77Ls36JdfCWojpUqR6m60pdGY1AYFix4AH83nJtY1g= +sigs.k8s.io/kustomize/api v0.10.1 h1:KgU7hfYoscuqag84kxtzKdEC3mKMb99DPI3a0eaV1d0= +sigs.k8s.io/kustomize/api v0.10.1/go.mod h1:2FigT1QN6xKdcnGS2Ppp1uIWrtWN28Ms8A3OZUZhwr8= sigs.k8s.io/kustomize/cmd/config v0.9.13/go.mod h1:7547FLF8W/lTaDf0BDqFTbZxM9zqwEJqCKN9sSR0xSs= +sigs.k8s.io/kustomize/cmd/config v0.10.2/go.mod h1:K2aW7nXJ0AaT+VA/eO0/dzFLxmpFcTzudmAgDwPY1HQ= sigs.k8s.io/kustomize/kustomize/v4 v4.2.0/go.mod h1:MOkR6fmhwG7hEDRXBYELTi5GSFcLwfqwzTRHW3kv5go= -sigs.k8s.io/kustomize/kyaml v0.11.0 h1:9KhiCPKaVyuPcgOLJXkvytOvjMJLoxpjodiycb4gHsA= +sigs.k8s.io/kustomize/kustomize/v4 v4.4.1/go.mod h1:qOKJMMz2mBP+vcS7vK+mNz4HBLjaQSWRY22EF6Tb7Io= sigs.k8s.io/kustomize/kyaml v0.11.0/go.mod h1:GNMwjim4Ypgp/MueD3zXHLRJEjz7RvtPae0AwlvEMFM= +sigs.k8s.io/kustomize/kyaml v0.13.0 h1:9c+ETyNfSrVhxvphs+K2dzT3dh5oVPPEqPOE/cUpScY= +sigs.k8s.io/kustomize/kyaml v0.13.0/go.mod h1:FTJxEZ86ScK184NpGSAQcfEqee0nul8oLCK30D47m4E= 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/go.mod h1:PlARxl6Hbt/+BC80dRLi1qAmnMqwqDg62YvvVkZjemw= sigs.k8s.io/structured-merge-diff/v4 v4.0.2/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK1F7G282QMXDPYydCw= sigs.k8s.io/structured-merge-diff/v4 v4.0.3/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK1F7G282QMXDPYydCw= sigs.k8s.io/structured-merge-diff/v4 v4.1.0/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK1F7G282QMXDPYydCw= -sigs.k8s.io/structured-merge-diff/v4 v4.1.2 h1:Hr/htKFmJEbtMgS/UD0N+gtgctAqz81t3nu+sPzynno= sigs.k8s.io/structured-merge-diff/v4 v4.1.2/go.mod h1:j/nl6xW8vLS49O8YvXW1ocPhZawJtm+Yrr7PPRQ0Vg4= +sigs.k8s.io/structured-merge-diff/v4 v4.2.0 h1:kDvPBbnPk+qYmkHmSo8vKGp438IASWofnbbUKDE/bv0= +sigs.k8s.io/structured-merge-diff/v4 v4.2.0/go.mod h1:j/nl6xW8vLS49O8YvXW1ocPhZawJtm+Yrr7PPRQ0Vg4= 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= +sigs.k8s.io/yaml v1.3.0 h1:a2VclLzOGrwOHDiV8EfBGhvjHvP46CtW5j6POvhYGGo= +sigs.k8s.io/yaml v1.3.0/go.mod h1:GeOyir5tyXNByN85N/dRIT9es5UQNerPYEKK56eTBm8= software.sslmate.com/src/go-pkcs12 v0.0.0-20180114231543-2291e8f0f237/go.mod h1:/xvNRWUqm0+/ZMiF4EX00vrSCMsE4/NHb+Pt3freEeQ= software.sslmate.com/src/go-pkcs12 v0.0.0-20210415151418-c5206de65a78 h1:SqYE5+A2qvRhErbsXFfUEUmpWEKxxRSMgGLkvRAFOV4= software.sslmate.com/src/go-pkcs12 v0.0.0-20210415151418-c5206de65a78/go.mod h1:B7Wf0Ya4DHF9Yw+qfZuJijQYkWicqDa+79Ytmmq3Kjg= diff --git a/hack/build/repos.bzl b/hack/build/repos.bzl index 219d1698e..38e54929a 100644 --- a/hack/build/repos.bzl +++ b/hack/build/repos.bzl @@ -96,6 +96,14 @@ def go_repositories(): sum = "h1:xK2lYat7ZLaVVcIuj82J8kIro4V6kDe0AUDFboUCwcg=", version = "v1.0.0", ) + go_repository( + name = "com_github_antlr_antlr4_runtime_go_antlr", + build_file_generation = "on", + build_file_proto_mode = "disable", + importpath = "github.com/antlr/antlr4/runtime/Go/antlr", + sum = "h1:GCzyKMDDjSGnlpl3clrdAK7I1AaVoaiKDOYkUzChZzg=", + version = "v0.0.0-20210826220005-b48c857c3a0e", + ) go_repository( name = "com_github_armon_circbuf", @@ -1126,8 +1134,8 @@ def go_repositories(): build_file_generation = "on", build_file_proto_mode = "disable", importpath = "github.com/evanphx/json-patch", - sum = "h1:glyUF9yIYtMHzn8xaKw5rMhdWcwsYV8dZHIq5567/xs=", - version = "v4.11.0+incompatible", + sum = "h1:4onqiflcdA9EOZ4RxV643DvftH5pOlLGNtQ5lPWQu84=", + version = "v4.12.0+incompatible", ) go_repository( @@ -1198,8 +1206,8 @@ def go_repositories(): build_file_generation = "on", build_file_proto_mode = "disable", importpath = "github.com/fsnotify/fsnotify", - sum = "h1:hsms1Qyu0jgnwNXIxa+/V/PDsU6CfLf6CNO8H7IWoS4=", - version = "v1.4.9", + sum = "h1:mZcQUHVQUQWoPXXtuf9yuEXKudkV2sx1E06UadKWpgI=", + version = "v1.5.1", ) go_repository( name = "com_github_fullsailor_pkcs7", @@ -1227,6 +1235,14 @@ def go_repositories(): sum = "h1:LofdAjjjqCSXMwLGgOgnE+rdPuvX9DxCqaHwKy7i/ko=", version = "v0.0.0-20150301180006-535138d7bcd7", ) + go_repository( + name = "com_github_getkin_kin_openapi", + build_file_generation = "on", + build_file_proto_mode = "disable", + importpath = "github.com/getkin/kin-openapi", + sum = "h1:j77zg3Ec+k+r+GA3d8hBoXpAc6KX9TbBPrwQGBIy2sY=", + version = "v0.76.0", + ) go_repository( name = "com_github_getsentry_raven_go", @@ -1341,8 +1357,8 @@ def go_repositories(): build_file_generation = "on", build_file_proto_mode = "disable", importpath = "github.com/go-logr/logr", - sum = "h1:K7/B1jt6fIBQVd4Owv2MqGQClcgf0R266+7C/QjRcLc=", - version = "v0.4.0", + sum = "h1:QK40JKJyMdUDz+h+xvCsru/bJhvG0UxvePV0ufL/AcE=", + version = "v1.2.0", ) go_repository( @@ -1350,8 +1366,8 @@ def go_repositories(): build_file_generation = "on", build_file_proto_mode = "disable", importpath = "github.com/go-logr/zapr", - sum = "h1:uc1uML3hRYL9/ZZPdgHS/n8Nzo+eaYL/Efxkkamf7OM=", - version = "v0.4.0", + sum = "h1:n4JnPI1T3Qq1SFEi/F8rwLrZERp2bso19PJZDB9dayk=", + version = "v1.2.0", ) go_repository( @@ -1584,8 +1600,8 @@ def go_repositories(): build_file_generation = "on", build_file_proto_mode = "disable", importpath = "github.com/golang/glog", - sum = "h1:VKtxabqXZkF25pY9ekfRL6a582T4P37/31XEstQ5p58=", - version = "v0.0.0-20160126235308-23def4e6c14b", + sum = "h1:nfP3RFugxnNRyKgeWd4oI1nYvXpxrx8ck8ZrcizshdQ=", + version = "v1.0.0", ) go_repository( @@ -1658,6 +1674,22 @@ def go_repositories(): sum = "h1:gK4Kx5IaGY9CD5sPJ36FHiBJ6ZXl0kilRiiCj+jdYp4=", version = "v1.0.1", ) + go_repository( + name = "com_github_google_cel_go", + build_file_generation = "on", + build_file_proto_mode = "disable", + importpath = "github.com/google/cel-go", + sum = "h1:u1hg7lcZ/XWw2d3aV1jFS30ijQQ6q0/h1C2ZBeBD1gY=", + version = "v0.9.0", + ) + go_repository( + name = "com_github_google_cel_spec", + build_file_generation = "on", + build_file_proto_mode = "disable", + importpath = "github.com/google/cel-spec", + sum = "h1:xuthJSiJGoSzq+lVEBIW1MTpaaZXknMCYC4WzVAWOsE=", + version = "v0.6.0", + ) go_repository( name = "com_github_google_go_cmp", @@ -2235,8 +2267,8 @@ def go_repositories(): build_file_generation = "on", build_file_proto_mode = "disable", importpath = "github.com/json-iterator/go", - sum = "h1:uVUAXhF2To8cbw/3xN3pxj6kk7TYKs98NIrTqPlMWAQ=", - version = "v1.1.11", + sum = "h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM=", + version = "v1.1.12", ) go_repository( @@ -2788,8 +2820,8 @@ def go_repositories(): build_file_generation = "on", build_file_proto_mode = "disable", importpath = "github.com/modern-go/reflect2", - sum = "h1:9f412s+6RmYXLWZSEzVVgPGK7C2PphHj5RJrvfx9AWI=", - version = "v1.0.1", + sum = "h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M=", + version = "v1.0.2", ) go_repository( @@ -2948,8 +2980,8 @@ def go_repositories(): build_file_generation = "on", build_file_proto_mode = "disable", importpath = "github.com/onsi/ginkgo", - sum = "h1:29JGrr5oVBm5ulCWet69zQkzWipVXIol6ygQUe/EzNc=", - version = "v1.16.4", + sum = "h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE=", + version = "v1.16.5", ) go_repository( @@ -2957,8 +2989,8 @@ def go_repositories(): build_file_generation = "on", build_file_proto_mode = "disable", importpath = "github.com/onsi/gomega", - sum = "h1:WjP/FQ/sk43MRmnEcT+MlDw2TFvkrXlprrPST/IudjU=", - version = "v1.15.0", + sum = "h1:9Luw4uT5HTjHTN8+aNcSThgH1vdXnmdJ8xIfZ4wyTRE=", + version = "v1.17.0", ) go_repository( @@ -3162,8 +3194,8 @@ def go_repositories(): build_file_generation = "on", build_file_proto_mode = "disable", importpath = "github.com/prometheus/common", - sum = "h1:iMAkS2TDoNWnKM+Kopnx/8tnEStIfpYA0ur0xQzzhMQ=", - version = "v0.26.0", + sum = "h1:vGVfV9KrDTvWt5boZO0I19g2E3CsWfpPPKZM9dt3mEw=", + version = "v0.28.0", ) go_repository( @@ -3659,8 +3691,8 @@ def go_repositories(): build_file_generation = "on", build_file_proto_mode = "disable", importpath = "github.com/yuin/goldmark", - sum = "h1:dPmz1Snjq0kmkz159iL7S6WzdahUTHnHB5M56WFVifs=", - version = "v1.3.5", + sum = "h1:OtISOGfH6sOWa1/qXqqAiOIAO6Z5J3AEAE18WAq6BiQ=", + version = "v1.4.0", ) go_repository( @@ -4010,8 +4042,8 @@ def go_repositories(): build_file_generation = "on", build_file_proto_mode = "disable", importpath = "k8s.io/api", - sum = "h1:M8ZzAD0V6725Fjg53fKeTJxGsJvRbk4TEm/fexHMtfw=", - version = "v0.22.2", + sum = "h1:ncu/qfBfUoClqwkTGbeRqqOqBCRoUAflMuOaOD7J0c8=", + version = "v0.23.1", ) go_repository( @@ -4019,8 +4051,8 @@ def go_repositories(): build_file_generation = "on", build_file_proto_mode = "disable", importpath = "k8s.io/apiextensions-apiserver", - sum = "h1:zK7qI8Ery7j2CaN23UCFaC1hj7dMiI87n01+nKuewd4=", - version = "v0.22.2", + sum = "h1:xxE0q1vLOVZiWORu1KwNRQFsGWtImueOrqSl13sS5EU=", + version = "v0.23.1", ) go_repository( @@ -4028,8 +4060,8 @@ def go_repositories(): build_file_generation = "on", build_file_proto_mode = "disable", importpath = "k8s.io/apimachinery", - sum = "h1:ejz6y/zNma8clPVfNDLnPbleBo6MpoFy/HBiBqCouVk=", - version = "v0.22.2", + sum = "h1:sfBjlDFwj2onG0Ijx5C+SrAoeUscPrmghm7wHP+uXlo=", + version = "v0.23.1", ) go_repository( @@ -4037,8 +4069,8 @@ def go_repositories(): build_file_generation = "on", build_file_proto_mode = "disable", importpath = "k8s.io/apiserver", - sum = "h1:TdIfZJc6YNhu2WxeAOWq1TvukHF0Sfx0+ln4XK9qnL4=", - version = "v0.22.2", + sum = "h1:vWGf8LcV9Pk/z5rdLmCiBDqE21ccbe930dzrtVMhw9g=", + version = "v0.23.1", ) go_repository( @@ -4046,8 +4078,8 @@ def go_repositories(): build_file_generation = "on", build_file_proto_mode = "disable", importpath = "k8s.io/cli-runtime", - sum = "h1:WIueieKvT+IiSVSFosRLI6rkM0tyBGEGH1WUEztVjho=", - version = "v0.22.1", + sum = "h1:vHUZrq1Oejs0WaJnxs09mLHKScvIIl2hMSthhS8o8Yo=", + version = "v0.23.1", ) go_repository( @@ -4055,8 +4087,8 @@ def go_repositories(): build_file_generation = "on", build_file_proto_mode = "disable", importpath = "k8s.io/client-go", - sum = "h1:DaSQgs02aCC1QcwUdkKZWOeaVsQjYvWv8ZazcZ6JcHc=", - version = "v0.22.2", + sum = "h1:Ma4Fhf/p07Nmj9yAB1H7UwbFHEBrSPg8lviR24U2GiQ=", + version = "v0.23.1", ) go_repository( @@ -4064,8 +4096,8 @@ def go_repositories(): build_file_generation = "on", build_file_proto_mode = "disable", importpath = "k8s.io/code-generator", - sum = "h1:+bUv9lpTnAWABtPkvO4x0kfz7j/kDEchVt0P/wXU3jQ=", - version = "v0.22.2", + sum = "h1:ViFOlP/0bYD7VrnUDS+ch5ej5EIuMawFmHcRuv9Yxyw=", + version = "v0.23.1", ) go_repository( @@ -4073,8 +4105,8 @@ def go_repositories(): build_file_generation = "on", build_file_proto_mode = "disable", importpath = "k8s.io/component-base", - sum = "h1:vNIvE0AIrLhjX8drH0BgCNJcR4QZxMXcJzBsDplDx9M=", - version = "v0.22.2", + sum = "h1:j/BqdZUWeWKCy2v/jcgnOJAzpRYWSbGcjGVYICko8Uc=", + version = "v0.23.1", ) go_repository( @@ -4082,8 +4114,8 @@ def go_repositories(): build_file_generation = "on", build_file_proto_mode = "disable", importpath = "k8s.io/component-helpers", - sum = "h1:f8pdhKNQbsCMQa6E9ipVlO8G6WFXnKbEDVcWB8n/HkA=", - version = "v0.22.1", + sum = "h1:Xrtj0LwXUqYyTPvN2bOE2UcqURX+uSBmKX1koNGhVxI=", + version = "v0.23.1", ) go_repository( name = "io_k8s_cri_api", @@ -4099,8 +4131,8 @@ def go_repositories(): build_file_generation = "on", build_file_proto_mode = "disable", importpath = "k8s.io/gengo", - sum = "h1:Uusb3oh8XcdzDF/ndlI4ToKTYVlkCSJP39SRY2mfRAw=", - version = "v0.0.0-20201214224949-b6c5ce23f027", + sum = "h1:GohjlNKauSai7gN4wsJkeZ3WAJx4Sh+oT/b5IYn5suA=", + version = "v0.0.0-20210813121822-485abfe95c7c", ) go_repository( @@ -4117,8 +4149,8 @@ def go_repositories(): build_file_generation = "on", build_file_proto_mode = "disable", importpath = "k8s.io/klog/v2", - sum = "h1:D7HV+n1V57XeZ0m6tdRkfknthUaM06VFbWldOFh8kzM=", - version = "v2.9.0", + sum = "h1:bUO6drIvCIsvZ/XFgfxoGFQU/a4Qkh0iAlvUR7vlHJw=", + version = "v2.30.0", ) go_repository( @@ -4126,8 +4158,8 @@ def go_repositories(): build_file_generation = "on", build_file_proto_mode = "disable", importpath = "k8s.io/kube-aggregator", - sum = "h1:he3plI8vlaPJxR9vsy/lL5ga1V8CoA8M8x1Bn8eTCeM=", - version = "v0.22.0", + sum = "h1:w05VLh3ji05gYQglMKKrwafgqjgIxZoBusxdSWS9d/4=", + version = "v0.23.1", ) go_repository( @@ -4135,8 +4167,8 @@ def go_repositories(): build_file_generation = "on", build_file_proto_mode = "disable", importpath = "k8s.io/kube-openapi", - sum = "h1:lUK8GPtuJy8ClWZhuvKoaLdKGPLq9H1PxWp7VPBZBkU=", - version = "v0.0.0-20210527164424-3c818078ee3d", + sum = "h1:E3J9oCLlaobFUqsjG9DfKbP2BmgwBL2p7pn0A3dG9W4=", + version = "v0.0.0-20211115234752-e816edb12b65", ) go_repository( @@ -4144,8 +4176,8 @@ def go_repositories(): build_file_generation = "on", build_file_proto_mode = "disable", importpath = "k8s.io/kubectl", - sum = "h1:kpXO+ajPNTzAVLDM9pAzCsWH9MtCMr92zpcvXMt7P6E=", - version = "v0.22.1", + sum = "h1:gmscOiV4Y4XIRIn14gQBBADoyyVrDZPbxRCTDga4RSA=", + version = "v0.23.1", ) go_repository( name = "io_k8s_kubernetes", @@ -4161,8 +4193,8 @@ def go_repositories(): build_file_generation = "on", build_file_proto_mode = "disable", importpath = "k8s.io/metrics", - sum = "h1:ypRVaDRHjGG80quGKaK8L+iAC5yk08S3ASk47Pj3BRg=", - version = "v0.22.1", + sum = "h1:ZKrRdjarB/JPl4nPef7SlMjAUUVzU5XdSKgT+cm6bFA=", + version = "v0.23.1", ) go_repository( @@ -4170,8 +4202,8 @@ def go_repositories(): build_file_generation = "on", build_file_proto_mode = "disable", importpath = "sigs.k8s.io/apiserver-network-proxy/konnectivity-client", - sum = "h1:fmRfl9WJ4ApJn7LxNuED4m0t18qivVQOxP6aAYG9J6c=", - version = "v0.0.22", + sum = "h1:DEQ12ZRxJjsglk5JIi5bLgpKaHihGervKmg5uryaEHw=", + version = "v0.0.25", ) go_repository( @@ -4179,8 +4211,8 @@ def go_repositories(): build_file_generation = "on", build_file_proto_mode = "disable", importpath = "sigs.k8s.io/controller-runtime", - sum = "h1:+eLHgY/VrJWnfg6iXUqhCUqNXgPH1NZeP9drNAAgWlg=", - version = "v0.10.1", + sum = "h1:DqO+c8mywcZLFJWILq4iktoECTyn30Bkj0CwgqMpZWQ=", + version = "v0.11.0", ) go_repository( @@ -4200,14 +4232,22 @@ def go_repositories(): sum = "h1:mKbQRlRIIY3dsCCbNF9Jv30V9vvOf6SRG82l0MfJQ9U=", version = "v0.3.0", ) + go_repository( + name = "io_k8s_sigs_json", + build_file_generation = "on", + build_file_proto_mode = "disable", + importpath = "sigs.k8s.io/json", + sum = "h1:fD1pz4yfdADVNfFmcP2aBEtudwUQ1AlLnRBALr33v3s=", + version = "v0.0.0-20211020170558-c049b76a60c6", + ) go_repository( name = "io_k8s_sigs_kustomize_api", build_file_generation = "on", build_file_proto_mode = "disable", importpath = "sigs.k8s.io/kustomize/api", - sum = "h1:LzQzlq6Z023b+mBtc6v72N2mSHYmN8x7ssgbf/hv0H8=", - version = "v0.8.11", + sum = "h1:KgU7hfYoscuqag84kxtzKdEC3mKMb99DPI3a0eaV1d0=", + version = "v0.10.1", ) go_repository( @@ -4215,8 +4255,8 @@ def go_repositories(): build_file_generation = "on", build_file_proto_mode = "disable", importpath = "sigs.k8s.io/kustomize/cmd/config", - sum = "h1:lqOf0QcFhNvgZkgrPINNRs7TxEO7IGVtLMyUJId3oRE=", - version = "v0.9.13", + sum = "h1:2GD3+knDaqZo6rSibkc4kKGp8auNBJrGPZQCTWN4Rtc=", + version = "v0.10.2", ) go_repository( @@ -4224,8 +4264,8 @@ def go_repositories(): build_file_generation = "on", build_file_proto_mode = "disable", importpath = "sigs.k8s.io/kustomize/kustomize/v4", - sum = "h1:RKgbyHgzuHQZ35sBDzWcbnR3HBlJSYdSN0H+sx3tUkk=", - version = "v4.2.0", + sum = "h1:6hgMEo3Gt0XmhDt4vo0FJ0LRDMc4i8JC6SUW24D4hQM=", + version = "v4.4.1", ) go_repository( @@ -4233,8 +4273,8 @@ def go_repositories(): build_file_generation = "on", build_file_proto_mode = "disable", importpath = "sigs.k8s.io/kustomize/kyaml", - sum = "h1:9KhiCPKaVyuPcgOLJXkvytOvjMJLoxpjodiycb4gHsA=", - version = "v0.11.0", + sum = "h1:9c+ETyNfSrVhxvphs+K2dzT3dh5oVPPEqPOE/cUpScY=", + version = "v0.13.0", ) go_repository( @@ -4251,8 +4291,8 @@ def go_repositories(): build_file_generation = "on", build_file_proto_mode = "disable", importpath = "sigs.k8s.io/structured-merge-diff/v4", - sum = "h1:Hr/htKFmJEbtMgS/UD0N+gtgctAqz81t3nu+sPzynno=", - version = "v4.1.2", + sum = "h1:kDvPBbnPk+qYmkHmSo8vKGp438IASWofnbbUKDE/bv0=", + version = "v4.2.0", ) go_repository( @@ -4260,8 +4300,8 @@ def go_repositories(): build_file_generation = "on", build_file_proto_mode = "disable", importpath = "sigs.k8s.io/yaml", - sum = "h1:kr/MCeFWJWTwyaHoR9c8EjH9OumOmoF9YGiZd7lFm/Q=", - version = "v1.2.0", + sum = "h1:a2VclLzOGrwOHDiV8EfBGhvjHvP46CtW5j6POvhYGGo=", + version = "v1.3.0", ) go_repository( @@ -4269,8 +4309,8 @@ def go_repositories(): build_file_generation = "on", build_file_proto_mode = "disable", importpath = "k8s.io/utils", - sum = "h1:8dYfu/Fc9Gz2rNJKB9IQRGgQOh2clmRzNIPPY1xLY5g=", - version = "v0.0.0-20210819203725-bdf08cb9a70a", + sum = "h1:wxEMGetGMur3J1xuGLQY7GEQYg9bZxKn3tKo5k/eYcs=", + version = "v0.0.0-20210930125809-cb0fa318a74b", ) go_repository( @@ -4584,8 +4624,8 @@ def go_repositories(): build_file_generation = "on", build_file_proto_mode = "disable", importpath = "golang.org/x/oauth2", - sum = "h1:Ati8dO7+U7mxpkPSxBZQEvzHVUYB/MqCklCN8ig5w/o=", - version = "v0.0.0-20210810183815-faf39c7919d5", + sum = "h1:Qmd2pbz05z7z6lm0DrgQVVPuBm92jqujBKMHMOlOQEw=", + version = "v0.0.0-20210819190943-2bc19b11175f", ) go_repository( @@ -4602,8 +4642,8 @@ def go_repositories(): build_file_generation = "on", build_file_proto_mode = "disable", importpath = "golang.org/x/sys", - sum = "h1:c8PlLMqBbOHoqtjteWm5/kbe6rNY2pbRfbIMVnepueo=", - version = "v0.0.0-20210817190340-bfb29a6856f2", + sum = "h1:M69LAlWZCshgp0QSzyDcSsSIejIEeuaCVpmwcKwyLMk=", + version = "v0.0.0-20211029165221-6e7872819dc8", ) go_repository( @@ -4611,8 +4651,8 @@ def go_repositories(): build_file_generation = "on", build_file_proto_mode = "disable", importpath = "golang.org/x/term", - sum = "h1:SZxvLBoTP5yHO3Frd4z4vrF+DBX9vMVanchswa69toE=", - version = "v0.0.0-20210220032956-6a3ed077a48d", + sum = "h1:9zKuko04nR4gjZ4+DNjHqRlAJqbJETHwiNKDqTfOjfE=", + version = "v0.0.0-20210615171337-6886f2dfbf5b", ) go_repository( @@ -4620,8 +4660,8 @@ def go_repositories(): build_file_generation = "on", build_file_proto_mode = "disable", importpath = "golang.org/x/text", - sum = "h1:aRYxNxv6iGQlyVaZmk6ZgYEDa+Jg18DxebPSrd6bg1M=", - version = "v0.3.6", + sum = "h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk=", + version = "v0.3.7", ) go_repository( @@ -4638,8 +4678,8 @@ def go_repositories(): build_file_generation = "on", build_file_proto_mode = "disable", importpath = "golang.org/x/tools", - sum = "h1:ouewzE6p+/VEB31YYnTbEJdi8pFqKp4P4n85vwo3DHA=", - version = "v0.1.5", + sum = "h1:VX/uD7MK0AHXGiScH3fsieUQUcpmRERPDYtqZdJnA+Q=", + version = "v0.1.6-0.20210820212750-d4cc65f0b2ff", ) go_repository( @@ -4682,8 +4722,8 @@ def go_repositories(): build_file_generation = "on", build_file_proto_mode = "disable", importpath = "go.uber.org/goleak", - sum = "h1:z+mqJhf6ss6BSfSM671tgKyZBFPTTJM+HLxnhPC3wu0=", - version = "v1.1.10", + sum = "h1:gZAh5/EyT/HQwlpkCy6wTpqfH9H8Lz8zbm3dZh+OyzA=", + version = "v1.1.12", ) go_repository( @@ -4709,8 +4749,8 @@ def go_repositories(): build_file_generation = "on", build_file_proto_mode = "disable", importpath = "go.uber.org/zap", - sum = "h1:mZQZefskPPCMIBCSEH0v2/iUqqLrYtaeqwD6FUGUnFE=", - version = "v1.19.0", + sum = "h1:ue41HOKd1vGURxrmeKIgELGb3jPW9DMUDGtsinblHwI=", + version = "v1.19.1", ) go_repository( diff --git a/pkg/controller/builder.go b/pkg/controller/builder.go index bc9dd7d12..15f83be7b 100644 --- a/pkg/controller/builder.go +++ b/pkg/controller/builder.go @@ -53,7 +53,7 @@ type Builder struct { // New creates a basic Builder, setting the sync call to the one given func NewBuilder(controllerctx *Context, name string) *Builder { - ctx := logf.NewContext(controllerctx.RootContext, nil, name) + ctx := logf.NewContext(controllerctx.RootContext, logf.Log, name) return &Builder{ context: controllerctx, ctx: ctx, diff --git a/pkg/controller/certificate-shim/gateways/BUILD.bazel b/pkg/controller/certificate-shim/gateways/BUILD.bazel index 1b9ae0cb8..6d0ad4cff 100644 --- a/pkg/controller/certificate-shim/gateways/BUILD.bazel +++ b/pkg/controller/certificate-shim/gateways/BUILD.bazel @@ -45,6 +45,7 @@ go_test( "@com_github_stretchr_testify//require:go_default_library", "@io_k8s_apimachinery//pkg/apis/meta/v1:go_default_library", "@io_k8s_apimachinery//pkg/runtime:go_default_library", + "@io_k8s_client_go//util/workqueue:go_default_library", "@io_k8s_sigs_gateway_api//apis/v1alpha1:go_default_library", "@io_k8s_sigs_gateway_api//pkg/client/clientset/versioned:go_default_library", ], diff --git a/pkg/controller/certificate-shim/gateways/controller_test.go b/pkg/controller/certificate-shim/gateways/controller_test.go index 416624f36..ac673ecdd 100644 --- a/pkg/controller/certificate-shim/gateways/controller_test.go +++ b/pkg/controller/certificate-shim/gateways/controller_test.go @@ -24,6 +24,7 @@ import ( testpkg "github.com/jetstack/cert-manager/pkg/controller/test" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" + "k8s.io/client-go/util/workqueue" gwapi "sigs.k8s.io/gateway-api/apis/v1alpha1" gwclient "sigs.k8s.io/gateway-api/pkg/client/clientset/versioned" @@ -183,6 +184,8 @@ type mockWorkqueue struct { callsToAdd []interface{} } +var _ workqueue.Interface = &mockWorkqueue{} + func (m *mockWorkqueue) Add(arg0 interface{}) { m.callsToAdd = append(m.callsToAdd, arg0) } @@ -219,10 +222,15 @@ func (m *mockWorkqueue) NumRequeues(arg0 interface{}) int { } func (m *mockWorkqueue) ShutDown() { - m.t.Error("workqueue.NumRequeues was called but was not expected to be called") + m.t.Error("workqueue.ShutDown was called but was not expected to be called") +} + +func (m *mockWorkqueue) ShutDownWithDrain() { + m.t.Error("workqueue.ShutDownWithDrain was called but was not expected to be called") + } func (m *mockWorkqueue) ShuttingDown() bool { - m.t.Error("workqueue.NumRequeues was called but was not expected to be called") + m.t.Error("workqueue.ShuttingDown was called but was not expected to be called") return false } diff --git a/pkg/controller/certificate-shim/sync_test.go b/pkg/controller/certificate-shim/sync_test.go index 8aa774e00..e830c5a09 100644 --- a/pkg/controller/certificate-shim/sync_test.go +++ b/pkg/controller/certificate-shim/sync_test.go @@ -2431,7 +2431,7 @@ func TestSync(t *testing.T) { } b.Init() defer b.Stop() - sync := SyncFnFor(b.Recorder, logr.DiscardLogger{}, b.CMClient, b.SharedInformerFactory.Certmanager().V1().Certificates().Lister(), controller.IngressShimOptions{ + sync := SyncFnFor(b.Recorder, logr.Discard(), b.CMClient, b.SharedInformerFactory.Certmanager().V1().Certificates().Lister(), controller.IngressShimOptions{ DefaultIssuerName: test.DefaultIssuerName, DefaultIssuerKind: test.DefaultIssuerKind, DefaultIssuerGroup: test.DefaultIssuerGroup, diff --git a/pkg/controller/certificates/revisionmanager/BUILD.bazel b/pkg/controller/certificates/revisionmanager/BUILD.bazel index f79da5cf7..b3acc7d8b 100644 --- a/pkg/controller/certificates/revisionmanager/BUILD.bazel +++ b/pkg/controller/certificates/revisionmanager/BUILD.bazel @@ -49,8 +49,8 @@ go_test( "//pkg/apis/meta/v1:go_default_library", "//pkg/controller:go_default_library", "//pkg/controller/test:go_default_library", - "//pkg/logs/testing:go_default_library", "//test/unit/gen:go_default_library", + "@com_github_go_logr_logr//testing:go_default_library", "@io_k8s_apimachinery//pkg/apis/meta/v1:go_default_library", "@io_k8s_apimachinery//pkg/runtime:go_default_library", "@io_k8s_apimachinery//pkg/types:go_default_library", diff --git a/pkg/controller/certificates/revisionmanager/revisionmanager_controller_test.go b/pkg/controller/certificates/revisionmanager/revisionmanager_controller_test.go index 5720ae910..0a610204d 100644 --- a/pkg/controller/certificates/revisionmanager/revisionmanager_controller_test.go +++ b/pkg/controller/certificates/revisionmanager/revisionmanager_controller_test.go @@ -21,6 +21,7 @@ import ( "reflect" "testing" + logtesting "github.com/go-logr/logr/testing" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/types" @@ -30,7 +31,6 @@ import ( cmmeta "github.com/jetstack/cert-manager/pkg/apis/meta/v1" controllerpkg "github.com/jetstack/cert-manager/pkg/controller" testpkg "github.com/jetstack/cert-manager/pkg/controller/test" - logtest "github.com/jetstack/cert-manager/pkg/logs/testing" "github.com/jetstack/cert-manager/test/unit/gen" ) @@ -409,7 +409,7 @@ func TestCertificateRequestsToDelete(t *testing.T) { for name, test := range tests { t.Run(name, func(t *testing.T) { - log := logtest.TestLogger{T: t} + log := logtesting.NewTestLogger(t) output := certificateRequestsToDelete(log, test.limit, test.input) if !reflect.DeepEqual(test.exp, output) { t.Errorf("unexpected prune sort response, exp=%v got=%v", diff --git a/pkg/controller/certificates/trigger/policies/BUILD.bazel b/pkg/controller/certificates/trigger/policies/BUILD.bazel index 81b91e658..37bf5e3d5 100644 --- a/pkg/controller/certificates/trigger/policies/BUILD.bazel +++ b/pkg/controller/certificates/trigger/policies/BUILD.bazel @@ -39,8 +39,8 @@ go_test( "//pkg/controller/certificates/internal/test:go_default_library", "//pkg/controller/test:go_default_library", "//pkg/logs:go_default_library", - "//pkg/logs/testing:go_default_library", "//test/unit/gen:go_default_library", + "@com_github_go_logr_logr//testing:go_default_library", "@com_github_stretchr_testify//assert:go_default_library", "@com_github_stretchr_testify//require:go_default_library", "@io_k8s_api//core/v1:go_default_library", diff --git a/pkg/controller/certificates/trigger/policies/gatherer_test.go b/pkg/controller/certificates/trigger/policies/gatherer_test.go index e9e0754e0..01ccc1358 100644 --- a/pkg/controller/certificates/trigger/policies/gatherer_test.go +++ b/pkg/controller/certificates/trigger/policies/gatherer_test.go @@ -22,7 +22,7 @@ import ( "testing" "time" - logtest "github.com/jetstack/cert-manager/pkg/logs/testing" + logtesting "github.com/go-logr/logr/testing" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" corev1 "k8s.io/api/core/v1" @@ -140,7 +140,7 @@ func TestDataForCertificate(t *testing.T) { for name, test := range tests { t.Run(name, func(t *testing.T) { fakeClockStart, _ := time.Parse(time.RFC3339, "2021-01-02T15:04:05Z07:00") - log := logtest.TestLogger{T: t} + log := logtesting.NewTestLogger(t) turnOnKlogIfVerboseTest(t) test.builder.T = t diff --git a/pkg/controller/certificates/trigger/trigger_controller_test.go b/pkg/controller/certificates/trigger/trigger_controller_test.go index c1787d946..c51e79239 100644 --- a/pkg/controller/certificates/trigger/trigger_controller_test.go +++ b/pkg/controller/certificates/trigger/trigger_controller_test.go @@ -22,7 +22,7 @@ import ( "testing" "time" - logtest "github.com/go-logr/logr/testing" + logtesting "github.com/go-logr/logr/testing" "github.com/stretchr/testify/assert" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" coretesting "k8s.io/client-go/testing" @@ -440,7 +440,7 @@ func Test_shouldBackoffReissuingOnFailure(t *testing.T) { } for name, test := range tests { t.Run(name, func(t *testing.T) { - gotBackoff, gotDelay := shouldBackoffReissuingOnFailure(logtest.TestLogger{T: t}, clock, test.givenCert, test.givenNextCR) + gotBackoff, gotDelay := shouldBackoffReissuingOnFailure(logtesting.NewTestLogger(t), clock, test.givenCert, test.givenNextCR) assert.Equal(t, test.wantBackoff, gotBackoff) assert.Equal(t, test.wantDelay, gotDelay) }) diff --git a/pkg/issuer/acme/dns/rfc2136/BUILD.bazel b/pkg/issuer/acme/dns/rfc2136/BUILD.bazel index 712154a13..ec3d46364 100644 --- a/pkg/issuer/acme/dns/rfc2136/BUILD.bazel +++ b/pkg/issuer/acme/dns/rfc2136/BUILD.bazel @@ -37,6 +37,7 @@ go_test( "//pkg/logs:go_default_library", "//test/acme/dns:go_default_library", "//test/acme/dns/server:go_default_library", + "@com_github_go_logr_logr//testing:go_default_library", "@com_github_miekg_dns//:go_default_library", "@com_github_stretchr_testify//assert:go_default_library", "@com_github_stretchr_testify//require:go_default_library", diff --git a/pkg/issuer/acme/dns/rfc2136/provider_test.go b/pkg/issuer/acme/dns/rfc2136/provider_test.go index 613023f34..10bc85db0 100644 --- a/pkg/issuer/acme/dns/rfc2136/provider_test.go +++ b/pkg/issuer/acme/dns/rfc2136/provider_test.go @@ -20,6 +20,8 @@ import ( "context" "testing" + logtesting "github.com/go-logr/logr/testing" + cmacme "github.com/jetstack/cert-manager/pkg/apis/acme/v1" cmmeta "github.com/jetstack/cert-manager/pkg/apis/meta/v1" logf "github.com/jetstack/cert-manager/pkg/logs" @@ -28,7 +30,7 @@ import ( ) func TestRunSuiteWithTSIG(t *testing.T) { - ctx := logf.NewContext(context.TODO(), nil, t.Name()) + ctx := logf.NewContext(context.TODO(), logtesting.NewTestLogger(t), t.Name()) server := &testserver.BasicServer{ Zones: []string{rfc2136TestZone}, EnableTSIG: true, @@ -71,7 +73,7 @@ func TestRunSuiteWithTSIG(t *testing.T) { } func TestRunSuiteNoTSIG(t *testing.T) { - ctx := logf.NewContext(context.TODO(), nil, t.Name()) + ctx := logf.NewContext(context.TODO(), logtesting.NewTestLogger(t), t.Name()) server := &testserver.BasicServer{ Zones: []string{rfc2136TestZone}, } diff --git a/pkg/issuer/acme/dns/rfc2136/rfc2136_test.go b/pkg/issuer/acme/dns/rfc2136/rfc2136_test.go index c631d3f73..b7ac2cff2 100644 --- a/pkg/issuer/acme/dns/rfc2136/rfc2136_test.go +++ b/pkg/issuer/acme/dns/rfc2136/rfc2136_test.go @@ -28,6 +28,7 @@ import ( "testing" "time" + logtesting "github.com/go-logr/logr/testing" "github.com/miekg/dns" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" @@ -48,7 +49,7 @@ var ( ) func TestRFC2136CanaryLocalTestServer(t *testing.T) { - ctx := logf.NewContext(context.TODO(), nil, t.Name()) + ctx := logf.NewContext(context.TODO(), logtesting.NewTestLogger(t), t.Name()) server := &testserver.BasicServer{ Zones: []string{rfc2136TestZone}, Handler: dns.HandlerFunc((&testHandlers{t: t}).serverHandlerHello), @@ -74,7 +75,7 @@ func TestRFC2136CanaryLocalTestServer(t *testing.T) { } func TestRFC2136ServerSuccess(t *testing.T) { - ctx := logf.NewContext(context.TODO(), nil, t.Name()) + ctx := logf.NewContext(context.TODO(), logtesting.NewTestLogger(t), t.Name()) server := &testserver.BasicServer{ Zones: []string{rfc2136TestZone}, Handler: dns.HandlerFunc((&testHandlers{t: t}).serverHandlerReturnSuccess), @@ -94,7 +95,7 @@ func TestRFC2136ServerSuccess(t *testing.T) { } func TestRFC2136ServerError(t *testing.T) { - ctx := logf.NewContext(context.TODO(), nil, t.Name()) + ctx := logf.NewContext(context.TODO(), logtesting.NewTestLogger(t), t.Name()) server := &testserver.BasicServer{ Zones: []string{rfc2136TestZone}, Handler: dns.HandlerFunc((&testHandlers{t: t}).serverHandlerReturnErr), @@ -116,7 +117,7 @@ func TestRFC2136ServerError(t *testing.T) { } func TestRFC2136TsigClient(t *testing.T) { - ctx := logf.NewContext(context.TODO(), nil, t.Name()) + ctx := logf.NewContext(context.TODO(), logtesting.NewTestLogger(t), t.Name()) server := &testserver.BasicServer{ Zones: []string{rfc2136TestZone}, Handler: dns.HandlerFunc((&testHandlers{t: t}).serverHandlerReturnSuccess), @@ -300,7 +301,7 @@ func TestRFC2136InvalidTSIGAlgorithm(t *testing.T) { } func TestRFC2136ValidUpdatePacket(t *testing.T) { - ctx := logf.NewContext(context.TODO(), nil, t.Name()) + ctx := logf.NewContext(context.TODO(), logtesting.NewTestLogger(t), t.Name()) server := &testserver.BasicServer{ Zones: []string{rfc2136TestZone}, } diff --git a/pkg/issuer/acme/http/http.go b/pkg/issuer/acme/http/http.go index c17707cf3..2eee2bbbe 100644 --- a/pkg/issuer/acme/http/http.go +++ b/pkg/issuer/acme/http/http.go @@ -48,6 +48,8 @@ const ( HTTP01Timeout = time.Minute * 15 // acmeSolverListenPort is the port acmesolver should listen on acmeSolverListenPort = 8089 + + loggerName = "http01" ) var ( @@ -92,10 +94,6 @@ func NewSolver(ctx *controller.Context) (*Solver, error) { }, nil } -func http01LogCtx(ctx context.Context) context.Context { - return logf.NewContext(ctx, nil, "http01") -} - func http01IngressCfgForChallenge(ch *cmacme.Challenge) (*cmacme.ACMEChallengeSolverHTTP01Ingress, error) { if ch.Spec.Solver.HTTP01 == nil || ch.Spec.Solver.HTTP01.Ingress == nil { return nil, fmt.Errorf("challenge's 'solver' field is specified but no HTTP01 ingress config provided. " + @@ -118,7 +116,8 @@ func getServiceType(ch *cmacme.Challenge) (corev1.ServiceType, error) { // challenge validation in the apiserver. If those resources already exist, it // will return nil (i.e. this function is idempotent). func (s *Solver) Present(ctx context.Context, issuer v1.GenericIssuer, ch *cmacme.Challenge) error { - ctx = http01LogCtx(ctx) + log := logf.FromContext(ctx).WithName(loggerName) + ctx = logf.NewContext(ctx, log) _, podErr := s.ensurePod(ctx, ch) svc, svcErr := s.ensureService(ctx, ch) @@ -148,8 +147,8 @@ func (s *Solver) Present(ctx context.Context, issuer v1.GenericIssuer, ch *cmacm } func (s *Solver) Check(ctx context.Context, issuer v1.GenericIssuer, ch *cmacme.Challenge) error { - ctx = logf.NewContext(http01LogCtx(ctx), nil, "selfCheck") - log := logf.FromContext(ctx) + log := logf.FromContext(ctx, loggerName, "selfCheck") + ctx = logf.NewContext(ctx, log) // HTTP Present is idempotent and the state of the system may have // changed since present was called by the controllers (killed pods, drained nodes) diff --git a/pkg/logs/BUILD.bazel b/pkg/logs/BUILD.bazel index 6a233740f..dacbb7e83 100644 --- a/pkg/logs/BUILD.bazel +++ b/pkg/logs/BUILD.bazel @@ -26,10 +26,7 @@ filegroup( filegroup( name = "all-srcs", - srcs = [ - ":package-srcs", - "//pkg/logs/testing:all-srcs", - ], + srcs = [":package-srcs"], tags = ["automanaged"], visibility = ["//visibility:public"], ) diff --git a/pkg/logs/logs.go b/pkg/logs/logs.go index 66cce89dd..9adc3f894 100644 --- a/pkg/logs/logs.go +++ b/pkg/logs/logs.go @@ -139,28 +139,21 @@ func WithRelatedResourceName(l logr.Logger, name, namespace, kind string) logr.L var contextKey = &struct{}{} func FromContext(ctx context.Context, names ...string) logr.Logger { - l := ctx.Value(contextKey) - if l == nil { - return Log - } - lT := l.(logr.Logger) - for _, n := range names { - lT = lT.WithName(n) - } - return lT -} - -func NewContext(ctx context.Context, l logr.Logger, names ...string) context.Context { - if ctx == nil { - ctx = context.Background() - } - if l == nil { - l = FromContext(ctx) + l, err := logr.FromContext(ctx) + if err != nil { + l = Log } for _, n := range names { l = l.WithName(n) } - return context.WithValue(ctx, contextKey, l) + return l +} + +func NewContext(ctx context.Context, l logr.Logger, names ...string) context.Context { + for _, n := range names { + l = l.WithName(n) + } + return logr.NewContext(ctx, l) } func V(level int) klog.Verbose { diff --git a/pkg/logs/testing/BUILD.bazel b/pkg/logs/testing/BUILD.bazel deleted file mode 100644 index 273f6bbe8..000000000 --- a/pkg/logs/testing/BUILD.bazel +++ /dev/null @@ -1,23 +0,0 @@ -load("@io_bazel_rules_go//go:def.bzl", "go_library") - -go_library( - name = "go_default_library", - srcs = ["log_testing.go"], - importpath = "github.com/jetstack/cert-manager/pkg/logs/testing", - visibility = ["//visibility:public"], - deps = ["@com_github_go_logr_logr//:go_default_library"], -) - -filegroup( - name = "package-srcs", - srcs = glob(["**"]), - tags = ["automanaged"], - visibility = ["//visibility:private"], -) - -filegroup( - name = "all-srcs", - srcs = [":package-srcs"], - tags = ["automanaged"], - visibility = ["//visibility:public"], -) diff --git a/pkg/logs/testing/log_testing.go b/pkg/logs/testing/log_testing.go deleted file mode 100644 index 7634ba3d0..000000000 --- a/pkg/logs/testing/log_testing.go +++ /dev/null @@ -1,64 +0,0 @@ -/* -Copyright 2020 The cert-manager Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package testing - -import ( - "fmt" - "strings" - "testing" - - "github.com/go-logr/logr" -) - -// TestLogger is a logr.Logger that prints everything to t.Log. -type TestLogger struct { - T *testing.T - name string - withValues []string -} - -func (log TestLogger) Info(msg string, keysAndValues ...interface{}) { - withValues := append([]string{}, log.withValues...) - for i := 0; i < len(keysAndValues); i = i + 2 { - withValues = append(withValues, fmt.Sprintf(`%s="%v"`, keysAndValues[i], keysAndValues[i+1])) - } - log.T.Logf("%s: %v", msg, strings.Join(withValues, " ")) -} - -func (TestLogger) Enabled() bool { - return true -} - -func (log TestLogger) Error(err error, msg string, args ...interface{}) { - log.T.Logf("%s: %v: %v", msg, err, args) -} - -func (log TestLogger) V(v int) logr.Logger { - return log -} - -func (log TestLogger) WithName(name string) logr.Logger { - log.name = name - return log -} - -func (log TestLogger) WithValues(keysAndValues ...interface{}) logr.Logger { - for i := 0; i < len(keysAndValues); i = i + 2 { - log.withValues = append(log.withValues, fmt.Sprintf(`%s="%v"`, keysAndValues[i], keysAndValues[i+1])) - } - return log -} diff --git a/pkg/metrics/BUILD.bazel b/pkg/metrics/BUILD.bazel index 5266b1da4..df84d7b0b 100644 --- a/pkg/metrics/BUILD.bazel +++ b/pkg/metrics/BUILD.bazel @@ -45,8 +45,8 @@ go_test( deps = [ "//pkg/apis/certmanager/v1:go_default_library", "//pkg/apis/meta/v1:go_default_library", - "//pkg/logs/testing:go_default_library", "//test/unit/gen:go_default_library", + "@com_github_go_logr_logr//testing:go_default_library", "@com_github_prometheus_client_golang//prometheus:go_default_library", "@com_github_prometheus_client_golang//prometheus/testutil:go_default_library", "@com_github_stretchr_testify//assert:go_default_library", diff --git a/pkg/metrics/certificates_test.go b/pkg/metrics/certificates_test.go index 57771556f..9257f2e6a 100644 --- a/pkg/metrics/certificates_test.go +++ b/pkg/metrics/certificates_test.go @@ -22,13 +22,13 @@ import ( "testing" "time" + logtesting "github.com/go-logr/logr/testing" "github.com/prometheus/client_golang/prometheus/testutil" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/utils/clock" cmapi "github.com/jetstack/cert-manager/pkg/apis/certmanager/v1" cmmeta "github.com/jetstack/cert-manager/pkg/apis/meta/v1" - logtesting "github.com/jetstack/cert-manager/pkg/logs/testing" "github.com/jetstack/cert-manager/test/unit/gen" ) @@ -169,7 +169,7 @@ func TestCertificateMetrics(t *testing.T) { } for n, test := range tests { t.Run(n, func(t *testing.T) { - m := New(logtesting.TestLogger{T: t}, clock.RealClock{}) + m := New(logtesting.NewTestLogger(t), clock.RealClock{}) m.UpdateCertificate(context.TODO(), test.crt) if err := testutil.CollectAndCompare(m.certificateExpiryTimeSeconds, @@ -197,7 +197,7 @@ func TestCertificateMetrics(t *testing.T) { } func TestCertificateCache(t *testing.T) { - m := New(logtesting.TestLogger{T: t}, clock.RealClock{}) + m := New(logtesting.NewTestLogger(t), clock.RealClock{}) crt1 := gen.Certificate("crt1", gen.SetCertificateUID("uid-1"), diff --git a/pkg/metrics/metrics_test.go b/pkg/metrics/metrics_test.go index 21e75d457..97b04ee8d 100644 --- a/pkg/metrics/metrics_test.go +++ b/pkg/metrics/metrics_test.go @@ -22,17 +22,17 @@ import ( "testing" "time" + logtesting "github.com/go-logr/logr/testing" "github.com/prometheus/client_golang/prometheus" "github.com/prometheus/client_golang/prometheus/testutil" "github.com/stretchr/testify/assert" - logtesting "github.com/jetstack/cert-manager/pkg/logs/testing" fakeclock "k8s.io/utils/clock/testing" ) func Test_clockTimeSeconds(t *testing.T) { fixedClock := fakeclock.NewFakeClock(time.Now()) - m := New(logtesting.TestLogger{T: t}, fixedClock) + m := New(logtesting.NewTestLogger(t), fixedClock) tests := map[string]struct { metricName string diff --git a/pkg/webhook/authority/BUILD.bazel b/pkg/webhook/authority/BUILD.bazel index 40c0bb093..bd647ad97 100644 --- a/pkg/webhook/authority/BUILD.bazel +++ b/pkg/webhook/authority/BUILD.bazel @@ -6,7 +6,6 @@ go_library( importpath = "github.com/jetstack/cert-manager/pkg/webhook/authority", visibility = ["//visibility:public"], deps = [ - "//cmd/util:go_default_library", "//internal/apis/meta:go_default_library", "//pkg/apis/certmanager/v1:go_default_library", "//pkg/logs:go_default_library", diff --git a/pkg/webhook/authority/authority.go b/pkg/webhook/authority/authority.go index 131a8d442..881811874 100644 --- a/pkg/webhook/authority/authority.go +++ b/pkg/webhook/authority/authority.go @@ -29,8 +29,6 @@ import ( "sync" "time" - logf "github.com/jetstack/cert-manager/pkg/logs" - "github.com/go-logr/logr" corev1 "k8s.io/api/core/v1" apierrors "k8s.io/apimachinery/pkg/api/errors" @@ -44,9 +42,9 @@ import ( "k8s.io/client-go/rest" "k8s.io/client-go/tools/cache" - "github.com/jetstack/cert-manager/cmd/util" cmmeta "github.com/jetstack/cert-manager/internal/apis/meta" cmapi "github.com/jetstack/cert-manager/pkg/apis/certmanager/v1" + logf "github.com/jetstack/cert-manager/pkg/logs" "github.com/jetstack/cert-manager/pkg/util/pki" ) @@ -73,7 +71,7 @@ type DynamicAuthority struct { LeafDuration time.Duration // Logger to write messages to. - Log logr.Logger + log logr.Logger lister corelisters.SecretNamespaceLister client coreclientset.SecretInterface @@ -93,9 +91,7 @@ type SignFunc func(template *x509.Certificate) (*x509.Certificate, error) var _ SignFunc = (&DynamicAuthority{}).Sign -func (d *DynamicAuthority) Run(stopCh <-chan struct{}) error { - ctx := util.ContextWithStopCh(context.Background(), stopCh) - +func (d *DynamicAuthority) Run(ctx context.Context) error { if d.SecretNamespace == "" { return fmt.Errorf("SecretNamespace must be set") } @@ -143,7 +139,7 @@ func (d *DynamicAuthority) Run(stopCh <-chan struct{}) error { // are not triggered. if err = wait.PollImmediateUntil(time.Second*10, func() (done bool, err error) { if err := d.ensureCA(ctx); err != nil { - d.Log.Error(err, "error ensuring CA") + d.log.Error(err, "error ensuring CA") } // never return 'done'. // this poll only ends when stopCh is closed. @@ -259,7 +255,7 @@ func (d *DynamicAuthority) notifyWatches(newCertData, newPrivateKeyData []byte) return } - d.Log.V(logf.DebugLevel).Info("Detected change in CA secret data, notifying watchers...") + d.log.V(logf.DebugLevel).Info("Detected change in CA secret data, notifying watchers...") d.watchMutex.Lock() defer d.watchMutex.Unlock() @@ -288,7 +284,7 @@ func (d *DynamicAuthority) caRequiresRegeneration(s *corev1.Secret) bool { pkData := s.Data[corev1.TLSPrivateKeyKey] certData := s.Data[corev1.TLSCertKey] if len(caData) == 0 || len(pkData) == 0 || len(certData) == 0 { - d.Log.V(logf.InfoLevel).Info("Missing data in CA secret. Regenerating") + d.log.V(logf.InfoLevel).Info("Missing data in CA secret. Regenerating") return true } // ensure that the ca.crt and tls.crt keys are equal @@ -297,22 +293,22 @@ func (d *DynamicAuthority) caRequiresRegeneration(s *corev1.Secret) bool { } cert, err := tls.X509KeyPair(certData, pkData) if err != nil { - d.Log.Error(err, "Failed to parse data in CA secret. Regenerating") + d.log.Error(err, "Failed to parse data in CA secret. Regenerating") return true } x509Cert, err := x509.ParseCertificate(cert.Certificate[0]) if err != nil { - d.Log.Error(err, "internal error parsing x509 certificate") + d.log.Error(err, "internal error parsing x509 certificate") return true } if !x509Cert.IsCA { - d.Log.V(logf.InfoLevel).Info("Stored certificate is not marked as a CA. Regenerating...") + d.log.V(logf.InfoLevel).Info("Stored certificate is not marked as a CA. Regenerating...") return true } // renew the root CA when the current one is 2/3 of the way through its life if x509Cert.NotAfter.Sub(time.Now()) < (d.CADuration / 3) { - d.Log.V(logf.InfoLevel).Info("Root CA certificate is nearing expiry. Regenerating...") + d.log.V(logf.InfoLevel).Info("Root CA certificate is nearing expiry. Regenerating...") return true } return false @@ -324,7 +320,7 @@ var serialNumberLimit = new(big.Int).Lsh(big.NewInt(1), 128) // If the provided Secret is nil, a new secret resource will be Created. // Otherwise, the provided resource will be modified and Updated. func (d *DynamicAuthority) regenerateCA(ctx context.Context, s *corev1.Secret) error { - d.Log.V(logf.DebugLevel).Info("Generating new root CA") + d.log.V(logf.DebugLevel).Info("Generating new root CA") pk, err := pki.GenerateECPrivateKey(384) if err != nil { return err @@ -388,27 +384,27 @@ func (d *DynamicAuthority) regenerateCA(ctx context.Context, s *corev1.Secret) e if _, err := d.client.Update(ctx, s, metav1.UpdateOptions{}); err != nil { return err } - d.Log.V(logf.DebugLevel).Info("Generated new root CA") + d.log.V(logf.DebugLevel).Info("Generated new root CA") return nil } func (d *DynamicAuthority) handleAdd(obj interface{}) { ctx := context.Background() if err := d.ensureCA(ctx); err != nil { - d.Log.Error(err, "error ensuring CA") + d.log.Error(err, "error ensuring CA") } } func (d *DynamicAuthority) handleUpdate(_, obj interface{}) { ctx := context.Background() if err := d.ensureCA(ctx); err != nil { - d.Log.Error(err, "error ensuring CA") + d.log.Error(err, "error ensuring CA") } } func (d *DynamicAuthority) handleDelete(obj interface{}) { ctx := context.Background() if err := d.ensureCA(ctx); err != nil { - d.Log.Error(err, "error ensuring CA") + d.log.Error(err, "error ensuring CA") } } diff --git a/pkg/webhook/server/BUILD.bazel b/pkg/webhook/server/BUILD.bazel index 95a9eb69d..bbf4d9aed 100644 --- a/pkg/webhook/server/BUILD.bazel +++ b/pkg/webhook/server/BUILD.bazel @@ -6,7 +6,6 @@ go_library( importpath = "github.com/jetstack/cert-manager/pkg/webhook/server", visibility = ["//visibility:public"], deps = [ - "//cmd/util:go_default_library", "//pkg/logs:go_default_library", "//pkg/util/profiling:go_default_library", "//pkg/webhook/handlers:go_default_library", @@ -21,7 +20,6 @@ go_library( "@io_k8s_apimachinery//pkg/runtime/serializer/json:go_default_library", "@io_k8s_apimachinery//pkg/util/runtime:go_default_library", "@io_k8s_component_base//cli/flag:go_default_library", - "@io_k8s_sigs_controller_runtime//pkg/log:go_default_library", "@org_golang_x_sync//errgroup:go_default_library", ], ) @@ -48,8 +46,8 @@ go_test( srcs = ["server_test.go"], embed = [":go_default_library"], deps = [ - "//pkg/logs/testing:go_default_library", "//pkg/webhook/handlers:go_default_library", + "@com_github_go_logr_logr//testing:go_default_library", "@com_github_stretchr_testify//assert:go_default_library", "@com_github_stretchr_testify//require:go_default_library", "@io_k8s_apiextensions_apiserver//pkg/apis/apiextensions/v1:go_default_library", diff --git a/pkg/webhook/server/server.go b/pkg/webhook/server/server.go index d1eb20c77..d1b4ece61 100644 --- a/pkg/webhook/server/server.go +++ b/pkg/webhook/server/server.go @@ -37,9 +37,7 @@ import ( "k8s.io/apimachinery/pkg/runtime/serializer/json" runtimeutil "k8s.io/apimachinery/pkg/util/runtime" ciphers "k8s.io/component-base/cli/flag" - crlog "sigs.k8s.io/controller-runtime/pkg/log" - cmdutil "github.com/jetstack/cert-manager/cmd/util" logf "github.com/jetstack/cert-manager/pkg/logs" "github.com/jetstack/cert-manager/pkg/util/profiling" "github.com/jetstack/cert-manager/pkg/webhook/handlers" @@ -103,9 +101,7 @@ type Server struct { MutationWebhook handlers.MutatingAdmissionHook ConversionWebhook handlers.ConversionHook - // Log is an optional logger to write informational and error messages to. - // If not specified, no messages will be logged. - Log logr.Logger + log logr.Logger // CipherSuites is the list of allowed cipher suites for the server. // Values are from tls package constants (https://golang.org/pkg/crypto/tls/#pkg-constants). @@ -120,13 +116,9 @@ type Server struct { type handleFunc func(context.Context, runtime.Object) (runtime.Object, error) -func (s *Server) Run(stopCh <-chan struct{}) error { - if s.Log == nil { - s.Log = crlog.NullLogger{} - } - - gctx := cmdutil.ContextWithStopCh(context.Background(), stopCh) - g, gctx := errgroup.WithContext(gctx) +func (s *Server) Run(ctx context.Context) error { + s.log = logf.FromContext(ctx) + g, gctx := errgroup.WithContext(ctx) // if a HealthzAddr is provided, start the healthz listener if s.HealthzAddr != "" { @@ -138,7 +130,7 @@ func (s *Server) Run(stopCh <-chan struct{}) error { healthMux := http.NewServeMux() healthMux.HandleFunc("/healthz", s.handleHealthz) healthMux.HandleFunc("/livez", s.handleLivez) - s.Log.V(logf.InfoLevel).Info("listening for insecure healthz connections", "address", s.HealthzAddr) + s.log.V(logf.InfoLevel).Info("listening for insecure healthz connections", "address", s.HealthzAddr) server := &http.Server{ Handler: healthMux, } @@ -171,7 +163,7 @@ func (s *Server) Run(stopCh <-chan struct{}) error { profilerMux := http.NewServeMux() // Add pprof endpoints to this mux profiling.Install(profilerMux) - s.Log.V(logf.InfoLevel).Info("running go profiler on", "address", s.PprofAddr) + s.log.V(logf.InfoLevel).Info("running go profiler on", "address", s.PprofAddr) server := &http.Server{ Handler: profilerMux, } @@ -202,9 +194,9 @@ func (s *Server) Run(stopCh <-chan struct{}) error { // wrap the listener with TLS if a CertificateSource is provided if s.CertificateSource != nil { - s.Log.V(logf.InfoLevel).Info("listening for secure connections", "address", s.ListenAddr) + s.log.V(logf.InfoLevel).Info("listening for secure connections", "address", s.ListenAddr) g.Go(func() error { - if err := s.CertificateSource.Run(gctx.Done()); (err != nil) && !errors.Is(err, context.Canceled) { + if err := s.CertificateSource.Run(gctx); (err != nil) && !errors.Is(err, context.Canceled) { return err } return nil @@ -224,7 +216,7 @@ func (s *Server) Run(stopCh <-chan struct{}) error { PreferServerCipherSuites: true, }) } else { - s.Log.V(logf.InfoLevel).Info("listening for insecure connections", "address", s.ListenAddr) + s.log.V(logf.InfoLevel).Info("listening for insecure connections", "address", s.ListenAddr) } s.listener = listener @@ -312,7 +304,7 @@ func (s *Server) handle(inner handleFunc) func(w http.ResponseWriter, req *http. data, err := io.ReadAll(req.Body) if err != nil { - s.Log.Error(err, "failed to read request body") + s.log.Error(err, "failed to read request body") w.WriteHeader(http.StatusBadRequest) return } @@ -322,19 +314,19 @@ func (s *Server) handle(inner handleFunc) func(w http.ResponseWriter, req *http. }) obj, _, err := codec.Decode(data, nil, nil) if err != nil { - s.Log.Error(err, "failed to decode request body") + s.log.Error(err, "failed to decode request body") w.WriteHeader(http.StatusBadRequest) return } result, err := inner(req.Context(), obj) if err != nil { - s.Log.Error(err, "failed to process webhook request") + s.log.Error(err, "failed to process webhook request") w.WriteHeader(http.StatusInternalServerError) return } if err := codec.Encode(result, w); err != nil { - s.Log.Error(err, "failed to encode response body") + s.log.Error(err, "failed to encode response body") w.WriteHeader(http.StatusInternalServerError) return } @@ -345,7 +337,7 @@ func (s *Server) handleHealthz(w http.ResponseWriter, req *http.Request) { defer req.Body.Close() if s.CertificateSource != nil && !s.CertificateSource.Healthy() { - s.Log.V(logf.WarnLevel).Info("Health check failed as CertificateSource is unhealthy") + s.log.V(logf.WarnLevel).Info("Health check failed as CertificateSource is unhealthy") w.WriteHeader(http.StatusInternalServerError) return } diff --git a/pkg/webhook/server/server_test.go b/pkg/webhook/server/server_test.go index 85e5bf93d..594c56fd3 100644 --- a/pkg/webhook/server/server_test.go +++ b/pkg/webhook/server/server_test.go @@ -20,13 +20,13 @@ import ( "context" "testing" + logtesting "github.com/go-logr/logr/testing" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1" apiextensionsv1beta1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1" "k8s.io/apimachinery/pkg/runtime" - testingcmlogs "github.com/jetstack/cert-manager/pkg/logs/testing" "github.com/jetstack/cert-manager/pkg/webhook/handlers" ) @@ -64,10 +64,10 @@ func TestConvert(t *testing.T) { for _, tc := range tests { t.Run(tc.name, func(t *testing.T) { - log := &testingcmlogs.TestLogger{T: t} + log := logtesting.NewTestLogger(t) s := &Server{ ConversionWebhook: handlers.NewSchemeBackedConverter(log, defaultScheme), - Log: log, + log: log, } out, err := s.convert(context.TODO(), tc.in) if tc.err != "" { diff --git a/pkg/webhook/server/tls/BUILD.bazel b/pkg/webhook/server/tls/BUILD.bazel index 5680bc115..58d7205f2 100644 --- a/pkg/webhook/server/tls/BUILD.bazel +++ b/pkg/webhook/server/tls/BUILD.bazel @@ -16,7 +16,6 @@ go_library( "//pkg/webhook/authority:go_default_library", "@com_github_go_logr_logr//:go_default_library", "@io_k8s_apimachinery//pkg/util/wait:go_default_library", - "@io_k8s_sigs_controller_runtime//pkg/log:go_default_library", ], ) @@ -26,8 +25,9 @@ go_test( embed = [":go_default_library"], deps = [ "//pkg/apis/certmanager/v1:go_default_library", - "//pkg/logs/testing:go_default_library", "//pkg/util/pki:go_default_library", + "@com_github_go_logr_logr//:go_default_library", + "@com_github_go_logr_logr//testing:go_default_library", "@org_golang_x_sync//errgroup:go_default_library", ], ) diff --git a/pkg/webhook/server/tls/dynamic_source.go b/pkg/webhook/server/tls/dynamic_source.go index 17c474b0b..59b56d4ee 100644 --- a/pkg/webhook/server/tls/dynamic_source.go +++ b/pkg/webhook/server/tls/dynamic_source.go @@ -26,13 +26,11 @@ import ( "sync" "time" - logf "github.com/jetstack/cert-manager/pkg/logs" - "github.com/go-logr/logr" "k8s.io/apimachinery/pkg/util/wait" - crlog "sigs.k8s.io/controller-runtime/pkg/log" cmapi "github.com/jetstack/cert-manager/pkg/apis/certmanager/v1" + logf "github.com/jetstack/cert-manager/pkg/logs" "github.com/jetstack/cert-manager/pkg/util/pki" "github.com/jetstack/cert-manager/pkg/webhook/authority" ) @@ -46,9 +44,7 @@ type DynamicSource struct { // The authority used to sign certificate templates. Authority *authority.DynamicAuthority - // Log is an optional logger to write informational and error messages to. - // If not specified, no messages will be logged. - Log logr.Logger + log logr.Logger cachedCertificate *tls.Certificate lock sync.Mutex @@ -56,16 +52,14 @@ type DynamicSource struct { var _ CertificateSource = &DynamicSource{} -func (f *DynamicSource) Run(stopCh <-chan struct{}) error { - if f.Log == nil { - f.Log = crlog.NullLogger{} - } +func (f *DynamicSource) Run(ctx context.Context) error { + f.log = logf.FromContext(ctx) // Run the authority in a separate goroutine authorityErrChan := make(chan error) go func() { defer close(authorityErrChan) - authorityErrChan <- f.Authority.Run(stopCh) + authorityErrChan <- f.Authority.Run(ctx) }() nextRenewCh := make(chan time.Time, 1) @@ -88,11 +82,11 @@ func (f *DynamicSource) Run(stopCh <-chan struct{}) error { } if err := f.regenerateCertificate(nextRenewCh); err != nil { - f.Log.Error(err, "Failed to generate initial serving certificate, retrying...", "interval", interval) + f.log.Error(err, "Failed to generate initial serving certificate, retrying...", "interval", interval) return false, nil } return true, nil - }, stopCh); err != nil { + }, ctx.Done()); err != nil { // In case of an error, the stopCh is closed; wait for authorityErrChan to be closed too <-authorityErrChan @@ -105,7 +99,7 @@ func (f *DynamicSource) Run(stopCh <-chan struct{}) error { } // watch for changes to the root CA - rotationChan := f.Authority.WatchRotation(stopCh) + rotationChan := f.Authority.WatchRotation(ctx.Done()) renewalChan := func() <-chan struct{} { ch := make(chan struct{}) go func() { @@ -125,13 +119,13 @@ func (f *DynamicSource) Run(stopCh <-chan struct{}) error { defer timer.Stop() select { - case <-stopCh: + case <-ctx.Done(): return case <-timer.C: // Try to send a message on ch, but also allow for a stop signal or // a new renewMoment to be received select { - case <-stopCh: + case <-ctx.Done(): return case ch <- struct{}{}: // Message was sent on channel @@ -163,27 +157,27 @@ func (f *DynamicSource) Run(stopCh <-chan struct{}) error { if !ok { return true, context.Canceled } - f.Log.V(logf.InfoLevel).Info("Detected root CA rotation - regenerating serving certificates") + f.log.V(logf.InfoLevel).Info("Detected root CA rotation - regenerating serving certificates") if err := f.regenerateCertificate(nextRenewCh); err != nil { - f.Log.Error(err, "Failed to regenerate serving certificate") + f.log.Error(err, "Failed to regenerate serving certificate") // Return an error here and stop the source running - this case should never // occur, and if it does, indicates some form of internal error. return false, err } // trigger regeneration if a renewal is required case <-renewalChan: - f.Log.V(logf.InfoLevel).Info("Serving certificate requires renewal, regenerating") + f.log.V(logf.InfoLevel).Info("Serving certificate requires renewal, regenerating") if err := f.regenerateCertificate(nextRenewCh); err != nil { - f.Log.Error(err, "Failed to regenerate serving certificate") + f.log.Error(err, "Failed to regenerate serving certificate") // Return an error here and stop the source running - this case should never // occur, and if it does, indicates some form of internal error. return false, err } - case <-stopCh: + case <-ctx.Done(): return true, context.Canceled } return false, nil - }, stopCh); err != nil { + }, ctx.Done()); err != nil { // In case of an error, the stopCh is closed; wait for all channels to close <-authorityErrChan <-rotationChan @@ -216,7 +210,7 @@ func (f *DynamicSource) Healthy() bool { // regenerateCertificate will trigger the cached certificate and private key to // be regenerated by requesting a new certificate from the authority. func (f *DynamicSource) regenerateCertificate(nextRenew chan<- time.Time) error { - f.Log.V(logf.DebugLevel).Info("Generating new ECDSA private key") + f.log.V(logf.DebugLevel).Info("Generating new ECDSA private key") pk, err := pki.GenerateECPrivateKey(384) if err != nil { return err @@ -232,13 +226,13 @@ func (f *DynamicSource) regenerateCertificate(nextRenew chan<- time.Time) error ExtKeyUsage: []x509.ExtKeyUsage{x509.ExtKeyUsageServerAuth}, } - f.Log.V(logf.DebugLevel).Info("Signing new serving certificate") + f.log.V(logf.DebugLevel).Info("Signing new serving certificate") cert, err := f.Authority.Sign(template) if err != nil { return err } - f.Log.V(logf.DebugLevel).Info("Signed new serving certificate") + f.log.V(logf.DebugLevel).Info("Signed new serving certificate") if err := f.updateCertificate(pk, cert, nextRenew); err != nil { return err @@ -270,6 +264,6 @@ func (f *DynamicSource) updateCertificate(pk crypto.Signer, cert *x509.Certifica // renew the certificate 1/3 of the time before its expiry nextRenew <- cert.NotAfter.Add(certDuration / -3) - f.Log.V(logf.InfoLevel).Info("Updated serving TLS certificate") + f.log.V(logf.InfoLevel).Info("Updated serving TLS certificate") return nil } diff --git a/pkg/webhook/server/tls/file_source.go b/pkg/webhook/server/tls/file_source.go index 8803b7107..7a71ab7e4 100644 --- a/pkg/webhook/server/tls/file_source.go +++ b/pkg/webhook/server/tls/file_source.go @@ -18,6 +18,7 @@ package tls import ( "bytes" + "context" "crypto/tls" "fmt" "os" @@ -25,7 +26,6 @@ import ( "time" "github.com/go-logr/logr" - crlog "sigs.k8s.io/controller-runtime/pkg/log" logf "github.com/jetstack/cert-manager/pkg/logs" ) @@ -53,9 +53,7 @@ type FileCertificateSource struct { // If not specified, a default of 12 will be used. MaxFailures int - // Log is an optional logger to write informational and error messages to. - // If not specified, no messages will be logged. - Log logr.Logger + log logr.Logger cachedCertificate *tls.Certificate cachedCertBytes []byte @@ -68,10 +66,8 @@ const defaultMaxFailures = 12 var _ CertificateSource = &FileCertificateSource{} -func (f *FileCertificateSource) Run(stopCh <-chan struct{}) error { - if f.Log == nil { - f.Log = crlog.NullLogger{} - } +func (f *FileCertificateSource) Run(ctx context.Context) error { + f.log = logf.FromContext(ctx) updateInterval := f.UpdateInterval if updateInterval == 0 { @@ -85,7 +81,7 @@ func (f *FileCertificateSource) Run(stopCh <-chan struct{}) error { // read the certificate data for the first time immediately, but allow // retrying if the first attempt fails if err := f.updateCertificateFromDisk(); err != nil { - f.Log.Error(err, "failed to read certificate from disk") + f.log.Error(err, "failed to read certificate from disk") } failures := 0 @@ -93,18 +89,18 @@ func (f *FileCertificateSource) Run(stopCh <-chan struct{}) error { defer ticker.Stop() for { select { - case <-stopCh: + case <-ctx.Done(): return nil case <-ticker.C: if err := f.updateCertificateFromDisk(); err != nil { failures++ - f.Log.Error(err, "failed to update certificate from disk", "failures", failures) + f.log.Error(err, "failed to update certificate from disk", "failures", failures) if failures >= maxFailures { return fmt.Errorf("failed to update certificate from disk %d times: %v", failures, err) } continue } - f.Log.V(logf.DebugLevel).Info("refreshed certificate from data on disk") + f.log.V(logf.DebugLevel).Info("refreshed certificate from data on disk") } } } @@ -138,10 +134,10 @@ func (f *FileCertificateSource) updateCertificateFromDisk() error { f.lock.Lock() defer f.lock.Unlock() if bytes.Equal(keyData, f.cachedKeyBytes) && bytes.Equal(certData, f.cachedCertBytes) { - f.Log.V(logf.DebugLevel).Info("key and certificate on disk have not changed") + f.log.V(logf.DebugLevel).Info("key and certificate on disk have not changed") return nil } - f.Log.V(logf.InfoLevel).Info("detected private key or certificate data on disk has changed. reloading certificate") + f.log.V(logf.InfoLevel).Info("detected private key or certificate data on disk has changed. reloading certificate") cert, err := tls.X509KeyPair(certData, keyData) if err != nil { diff --git a/pkg/webhook/server/tls/file_source_test.go b/pkg/webhook/server/tls/file_source_test.go index 90d6b7c80..bbee56835 100644 --- a/pkg/webhook/server/tls/file_source_test.go +++ b/pkg/webhook/server/tls/file_source_test.go @@ -17,6 +17,7 @@ limitations under the License. package tls import ( + "context" "crypto/rand" "crypto/x509" "crypto/x509/pkix" @@ -26,10 +27,11 @@ import ( "testing" "time" + "github.com/go-logr/logr" + logtesting "github.com/go-logr/logr/testing" "golang.org/x/sync/errgroup" cmapi "github.com/jetstack/cert-manager/pkg/apis/certmanager/v1" - logtesting "github.com/jetstack/cert-manager/pkg/logs/testing" "github.com/jetstack/cert-manager/pkg/util/pki" ) @@ -54,30 +56,27 @@ func TestFileSource_ReadsFile(t *testing.T) { CertPath: certFile, KeyPath: pkFile, UpdateInterval: interval, - Log: logtesting.TestLogger{T: t}, + log: logtesting.NewTestLogger(t), } - stopCh := make(chan struct{}) + ctx, cancel := context.WithCancel(logr.NewContext(context.Background(), logtesting.NewTestLogger(t))) + defer cancel() errGroup := new(errgroup.Group) errGroup.Go(func() error { - return source.Run(stopCh) + return source.Run(ctx) }) time.Sleep(interval * 2) cert, err := source.GetCertificate(nil) if err != nil { - close(stopCh) t.Fatalf("got an unexpected error: %v", err) } x509Crt, err := x509.ParseCertificate(cert.Certificate[0]) if err != nil { - close(stopCh) t.Fatalf("failed to decode x509 certificate: %v", err) } if x509Crt.Subject.SerialNumber != serial { - close(stopCh) t.Errorf("certificate had unexpected serial number. exp=%s, got=%s", serial, x509Crt.Subject.SerialNumber) } - close(stopCh) if err := errGroup.Wait(); err != nil { t.Errorf("FileCertificateSource failed %v", err) } @@ -104,27 +103,24 @@ func TestFileSource_UpdatesFile(t *testing.T) { CertPath: certFile, KeyPath: pkFile, UpdateInterval: interval, - Log: logtesting.TestLogger{T: t}, } - stopCh := make(chan struct{}) + ctx, cancel := context.WithCancel(logr.NewContext(context.Background(), logtesting.NewTestLogger(t))) + defer cancel() errGroup := new(errgroup.Group) errGroup.Go(func() error { - return source.Run(stopCh) + return source.Run(ctx) }) time.Sleep(interval * 2) cert, err := source.GetCertificate(nil) if err != nil { - close(stopCh) t.Fatalf("got an unexpected error: %v", err) } x509Crt, err := x509.ParseCertificate(cert.Certificate[0]) if err != nil { - close(stopCh) t.Fatalf("failed to decode x509 certificate: %v", err) } if x509Crt.Subject.SerialNumber != serial { - close(stopCh) t.Errorf("certificate had unexpected serial number. exp=%s, got=%s", serial, x509Crt.Subject.SerialNumber) } @@ -137,20 +133,16 @@ func TestFileSource_UpdatesFile(t *testing.T) { time.Sleep(interval * 2) cert, err = source.GetCertificate(nil) if err != nil { - close(stopCh) t.Fatalf("got an unexpected error: %v", err) } x509Crt, err = x509.ParseCertificate(cert.Certificate[0]) if err != nil { - close(stopCh) t.Fatalf("failed to decode x509 certificate: %v", err) } if x509Crt.Subject.SerialNumber != serial { - close(stopCh) t.Errorf("certificate had unexpected serial number. exp=%s, got=%s", serial, x509Crt.Subject.SerialNumber) } - close(stopCh) if err := errGroup.Wait(); err != nil { t.Errorf("FileCertificateSource failed: %v", err) } diff --git a/pkg/webhook/server/tls/source.go b/pkg/webhook/server/tls/source.go index d13151456..588c2fa19 100644 --- a/pkg/webhook/server/tls/source.go +++ b/pkg/webhook/server/tls/source.go @@ -17,6 +17,7 @@ limitations under the License. package tls import ( + "context" "crypto/tls" "errors" ) @@ -40,7 +41,7 @@ type CertificateSource interface { // kind of background operation. // The Run function should return when stopCh is closed, and may return an // error if an irrecoverable error occurs whilst running. - Run(stopCh <-chan struct{}) error + Run(context.Context) error // Healthy can be used to check the status of the CertificateSource. // It will return true if the source has a certificate available. diff --git a/test/integration/conversion/BUILD.bazel b/test/integration/conversion/BUILD.bazel index bb06b7eb9..8c065eb96 100644 --- a/test/integration/conversion/BUILD.bazel +++ b/test/integration/conversion/BUILD.bazel @@ -7,12 +7,12 @@ go_test( "//pkg/webhook/handlers/testdata/apis/testgroup/crds:all-srcs", ], deps = [ - "//pkg/logs/testing:go_default_library", "//pkg/webhook/handlers:go_default_library", "//pkg/webhook/handlers/testdata/apis/testgroup/install:go_default_library", "//pkg/webhook/handlers/testdata/apis/testgroup/v1:go_default_library", "//pkg/webhook/handlers/testdata/apis/testgroup/v2:go_default_library", "//test/integration/framework:go_default_library", + "@com_github_go_logr_logr//testing:go_default_library", "@io_k8s_apimachinery//pkg/api/equality:go_default_library", "@io_k8s_apimachinery//pkg/apis/meta/v1:go_default_library", "@io_k8s_apimachinery//pkg/runtime:go_default_library", diff --git a/test/integration/conversion/conversion_test.go b/test/integration/conversion/conversion_test.go index a05b62163..6e2c7190f 100644 --- a/test/integration/conversion/conversion_test.go +++ b/test/integration/conversion/conversion_test.go @@ -21,6 +21,7 @@ import ( "testing" "time" + logtesting "github.com/go-logr/logr/testing" "k8s.io/apimachinery/pkg/api/equality" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime" @@ -29,7 +30,6 @@ import ( "k8s.io/utils/pointer" "sigs.k8s.io/controller-runtime/pkg/client" - logtesting "github.com/jetstack/cert-manager/pkg/logs/testing" "github.com/jetstack/cert-manager/pkg/webhook/handlers" testapi "github.com/jetstack/cert-manager/pkg/webhook/handlers/testdata/apis/testgroup/install" testv1 "github.com/jetstack/cert-manager/pkg/webhook/handlers/testdata/apis/testgroup/v1" @@ -80,7 +80,7 @@ func TestConversion(t *testing.T) { } for name, test := range tests { t.Run(name, func(t *testing.T) { - log := logtesting.TestLogger{T: t} + log := logtesting.NewTestLogger(t) scheme := runtime.NewScheme() testapi.Install(scheme) diff --git a/test/integration/framework/apiserver.go b/test/integration/framework/apiserver.go index 4ad8cb4fc..3b2d4b09e 100644 --- a/test/integration/framework/apiserver.go +++ b/test/integration/framework/apiserver.go @@ -137,7 +137,7 @@ func init() { // patchCRDConversion overrides the conversion configuration of the CRDs that // are loaded in to the integration test API server, // configuring the conversion to be handled by the local webhook server. -func patchCRDConversion(crds []apiextensionsv1.CustomResourceDefinition, url string, caPEM []byte) { +func patchCRDConversion(crds []*apiextensionsv1.CustomResourceDefinition, url string, caPEM []byte) { for i := range crds { url := fmt.Sprintf("%s%s", url, "/convert") crds[i].Spec.Conversion = &apiextensionsv1.CustomResourceConversion{ @@ -153,14 +153,14 @@ func patchCRDConversion(crds []apiextensionsv1.CustomResourceDefinition, url str } } -func readCustomResourcesAtPath(t *testing.T, path string) []apiextensionsv1.CustomResourceDefinition { +func readCustomResourcesAtPath(t *testing.T, path string) []*apiextensionsv1.CustomResourceDefinition { serializer := jsonserializer.NewSerializerWithOptions(jsonserializer.DefaultMetaFactory, internalScheme, internalScheme, jsonserializer.SerializerOptions{ Yaml: true, }) converter := runtime.UnsafeObjectConvertor(internalScheme) codec := versioning.NewCodec(serializer, serializer, converter, internalScheme, internalScheme, internalScheme, runtime.InternalGroupVersioner, runtime.InternalGroupVersioner, internalScheme.Name()) - var crds []apiextensionsv1.CustomResourceDefinition + var crds []*apiextensionsv1.CustomResourceDefinition if err := filepath.Walk(path, func(path string, info os.FileInfo, err error) error { if err != nil { return err @@ -180,13 +180,13 @@ func readCustomResourcesAtPath(t *testing.T, path string) []apiextensionsv1.Cust return crds } -func readCRDsAtPath(codec runtime.Codec, converter runtime.ObjectConvertor, path string) ([]apiextensionsv1.CustomResourceDefinition, error) { +func readCRDsAtPath(codec runtime.Codec, converter runtime.ObjectConvertor, path string) ([]*apiextensionsv1.CustomResourceDefinition, error) { data, err := os.ReadFile(path) if err != nil { return nil, err } - var crds []apiextensionsv1.CustomResourceDefinition + var crds []*apiextensionsv1.CustomResourceDefinition for _, d := range strings.Split(string(data), "\n---\n") { // skip empty YAML documents if strings.TrimSpace(d) == "" { @@ -203,7 +203,7 @@ func readCRDsAtPath(codec runtime.Codec, converter runtime.ObjectConvertor, path return nil, err } - crds = append(crds, out) + crds = append(crds, &out) } return crds, nil diff --git a/test/integration/webhook/BUILD.bazel b/test/integration/webhook/BUILD.bazel index afcad0633..9a6cf6546 100644 --- a/test/integration/webhook/BUILD.bazel +++ b/test/integration/webhook/BUILD.bazel @@ -8,10 +8,11 @@ go_test( ], deps = [ "//pkg/apis/meta/v1:go_default_library", - "//pkg/logs/testing:go_default_library", "//pkg/webhook/authority:go_default_library", "//pkg/webhook/server/tls:go_default_library", "//test/integration/framework:go_default_library", + "@com_github_go_logr_logr//:go_default_library", + "@com_github_go_logr_logr//testing:go_default_library", "@io_k8s_api//core/v1:go_default_library", "@io_k8s_apimachinery//pkg/api/errors:go_default_library", "@io_k8s_apimachinery//pkg/apis/meta/v1:go_default_library", diff --git a/test/integration/webhook/dynamic_authority_test.go b/test/integration/webhook/dynamic_authority_test.go index 4b4ea624c..48b23888d 100644 --- a/test/integration/webhook/dynamic_authority_test.go +++ b/test/integration/webhook/dynamic_authority_test.go @@ -26,6 +26,8 @@ import ( "testing" "time" + "github.com/go-logr/logr" + logtesting "github.com/go-logr/logr/testing" corev1 "k8s.io/api/core/v1" apierrors "k8s.io/apimachinery/pkg/api/errors" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -33,7 +35,6 @@ import ( "k8s.io/client-go/kubernetes" cmmeta "github.com/jetstack/cert-manager/pkg/apis/meta/v1" - logtesting "github.com/jetstack/cert-manager/pkg/logs/testing" "github.com/jetstack/cert-manager/pkg/webhook/authority" "github.com/jetstack/cert-manager/test/integration/framework" ) @@ -44,7 +45,7 @@ import ( // Ensure that when the controller is running against an empty API server, it // creates and stores a new CA keypair. func TestDynamicAuthority_Bootstrap(t *testing.T) { - ctx, cancel := context.WithTimeout(context.Background(), time.Second*40) + ctx, cancel := context.WithTimeout(logr.NewContext(context.Background(), logtesting.NewTestLogger(t)), time.Second*40) defer cancel() config, stop := framework.RunControlPlane(t, ctx) @@ -64,12 +65,10 @@ func TestDynamicAuthority_Bootstrap(t *testing.T) { SecretNamespace: namespace, SecretName: "testsecret", RESTConfig: config, - Log: logtesting.TestLogger{T: t}, } - stopCh := make(chan struct{}) errCh := make(chan error) defer func() { - close(stopCh) + cancel() err := <-errCh if err != nil { t.Fatal(err) @@ -78,7 +77,7 @@ func TestDynamicAuthority_Bootstrap(t *testing.T) { // run the dynamic authority controller in the background go func() { defer close(errCh) - if err := auth.Run(stopCh); err != nil && !errors.Is(err, context.Canceled) { + if err := auth.Run(ctx); err != nil && !errors.Is(err, context.Canceled) { errCh <- fmt.Errorf("Unexpected error running authority: %v", err) } }() @@ -94,7 +93,7 @@ func TestDynamicAuthority_Bootstrap(t *testing.T) { // Ensures that when the controller is running and the CA Secret is deleted, // it is automatically recreated within a bounded amount of time. func TestDynamicAuthority_Recreates(t *testing.T) { - ctx, cancel := context.WithTimeout(context.Background(), time.Second*40) + ctx, cancel := context.WithTimeout(logr.NewContext(context.Background(), logtesting.NewTestLogger(t)), time.Second*40) defer cancel() config, stop := framework.RunControlPlane(t, ctx) @@ -114,12 +113,10 @@ func TestDynamicAuthority_Recreates(t *testing.T) { SecretNamespace: namespace, SecretName: "testsecret", RESTConfig: config, - Log: logtesting.TestLogger{T: t}, } - stopCh := make(chan struct{}) errCh := make(chan error) defer func() { - close(stopCh) + cancel() err := <-errCh if err != nil { t.Fatal(err) @@ -128,7 +125,7 @@ func TestDynamicAuthority_Recreates(t *testing.T) { // run the dynamic authority controller in the background go func() { defer close(errCh) - if err := auth.Run(stopCh); err != nil && !errors.Is(err, context.Canceled) { + if err := auth.Run(ctx); err != nil && !errors.Is(err, context.Canceled) { errCh <- fmt.Errorf("Unexpected error running authority: %v", err) } }() diff --git a/test/integration/webhook/dynamic_source_test.go b/test/integration/webhook/dynamic_source_test.go index 7fd7f912f..99b5c9884 100644 --- a/test/integration/webhook/dynamic_source_test.go +++ b/test/integration/webhook/dynamic_source_test.go @@ -25,13 +25,13 @@ import ( "testing" "time" + "github.com/go-logr/logr" + logtesting "github.com/go-logr/logr/testing" corev1 "k8s.io/api/core/v1" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/util/wait" "k8s.io/client-go/kubernetes" - logtesting "github.com/jetstack/cert-manager/pkg/logs/testing" "github.com/jetstack/cert-manager/pkg/webhook/authority" "github.com/jetstack/cert-manager/pkg/webhook/server/tls" "github.com/jetstack/cert-manager/test/integration/framework" @@ -40,7 +40,7 @@ import ( // Ensure that when the source is running against an apiserver, it bootstraps // a CA and signs a valid certificate. func TestDynamicSource_Bootstrap(t *testing.T) { - ctx, cancel := context.WithTimeout(context.Background(), time.Second*40) + ctx, cancel := context.WithTimeout(logr.NewContext(context.Background(), logtesting.NewTestLogger(t)), time.Second*40) defer cancel() config, stop := framework.RunControlPlane(t, ctx) @@ -56,21 +56,17 @@ func TestDynamicSource_Bootstrap(t *testing.T) { t.Fatal(err) } - log := logtesting.TestLogger{T: t} source := tls.DynamicSource{ DNSNames: []string{"example.com"}, Authority: &authority.DynamicAuthority{ SecretNamespace: namespace, SecretName: "testsecret", RESTConfig: config, - Log: log, }, - Log: log, } - stopCh := make(chan struct{}) errCh := make(chan error) defer func() { - close(stopCh) + cancel() err := <-errCh if err != nil { t.Fatal(err) @@ -79,7 +75,7 @@ func TestDynamicSource_Bootstrap(t *testing.T) { // run the dynamic authority controller in the background go func() { defer close(errCh) - if err := source.Run(stopCh); err != nil && !errors.Is(err, context.Canceled) { + if err := source.Run(ctx); err != nil && !errors.Is(err, context.Canceled) { errCh <- fmt.Errorf("Unexpected error running source: %v", err) } }() @@ -109,7 +105,7 @@ func TestDynamicSource_Bootstrap(t *testing.T) { // Ensure that when the source is running against an apiserver, it bootstraps // a CA and signs a valid certificate. func TestDynamicSource_CARotation(t *testing.T) { - ctx, cancel := context.WithTimeout(context.Background(), time.Second*40) + ctx, cancel := context.WithTimeout(logr.NewContext(context.Background(), logtesting.NewTestLogger(t)), time.Second*40) defer cancel() config, stop := framework.RunControlPlane(t, ctx) @@ -125,21 +121,17 @@ func TestDynamicSource_CARotation(t *testing.T) { t.Fatal(err) } - log := logtesting.TestLogger{T: t} source := tls.DynamicSource{ DNSNames: []string{"example.com"}, Authority: &authority.DynamicAuthority{ SecretNamespace: namespace, SecretName: "testsecret", RESTConfig: config, - Log: log, }, - Log: log, } - stopCh := make(chan struct{}) errCh := make(chan error) defer func() { - close(stopCh) + cancel() err := <-errCh if err != nil { t.Fatal(err) @@ -148,7 +140,7 @@ func TestDynamicSource_CARotation(t *testing.T) { // run the dynamic authority controller in the background go func() { defer close(errCh) - if err := source.Run(stopCh); err != nil && !errors.Is(err, context.Canceled) { + if err := source.Run(ctx); err != nil && !errors.Is(err, context.Canceled) { errCh <- fmt.Errorf("Unexpected error running source: %v", err) } }()