From 87e30bccbf989f0a284e2dc508588113ed08b96a Mon Sep 17 00:00:00 2001 From: Gustavo Diaz Date: Thu, 25 Sep 2025 05:32:27 +0000 Subject: [PATCH 1/2] Ready condition migration for eks controller --- apis/v1alpha1/ack-generate-metadata.yaml | 8 +-- .../eks.services.k8s.aws_accessentries.yaml | 2 +- .../bases/eks.services.k8s.aws_addons.yaml | 2 +- .../bases/eks.services.k8s.aws_clusters.yaml | 2 +- .../eks.services.k8s.aws_fargateprofiles.yaml | 2 +- ...vices.k8s.aws_identityproviderconfigs.yaml | 2 +- .../eks.services.k8s.aws_nodegroups.yaml | 2 +- ...vices.k8s.aws_podidentityassociations.yaml | 2 +- go.mod | 2 + go.sum | 4 +- .../eks.services.k8s.aws_accessentries.yaml | 2 +- helm/crds/eks.services.k8s.aws_addons.yaml | 2 +- helm/crds/eks.services.k8s.aws_clusters.yaml | 2 +- .../eks.services.k8s.aws_fargateprofiles.yaml | 2 +- ...vices.k8s.aws_identityproviderconfigs.yaml | 2 +- .../crds/eks.services.k8s.aws_nodegroups.yaml | 2 +- ...vices.k8s.aws_podidentityassociations.yaml | 2 +- .../services.k8s.aws_adoptedresources.yaml | 2 +- helm/crds/services.k8s.aws_fieldexports.yaml | 2 +- pkg/resource/access_entry/references.go | 14 ++--- pkg/resource/addon/references.go | 27 +++++----- pkg/resource/cluster/references.go | 53 ++++++++++--------- pkg/resource/fargate_profile/references.go | 40 +++++++------- .../identity_provider_config/references.go | 14 ++--- pkg/resource/nodegroup/references.go | 53 ++++++++++--------- pkg/resource/nodegroup/sdk.go | 2 +- .../pod_identity_association/references.go | 27 +++++----- test/e2e/requirements.txt | 2 +- test/e2e/tests/test_cluster.py | 4 +- test/e2e/tests/test_cluster_automode.py | 4 +- test/e2e/tests/test_fargate_profile.py | 4 +- .../tests/test_identity_provider_config.py | 4 +- test/e2e/tests/test_nodegroup.py | 4 +- 33 files changed, 162 insertions(+), 136 deletions(-) diff --git a/apis/v1alpha1/ack-generate-metadata.yaml b/apis/v1alpha1/ack-generate-metadata.yaml index 53bd7ecb..54a8aa19 100755 --- a/apis/v1alpha1/ack-generate-metadata.yaml +++ b/apis/v1alpha1/ack-generate-metadata.yaml @@ -1,8 +1,8 @@ ack_generate_info: - build_date: "2025-09-19T17:11:39Z" - build_hash: 6b4211163dcc34776b01da9a18217bac0f4103fd - go_version: go1.24.6 - version: v0.52.0 + build_date: "2025-09-25T05:31:06Z" + build_hash: 9c388d9668ea19d0b1b65566d492c4f67c6e64c8 + go_version: go1.24.7 + version: 9c388d9 api_directory_checksum: 2b5e65a1d5f0a032d51209f925b714aff4b6dc96 api_version: v1alpha1 aws_sdk_go_version: v1.37.0 diff --git a/config/crd/bases/eks.services.k8s.aws_accessentries.yaml b/config/crd/bases/eks.services.k8s.aws_accessentries.yaml index 9935fe1d..a7b29415 100644 --- a/config/crd/bases/eks.services.k8s.aws_accessentries.yaml +++ b/config/crd/bases/eks.services.k8s.aws_accessentries.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.16.2 + controller-gen.kubebuilder.io/version: v0.19.0 name: accessentries.eks.services.k8s.aws spec: group: eks.services.k8s.aws diff --git a/config/crd/bases/eks.services.k8s.aws_addons.yaml b/config/crd/bases/eks.services.k8s.aws_addons.yaml index 7492181c..57dbe04a 100644 --- a/config/crd/bases/eks.services.k8s.aws_addons.yaml +++ b/config/crd/bases/eks.services.k8s.aws_addons.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.16.2 + controller-gen.kubebuilder.io/version: v0.19.0 name: addons.eks.services.k8s.aws spec: group: eks.services.k8s.aws diff --git a/config/crd/bases/eks.services.k8s.aws_clusters.yaml b/config/crd/bases/eks.services.k8s.aws_clusters.yaml index 02c02009..93f40bad 100644 --- a/config/crd/bases/eks.services.k8s.aws_clusters.yaml +++ b/config/crd/bases/eks.services.k8s.aws_clusters.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.16.2 + controller-gen.kubebuilder.io/version: v0.19.0 name: clusters.eks.services.k8s.aws spec: group: eks.services.k8s.aws diff --git a/config/crd/bases/eks.services.k8s.aws_fargateprofiles.yaml b/config/crd/bases/eks.services.k8s.aws_fargateprofiles.yaml index adcb850e..ce964289 100644 --- a/config/crd/bases/eks.services.k8s.aws_fargateprofiles.yaml +++ b/config/crd/bases/eks.services.k8s.aws_fargateprofiles.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.16.2 + controller-gen.kubebuilder.io/version: v0.19.0 name: fargateprofiles.eks.services.k8s.aws spec: group: eks.services.k8s.aws diff --git a/config/crd/bases/eks.services.k8s.aws_identityproviderconfigs.yaml b/config/crd/bases/eks.services.k8s.aws_identityproviderconfigs.yaml index 9315444d..b70d4231 100644 --- a/config/crd/bases/eks.services.k8s.aws_identityproviderconfigs.yaml +++ b/config/crd/bases/eks.services.k8s.aws_identityproviderconfigs.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.16.2 + controller-gen.kubebuilder.io/version: v0.19.0 name: identityproviderconfigs.eks.services.k8s.aws spec: group: eks.services.k8s.aws diff --git a/config/crd/bases/eks.services.k8s.aws_nodegroups.yaml b/config/crd/bases/eks.services.k8s.aws_nodegroups.yaml index 0875f9b6..8695676a 100644 --- a/config/crd/bases/eks.services.k8s.aws_nodegroups.yaml +++ b/config/crd/bases/eks.services.k8s.aws_nodegroups.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.16.2 + controller-gen.kubebuilder.io/version: v0.19.0 name: nodegroups.eks.services.k8s.aws spec: group: eks.services.k8s.aws diff --git a/config/crd/bases/eks.services.k8s.aws_podidentityassociations.yaml b/config/crd/bases/eks.services.k8s.aws_podidentityassociations.yaml index 527b2762..26d0caed 100644 --- a/config/crd/bases/eks.services.k8s.aws_podidentityassociations.yaml +++ b/config/crd/bases/eks.services.k8s.aws_podidentityassociations.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.16.2 + controller-gen.kubebuilder.io/version: v0.19.0 name: podidentityassociations.eks.services.k8s.aws spec: group: eks.services.k8s.aws diff --git a/go.mod b/go.mod index 06329231..b5eea9c3 100644 --- a/go.mod +++ b/go.mod @@ -94,3 +94,5 @@ require ( sigs.k8s.io/structured-merge-diff/v4 v4.4.2 // indirect sigs.k8s.io/yaml v1.4.0 // indirect ) + +replace github.com/aws-controllers-k8s/runtime => github.com/gustavodiaz7722/ack-runtime v0.57.0 diff --git a/go.sum b/go.sum index bf45dbfa..fce48637 100644 --- a/go.sum +++ b/go.sum @@ -4,8 +4,6 @@ github.com/aws-controllers-k8s/iam-controller v1.3.1 h1:/3yH3tAtSVAAt2ulIqsmutjW github.com/aws-controllers-k8s/iam-controller v1.3.1/go.mod h1:7nZzMtEN8xEL5fYhL9FKkBhqoP4QMmMp5x5dXDGwfYM= github.com/aws-controllers-k8s/kms-controller v1.0.9 h1:GZHSnuZBoWp9r6RaJ3siyDn5BRhDuaZJXtdBKeAiLSw= github.com/aws-controllers-k8s/kms-controller v1.0.9/go.mod h1:Pnz0d5sly7dUgmYMDJWSRIKASOujJFi/b8N2q1qCLqU= -github.com/aws-controllers-k8s/runtime v0.52.0 h1:Q5UIAn6SSBr60t/DiU/zr6NLBlUuK2AG3yy2ma/9gDU= -github.com/aws-controllers-k8s/runtime v0.52.0/go.mod h1:OkUJN+Ds799JLYZsMJrO2vDJ4snxUeHK2MgrQHbU+Qc= github.com/aws/aws-sdk-go v1.55.5 h1:KKUZBfBoyqy5d3swXyiC7Q76ic40rYcbqH7qjh59kzU= github.com/aws/aws-sdk-go v1.55.5/go.mod h1:eRwEWoyTWFMVYVQzKMNHWP5/RV4xIUGMQfXQHfHkpNU= github.com/aws/aws-sdk-go-v2 v1.37.0 h1:YtCOESR/pN4j5oA7cVHSfOwIcuh/KwHC4DOSXFbv5F0= @@ -90,6 +88,8 @@ github.com/google/pprof v0.0.0-20241029153458-d1b30febd7db h1:097atOisP2aRj7vFgY github.com/google/pprof v0.0.0-20241029153458-d1b30febd7db/go.mod h1:vavhavw2zAxS5dIdcRluK6cSGGPlZynqzFM8NdvU144= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/gustavodiaz7722/ack-runtime v0.57.0 h1:85zJyvdPpzOTaWE0icljJcMRf0qlP0oWdOT05hMZ6Z0= +github.com/gustavodiaz7722/ack-runtime v0.57.0/go.mod h1:OkUJN+Ds799JLYZsMJrO2vDJ4snxUeHK2MgrQHbU+Qc= github.com/itchyny/gojq v0.12.6 h1:VjaFn59Em2wTxDNGcrRkDK9ZHMNa8IksOgL13sLL4d0= github.com/itchyny/gojq v0.12.6/go.mod h1:ZHrkfu7A+RbZLy5J1/JKpS4poEqrzItSTGDItqsfP0A= github.com/itchyny/timefmt-go v0.1.3 h1:7M3LGVDsqcd0VZH2U+x393obrzZisp7C0uEe921iRkU= diff --git a/helm/crds/eks.services.k8s.aws_accessentries.yaml b/helm/crds/eks.services.k8s.aws_accessentries.yaml index 9935fe1d..a7b29415 100644 --- a/helm/crds/eks.services.k8s.aws_accessentries.yaml +++ b/helm/crds/eks.services.k8s.aws_accessentries.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.16.2 + controller-gen.kubebuilder.io/version: v0.19.0 name: accessentries.eks.services.k8s.aws spec: group: eks.services.k8s.aws diff --git a/helm/crds/eks.services.k8s.aws_addons.yaml b/helm/crds/eks.services.k8s.aws_addons.yaml index 075f86c5..d73716d8 100644 --- a/helm/crds/eks.services.k8s.aws_addons.yaml +++ b/helm/crds/eks.services.k8s.aws_addons.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.16.2 + controller-gen.kubebuilder.io/version: v0.19.0 name: addons.eks.services.k8s.aws spec: group: eks.services.k8s.aws diff --git a/helm/crds/eks.services.k8s.aws_clusters.yaml b/helm/crds/eks.services.k8s.aws_clusters.yaml index 411cc3fb..dade39f9 100644 --- a/helm/crds/eks.services.k8s.aws_clusters.yaml +++ b/helm/crds/eks.services.k8s.aws_clusters.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.16.2 + controller-gen.kubebuilder.io/version: v0.19.0 name: clusters.eks.services.k8s.aws spec: group: eks.services.k8s.aws diff --git a/helm/crds/eks.services.k8s.aws_fargateprofiles.yaml b/helm/crds/eks.services.k8s.aws_fargateprofiles.yaml index adcb850e..ce964289 100644 --- a/helm/crds/eks.services.k8s.aws_fargateprofiles.yaml +++ b/helm/crds/eks.services.k8s.aws_fargateprofiles.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.16.2 + controller-gen.kubebuilder.io/version: v0.19.0 name: fargateprofiles.eks.services.k8s.aws spec: group: eks.services.k8s.aws diff --git a/helm/crds/eks.services.k8s.aws_identityproviderconfigs.yaml b/helm/crds/eks.services.k8s.aws_identityproviderconfigs.yaml index 9315444d..b70d4231 100644 --- a/helm/crds/eks.services.k8s.aws_identityproviderconfigs.yaml +++ b/helm/crds/eks.services.k8s.aws_identityproviderconfigs.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.16.2 + controller-gen.kubebuilder.io/version: v0.19.0 name: identityproviderconfigs.eks.services.k8s.aws spec: group: eks.services.k8s.aws diff --git a/helm/crds/eks.services.k8s.aws_nodegroups.yaml b/helm/crds/eks.services.k8s.aws_nodegroups.yaml index 0875f9b6..8695676a 100644 --- a/helm/crds/eks.services.k8s.aws_nodegroups.yaml +++ b/helm/crds/eks.services.k8s.aws_nodegroups.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.16.2 + controller-gen.kubebuilder.io/version: v0.19.0 name: nodegroups.eks.services.k8s.aws spec: group: eks.services.k8s.aws diff --git a/helm/crds/eks.services.k8s.aws_podidentityassociations.yaml b/helm/crds/eks.services.k8s.aws_podidentityassociations.yaml index 6acc2f2a..170cdced 100644 --- a/helm/crds/eks.services.k8s.aws_podidentityassociations.yaml +++ b/helm/crds/eks.services.k8s.aws_podidentityassociations.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.16.2 + controller-gen.kubebuilder.io/version: v0.19.0 name: podidentityassociations.eks.services.k8s.aws spec: group: eks.services.k8s.aws diff --git a/helm/crds/services.k8s.aws_adoptedresources.yaml b/helm/crds/services.k8s.aws_adoptedresources.yaml index b7be3224..d6cdd10f 100644 --- a/helm/crds/services.k8s.aws_adoptedresources.yaml +++ b/helm/crds/services.k8s.aws_adoptedresources.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.16.2 + controller-gen.kubebuilder.io/version: v0.19.0 name: adoptedresources.services.k8s.aws spec: group: services.k8s.aws diff --git a/helm/crds/services.k8s.aws_fieldexports.yaml b/helm/crds/services.k8s.aws_fieldexports.yaml index 49b4f383..6e2c61e6 100644 --- a/helm/crds/services.k8s.aws_fieldexports.yaml +++ b/helm/crds/services.k8s.aws_fieldexports.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.16.2 + controller-gen.kubebuilder.io/version: v0.19.0 name: fieldexports.services.k8s.aws spec: group: services.k8s.aws diff --git a/pkg/resource/access_entry/references.go b/pkg/resource/access_entry/references.go index fb6e80f6..9b237461 100644 --- a/pkg/resource/access_entry/references.go +++ b/pkg/resource/access_entry/references.go @@ -24,6 +24,7 @@ import ( "sigs.k8s.io/controller-runtime/pkg/client" ackv1alpha1 "github.com/aws-controllers-k8s/runtime/apis/core/v1alpha1" + ackcondition "github.com/aws-controllers-k8s/runtime/pkg/condition" ackerr "github.com/aws-controllers-k8s/runtime/pkg/errors" acktypes "github.com/aws-controllers-k8s/runtime/pkg/types" @@ -132,8 +133,9 @@ func getReferencedResourceState_Cluster( } var refResourceTerminal bool for _, cond := range obj.Status.Conditions { - if cond.Type == ackv1alpha1.ConditionTypeTerminal && - cond.Status == corev1.ConditionTrue { + if cond.Type == ackv1alpha1.ConditionTypeReady && + cond.Status == corev1.ConditionFalse && + *cond.Reason == ackcondition.TerminalReason { return ackerr.ResourceReferenceTerminalFor( "Cluster", namespace, name) @@ -144,14 +146,14 @@ func getReferencedResourceState_Cluster( "Cluster", namespace, name) } - var refResourceSynced bool + var refResourceReady bool for _, cond := range obj.Status.Conditions { - if cond.Type == ackv1alpha1.ConditionTypeResourceSynced && + if cond.Type == ackv1alpha1.ConditionTypeReady && cond.Status == corev1.ConditionTrue { - refResourceSynced = true + refResourceReady = true } } - if !refResourceSynced { + if !refResourceReady { return ackerr.ResourceReferenceNotSyncedFor( "Cluster", namespace, name) diff --git a/pkg/resource/addon/references.go b/pkg/resource/addon/references.go index c3617d1a..4d53f632 100644 --- a/pkg/resource/addon/references.go +++ b/pkg/resource/addon/references.go @@ -25,6 +25,7 @@ import ( iamapitypes "github.com/aws-controllers-k8s/iam-controller/apis/v1alpha1" ackv1alpha1 "github.com/aws-controllers-k8s/runtime/apis/core/v1alpha1" + ackcondition "github.com/aws-controllers-k8s/runtime/pkg/condition" ackerr "github.com/aws-controllers-k8s/runtime/pkg/errors" acktypes "github.com/aws-controllers-k8s/runtime/pkg/types" @@ -150,8 +151,9 @@ func getReferencedResourceState_Cluster( } var refResourceTerminal bool for _, cond := range obj.Status.Conditions { - if cond.Type == ackv1alpha1.ConditionTypeTerminal && - cond.Status == corev1.ConditionTrue { + if cond.Type == ackv1alpha1.ConditionTypeReady && + cond.Status == corev1.ConditionFalse && + *cond.Reason == ackcondition.TerminalReason { return ackerr.ResourceReferenceTerminalFor( "Cluster", namespace, name) @@ -162,14 +164,14 @@ func getReferencedResourceState_Cluster( "Cluster", namespace, name) } - var refResourceSynced bool + var refResourceReady bool for _, cond := range obj.Status.Conditions { - if cond.Type == ackv1alpha1.ConditionTypeResourceSynced && + if cond.Type == ackv1alpha1.ConditionTypeReady && cond.Status == corev1.ConditionTrue { - refResourceSynced = true + refResourceReady = true } } - if !refResourceSynced { + if !refResourceReady { return ackerr.ResourceReferenceNotSyncedFor( "Cluster", namespace, name) @@ -233,8 +235,9 @@ func getReferencedResourceState_Role( } var refResourceTerminal bool for _, cond := range obj.Status.Conditions { - if cond.Type == ackv1alpha1.ConditionTypeTerminal && - cond.Status == corev1.ConditionTrue { + if cond.Type == ackv1alpha1.ConditionTypeReady && + cond.Status == corev1.ConditionFalse && + *cond.Reason == ackcondition.TerminalReason { return ackerr.ResourceReferenceTerminalFor( "Role", namespace, name) @@ -245,14 +248,14 @@ func getReferencedResourceState_Role( "Role", namespace, name) } - var refResourceSynced bool + var refResourceReady bool for _, cond := range obj.Status.Conditions { - if cond.Type == ackv1alpha1.ConditionTypeResourceSynced && + if cond.Type == ackv1alpha1.ConditionTypeReady && cond.Status == corev1.ConditionTrue { - refResourceSynced = true + refResourceReady = true } } - if !refResourceSynced { + if !refResourceReady { return ackerr.ResourceReferenceNotSyncedFor( "Role", namespace, name) diff --git a/pkg/resource/cluster/references.go b/pkg/resource/cluster/references.go index 122f6b8c..43b9327b 100644 --- a/pkg/resource/cluster/references.go +++ b/pkg/resource/cluster/references.go @@ -27,6 +27,7 @@ import ( iamapitypes "github.com/aws-controllers-k8s/iam-controller/apis/v1alpha1" kmsapitypes "github.com/aws-controllers-k8s/kms-controller/apis/v1alpha1" ackv1alpha1 "github.com/aws-controllers-k8s/runtime/apis/core/v1alpha1" + ackcondition "github.com/aws-controllers-k8s/runtime/pkg/condition" ackerr "github.com/aws-controllers-k8s/runtime/pkg/errors" acktypes "github.com/aws-controllers-k8s/runtime/pkg/types" @@ -209,8 +210,9 @@ func getReferencedResourceState_Key( } var refResourceTerminal bool for _, cond := range obj.Status.Conditions { - if cond.Type == ackv1alpha1.ConditionTypeTerminal && - cond.Status == corev1.ConditionTrue { + if cond.Type == ackv1alpha1.ConditionTypeReady && + cond.Status == corev1.ConditionFalse && + *cond.Reason == ackcondition.TerminalReason { return ackerr.ResourceReferenceTerminalFor( "Key", namespace, name) @@ -221,14 +223,14 @@ func getReferencedResourceState_Key( "Key", namespace, name) } - var refResourceSynced bool + var refResourceReady bool for _, cond := range obj.Status.Conditions { - if cond.Type == ackv1alpha1.ConditionTypeResourceSynced && + if cond.Type == ackv1alpha1.ConditionTypeReady && cond.Status == corev1.ConditionTrue { - refResourceSynced = true + refResourceReady = true } } - if !refResourceSynced { + if !refResourceReady { return ackerr.ResourceReferenceNotSyncedFor( "Key", namespace, name) @@ -299,8 +301,9 @@ func getReferencedResourceState_SecurityGroup( } var refResourceTerminal bool for _, cond := range obj.Status.Conditions { - if cond.Type == ackv1alpha1.ConditionTypeTerminal && - cond.Status == corev1.ConditionTrue { + if cond.Type == ackv1alpha1.ConditionTypeReady && + cond.Status == corev1.ConditionFalse && + *cond.Reason == ackcondition.TerminalReason { return ackerr.ResourceReferenceTerminalFor( "SecurityGroup", namespace, name) @@ -311,14 +314,14 @@ func getReferencedResourceState_SecurityGroup( "SecurityGroup", namespace, name) } - var refResourceSynced bool + var refResourceReady bool for _, cond := range obj.Status.Conditions { - if cond.Type == ackv1alpha1.ConditionTypeResourceSynced && + if cond.Type == ackv1alpha1.ConditionTypeReady && cond.Status == corev1.ConditionTrue { - refResourceSynced = true + refResourceReady = true } } - if !refResourceSynced { + if !refResourceReady { return ackerr.ResourceReferenceNotSyncedFor( "SecurityGroup", namespace, name) @@ -389,8 +392,9 @@ func getReferencedResourceState_Subnet( } var refResourceTerminal bool for _, cond := range obj.Status.Conditions { - if cond.Type == ackv1alpha1.ConditionTypeTerminal && - cond.Status == corev1.ConditionTrue { + if cond.Type == ackv1alpha1.ConditionTypeReady && + cond.Status == corev1.ConditionFalse && + *cond.Reason == ackcondition.TerminalReason { return ackerr.ResourceReferenceTerminalFor( "Subnet", namespace, name) @@ -401,14 +405,14 @@ func getReferencedResourceState_Subnet( "Subnet", namespace, name) } - var refResourceSynced bool + var refResourceReady bool for _, cond := range obj.Status.Conditions { - if cond.Type == ackv1alpha1.ConditionTypeResourceSynced && + if cond.Type == ackv1alpha1.ConditionTypeReady && cond.Status == corev1.ConditionTrue { - refResourceSynced = true + refResourceReady = true } } - if !refResourceSynced { + if !refResourceReady { return ackerr.ResourceReferenceNotSyncedFor( "Subnet", namespace, name) @@ -472,8 +476,9 @@ func getReferencedResourceState_Role( } var refResourceTerminal bool for _, cond := range obj.Status.Conditions { - if cond.Type == ackv1alpha1.ConditionTypeTerminal && - cond.Status == corev1.ConditionTrue { + if cond.Type == ackv1alpha1.ConditionTypeReady && + cond.Status == corev1.ConditionFalse && + *cond.Reason == ackcondition.TerminalReason { return ackerr.ResourceReferenceTerminalFor( "Role", namespace, name) @@ -484,14 +489,14 @@ func getReferencedResourceState_Role( "Role", namespace, name) } - var refResourceSynced bool + var refResourceReady bool for _, cond := range obj.Status.Conditions { - if cond.Type == ackv1alpha1.ConditionTypeResourceSynced && + if cond.Type == ackv1alpha1.ConditionTypeReady && cond.Status == corev1.ConditionTrue { - refResourceSynced = true + refResourceReady = true } } - if !refResourceSynced { + if !refResourceReady { return ackerr.ResourceReferenceNotSyncedFor( "Role", namespace, name) diff --git a/pkg/resource/fargate_profile/references.go b/pkg/resource/fargate_profile/references.go index 4b30a312..d0d1abc8 100644 --- a/pkg/resource/fargate_profile/references.go +++ b/pkg/resource/fargate_profile/references.go @@ -26,6 +26,7 @@ import ( ec2apitypes "github.com/aws-controllers-k8s/ec2-controller/apis/v1alpha1" iamapitypes "github.com/aws-controllers-k8s/iam-controller/apis/v1alpha1" ackv1alpha1 "github.com/aws-controllers-k8s/runtime/apis/core/v1alpha1" + ackcondition "github.com/aws-controllers-k8s/runtime/pkg/condition" ackerr "github.com/aws-controllers-k8s/runtime/pkg/errors" acktypes "github.com/aws-controllers-k8s/runtime/pkg/types" @@ -171,8 +172,9 @@ func getReferencedResourceState_Cluster( } var refResourceTerminal bool for _, cond := range obj.Status.Conditions { - if cond.Type == ackv1alpha1.ConditionTypeTerminal && - cond.Status == corev1.ConditionTrue { + if cond.Type == ackv1alpha1.ConditionTypeReady && + cond.Status == corev1.ConditionFalse && + *cond.Reason == ackcondition.TerminalReason { return ackerr.ResourceReferenceTerminalFor( "Cluster", namespace, name) @@ -183,14 +185,14 @@ func getReferencedResourceState_Cluster( "Cluster", namespace, name) } - var refResourceSynced bool + var refResourceReady bool for _, cond := range obj.Status.Conditions { - if cond.Type == ackv1alpha1.ConditionTypeResourceSynced && + if cond.Type == ackv1alpha1.ConditionTypeReady && cond.Status == corev1.ConditionTrue { - refResourceSynced = true + refResourceReady = true } } - if !refResourceSynced { + if !refResourceReady { return ackerr.ResourceReferenceNotSyncedFor( "Cluster", namespace, name) @@ -254,8 +256,9 @@ func getReferencedResourceState_Role( } var refResourceTerminal bool for _, cond := range obj.Status.Conditions { - if cond.Type == ackv1alpha1.ConditionTypeTerminal && - cond.Status == corev1.ConditionTrue { + if cond.Type == ackv1alpha1.ConditionTypeReady && + cond.Status == corev1.ConditionFalse && + *cond.Reason == ackcondition.TerminalReason { return ackerr.ResourceReferenceTerminalFor( "Role", namespace, name) @@ -266,14 +269,14 @@ func getReferencedResourceState_Role( "Role", namespace, name) } - var refResourceSynced bool + var refResourceReady bool for _, cond := range obj.Status.Conditions { - if cond.Type == ackv1alpha1.ConditionTypeResourceSynced && + if cond.Type == ackv1alpha1.ConditionTypeReady && cond.Status == corev1.ConditionTrue { - refResourceSynced = true + refResourceReady = true } } - if !refResourceSynced { + if !refResourceReady { return ackerr.ResourceReferenceNotSyncedFor( "Role", namespace, name) @@ -342,8 +345,9 @@ func getReferencedResourceState_Subnet( } var refResourceTerminal bool for _, cond := range obj.Status.Conditions { - if cond.Type == ackv1alpha1.ConditionTypeTerminal && - cond.Status == corev1.ConditionTrue { + if cond.Type == ackv1alpha1.ConditionTypeReady && + cond.Status == corev1.ConditionFalse && + *cond.Reason == ackcondition.TerminalReason { return ackerr.ResourceReferenceTerminalFor( "Subnet", namespace, name) @@ -354,14 +358,14 @@ func getReferencedResourceState_Subnet( "Subnet", namespace, name) } - var refResourceSynced bool + var refResourceReady bool for _, cond := range obj.Status.Conditions { - if cond.Type == ackv1alpha1.ConditionTypeResourceSynced && + if cond.Type == ackv1alpha1.ConditionTypeReady && cond.Status == corev1.ConditionTrue { - refResourceSynced = true + refResourceReady = true } } - if !refResourceSynced { + if !refResourceReady { return ackerr.ResourceReferenceNotSyncedFor( "Subnet", namespace, name) diff --git a/pkg/resource/identity_provider_config/references.go b/pkg/resource/identity_provider_config/references.go index 97b57732..e8a19653 100644 --- a/pkg/resource/identity_provider_config/references.go +++ b/pkg/resource/identity_provider_config/references.go @@ -24,6 +24,7 @@ import ( "sigs.k8s.io/controller-runtime/pkg/client" ackv1alpha1 "github.com/aws-controllers-k8s/runtime/apis/core/v1alpha1" + ackcondition "github.com/aws-controllers-k8s/runtime/pkg/condition" ackerr "github.com/aws-controllers-k8s/runtime/pkg/errors" acktypes "github.com/aws-controllers-k8s/runtime/pkg/types" @@ -132,8 +133,9 @@ func getReferencedResourceState_Cluster( } var refResourceTerminal bool for _, cond := range obj.Status.Conditions { - if cond.Type == ackv1alpha1.ConditionTypeTerminal && - cond.Status == corev1.ConditionTrue { + if cond.Type == ackv1alpha1.ConditionTypeReady && + cond.Status == corev1.ConditionFalse && + *cond.Reason == ackcondition.TerminalReason { return ackerr.ResourceReferenceTerminalFor( "Cluster", namespace, name) @@ -144,14 +146,14 @@ func getReferencedResourceState_Cluster( "Cluster", namespace, name) } - var refResourceSynced bool + var refResourceReady bool for _, cond := range obj.Status.Conditions { - if cond.Type == ackv1alpha1.ConditionTypeResourceSynced && + if cond.Type == ackv1alpha1.ConditionTypeReady && cond.Status == corev1.ConditionTrue { - refResourceSynced = true + refResourceReady = true } } - if !refResourceSynced { + if !refResourceReady { return ackerr.ResourceReferenceNotSyncedFor( "Cluster", namespace, name) diff --git a/pkg/resource/nodegroup/references.go b/pkg/resource/nodegroup/references.go index 20d476c7..884df04e 100644 --- a/pkg/resource/nodegroup/references.go +++ b/pkg/resource/nodegroup/references.go @@ -26,6 +26,7 @@ import ( ec2apitypes "github.com/aws-controllers-k8s/ec2-controller/apis/v1alpha1" iamapitypes "github.com/aws-controllers-k8s/iam-controller/apis/v1alpha1" ackv1alpha1 "github.com/aws-controllers-k8s/runtime/apis/core/v1alpha1" + ackcondition "github.com/aws-controllers-k8s/runtime/pkg/condition" ackerr "github.com/aws-controllers-k8s/runtime/pkg/errors" acktypes "github.com/aws-controllers-k8s/runtime/pkg/types" @@ -195,8 +196,9 @@ func getReferencedResourceState_Cluster( } var refResourceTerminal bool for _, cond := range obj.Status.Conditions { - if cond.Type == ackv1alpha1.ConditionTypeTerminal && - cond.Status == corev1.ConditionTrue { + if cond.Type == ackv1alpha1.ConditionTypeReady && + cond.Status == corev1.ConditionFalse && + *cond.Reason == ackcondition.TerminalReason { return ackerr.ResourceReferenceTerminalFor( "Cluster", namespace, name) @@ -207,14 +209,14 @@ func getReferencedResourceState_Cluster( "Cluster", namespace, name) } - var refResourceSynced bool + var refResourceReady bool for _, cond := range obj.Status.Conditions { - if cond.Type == ackv1alpha1.ConditionTypeResourceSynced && + if cond.Type == ackv1alpha1.ConditionTypeReady && cond.Status == corev1.ConditionTrue { - refResourceSynced = true + refResourceReady = true } } - if !refResourceSynced { + if !refResourceReady { return ackerr.ResourceReferenceNotSyncedFor( "Cluster", namespace, name) @@ -278,8 +280,9 @@ func getReferencedResourceState_Role( } var refResourceTerminal bool for _, cond := range obj.Status.Conditions { - if cond.Type == ackv1alpha1.ConditionTypeTerminal && - cond.Status == corev1.ConditionTrue { + if cond.Type == ackv1alpha1.ConditionTypeReady && + cond.Status == corev1.ConditionFalse && + *cond.Reason == ackcondition.TerminalReason { return ackerr.ResourceReferenceTerminalFor( "Role", namespace, name) @@ -290,14 +293,14 @@ func getReferencedResourceState_Role( "Role", namespace, name) } - var refResourceSynced bool + var refResourceReady bool for _, cond := range obj.Status.Conditions { - if cond.Type == ackv1alpha1.ConditionTypeResourceSynced && + if cond.Type == ackv1alpha1.ConditionTypeReady && cond.Status == corev1.ConditionTrue { - refResourceSynced = true + refResourceReady = true } } - if !refResourceSynced { + if !refResourceReady { return ackerr.ResourceReferenceNotSyncedFor( "Role", namespace, name) @@ -368,8 +371,9 @@ func getReferencedResourceState_SecurityGroup( } var refResourceTerminal bool for _, cond := range obj.Status.Conditions { - if cond.Type == ackv1alpha1.ConditionTypeTerminal && - cond.Status == corev1.ConditionTrue { + if cond.Type == ackv1alpha1.ConditionTypeReady && + cond.Status == corev1.ConditionFalse && + *cond.Reason == ackcondition.TerminalReason { return ackerr.ResourceReferenceTerminalFor( "SecurityGroup", namespace, name) @@ -380,14 +384,14 @@ func getReferencedResourceState_SecurityGroup( "SecurityGroup", namespace, name) } - var refResourceSynced bool + var refResourceReady bool for _, cond := range obj.Status.Conditions { - if cond.Type == ackv1alpha1.ConditionTypeResourceSynced && + if cond.Type == ackv1alpha1.ConditionTypeReady && cond.Status == corev1.ConditionTrue { - refResourceSynced = true + refResourceReady = true } } - if !refResourceSynced { + if !refResourceReady { return ackerr.ResourceReferenceNotSyncedFor( "SecurityGroup", namespace, name) @@ -456,8 +460,9 @@ func getReferencedResourceState_Subnet( } var refResourceTerminal bool for _, cond := range obj.Status.Conditions { - if cond.Type == ackv1alpha1.ConditionTypeTerminal && - cond.Status == corev1.ConditionTrue { + if cond.Type == ackv1alpha1.ConditionTypeReady && + cond.Status == corev1.ConditionFalse && + *cond.Reason == ackcondition.TerminalReason { return ackerr.ResourceReferenceTerminalFor( "Subnet", namespace, name) @@ -468,14 +473,14 @@ func getReferencedResourceState_Subnet( "Subnet", namespace, name) } - var refResourceSynced bool + var refResourceReady bool for _, cond := range obj.Status.Conditions { - if cond.Type == ackv1alpha1.ConditionTypeResourceSynced && + if cond.Type == ackv1alpha1.ConditionTypeReady && cond.Status == corev1.ConditionTrue { - refResourceSynced = true + refResourceReady = true } } - if !refResourceSynced { + if !refResourceReady { return ackerr.ResourceReferenceNotSyncedFor( "Subnet", namespace, name) diff --git a/pkg/resource/nodegroup/sdk.go b/pkg/resource/nodegroup/sdk.go index 7c997184..a3fab538 100644 --- a/pkg/resource/nodegroup/sdk.go +++ b/pkg/resource/nodegroup/sdk.go @@ -608,7 +608,7 @@ func (rm *resourceManager) newCreateRequestPayload( if r.ko.Spec.DiskSize != nil { diskSizeCopy0 := *r.ko.Spec.DiskSize if diskSizeCopy0 > math.MaxInt32 || diskSizeCopy0 < math.MinInt32 { - return nil, fmt.Errorf("error: field diskSize is of type int32") + return nil, fmt.Errorf("error: field DiskSize is of type int32") } diskSizeCopy := int32(diskSizeCopy0) res.DiskSize = &diskSizeCopy diff --git a/pkg/resource/pod_identity_association/references.go b/pkg/resource/pod_identity_association/references.go index 6d32d51a..3c62a34f 100644 --- a/pkg/resource/pod_identity_association/references.go +++ b/pkg/resource/pod_identity_association/references.go @@ -25,6 +25,7 @@ import ( iamapitypes "github.com/aws-controllers-k8s/iam-controller/apis/v1alpha1" ackv1alpha1 "github.com/aws-controllers-k8s/runtime/apis/core/v1alpha1" + ackcondition "github.com/aws-controllers-k8s/runtime/pkg/condition" ackerr "github.com/aws-controllers-k8s/runtime/pkg/errors" acktypes "github.com/aws-controllers-k8s/runtime/pkg/types" @@ -153,8 +154,9 @@ func getReferencedResourceState_Cluster( } var refResourceTerminal bool for _, cond := range obj.Status.Conditions { - if cond.Type == ackv1alpha1.ConditionTypeTerminal && - cond.Status == corev1.ConditionTrue { + if cond.Type == ackv1alpha1.ConditionTypeReady && + cond.Status == corev1.ConditionFalse && + *cond.Reason == ackcondition.TerminalReason { return ackerr.ResourceReferenceTerminalFor( "Cluster", namespace, name) @@ -165,14 +167,14 @@ func getReferencedResourceState_Cluster( "Cluster", namespace, name) } - var refResourceSynced bool + var refResourceReady bool for _, cond := range obj.Status.Conditions { - if cond.Type == ackv1alpha1.ConditionTypeResourceSynced && + if cond.Type == ackv1alpha1.ConditionTypeReady && cond.Status == corev1.ConditionTrue { - refResourceSynced = true + refResourceReady = true } } - if !refResourceSynced { + if !refResourceReady { return ackerr.ResourceReferenceNotSyncedFor( "Cluster", namespace, name) @@ -236,8 +238,9 @@ func getReferencedResourceState_Role( } var refResourceTerminal bool for _, cond := range obj.Status.Conditions { - if cond.Type == ackv1alpha1.ConditionTypeTerminal && - cond.Status == corev1.ConditionTrue { + if cond.Type == ackv1alpha1.ConditionTypeReady && + cond.Status == corev1.ConditionFalse && + *cond.Reason == ackcondition.TerminalReason { return ackerr.ResourceReferenceTerminalFor( "Role", namespace, name) @@ -248,14 +251,14 @@ func getReferencedResourceState_Role( "Role", namespace, name) } - var refResourceSynced bool + var refResourceReady bool for _, cond := range obj.Status.Conditions { - if cond.Type == ackv1alpha1.ConditionTypeResourceSynced && + if cond.Type == ackv1alpha1.ConditionTypeReady && cond.Status == corev1.ConditionTrue { - refResourceSynced = true + refResourceReady = true } } - if !refResourceSynced { + if !refResourceReady { return ackerr.ResourceReferenceNotSyncedFor( "Role", namespace, name) diff --git a/test/e2e/requirements.txt b/test/e2e/requirements.txt index e9105a14..6e2ab161 100644 --- a/test/e2e/requirements.txt +++ b/test/e2e/requirements.txt @@ -1 +1 @@ -acktest @ git+https://github.com/aws-controllers-k8s/test-infra.git@e93ab7d371dde70c584254c048e072b0b7080f7d \ No newline at end of file +acktest @ git+https://github.com/gustavodiaz7722/ack-test-infra.git@4a5c296da0fe386eadf95c242591ae4724cd0428 diff --git a/test/e2e/tests/test_cluster.py b/test/e2e/tests/test_cluster.py index cb713027..d5c4391f 100644 --- a/test/e2e/tests/test_cluster.py +++ b/test/e2e/tests/test_cluster.py @@ -62,9 +62,9 @@ def get_and_assert_status(ref: k8s.CustomResourceReference, expected_status: str assert cr['status']['status'] == expected_status if expected_synced: - condition.assert_synced(ref) + condition.assert_ready(ref) else: - condition.assert_not_synced(ref) + condition.assert_not_ready(ref) @pytest.fixture(scope="module") def eks_client(): diff --git a/test/e2e/tests/test_cluster_automode.py b/test/e2e/tests/test_cluster_automode.py index 831d6648..59925a09 100644 --- a/test/e2e/tests/test_cluster_automode.py +++ b/test/e2e/tests/test_cluster_automode.py @@ -53,9 +53,9 @@ def get_and_assert_status(ref: k8s.CustomResourceReference, expected_status: str assert cr['status']['status'] == expected_status if expected_synced: - condition.assert_synced(ref) + condition.assert_ready(ref) else: - condition.assert_not_synced(ref) + condition.assert_not_ready(ref) @pytest.fixture(scope="module") diff --git a/test/e2e/tests/test_fargate_profile.py b/test/e2e/tests/test_fargate_profile.py index 89c45ca4..c74ddc97 100644 --- a/test/e2e/tests/test_fargate_profile.py +++ b/test/e2e/tests/test_fargate_profile.py @@ -54,9 +54,9 @@ def get_and_assert_status(ref: k8s.CustomResourceReference, expected_status: str assert cr['status']['status'] == expected_status if expected_synced: - condition.assert_synced(ref) + condition.assert_ready(ref) else: - condition.assert_not_synced(ref) + condition.assert_not_ready(ref) @pytest.fixture(scope="module") def eks_client(): diff --git a/test/e2e/tests/test_identity_provider_config.py b/test/e2e/tests/test_identity_provider_config.py index 5090eefa..be09820f 100644 --- a/test/e2e/tests/test_identity_provider_config.py +++ b/test/e2e/tests/test_identity_provider_config.py @@ -48,9 +48,9 @@ def get_and_assert_status(ref: k8s.CustomResourceReference, expected_status: str assert cr['status']['status'] == expected_status if expected_synced: - condition.assert_synced(ref) + condition.assert_ready(ref) else: - condition.assert_not_synced(ref) + condition.assert_not_ready(ref) @pytest.fixture(scope="module") def eks_client(): diff --git a/test/e2e/tests/test_nodegroup.py b/test/e2e/tests/test_nodegroup.py index 718cb5fa..279ade29 100644 --- a/test/e2e/tests/test_nodegroup.py +++ b/test/e2e/tests/test_nodegroup.py @@ -139,7 +139,7 @@ def test_create_update_delete_nodegroup(self, simple_nodegroup, eks_client): wait_for_nodegroup_active(eks_client, cluster_name, nodegroup_name) # Ensure status is updated properly once it has become active - k8s.wait_on_condition(ref, condition.CONDITION_TYPE_RESOURCE_SYNCED, "True", wait_periods=5, period_length=CHECK_STATUS_WAIT_SECONDS) + k8s.wait_on_condition(ref, condition.CONDITION_TYPE_READY, "True", wait_periods=5, period_length=CHECK_STATUS_WAIT_SECONDS) get_and_assert_status(ref, 'ACTIVE', True) aws_res = eks_client.describe_nodegroup( @@ -370,7 +370,7 @@ def test_update_nodegroup_version(self, simple_nodegroup, eks_client): wait_for_nodegroup_active(eks_client, cluster_name, nodegroup_name) # Ensure status is updated properly once it has become active - k8s.wait_on_condition(ref, condition.CONDITION_TYPE_RESOURCE_SYNCED, "True", wait_periods=5, period_length=CHECK_STATUS_WAIT_SECONDS) + k8s.wait_on_condition(ref, condition.CONDITION_TYPE_READY, "True", wait_periods=5, period_length=CHECK_STATUS_WAIT_SECONDS) get_and_assert_status(ref, 'ACTIVE', True) aws_res = eks_client.describe_nodegroup( From 9b43406936a4eb61ad706f86f3644bb842ea977b Mon Sep 17 00:00:00 2001 From: Gustavo Diaz Date: Thu, 25 Sep 2025 22:47:51 +0000 Subject: [PATCH 2/2] fix --- test/e2e/tests/test_cluster_automode.py | 2 +- test/e2e/tests/test_nodegroup.py | 14 +------------- 2 files changed, 2 insertions(+), 14 deletions(-) diff --git a/test/e2e/tests/test_cluster_automode.py b/test/e2e/tests/test_cluster_automode.py index 59925a09..cbff00e5 100644 --- a/test/e2e/tests/test_cluster_automode.py +++ b/test/e2e/tests/test_cluster_automode.py @@ -141,6 +141,6 @@ def test_create_auto_mode_cluster(self, eks_client, auto_mode_cluster): time.sleep(CHECK_STATUS_WAIT_SECONDS) # Clean up - _, deleted = k8s.delete_custom_resource(ref, 3, 10) + _, deleted = k8s.delete_custom_resource(ref, 10, 10) assert deleted wait_until_deleted(cluster_name) diff --git a/test/e2e/tests/test_nodegroup.py b/test/e2e/tests/test_nodegroup.py index 279ade29..1a14c003 100644 --- a/test/e2e/tests/test_nodegroup.py +++ b/test/e2e/tests/test_nodegroup.py @@ -391,16 +391,4 @@ def test_update_nodegroup_version(self, simple_nodegroup, eks_client): k8s.patch_custom_resource(ref, updates) time.sleep(MODIFY_WAIT_AFTER_SECONDS) - - terminal_condition = "ACK.Terminal" - cond = k8s.get_resource_condition(ref, terminal_condition) - if cond is None: - msg = (f"Failed to find {terminal_condition} condition in " - f"resource {ref}") - pytest.fail(msg) - - cond_status = cond.get('status', None) - if str(cond_status) != str(True): - msg = (f"Expected {terminal_condition} condition to " - f"have status {terminal_condition} but found {cond_status}") - pytest.fail(msg) \ No newline at end of file + condition.assert_terminal(ref) \ No newline at end of file