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
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)
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)
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)
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)