@@ -167,6 +167,14 @@ func (r *OpenStackControlPlane) checkDepsEnabled(name string) string {
167167 r .Spec .Ovn .Enabled ) {
168168 reqs = "Galera, Memcached, RabbitMQ, Keystone, Glance, Neutron, Nova, OVN"
169169 }
170+ case "Telemetry.Autoscaling" :
171+ if ! (r .Spec .Galera .Enabled && r .Spec .Heat .Enabled && r .Spec .Rabbitmq .Enabled && r .Spec .Keystone .Enabled ) {
172+ reqs = "Galera, Heat, RabbitMQ, Keystone"
173+ }
174+ case "Telemetry.Ceilometer" :
175+ if ! (r .Spec .Rabbitmq .Enabled && r .Spec .Keystone .Enabled ) {
176+ reqs = "RabbitMQ, Keystone"
177+ }
170178 }
171179
172180 // If "reqs" is not the empty string, we have missing requirements
@@ -304,6 +312,20 @@ func (r *OpenStackControlPlane) ValidateServiceDependencies(basePath *field.Path
304312 allErrs = append (allErrs , err )
305313 }
306314 }
315+ if r .Spec .Telemetry .Enabled && r .Spec .Telemetry .Template .Ceilometer .Enabled {
316+ if depErrorMsg := r .checkDepsEnabled ("Telemetry.Ceilometer" ); depErrorMsg != "" {
317+ err := field .Invalid (basePath .Child ("telemetry" ).Child ("template" ).Child ("ceilometer" ).Child ("enabled" ),
318+ r .Spec .Telemetry .Template .Ceilometer .Enabled , depErrorMsg )
319+ allErrs = append (allErrs , err )
320+ }
321+ }
322+ if r .Spec .Telemetry .Enabled && r .Spec .Telemetry .Template .Autoscaling .Enabled {
323+ if depErrorMsg := r .checkDepsEnabled ("Telemetry.Autoscaling" ); depErrorMsg != "" {
324+ err := field .Invalid (basePath .Child ("telemetry" ).Child ("template" ).Child ("autoscaling" ).Child ("enabled" ),
325+ r .Spec .Telemetry .Template .Autoscaling .Enabled , depErrorMsg )
326+ allErrs = append (allErrs , err )
327+ }
328+ }
307329
308330 return allErrs
309331}
0 commit comments