def METHOD_NAME(self):
    """Runs the data collection.
    Returns:
        list: ServiceAccount objects
    """
    model_manager = self.service_config.model_manager
    scoped_session, data_access = model_manager.get(self.model_name)
    with scoped_session as session:
        service_accounts = []
        for service_account in data_access.scanner_iter(
                session, 'serviceaccount'):
            project_id = service_account.parent.name
            service_accounts.append(
                ServiceAccount.from_json(project_id,
                                         service_account.full_name,
                                         service_account.data,
                                         None))
        # Retrieve the service account key via a separate query because
        # session in the middle of yield_per() can not support simultaneous
        # queries.
        for service_account in service_accounts:
            position = (
                service_account.full_name.find('serviceaccount'))
            service_acc_type_name = (
                service_account.full_name[position:][:-1])
            keys = list(data_access.scanner_iter(
                session, 'serviceaccount_key',
                parent_type_name=service_acc_type_name))
            service_account.keys = ServiceAccount.parse_json_keys(keys)
    return service_accounts