Skip to content
This repository was archived by the owner on Sep 23, 2025. It is now read-only.

Commit 4e2b40b

Browse files
committed
Consolidate error/warning checking into validateError.
Address PR feedback. Signed-off-by: Ville Aikas <vaikas@chainguard.dev>
1 parent 54092e7 commit 4e2b40b

7 files changed

Lines changed: 190 additions & 368 deletions

cmd/tester/main.go

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -133,12 +133,15 @@ func main() {
133133
for _, err := range errs {
134134
var fe *apis.FieldError
135135
if errors.As(err, &fe) {
136-
if fe.Level == apis.WarningLevel {
137-
warningStrings = append(warningStrings, strings.Trim(err.Error(), "\n"))
138-
continue
136+
if warnFE := fe.Filter(apis.WarningLevel); warnFE != nil {
137+
warningStrings = append(warningStrings, strings.Trim(warnFE.Error(), "\n"))
139138
}
139+
if errorFE := fe.Filter(apis.WarningLevel); errorFE != nil {
140+
warningStrings = append(warningStrings, strings.Trim(errorFE.Error(), "\n"))
141+
}
142+
} else {
143+
errStrings = append(errStrings, strings.Trim(err.Error(), "\n"))
140144
}
141-
errStrings = append(errStrings, strings.Trim(err.Error(), "\n"))
142145
}
143146
var o []byte
144147
o, err = json.Marshal(&output{

pkg/apis/policy/v1alpha1/clusterimagepolicy_defaults_test.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,8 @@ func TestModeDefaulting(t *testing.T) {
5757
name string
5858
mode string
5959
wantMode string
60-
}{{name: "empty",
60+
}{{
61+
name: "empty",
6162
wantMode: "enforce",
6263
}, {
6364
name: "enforce",

pkg/apis/policy/v1alpha1/clusterimagepolicy_validation.go

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,6 @@ var (
3636
validPredicateTypes = sets.NewString("custom", "slsaprovenance", "spdx", "spdxjson", "cyclonedx", "link", "vuln")
3737

3838
// If a static matches, define the behaviour for it.
39-
// TODO(vaikas): Consider adding a warn which would pass but use
40-
// `warn` as return type for the webhook response.
4139
validStaticRefTypes = sets.NewString("fail", "pass")
4240

4341
// Valid modes for a policy
@@ -177,6 +175,10 @@ func (keyless *KeylessRef) Validate(ctx context.Context) *apis.FieldError {
177175
if keyless.CACert != nil {
178176
errs = errs.Also(keyless.DeepCopy().CACert.Validate(ctx).ViaField("ca-cert"))
179177
}
178+
// Warn if there are no identities specified
179+
if len(keyless.Identities) == 0 {
180+
errs = errs.Also(apis.ErrMissingField("identities").At(apis.WarningLevel))
181+
}
180182
for i, identity := range keyless.Identities {
181183
errs = errs.Also(identity.Validate(ctx).ViaFieldIndex("identities", i))
182184
}
@@ -230,9 +232,6 @@ func (p *Policy) Validate(ctx context.Context) *apis.FieldError {
230232

231233
func (identity *Identity) Validate(ctx context.Context) *apis.FieldError {
232234
var errs *apis.FieldError
233-
if identity.Issuer == "" && identity.Subject == "" && identity.IssuerRegExp == "" && identity.SubjectRegExp == "" {
234-
return apis.ErrMissingField("issuer", "subject", "issuerRegExp", "subjectRegExp")
235-
}
236235
if identity.Issuer != "" && identity.IssuerRegExp != "" {
237236
errs = errs.Also(apis.ErrMultipleOneOf("issuer", "issuerRegExp"))
238237
}

0 commit comments

Comments
 (0)