@@ -149,11 +149,12 @@ func (r *OpenStackControlPlane) ValidateUpdate(old runtime.Object) (admission.Wa
149149 return nil , apierrors .NewInternalError (fmt .Errorf ("unable to convert existing object" ))
150150 }
151151
152+ var allWarn []string
152153 var allErrs field.ErrorList
153154 basePath := field .NewPath ("spec" )
154- if err := r . ValidateUpdateServices ( oldControlPlane . Spec , basePath ); err != nil {
155- allErrs = append ( allErrs , err ... )
156- }
155+
156+ allWarn , errs := r . ValidateUpdateServices ( oldControlPlane . Spec , basePath )
157+ allErrs = append ( allErrs , errs ... )
157158
158159 if err := r .ValidateTopology (basePath ); err != nil {
159160 allErrs = append (allErrs , err )
@@ -165,7 +166,7 @@ func (r *OpenStackControlPlane) ValidateUpdate(old runtime.Object) (admission.Wa
165166 r .Name , allErrs )
166167 }
167168
168- return nil , nil
169+ return allWarn , nil
169170}
170171
171172// ValidateDelete implements webhook.Validator so a webhook will be registered for the type
@@ -382,7 +383,9 @@ func (r *OpenStackControlPlane) ValidateCreateServices(basePath *field.Path) (ad
382383 errors = append (errors , err ... )
383384
384385 for rabbitmqName , rabbitmqSpec := range * r .Spec .Rabbitmq .Templates {
385- errors = append (errors , rabbitmqSpec .ValidateCreate (basePath .Child ("rabbitmq" ).Child ("template" ).Key (rabbitmqName ), r .Namespace )... )
386+ warn , errs := rabbitmqSpec .ValidateCreate (basePath .Child ("rabbitmq" ).Child ("template" ).Key (rabbitmqName ), r .Namespace )
387+ warnings = append (warnings , warn ... )
388+ errors = append (errors , errs ... )
386389 }
387390 }
388391 }
@@ -401,8 +404,9 @@ func (r *OpenStackControlPlane) ValidateCreateServices(basePath *field.Path) (ad
401404}
402405
403406// ValidateUpdateServices validating service definitions during the OpenstackControlPlane CR update
404- func (r * OpenStackControlPlane ) ValidateUpdateServices (old OpenStackControlPlaneSpec , basePath * field.Path ) field.ErrorList {
407+ func (r * OpenStackControlPlane ) ValidateUpdateServices (old OpenStackControlPlaneSpec , basePath * field.Path ) (admission. Warnings , field.ErrorList ) {
405408 var errors field.ErrorList
409+ var warnings []string
406410
407411 errors = append (errors , r .ValidateServiceDependencies (basePath )... )
408412
@@ -552,9 +556,10 @@ func (r *OpenStackControlPlane) ValidateUpdateServices(old OpenStackControlPlane
552556 }
553557 oldRabbitmqs := * old .Rabbitmq .Templates
554558 for rabbitmqName , rabbitmqSpec := range * r .Spec .Rabbitmq .Templates {
555-
556559 if oldRabbitmq , ok := oldRabbitmqs [rabbitmqName ]; ok {
557- errors = append (errors , rabbitmqSpec .ValidateUpdate (oldRabbitmq , basePath .Child ("rabbitmq" ).Child ("templates" ).Key (rabbitmqName ), r .Namespace )... )
560+ warn , errs := rabbitmqSpec .ValidateUpdate (oldRabbitmq , basePath .Child ("rabbitmq" ).Child ("template" ).Key (rabbitmqName ), r .Namespace )
561+ warnings = append (warnings , warn ... )
562+ errors = append (errors , errs ... )
558563 }
559564 }
560565 }
@@ -569,7 +574,7 @@ func (r *OpenStackControlPlane) ValidateUpdateServices(old OpenStackControlPlane
569574 }
570575 }
571576
572- return errors
577+ return warnings , errors
573578}
574579
575580// ValidateServiceDependencies ensures that when a service is enabled then all the services it depends on are also
0 commit comments