11package common
22
33import (
4- "unsafe"
5-
64 corev1 "k8s.io/api/core/v1"
75 apivalidation "k8s.io/apimachinery/pkg/api/validation"
86 metav1validation "k8s.io/apimachinery/pkg/apis/meta/v1/validation"
97 "k8s.io/apimachinery/pkg/util/validation/field"
108 "k8s.io/kubernetes/pkg/apis/core"
9+ corev1conversion "k8s.io/kubernetes/pkg/apis/core/v1"
1110 corevalidation "k8s.io/kubernetes/pkg/apis/core/validation"
1211)
1312
@@ -20,25 +19,23 @@ func ValidateNodeSelectorConfig(nodeSelector map[string]string, fldPath *field.P
2019// ValidateTolerationsConfig validates the Tolerations configuration using
2120// the Kubernetes core toleration validation rules.
2221func ValidateTolerationsConfig (tolerations []corev1.Toleration , fldPath * field.Path ) error {
23- // convert corev1.Tolerations to core.Tolerations, required for validation.
24- convTolerations := * (* []core.Toleration )(unsafe .Pointer (& tolerations ))
25- return corevalidation .ValidateTolerations (convTolerations , fldPath .Child ("tolerations" )).ToAggregate ()
22+ return corevalidation .ValidateTolerations (ToCoreTolerations (tolerations ), fldPath .Child ("tolerations" )).ToAggregate ()
2623}
2724
2825// ValidateResourceRequirements validates the ResourceRequirements configuration
2926// using the Kubernetes core resource requirements validation rules.
3027func ValidateResourceRequirements (requirements corev1.ResourceRequirements , fldPath * field.Path ) error {
31- // convert corev1.ResourceRequirements to core.ResourceRequirements, required for validation.
32- convRequirements := * ( * core . ResourceRequirements )( unsafe . Pointer ( & requirements ) )
28+ var convRequirements core.ResourceRequirements
29+ _ = corev1conversion . Convert_v1_ResourceRequirements_To_core_ResourceRequirements ( & requirements , & convRequirements , nil )
3330 return corevalidation .ValidateContainerResourceRequirements (& convRequirements , nil , fldPath .Child ("resources" ), corevalidation.PodValidationOptions {}).ToAggregate ()
3431}
3532
3633// ValidateAffinityRules validates the Affinity configuration using
3734// the Kubernetes core affinity validation rules.
3835func ValidateAffinityRules (affinity * corev1.Affinity , fldPath * field.Path ) error {
39- // convert corev1.Affinity to core.Affinity, required for validation.
40- convAffinity := ( * core . Affinity )( unsafe . Pointer ( affinity ) )
41- return validateAffinity (convAffinity , corevalidation.PodValidationOptions {}, fldPath .Child ("affinity" )).ToAggregate ()
36+ var convAffinity core.Affinity
37+ _ = corev1conversion . Convert_v1_Affinity_To_core_Affinity ( affinity , & convAffinity , nil )
38+ return validateAffinity (& convAffinity , corevalidation.PodValidationOptions {}, fldPath .Child ("affinity" )).ToAggregate ()
4239}
4340
4441// ValidateLabelsConfig validates label keys and values using the Kubernetes
@@ -52,3 +49,23 @@ func ValidateLabelsConfig(labels map[string]string, fldPath *field.Path) error {
5249func ValidateAnnotationsConfig (annotations map [string ]string , fldPath * field.Path ) error {
5350 return apivalidation .ValidateAnnotations (annotations , fldPath .Child ("annotations" )).ToAggregate ()
5451}
52+
53+ // ToCoreTolerations converts a slice of corev1.Toleration to core.Toleration
54+ // using Kubernetes' auto-generated conversion functions.
55+ func ToCoreTolerations (in []corev1.Toleration ) []core.Toleration {
56+ out := make ([]core.Toleration , len (in ))
57+ for i := range in {
58+ _ = corev1conversion .Convert_v1_Toleration_To_core_Toleration (& in [i ], & out [i ], nil )
59+ }
60+ return out
61+ }
62+
63+ // ToV1Tolerations converts a slice of core.Toleration to corev1.Toleration
64+ // using Kubernetes' auto-generated conversion functions.
65+ func ToV1Tolerations (in []core.Toleration ) []corev1.Toleration {
66+ out := make ([]corev1.Toleration , len (in ))
67+ for i := range in {
68+ _ = corev1conversion .Convert_core_Toleration_To_v1_Toleration (& in [i ], & out [i ], nil )
69+ }
70+ return out
71+ }
0 commit comments