From 5131e685d9c3eaa7ec639a2315dd83c89effd15f Mon Sep 17 00:00:00 2001 From: Gustavo Diaz Date: Thu, 25 Sep 2025 06:01:01 +0000 Subject: [PATCH] Ready condition migration for route53 controller --- apis/v1alpha1/ack-generate-metadata.yaml | 8 +++--- ...route53.services.k8s.aws_healthchecks.yaml | 2 +- .../route53.services.k8s.aws_hostedzones.yaml | 2 +- .../route53.services.k8s.aws_recordsets.yaml | 2 +- go.mod | 2 ++ go.sum | 4 +-- ...route53.services.k8s.aws_healthchecks.yaml | 2 +- .../route53.services.k8s.aws_hostedzones.yaml | 2 +- .../route53.services.k8s.aws_recordsets.yaml | 2 +- .../services.k8s.aws_adoptedresources.yaml | 2 +- helm/crds/services.k8s.aws_fieldexports.yaml | 2 +- pkg/resource/record_set/references.go | 27 ++++++++++--------- test/e2e/__init__.py | 2 +- test/e2e/requirements.txt | 2 +- test/e2e/tests/test_health_check.py | 4 +-- test/e2e/tests/test_hosted_zone.py | 4 +-- 16 files changed, 37 insertions(+), 32 deletions(-) diff --git a/apis/v1alpha1/ack-generate-metadata.yaml b/apis/v1alpha1/ack-generate-metadata.yaml index 721aed2..4df3a92 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-19T16:39:43Z" - build_hash: 6b4211163dcc34776b01da9a18217bac0f4103fd - go_version: go1.24.6 - version: v0.52.0 + build_date: "2025-09-25T06:00:01Z" + build_hash: 9c388d9668ea19d0b1b65566d492c4f67c6e64c8 + go_version: go1.24.7 + version: 9c388d9 api_directory_checksum: b612de0e7a18f2ad41155b5b645fb6676753f2ba api_version: v1alpha1 aws_sdk_go_version: v1.32.6 diff --git a/config/crd/bases/route53.services.k8s.aws_healthchecks.yaml b/config/crd/bases/route53.services.k8s.aws_healthchecks.yaml index 1d556a4..ea5e040 100644 --- a/config/crd/bases/route53.services.k8s.aws_healthchecks.yaml +++ b/config/crd/bases/route53.services.k8s.aws_healthchecks.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: healthchecks.route53.services.k8s.aws spec: group: route53.services.k8s.aws diff --git a/config/crd/bases/route53.services.k8s.aws_hostedzones.yaml b/config/crd/bases/route53.services.k8s.aws_hostedzones.yaml index 0e88d42..cd118ea 100644 --- a/config/crd/bases/route53.services.k8s.aws_hostedzones.yaml +++ b/config/crd/bases/route53.services.k8s.aws_hostedzones.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: hostedzones.route53.services.k8s.aws spec: group: route53.services.k8s.aws diff --git a/config/crd/bases/route53.services.k8s.aws_recordsets.yaml b/config/crd/bases/route53.services.k8s.aws_recordsets.yaml index 41946a2..68895ba 100644 --- a/config/crd/bases/route53.services.k8s.aws_recordsets.yaml +++ b/config/crd/bases/route53.services.k8s.aws_recordsets.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: recordsets.route53.services.k8s.aws spec: group: route53.services.k8s.aws diff --git a/go.mod b/go.mod index a6acc67..2161920 100644 --- a/go.mod +++ b/go.mod @@ -89,3 +89,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 e842d20..128faa9 100644 --- a/go.sum +++ b/go.sum @@ -1,5 +1,3 @@ -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.49.0 h1:g9BkW1fo9GqKfwg2+zCD+TW/D36Ux+vtfJ8guF4AYmY= github.com/aws/aws-sdk-go v1.49.0/go.mod h1:LF8svs817+Nz+DmiMQKTO3ubZ/6IaTpq3TjupRn3Eqk= github.com/aws/aws-sdk-go-v2 v1.34.0 h1:9iyL+cjifckRGEVpRKZP3eIxVlL06Qk1Tk13vreaVQU= @@ -84,6 +82,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/route53.services.k8s.aws_healthchecks.yaml b/helm/crds/route53.services.k8s.aws_healthchecks.yaml index 1d556a4..ea5e040 100644 --- a/helm/crds/route53.services.k8s.aws_healthchecks.yaml +++ b/helm/crds/route53.services.k8s.aws_healthchecks.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: healthchecks.route53.services.k8s.aws spec: group: route53.services.k8s.aws diff --git a/helm/crds/route53.services.k8s.aws_hostedzones.yaml b/helm/crds/route53.services.k8s.aws_hostedzones.yaml index ca9c453..75e5f18 100644 --- a/helm/crds/route53.services.k8s.aws_hostedzones.yaml +++ b/helm/crds/route53.services.k8s.aws_hostedzones.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: hostedzones.route53.services.k8s.aws spec: group: route53.services.k8s.aws diff --git a/helm/crds/route53.services.k8s.aws_recordsets.yaml b/helm/crds/route53.services.k8s.aws_recordsets.yaml index c6e0a67..6940e4b 100644 --- a/helm/crds/route53.services.k8s.aws_recordsets.yaml +++ b/helm/crds/route53.services.k8s.aws_recordsets.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: recordsets.route53.services.k8s.aws spec: group: route53.services.k8s.aws diff --git a/helm/crds/services.k8s.aws_adoptedresources.yaml b/helm/crds/services.k8s.aws_adoptedresources.yaml index b7be322..d6cdd10 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 49b4f38..6e2c61e 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/record_set/references.go b/pkg/resource/record_set/references.go index b06c703..7ca59b0 100644 --- a/pkg/resource/record_set/references.go +++ b/pkg/resource/record_set/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" @@ -146,8 +147,9 @@ func getReferencedResourceState_HealthCheck( } 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( "HealthCheck", namespace, name) @@ -158,14 +160,14 @@ func getReferencedResourceState_HealthCheck( "HealthCheck", 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( "HealthCheck", namespace, name) @@ -229,8 +231,9 @@ func getReferencedResourceState_HostedZone( } 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( "HostedZone", namespace, name) @@ -241,14 +244,14 @@ func getReferencedResourceState_HostedZone( "HostedZone", 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( "HostedZone", namespace, name) diff --git a/test/e2e/__init__.py b/test/e2e/__init__.py index d54aef3..29392f2 100644 --- a/test/e2e/__init__.py +++ b/test/e2e/__init__.py @@ -103,6 +103,6 @@ def patch_route53_resource(ref, updates): res = k8s.patch_custom_resource(ref, updates) time.sleep(MODIFY_WAIT_AFTER_SECONDS) - assert k8s.wait_on_condition(ref, "ACK.ResourceSynced", "True", wait_periods=5) + assert k8s.wait_on_condition(ref, "Ready", "True", wait_periods=5) return res diff --git a/test/e2e/requirements.txt b/test/e2e/requirements.txt index 8d94056..6e2ab16 100644 --- a/test/e2e/requirements.txt +++ b/test/e2e/requirements.txt @@ -1 +1 @@ -acktest @ git+https://github.com/aws-controllers-k8s/test-infra.git@38ce32256cc2552ab54e190cc8a8618e93af9e0c +acktest @ git+https://github.com/gustavodiaz7722/ack-test-infra.git@4a5c296da0fe386eadf95c242591ae4724cd0428 diff --git a/test/e2e/tests/test_health_check.py b/test/e2e/tests/test_health_check.py index c69448b..39b81b4 100644 --- a/test/e2e/tests/test_health_check.py +++ b/test/e2e/tests/test_health_check.py @@ -151,7 +151,7 @@ def test_crud_tags(self, route53_client, health_check): time.sleep(MODIFY_WAIT_AFTER_SECONDS) # Check resource synced successfully - assert k8s.wait_on_condition(ref, "ACK.ResourceSynced", "True", wait_periods=5) + assert k8s.wait_on_condition(ref, "Ready", "True", wait_periods=5) # Check for updated user tags; system tags should persist health_check = route53_validator.list_tags_for_resources(resource_id, "healthcheck") @@ -182,7 +182,7 @@ def test_crud_tags(self, route53_client, health_check): time.sleep(MODIFY_WAIT_AFTER_SECONDS) # Check resource synced successfully - assert k8s.wait_on_condition(ref, "ACK.ResourceSynced", "True", wait_periods=5) + assert k8s.wait_on_condition(ref, "Ready", "True", wait_periods=5) # Check for removed user tags; system tags should persist health_check = route53_validator.list_tags_for_resources(resource_id, "healthcheck") diff --git a/test/e2e/tests/test_hosted_zone.py b/test/e2e/tests/test_hosted_zone.py index a509993..a3f39f8 100644 --- a/test/e2e/tests/test_hosted_zone.py +++ b/test/e2e/tests/test_hosted_zone.py @@ -175,7 +175,7 @@ def test_crud_tags(self, route53_client, public_hosted_zone): time.sleep(MODIFY_WAIT_AFTER_SECONDS) # Check resource synced successfully - assert k8s.wait_on_condition(ref, "ACK.ResourceSynced", "True", wait_periods=5) + assert k8s.wait_on_condition(ref, "Ready", "True", wait_periods=5) # Check for updated user tags; system tags should persist hosted_zone = route53_validator.list_tags_for_resources(resource_id, "hostedzone") @@ -205,7 +205,7 @@ def test_crud_tags(self, route53_client, public_hosted_zone): time.sleep(MODIFY_WAIT_AFTER_SECONDS) # Check resource synced successfully - assert k8s.wait_on_condition(ref, "ACK.ResourceSynced", "True", wait_periods=5) + assert k8s.wait_on_condition(ref, "Ready", "True", wait_periods=5) # Check for removed user tags; system tags should persist hosted_zone = route53_validator.list_tags_for_resources(resource_id, "hostedzone")