Compare commits

..

2 Commits

Author SHA1 Message Date
Peter J. Holzer 74c6a19302 Implement descending criticality thresholds 2022-12-27 10:54:19 +01:00
Peter J. Holzer eeb7db96b8 Cap time until full at 1 billion seconds
JSON can't represent infinity (at least not portably) so we need to use
a finite value. I certainly won't be worried if a disk will fill up in
32 years.
2022-12-27 10:50:41 +01:00
2 changed files with 25 additions and 2 deletions

View File

@ -77,7 +77,29 @@ class Widget:
return f"hsl(0, 100%, {brightness}%)" return f"hsl(0, 100%, {brightness}%)"
else: else:
log.debug("the other side") log.debug("the other side")
return "#CCC" if self.lastvalue > self.stops[0]:
log.debug("definitely ok")
return f"hsl(120, 100%, {brightness}%)"
elif self.lastvalue > self.stops[1]:
log.debug("mostly ok")
hue = 120 - round(
(self.lastvalue - self.stops[0])
/ (self.stops[1] - self.stops[0])
* 60
)
return f"hsl({hue}, 100%, {brightness}%)"
elif self.lastvalue > self.stops[2]:
log.debug("maybe fail")
hue = 60 - round(
(self.lastvalue - self.stops[1])
/ (self.stops[2] - self.stops[1])
* 60
)
return f"hsl({hue}, 100%, {brightness}%)"
else:
log.debug("definitely fail")
return f"hsl(0, 100%, {brightness}%)"
class TimeSeries(Widget): class TimeSeries(Widget):
def __init__(self, d): def __init__(self, d):
@ -94,6 +116,7 @@ class Gauge(Widget):
@property @property
def gaugepos(self): def gaugepos(self):
max_value = max([d[1] for d in self.lts.data]) max_value = max([d[1] for d in self.lts.data])
max_value = max(max_value, 1) # ensure positive
log.debug("max_value = %s", max_value) log.debug("max_value = %s", max_value)
return self.lastvalue / max_value * self.gaugesize return self.lastvalue / max_value * self.gaugesize

View File

@ -35,7 +35,7 @@ class DiskFullPredictor:
return return
current_used_bytes = lts.data[-1][1] current_used_bytes = lts.data[-1][1]
current_usable_bytes = usable_lts.data[-1][1] current_usable_bytes = usable_lts.data[-1][1]
tuf = float('inf') tuf = 1E9
for d in reversed(lts.data): for d in reversed(lts.data):
if d[1] < current_usable_bytes * 0.1: if d[1] < current_usable_bytes * 0.1:
continue # for sanity continue # for sanity