@@ -45,7 +45,28 @@ func (s *OciConfigService) Costs(ctx context.Context, id uint, q oci.CostQuery)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return s.client.SummarizeCosts(ctx, cred, q)
|
||||
items, err := s.client.SummarizeCosts(ctx, cred, q)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return filterCostWindow(items, q.StartTime, q.EndTime), nil
|
||||
}
|
||||
|
||||
// filterCostWindow 只保留落在请求窗口 [start, end) 内的行:Usage API 的
|
||||
// HOURLY 粒度会把起点下扩到 UTC 日零点,返回窗口之外的整日数据。
|
||||
func filterCostWindow(items []oci.CostItem, start, end time.Time) []oci.CostItem {
|
||||
out := items[:0]
|
||||
for _, it := range items {
|
||||
if it.TimeStart == nil {
|
||||
continue
|
||||
}
|
||||
ts := it.TimeStart.UTC()
|
||||
if ts.Before(start) || !ts.Before(end) {
|
||||
continue
|
||||
}
|
||||
out = append(out, it)
|
||||
}
|
||||
return out
|
||||
}
|
||||
|
||||
// applyCostDefaults 填充缺省值并把时间对齐到粒度边界(Usage API 要求)。
|
||||
|
||||
Reference in New Issue
Block a user