@@ -236,29 +236,6 @@ func (r *resourceReconciler) Reconcile(ctx context.Context, req ctrlrt.Request)
236236 // helpful message to the user.
237237 acctID , needCARMLookup := r .getOwnerAccountID (desired )
238238
239- var roleARN ackv1alpha1.AWSResourceName
240- if teamID := r .getTeamID (desired ); teamID != "" && r .cfg .FeatureGates .IsEnabled (featuregate .TeamLevelCARM ) {
241- // The user is specifying a namespace that is annotated with a team ID.
242- // Requeue if the corresponding roleARN is not available in the Teams configmap.
243- // Additionally, set the account ID to the role's account ID.
244- roleARN , err = r .getRoleARN (string (teamID ), ackrtcache .ACKRoleTeamMap )
245- if err != nil {
246- return r .handleCacheError (ctx , err , desired )
247- }
248- parsedARN , err := arn .Parse (string (roleARN ))
249- if err != nil {
250- return ctrlrt.Result {}, fmt .Errorf ("parsing role ARN %q from %q configmap: %v" , roleARN , ackrtcache .ACKRoleTeamMap , err )
251- }
252- acctID = ackv1alpha1 .AWSAccountID (parsedARN .AccountID )
253- } else if needCARMLookup {
254- // The user is specifying a namespace that is annotated with an owner account ID.
255- // Requeue if the corresponding roleARN is not available in the Accounts configmap.
256- roleARN , err = r .getRoleARN (string (acctID ), ackrtcache .ACKRoleAccountMap )
257- if err != nil {
258- return r .handleCacheError (ctx , err , desired )
259- }
260- }
261-
262239 region := r .getRegion (desired )
263240 endpointURL := r .getEndpointURL (desired )
264241 gvk := r .rd .GroupVersionKind ()
@@ -269,7 +246,7 @@ func (r *resourceReconciler) Reconcile(ctx context.Context, req ctrlrt.Request)
269246 if regionDrifted (desired , region ) {
270247 msg := fmt .Sprintf (
271248 "Resource already exists in region %s, but the desired state specifies region %s. " ,
272- * desired .Identifiers ().Region (), region ,
249+ region , desired .MetaObject ().GetAnnotations ()[ ackv1alpha1 . AnnotationRegion ] ,
273250 )
274251 rlog .Info (
275252 msg ,
@@ -295,6 +272,30 @@ func (r *resourceReconciler) Reconcile(ctx context.Context, req ctrlrt.Request)
295272 return ctrlrt.Result {}, ackerr .NewTerminalError (errors .New (msg ))
296273 }
297274
275+ var roleARN ackv1alpha1.AWSResourceName
276+ if teamID := r .getTeamID (desired ); teamID != "" && r .cfg .FeatureGates .IsEnabled (featuregate .TeamLevelCARM ) {
277+ // The user is specifying a namespace that is annotated with a team ID.
278+ // Requeue if the corresponding roleARN is not available in the Teams configmap.
279+ // Additionally, set the account ID to the role's account ID.
280+ roleARN , err = r .getRoleARN (string (teamID ), ackrtcache .ACKRoleTeamMap )
281+ if err != nil {
282+ return r .handleCacheError (ctx , err , desired )
283+ }
284+ parsedARN , err := arn .Parse (string (roleARN ))
285+ if err != nil {
286+ return ctrlrt.Result {}, fmt .Errorf ("parsing role ARN %q from %q configmap: %v" , roleARN , ackrtcache .ACKRoleTeamMap , err )
287+ }
288+ acctID = ackv1alpha1 .AWSAccountID (parsedARN .AccountID )
289+ } else if needCARMLookup {
290+ // The user is specifying a namespace that is annotated with an owner account ID.
291+ // Requeue if the corresponding roleARN is not available in the Accounts configmap.
292+ roleARN , err = r .getRoleARN (string (acctID ), ackrtcache .ACKRoleAccountMap )
293+ if err != nil {
294+ fmt .Println ("test" , roleARN , err )
295+ return r .handleCacheError (ctx , err , desired )
296+ }
297+ }
298+
298299 // The config pivot to the roleARN will happen if it is not empty.
299300 // in the NewResourceManager
300301 clientConfig , err := r .sc .NewAWSConfig (ctx , region , & endpointURL , roleARN , gvk )
@@ -319,10 +320,7 @@ func (r *resourceReconciler) Reconcile(ctx context.Context, req ctrlrt.Request)
319320}
320321
321322func regionDrifted (desired acktypes.AWSResource , targetRegion ackv1alpha1.AWSRegion ) bool {
322- if desired .Identifiers ().Region () == nil {
323- return false
324- }
325- return * desired .Identifiers ().Region () != targetRegion
323+ return desired .MetaObject ().GetAnnotations ()[ackv1alpha1 .AnnotationRegion ] != string (targetRegion )
326324}
327325
328326func accountDrifted (desired acktypes.AWSResource , targetAccountID ackv1alpha1.AWSAccountID ) bool {
@@ -1458,6 +1456,11 @@ func getResyncPeriod(rmf acktypes.AWSResourceManagerFactory, cfg ackcfg.Config)
14581456 return defaultResyncPeriod
14591457}
14601458
1459+ // GetCaches returns the extra caches maintained by the ACK runtime
1460+ func (r * resourceReconciler ) GetCaches () ackrtcache.Caches {
1461+ return r .cache
1462+ }
1463+
14611464// NewReconciler returns a new reconciler object
14621465func NewReconciler (
14631466 sc acktypes.ServiceController ,
0 commit comments