func validSettings()

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
}