Skip to content

Commit 9094503

Browse files
committed
commonize job name validation
Signed-off-by: Harshvir Potpose <[email protected]>
1 parent 22d5dde commit 9094503

File tree

5 files changed

+32
-16
lines changed

5 files changed

+32
-16
lines changed

pkg/webhooks/jax/jaxjob_webhook.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,7 @@ import (
2020
"context"
2121
"fmt"
2222
"slices"
23-
"strings"
2423

25-
apimachineryvalidation "k8s.io/apimachinery/pkg/api/validation"
2624
"k8s.io/apimachinery/pkg/runtime"
2725
"k8s.io/apimachinery/pkg/util/validation/field"
2826
"k8s.io/klog/v2"
@@ -31,6 +29,7 @@ import (
3129
"sigs.k8s.io/controller-runtime/pkg/webhook/admission"
3230

3331
trainingoperator "github.com/kubeflow/training-operator/pkg/apis/kubeflow.org/v1"
32+
"github.com/kubeflow/training-operator/pkg/webhooks/utils"
3433
)
3534

3635
var (
@@ -71,8 +70,9 @@ func (w *Webhook) ValidateDelete(context.Context, runtime.Object) (admission.War
7170

7271
func validateJAXJob(job *trainingoperator.JAXJob) field.ErrorList {
7372
var allErrs field.ErrorList
74-
if errors := apimachineryvalidation.NameIsDNS1035Label(job.ObjectMeta.Name, false); len(errors) != 0 {
75-
allErrs = append(allErrs, field.Invalid(field.NewPath("metadata").Child("name"), job.Name, fmt.Sprintf("should match: %v", strings.Join(errors, ","))))
73+
err := utils.ValidateJobName(job.ObjectMeta.Name)
74+
if err != nil {
75+
allErrs = append(allErrs, err)
7676
}
7777

7878
allErrs = append(allErrs, validateSpec(job.Spec)...)

pkg/webhooks/paddlepaddle/paddlepaddle_webhook.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,7 @@ import (
2020
"context"
2121
"fmt"
2222
"slices"
23-
"strings"
2423

25-
apimachineryvalidation "k8s.io/apimachinery/pkg/api/validation"
2624
"k8s.io/apimachinery/pkg/runtime"
2725
"k8s.io/apimachinery/pkg/util/validation/field"
2826
"k8s.io/klog/v2"
@@ -32,6 +30,7 @@ import (
3230

3331
trainingoperator "github.com/kubeflow/training-operator/pkg/apis/kubeflow.org/v1"
3432
"github.com/kubeflow/training-operator/pkg/common/util"
33+
"github.com/kubeflow/training-operator/pkg/webhooks/utils"
3534
)
3635

3736
var (
@@ -73,8 +72,9 @@ func (w Webhook) ValidateDelete(context.Context, runtime.Object) (admission.Warn
7372

7473
func validatePaddleJob(oldJob, newJob *trainingoperator.PaddleJob) field.ErrorList {
7574
var allErrs field.ErrorList
76-
if errors := apimachineryvalidation.NameIsDNS1035Label(newJob.Name, false); len(errors) != 0 {
77-
allErrs = append(allErrs, field.Invalid(field.NewPath("metadata").Child("name"), newJob.Name, fmt.Sprintf("should match: %v", strings.Join(errors, ","))))
75+
err := utils.ValidateJobName(newJob.Name)
76+
if err != nil {
77+
allErrs = append(allErrs, err)
7878
}
7979
if oldJob != nil {
8080
allErrs = append(allErrs, util.ValidateRunPolicyUpdate(&oldJob.Spec.RunPolicy, &newJob.Spec.RunPolicy)...)

pkg/webhooks/pytorch/pytorchjob_webhook.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,7 @@ import (
2020
"context"
2121
"fmt"
2222
"slices"
23-
"strings"
2423

25-
apimachineryvalidation "k8s.io/apimachinery/pkg/api/validation"
2624
"k8s.io/apimachinery/pkg/runtime"
2725
"k8s.io/apimachinery/pkg/util/validation/field"
2826
"k8s.io/klog/v2"
@@ -32,6 +30,7 @@ import (
3230

3331
trainingoperator "github.com/kubeflow/training-operator/pkg/apis/kubeflow.org/v1"
3432
"github.com/kubeflow/training-operator/pkg/common/util"
33+
"github.com/kubeflow/training-operator/pkg/webhooks/utils"
3534
)
3635

3736
var (
@@ -77,8 +76,9 @@ func validatePyTorchJob(oldJob, newJob *trainingoperator.PyTorchJob) (admission.
7776
var allErrs field.ErrorList
7877
var warnings admission.Warnings
7978

80-
if errors := apimachineryvalidation.NameIsDNS1035Label(newJob.ObjectMeta.Name, false); len(errors) != 0 {
81-
allErrs = append(allErrs, field.Invalid(field.NewPath("metadata").Child("name"), newJob.Name, fmt.Sprintf("should match: %v", strings.Join(errors, ","))))
79+
jobNameErr := utils.ValidateJobName(newJob.ObjectMeta.Name)
80+
if jobNameErr != nil {
81+
allErrs = append(allErrs, jobNameErr)
8282
}
8383
if oldJob != nil {
8484
allErrs = append(allErrs, util.ValidateRunPolicyUpdate(&oldJob.Spec.RunPolicy, &newJob.Spec.RunPolicy)...)

pkg/webhooks/tensorflow/tfjob_webhook.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,7 @@ package tensorflow
1919
import (
2020
"context"
2121
"fmt"
22-
"strings"
2322

24-
apimachineryvalidation "k8s.io/apimachinery/pkg/api/validation"
2523
"k8s.io/apimachinery/pkg/runtime"
2624
"k8s.io/apimachinery/pkg/util/validation/field"
2725
"k8s.io/klog/v2"
@@ -31,6 +29,7 @@ import (
3129

3230
trainingoperator "github.com/kubeflow/training-operator/pkg/apis/kubeflow.org/v1"
3331
"github.com/kubeflow/training-operator/pkg/common/util"
32+
"github.com/kubeflow/training-operator/pkg/webhooks/utils"
3433
)
3534

3635
var (
@@ -72,8 +71,9 @@ func (w *Webhook) ValidateDelete(context.Context, runtime.Object) (admission.War
7271

7372
func validateTFJob(oldJob, newJob *trainingoperator.TFJob) field.ErrorList {
7473
var allErrs field.ErrorList
75-
if errors := apimachineryvalidation.NameIsDNS1035Label(newJob.Name, false); len(errors) != 0 {
76-
allErrs = append(allErrs, field.Invalid(field.NewPath("metadata").Child("name"), newJob.Name, fmt.Sprintf("should match: %v", strings.Join(errors, ","))))
74+
err := utils.ValidateJobName(newJob.Name)
75+
if err != nil {
76+
allErrs = append(allErrs, err)
7777
}
7878
if oldJob != nil {
7979
allErrs = append(allErrs, util.ValidateRunPolicyUpdate(&oldJob.Spec.RunPolicy, &newJob.Spec.RunPolicy)...)

pkg/webhooks/utils/utils.go

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package utils
2+
3+
import (
4+
"fmt"
5+
"strings"
6+
7+
apimachineryvalidation "k8s.io/apimachinery/pkg/api/validation"
8+
"k8s.io/apimachinery/pkg/util/validation/field"
9+
)
10+
11+
func ValidateJobName(name string) *field.Error {
12+
if errors := apimachineryvalidation.NameIsDNS1035Label(name, false); len(errors) != 0 {
13+
return field.Invalid(field.NewPath("metadata").Child("name"), name, fmt.Sprintf("should match: %v", strings.Join(errors, ",")))
14+
}
15+
return nil
16+
}

0 commit comments

Comments
 (0)