Skip to content

Commit

Permalink
Skip *heavy* validation on deletion 🙃
Browse files Browse the repository at this point in the history
When deleting an object, we don't need to pursue all the validation
that we do at creation. It reduces the work to be done as part of the
validation *and* allows invalid version of the resource (from previous
versions for example) to be deleted safely.

Signed-off-by: Vincent Demeester <vdemeest@redhat.com>
  • Loading branch information
vdemeester committed May 11, 2021
1 parent bf511dd commit c736283
Show file tree
Hide file tree
Showing 13 changed files with 40 additions and 1 deletion.
3 changes: 3 additions & 0 deletions pkg/apis/pipeline/v1alpha1/cluster_task_validation.go
Original file line number Diff line number Diff line change
Expand Up @@ -29,5 +29,8 @@ func (t *ClusterTask) Validate(ctx context.Context) *apis.FieldError {
if err := validate.ObjectMetadata(t.GetObjectMeta()); err != nil {
return err.ViaField("metadata")
}
if apis.IsInDelete(ctx) {
return nil
}
return t.Spec.Validate(ctx)
}
3 changes: 3 additions & 0 deletions pkg/apis/pipeline/v1alpha1/condition_validation.go
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,9 @@ func (c Condition) Validate(ctx context.Context) *apis.FieldError {
if err := validate.ObjectMetadata(c.GetObjectMeta()); err != nil {
return err.ViaField("metadata")
}
if apis.IsInDelete(ctx) {
return nil
}
return c.Spec.Validate(ctx).ViaField("Spec")
}

Expand Down
3 changes: 3 additions & 0 deletions pkg/apis/pipeline/v1alpha1/pipeline_validation.go
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,9 @@ func (p *Pipeline) Validate(ctx context.Context) *apis.FieldError {
if err := validate.ObjectMetadata(p.GetObjectMeta()); err != nil {
return err.ViaField("metadata")
}
if apis.IsInDelete(ctx) {
return nil
}
return p.Spec.Validate(ctx)
}

Expand Down
3 changes: 3 additions & 0 deletions pkg/apis/pipeline/v1alpha1/pipelinerun_validation.go
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,9 @@ func (pr *PipelineRun) Validate(ctx context.Context) *apis.FieldError {
if err := validate.ObjectMetadata(pr.GetObjectMeta()).ViaField("metadata"); err != nil {
return err
}
if apis.IsInDelete(ctx) {
return nil
}
return pr.Spec.Validate(ctx)
}

Expand Down
3 changes: 3 additions & 0 deletions pkg/apis/pipeline/v1alpha1/run_validation.go
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,9 @@ func (r *Run) Validate(ctx context.Context) *apis.FieldError {
if err := validate.ObjectMetadata(r.GetObjectMeta()).ViaField("metadata"); err != nil {
return err
}
if apis.IsInDelete(ctx) {
return nil
}
return r.Spec.Validate(ctx)
}

Expand Down
3 changes: 3 additions & 0 deletions pkg/apis/pipeline/v1alpha1/task_validation.go
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,9 @@ func (t *Task) Validate(ctx context.Context) *apis.FieldError {
if err := validate.ObjectMetadata(t.GetObjectMeta()); err != nil {
return err.ViaField("metadata")
}
if apis.IsInDelete(ctx) {
return nil
}
return t.Spec.Validate(ctx)
}

Expand Down
3 changes: 3 additions & 0 deletions pkg/apis/pipeline/v1alpha1/taskrun_validation.go
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,9 @@ func (tr *TaskRun) Validate(ctx context.Context) *apis.FieldError {
if err := validate.ObjectMetadata(tr.GetObjectMeta()).ViaField("metadata"); err != nil {
return err
}
if apis.IsInDelete(ctx) {
return nil
}
return tr.Spec.Validate(ctx)
}

Expand Down
3 changes: 3 additions & 0 deletions pkg/apis/pipeline/v1beta1/cluster_task_validation.go
Original file line number Diff line number Diff line change
Expand Up @@ -27,5 +27,8 @@ var _ apis.Validatable = (*ClusterTask)(nil)

func (t *ClusterTask) Validate(ctx context.Context) *apis.FieldError {
errs := validate.ObjectMetadata(t.GetObjectMeta()).ViaField("metadata")
if apis.IsInDelete(ctx) {
return nil
}
return errs.Also(t.Spec.Validate(apis.WithinSpec(ctx)).ViaField("spec"))
}
3 changes: 3 additions & 0 deletions pkg/apis/pipeline/v1beta1/pipeline_validation.go
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,9 @@ var _ apis.Validatable = (*Pipeline)(nil)
// that any references resources exist, that is done at run time.
func (p *Pipeline) Validate(ctx context.Context) *apis.FieldError {
errs := validate.ObjectMetadata(p.GetObjectMeta()).ViaField("metadata")
if apis.IsInDelete(ctx) {
return nil
}
return errs.Also(p.Spec.Validate(apis.WithinSpec(ctx)).ViaField("spec"))
}

Expand Down
4 changes: 4 additions & 0 deletions pkg/apis/pipeline/v1beta1/pipelinerun_validation.go
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,10 @@ var _ apis.Validatable = (*PipelineRun)(nil)
func (pr *PipelineRun) Validate(ctx context.Context) *apis.FieldError {
errs := validate.ObjectMetadata(pr.GetObjectMeta()).ViaField("metadata")

if apis.IsInDelete(ctx) {
return nil
}

if pr.IsPending() && pr.HasStarted() {
errs = errs.Also(apis.ErrInvalidValue("PipelineRun cannot be Pending after it is started", "spec.status"))
}
Expand Down
3 changes: 3 additions & 0 deletions pkg/apis/pipeline/v1beta1/task_validation.go
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,9 @@ var _ apis.Validatable = (*Task)(nil)

func (t *Task) Validate(ctx context.Context) *apis.FieldError {
errs := validate.ObjectMetadata(t.GetObjectMeta()).ViaField("metadata")
if apis.IsInDelete(ctx) {
return nil
}
return errs.Also(t.Spec.Validate(apis.WithinSpec(ctx)).ViaField("spec"))
}

Expand Down
3 changes: 3 additions & 0 deletions pkg/apis/pipeline/v1beta1/taskrun_validation.go
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,9 @@ var _ apis.Validatable = (*TaskRun)(nil)
// Validate taskrun
func (tr *TaskRun) Validate(ctx context.Context) *apis.FieldError {
errs := validate.ObjectMetadata(tr.GetObjectMeta()).ViaField("metadata")
if apis.IsInDelete(ctx) {
return nil
}
return errs.Also(tr.Spec.Validate(apis.WithinSpec(ctx)).ViaField("spec"))
}

Expand Down
4 changes: 3 additions & 1 deletion pkg/apis/resource/v1alpha1/pipelineresource_validation.go
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,9 @@ func (r *PipelineResource) Validate(ctx context.Context) *apis.FieldError {
if err := validate.ObjectMetadata(r.GetObjectMeta()); err != nil {
return err.ViaField("metadata")
}

if apis.IsInDelete(ctx) {
return nil
}
return r.Spec.Validate(ctx)
}

Expand Down

0 comments on commit c736283

Please sign in to comment.