def _copy_managed_policies_arn()

in migration/bring-your-own-role/byor.py [0:0]


def _copy_managed_policies_arn(source_role, dest_role, iam_client, execute_flag):
    paginator = iam_client.get_paginator('list_attached_role_policies')
    policies_to_attach = []
    for page in paginator.paginate(RoleName=source_role['Role']['RoleName']):
        for policy in page['AttachedPolicies']:
            policies_to_attach.append(policy['PolicyArn'])
    
    _replace_role_arn_in_policies(policies_to_attach, iam_client, source_role['Role']['Arn'], dest_role['Role']['Arn'], execute_flag)

    if execute_flag:
        for policy_arn in policies_to_attach:
            iam_client.attach_role_policy(
                RoleName=dest_role['Role']['RoleName'],
                PolicyArn=policy_arn
            )
        print(f"Managed policies attached successfully to role: `{dest_role['Role']['RoleName']}`\n")
    else:
        print(f"Managed policies to attach to role `{dest_role['Role']['RoleName']}` would be:")
        pprint(policies_to_attach)
        print(f"Managed policies attach skipped for role: `{dest_role['Role']['RoleName']}`, set --execute flag to True to do the actual update.\n")