'Get task logs from the DB from all cells or a particular
cell.
If \'host\' is not None, host will be of the format \'cell!name@host\',
with \'@host\' being optional.  The query will be directed to the
appropriate cell and return all task logs, or task logs matching
the host if specified.
\'state\' also may be None.  If it\'s not, filter by the state as well.'

def task_log_get_all(self, ctxt, task_name, period_beginning, period_ending, host=None, state=None):

    if (host is None):
        cell_name = None
    else:
        (cell_name, host) = cells_utils.split_cell_and_item(host)
        if (cell_name is None):
            (cell_name, host) = (host, cell_name)
    responses = self.msg_runner.task_log_get_all(ctxt, cell_name, task_name, period_beginning, period_ending, host=host, state=state)
    ret_task_logs = []
    for response in responses:
        task_logs = response.value_or_raise()
        for task_log in task_logs:
            cells_utils.add_cell_to_task_log(task_log, response.cell_name)
            ret_task_logs.append(task_log)
    return ret_task_logs
