extracted validations to a single point (#1582)
This commit is contained in:
parent
d4f35cff4f
commit
a9ac5a1cbf
|
|
@ -21,6 +21,7 @@ import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
|
||||||
"k8s.io/apimachinery/pkg/api/resource"
|
"k8s.io/apimachinery/pkg/api/resource"
|
||||||
|
"k8s.io/apimachinery/pkg/util/validation/field"
|
||||||
|
|
||||||
corev1 "k8s.io/api/core/v1"
|
corev1 "k8s.io/api/core/v1"
|
||||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
|
|
@ -166,8 +167,32 @@ type RunnerPodSpec struct {
|
||||||
WorkVolumeClaimTemplate *WorkVolumeClaimTemplate `json:"workVolumeClaimTemplate,omitempty"`
|
WorkVolumeClaimTemplate *WorkVolumeClaimTemplate `json:"workVolumeClaimTemplate,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (rs *RunnerSpec) Validate(rootPath *field.Path) field.ErrorList {
|
||||||
|
var (
|
||||||
|
errList field.ErrorList
|
||||||
|
err error
|
||||||
|
)
|
||||||
|
|
||||||
|
err = rs.validateRepository()
|
||||||
|
if err != nil {
|
||||||
|
errList = append(errList, field.Invalid(rootPath.Child("repository"), rs.Repository, err.Error()))
|
||||||
|
}
|
||||||
|
|
||||||
|
err = rs.validateWorkVolumeClaimTemplate()
|
||||||
|
if err != nil {
|
||||||
|
errList = append(errList, field.Invalid(rootPath.Child("workVolumeClaimTemplate"), rs.WorkVolumeClaimTemplate, err.Error()))
|
||||||
|
}
|
||||||
|
|
||||||
|
err = rs.validateIsServiceAccountNameSet()
|
||||||
|
if err != nil {
|
||||||
|
errList = append(errList, field.Invalid(rootPath.Child("serviceAccountName"), rs.ServiceAccountName, err.Error()))
|
||||||
|
}
|
||||||
|
|
||||||
|
return errList
|
||||||
|
}
|
||||||
|
|
||||||
// ValidateRepository validates repository field.
|
// ValidateRepository validates repository field.
|
||||||
func (rs *RunnerSpec) ValidateRepository() error {
|
func (rs *RunnerSpec) validateRepository() error {
|
||||||
// Enterprise, Organization and repository are both exclusive.
|
// Enterprise, Organization and repository are both exclusive.
|
||||||
foundCount := 0
|
foundCount := 0
|
||||||
if len(rs.Organization) > 0 {
|
if len(rs.Organization) > 0 {
|
||||||
|
|
@ -189,7 +214,7 @@ func (rs *RunnerSpec) ValidateRepository() error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (rs *RunnerSpec) ValidateWorkVolumeClaimTemplate() error {
|
func (rs *RunnerSpec) validateWorkVolumeClaimTemplate() error {
|
||||||
if rs.ContainerMode != "kubernetes" {
|
if rs.ContainerMode != "kubernetes" {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
@ -201,7 +226,7 @@ func (rs *RunnerSpec) ValidateWorkVolumeClaimTemplate() error {
|
||||||
return rs.WorkVolumeClaimTemplate.validate()
|
return rs.WorkVolumeClaimTemplate.validate()
|
||||||
}
|
}
|
||||||
|
|
||||||
func (rs *RunnerSpec) ValidateIsServiceAccountNameSet() error {
|
func (rs *RunnerSpec) validateIsServiceAccountNameSet() error {
|
||||||
if rs.ContainerMode != "kubernetes" {
|
if rs.ContainerMode != "kubernetes" {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -66,25 +66,7 @@ func (r *Runner) ValidateDelete() error {
|
||||||
|
|
||||||
// Validate validates resource spec.
|
// Validate validates resource spec.
|
||||||
func (r *Runner) Validate() error {
|
func (r *Runner) Validate() error {
|
||||||
var (
|
errList := r.Spec.Validate(field.NewPath("spec"))
|
||||||
errList field.ErrorList
|
|
||||||
err error
|
|
||||||
)
|
|
||||||
|
|
||||||
err = r.Spec.ValidateRepository()
|
|
||||||
if err != nil {
|
|
||||||
errList = append(errList, field.Invalid(field.NewPath("spec", "repository"), r.Spec.Repository, err.Error()))
|
|
||||||
}
|
|
||||||
|
|
||||||
err = r.Spec.ValidateWorkVolumeClaimTemplate()
|
|
||||||
if err != nil {
|
|
||||||
errList = append(errList, field.Invalid(field.NewPath("spec", "workVolumeClaimTemplate"), r.Spec.WorkVolumeClaimTemplate, err.Error()))
|
|
||||||
}
|
|
||||||
|
|
||||||
err = r.Spec.ValidateIsServiceAccountNameSet()
|
|
||||||
if err != nil {
|
|
||||||
errList = append(errList, field.Invalid(field.NewPath("spec", "serviceAccountName"), r.Spec.ServiceAccountName, err.Error()))
|
|
||||||
}
|
|
||||||
|
|
||||||
if len(errList) > 0 {
|
if len(errList) > 0 {
|
||||||
return apierrors.NewInvalid(r.GroupVersionKind().GroupKind(), r.Name, errList)
|
return apierrors.NewInvalid(r.GroupVersionKind().GroupKind(), r.Name, errList)
|
||||||
|
|
|
||||||
|
|
@ -66,25 +66,7 @@ func (r *RunnerDeployment) ValidateDelete() error {
|
||||||
|
|
||||||
// Validate validates resource spec.
|
// Validate validates resource spec.
|
||||||
func (r *RunnerDeployment) Validate() error {
|
func (r *RunnerDeployment) Validate() error {
|
||||||
var (
|
errList := r.Spec.Template.Spec.Validate(field.NewPath("spec", "template", "spec"))
|
||||||
errList field.ErrorList
|
|
||||||
err error
|
|
||||||
)
|
|
||||||
|
|
||||||
err = r.Spec.Template.Spec.ValidateRepository()
|
|
||||||
if err != nil {
|
|
||||||
errList = append(errList, field.Invalid(field.NewPath("spec", "template", "spec", "repository"), r.Spec.Template.Spec.Repository, err.Error()))
|
|
||||||
}
|
|
||||||
|
|
||||||
err = r.Spec.Template.Spec.ValidateWorkVolumeClaimTemplate()
|
|
||||||
if err != nil {
|
|
||||||
errList = append(errList, field.Invalid(field.NewPath("spec", "template", "spec", "workVolumeClaimTemplate"), r.Spec.Template.Spec.WorkVolumeClaimTemplate, err.Error()))
|
|
||||||
}
|
|
||||||
|
|
||||||
err = r.Spec.Template.Spec.ValidateIsServiceAccountNameSet()
|
|
||||||
if err != nil {
|
|
||||||
errList = append(errList, field.Invalid(field.NewPath("spec", "template", "spec", "serviceAccountName"), r.Spec.Template.Spec.ServiceAccountName, err.Error()))
|
|
||||||
}
|
|
||||||
|
|
||||||
if len(errList) > 0 {
|
if len(errList) > 0 {
|
||||||
return apierrors.NewInvalid(r.GroupVersionKind().GroupKind(), r.Name, errList)
|
return apierrors.NewInvalid(r.GroupVersionKind().GroupKind(), r.Name, errList)
|
||||||
|
|
|
||||||
|
|
@ -66,25 +66,7 @@ func (r *RunnerReplicaSet) ValidateDelete() error {
|
||||||
|
|
||||||
// Validate validates resource spec.
|
// Validate validates resource spec.
|
||||||
func (r *RunnerReplicaSet) Validate() error {
|
func (r *RunnerReplicaSet) Validate() error {
|
||||||
var (
|
errList := r.Spec.Template.Spec.Validate(field.NewPath("spec", "template", "spec"))
|
||||||
errList field.ErrorList
|
|
||||||
err error
|
|
||||||
)
|
|
||||||
|
|
||||||
err = r.Spec.Template.Spec.ValidateRepository()
|
|
||||||
if err != nil {
|
|
||||||
errList = append(errList, field.Invalid(field.NewPath("spec", "template", "spec", "repository"), r.Spec.Template.Spec.Repository, err.Error()))
|
|
||||||
}
|
|
||||||
|
|
||||||
err = r.Spec.Template.Spec.ValidateWorkVolumeClaimTemplate()
|
|
||||||
if err != nil {
|
|
||||||
errList = append(errList, field.Invalid(field.NewPath("spec", "template", "spec", "workVolumeClaimTemplate"), r.Spec.Template.Spec.WorkVolumeClaimTemplate, err.Error()))
|
|
||||||
}
|
|
||||||
|
|
||||||
err = r.Spec.Template.Spec.ValidateIsServiceAccountNameSet()
|
|
||||||
if err != nil {
|
|
||||||
errList = append(errList, field.Invalid(field.NewPath("spec", "template", "spec", "serviceAccountName"), r.Spec.Template.Spec.ServiceAccountName, err.Error()))
|
|
||||||
}
|
|
||||||
|
|
||||||
if len(errList) > 0 {
|
if len(errList) > 0 {
|
||||||
return apierrors.NewInvalid(r.GroupVersionKind().GroupKind(), r.Name, errList)
|
return apierrors.NewInvalid(r.GroupVersionKind().GroupKind(), r.Name, errList)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue