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