fix: validating tcp name

This commit is contained in:
Dario Tranchitella
2023-07-04 19:57:24 +02:00
parent f0e675dea3
commit 792119d2d3
3 changed files with 42 additions and 1 deletions

View File

@@ -0,0 +1,40 @@
// Copyright 2022 Clastix Labs
// SPDX-License-Identifier: Apache-2.0
package handlers
import (
"context"
"fmt"
"strings"
"gomodules.xyz/jsonpatch/v2"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/util/validation"
"sigs.k8s.io/controller-runtime/pkg/webhook/admission"
kamajiv1alpha1 "github.com/clastix/kamaji/api/v1alpha1"
"github.com/clastix/kamaji/internal/webhook/utils"
)
type TenantControlPlaneName struct{}
func (t TenantControlPlaneName) OnCreate(object runtime.Object) AdmissionResponse {
return func(ctx context.Context, req admission.Request) ([]jsonpatch.JsonPatchOperation, error) {
tcp := object.(*kamajiv1alpha1.TenantControlPlane) //nolint:forcetypeassert
if errs := validation.IsDNS1035Label(tcp.Name); len(errs) > 0 {
return nil, fmt.Errorf("the provided name is invalid, %s", strings.Join(errs, ","))
}
return nil, nil
}
}
func (t TenantControlPlaneName) OnDelete(runtime.Object) AdmissionResponse {
return utils.NilOp()
}
func (t TenantControlPlaneName) OnUpdate(runtime.Object, runtime.Object) AdmissionResponse {
return utils.NilOp()
}