diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 4951e33..739f4cc 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -10,14 +10,12 @@ jobs: runs-on: ubuntu-latest steps: - name: Clone the code - uses: actions/checkout@v4 + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd #v6.0.2 - name: Setup Go - uses: actions/setup-go@v5 + uses: actions/setup-go@4b73464bb391d4059bd26b0524d20df3927bd417 #v6.3.0 with: go-version-file: go.mod - name: Run linter - uses: golangci/golangci-lint-action@v6 - with: - version: v1.63.4 + uses: golangci/golangci-lint-action@1e7e51e771db61008b38414a730f564565cf7c20 #v9.2.0 diff --git a/.golangci.yml b/.golangci.yml index 6b29746..d7af613 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -1,33 +1,15 @@ +version: "2" run: - timeout: 5m allow-parallel-runners: true - -issues: - # don't skip warning about doc comments - # don't exclude the default set of lint - exclude-use-default: false - # restore some of the defaults - # (fill in the rest as needed) - exclude-rules: - - path: "api/*" - linters: - - lll - - path: "internal/*" - linters: - - dupl - - lll linters: - disable-all: true + default: none enable: + - copyloopvar - dupl - errcheck - - copyloopvar - ginkgolinter - goconst - gocyclo - - gofmt - - goimports - - gosimple - govet - ineffassign - lll @@ -36,12 +18,36 @@ linters: - prealloc - revive - staticcheck - - typecheck - unconvert - unparam - unused - -linters-settings: - revive: + settings: + revive: + rules: + - name: comment-spacings + staticcheck: + checks: ["all", "-ST1000", "-ST1003", "-ST1016", "-ST1020", "-ST1021", "-ST1022", "-QF1008"] + exclusions: + generated: lax rules: - - name: comment-spacings + - linters: + - lll + path: api/* + - linters: + - dupl + - lll + path: internal/* + paths: + - third_party$ + - builtin$ + - examples$ +formatters: + enable: + - gofmt + - goimports + exclusions: + generated: lax + paths: + - third_party$ + - builtin$ + - examples$ diff --git a/cmd/main.go b/cmd/main.go index f9c80b5..5f8f91e 100644 --- a/cmd/main.go +++ b/cmd/main.go @@ -42,7 +42,6 @@ import ( netbirdiov1 "github.com/netbirdio/kubernetes-operator/api/v1" "github.com/netbirdio/kubernetes-operator/internal/controller" - webhookk8siov1 "github.com/netbirdio/kubernetes-operator/internal/webhook/v1" webhooknetbirdiov1 "github.com/netbirdio/kubernetes-operator/internal/webhook/v1" // +kubebuilder:scaffold:imports ) @@ -215,7 +214,7 @@ func main() { } if enableWebhooks { - if err = webhookk8siov1.SetupPodWebhookWithManager(mgr, managementURL, clientImage); err != nil { + if err = webhooknetbirdiov1.SetupPodWebhookWithManager(mgr, managementURL, clientImage); err != nil { setupLog.Error(err, "unable to create webhook", "webhook", "Pod") os.Exit(1) } diff --git a/internal/controller/nbpolicy_controller.go b/internal/controller/nbpolicy_controller.go index 6ed1419..63cb134 100644 --- a/internal/controller/nbpolicy_controller.go +++ b/internal/controller/nbpolicy_controller.go @@ -31,7 +31,7 @@ type NBPolicyReconciler struct { } var ( - errUnknownProtocol = fmt.Errorf("Unknown protocol") + errUnknownProtocol = fmt.Errorf("unknown protocol") errKubernetesAPI = fmt.Errorf("kubernetes API error") errNetBirdAPI = fmt.Errorf("netbird API error") errInvalidValue = fmt.Errorf("invalid value") diff --git a/internal/controller/nbresource_controller_test.go b/internal/controller/nbresource_controller_test.go index 98cb115..dea53b5 100644 --- a/internal/controller/nbresource_controller_test.go +++ b/internal/controller/nbresource_controller_test.go @@ -222,7 +222,8 @@ var _ = Describe("NBResource Controller", func() { resourceUpdated := false mux.HandleFunc("/api/networks/test/resources/test", func(w http.ResponseWriter, r *http.Request) { defer GinkgoRecover() - if r.Method == http.MethodGet { + switch r.Method { + case http.MethodGet: resp := api.NetworkResource{ Address: nbresource.Spec.Address, Description: &networkDescription, @@ -245,7 +246,7 @@ var _ = Describe("NBResource Controller", func() { Expect(err).NotTo(HaveOccurred()) _, err = w.Write(bs) Expect(err).NotTo(HaveOccurred()) - } else if r.Method == http.MethodPut { + case http.MethodPut: resourceUpdated = true bs, err := io.ReadAll(r.Body) Expect(err).NotTo(HaveOccurred()) diff --git a/internal/controller/nbroutingpeer_controller_test.go b/internal/controller/nbroutingpeer_controller_test.go index 395083b..dbb7428 100644 --- a/internal/controller/nbroutingpeer_controller_test.go +++ b/internal/controller/nbroutingpeer_controller_test.go @@ -172,7 +172,8 @@ var _ = Describe("NBRoutingPeer Controller", func() { networkCreated := false mux.HandleFunc("/api/networks", func(w http.ResponseWriter, r *http.Request) { defer GinkgoRecover() - if r.Method == http.MethodPost { + switch r.Method { + case http.MethodPost: networkCreated = true var req api.PostApiNetworksJSONRequestBody bs, err := io.ReadAll(r.Body) @@ -190,7 +191,7 @@ var _ = Describe("NBRoutingPeer Controller", func() { Expect(err).NotTo(HaveOccurred()) _, err = w.Write(bs) Expect(err).NotTo(HaveOccurred()) - } else if r.Method == http.MethodGet { + case http.MethodGet: _, err := w.Write([]byte("[]")) Expect(err).NotTo(HaveOccurred()) } @@ -276,7 +277,8 @@ var _ = Describe("NBRoutingPeer Controller", func() { routerCreated := false mux.HandleFunc("/api/networks/test/routers", func(w http.ResponseWriter, r *http.Request) { defer GinkgoRecover() - if r.Method == http.MethodPost { + switch r.Method { + case http.MethodPost: routerCreated = true var req api.PostApiNetworksNetworkIdRoutersJSONRequestBody bs, err := io.ReadAll(r.Body) @@ -299,7 +301,7 @@ var _ = Describe("NBRoutingPeer Controller", func() { Expect(err).NotTo(HaveOccurred()) _, err = w.Write(bs) Expect(err).NotTo(HaveOccurred()) - } else if r.Method == http.MethodGet { + case http.MethodGet: resp := []api.NetworkRouter{} bs, err := json.Marshal(resp) Expect(err).NotTo(HaveOccurred()) @@ -555,7 +557,8 @@ var _ = Describe("NBRoutingPeer Controller", func() { setupKeyDeleted := false mux.HandleFunc("/api/setup-keys/skid", func(w http.ResponseWriter, r *http.Request) { defer GinkgoRecover() - if r.Method == http.MethodGet { + switch r.Method { + case http.MethodGet: resp := api.SetupKey{ Id: "skid", Revoked: false, @@ -564,7 +567,7 @@ var _ = Describe("NBRoutingPeer Controller", func() { Expect(err).NotTo(HaveOccurred()) _, err = w.Write(bs) Expect(err).NotTo(HaveOccurred()) - } else if r.Method == http.MethodDelete { + case http.MethodDelete: setupKeyDeleted = true _, err := w.Write([]byte(`{}`)) Expect(err).NotTo(HaveOccurred()) @@ -628,7 +631,8 @@ var _ = Describe("NBRoutingPeer Controller", func() { setupKeyDeleted := false mux.HandleFunc("/api/setup-keys/skid", func(w http.ResponseWriter, r *http.Request) { defer GinkgoRecover() - if r.Method == http.MethodGet { + switch r.Method { + case http.MethodGet: resp := api.SetupKey{ Id: "skid", Revoked: true, @@ -637,7 +641,7 @@ var _ = Describe("NBRoutingPeer Controller", func() { Expect(err).NotTo(HaveOccurred()) _, err = w.Write(bs) Expect(err).NotTo(HaveOccurred()) - } else if r.Method == http.MethodDelete { + case http.MethodDelete: setupKeyDeleted = true _, err := w.Write([]byte(`{}`)) Expect(err).NotTo(HaveOccurred()) @@ -712,11 +716,12 @@ var _ = Describe("NBRoutingPeer Controller", func() { setupKeyDeleted := false mux.HandleFunc("/api/setup-keys/skid", func(w http.ResponseWriter, r *http.Request) { defer GinkgoRecover() - if r.Method == http.MethodGet { + switch r.Method { + case http.MethodGet: w.WriteHeader(404) _, err := w.Write([]byte(`{"message": "setup-key skid not found", "code": 404}`)) Expect(err).NotTo(HaveOccurred()) - } else if r.Method == http.MethodDelete { + case http.MethodDelete: setupKeyDeleted = true _, err := w.Write([]byte(`{}`)) Expect(err).NotTo(HaveOccurred()) @@ -761,7 +766,8 @@ var _ = Describe("NBRoutingPeer Controller", func() { setupKeyDeleted := false mux.HandleFunc("/api/setup-keys/skid", func(w http.ResponseWriter, r *http.Request) { defer GinkgoRecover() - if r.Method == http.MethodGet { + switch r.Method { + case http.MethodGet: resp := api.SetupKey{ Id: "skid", Revoked: false, @@ -770,7 +776,7 @@ var _ = Describe("NBRoutingPeer Controller", func() { Expect(err).NotTo(HaveOccurred()) _, err = w.Write(bs) Expect(err).NotTo(HaveOccurred()) - } else if r.Method == http.MethodDelete { + case http.MethodDelete: setupKeyDeleted = true _, err := w.Write([]byte(`{}`)) Expect(err).NotTo(HaveOccurred()) diff --git a/internal/controller/service_controller.go b/internal/controller/service_controller.go index dd26e2d..7e7cced 100644 --- a/internal/controller/service_controller.go +++ b/internal/controller/service_controller.go @@ -194,6 +194,7 @@ func (r *ServiceReconciler) exposeService(ctx context.Context, req ctrl.Request, func (r *ServiceReconciler) reconcileNBResource(nbResource *netbirdiov1.NBResource, req ctrl.Request, svc corev1.Service, routingPeer netbirdiov1.NBRoutingPeer, logger logr.Logger) error { groups := []string{fmt.Sprintf("%s-%s-%s", r.ClusterName, req.Namespace, req.Name)} if v, ok := svc.Annotations[serviceGroupsAnnotation]; ok { + //nolint:prealloc groups = nil for _, g := range strings.Split(v, ",") { groups = append(groups, strings.TrimSpace(g)) diff --git a/test/utils/utils.go b/test/utils/utils.go index cbeff44..58c3815 100644 --- a/test/utils/utils.go +++ b/test/utils/utils.go @@ -22,7 +22,7 @@ import ( "os/exec" "strings" - . "github.com/onsi/ginkgo/v2" //nolint:golint,revive + . "github.com/onsi/ginkgo/v2" //nolint:staticcheck ) const ( @@ -169,6 +169,6 @@ func GetProjectDir() (string, error) { if err != nil { return wd, err } - wd = strings.Replace(wd, "/test/e2e", "", -1) + wd = strings.ReplaceAll(wd, "/test/e2e", "") return wd, nil }