| 
9 | 9 |   Parameters:  | 
10 | 10 |     - Key: awsEksClusterLatestVersion  | 
11 | 11 |       Required: true  | 
12 |  | -      DefaultValue: "1.29"  | 
 | 12 | +      DefaultValue: "1.29"  # e.g. "1.29", can also be "1.29.4" or "1.29.4.3"  | 
13 | 13 |   PrimaryTable: aws_eks_cluster  | 
14 | 14 |   QueryToExecute: |  | 
 | 15 | +    WITH cluster_versions AS (  | 
 | 16 | +      SELECT  | 
 | 17 | +        -- Parse up to four segments from the cluster's 'version' field  | 
 | 18 | +        COALESCE(NULLIF(split_part(version, '.', 1), ''), '0')::int AS major,  | 
 | 19 | +        COALESCE(NULLIF(split_part(version, '.', 2), ''), '0')::int AS minor,  | 
 | 20 | +        COALESCE(NULLIF(split_part(version, '.', 3), ''), '0')::int AS patch,  | 
 | 21 | +        COALESCE(NULLIF(split_part(version, '.', 4), ''), '0')::int AS sub,  | 
 | 22 | +        version,  | 
 | 23 | +        arn,  | 
 | 24 | +        platform_integration_id,  | 
 | 25 | +        platform_resource_id,  | 
 | 26 | +        title,  | 
 | 27 | +        region,  | 
 | 28 | +        account_id  | 
 | 29 | +      FROM aws_eks_cluster  | 
 | 30 | +    ),  | 
 | 31 | +
  | 
 | 32 | +    param_versions AS (  | 
 | 33 | +      SELECT  | 
 | 34 | +        -- Parse up to four segments from the param {{.awsEksClusterLatestVersion}}  | 
 | 35 | +        COALESCE(NULLIF(split_part('{{.awsEksClusterLatestVersion}}', '.', 1), ''), '0')::int AS major,  | 
 | 36 | +        COALESCE(NULLIF(split_part('{{.awsEksClusterLatestVersion}}', '.', 2), ''), '0')::int AS minor,  | 
 | 37 | +        COALESCE(NULLIF(split_part('{{.awsEksClusterLatestVersion}}', '.', 3), ''), '0')::int AS patch,  | 
 | 38 | +        COALESCE(NULLIF(split_part('{{.awsEksClusterLatestVersion}}', '.', 4), ''), '0')::int AS sub  | 
 | 39 | +    )  | 
 | 40 | +
  | 
15 | 41 |     SELECT  | 
16 | 42 |       arn AS resource,  | 
17 | 43 |       platform_integration_id,  | 
18 | 44 |       platform_resource_id,  | 
19 | 45 |       CASE  | 
20 |  | -        WHEN (version)::decimal >= '{{.awsEksClusterLatestVersion}}'::decimal THEN 'ok'  | 
 | 46 | +        WHEN (  | 
 | 47 | +          -- Convert cluster version to a big integer  | 
 | 48 | +          cluster_versions.major * 1000000000 +  | 
 | 49 | +          cluster_versions.minor * 1000000 +  | 
 | 50 | +          cluster_versions.patch * 1000 +  | 
 | 51 | +          cluster_versions.sub  | 
 | 52 | +        ) >= (  | 
 | 53 | +          -- Convert param version to a big integer  | 
 | 54 | +          param_versions.major * 1000000000 +  | 
 | 55 | +          param_versions.minor * 1000000 +  | 
 | 56 | +          param_versions.patch * 1000 +  | 
 | 57 | +          param_versions.sub  | 
 | 58 | +        )  | 
 | 59 | +        THEN 'ok'  | 
21 | 60 |         ELSE 'alarm'  | 
22 | 61 |       END AS status,  | 
23 | 62 |       CASE  | 
24 |  | -        WHEN (version)::decimal >= '{{.awsEksClusterLatestVersion}}'::decimal THEN title || ' runs on a supported kubernetes version.'  | 
25 |  | -        ELSE title || ' is running on version ' || version || ' which is not supported. supported versions are >= ' || '{{.awsEksClusterLatestVersion}}'::decimal  | 
 | 63 | +        WHEN (  | 
 | 64 | +          cluster_versions.major * 1000000000 +  | 
 | 65 | +          cluster_versions.minor * 1000000 +  | 
 | 66 | +          cluster_versions.patch * 1000 +  | 
 | 67 | +          cluster_versions.sub  | 
 | 68 | +        ) >= (  | 
 | 69 | +          param_versions.major * 1000000000 +  | 
 | 70 | +          param_versions.minor * 1000000 +  | 
 | 71 | +          param_versions.patch * 1000 +  | 
 | 72 | +          param_versions.sub  | 
 | 73 | +        )  | 
 | 74 | +        THEN title || ' runs on a supported Kubernetes version.'  | 
 | 75 | +        ELSE  | 
 | 76 | +          title || ' is running on version ' || cluster_versions.version ||  | 
 | 77 | +          ' which is not supported. Supported versions are >= ' || '{{.awsEksClusterLatestVersion}}'  | 
26 | 78 |       END AS reason,  | 
27 | 79 |       region,  | 
28 | 80 |       account_id  | 
29 |  | -    FROM  | 
30 |  | -      aws_eks_cluster;  | 
 | 81 | +    FROM cluster_versions  | 
 | 82 | +    CROSS JOIN param_versions;  | 
31 | 83 | Severity: low  | 
32 | 84 | Tags:  | 
33 | 85 |   platform_score_cloud_service_name:  | 
 | 
0 commit comments