@@ -365,29 +365,63 @@ variable "addons" {
365365 default = {}
366366
367367 # #######################################################################################################################
368- # OCP AI Addon version validation
368+ # OCP addons version validation
369369 # #######################################################################################################################
370370
371371 validation {
372- condition = (
373- try (var. addons [" openshift-ai" ]. version , null ) == null ||
374- (
375- contains (keys (local. ocp_ai_addon_supported_versions ), try (var. addons [" openshift-ai" ]. version , " " ) != null ? try (var. addons [" openshift-ai" ]. version , " " ) : " " ) &&
372+ condition = alltrue ([
373+ for addon_name , addon_cfg in var . addons : (
374+ try (addon_cfg. version , null ) == null ? true :
375+ contains (keys (local. ocp_all_addon_versions ), addon_name) &&
376+ contains (keys (local. ocp_all_addon_versions [addon_name ]), tostring (addon_cfg. version )) &&
377+ (tonumber (split (" ." , local. ocp_version_num )[0 ]) * 100 + tonumber (split (" ." , local. ocp_version_num )[1 ])) >=
376378 (
377- local. ocp_version_num >= tonumber (regexall (" \\ d+\\ .\\ d+" , split (" " , lookup (local. ocp_ai_addon_supported_versions , try (var. addons [" openshift-ai" ]. version , " " ) != null ? try (var. addons [" openshift-ai" ]. version , " " ) : " " , { supported_openshift_range = " 0.0 0.0" }). supported_openshift_range )[0 ])[0 ])
379+ (
380+ tonumber (split (" ." , regex (" \\ d+\\ .\\ d+" , split (" " , lookup (local. ocp_all_addon_versions [addon_name ], tostring (addon_cfg. version ), { " supported_openshift_range" = " 0.0 0.0" }). supported_openshift_range )[0 ]))[0 ]) * 100 +
381+ tonumber (split (" ." , regex (" \\ d+\\ .\\ d+" , split (" " , lookup (local. ocp_all_addon_versions [addon_name ], tostring (addon_cfg. version ), { " supported_openshift_range" = " 0.0 0.0" }). supported_openshift_range )[0 ]))[1 ])
382+ )
378383 ) &&
379384 (
380- local. ocp_version_num < tonumber (regexall (" \\ d+\\ .\\ d+" , split (" " , lookup (local. ocp_ai_addon_supported_versions , try (var. addons [" openshift-ai" ]. version , " " ) != null ? try (var. addons [" openshift-ai" ]. version , " " ) : " " , { supported_openshift_range = " 0.0 0.0" }). supported_openshift_range )[1 ])[0 ])
385+ (tonumber (split (" ." , local. ocp_version_num )[0 ]) * 100 + tonumber (split (" ." , local. ocp_version_num )[1 ])) <
386+ (
387+ (
388+ tonumber (split (" ." , regex (" \\ d+\\ .\\ d+" , split (" " , lookup (local. ocp_all_addon_versions [addon_name ], tostring (addon_cfg. version ), { " supported_openshift_range" = " 0.0 0.0" }). supported_openshift_range )[1 ]))[0 ]) * 100 +
389+ tonumber (split (" ." , regex (" \\ d+\\ .\\ d+" , split (" " , lookup (local. ocp_all_addon_versions [addon_name ], tostring (addon_cfg. version ), { " supported_openshift_range" = " 0.0 0.0" }). supported_openshift_range )[1 ]))[1 ])
390+ )
391+ )
381392 )
382393 )
383- )
394+ ] )
384395
385- error_message = (
386- try (var. addons [" openshift-ai" ]. version , null ) != null ?
387- (contains (keys (local. ocp_ai_addon_supported_versions ), try (var. addons [" openshift-ai" ]. version , " " )) ?
388- format (" OCP AI add-on version %s requires OCP version %s" , try (var. addons [" openshift-ai" ]. version , " " ), lookup (local. ocp_ai_addon_supported_versions , try (var. addons [" openshift-ai" ]. version , " " ), { supported_openshift_range = " " }). supported_openshift_range ) :
389- format (" OCP AI add-on version %s is not supported." , try (var. addons [" openshift-ai" ]. version , " " ))) : " Invalid OCP AI configuration."
390- )
396+ error_message = join (" \n " , flatten ([
397+ " Addon validation failed:" ,
398+ [
399+ for addon_name , addon_cfg in var . addons : (
400+ try (addon_cfg. version , null ) == null ? [] :
401+ ! contains (keys (local. ocp_all_addon_versions ), addon_name) ?
402+ [" - Addon '${ addon_name } ' is not recognized." ] :
403+ ! contains (keys (local. ocp_all_addon_versions [addon_name ]), tostring (addon_cfg. version )) ?
404+ [" - Addon '${ addon_name } ' version '${ addon_cfg . version } ' is not supported." ] :
405+
406+ (
407+ (tonumber (split (" ." , local. ocp_version_num )[0 ]) * 100 + tonumber (split (" ." , local. ocp_version_num )[1 ])) <
408+ (
409+ tonumber (split (" ." , regex (" \\ d+\\ .\\ d+" , split (" " , lookup (local. ocp_all_addon_versions [addon_name ], tostring (addon_cfg. version ), { " supported_openshift_range" = " 0.0 0.0" }). supported_openshift_range )[0 ]))[0 ]) * 100 +
410+ tonumber (split (" ." , regex (" \\ d+\\ .\\ d+" , split (" " , lookup (local. ocp_all_addon_versions [addon_name ], tostring (addon_cfg. version ), { " supported_openshift_range" = " 0.0 0.0" }). supported_openshift_range )[0 ]))[1 ])
411+ ) ||
412+ (
413+ (tonumber (split (" ." , local. ocp_version_num )[0 ]) * 100 + tonumber (split (" ." , local. ocp_version_num )[1 ])) >=
414+ (
415+ tonumber (split (" ." , regex (" \\ d+\\ .\\ d+" , split (" " , lookup (local. ocp_all_addon_versions [addon_name ], tostring (addon_cfg. version ), { " supported_openshift_range" = " 0.0 0.0" }). supported_openshift_range )[1 ]))[0 ]) * 100 +
416+ tonumber (split (" ." , regex (" \\ d+\\ .\\ d+" , split (" " , lookup (local. ocp_all_addon_versions [addon_name ], tostring (addon_cfg. version ), { " supported_openshift_range" = " 0.0 0.0" }). supported_openshift_range )[1 ]))[1 ])
417+ )
418+ )
419+ ) ?
420+ [" - Addon '${ addon_name } ' version '${ addon_cfg . version } ' requires OCP version '${ lookup (local. ocp_all_addon_versions [addon_name ], tostring (addon_cfg. version ), { " supported_openshift_range" = " 0.0 0.0" }). supported_openshift_range } '" ] :
421+ []
422+ )
423+ ]
424+ ]))
391425 }
392426
393427 validation {
0 commit comments