def get_resources_from_all_accounts()

in src/inventory/readers.py [0:0]


    def get_resources_from_all_accounts(self) -> List[InventoryData]:
        _logger.info("starting retrieval of inventory from AWS Config")

        all_inventory : List[InventoryData] = []
        accounts = json.loads(os.environ["ACCOUNT_LIST"])

        for account in accounts:
            _logger.info(f"retrieving inventory for account {account['id']}")

            for resource_list_page in self._get_resources_from_account(account["id"]):
                _logger.debug(f"current page of inventory contained {len(resource_list_page)} items from AWS Config")

                for raw_resource in resource_list_page:
                    resource : dict = json.loads(raw_resource)

                    # One line item returned from AWS Config can result in multiple inventory line items (e.g. multiple IPs)
                    # Mappers that do not support the resource type will return False
                    mapper: Optional[DataMapper] = next((mapper for mapper in self._mappers if mapper.can_map(resource["resourceType"])), None)
                    
                    if not mapper:
                        _logger.warning(f"skipping mapping, unable to find mapper for resource type of {resource['resourceType']}")

                        continue

                    if len(inventory_items := mapper.map(resource)) > 0:
                        all_inventory.extend(inventory_items)

        _logger.info(f"completed getting inventory, with a total of {len(all_inventory)}")

        return all_inventory