@@ -16,7 +16,7 @@ locals {
1616 node_pool_images = try (one (data. oci_containerengine_node_pool_option . oke [* ]. sources ), [])
1717
1818 # Parse platform/operating system information from node pool image names
19- parsed_images = try ({
19+ indexed_images = try ({
2020 for k , v in local . node_pool_images : v . image_id => merge (
2121 try (element (regexall (" OKE-(?P<k8s_version>[0-9\\ .]+)-(?P<build>[0-9]+)" , v. source_name ), 0 ), { k8s_version = " none" }),
2222 {
@@ -25,25 +25,26 @@ locals {
2525 is_gpu = length (regexall (" GPU" , v. source_name )) > 0
2626 os = trimspace (replace (element (regexall (" ^[a-zA-Z-]+" , v. source_name ), 0 ), " -" , " " ))
2727 os_version = element (regexall (" [0-9\\ .]+" , v. source_name ), 0 )
28+ sort_key = replace (try (join (" ." , regex (" -([0-9]{4}\\ .[01][0-9].[0-9]{1,2}).*?-([0-9]+)$" , v. source_name )), v. source_name ), " ." , " " )
2829 source_name = v.source_name
2930 },
3031 )
3132 }, {})
3233
3334 # Create non-exclusive groupings of image IDs for intersection when selecting based on config and instance shape
3435 image_ids = try (merge ({
35- x86_64 = [for k , v in local . parsed_images : k if v . arch == " x86_64" ]
36- aarch64 = [for k , v in local . parsed_images : k if v . arch == " aarch64" ]
37- oke = [for k , v in local . parsed_images : k if v . image_type == " oke" && contains (local. k8s_versions_only , v. k8s_version )]
38- platform = [for k , v in local . parsed_images : k if v . image_type == " platform" ]
39- gpu = [for k , v in local . parsed_images : k if v . is_gpu ]
40- nongpu = [for k , v in local . parsed_images : k if ! v . is_gpu ]
36+ x86_64 = [for k , v in local . indexed_images : k if v . arch == " x86_64" ]
37+ aarch64 = [for k , v in local . indexed_images : k if v . arch == " aarch64" ]
38+ oke = [for k , v in local . indexed_images : k if v . image_type == " oke" && contains (local. k8s_versions_only , v. k8s_version )]
39+ platform = [for k , v in local . indexed_images : k if v . image_type == " platform" ]
40+ gpu = [for k , v in local . indexed_images : k if v . is_gpu ]
41+ nongpu = [for k , v in local . indexed_images : k if ! v . is_gpu ]
4142 }, {
4243 # Include groups for OS name and major version
4344 # https://developer.hashicorp.com/terraform/language/expressions/for#grouping-results
44- for k , v in local . parsed_images : format (" %v %v" , v. os , split (" ." , v. os_version )[0 ]) => k ...
45+ for k , v in local . indexed_images : format (" %v %v" , v. os , split (" ." , v. os_version )[0 ]) => k ...
4546 }, {
4647 # Include groups for referenced Kubernetes versions
47- for k , v in local . parsed_images : format (" %v" , v. k8s_version ) => k ... if contains (local. k8s_versions_only , v. k8s_version )
48+ for k , v in local . indexed_images : format (" %v" , v. k8s_version ) => k ... if contains (local. k8s_versions_only , v. k8s_version )
4849 }), {})
4950}
0 commit comments