feat: add configurable CPU and memory scaling thresholds for auto-scaling
Build & Test (NowChessSystems) TeamCity build finished

This commit is contained in:
2026-05-16 15:22:56 +02:00
parent b47ad7ef89
commit a07bf89fae
@@ -98,7 +98,13 @@ class AutoScaler:
else if s.endsWith("G") then s.dropRight(1).toLongOption.map(_ * 1000L * 1000L * 1000L).getOrElse(0L) else if s.endsWith("G") then s.dropRight(1).toLongOption.map(_ * 1000L * 1000L * 1000L).getOrElse(0L)
else s.toLongOption.getOrElse(0L) else s.toLongOption.getOrElse(0L)
private def exceedsRatio(used: Long, request: Long, threshold: Double, resource: String, instanceId: String): Boolean = private def exceedsRatio(
used: Long,
request: Long,
threshold: Double,
resource: String,
instanceId: String,
): Boolean =
if request <= 0 then false if request <= 0 then false
else else
val ratio = used.toDouble / request.toDouble val ratio = used.toDouble / request.toDouble
@@ -126,8 +132,10 @@ class AutoScaler:
.flatMap(c => Option(c.getResources)) .flatMap(c => Option(c.getResources))
.flatMap(r => Option(r.getRequests)) .flatMap(r => Option(r.getRequests))
val cpuRequestMillis = requests.flatMap(m => Option(m.get("cpu"))).map(q => parseMillicores(q.toString)).getOrElse(0L) val cpuRequestMillis =
val memRequestBytes = requests.flatMap(m => Option(m.get("memory"))).map(q => parseBytes(q.toString)).getOrElse(0L) requests.flatMap(m => Option(m.get("cpu"))).map(q => parseMillicores(q.toString)).getOrElse(0L)
val memRequestBytes =
requests.flatMap(m => Option(m.get("memory"))).map(q => parseBytes(q.toString)).getOrElse(0L)
if cpuRequestMillis <= 0 && memRequestBytes <= 0 then if cpuRequestMillis <= 0 && memRequestBytes <= 0 then
log.debugf("No resource requests found for instance %s, skipping resource check", instanceId) log.debugf("No resource requests found for instance %s, skipping resource check", instanceId)