From 98433af31a66ebd0b953ace8bfedebaec4031019 Mon Sep 17 00:00:00 2001 From: Evan Cordell Date: Fri, 3 Feb 2023 16:52:20 -0500 Subject: [PATCH] add magefile to repo --- .github/workflows/build-test.yaml | 60 +++++++++++++------- .github/workflows/lint.yaml | 16 +++++- .github/workflows/release.yaml | 6 +- CONTRIBUTING.md | 19 +++---- README.md | 2 +- default-operator-config.yaml | 10 ++-- magefiles/magefile.go | 86 +++++++++++++++++++++++++++++ tools/generate-update-graph/main.go | 10 ++-- tools/go.mod | 14 ++--- tools/go.sum | 32 +++++------ 10 files changed, 183 insertions(+), 72 deletions(-) create mode 100644 magefiles/magefile.go diff --git a/.github/workflows/build-test.yaml b/.github/workflows/build-test.yaml index a91c4dcb..a952da02 100644 --- a/.github/workflows/build-test.yaml +++ b/.github/workflows/build-test.yaml @@ -7,6 +7,8 @@ on: # yamllint disable-line rule:truthy pull_request: branches: - "*" +env: + GO_VERSION: "~1.19" jobs: paths-filter: runs-on: "ubuntu-latest" @@ -35,9 +37,9 @@ jobs: runs-on: "ubuntu-latest" steps: - uses: "actions/checkout@v3" - - uses: "actions/setup-go@v3" + - uses: "authzed/actions/setup-go@main" with: - go-version: "~1.19" + go-version: "${{ env.GO_VERSION }}" - uses: "authzed/actions/go-build@main" image-build: @@ -48,9 +50,9 @@ jobs: runs-on: "ubuntu-latest" steps: - uses: "actions/checkout@v3" - - uses: "actions/setup-go@v3" + - uses: "authzed/actions/setup-go@main" with: - go-version: "~1.19" + go-version: "${{ env.GO_VERSION }}" - uses: "authzed/actions/docker-build@main" with: push: false @@ -58,35 +60,51 @@ jobs: buildx: false qemu: false - test: + unit: needs: "paths-filter" if: | needs.paths-filter.outputs.codechange == 'true' - name: "Test" + name: "Unit Tests" runs-on: "ubuntu-latest" steps: - uses: "actions/checkout@v3" with: submodules: true - - uses: "actions/setup-go@v2" + - uses: "authzed/actions/setup-go@main" with: - go-version: "^1.19" + go-version: "${{ env.GO_VERSION }}" + - uses: "docker/setup-qemu-action@v2" + - uses: "docker/setup-buildx-action@v2" + - name: "Run Unit Tests" + uses: "magefile/mage-action@v2" + with: + version: "latest" + args: "test:unit" + + e2e: + needs: "paths-filter" + if: | + needs.paths-filter.outputs.codechange == 'true' + name: "E2E Tests" + runs-on: "ubuntu-latest-8-cores" + steps: - uses: "actions/checkout@v3" with: - repository: "authzed/spicedb" - path: "spicedb" submodules: true + - uses: "authzed/actions/setup-go@main" + with: + go-version: "${{ env.GO_VERSION }}" - uses: "docker/setup-qemu-action@v2" - uses: "docker/setup-buildx-action@v2" - - name: "Tag Test SpiceDB Image" - uses: "docker/build-push-action@v3" + - name: "Run E2E Tests" + uses: "magefile/mage-action@v2" + with: + version: "latest" + args: "test:e2e" + - uses: "actions/upload-artifact@v2" + if: "always()" + # this upload step is really flaky, don't fail the job if it fails + continue-on-error: true with: - context: "spicedb" - file: "spicedb/Dockerfile" - tags: "spicedb:dev,spicedb:updated" - outputs: "type=docker,dest=/tmp/image.tar" - - name: "Run Ginkgo Tests" - run: "go run github.com/onsi/ginkgo/v2/ginkgo --skip-package ./spicedb --tags=e2e -r --procs=2 -v --randomize-all --randomize-suites --fail-on-pending --fail-fast --no-color --race --trace --json-report=report.json -- -v=4" - env: - PROVISION: "true" - ARCHIVES: "/tmp/image.tar" + name: "cluster-state" + path: "e2e/cluster-state" diff --git a/.github/workflows/lint.yaml b/.github/workflows/lint.yaml index 6e082ad1..0abec53a 100644 --- a/.github/workflows/lint.yaml +++ b/.github/workflows/lint.yaml @@ -7,24 +7,34 @@ on: # yamllint disable-line rule:truthy - "main" pull_request: branches: ["*"] +env: + GO_VERSION: "~1.19" jobs: go-lint: name: "Lint Go" runs-on: "ubuntu-latest" steps: - uses: "actions/checkout@v3" - - uses: "actions/setup-go@v3" + - uses: "authzed/actions/setup-go@main" with: - go-version: "~1.19" + go-version: "${{ env.GO_VERSION }}" - name: "Go Format" # using this instead of the authzed/actions version because `.` # properly ignores counterfeiter codegen run: "go run mvdan.cc/gofumpt -w ." + - name: "Codegen" + uses: "magefile/mage-action@v2" + with: + version: "latest" + args: "generate" - name: "Verify Gofumpt" uses: "chainguard-dev/actions/nodiff@main" with: fixup-command: "gofumpt" - uses: "authzed/actions/go-mod-tidy@main" + - uses: "authzed/actions/go-mod-tidy@main" + with: + working_directory: "./tools" - uses: "authzed/actions/go-generate@main" - uses: "authzed/actions/golangci-lint@main" @@ -47,7 +57,7 @@ jobs: codeql: name: "Analyze with CodeQL" - runs-on: "ubuntu-latest" + runs-on: "ubuntu-latest-8-cores" permissions: actions: "read" contents: "read" diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index ffec9497..a05c99b5 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -7,6 +7,8 @@ on: # yamllint disable-line rule:truthy permissions: contents: "write" packages: "write" +env: + GO_VERSION: "~1.19" jobs: goreleaser: runs-on: "ubuntu-latest" @@ -16,9 +18,9 @@ jobs: - uses: "actions/checkout@v3" with: fetch-depth: 0 - - uses: "actions/setup-go@v3" + - uses: "authzed/actions/setup-go@main" with: - go-version: "~1.19" + go-version: "${{ env.GO_VERSION }}" - uses: "authzed/actions/docker-login@main" with: quayio_token: "${{ secrets.QUAYIO_PASSWORD }}" diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 734e7016..4e394dcc 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -74,28 +74,23 @@ In order to build and test the project, the [latest stable version of Go] and kn [latest stable version of Go]: https://golang.org/dl [working Go environment]: https://golang.org/doc/code.html -Install ginkgo: +Install [mage](https://magefile.org/#installation): ```sh -go install github.com/onsi/ginkgo/v2/ginkgo@v2 +# homebrew, see link for other options +brew install mage ``` -Run against an existing cluster with images already loaded (current kubeconfig context) +Run e2e tests: ```sh -ginkgo --tags=e2e -r +mage test:e2e ``` -Spin up a new `kind` cluster and run tests: +Run unit tests: ```sh -PROVISION=true IMAGES=spicedb:dev,spicedb:updated ginkgo --tags=e2e -r -``` - -Run with `go test` (ginkgo has better signal handling, prefer ginkgo to `go test`) - -```sh -go test -tags=e2e ./... +mage test:unit ``` ### Adding dependencies diff --git a/README.md b/README.md index 74604600..1e17bd58 100644 --- a/README.md +++ b/README.md @@ -37,7 +37,7 @@ We recommend one of the following: Next, you'll install a [release](https://github.com/authzed/spicedb-operator/releases/) of the operator: ```console -kubectl apply --server-side -f https://github.com/authzed/spicedb-operator/releases/download/v1.1.0/bundle.yaml +kubectl apply --server-side -f https://github.com/authzed/spicedb-operator/releases/latest/download/bundle.yaml ``` Finally you can create your first cluster: diff --git a/default-operator-config.yaml b/default-operator-config.yaml index 0be25c60..80bb4337 100644 --- a/default-operator-config.yaml +++ b/default-operator-config.yaml @@ -561,19 +561,19 @@ channels: name: stable nodes: - id: v1.16.1 - migration: add-caveats + migration: add_caveat tag: v1.16.1 - id: v1.16.0 - migration: add-caveats + migration: add_caveat tag: v1.16.0 - id: v1.15.0 - migration: add-caveats + migration: add_caveat tag: v1.15.0 - id: v1.14.1 - migration: add-caveats + migration: add_caveat tag: v1.14.1 - id: v1.14.0 - migration: add-caveats + migration: add_caveat tag: v1.14.0 - id: v1.13.0 migration: add_ns_config_id diff --git a/magefiles/magefile.go b/magefiles/magefile.go new file mode 100644 index 00000000..b42d180f --- /dev/null +++ b/magefiles/magefile.go @@ -0,0 +1,86 @@ +//go:build mage +// +build mage + +package main + +import ( + "fmt" + "os/exec" + + "github.com/magefile/mage/mg" + "github.com/magefile/mage/sh" + kind "sigs.k8s.io/kind/pkg/cluster" + "sigs.k8s.io/kind/pkg/cmd" +) + +var Aliases = map[string]interface{}{ + "test": Test.Unit, + "e2e": Test.E2e, + "generate": Gen.All, +} + +type Test mg.Namespace + +// Runs the unit tests +func (Test) Unit() error { + fmt.Println("running unit tests") + goCmd := "go" + if hasBinary("richgo") { + goCmd = "richgo" + } + return sh.RunV(goCmd, "test", "./...") +} + +// Runs the end-to-end tests in a kind cluster +func (Test) E2e() error { + mg.Deps(checkDocker) + fmt.Println("running e2e tests") + return sh.RunWithV(map[string]string{ + "PROVISION": "true", + }, "go", "run", "github.com/onsi/ginkgo/v2/ginkgo", "--tags=e2e", "-p", "-r", "-v", "--fail-fast", "--randomize-all", "--race", "e2e") +} + +// Removes the kind cluster used for end-to-end tests +func (Test) Clean_e2e() error { + mg.Deps(checkDocker) + fmt.Println("removing kind cluster") + return kind.NewProvider( + kind.ProviderWithLogger(cmd.NewLogger()), + ).Delete("spicedb-operator-e2e", "") +} + +type Gen mg.Namespace + +// Run all generators in parallel +func (g Gen) All() error { + mg.Deps(g.Api, g.Graph) + return nil +} + +// Run kube api codegen +func (Gen) Api() error { + fmt.Println("generating apis") + return sh.RunV("go", "generate", "./...") +} + +// Generate the update graph +func (Gen) Graph() error { + fmt.Println("generating update graph") + return sh.RunV("go", "generate", "./tools/generate-update-graph/main.go") +} + +func checkDocker() error { + if !hasBinary("docker") { + return fmt.Errorf("docker must be installed to run e2e tests") + } + err := sh.Run("docker", "ps") + if err == nil || sh.ExitStatus(err) == 0 { + return nil + } + return err +} + +func hasBinary(binaryName string) bool { + _, err := exec.LookPath(binaryName) + return err == nil +} diff --git a/tools/generate-update-graph/main.go b/tools/generate-update-graph/main.go index 2c59fdf8..23310446 100644 --- a/tools/generate-update-graph/main.go +++ b/tools/generate-update-graph/main.go @@ -176,11 +176,11 @@ func crdbChannel() updates.Channel { func mysqlChannel() updates.Channel { releases := []updates.State{ - {ID: "v1.16.1", Tag: "v1.16.1", Migration: "add-caveats"}, - {ID: "v1.16.0", Tag: "v1.16.0", Migration: "add-caveats"}, - {ID: "v1.15.0", Tag: "v1.15.0", Migration: "add-caveats"}, - {ID: "v1.14.1", Tag: "v1.14.1", Migration: "add-caveats"}, - {ID: "v1.14.0", Tag: "v1.14.0", Migration: "add-caveats"}, + {ID: "v1.16.1", Tag: "v1.16.1", Migration: "add_caveat"}, + {ID: "v1.16.0", Tag: "v1.16.0", Migration: "add_caveat"}, + {ID: "v1.15.0", Tag: "v1.15.0", Migration: "add_caveat"}, + {ID: "v1.14.1", Tag: "v1.14.1", Migration: "add_caveat"}, + {ID: "v1.14.0", Tag: "v1.14.0", Migration: "add_caveat"}, {ID: "v1.13.0", Tag: "v1.13.0", Migration: "add_ns_config_id"}, {ID: "v1.12.0", Tag: "v1.12.0", Migration: "add_ns_config_id"}, {ID: "v1.11.0", Tag: "v1.11.0", Migration: "add_ns_config_id"}, diff --git a/tools/go.mod b/tools/go.mod index aa8f848d..a75f77a5 100644 --- a/tools/go.mod +++ b/tools/go.mod @@ -30,13 +30,13 @@ require ( github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect github.com/modern-go/reflect2 v1.0.2 // indirect github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect - golang.org/x/crypto v0.0.0-20220427172511-eb4f295cb31f // indirect + golang.org/x/crypto v0.1.0 // indirect golang.org/x/exp v0.0.0-20220823124025-807a23277127 // indirect - golang.org/x/net v0.3.1-0.20221206200815-1e63c2f08a10 // indirect + golang.org/x/net v0.5.0 // indirect golang.org/x/oauth2 v0.0.0-20220909003341-f21342109be1 // indirect - golang.org/x/sys v0.3.0 // indirect - golang.org/x/term v0.3.0 // indirect - golang.org/x/text v0.5.0 // indirect + golang.org/x/sys v0.4.0 // indirect + golang.org/x/term v0.4.0 // indirect + golang.org/x/text v0.6.0 // indirect golang.org/x/time v0.3.0 // indirect google.golang.org/appengine v1.6.7 // indirect google.golang.org/protobuf v1.28.1 // indirect @@ -44,8 +44,8 @@ require ( gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect - k8s.io/api v0.26.0 // indirect - k8s.io/apimachinery v0.26.0 // indirect + k8s.io/api v0.26.1 // indirect + k8s.io/apimachinery v0.26.1 // indirect k8s.io/client-go v0.26.0 // indirect k8s.io/klog/v2 v2.80.1 // indirect k8s.io/kube-openapi v0.0.0-20221012153701-172d655c2280 // indirect diff --git a/tools/go.sum b/tools/go.sum index cf8e2f37..46a7cc31 100644 --- a/tools/go.sum +++ b/tools/go.sum @@ -90,8 +90,8 @@ github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjY github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= -github.com/onsi/ginkgo/v2 v2.6.0 h1:9t9b9vRUbFq3C4qKFCGkVuq/fIHji802N1nrtkh1mNc= -github.com/onsi/gomega v1.24.1 h1:KORJXNNTzJXzu4ScJWssJfJMnJ+2QJqhoQSRwNlze9E= +github.com/onsi/ginkgo/v2 v2.8.0 h1:pAM+oBNPrpXRs+E/8spkeGx9QgekbRVyr74EUvRVOUI= +github.com/onsi/gomega v1.25.0 h1:Vw7br2PCDYijJHSfBOWhov+8cAnUf8MfMaIOV323l6Y= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= @@ -108,8 +108,8 @@ github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9dec golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20220427172511-eb4f295cb31f h1:OeJjE6G4dgCY4PIXvIRQbE8+RX+uXZyGhUy/ksMGJoc= -golang.org/x/crypto v0.0.0-20220427172511-eb4f295cb31f/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= +golang.org/x/crypto v0.1.0 h1:MDRAIl0xIo9Io2xV565hzXHw3zVseKrJKodhohM5CjU= +golang.org/x/crypto v0.1.0/go.mod h1:RecgLatLF4+eUMCP1PoPZQb+cVrJcOPbHkTkbkB9sbw= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20220823124025-807a23277127 h1:S4NrSKDfihhl3+4jSTgwoIevKxX9p7Iv9x++OEIptDo= golang.org/x/exp v0.0.0-20220823124025-807a23277127/go.mod h1:cyybsKvd6eL0RnXn6p/Grxp8F5bW7iYuBgsNCOHpMYE= @@ -127,8 +127,8 @@ golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.3.1-0.20221206200815-1e63c2f08a10 h1:Frnccbp+ok2GkUS2tC84yAq/U9Vg+0sIO7aRL3T4Xnc= -golang.org/x/net v0.3.1-0.20221206200815-1e63c2f08a10/go.mod h1:MBQ8lrhLObU/6UmLb4fmbmk5OcyYmqtbGd/9yIeKjEE= +golang.org/x/net v0.5.0 h1:GyT4nK/YDHSqa1c4753ouYCDajOYKTja9Xb/OHtgvSw= +golang.org/x/net v0.5.0/go.mod h1:DivGGAXEgPSlEBzxGzZI+ZLohi+xUj054jfeKui00ws= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20220909003341-f21342109be1 h1:lxqLZaMad/dJHMFZH0NiNpiEZI/nhgWhe4wgzpE+MuA= golang.org/x/oauth2 v0.0.0-20220909003341-f21342109be1/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= @@ -141,15 +141,15 @@ golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5h golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.3.0 h1:w8ZOecv6NaNa/zC8944JTU3vz4u6Lagfk4RPQxv92NQ= -golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/term v0.3.0 h1:qoo4akIqOcDME5bhc/NgxUdovd6BSS2uMsVjB56q1xI= -golang.org/x/term v0.3.0/go.mod h1:q750SLmJuPmVoN1blW3UFBPREJfb1KmY3vwxfr+nFDA= +golang.org/x/sys v0.4.0 h1:Zr2JFtRQNX3BCZ8YtxRE9hNJYC8J6I1MVbMg6owUp18= +golang.org/x/sys v0.4.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/term v0.4.0 h1:O7UWfv5+A2qiuulQk30kVinPoMtoIPeVaKLEgLpVkvg= +golang.org/x/term v0.4.0/go.mod h1:9P2UbLfCdcvo3p/nzKvsmas4TnlujnuoV9hGgYzW1lQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= 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.5.0 h1:OLmvp0KP+FVG99Ct/qFiL/Fhk4zp4QQnZ7b2U+5piUM= -golang.org/x/text v0.5.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.6.0 h1:3XmdazWV+ubf7QgHSTWeykHOci5oeekaGJBLkrkaw4k= +golang.org/x/text v0.6.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/time v0.3.0 h1:rg5rLMjNzMS1RkNLzCG38eapWhnYLFYXDXj2gOlr8j4= golang.org/x/time v0.3.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -205,10 +205,10 @@ gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -k8s.io/api v0.26.0 h1:IpPlZnxBpV1xl7TGk/X6lFtpgjgntCg8PJ+qrPHAC7I= -k8s.io/api v0.26.0/go.mod h1:k6HDTaIFC8yn1i6pSClSqIwLABIcLV9l5Q4EcngKnQg= -k8s.io/apimachinery v0.26.0 h1:1feANjElT7MvPqp0JT6F3Ss6TWDwmcjLypwoPpEf7zg= -k8s.io/apimachinery v0.26.0/go.mod h1:tnPmbONNJ7ByJNz9+n9kMjNP8ON+1qoAIIC70lztu74= +k8s.io/api v0.26.1 h1:f+SWYiPd/GsiWwVRz+NbFyCgvv75Pk9NK6dlkZgpCRQ= +k8s.io/api v0.26.1/go.mod h1:xd/GBNgR0f707+ATNyPmQ1oyKSgndzXij81FzWGsejg= +k8s.io/apimachinery v0.26.1 h1:8EZ/eGJL+hY/MYCNwhmDzVqq2lPl3N3Bo8rvweJwXUQ= +k8s.io/apimachinery v0.26.1/go.mod h1:tnPmbONNJ7ByJNz9+n9kMjNP8ON+1qoAIIC70lztu74= k8s.io/client-go v0.26.0 h1:lT1D3OfO+wIi9UFolCrifbjUUgu7CpLca0AD8ghRLI8= k8s.io/client-go v0.26.0/go.mod h1:I2Sh57A79EQsDmn7F7ASpmru1cceh3ocVT9KlX2jEZg= k8s.io/klog/v2 v2.80.1 h1:atnLQ121W371wYYFawwYx1aEY2eUfs4l3J72wtgAwV4=