Example #1
0
    def __call__(self, line_item):
        rid = line_item['lineItemId']
        description = line_item['description']
        account = line_item['accountId']
        project_number = line_item['projectNumber']
        project_name = project_number if not 'projectName' in line_item else line_item[
            'projectName']
        usage_start = self._time_cache[line_item['startTime']]
        usage_end = self._time_cache[line_item['endTime']]
        cost = parse_float(line_item['cost']['amount'])

        credits = 0
        if 'credits' in line_item:
            for credit in line_item['credits']:
                credits += parse_float(credit['amount'])

        day = usage_end.date()
        key = (day, rid, project_number)
        if key not in self._resource_by_day:
            self._resource_by_day[key] = dict(description=description,
                                              project_name=project_name,
                                              product=rid.rsplit('/', 1)[0],
                                              date=day,
                                              cost=cost + credits,
                                              account=account,
                                              rid=rid,
                                              id=checksum(
                                                  account, *map(str, key)))
        else:
            self._resource_by_day[key]['cost'] += cost
            self._resource_by_day[key]['cost'] += credits
Example #2
0
 def get_instance_metric_records(identity, project, since):
     for metric in gcloud_get_instance_metrics(identity, project, since):
         id = checksum(str(metric['time']),
                       metric['metric'],
                       metric['resource'],
                       identity.email)
         yield GoogleMetric(meta={'id': id}, identity=identity.email, **metric)
Example #3
0
 def get_daily_resource_usage_records():
     for usage in res_by_day.results():
         yield GoogleDailyResource(
             meta={'id': checksum(usage.pop('id'), identity.email)},
             identity=identity.email,
             **usage)
Example #4
0
 def get_bucket_object_access_records():
     for log in get_object_access_logs(session, since):
         id = checksum(str(log['time']), log['bucket'], log['object'])
         yield AWSAccessLog(meta={'id': id}, key=key.key, **log)
Example #5
0
 def get_bucket_metrics_records():
     for metric in get_bucket_metrics(session, since):
         id = checksum(str(metric['time']), metric['metric'],
                       metric['resource'])
         yield AWSMetric(meta={'id': id}, key=key.key, **metric)