@@ -17,6 +17,8 @@ limitations under the License.
1717package v1beta1
1818
1919import (
20+ "context"
21+ "fmt"
2022 "reflect"
2123
2224 apierrors "k8s.io/apimachinery/pkg/api/errors"
@@ -34,28 +36,44 @@ const AzureClusterTemplateImmutableMsg = "AzureClusterTemplate spec.template.spe
3436func (c * AzureClusterTemplate ) SetupWebhookWithManager (mgr ctrl.Manager ) error {
3537 return ctrl .NewWebhookManagedBy (mgr ).
3638 For (c ).
39+ WithDefaulter (c ). // registers webhook.CustomDefaulter
40+ WithValidator (c ). // registers webhook.CustomValidator
3741 Complete ()
3842}
3943
4044// +kubebuilder:webhook:verbs=create;update,path=/validate-infrastructure-cluster-x-k8s-io-v1beta1-azureclustertemplate,mutating=false,failurePolicy=fail,matchPolicy=Equivalent,groups=infrastructure.cluster.x-k8s.io,resources=azureclustertemplates,versions=v1beta1,name=validation.azureclustertemplate.infrastructure.cluster.x-k8s.io,sideEffects=None,admissionReviewVersions=v1;v1beta1
4145// +kubebuilder:webhook:verbs=create;update,path=/mutate-infrastructure-cluster-x-k8s-io-v1beta1-azureclustertemplate,mutating=true,failurePolicy=fail,matchPolicy=Equivalent,groups=infrastructure.cluster.x-k8s.io,resources=azureclustertemplates,versions=v1beta1,name=default.azureclustertemplate.infrastructure.cluster.x-k8s.io,sideEffects=None,admissionReviewVersions=v1;v1beta1
4246
43- var _ webhook.Defaulter = & AzureClusterTemplate {}
47+ var _ webhook.CustomDefaulter = & AzureClusterTemplate {}
4448
4549// Default implements webhook.Defaulter so a webhook will be registered for the type.
46- func (c * AzureClusterTemplate ) Default () {
50+ func (c * AzureClusterTemplate ) Default (ctx context.Context , obj runtime.Object ) error {
51+ c , ok := obj .(* AzureClusterTemplate )
52+ if ! ok {
53+ return fmt .Errorf ("expected *AzureClusterTemplate, got %T" , obj )
54+ }
4755 c .setDefaults ()
56+ return nil
4857}
4958
50- var _ webhook.Validator = & AzureClusterTemplate {}
59+ var _ webhook.CustomValidator = & AzureClusterTemplate {}
5160
5261// ValidateCreate implements webhook.Validator so a webhook will be registered for the type.
53- func (c * AzureClusterTemplate ) ValidateCreate () (admission.Warnings , error ) {
62+ func (c * AzureClusterTemplate ) ValidateCreate (ctx context.Context , obj runtime.Object ) (warnings admission.Warnings , err error ) {
63+ c , ok := obj .(* AzureClusterTemplate )
64+ if ! ok {
65+ return nil , fmt .Errorf ("expected *AzureClusterTemplate, got %T" , obj )
66+ }
5467 return c .validateClusterTemplate ()
5568}
5669
5770// ValidateUpdate implements webhook.Validator so a webhook will be registered for the type.
58- func (c * AzureClusterTemplate ) ValidateUpdate (oldRaw runtime.Object ) (admission.Warnings , error ) {
71+ func (c * AzureClusterTemplate ) ValidateUpdate (ctx context.Context , oldRaw runtime.Object , newRaw runtime.Object ) (warnings admission.Warnings , err error ) {
72+ c , ok := newRaw .(* AzureClusterTemplate )
73+ if ! ok {
74+ return nil , fmt .Errorf ("expected *AzureClusterTemplate, got %T" , newRaw )
75+ }
76+
5977 var allErrs field.ErrorList
6078 old := oldRaw .(* AzureClusterTemplate )
6179 if ! reflect .DeepEqual (c .Spec .Template .Spec , old .Spec .Template .Spec ) {
@@ -71,6 +89,6 @@ func (c *AzureClusterTemplate) ValidateUpdate(oldRaw runtime.Object) (admission.
7189}
7290
7391// ValidateDelete implements webhook.Validator so a webhook will be registered for the type.
74- func (c * AzureClusterTemplate ) ValidateDelete () (admission.Warnings , error ) {
92+ func (c * AzureClusterTemplate ) ValidateDelete (ctx context. Context , obj runtime. Object ) (warnings admission.Warnings , err error ) {
7593 return nil , nil
7694}
0 commit comments