From 3d9d15e9fa254fada6021798f9858d04f34ecc09 Mon Sep 17 00:00:00 2001 From: Amine Date: Sun, 11 Aug 2024 23:48:21 -0700 Subject: [PATCH] Add `roleARN` parameter to ManagerFor in resource manager factory This commits upadtes the ManagerFor function generator in the resource manager factory to include the roleARN. The change also includes: - Updated `ManagerFor` function signature - Modified the rmId generation to incorporate `roleARN`, creating a unique identifier for each account/region/roleARN combination. - Update fake resource manager to match the new function signature --- go.mod | 2 +- go.sum | 2 ++ pkg/generate/ack/runtime_test.go | 1 + templates/pkg/resource/manager_factory.go.tpl | 6 +++++- 4 files changed, 9 insertions(+), 2 deletions(-) diff --git a/go.mod b/go.mod index 3dc7a44a..8fa1c5c0 100644 --- a/go.mod +++ b/go.mod @@ -6,7 +6,7 @@ toolchain go1.22.4 require ( github.com/aws-controllers-k8s/pkg v0.0.15 - github.com/aws-controllers-k8s/runtime v0.37.1 + github.com/aws-controllers-k8s/runtime v0.37.2-0.20240829063928-a606fd18ca1f github.com/aws/aws-sdk-go v1.49.0 github.com/dlclark/regexp2 v1.10.0 // indirect // pin to v0.1.1 due to release problem with v0.1.2 diff --git a/go.sum b/go.sum index 7ec23bec..988d6709 100644 --- a/go.sum +++ b/go.sum @@ -75,6 +75,8 @@ github.com/aws-controllers-k8s/pkg v0.0.15 h1:C1pnD/aDqJsU9oYf5upHkpSc+Hv4JQVtkd github.com/aws-controllers-k8s/pkg v0.0.15/go.mod h1:VvdjLWmR6IJ3KU8KByKiq/lJE8M+ur2piXysXKTGUS0= github.com/aws-controllers-k8s/runtime v0.37.1 h1:OKSG3WnswkazWgUtSZh3RApU6OK3l01LklP1DjWgEFY= github.com/aws-controllers-k8s/runtime v0.37.1/go.mod h1:gI2pWb20UGLP2SnHf1a1VzTd7iVVy+/I9VAzT0Y+Dew= +github.com/aws-controllers-k8s/runtime v0.37.2-0.20240829063928-a606fd18ca1f h1:N5WNMehmiBNdthmGYlua3P0P+i6hctfGVEtPe4QHme8= +github.com/aws-controllers-k8s/runtime v0.37.2-0.20240829063928-a606fd18ca1f/go.mod h1:gI2pWb20UGLP2SnHf1a1VzTd7iVVy+/I9VAzT0Y+Dew= 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/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= diff --git a/pkg/generate/ack/runtime_test.go b/pkg/generate/ack/runtime_test.go index 2216d500..fbbd0a32 100644 --- a/pkg/generate/ack/runtime_test.go +++ b/pkg/generate/ack/runtime_test.go @@ -96,6 +96,7 @@ func (rmf *fakeRMF) ManagerFor( *session.Session, ackv1alpha1.AWSAccountID, ackv1alpha1.AWSRegion, + ackv1alpha1.AWSResourceName, ) (acktypes.AWSResourceManager, error) { return nil, nil } diff --git a/templates/pkg/resource/manager_factory.go.tpl b/templates/pkg/resource/manager_factory.go.tpl index 8f160906..d613b596 100644 --- a/templates/pkg/resource/manager_factory.go.tpl +++ b/templates/pkg/resource/manager_factory.go.tpl @@ -40,8 +40,12 @@ func (f *resourceManagerFactory) ManagerFor( sess *session.Session, id ackv1alpha1.AWSAccountID, region ackv1alpha1.AWSRegion, + roleARN ackv1alpha1.AWSResourceName, ) (acktypes.AWSResourceManager, error) { - rmId := fmt.Sprintf("%s/%s", id, region) + // We use the account ID, region, and role ARN to uniquely identify a + // resource manager. This helps us to avoid creating multiple resource + // managers for the same account/region/roleARN combination. + rmId := fmt.Sprintf("%s/%s/%s", id, region, roleARN) f.RLock() rm, found := f.rmCache[rmId] f.RUnlock()