Skip to content

Commit 4dfc343

Browse files
committed
webhook: drop default
1 parent eb634f0 commit 4dfc343

File tree

3 files changed

+9
-47
lines changed

3 files changed

+9
-47
lines changed

config/supervisor/webhook/manifests.yaml

-21
Original file line numberDiff line numberDiff line change
@@ -4,27 +4,6 @@ kind: MutatingWebhookConfiguration
44
metadata:
55
name: mutating-webhook-configuration
66
webhooks:
7-
- admissionReviewVersions:
8-
- v1beta1
9-
clientConfig:
10-
service:
11-
name: webhook-service
12-
namespace: system
13-
path: /mutate-vmware-infrastructure-cluster-x-k8s-io-v1beta1-vspherecluster
14-
failurePolicy: Fail
15-
matchPolicy: Equivalent
16-
name: default.vspherecluster.vmware.infrastructure.cluster.x-k8s.io
17-
rules:
18-
- apiGroups:
19-
- vmware.infrastructure.cluster.x-k8s.io
20-
apiVersions:
21-
- v1beta1
22-
operations:
23-
- CREATE
24-
- UPDATE
25-
resources:
26-
- vsphereclusters
27-
sideEffects: None
287
- admissionReviewVersions:
298
- v1beta1
309
clientConfig:

internal/webhooks/vmware/vspherecluster.go

+2-19
Original file line numberDiff line numberDiff line change
@@ -34,36 +34,19 @@ import (
3434
)
3535

3636
// +kubebuilder:webhook:verbs=create;update,path=/validate-vmware-infrastructure-cluster-x-k8s-io-v1beta1-vspherecluster,mutating=false,failurePolicy=fail,matchPolicy=Equivalent,groups=vmware.infrastructure.cluster.x-k8s.io,resources=vsphereclusters,versions=v1beta1,name=validation.vspherecluster.vmware.infrastructure.cluster.x-k8s.io,sideEffects=None,admissionReviewVersions=v1beta1
37-
// +kubebuilder:webhook:verbs=create;update,path=/mutate-vmware-infrastructure-cluster-x-k8s-io-v1beta1-vspherecluster,mutating=true,failurePolicy=fail,matchPolicy=Equivalent,groups=vmware.infrastructure.cluster.x-k8s.io,resources=vsphereclusters,versions=v1beta1,name=default.vspherecluster.vmware.infrastructure.cluster.x-k8s.io,sideEffects=None,admissionReviewVersions=v1beta1
3837

3938
// VSphereClusterWebhook implements a validation and defaulting webhook for VSphereCluster.
4039
type VSphereClusterWebhook struct{}
4140

4241
var _ webhook.CustomValidator = &VSphereClusterWebhook{}
43-
var _ webhook.CustomDefaulter = &VSphereClusterWebhook{}
4442

4543
func (webhook *VSphereClusterWebhook) SetupWebhookWithManager(mgr ctrl.Manager) error {
4644
return ctrl.NewWebhookManagedBy(mgr).
4745
For(&vmwarev1.VSphereCluster{}).
4846
WithValidator(webhook).
49-
WithDefaulter(webhook).
5047
Complete()
5148
}
5249

53-
// Default implements webhook.Defaulter so a webhook will be registered for the type.
54-
func (webhook *VSphereClusterWebhook) Default(_ context.Context, newRaw runtime.Object) error {
55-
newTyped, ok := newRaw.(*vmwarev1.VSphereCluster)
56-
if !ok {
57-
return apierrors.NewBadRequest(fmt.Sprintf("expected a VSphereCluster but got a %T", newRaw))
58-
}
59-
60-
if newTyped.Spec.Placement.WorkerAntiAffinity.Mode == "" {
61-
newTyped.Spec.Placement.WorkerAntiAffinity.Mode = vmwarev1.VSphereClusterWorkerAntiAffinityModeCluster
62-
}
63-
64-
return nil
65-
}
66-
6750
// ValidateCreate implements webhook.Validator so a webhook will be registered for the type.
6851
func (webhook *VSphereClusterWebhook) ValidateCreate(_ context.Context, newRaw runtime.Object) (admission.Warnings, error) {
6952
var allErrs field.ErrorList
@@ -77,7 +60,7 @@ func (webhook *VSphereClusterWebhook) ValidateCreate(_ context.Context, newRaw r
7760

7861
if !feature.Gates.Enabled(feature.WorkerAntiAffinity) {
7962
// Cluster mode is not allowed without WorkerAntiAffinity being enabled.
80-
if newSpec.Placement.WorkerAntiAffinity.Mode == vmwarev1.VSphereClusterWorkerAntiAffinityModeMachineDeployment {
63+
if newSpec.Placement != nil && newSpec.Placement.WorkerAntiAffinity != nil && newSpec.Placement.WorkerAntiAffinity.Mode == vmwarev1.VSphereClusterWorkerAntiAffinityModeMachineDeployment {
8164
allErrs = append(allErrs, field.Forbidden(field.NewPath("spec", "placement", "workerAntiAffinity", "mode"), "cannot be set to Cluster with feature-gate WorkerAntiAffinity being disabled"))
8265
}
8366
}
@@ -98,7 +81,7 @@ func (webhook *VSphereClusterWebhook) ValidateUpdate(_ context.Context, _ runtim
9881

9982
if !feature.Gates.Enabled(feature.WorkerAntiAffinity) {
10083
// Cluster mode is not allowed without WorkerAntiAffinity being enabled.
101-
if newSpec.Placement.WorkerAntiAffinity.Mode == vmwarev1.VSphereClusterWorkerAntiAffinityModeMachineDeployment {
84+
if newSpec.Placement != nil && newSpec.Placement.WorkerAntiAffinity != nil && newSpec.Placement.WorkerAntiAffinity.Mode == vmwarev1.VSphereClusterWorkerAntiAffinityModeMachineDeployment {
10285
allErrs = append(allErrs, field.Forbidden(field.NewPath("spec", "placement", "workerAntiAffinity", "mode"), "cannot be set to Cluster with feature-gate WorkerAntiAffinity being disabled"))
10386
}
10487
}

internal/webhooks/vmware/vspherecluster_test.go

+7-7
Original file line numberDiff line numberDiff line change
@@ -156,13 +156,13 @@ func TestVSphereCluster_ValidateUpdate(t *testing.T) {
156156
}
157157

158158
func createVSphereCluster(mode vmwarev1.VSphereClusterWorkerAntiAffinityMode) *vmwarev1.VSphereCluster {
159-
return &vmwarev1.VSphereCluster{
160-
Spec: vmwarev1.VSphereClusterSpec{
161-
Placement: vmwarev1.VSphereClusterPlacement{
162-
WorkerAntiAffinity: vmwarev1.VSphereClusterWorkerAntiAffinity{
163-
Mode: mode,
164-
},
159+
vSphereCluster := &vmwarev1.VSphereCluster{}
160+
if mode != "" {
161+
vSphereCluster.Spec.Placement = &vmwarev1.VSphereClusterPlacement{
162+
WorkerAntiAffinity: &vmwarev1.VSphereClusterWorkerAntiAffinity{
163+
Mode: mode,
165164
},
166-
},
165+
}
167166
}
167+
return vSphereCluster
168168
}

0 commit comments

Comments
 (0)