@@ -87,6 +87,33 @@ func ValidateOwnerInfo(c client.Client, atom *Atom, allErrs *field.ErrorList) {
8787
8888 if ownerInfo .Spec .Atom == nil {
8989 * allErrs = append (* allErrs , field .Required (fieldPath , "spec.Atom missing in " + ownerInfo .Name ))
90+ } else {
91+ validateMetadataTemplates (atom , ownerInfo , allErrs )
92+ }
93+ }
94+
95+ func validateMetadataTemplates (atom * Atom , ownerInfo * smoothoperatorv1.OwnerInfo , allErrs * field.ErrorList ) {
96+ var metadataTemplates []string
97+ if atom .Spec .Service .ServiceMetadataLinks != nil {
98+ metadataTemplates = atom .Spec .Service .ServiceMetadataLinks .Templates
99+ }
100+ for _ , feed := range atom .Spec .Service .DatasetFeeds {
101+ if feed .DatasetMetadataLinks != nil {
102+ metadataTemplates = append (metadataTemplates , feed .DatasetMetadataLinks .Templates ... )
103+ }
104+ }
105+
106+ if len (metadataTemplates ) > 0 {
107+ fieldPath := field .NewPath ("spec" ).Child ("service" ).Child ("ownerInfoRef" )
108+ if slices .Contains (metadataTemplates , "csw" ) && (ownerInfo .Spec .MetadataUrls == nil || ownerInfo .Spec .MetadataUrls .CSW == nil ) {
109+ * allErrs = append (* allErrs , field .Required (fieldPath , "spec.metadataUrls.csw missing in " + ownerInfo .Name ))
110+ }
111+ if slices .Contains (metadataTemplates , "html" ) && (ownerInfo .Spec .MetadataUrls == nil || ownerInfo .Spec .MetadataUrls .HTML == nil ) {
112+ * allErrs = append (* allErrs , field .Required (fieldPath , "spec.metadataUrls.html missing in " + ownerInfo .Name ))
113+ }
114+ if slices .Contains (metadataTemplates , "opensearch" ) && (ownerInfo .Spec .MetadataUrls == nil || ownerInfo .Spec .MetadataUrls .OpenSearch == nil ) {
115+ * allErrs = append (* allErrs , field .Required (fieldPath , "spec.metadataUrls.opensearch missing in " + ownerInfo .Name ))
116+ }
90117 }
91118}
92119
0 commit comments