Просмотр исходного кода

fix: Preserve total costs during ProportionalAssetResourceCosts aggregation

When aggregating ProportionalAssetResourceCost entries via the Insert() method,
only the proportional costs were being preserved, while the total cost fields
(CPUTotalCost, RAMTotalCost, etc.) were being lost. This caused ComputePercentages()
to divide proportional costs by zero, resulting in NaN values.

This fix ensures total costs are also aggregated during insertion, preventing
NaN warnings in the logs during allocation aggregation.
Claude 6 месяцев назад
Родитель
Сommit
f308397891
1 измененных файлов с 6 добавлено и 0 удалено
  1. 6 0
      core/pkg/opencost/allocation.go

+ 6 - 0
core/pkg/opencost/allocation.go

@@ -480,6 +480,12 @@ func (parcs ProportionalAssetResourceCosts) Insert(parc ProportionalAssetResourc
 			GPUProportionalCost:          curr.GPUProportionalCost + parc.GPUProportionalCost,
 			PVProportionalCost:           curr.PVProportionalCost + parc.PVProportionalCost,
 			LoadBalancerProportionalCost: curr.LoadBalancerProportionalCost + parc.LoadBalancerProportionalCost,
+			// Preserve total costs during aggregation to prevent NaN values in ComputePercentages
+			CPUTotalCost:          curr.CPUTotalCost + parc.CPUTotalCost,
+			RAMTotalCost:          curr.RAMTotalCost + parc.RAMTotalCost,
+			GPUTotalCost:          curr.GPUTotalCost + parc.GPUTotalCost,
+			PVTotalCost:           curr.PVTotalCost + parc.PVTotalCost,
+			LoadBalancerTotalCost: curr.LoadBalancerTotalCost + parc.LoadBalancerTotalCost,
 		}
 
 		ComputePercentages(&toInsert)