From 216866536e145d527b9704661d18694e023f0be1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Cuadrado=20Juan?= Date: Thu, 29 Sep 2022 14:26:29 +0200 Subject: [PATCH 01/10] build: Bump to go 1.19 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Víctor Cuadrado Juan --- .github/workflows/ci.yml | 6 +++--- .github/workflows/container-image.yml | 2 +- .github/workflows/release.yml | 2 +- Dockerfile | 2 +- go.mod | 2 +- 5 files changed, 7 insertions(+), 7 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 8d54f3e2..aef4d9bb 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -13,7 +13,7 @@ jobs: - uses: actions/checkout@v3 - uses: actions/setup-go@v3 with: - go-version: '1.18' + go-version: '1.19' - run: make unit-tests integration_tests: @@ -23,7 +23,7 @@ jobs: - uses: actions/checkout@v3 - uses: actions/setup-go@v3 with: - go-version: '1.18' + go-version: '1.19' - run: make integration-tests golangci: @@ -33,7 +33,7 @@ jobs: - uses: actions/checkout@v3 - uses: actions/setup-go@v3 with: - go-version: '1.18' + go-version: '1.19' - name: golangci-lint uses: golangci/golangci-lint-action@v3 with: diff --git a/.github/workflows/container-image.yml b/.github/workflows/container-image.yml index 62ded099..187878c0 100644 --- a/.github/workflows/container-image.yml +++ b/.github/workflows/container-image.yml @@ -56,7 +56,7 @@ jobs: name: Install Golang uses: actions/setup-go@v3 with: - go-version: '1.18' + go-version: '1.19' - name: Install the bom command uses: kubewarden/github-actions/kubernetes-bom-installer@v1 diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 8af41d72..11f3a186 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -21,7 +21,7 @@ jobs: - name: Install Golang uses: actions/setup-go@v3 with: - go-version: '1.18' + go-version: '1.19' - name: Install the bom command shell: bash diff --git a/Dockerfile b/Dockerfile index 708e515d..acce374a 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,5 +1,5 @@ # Build the manager binary -FROM golang:1.18 as builder +FROM golang:1.19 as builder WORKDIR /workspace # Copy the Go Modules manifests diff --git a/go.mod b/go.mod index 1fcbd24c..005b0e84 100644 --- a/go.mod +++ b/go.mod @@ -1,6 +1,6 @@ module github.com/kubewarden/kubewarden-controller -go 1.18 +go 1.19 require ( github.com/ereslibre/kube-webhook-wrapper v0.0.2 From eafc3aca4ea1f0867a42bc0d976b9e0a0cd861cf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Cuadrado=20Juan?= Date: Thu, 29 Sep 2022 14:26:41 +0200 Subject: [PATCH 02/10] deps: `go get -u && go mod tidy` MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Víctor Cuadrado Juan --- go.mod | 13 +++++++------ go.sum | 32 ++++++++++++++++++++++---------- 2 files changed, 29 insertions(+), 16 deletions(-) diff --git a/go.mod b/go.mod index 005b0e84..13f5add0 100644 --- a/go.mod +++ b/go.mod @@ -10,10 +10,10 @@ require ( github.com/onsi/gomega v1.20.1 github.com/pkg/errors v0.9.1 go.opentelemetry.io/otel v1.10.0 - go.opentelemetry.io/otel/exporters/otlp/otlpmetric v0.31.0 - go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v0.31.0 - go.opentelemetry.io/otel/metric v0.32.0 - go.opentelemetry.io/otel/sdk/metric v0.31.0 + go.opentelemetry.io/otel/exporters/otlp/otlpmetric v0.32.1 + go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v0.32.1 + go.opentelemetry.io/otel/metric v0.32.1 + go.opentelemetry.io/otel/sdk/metric v0.32.1 k8s.io/api v0.25.2 k8s.io/apimachinery v0.25.2 k8s.io/client-go v0.25.2 @@ -52,6 +52,7 @@ require ( github.com/imdario/mergo v0.3.13 // indirect github.com/josharian/intern v1.0.0 // indirect github.com/json-iterator/go v1.1.12 // indirect + github.com/kr/pretty v0.2.1 // indirect github.com/mailru/easyjson v0.7.7 // indirect github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369 // indirect github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect @@ -76,7 +77,7 @@ require ( golang.org/x/sys v0.0.0-20220919091848-fb04ddd9f9c8 // indirect golang.org/x/term v0.0.0-20220919170432-7a66f970e087 // indirect golang.org/x/text v0.3.7 // indirect - golang.org/x/time v0.0.0-20220920022843-2ce7c2934d45 // indirect + golang.org/x/time v0.0.0-20220922220347-f3bd1da661af // indirect gomodules.xyz/jsonpatch/v2 v2.2.0 // indirect google.golang.org/appengine v1.6.7 // indirect google.golang.org/genproto v0.0.0-20220921223823-23cae91e6737 // indirect @@ -90,7 +91,7 @@ require ( k8s.io/component-base v0.25.2 // indirect k8s.io/klog/v2 v2.80.1 // indirect k8s.io/kube-openapi v0.0.0-20220803164354-a70c9af30aea // indirect - k8s.io/utils v0.0.0-20220922104903-7796b5f52b7e // indirect + k8s.io/utils v0.0.0-20220922133306-665eaaec4324 // indirect sigs.k8s.io/json v0.0.0-20220713155537-f223a00ba0e2 // indirect sigs.k8s.io/structured-merge-diff/v4 v4.2.3 // indirect sigs.k8s.io/yaml v1.3.0 // indirect diff --git a/go.sum b/go.sum index 77f4366a..b7837421 100644 --- a/go.sum +++ b/go.sum @@ -72,8 +72,8 @@ github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmV github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY= github.com/benbjohnson/clock v1.0.3/go.mod h1:bGMdMPoPVvcYyt1gHDf4J2KE153Yf9BuiUKYMaxlTDM= +github.com/benbjohnson/clock v1.1.0 h1:Q92kusRqC1XV2MjkWETPvjJVqKetz1OzxZB7mHJLju8= github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= -github.com/benbjohnson/clock v1.3.0 h1:ip6w0uFQkncKQ979AypyG0ER7mqUSBdKLOgAle/AT8A= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= @@ -87,6 +87,7 @@ github.com/cenkalti/backoff/v4 v4.1.3/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInq github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/certifi/gocertifi v0.0.0-20191021191039-0944d244cd40/go.mod h1:sGbDF6GwGcLpkNXPUTkMRoywsNa/ol15pxFe6ERfguA= github.com/certifi/gocertifi v0.0.0-20200922220541-2c3bb06c6054/go.mod h1:sGbDF6GwGcLpkNXPUTkMRoywsNa/ol15pxFe6ERfguA= +github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko= github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/cespare/xxhash/v2 v2.1.2 h1:YRXhKfTDauu4ajMg1TPgFO5jnlC2HCbmLXMcTG5cbYE= @@ -280,6 +281,7 @@ github.com/grpc-ecosystem/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmg github.com/grpc-ecosystem/go-grpc-middleware v1.3.0/go.mod h1:z0ButlSOZa5vEBq9m2m2hlwIgKw+rp3sdCBRoJY+30Y= github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= github.com/grpc-ecosystem/grpc-gateway v1.9.0/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= +github.com/grpc-ecosystem/grpc-gateway v1.16.0 h1:gmcG1KaJ57LophUzW0Hy8NmPhnMZb4M0+kPpLofRdBo= github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= github.com/grpc-ecosystem/grpc-gateway/v2 v2.7.0/go.mod h1:hgWBS7lorOAVIJEQMi4ZsPv9hVvWI6+ch50m39Pf2Ks= github.com/grpc-ecosystem/grpc-gateway/v2 v2.11.3 h1:lLT7ZLSzGLI08vc9cpd+tYmNWjdKDqyr/2L+f6U12Fk= @@ -335,8 +337,9 @@ github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxv github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= -github.com/kr/pretty v0.2.0 h1:s5hAObm+yFO5uHYt5dYjxi2rXrsnmRpJx4OYvIWUaQs= github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= +github.com/kr/pretty v0.2.1 h1:Fmg33tUaq4/8ym9TJN1x7sLJnHVwhP33CNkpYV/7rwI= +github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= @@ -506,24 +509,29 @@ go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.20.0/go.mod h1: go.opentelemetry.io/otel v0.20.0/go.mod h1:Y3ugLH2oa81t5QO+Lty+zXf8zC9L26ax4Nzoxm/dooo= go.opentelemetry.io/otel v1.10.0 h1:Y7DTJMR6zs1xkS/upamJYk0SxxN4C9AqRd77jmZnyY4= go.opentelemetry.io/otel v1.10.0/go.mod h1:NbvWjCthWHKBEUMpf0/v8ZRZlni86PpGFEMA9pnQSnQ= +go.opentelemetry.io/otel/exporters/otlp v0.20.0 h1:PTNgq9MRmQqqJY0REVbZFvwkYOA85vbdQU/nVfxDyqg= go.opentelemetry.io/otel/exporters/otlp v0.20.0/go.mod h1:YIieizyaN77rtLJra0buKiNBOm9XQfkPEKBeuhoMwAM= go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.10.0 h1:TaB+1rQhddO1sF71MpZOZAuSPW1klK2M8XxfrBMfK7Y= go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.10.0/go.mod h1:78XhIg8Ht9vR4tbLNUhXsiOnE2HOuSeKAiAcoVQEpOY= -go.opentelemetry.io/otel/exporters/otlp/otlpmetric v0.31.0 h1:H0+xwv4shKw0gfj/ZqR13qO2N/dBQogB1OcRjJjV39Y= -go.opentelemetry.io/otel/exporters/otlp/otlpmetric v0.31.0/go.mod h1:nkenGD8vcvs0uN6WhR90ZVHQlgDsRmXicnNadMnk+XQ= -go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v0.31.0 h1:BaQ2xM5cPmldVCMvbLoy5tcLUhXCtIhItDYBNw83B7Y= -go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v0.31.0/go.mod h1:VRr8tlXQEsTdesDCh0qBe2iKDWhpi3ZqDYw6VlZ8MhI= +go.opentelemetry.io/otel/exporters/otlp/otlpmetric v0.32.0 h1:1Y6R1E3ICT6xHUq/ZoButGh9h3lvR58ktv/d4lfx7aQ= +go.opentelemetry.io/otel/exporters/otlp/otlpmetric v0.32.0/go.mod h1:G4GZcaPg+P8F42CMYXPYOUDj6MgTmnYWxzkCdfVCIhI= +go.opentelemetry.io/otel/exporters/otlp/otlpmetric v0.32.1 h1:DQY4KNmy9Hu4SKAElPIp2DGmPZOgWmTurWhyd9yOAdM= +go.opentelemetry.io/otel/exporters/otlp/otlpmetric v0.32.1/go.mod h1:6FizIJscdUCUM5FP5JVh3FaB1Uku5Z7GapFvBOKERQg= +go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v0.32.0 h1:kD9xW+E4GAYgRoFNKrtz3+6idxifTioVM9eSZGEvXAo= +go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v0.32.0/go.mod h1:geX7tBUTmSQq9l72hjZWGTRVvdtdiXEpkGqn9afUxos= +go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v0.32.1 h1:tpZ/DKQTUTIwDK6amyBYS4oudtO+swZW2zBUbkBTDNo= +go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v0.32.1/go.mod h1:A6awkKLPv8+5r7pSzwD21Qpt81i1mK1PK/7XwH/hHOk= go.opentelemetry.io/otel/metric v0.20.0/go.mod h1:598I5tYlH1vzBjn+BTuhzTCSb/9debfNp6R3s7Pr1eU= -go.opentelemetry.io/otel/metric v0.32.0 h1:lh5KMDB8xlMM4kwE38vlZJ3rZeiWrjw3As1vclfC01k= -go.opentelemetry.io/otel/metric v0.32.0/go.mod h1:PVDNTt297p8ehm949jsIzd+Z2bIZJYQQG/uuHTeWFHY= +go.opentelemetry.io/otel/metric v0.32.1 h1:ftff5LSBCIDwL0UkhBuDg8j9NNxx2IusvJ18q9h6RC4= +go.opentelemetry.io/otel/metric v0.32.1/go.mod h1:iLPP7FaKMAD5BIxJ2VX7f2KTuz//0QK2hEUyti5psqQ= go.opentelemetry.io/otel/oteltest v0.20.0/go.mod h1:L7bgKf9ZB7qCwT9Up7i9/pn0PWIa9FqQ2IQ8LoxiGnw= go.opentelemetry.io/otel/sdk v0.20.0/go.mod h1:g/IcepuwNsoiX5Byy2nNV0ySUF1em498m7hBWC279Yc= go.opentelemetry.io/otel/sdk v1.10.0 h1:jZ6K7sVn04kk/3DNUdJ4mqRlGDiXAVuIG+MMENpTNdY= go.opentelemetry.io/otel/sdk v1.10.0/go.mod h1:vO06iKzD5baltJz1zarxMCNHFpUlUiOy4s65ECtn6kE= go.opentelemetry.io/otel/sdk/export/metric v0.20.0/go.mod h1:h7RBNMsDJ5pmI1zExLi+bJK+Dr8NQCh0qGhm1KDnNlE= go.opentelemetry.io/otel/sdk/metric v0.20.0/go.mod h1:knxiS8Xd4E/N+ZqKmUPf3gTTZ4/0TjTXukfxjzSTpHE= -go.opentelemetry.io/otel/sdk/metric v0.31.0 h1:2sZx4R43ZMhJdteKAlKoHvRgrMp53V1aRxvEf5lCq8Q= -go.opentelemetry.io/otel/sdk/metric v0.31.0/go.mod h1:fl0SmNnX9mN9xgU6OLYLMBMrNAsaZQi7qBwprwO3abk= +go.opentelemetry.io/otel/sdk/metric v0.32.1 h1:S6AqzulzGQl+sTpYeAoVLw1SJbc2LYuKCMUmfEKG+zM= +go.opentelemetry.io/otel/sdk/metric v0.32.1/go.mod h1:Nn+Nt/7cKzm5ISmvLzNO5RLf0Xuv8/Qo8fkpr0JDOzs= go.opentelemetry.io/otel/trace v0.20.0/go.mod h1:6GjCW8zgDjwGHGa6GkyeB8+/5vjT16gUEi0Nf1iBdgw= go.opentelemetry.io/otel/trace v1.10.0 h1:npQMbR8o7mum8uF95yFbOEJffhs1sbCOfDh8zAJiH5E= go.opentelemetry.io/otel/trace v1.10.0/go.mod h1:Sij3YYczqAdz+EhmGhE6TpTxUO5/F/AzrK+kxfGqySM= @@ -739,6 +747,8 @@ golang.org/x/time v0.0.0-20210220033141-f8bda1e9f3ba/go.mod h1:tRJNPiyCQ0inRvYxb golang.org/x/time v0.0.0-20210723032227-1f47c861a9ac/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20220920022843-2ce7c2934d45 h1:yuLAip3bfURHClMG9VBdzPrQvCWjWiWUTBGV+/fCbUs= golang.org/x/time v0.0.0-20220920022843-2ce7c2934d45/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20220922220347-f3bd1da661af h1:Yx9k8YCG3dvF87UAn2tu2HQLf2dt/eR1bXxpLMWeH+Y= +golang.org/x/time v0.0.0-20220922220347-f3bd1da661af/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -964,6 +974,8 @@ k8s.io/utils v0.0.0-20210707171843-4b05e18ac7d9/go.mod h1:jPW/WVKK9YHAvNhRxK0md/ k8s.io/utils v0.0.0-20210802155522-efc7438f0176/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= k8s.io/utils v0.0.0-20220922104903-7796b5f52b7e h1:VCa0oVHFkQCgny6nAwFEmNCzJcviA831cY/rZPShVdU= k8s.io/utils v0.0.0-20220922104903-7796b5f52b7e/go.mod h1:G4gXLUBxr2awE32MvACDCarw5gMwh+m/ka6hN8lR5jA= +k8s.io/utils v0.0.0-20220922133306-665eaaec4324 h1:i+xdFemcSNuJvIfBlaYuXgRondKxK4z4prVPKzEaelI= +k8s.io/utils v0.0.0-20220922133306-665eaaec4324/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= From ebdb49ca3e9d1d4b8207b523a21477e3a2a92208 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Cuadrado=20Juan?= Date: Thu, 29 Sep 2022 14:29:16 +0200 Subject: [PATCH 03/10] refactor: Changes for `go.opentelemetry.io/otel/sdk` 0.32.1 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Víctor Cuadrado Juan --- internal/pkg/metrics/metrics.go | 33 +++++++++++---------------------- main.go | 17 ++++++++++++++++- 2 files changed, 27 insertions(+), 23 deletions(-) diff --git a/internal/pkg/metrics/metrics.go b/internal/pkg/metrics/metrics.go index 7513040b..00a7e185 100644 --- a/internal/pkg/metrics/metrics.go +++ b/internal/pkg/metrics/metrics.go @@ -7,13 +7,10 @@ import ( policiesv1 "github.com/kubewarden/kubewarden-controller/apis/policies/v1" "go.opentelemetry.io/otel/attribute" - "go.opentelemetry.io/otel/exporters/otlp/otlpmetric" "go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc" "go.opentelemetry.io/otel/metric/global" "go.opentelemetry.io/otel/metric/instrument" - controller "go.opentelemetry.io/otel/sdk/metric/controller/basic" - processor "go.opentelemetry.io/otel/sdk/metric/processor/basic" - "go.opentelemetry.io/otel/sdk/metric/selector/simple" + "go.opentelemetry.io/otel/sdk/metric" ) const ( @@ -22,31 +19,23 @@ const ( policyCounterMetricDescription = "How many policies are installed in the cluster" ) -func New(openTelemetryEndpoint string) error { +func New(openTelemetryEndpoint string) (func(context.Context) error, error) { ctx := context.Background() - client := otlpmetricgrpc.NewClient( + exporter, err := otlpmetricgrpc.New( + ctx, otlpmetricgrpc.WithInsecure(), otlpmetricgrpc.WithEndpoint(openTelemetryEndpoint), ) - exporter, err := otlpmetric.New(ctx, client) if err != nil { - return fmt.Errorf("cannot start metric exporter: %w", err) + return nil, fmt.Errorf("cannot start metric exporter: %w", err) } - controller := controller.New( - processor.NewFactory( - simple.NewWithHistogramDistribution(), - exporter, - ), - controller.WithExporter(exporter), - controller.WithCollectPeriod(2*time.Second), - ) - global.SetMeterProvider(controller) - err = controller.Start(ctx) - if err != nil { - return fmt.Errorf("cannot start metric controller: %w", err) - } - return nil + meterProvider := metric.NewMeterProvider(metric.WithReader( + metric.NewPeriodicReader(exporter, metric.WithInterval(2*time.Second)))) + + global.SetMeterProvider(meterProvider) + + return meterProvider.Shutdown, nil } func RecordPolicyCount(policy policiesv1.Policy) error { diff --git a/main.go b/main.go index 087d372b..edc6900c 100644 --- a/main.go +++ b/main.go @@ -17,8 +17,10 @@ limitations under the License. package main import ( + "context" "flag" "os" + "time" // Import all Kubernetes client auth plugins (e.g. Azure, GCP, OIDC, etc.) // to ensure that exec-entrypoint and run can make use of them. @@ -97,11 +99,24 @@ func main() { } if enableMetrics { - if err := metrics.New(openTelemetryEndpoint); err != nil { + shutdown, err := metrics.New(openTelemetryEndpoint) + if err != nil { setupLog.Error(err, "unable to initialize metrics provider") os.Exit(1) } setupLog.Info("Metrics initialized") + + // cleanly shutdown and flush telemetry on application exit + defer func() { + // Do not make the application hang when it is shutdown. + ctx, cancel := context.WithTimeout(context.Background(), time.Second*5) + defer cancel() + + if err := shutdown(ctx); err != nil { + setupLog.Error(err, "Unable to shutdown telemetry") + os.Exit(1) + } + }() } mgr, err := webhookwrapper.NewManager( From 8ec013cdbadcbd541cdf3d6370163b22ee50892f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Cuadrado=20Juan?= Date: Thu, 29 Sep 2022 18:06:11 +0200 Subject: [PATCH 04/10] chore: `go fmt` changes from go 1.19 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Víctor Cuadrado Juan --- apis/policies/v1/admissionpolicy_types.go | 18 ++++++++--------- .../v1/clusteradmissionpolicy_types.go | 20 +++++++++---------- apis/policies/v1/groupversion_info.go | 4 ++-- apis/policies/v1/policy.go | 2 +- apis/policies/v1/webhook_suite_test.go | 4 ++-- .../v1alpha2/admissionpolicy_types.go | 16 +++++++-------- .../v1alpha2/clusteradmissionpolicy_types.go | 18 ++++++++--------- apis/policies/v1alpha2/groupversion_info.go | 4 ++-- apis/policies/v1alpha2/policy.go | 2 +- 9 files changed, 44 insertions(+), 44 deletions(-) diff --git a/apis/policies/v1/admissionpolicy_types.go b/apis/policies/v1/admissionpolicy_types.go index e19dd6ae..0344ff98 100644 --- a/apis/policies/v1/admissionpolicy_types.go +++ b/apis/policies/v1/admissionpolicy_types.go @@ -28,15 +28,15 @@ type AdmissionPolicySpec struct { } // AdmissionPolicy is the Schema for the admissionpolicies API -//+kubebuilder:object:root=true -//+kubebuilder:subresource:status -//+kubebuilder:resource:scope=Namespaced -//+kubebuilder:storageversion -//+kubebuilder:printcolumn:name="Policy Server",type=string,JSONPath=`.spec.policyServer`,description="Bound to Policy Server" -//+kubebuilder:printcolumn:name="Mutating",type=boolean,JSONPath=`.spec.mutating`,description="Whether the policy is mutating" -//+kubebuilder:printcolumn:name="Mode",type=string,JSONPath=`.spec.mode`,description="Policy deployment mode" -//+kubebuilder:printcolumn:name="Observed mode",type=string,JSONPath=`.status.mode`,description="Policy deployment mode observed on the assigned Policy Server" -//+kubebuilder:printcolumn:name="Status",type=string,JSONPath=`.status.policyStatus`,description="Status of the policy" +// +kubebuilder:object:root=true +// +kubebuilder:subresource:status +// +kubebuilder:resource:scope=Namespaced +// +kubebuilder:storageversion +// +kubebuilder:printcolumn:name="Policy Server",type=string,JSONPath=`.spec.policyServer`,description="Bound to Policy Server" +// +kubebuilder:printcolumn:name="Mutating",type=boolean,JSONPath=`.spec.mutating`,description="Whether the policy is mutating" +// +kubebuilder:printcolumn:name="Mode",type=string,JSONPath=`.spec.mode`,description="Policy deployment mode" +// +kubebuilder:printcolumn:name="Observed mode",type=string,JSONPath=`.status.mode`,description="Policy deployment mode observed on the assigned Policy Server" +// +kubebuilder:printcolumn:name="Status",type=string,JSONPath=`.status.policyStatus`,description="Status of the policy" type AdmissionPolicy struct { metav1.TypeMeta `json:",inline"` metav1.ObjectMeta `json:"metadata,omitempty"` diff --git a/apis/policies/v1/clusteradmissionpolicy_types.go b/apis/policies/v1/clusteradmissionpolicy_types.go index e61d5d90..190a4785 100644 --- a/apis/policies/v1/clusteradmissionpolicy_types.go +++ b/apis/policies/v1/clusteradmissionpolicy_types.go @@ -74,15 +74,15 @@ type ClusterAdmissionPolicySpec struct { } // ClusterAdmissionPolicy is the Schema for the clusteradmissionpolicies API -//+kubebuilder:object:root=true -//+kubebuilder:subresource:status -//+kubebuilder:resource:scope=Cluster -//+kubebuilder:storageversion -//+kubebuilder:printcolumn:name="Policy Server",type=string,JSONPath=`.spec.policyServer`,description="Bound to Policy Server" -//+kubebuilder:printcolumn:name="Mutating",type=boolean,JSONPath=`.spec.mutating`,description="Whether the policy is mutating" -//+kubebuilder:printcolumn:name="Mode",type=string,JSONPath=`.spec.mode`,description="Policy deployment mode" -//+kubebuilder:printcolumn:name="Observed mode",type=string,JSONPath=`.status.mode`,description="Policy deployment mode observed on the assigned Policy Server" -//+kubebuilder:printcolumn:name="Status",type=string,JSONPath=`.status.policyStatus`,description="Status of the policy" +// +kubebuilder:object:root=true +// +kubebuilder:subresource:status +// +kubebuilder:resource:scope=Cluster +// +kubebuilder:storageversion +// +kubebuilder:printcolumn:name="Policy Server",type=string,JSONPath=`.spec.policyServer`,description="Bound to Policy Server" +// +kubebuilder:printcolumn:name="Mutating",type=boolean,JSONPath=`.spec.mutating`,description="Whether the policy is mutating" +// +kubebuilder:printcolumn:name="Mode",type=string,JSONPath=`.spec.mode`,description="Policy deployment mode" +// +kubebuilder:printcolumn:name="Observed mode",type=string,JSONPath=`.status.mode`,description="Policy deployment mode observed on the assigned Policy Server" +// +kubebuilder:printcolumn:name="Status",type=string,JSONPath=`.status.policyStatus`,description="Status of the policy" type ClusterAdmissionPolicy struct { metav1.TypeMeta `json:",inline"` metav1.ObjectMeta `json:"metadata,omitempty"` @@ -92,7 +92,7 @@ type ClusterAdmissionPolicy struct { } // ClusterAdmissionPolicyList contains a list of ClusterAdmissionPolicy -//+kubebuilder:object:root=true +// +kubebuilder:object:root=true type ClusterAdmissionPolicyList struct { metav1.TypeMeta `json:",inline"` metav1.ListMeta `json:"metadata,omitempty"` diff --git a/apis/policies/v1/groupversion_info.go b/apis/policies/v1/groupversion_info.go index ce60a49b..92eb0b67 100644 --- a/apis/policies/v1/groupversion_info.go +++ b/apis/policies/v1/groupversion_info.go @@ -15,8 +15,8 @@ limitations under the License. */ // Package v1 contains API Schema definitions for the policies v1 API group -//+kubebuilder:object:generate=true -//+groupName=policies.kubewarden.io +// +kubebuilder:object:generate=true +// +groupName=policies.kubewarden.io package v1 import ( diff --git a/apis/policies/v1/policy.go b/apis/policies/v1/policy.go index e2dae3ca..fd3a83aa 100644 --- a/apis/policies/v1/policy.go +++ b/apis/policies/v1/policy.go @@ -75,7 +75,7 @@ type PolicyStatus struct { Conditions []metav1.Condition `json:"conditions,omitempty"` } -//+kubebuilder:object:generate:=false +// +kubebuilder:object:generate:=false type Policy interface { client.Object GetPolicyMode() PolicyMode diff --git a/apis/policies/v1/webhook_suite_test.go b/apis/policies/v1/webhook_suite_test.go index 2b1078c8..bf260870 100644 --- a/apis/policies/v1/webhook_suite_test.go +++ b/apis/policies/v1/webhook_suite_test.go @@ -166,7 +166,7 @@ func makeClusterAdmissionPolicyTemplate(name, namespace, policyServerName string } } -//nolint: dupl +// nolint: dupl func deleteClusterAdmissionPolicy(ctx context.Context, name, namespace string) { nsn := types.NamespacedName{ Name: name, @@ -211,7 +211,7 @@ func makePolicyServerTemplate(name, namespace string) *PolicyServer { } } -//nolint: dupl +// nolint: dupl func deletePolicyServer(ctx context.Context, name, namespace string) { nsn := types.NamespacedName{ Name: name, diff --git a/apis/policies/v1alpha2/admissionpolicy_types.go b/apis/policies/v1alpha2/admissionpolicy_types.go index c14ff013..eaef7e8a 100644 --- a/apis/policies/v1alpha2/admissionpolicy_types.go +++ b/apis/policies/v1alpha2/admissionpolicy_types.go @@ -28,14 +28,14 @@ type AdmissionPolicySpec struct { } // AdmissionPolicy is the Schema for the admissionpolicies API -//+kubebuilder:object:root=true -//+kubebuilder:subresource:status -//+kubebuilder:resource:scope=Namespaced -//+kubebuilder:printcolumn:name="Policy Server",type=string,JSONPath=`.spec.policyServer`,description="Bound to Policy Server" -//+kubebuilder:printcolumn:name="Mutating",type=boolean,JSONPath=`.spec.mutating`,description="Whether the policy is mutating" -//+kubebuilder:printcolumn:name="Mode",type=string,JSONPath=`.spec.mode`,description="Policy deployment mode" -//+kubebuilder:printcolumn:name="Observed mode",type=string,JSONPath=`.status.mode`,description="Policy deployment mode observed on the assigned Policy Server" -//+kubebuilder:printcolumn:name="Status",type=string,JSONPath=`.status.policyStatus`,description="Status of the policy" +// +kubebuilder:object:root=true +// +kubebuilder:subresource:status +// +kubebuilder:resource:scope=Namespaced +// +kubebuilder:printcolumn:name="Policy Server",type=string,JSONPath=`.spec.policyServer`,description="Bound to Policy Server" +// +kubebuilder:printcolumn:name="Mutating",type=boolean,JSONPath=`.spec.mutating`,description="Whether the policy is mutating" +// +kubebuilder:printcolumn:name="Mode",type=string,JSONPath=`.spec.mode`,description="Policy deployment mode" +// +kubebuilder:printcolumn:name="Observed mode",type=string,JSONPath=`.status.mode`,description="Policy deployment mode observed on the assigned Policy Server" +// +kubebuilder:printcolumn:name="Status",type=string,JSONPath=`.status.policyStatus`,description="Status of the policy" type AdmissionPolicy struct { metav1.TypeMeta `json:",inline"` metav1.ObjectMeta `json:"metadata,omitempty"` diff --git a/apis/policies/v1alpha2/clusteradmissionpolicy_types.go b/apis/policies/v1alpha2/clusteradmissionpolicy_types.go index 0b46a46a..188a9e35 100644 --- a/apis/policies/v1alpha2/clusteradmissionpolicy_types.go +++ b/apis/policies/v1alpha2/clusteradmissionpolicy_types.go @@ -73,14 +73,14 @@ type ClusterAdmissionPolicySpec struct { } // ClusterAdmissionPolicy is the Schema for the clusteradmissionpolicies API -//+kubebuilder:object:root=true -//+kubebuilder:subresource:status -//+kubebuilder:resource:scope=Cluster -//+kubebuilder:printcolumn:name="Policy Server",type=string,JSONPath=`.spec.policyServer`,description="Bound to Policy Server" -//+kubebuilder:printcolumn:name="Mutating",type=boolean,JSONPath=`.spec.mutating`,description="Whether the policy is mutating" -//+kubebuilder:printcolumn:name="Mode",type=string,JSONPath=`.spec.mode`,description="Policy deployment mode" -//+kubebuilder:printcolumn:name="Observed mode",type=string,JSONPath=`.status.mode`,description="Policy deployment mode observed on the assigned Policy Server" -//+kubebuilder:printcolumn:name="Status",type=string,JSONPath=`.status.policyStatus`,description="Status of the policy" +// +kubebuilder:object:root=true +// +kubebuilder:subresource:status +// +kubebuilder:resource:scope=Cluster +// +kubebuilder:printcolumn:name="Policy Server",type=string,JSONPath=`.spec.policyServer`,description="Bound to Policy Server" +// +kubebuilder:printcolumn:name="Mutating",type=boolean,JSONPath=`.spec.mutating`,description="Whether the policy is mutating" +// +kubebuilder:printcolumn:name="Mode",type=string,JSONPath=`.spec.mode`,description="Policy deployment mode" +// +kubebuilder:printcolumn:name="Observed mode",type=string,JSONPath=`.status.mode`,description="Policy deployment mode observed on the assigned Policy Server" +// +kubebuilder:printcolumn:name="Status",type=string,JSONPath=`.status.policyStatus`,description="Status of the policy" type ClusterAdmissionPolicy struct { metav1.TypeMeta `json:",inline"` metav1.ObjectMeta `json:"metadata,omitempty"` @@ -90,7 +90,7 @@ type ClusterAdmissionPolicy struct { } // ClusterAdmissionPolicyList contains a list of ClusterAdmissionPolicy -//+kubebuilder:object:root=true +// +kubebuilder:object:root=true type ClusterAdmissionPolicyList struct { metav1.TypeMeta `json:",inline"` metav1.ListMeta `json:"metadata,omitempty"` diff --git a/apis/policies/v1alpha2/groupversion_info.go b/apis/policies/v1alpha2/groupversion_info.go index f6d7e9b2..131e7ace 100644 --- a/apis/policies/v1alpha2/groupversion_info.go +++ b/apis/policies/v1alpha2/groupversion_info.go @@ -15,8 +15,8 @@ limitations under the License. */ // Package v1alpha2 contains API Schema definitions for the policies v1alpha2 API group -//+kubebuilder:object:generate=true -//+groupName=policies.kubewarden.io +// +kubebuilder:object:generate=true +// +groupName=policies.kubewarden.io package v1alpha2 import ( diff --git a/apis/policies/v1alpha2/policy.go b/apis/policies/v1alpha2/policy.go index 667cd054..f86d1b46 100644 --- a/apis/policies/v1alpha2/policy.go +++ b/apis/policies/v1alpha2/policy.go @@ -75,7 +75,7 @@ type PolicyStatus struct { Conditions []metav1.Condition `json:"conditions,omitempty"` } -//+kubebuilder:object:generate:=false +// +kubebuilder:object:generate:=false type Policy interface { client.Object GetPolicyMode() PolicyMode From a93f4fcaebe07318ec84c2d8635740cd44ee2cde Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Cuadrado=20Juan?= Date: Fri, 30 Sep 2022 12:15:16 +0200 Subject: [PATCH 05/10] deps: Bump golangci-lint to 1.49.0 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fixes panic errors. Signed-off-by: Víctor Cuadrado Juan Signed-off-by: Víctor Cuadrado Juan --- .github/workflows/ci.yml | 2 +- Makefile | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index aef4d9bb..3c98e6f4 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -37,7 +37,7 @@ jobs: - name: golangci-lint uses: golangci/golangci-lint-action@v3 with: - version: v1.47.2 + version: v1.49.0 shellcheck: name: Shellcheck diff --git a/Makefile b/Makefile index 091ab3c0..f74e69e2 100644 --- a/Makefile +++ b/Makefile @@ -33,7 +33,7 @@ SETUP_ENVTEST_VER := v0.0.0-20211110210527-619e6b92dab9 SETUP_ENVTEST_BIN := setup-envtest SETUP_ENVTEST := $(abspath $(BIN_DIR)/$(SETUP_ENVTEST_BIN)) -GOLANGCI_LINT_VER := v1.47.2 +GOLANGCI_LINT_VER := v1.49.0 GOLANGCI_LINT_BIN := golangci-lint GOLANGCI_LINT := $(BIN_DIR)/$(GOLANGCI_LINT_BIN) From c3adc1b0d4f244ce6377d6987d0b5d7c25b9d6cb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Cuadrado=20Juan?= Date: Fri, 30 Sep 2022 12:21:34 +0200 Subject: [PATCH 06/10] fix: Function `RecordPolicyCount` should pass context MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fix golangci-lint contextcheck Signed-off-by: Víctor Cuadrado Juan --- internal/pkg/admission/reconciler.go | 2 +- internal/pkg/metrics/metrics.go | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/internal/pkg/admission/reconciler.go b/internal/pkg/admission/reconciler.go index c8e3c7fb..f50585c0 100644 --- a/internal/pkg/admission/reconciler.go +++ b/internal/pkg/admission/reconciler.go @@ -298,7 +298,7 @@ func (r *Reconciler) UpdateAdmissionPolicyStatus( if err := r.Client.Status().Update(ctx, policy); err != nil { return fmt.Errorf("failed to update status of Policy %q, %w", policy.GetObjectMeta(), err) } - if err := metrics.RecordPolicyCount(policy); err != nil { + if err := metrics.RecordPolicyCount(ctx, policy); err != nil { return fmt.Errorf("failed to record policy mestrics: %w", err) } return nil diff --git a/internal/pkg/metrics/metrics.go b/internal/pkg/metrics/metrics.go index 00a7e185..861f4c1e 100644 --- a/internal/pkg/metrics/metrics.go +++ b/internal/pkg/metrics/metrics.go @@ -38,7 +38,7 @@ func New(openTelemetryEndpoint string) (func(context.Context) error, error) { return meterProvider.Shutdown, nil } -func RecordPolicyCount(policy policiesv1.Policy) error { +func RecordPolicyCount(ctx context.Context, policy policiesv1.Policy) error { failurePolicy := "" if policy.GetFailurePolicy() != nil { failurePolicy = string(*policy.GetFailurePolicy()) @@ -57,6 +57,6 @@ func RecordPolicyCount(policy policiesv1.Policy) error { if err != nil { return fmt.Errorf("cannot create the instrument: %w", err) } - counter.Add(context.Background(), 1, commonLabels...) + counter.Add(ctx, 1, commonLabels...) return nil } From 7302d0fd0c07f20a68135f357538d8a4487b65f5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Cuadrado=20Juan?= Date: Fri, 30 Sep 2022 14:28:38 +0200 Subject: [PATCH 07/10] refactor: Allow defer functions to run MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fix golangci-lint: ``` exitAfterDefer: os.Exit will exit, and `defer func(){...}(...)` will not run (gocritic) ``` Signed-off-by: Víctor Cuadrado Juan --- main.go | 30 +++++++++++++++++++++--------- 1 file changed, 21 insertions(+), 9 deletions(-) diff --git a/main.go b/main.go index edc6900c..8f3636fd 100644 --- a/main.go +++ b/main.go @@ -61,6 +61,9 @@ func init() { } func main() { + retcode := 0 + defer func() { os.Exit(retcode) }() + var metricsAddr string var enableLeaderElection bool var deploymentsNamespace string @@ -102,7 +105,8 @@ func main() { shutdown, err := metrics.New(openTelemetryEndpoint) if err != nil { setupLog.Error(err, "unable to initialize metrics provider") - os.Exit(1) + retcode = 1 + return } setupLog.Info("Metrics initialized") @@ -114,7 +118,8 @@ func main() { if err := shutdown(ctx); err != nil { setupLog.Error(err, "Unable to shutdown telemetry") - os.Exit(1) + retcode = 1 + return } }() } @@ -137,7 +142,8 @@ func main() { ) if err != nil { setupLog.Error(err, "unable to start manager") - os.Exit(1) + retcode = 1 + return } reconciler := admission.Reconciler{ @@ -155,7 +161,8 @@ func main() { Reconciler: reconciler, }).SetupWithManager(mgr); err != nil { setupLog.Error(err, "unable to create controller", "controller", "PolicyServer") - os.Exit(1) + retcode = 1 + return } if err = (&controllers.AdmissionPolicyReconciler{ @@ -165,7 +172,8 @@ func main() { Reconciler: reconciler, }).SetupWithManager(mgr); err != nil { setupLog.Error(err, "unable to create controller", "controller", "AdmissionPolicy") - os.Exit(1) + retcode = 1 + return } if err = (&controllers.ClusterAdmissionPolicyReconciler{ @@ -175,24 +183,28 @@ func main() { Reconciler: reconciler, }).SetupWithManager(mgr); err != nil { setupLog.Error(err, "unable to create controller", "controller", "ClusterAdmissionPolicy") - os.Exit(1) + retcode = 1 + return } //+kubebuilder:scaffold:builder if err := mgr.AddHealthzCheck("healthz", healthz.Ping); err != nil { setupLog.Error(err, "unable to set up health check") - os.Exit(1) + retcode = 1 + return } if err := mgr.AddReadyzCheck("readyz", healthz.Ping); err != nil { setupLog.Error(err, "unable to set up ready check") - os.Exit(1) + retcode = 1 + return } setupLog.Info("starting manager") if err := mgr.Start(ctrl.SetupSignalHandler()); err != nil { setupLog.Error(err, "problem running manager") - os.Exit(1) + retcode = 1 + return } } From 52864b731933c269913486f7bac02af2f9e6c4a7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Cuadrado=20Juan?= Date: Tue, 4 Oct 2022 11:21:55 +0200 Subject: [PATCH 08/10] build: Disable interfacebloat linter MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Policy interface has more than 10 methods, but we aren't gonna change it. Signed-off-by: Víctor Cuadrado Juan --- .golangci.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.golangci.yml b/.golangci.yml index e1ce441b..0afb8885 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -54,6 +54,7 @@ linters: - lll # long lines # https://github.com/golangci/golangci-lint/issues/541 - interfacer + - interfacebloat # TODO: enable once we can set some exceptions - funlen - ifshort # deprecated From ccfe9ce5a27c9e8146a01f8c1e3d19d0f2dbf14d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Cuadrado=20Juan?= Date: Tue, 4 Oct 2022 11:25:57 +0200 Subject: [PATCH 09/10] build: Make golangci-lint nolintlinter happy MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit See also: https://github.com/golangci/golangci-lint/issues/3109 Signed-off-by: Víctor Cuadrado Juan --- apis/policies/v1/webhook_suite_test.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apis/policies/v1/webhook_suite_test.go b/apis/policies/v1/webhook_suite_test.go index bf260870..c2d506b5 100644 --- a/apis/policies/v1/webhook_suite_test.go +++ b/apis/policies/v1/webhook_suite_test.go @@ -166,7 +166,7 @@ func makeClusterAdmissionPolicyTemplate(name, namespace, policyServerName string } } -// nolint: dupl +//nolint:dupl func deleteClusterAdmissionPolicy(ctx context.Context, name, namespace string) { nsn := types.NamespacedName{ Name: name, @@ -211,7 +211,7 @@ func makePolicyServerTemplate(name, namespace string) *PolicyServer { } } -// nolint: dupl +//nolint:dupl func deletePolicyServer(ctx context.Context, name, namespace string) { nsn := types.NamespacedName{ Name: name, From 08ce746a48d08fb69d5b907bb9ebfb43d6209ad4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Cuadrado=20Juan?= Date: Tue, 4 Oct 2022 11:43:12 +0200 Subject: [PATCH 10/10] build: Make golangci-lint logrlint happy. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fix "odd number of arguments passed as key-value pairs for logging". Pass to logr key-value pairs for structured logging. Signed-off-by: Víctor Cuadrado Juan --- controllers/policyserver_controller.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/controllers/policyserver_controller.go b/controllers/policyserver_controller.go index 4b629d2f..02e2a1e6 100644 --- a/controllers/policyserver_controller.go +++ b/controllers/policyserver_controller.go @@ -125,7 +125,7 @@ func (r *PolicyServerReconciler) SetupWithManager(mgr ctrl.Manager) error { err := mgr.GetFieldIndexer().IndexField(context.Background(), &policiesv1.ClusterAdmissionPolicy{}, constants.PolicyServerIndexKey, func(object client.Object) []string { policy, ok := object.(*policiesv1.ClusterAdmissionPolicy) if !ok { - r.Log.Error(nil, "object is not type of ClusterAdmissionPolicy: %#v", policy) + r.Log.Error(nil, "object is not type of ClusterAdmissionPolicy: %#v", "policy", policy) return []string{} } return []string{policy.Spec.PolicyServer} @@ -136,7 +136,7 @@ func (r *PolicyServerReconciler) SetupWithManager(mgr ctrl.Manager) error { err = mgr.GetFieldIndexer().IndexField(context.Background(), &policiesv1.AdmissionPolicy{}, constants.PolicyServerIndexKey, func(object client.Object) []string { policy, ok := object.(*policiesv1.AdmissionPolicy) if !ok { - r.Log.Error(nil, "object is not type of ClusterAdmissionPolicy: %#v", policy) + r.Log.Error(nil, "object is not type of AdmissionPolicy: %#v", "policy", policy) return []string{} } return []string{policy.Spec.PolicyServer} @@ -153,7 +153,7 @@ func (r *PolicyServerReconciler) SetupWithManager(mgr ctrl.Manager) error { // object. policy, ok := object.(*policiesv1.AdmissionPolicy) if !ok { - r.Log.Info("object is not type of AdmissionPolicy: %+v", policy) + r.Log.Info("object is not type of AdmissionPolicy: %+v", "policy", policy) return []ctrl.Request{} } @@ -172,7 +172,7 @@ func (r *PolicyServerReconciler) SetupWithManager(mgr ctrl.Manager) error { // object. policy, ok := object.(*policiesv1.ClusterAdmissionPolicy) if !ok { - r.Log.Info("object is not type of ClusterAdmissionPolicy: %+v", policy) + r.Log.Info("object is not type of ClusterAdmissionPolicy: %+v", "policy", policy) return []ctrl.Request{} }