/
bucketclass.go
47 lines (34 loc) · 1.97 KB
/
bucketclass.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
// SPDX-FileCopyrightText: 2024 Axel Christ and Spheric contributors
// SPDX-License-Identifier: Apache-2.0
// SPDX-FileCopyrightText: 2023 SAP SE or an SAP affiliate company and IronCore contributors
// SPDX-License-Identifier: Apache-2.0
package validation
import (
"k8s.io/apimachinery/pkg/api/resource"
apivalidation "k8s.io/apimachinery/pkg/api/validation"
"k8s.io/apimachinery/pkg/util/validation/field"
sphericvalidation "spheric.cloud/spheric/internal/api/validation"
"spheric.cloud/spheric/internal/apis/core"
"spheric.cloud/spheric/internal/apis/storage"
)
func ValidateBucketClass(bucketClass *storage.BucketClass) field.ErrorList {
var allErrs field.ErrorList
allErrs = append(allErrs, apivalidation.ValidateObjectMetaAccessor(bucketClass, false, apivalidation.NameIsDNSLabel, field.NewPath("metadata"))...)
allErrs = append(allErrs, validateBucketClassCapabilities(bucketClass.Capabilities, field.NewPath("capabilities"))...)
return allErrs
}
func validateBucketClassCapabilities(capabilities core.ResourceList, fldPath *field.Path) field.ErrorList {
var allErrs field.ErrorList
tps := capabilities.Name(core.ResourceTPS, resource.DecimalSI)
allErrs = append(allErrs, sphericvalidation.ValidatePositiveQuantity(*tps, fldPath.Key(string(core.ResourceTPS)))...)
iops := capabilities.Name(core.ResourceIOPS, resource.DecimalSI)
allErrs = append(allErrs, sphericvalidation.ValidatePositiveQuantity(*iops, fldPath.Key(string(core.ResourceIOPS)))...)
return allErrs
}
func ValidateBucketClassUpdate(newBucketClass, oldBucketClass *storage.BucketClass) field.ErrorList {
var allErrs field.ErrorList
allErrs = append(allErrs, apivalidation.ValidateObjectMetaAccessorUpdate(newBucketClass, oldBucketClass, field.NewPath("metadata"))...)
allErrs = append(allErrs, sphericvalidation.ValidateImmutableField(newBucketClass.Capabilities, oldBucketClass.Capabilities, field.NewPath("capabilities"))...)
allErrs = append(allErrs, ValidateBucketClass(newBucketClass)...)
return allErrs
}