in pkg/apis/stackconfigpolicy/v1alpha1/webhook.go [101:144]
func validSettings(policy *StackConfigPolicy) field.ErrorList {
settingsCount := 0
if policy.Spec.Elasticsearch.ClusterSettings != nil {
settingsCount += len(policy.Spec.Elasticsearch.ClusterSettings.Data)
}
if policy.Spec.Elasticsearch.SnapshotRepositories != nil {
settingsCount += len(policy.Spec.Elasticsearch.SnapshotRepositories.Data)
}
if policy.Spec.Elasticsearch.SnapshotLifecyclePolicies != nil {
settingsCount += len(policy.Spec.Elasticsearch.SnapshotLifecyclePolicies.Data)
}
if policy.Spec.Elasticsearch.SecurityRoleMappings != nil {
settingsCount += len(policy.Spec.Elasticsearch.SecurityRoleMappings.Data)
}
if policy.Spec.Elasticsearch.IndexLifecyclePolicies != nil {
settingsCount += len(policy.Spec.Elasticsearch.IndexLifecyclePolicies.Data)
}
if policy.Spec.Elasticsearch.IngestPipelines != nil {
settingsCount += len(policy.Spec.Elasticsearch.IngestPipelines.Data)
}
if policy.Spec.Elasticsearch.IndexTemplates.ComponentTemplates != nil {
settingsCount += len(policy.Spec.Elasticsearch.IndexTemplates.ComponentTemplates.Data)
}
if policy.Spec.Elasticsearch.IndexTemplates.ComposableIndexTemplates != nil {
settingsCount += len(policy.Spec.Elasticsearch.IndexTemplates.ComposableIndexTemplates.Data)
}
if policy.Spec.Elasticsearch.Config != nil {
settingsCount += len(policy.Spec.Elasticsearch.Config.Data)
}
if policy.Spec.Elasticsearch.SecretMounts != nil {
settingsCount += len(policy.Spec.Elasticsearch.SecretMounts)
}
// Check if mountpaths in the SecretMounts are unique
if !uniqueSecretMountPaths(policy.Spec.Elasticsearch.SecretMounts) {
return field.ErrorList{field.Invalid(field.NewPath("spec").Child("elasticsearch").Child("secretMounts"), policy.Spec.Elasticsearch.SecretMounts, "SecretMounts cannot have duplicate mount paths")}
}
if policy.Spec.Kibana.Config != nil {
settingsCount += len(policy.Spec.Kibana.Config.Data)
}
if settingsCount == 0 {
return field.ErrorList{field.Required(field.NewPath("spec").Child("elasticsearch"), "One out of Elasticsearch or Kibana settings is mandatory, both must not be empty")}
}
return nil
}