Skip to content

Commit 32e13f5

Browse files
committed
made validateCreate Generic
1 parent 9d377f6 commit 32e13f5

File tree

3 files changed

+33
-56
lines changed

3 files changed

+33
-56
lines changed

api/v3/shared_validation.go

Lines changed: 29 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,33 @@ import (
1515
"k8s.io/apimachinery/pkg/util/validation/field"
1616
)
1717

18-
func ValidateUpdate[W WMSWFS](c client.Client, newW, oldW W, validate func(client.Client, W, *[]string, *field.ErrorList)) ([]string, error) {
18+
func ValidateCreate[W WMSWFS](c client.Client, obj W, validate func(W, *[]string, *field.ErrorList)) ([]string, error) {
19+
warnings := []string{}
20+
allErrs := field.ErrorList{}
21+
22+
err := sharedValidation.ValidateLabelsOnCreate(obj.GetLabels())
23+
if err != nil {
24+
allErrs = append(allErrs, err)
25+
}
26+
27+
err = sharedValidation.ValidateIngressRouteURLsContainsBaseURL(obj.IngressRouteURLs(false), obj.URL(), nil)
28+
if err != nil {
29+
allErrs = append(allErrs, err)
30+
}
31+
32+
validate(obj, &warnings, &allErrs)
33+
ValidateOwnerInfo(c, obj, &allErrs)
34+
35+
if len(allErrs) == 0 {
36+
return warnings, nil
37+
}
38+
39+
return warnings, apierrors.NewInvalid(
40+
obj.GroupKind(),
41+
obj.GetName(), allErrs)
42+
}
43+
44+
func ValidateUpdate[W WMSWFS](c client.Client, newW, oldW W, validate func(W, *[]string, *field.ErrorList)) ([]string, error) {
1945
warnings := []string{}
2046
allErrs := field.ErrorList{}
2147

@@ -50,7 +76,8 @@ func ValidateUpdate[W WMSWFS](c client.Client, newW, oldW W, validate func(clien
5076
allErrs = append(allErrs, field.Forbidden(field.NewPath("spec").Child("service").Child("inspire"), "cannot change from inspire to not inspire or the other way around"))
5177
}
5278

53-
validate(c, newW, &warnings, &allErrs)
79+
validate(newW, &warnings, &allErrs)
80+
ValidateOwnerInfo(c, newW, &allErrs)
5481

5582
if len(allErrs) == 0 {
5683
return warnings, nil

api/v3/wfs_validation.go

Lines changed: 2 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -8,41 +8,18 @@ import (
88

99
sharedValidation "github.com/pdok/smooth-operator/pkg/validation"
1010

11-
apierrors "k8s.io/apimachinery/pkg/api/errors"
12-
"k8s.io/apimachinery/pkg/runtime/schema"
1311
"k8s.io/apimachinery/pkg/util/validation/field"
1412
)
1513

1614
func (wfs *WFS) ValidateCreate(c client.Client) ([]string, error) {
17-
warnings := []string{}
18-
allErrs := field.ErrorList{}
19-
20-
err := sharedValidation.ValidateLabelsOnCreate(wfs.Labels)
21-
if err != nil {
22-
allErrs = append(allErrs, err)
23-
}
24-
25-
err = sharedValidation.ValidateIngressRouteURLsContainsBaseURL(wfs.Spec.IngressRouteURLs, wfs.URL(), nil)
26-
if err != nil {
27-
allErrs = append(allErrs, err)
28-
}
29-
30-
ValidateWFS(c, wfs, &warnings, &allErrs)
31-
32-
if len(allErrs) == 0 {
33-
return warnings, nil
34-
}
35-
36-
return warnings, apierrors.NewInvalid(
37-
schema.GroupKind{Group: "pdok.nl", Kind: "WFS"},
38-
wfs.Name, allErrs)
15+
return ValidateCreate(c, wfs, ValidateWFS)
3916
}
4017

4118
func (wfs *WFS) ValidateUpdate(c client.Client, wfsOld *WFS) ([]string, error) {
4219
return ValidateUpdate(c, wfs, wfsOld, ValidateWFS)
4320
}
4421

45-
func ValidateWFS(c client.Client, wfs *WFS, warnings *[]string, allErrs *field.ErrorList) {
22+
func ValidateWFS(wfs *WFS, warnings *[]string, allErrs *field.ErrorList) {
4623
if strings.Contains(wfs.GetName(), "wfs") {
4724
sharedValidation.AddWarning(
4825
warnings,
@@ -74,8 +51,6 @@ func ValidateWFS(c client.Client, wfs *WFS, warnings *[]string, allErrs *field.E
7451
ValidateEphemeralStorage(podSpecPatch, allErrs)
7552

7653
ValidateFeatureTypes(wfs, warnings, allErrs)
77-
78-
ValidateOwnerInfo(c, wfs, allErrs)
7954
}
8055

8156
func ValidateFeatureTypes(wfs *WFS, warnings *[]string, allErrs *field.ErrorList) {

api/v3/wms_validation.go

Lines changed: 2 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -8,35 +8,12 @@ import (
88
"sigs.k8s.io/controller-runtime/pkg/client"
99

1010
sharedValidation "github.com/pdok/smooth-operator/pkg/validation"
11-
apierrors "k8s.io/apimachinery/pkg/api/errors"
12-
"k8s.io/apimachinery/pkg/runtime/schema"
1311
"k8s.io/apimachinery/pkg/util/validation/field"
1412
"k8s.io/utils/strings/slices"
1513
)
1614

1715
func (wms *WMS) ValidateCreate(c client.Client) ([]string, error) {
18-
warnings := []string{}
19-
allErrs := field.ErrorList{}
20-
21-
err := sharedValidation.ValidateLabelsOnCreate(wms.Labels)
22-
if err != nil {
23-
allErrs = append(allErrs, err)
24-
}
25-
26-
err = sharedValidation.ValidateIngressRouteURLsContainsBaseURL(wms.Spec.IngressRouteURLs, wms.URL(), nil)
27-
if err != nil {
28-
allErrs = append(allErrs, err)
29-
}
30-
31-
ValidateWMS(c, wms, &warnings, &allErrs)
32-
33-
if len(allErrs) == 0 {
34-
return warnings, nil
35-
}
36-
37-
return warnings, apierrors.NewInvalid(
38-
schema.GroupKind{Group: "pdok.nl", Kind: "WMS"},
39-
wms.Name, allErrs)
16+
return ValidateCreate(c, wms, ValidateWMS)
4017
}
4118

4219
func (wms *WMS) ValidateUpdate(c client.Client, wmsOld *WMS) ([]string, error) {
@@ -46,7 +23,7 @@ func (wms *WMS) ValidateUpdate(c client.Client, wmsOld *WMS) ([]string, error) {
4623
// TODO fix linting (cyclop,funlen)
4724
//
4825
//nolint:cyclop,funlen
49-
func ValidateWMS(c client.Client, wms *WMS, warnings *[]string, allErrs *field.ErrorList) {
26+
func ValidateWMS(wms *WMS, warnings *[]string, allErrs *field.ErrorList) {
5027
if strings.Contains(wms.GetName(), "wms") {
5128
sharedValidation.AddWarning(
5229
warnings,
@@ -306,8 +283,6 @@ func ValidateWMS(c client.Client, wms *WMS, warnings *[]string, allErrs *field.E
306283

307284
podSpecPatch := wms.Spec.PodSpecPatch
308285
ValidateEphemeralStorage(podSpecPatch, allErrs)
309-
310-
ValidateOwnerInfo(c, wms, allErrs)
311286
}
312287

313288
func findEqualChildStyleNames(layer *Layer, equalStyleNames *map[string][]string) {

0 commit comments

Comments
 (0)