@@ -16,7 +16,7 @@ locals {
16
16
node_pool_images = try (one (data. oci_containerengine_node_pool_option . oke [* ]. sources ), [])
17
17
18
18
# Parse platform/operating system information from node pool image names
19
- parsed_images = try ({
19
+ indexed_images = try ({
20
20
for k , v in local . node_pool_images : v . image_id => merge (
21
21
try (element (regexall (" OKE-(?P<k8s_version>[0-9\\ .]+)-(?P<build>[0-9]+)" , v. source_name ), 0 ), { k8s_version = " none" }),
22
22
{
@@ -25,25 +25,26 @@ locals {
25
25
is_gpu = length (regexall (" GPU" , v. source_name )) > 0
26
26
os = trimspace (replace (element (regexall (" ^[a-zA-Z-]+" , v. source_name ), 0 ), " -" , " " ))
27
27
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 ), " ." , " " )
28
29
source_name = v.source_name
29
30
},
30
31
)
31
32
}, {})
32
33
33
34
# Create non-exclusive groupings of image IDs for intersection when selecting based on config and instance shape
34
35
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 ]
41
42
}, {
42
43
# Include groups for OS name and major version
43
44
# 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 ...
45
46
}, {
46
47
# 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 )
48
49
}), {})
49
50
}
0 commit comments