From 4ede9482cd2b647730239e7a965c1c2b9a86dfcd Mon Sep 17 00:00:00 2001 From: Dimitar Mirchev Date: Fri, 20 Sep 2024 13:45:14 +0300 Subject: [PATCH] Address PR review --- cmd/gardener-extension-admission-alicloud/app/app.go | 2 ++ pkg/admission/validator/credentialsbinding_test.go | 8 +++----- pkg/admission/validator/webhook.go | 10 ++++++---- 3 files changed, 11 insertions(+), 9 deletions(-) diff --git a/cmd/gardener-extension-admission-alicloud/app/app.go b/cmd/gardener-extension-admission-alicloud/app/app.go index eec89b3e9..5c811bd1a 100644 --- a/cmd/gardener-extension-admission-alicloud/app/app.go +++ b/cmd/gardener-extension-admission-alicloud/app/app.go @@ -14,6 +14,7 @@ import ( webhookcmd "github.com/gardener/gardener/extensions/pkg/webhook/cmd" "github.com/gardener/gardener/pkg/apis/core/install" v1beta1constants "github.com/gardener/gardener/pkg/apis/core/v1beta1/constants" + securityinstall "github.com/gardener/gardener/pkg/apis/security/install" gardenerhealthz "github.com/gardener/gardener/pkg/healthz" "github.com/spf13/cobra" corev1 "k8s.io/api/core/v1" @@ -118,6 +119,7 @@ func NewAdmissionCommand(ctx context.Context) *cobra.Command { } install.Install(mgr.GetScheme()) + securityinstall.Install(mgr.GetScheme()) if err := alicloudinstall.AddToScheme(mgr.GetScheme()); err != nil { return fmt.Errorf("could not update manager scheme: %w", err) diff --git a/pkg/admission/validator/credentialsbinding_test.go b/pkg/admission/validator/credentialsbinding_test.go index bd762f327..b87d36afb 100644 --- a/pkg/admission/validator/credentialsbinding_test.go +++ b/pkg/admission/validator/credentialsbinding_test.go @@ -105,7 +105,7 @@ var _ = Describe("CredentialsBinding validator", func() { Expect(err).To(HaveOccurred()) }) - It("should return nil when the corresponding Secret is valid", func() { + It("should succeed when the corresponding Secret is valid", func() { apiReader.EXPECT().Get(ctx, client.ObjectKey{Namespace: namespace, Name: name}, gomock.AssignableToTypeOf(&corev1.Secret{})). DoAndReturn(func(_ context.Context, _ client.ObjectKey, obj *corev1.Secret, _ ...client.GetOption) error { secret := &corev1.Secret{Data: map[string][]byte{ @@ -116,15 +116,13 @@ var _ = Describe("CredentialsBinding validator", func() { return nil }) - err := credentialsBindingValidator.Validate(ctx, credentialsBinding, nil) - Expect(err).NotTo(HaveOccurred()) + Expect(credentialsBindingValidator.Validate(ctx, credentialsBinding, nil)).To(Succeed()) }) It("should return nil when the CredentialsBinding did not change", func() { old := credentialsBinding.DeepCopy() - err := credentialsBindingValidator.Validate(ctx, credentialsBinding, old) - Expect(err).NotTo(HaveOccurred()) + Expect(credentialsBindingValidator.Validate(ctx, credentialsBinding, old)).To(Succeed()) }) }) }) diff --git a/pkg/admission/validator/webhook.go b/pkg/admission/validator/webhook.go index 9d137204d..3f5d459c2 100644 --- a/pkg/admission/validator/webhook.go +++ b/pkg/admission/validator/webhook.go @@ -27,7 +27,7 @@ const ( var logger = log.Log.WithName("alicloud-validator-webhook") -// New creates a new webhook that validates Shoot and CloudProfile resources. +// New creates a new webhook that validates Shoot, CloudProfile, SecretBinding and CredentialsBinding resources. func New(mgr manager.Manager) (*extensionswebhook.Webhook, error) { logger.Info("Setting up webhook", "name", Name) @@ -37,9 +37,11 @@ func New(mgr manager.Manager) (*extensionswebhook.Webhook, error) { Path: "/webhooks/validate", Predicates: []predicate.Predicate{extensionspredicate.GardenCoreProviderType(alicloud.Type)}, Validators: map[extensionswebhook.Validator][]extensionswebhook.Type{ - NewShootValidator(mgr): {{Obj: &core.Shoot{}}}, - NewCloudProfileValidator(mgr): {{Obj: &core.CloudProfile{}}}, - NewSecretBindingValidator(mgr): {{Obj: &core.SecretBinding{}}}, + NewShootValidator(mgr): {{Obj: &core.Shoot{}}}, + NewCloudProfileValidator(mgr): {{Obj: &core.CloudProfile{}}}, + NewSecretBindingValidator(mgr): {{Obj: &core.SecretBinding{}}}, + // TODO(dimityrmirchev): Uncomment this line once this extension uses a g/g version that contains https://github.com/gardener/gardener/pull/10499 + // Predicates: []predicate.Predicate{predicate.Or(extensionspredicate.GardenCoreProviderType(alicloud.Type), extensionspredicate.GardenSecurityProviderType(alicloud.Type))}, NewCredentialsBindingValidator(mgr): {{Obj: &security.CredentialsBinding{}}}, }, Target: extensionswebhook.TargetSeed,