Beispiel #1
0
def get_audit_task_logs(context, begin=None, end=None, before=None):
    """Returns a full log for all instance usage audit tasks on all computes.

    :param begin: datetime beginning of audit period to get logs for,
        Defaults to the beginning of the most recently completed
        audit period prior to the 'before' date.
    :param end: datetime ending of audit period to get logs for,
        Defaults to the ending of the most recently completed
        audit period prior to the 'before' date.
    :param before: By default we look for the audit period most recently
        completed before this datetime. Has no effect if both begin and end
        are specified.
    """
    defbegin, defend = utils.last_completed_audit_period(before=before)
    if begin is None:
        begin = defbegin
    if end is None:
        end = defend
    task_logs = db.task_log_get_all(context, "instance_usage_audit",
                                    begin, end)
    services = db.service_get_all_by_topic(context, "compute")
    hosts = set(serv['host'] for serv in services)
    seen_hosts = set()
    done_hosts = set()
    running_hosts = set()
    total_errors = 0
    total_items = 0
    for tlog in task_logs:
        seen_hosts.add(tlog['host'])
        if tlog['state'] == "DONE":
            done_hosts.add(tlog['host'])
        if tlog['state'] == "RUNNING":
            running_hosts.add(tlog['host'])
        total_errors += tlog['errors']
        total_items += tlog['task_items']
    log = dict((tl['host'], dict(state=tl['state'],
                              instances=tl['task_items'],
                              errors=tl['errors'],
                              message=tl['message']))
              for tl in task_logs)
    missing_hosts = hosts - seen_hosts
    overall_status = "%s hosts done. %s errors." % (
                'ALL' if len(done_hosts) == len(hosts)
                else "%s of %s" % (len(done_hosts), len(hosts)),
                total_errors)
    return dict(period_beginning=str(begin),
                period_ending=str(end),
                num_hosts=len(hosts),
                num_hosts_done=len(done_hosts),
                num_hosts_running=len(running_hosts),
                num_hosts_not_run=len(missing_hosts),
                hosts_not_run=list(missing_hosts),
                total_instances=total_items,
                total_errors=total_errors,
                overall_status=overall_status,
                log=log)
Beispiel #2
0
 def get_all(cls,
             context,
             task_name,
             period_beginning,
             period_ending,
             host=None,
             state=None):
     db_task_logs = db.task_log_get_all(context,
                                        task_name,
                                        period_beginning,
                                        period_ending,
                                        host=host,
                                        state=state)
     return base.obj_make_list(context, cls(context), TaskLog, db_task_logs)
Beispiel #3
0
 def get_all(cls, context, task_name, period_beginning, period_ending,
             host=None, state=None):
     db_task_logs = db.task_log_get_all(context, task_name,
                                        period_beginning, period_ending,
                                        host=host, state=state)
     return base.obj_make_list(context, cls(context), TaskLog, db_task_logs)