diff --git a/apis/v1alpha1/ack-generate-metadata.yaml b/apis/v1alpha1/ack-generate-metadata.yaml index c35ca1ed..d1c1fd44 100755 --- a/apis/v1alpha1/ack-generate-metadata.yaml +++ b/apis/v1alpha1/ack-generate-metadata.yaml @@ -1,13 +1,13 @@ ack_generate_info: - build_date: "2022-03-29T17:33:11Z" - build_hash: 6f659f796434e8fd6443c0b3a5b495daae910035 - go_version: go1.17.8 - version: v0.18.0 + build_date: "2022-03-30T20:36:15Z" + build_hash: c6b852a8017aa73cfc5a882b1ba60c88d820e967 + go_version: go1.17 + version: v0.18.1 api_directory_checksum: e5bf2003f6be051fdeda5059df47eb7fff0a9c86 api_version: v1alpha1 aws_sdk_go_version: v1.42.0 generator_config_info: - file_checksum: c041dcc9493bdd9baed2e0599d8bc4401b5f2d25 + file_checksum: e017fb539a06710c6713157e5f61e2a0c20e70ba original_file_name: generator.yaml last_modification: reason: API generation diff --git a/apis/v1alpha1/generator.yaml b/apis/v1alpha1/generator.yaml index 0732d0fc..82fdc660 100644 --- a/apis/v1alpha1/generator.yaml +++ b/apis/v1alpha1/generator.yaml @@ -281,6 +281,8 @@ resources: template_path: hooks/vpc/sdk_read_many_post_set_output.go.tpl VpcEndpoint: fields: + PolicyDocument: + late_initialize: {} VpcId: references: resource: VPC diff --git a/generator.yaml b/generator.yaml index 0732d0fc..82fdc660 100644 --- a/generator.yaml +++ b/generator.yaml @@ -281,6 +281,8 @@ resources: template_path: hooks/vpc/sdk_read_many_post_set_output.go.tpl VpcEndpoint: fields: + PolicyDocument: + late_initialize: {} VpcId: references: resource: VPC diff --git a/pkg/resource/vpc_endpoint/manager.go b/pkg/resource/vpc_endpoint/manager.go index 993245df..ed6d3ff1 100644 --- a/pkg/resource/vpc_endpoint/manager.go +++ b/pkg/resource/vpc_endpoint/manager.go @@ -45,7 +45,7 @@ var ( // +kubebuilder:rbac:groups=ec2.services.k8s.aws,resources=vpcendpoints,verbs=get;list;watch;create;update;patch;delete // +kubebuilder:rbac:groups=ec2.services.k8s.aws,resources=vpcendpoints/status,verbs=get;update;patch -var lateInitializeFieldNames = []string{} +var lateInitializeFieldNames = []string{"PolicyDocument"} // resourceManager is responsible for providing a consistent way to perform // CRUD operations in a backend AWS service API for Book custom resources. @@ -236,6 +236,10 @@ func (rm *resourceManager) LateInitialize( func (rm *resourceManager) incompleteLateInitialization( res acktypes.AWSResource, ) bool { + ko := rm.concreteResource(res).ko.DeepCopy() + if ko.Spec.PolicyDocument == nil { + return true + } return false } @@ -245,7 +249,12 @@ func (rm *resourceManager) lateInitializeFromReadOneOutput( observed acktypes.AWSResource, latest acktypes.AWSResource, ) acktypes.AWSResource { - return latest + observedKo := rm.concreteResource(observed).ko.DeepCopy() + latestKo := rm.concreteResource(latest).ko.DeepCopy() + if observedKo.Spec.PolicyDocument != nil && latestKo.Spec.PolicyDocument == nil { + latestKo.Spec.PolicyDocument = observedKo.Spec.PolicyDocument + } + return &resource{latestKo} } // IsSynced returns true if the resource is synced. diff --git a/test/e2e/tests/test_references.py b/test/e2e/tests/test_references.py index 3bc0a393..b0d133aa 100644 --- a/test/e2e/tests/test_references.py +++ b/test/e2e/tests/test_references.py @@ -118,6 +118,7 @@ def test_references(self, ec2_client): assert k8s.wait_on_condition(vpc_ref, "ACK.ResourceSynced", "True", wait_periods=5) assert k8s.wait_on_condition(sg_ref, "ACK.ResourceSynced", "True", wait_periods=5) assert k8s.wait_on_condition(subnet_ref, "ACK.ResourceSynced", "True", wait_periods=5) + assert k8s.wait_on_condition(vpc_endpoint_ref, "ACK.ResourceSynced", "True", wait_periods=5) assert k8s.wait_on_condition(sg_ref, "ACK.ReferencesResolved", "True", wait_periods=5) assert k8s.wait_on_condition(subnet_ref, "ACK.ReferencesResolved", "True", wait_periods=5)