Skip to content
Merged
Show file tree
Hide file tree
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .golangci.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ linters:
enable:
- deadcode
- errcheck
- errorlint
- exportloopref
- forcetypeassert
- gocritic
Expand Down
4 changes: 2 additions & 2 deletions pkg/controller/config/config_controller_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -384,7 +384,7 @@ func setupController(mgr manager.Manager, wm *watch.Manager, tracker *readiness.
// initialize OPA
driver, err := local.New(local.Tracing(true))
if err != nil {
return fmt.Errorf("unable to set up Driver: %v", err)
return fmt.Errorf("unable to set up Driver: %w", err)
}

opaClient, err := constraintclient.NewClient(constraintclient.Targets(&target.K8sValidationTarget{}), constraintclient.Driver(driver))
Expand Down Expand Up @@ -802,7 +802,7 @@ func ensureCreated(ctx context.Context, c client.Client, toCreate client.Object)
return fmt.Errorf("a copy of %v %v already exists - run ensureDeleted to ensure a fresh copy exists for testing",
gvk, key)
} else if err != nil {
return fmt.Errorf("creating %v %v: %v", gvk, key, err)
return fmt.Errorf("creating %v %v: %w", gvk, key, err)
}

return nil
Expand Down
3 changes: 2 additions & 1 deletion pkg/controller/mutators/core/reconciler_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -263,7 +263,8 @@ type errSome struct{ id int }
func newErrSome(id int) error { return &errSome{id: id} }

func (e *errSome) Is(target error) bool {
if t, ok := target.(*errSome); ok {
var t *errSome
if errors.As(target, &t) {
return t.id == e.id
}

Expand Down
11 changes: 7 additions & 4 deletions pkg/controller/mutators/core/status.go
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
package core

import (
"errors"

statusv1beta1 "github.com/open-policy-agent/gatekeeper/apis/status/v1beta1"
"github.com/open-policy-agent/gatekeeper/pkg/mutation/schema"
apiTypes "k8s.io/apimachinery/pkg/types"
Expand All @@ -23,15 +25,16 @@ func setGeneration(generation int64) statusUpdate {
func setErrors(err error) statusUpdate {
return func(status *statusv1beta1.MutatorPodStatus) {
// Replaces any existing errors, if there was one.
switch err.(type) {
case nil:
if err == nil {
status.Status.Errors = nil
case schema.ErrConflictingSchema:
return
}
if errors.As(err, &schema.ErrConflictingSchema{}) {
status.Status.Errors = []statusv1beta1.MutatorError{{
Type: schema.ErrConflictingSchemaType,
Message: err.Error(),
}}
default:
} else {
status.Status.Errors = []statusv1beta1.MutatorError{{Message: err.Error()}}
}
}
Expand Down
2 changes: 1 addition & 1 deletion pkg/controller/mutators/stats_reporter_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -181,7 +181,7 @@ func getRow(rows []*view.Row, tagValue string) (*view.Row, error) {
func checkData(name string, rowLength int) ([]*view.Row, error) {
rows, err := view.RetrieveData(name)
if err != nil {
return nil, fmt.Errorf("got RetrieveData error %v from %v, want nil", err, name)
return nil, fmt.Errorf("got RetrieveData error %w from %v, want nil", err, name)
}
if len(rows) != rowLength {
return nil, fmt.Errorf("got %q row length %v, want %v", name, len(rows), rowLength)
Expand Down
4 changes: 2 additions & 2 deletions pkg/expansion/system.go
Original file line number Diff line number Diff line change
Expand Up @@ -143,7 +143,7 @@ func (s *System) Expand(base *mutationtypes.Mutable) ([]*Resultant, error) {
}
_, err := s.mutationSystem.Mutate(mutable)
if err != nil {
return nil, fmt.Errorf("failed to mutate resultant resource %s: %s", res.Obj.GetName(), err)
return nil, fmt.Errorf("failed to mutate resultant resource %s: %w", res.Obj.GetName(), err)
}
}

Expand All @@ -166,7 +166,7 @@ func expandResource(obj *unstructured.Unstructured, ns *corev1.Namespace, templa

src, ok, err := unstructured.NestedMap(obj.Object, sourcePath(srcPath)...)
if err != nil {
return nil, fmt.Errorf("could not extract source field from unstructured: %s", err)
return nil, fmt.Errorf("could not extract source field from unstructured: %w", err)
}
if !ok {
return nil, fmt.Errorf("could not find source field %q in Obj", srcPath)
Expand Down
10 changes: 5 additions & 5 deletions pkg/gator/expand/expand.go
Original file line number Diff line number Diff line change
Expand Up @@ -63,18 +63,18 @@ func NewExpander(resources []*unstructured.Unstructured) (*Expander, error) {
}

if err := er.addResources(resources); err != nil {
return nil, fmt.Errorf("error parsing resources: %s", err)
return nil, fmt.Errorf("error parsing resources: %w", err)
}

for _, te := range er.templateExpansions {
if err := er.expSystem.UpsertTemplate(te); err != nil {
return nil, fmt.Errorf("error upserting template %s: %s", te.Name, err)
return nil, fmt.Errorf("error upserting template %s: %w", te.Name, err)
}
}

for _, m := range er.mutators {
if err := er.mutSystem.Upsert(m); err != nil {
return nil, fmt.Errorf("error upserting mutator: %s", err)
return nil, fmt.Errorf("error upserting mutator: %w", err)
}
}

Expand All @@ -92,12 +92,12 @@ func (er *Expander) Expand(resource *unstructured.Unstructured) ([]*expansion.Re
Source: types.SourceTypeOriginal,
}
if _, err := er.mutSystem.Mutate(base); err != nil {
return nil, fmt.Errorf("error mutating base resource %s: %s", resource.GetName(), err)
return nil, fmt.Errorf("error mutating base resource %s: %w", resource.GetName(), err)
}

resultants, err := er.expSystem.Expand(base)
if err != nil {
return nil, fmt.Errorf("error expanding resource %s: %s", resource.GetName(), err)
return nil, fmt.Errorf("error expanding resource %s: %w", resource.GetName(), err)
}

return resultants, nil
Expand Down
8 changes: 4 additions & 4 deletions pkg/gator/test/test.go
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@ func Test(objs []*unstructured.Unstructured, includeTrace bool) (*GatorResponses
// create the expander
er, err := expand.NewExpander(objs)
if err != nil {
return nil, fmt.Errorf("error creating expander: %s", err)
return nil, fmt.Errorf("error creating expander: %w", err)
}

// now audit all objects
Expand All @@ -100,14 +100,14 @@ func Test(objs []*unstructured.Unstructured, includeTrace bool) (*GatorResponses

review, err := client.Review(ctx, au)
if err != nil {
return nil, fmt.Errorf("reviewing %v %s/%s: %v",
return nil, fmt.Errorf("reviewing %v %s/%s: %w",
obj.GroupVersionKind(), obj.GetNamespace(), obj.GetName(), err)
}

// Attempt to expand the obj and review resultant resources (if any)
resultants, err := er.Expand(obj)
if err != nil {
return nil, fmt.Errorf("expanding resource %s: %s", obj.GetName(), err)
return nil, fmt.Errorf("expanding resource %s: %w", obj.GetName(), err)
}
for _, resultant := range resultants {
au := target.AugmentedUnstructured{
Expand All @@ -117,7 +117,7 @@ func Test(objs []*unstructured.Unstructured, includeTrace bool) (*GatorResponses
}
resultantReview, err := client.Review(ctx, au)
if err != nil {
return nil, fmt.Errorf("reviewing expanded resource %v %s/%s: %v",
return nil, fmt.Errorf("reviewing expanded resource %v %s/%s: %w",
resultant.Obj.GroupVersionKind(), resultant.Obj.GetNamespace(), resultant.Obj.GetName(), err)
}
expansion.OverrideEnforcementAction(resultant.EnforcementAction, resultantReview)
Expand Down
4 changes: 2 additions & 2 deletions pkg/mutation/mutators/assign/assign_mutator_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,7 @@ func newPod(pod *corev1.Pod) *unstructured.Unstructured {
func ensureObj(u *unstructured.Unstructured, expected interface{}, path ...string) error {
v, exists, err := unstructured.NestedFieldNoCopy(u.Object, path...)
if err != nil {
return fmt.Errorf("could not retrieve value: %v", err)
return fmt.Errorf("could not retrieve value: %w", err)
}
if !exists {
return fmt.Errorf("value does not exist at %+v: %s", path, spew.Sdump(u.Object))
Expand All @@ -105,7 +105,7 @@ func ensureObj(u *unstructured.Unstructured, expected interface{}, path ...strin
func ensureMissing(u *unstructured.Unstructured, path ...string) error {
v, exists, err := unstructured.NestedFieldNoCopy(u.Object, path...)
if err != nil {
return fmt.Errorf("could not retrieve value: %v", err)
return fmt.Errorf("could not retrieve value: %w", err)
}
if exists {
return fmt.Errorf("value exists at %+v as %v, expected missing: %s", path, v, spew.Sdump(u.Object))
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package core

import (
"errors"
"testing"

"github.com/open-policy-agent/gatekeeper/pkg/mutation/path/parser"
Expand All @@ -27,7 +28,7 @@ func TestKeyedListIncompatible(t *testing.T) {
}
obj := &unstructured.Unstructured{Object: map[string]interface{}{}}
m, err := Mutate(path, &tester.Tester{}, &notKeyedSetter{}, obj)
if err != ErrNonKeyedSetter {
if !errors.Is(err, ErrNonKeyedSetter) {
t.Errorf("wanted err = %+v, got %+v", ErrNonKeyedSetter, err)
}
if m != false {
Expand Down
3 changes: 1 addition & 2 deletions pkg/mutation/path/parser/errors.go
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,5 @@ func (e invalidIntegerError) Error() string {
}

func (e invalidIntegerError) Is(target error) bool {
_, ok := target.(invalidIntegerError)
return ok
return errors.As(target, &invalidIntegerError{})
}
5 changes: 3 additions & 2 deletions pkg/mutation/schema/errors.go
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package schema

import (
"errors"
"fmt"

"github.com/open-policy-agent/gatekeeper/pkg/util"
Expand Down Expand Up @@ -28,8 +29,8 @@ func (e ErrConflictingSchema) Error() string {
}

func (e ErrConflictingSchema) Is(other error) bool {
o, ok := other.(ErrConflictingSchema)
if !ok {
var o ErrConflictingSchema
if !errors.As(other, &o) {
return false
}

Expand Down
12 changes: 6 additions & 6 deletions pkg/webhook/policy.go
Original file line number Diff line number Diff line change
Expand Up @@ -373,7 +373,7 @@ func (h *validationHandler) validateTemplate(ctx context.Context, req *admission
// ensures the Rego code both parses and compiles.
d, err := local.New()
if err != nil {
return false, fmt.Errorf("unable to create Driver: %v", err)
return false, fmt.Errorf("unable to create Driver: %w", err)
}

err = d.AddTemplate(ctx, unversioned)
Expand Down Expand Up @@ -504,13 +504,13 @@ func (h *validationHandler) reviewRequest(ctx context.Context, req *admission.Re

review, err := h.createReviewForRequest(ctx, req)
if err != nil {
return nil, fmt.Errorf("failed to create augmentedReview: %s", err)
return nil, fmt.Errorf("failed to create augmentedReview: %w", err)
}

// Convert the request's generator resource to unstructured for expansion
obj := &unstructured.Unstructured{}
if _, _, err := deserializer.Decode(req.Object.Raw, nil, obj); err != nil {
return nil, fmt.Errorf("error decoding generator resource %s: %v", req.Name, err)
return nil, fmt.Errorf("error decoding generator resource %s: %w", req.Name, err)
}
obj.SetNamespace(req.Namespace)
obj.SetGroupVersionKind(
Expand All @@ -529,19 +529,19 @@ func (h *validationHandler) reviewRequest(ctx context.Context, req *admission.Re
}
resultants, err := h.expansionSystem.Expand(base)
if err != nil {
return nil, fmt.Errorf("unable to expand object: %s", err)
return nil, fmt.Errorf("unable to expand object: %w", err)
}

trace, dump := h.tracingLevel(ctx, req)
resp, err := h.review(ctx, review, trace, dump)
if err != nil {
return nil, fmt.Errorf("error reviewing resource %s: %s", req.Name, err)
return nil, fmt.Errorf("error reviewing resource %s: %w", req.Name, err)
}

for _, res := range resultants {
resultantResp, err := h.review(ctx, createReviewForResultant(res.Obj, review.Namespace), trace, dump)
if err != nil {
return nil, fmt.Errorf("error reviewing resultant resource: %s", err)
return nil, fmt.Errorf("error reviewing resultant resource: %w", err)
}
expansion.OverrideEnforcementAction(res.EnforcementAction, resultantResp)
expansion.AggregateResponses(res.TemplateName, resp, resultantResp)
Expand Down