1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 |
- package validation
- import (
- apivalidation "k8s.io/apimachinery/pkg/api/validation"
- unversionedvalidation "k8s.io/apimachinery/pkg/apis/meta/v1/validation"
- "k8s.io/apimachinery/pkg/util/validation/field"
- "k8s.io/kubernetes/pkg/apis/core"
- corevalidation "k8s.io/kubernetes/pkg/apis/core/validation"
- "k8s.io/kubernetes/pkg/apis/node"
- )
- func ValidateRuntimeClass(rc *node.RuntimeClass) field.ErrorList {
- allErrs := apivalidation.ValidateObjectMeta(&rc.ObjectMeta, false, apivalidation.NameIsDNSSubdomain, field.NewPath("metadata"))
- for _, msg := range apivalidation.NameIsDNSLabel(rc.Handler, false) {
- allErrs = append(allErrs, field.Invalid(field.NewPath("handler"), rc.Handler, msg))
- }
- if rc.Overhead != nil {
- allErrs = append(allErrs, validateOverhead(rc.Overhead, field.NewPath("overhead"))...)
- }
- if rc.Scheduling != nil {
- allErrs = append(allErrs, validateScheduling(rc.Scheduling, field.NewPath("scheduling"))...)
- }
- return allErrs
- }
- func ValidateRuntimeClassUpdate(new, old *node.RuntimeClass) field.ErrorList {
- allErrs := apivalidation.ValidateObjectMetaUpdate(&new.ObjectMeta, &old.ObjectMeta, field.NewPath("metadata"))
- allErrs = append(allErrs, apivalidation.ValidateImmutableField(new.Handler, old.Handler, field.NewPath("handler"))...)
- return allErrs
- }
- func validateOverhead(overhead *node.Overhead, fldPath *field.Path) field.ErrorList {
-
- return corevalidation.ValidateResourceRequirements(&core.ResourceRequirements{Limits: overhead.PodFixed}, fldPath)
- }
- func validateScheduling(s *node.Scheduling, fldPath *field.Path) field.ErrorList {
- var allErrs field.ErrorList
- if s.NodeSelector != nil {
- allErrs = append(allErrs, unversionedvalidation.ValidateLabels(s.NodeSelector, fldPath.Child("nodeSelector"))...)
- }
- allErrs = append(allErrs, validateTolerations(s.Tolerations, fldPath.Child("tolerations"))...)
- return allErrs
- }
- func validateTolerations(tolerations []core.Toleration, fldPath *field.Path) field.ErrorList {
- allErrs := corevalidation.ValidateTolerations(tolerations, fldPath.Child("tolerations"))
-
- tolerationSet := map[core.Toleration]bool{}
- for i, t := range tolerations {
-
- listKey := core.Toleration{
- Key: t.Key,
- Operator: t.Operator,
- Value: t.Value,
- Effect: t.Effect,
- }
- if tolerationSet[listKey] {
- allErrs = append(allErrs, field.Duplicate(fldPath.Index(i), t))
- } else {
- tolerationSet[listKey] = true
- }
- }
- return allErrs
- }
|