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