Example #1
0
def has_audit_been_run(context, conductor, host, timestamp=None):
    begin, end = utils.last_completed_audit_period(before=timestamp)
    task_log = conductor.task_log_get(context, "instance_usage_audit", begin,
                                      end, host)
    if task_log:
        return True
    else:
        return False
Example #2
0
def has_audit_been_run(context, conductor, host, timestamp=None):
    begin, end = utils.last_completed_audit_period(before=timestamp)
    task_log = conductor.task_log_get(context, "instance_usage_audit",
                                      begin, end, host)
    if task_log:
        return True
    else:
        return False
Example #3
0
 def test_year_with_offset_after_current(self):
     begin, end = utils.last_completed_audit_period(unit='year@6')
     self.assertEqual(begin, datetime.datetime(
                                        day=1,
                                        month=6,
                                        year=2010))
     self.assertEqual(end, datetime.datetime(
                                        day=1,
                                        month=6,
                                        year=2011))
Example #4
0
 def test_year(self):
     begin, end = utils.last_completed_audit_period(unit='year')
     self.assertEqual(begin, datetime.datetime(
                                        day=1,
                                        month=1,
                                        year=2011))
     self.assertEqual(end, datetime.datetime(
                                        day=1,
                                        month=1,
                                        year=2012))
Example #5
0
 def test_month_with_offset_after_current(self):
     begin, end = utils.last_completed_audit_period(unit='month@15')
     self.assertEqual(begin, datetime.datetime(
                                        day=15,
                                        month=1,
                                        year=2012))
     self.assertEqual(end, datetime.datetime(
                                        day=15,
                                        month=2,
                                        year=2012))
Example #6
0
 def test_day(self):
     begin, end = utils.last_completed_audit_period(unit='day')
     self.assertEqual(begin, datetime.datetime(
                                        day=4,
                                        month=3,
                                        year=2012))
     self.assertEqual(end, datetime.datetime(
                                        day=5,
                                        month=3,
                                        year=2012))
Example #7
0
 def test_hour_with_offset_after_current(self):
     begin, end = utils.last_completed_audit_period(unit='hour@30')
     self.assertEqual(
         begin,
         datetime.datetime(minute=30, hour=6, day=5, month=3, year=2012))
     self.assertEqual(
         end, datetime.datetime(minute=30,
                                hour=7,
                                day=5,
                                month=3,
                                year=2012))
Example #8
0
 def test_day_with_offset_after_current(self):
     begin, end = utils.last_completed_audit_period(unit='day@10')
     self.assertEqual(begin, datetime.datetime(
                                        hour=10,
                                        day=3,
                                        month=3,
                                        year=2012))
     self.assertEqual(end, datetime.datetime(
                                        hour=10,
                                        day=4,
                                        month=3,
                                        year=2012))
Example #9
0
 def test_hour(self):
     begin, end = utils.last_completed_audit_period(unit='hour')
     self.assertEqual(begin, datetime.datetime(
                                        hour=7,
                                        day=5,
                                        month=3,
                                        year=2012))
     self.assertEqual(end, datetime.datetime(
                                        hour=8,
                                        day=5,
                                        month=3,
                                        year=2012))
Example #10
0
 def test_hour_with_offset_after_current(self):
     begin, end = utils.last_completed_audit_period(unit='hour@30')
     self.assertEqual(begin, datetime.datetime(
                                        minute=30,
                                        hour=6,
                                        day=5,
                                        month=3,
                                        year=2012))
     self.assertEqual(end, datetime.datetime(
                                        minute=30,
                                        hour=7,
                                        day=5,
                                        month=3,
                                        year=2012))
Example #11
0
def audit_period_bounds(current_period=False):
    """Get the start and end of the relevant audit usage period

    :param current_period: if True, this will generate a usage for the
        current usage period; if False, this will generate a usage for the
        previous audit period.
    """

    begin, end = utils.last_completed_audit_period()
    if current_period:
        audit_start = end
        audit_end = timeutils.utcnow()
    else:
        audit_start = begin
        audit_end = end

    return (audit_start, audit_end)
Example #12
0
    def _get_audit_task_logs(self, 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 = self.host_api.task_log_get_all(context,
                                                   "instance_usage_audit",
                                                   begin, end)
        # We do this this way to include disabled compute services,
        # which can have instances on them. (mdragon)
        filters = {'topic': CONF.compute_topic}
        services = self.host_api.service_get_all(context, filters=filters)
        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 = {
            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)
    def _get_audit_task_logs(self, 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 = self.host_api.task_log_get_all(context,
                                                   "instance_usage_audit",
                                                   begin, end)
        # We do this this way to include disabled compute services,
        # which can have instances on them. (mdragon)
        filters = {'topic': CONF.compute_topic}
        services = self.host_api.service_get_all(context, filters=filters)
        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 = {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)
Example #14
0
 def test_hour(self):
     begin, end = utils.last_completed_audit_period(unit='hour')
     self.assertEqual(begin,
                      datetime.datetime(hour=7, day=5, month=3, year=2012))
     self.assertEqual(end,
                      datetime.datetime(hour=8, day=5, month=3, year=2012))
Example #15
0
 def test_year_with_offset_after_current(self):
     begin, end = utils.last_completed_audit_period(unit='year@6')
     self.assertEqual(begin, datetime.datetime(day=1, month=6, year=2010))
     self.assertEqual(end, datetime.datetime(day=1, month=6, year=2011))
Example #16
0
 def test_year(self):
     begin, end = utils.last_completed_audit_period(unit='year')
     self.assertEqual(begin, datetime.datetime(day=1, month=1, year=2011))
     self.assertEqual(end, datetime.datetime(day=1, month=1, year=2012))
Example #17
0
 def test_month_with_offset_after_current(self):
     begin, end = utils.last_completed_audit_period(unit='month@15')
     self.assertEqual(begin, datetime.datetime(day=15, month=1, year=2012))
     self.assertEqual(end, datetime.datetime(day=15, month=2, year=2012))
Example #18
0
 def test_day_with_offset_after_current(self):
     begin, end = utils.last_completed_audit_period(unit='day@10')
     self.assertEqual(begin,
                      datetime.datetime(hour=10, day=3, month=3, year=2012))
     self.assertEqual(end,
                      datetime.datetime(hour=10, day=4, month=3, year=2012))
Example #19
0
 def test_day(self):
     begin, end = utils.last_completed_audit_period(unit='day')
     self.assertEqual(begin, datetime.datetime(day=4, month=3, year=2012))
     self.assertEqual(end, datetime.datetime(day=5, month=3, year=2012))