Skip to content

Commit

Permalink
Merge pull request #655 from sapcc/liquid-nova-capacity-underflow
Browse files Browse the repository at this point in the history
liquid-nova: fix potential uint underflows in capacity calculation
  • Loading branch information
majewsky authored Feb 4, 2025
2 parents 02455f2 + b6a3b65 commit a005640
Showing 1 changed file with 3 additions and 3 deletions.
6 changes: 3 additions & 3 deletions internal/liquids/nova/capacity.go
Original file line number Diff line number Diff line change
Expand Up @@ -504,9 +504,9 @@ func (l *Logic) ScanCapacity(ctx context.Context, req liquid.ServiceCapacityRequ
capacities["ram"].PerAZ[az] = liquids.PointerTo(azCapacity.IntoCapacityData("ram", float64(maxRootDiskSize), builder.RAMSubcapacities))
for _, flavor := range splitFlavors {
count := matchingHypervisors.PlacementCountForFlavor(flavor.Name)
capacities["cores"].PerAZ[az].Capacity -= coresDemand.OvercommitFactor.ApplyInReverseTo(count * liquidapi.AtLeastZero(flavor.VCPUs))
capacities["instances"].PerAZ[az].Capacity-- //TODO: not accurate when uint64(flavor.Disk) != maxRootDiskSize
capacities["ram"].PerAZ[az].Capacity -= count * liquidapi.AtLeastZero(flavor.RAM)
capacities["cores"].PerAZ[az].Capacity = liquidapi.SaturatingSub(capacities["cores"].PerAZ[az].Capacity, coresDemand.OvercommitFactor.ApplyInReverseTo(count*liquidapi.AtLeastZero(flavor.VCPUs)))
capacities["instances"].PerAZ[az].Capacity = liquidapi.SaturatingSub(capacities["instances"].PerAZ[az].Capacity, count) //TODO: not accurate when uint64(flavor.Disk) != maxRootDiskSize
capacities["ram"].PerAZ[az].Capacity = liquidapi.SaturatingSub(capacities["ram"].PerAZ[az].Capacity, count*liquidapi.AtLeastZero(flavor.RAM))
}
}

Expand Down

0 comments on commit a005640

Please sign in to comment.