@@ -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
@@ -384,6 +392,20 @@ func (r *OpenStackControlPlane) ValidateServiceDependencies(basePath *field.Path
384392 allErrs = append (allErrs , err )
385393 }
386394 }
395+ if r .Spec .Telemetry .Enabled && r .Spec .Telemetry .Template .Ceilometer .Enabled {
396+ if depErrorMsg := r .checkDepsEnabled ("Telemetry.Ceilometer" ); depErrorMsg != "" {
397+ err := field .Invalid (basePath .Child ("telemetry" ).Child ("template" ).Child ("ceilometer" ).Child ("enabled" ),
398+ r .Spec .Telemetry .Template .Ceilometer .Enabled , depErrorMsg )
399+ allErrs = append (allErrs , err )
400+ }
401+ }
402+ if r .Spec .Telemetry .Enabled && r .Spec .Telemetry .Template .Autoscaling .Enabled {
403+ if depErrorMsg := r .checkDepsEnabled ("Telemetry.Autoscaling" ); depErrorMsg != "" {
404+ err := field .Invalid (basePath .Child ("telemetry" ).Child ("template" ).Child ("autoscaling" ).Child ("enabled" ),
405+ r .Spec .Telemetry .Template .Autoscaling .Enabled , depErrorMsg )
406+ allErrs = append (allErrs , err )
407+ }
408+ }
387409
388410 return allErrs
389411}
0 commit comments