github.com/ironcore-dev/gardener-extension-provider-ironcore@v0.3.2-0.20240314231816-8336447fb9a0/pkg/admission/validator/webhook.go (about) 1 // SPDX-FileCopyrightText: 2022 SAP SE or an SAP affiliate company and IronCore contributors 2 // SPDX-License-Identifier: Apache-2.0 3 4 package validator 5 6 import ( 7 extensionspredicate "github.com/gardener/gardener/extensions/pkg/predicate" 8 extensionswebhook "github.com/gardener/gardener/extensions/pkg/webhook" 9 "github.com/gardener/gardener/pkg/apis/core" 10 corev1 "k8s.io/api/core/v1" 11 "sigs.k8s.io/controller-runtime/pkg/log" 12 "sigs.k8s.io/controller-runtime/pkg/manager" 13 "sigs.k8s.io/controller-runtime/pkg/predicate" 14 15 ironcore "github.com/ironcore-dev/gardener-extension-provider-ironcore/pkg/ironcore" 16 ) 17 18 const ( 19 // Name is a name for a validation webhook. 20 Name = "validator" 21 // SecretsValidatorName is the name of the secrets' validator. 22 SecretsValidatorName = "secrets." + Name 23 ) 24 25 var logger = log.Log.WithName("ironcore-validator-webhook") 26 27 // New creates a new validation webhook for `core.gardener.cloud` resources. 28 func New(mgr manager.Manager) (*extensionswebhook.Webhook, error) { 29 logger.Info("Setting up webhook", "name", Name) 30 31 return extensionswebhook.New(mgr, extensionswebhook.Args{ 32 Provider: ironcore.Type, 33 Name: Name, 34 Path: "/webhooks/validate", 35 Predicates: []predicate.Predicate{extensionspredicate.GardenCoreProviderType(ironcore.Type)}, 36 Validators: map[extensionswebhook.Validator][]extensionswebhook.Type{ 37 NewShootValidator(mgr): {{Obj: &core.Shoot{}}}, 38 NewSecretBindingValidator(mgr): {{Obj: &core.SecretBinding{}}}, 39 }, 40 }) 41 } 42 43 // NewSecretsWebhook creates a new validation webhook for Secrets. 44 func NewSecretsWebhook(mgr manager.Manager) (*extensionswebhook.Webhook, error) { 45 logger.Info("Setting up webhook", "name", SecretsValidatorName) 46 47 return extensionswebhook.New(mgr, extensionswebhook.Args{ 48 Provider: ironcore.Type, 49 Name: SecretsValidatorName, 50 Path: "/webhooks/validate/secrets", 51 Validators: map[extensionswebhook.Validator][]extensionswebhook.Type{ 52 NewSecretValidator(): {{Obj: &corev1.Secret{}}}, 53 }, 54 }) 55 }