upgrade script
This commit is contained in:
@@ -60,9 +60,19 @@ def db_call(method, path, payload):
|
||||
return body.get("data")
|
||||
|
||||
|
||||
def already_stored(start_ms):
|
||||
rows = db_call("POST", f"/api/db-query/{TABLE}/", {"filters": [], "orderBy": ["start_time"], "limit": 1000}) or []
|
||||
return any(abs(row["start_time"] - start_ms) < MATCH_MS for row in rows)
|
||||
def stored_rows():
|
||||
return db_call("POST", f"/api/db-query/{TABLE}/", {"filters": [], "orderBy": ["start_time"], "limit": 1000}) or []
|
||||
|
||||
|
||||
def find_row(rows, start_ms):
|
||||
return next((row for row in rows if abs(row["start_time"] - start_ms) < MATCH_MS), None)
|
||||
|
||||
|
||||
def open_row(start_ms):
|
||||
row = {"start_time": start_ms, "end_time": None, "duration_s": 0, "coverage": 0}
|
||||
for prefix in ("cpu", "ram", "disk"):
|
||||
row[f"{prefix}_mean"], row[f"{prefix}_max"] = 0, 0
|
||||
return row
|
||||
|
||||
|
||||
def mean_max(series, start_ms, end_ms):
|
||||
@@ -87,16 +97,27 @@ def build_row(start_ms, end_ms):
|
||||
return row
|
||||
|
||||
|
||||
def main():
|
||||
session = previous_session(current_boot_ms())
|
||||
def close_previous(rows, boot_ms):
|
||||
session = previous_session(boot_ms)
|
||||
if session is None:
|
||||
print("no previous session in the uptime history", flush=True)
|
||||
return
|
||||
if already_stored(session[0]):
|
||||
print("previous session already stored", session[0], flush=True)
|
||||
return
|
||||
row = build_row(*session)
|
||||
print("stored", db_call("POST", f"/api/db/{TABLE}/", row), row, flush=True)
|
||||
stored = find_row(rows, session[0])
|
||||
if stored is None:
|
||||
print("previous session stored", db_call("POST", f"/api/db/{TABLE}/", row), row, flush=True)
|
||||
elif stored.get("end_time") is None:
|
||||
db_call("PUT", f"/api/db/{TABLE}/{stored['id']}/", row)
|
||||
print("previous session closed", stored["id"], row, flush=True)
|
||||
|
||||
|
||||
def main():
|
||||
boot_ms = current_boot_ms()
|
||||
rows = stored_rows()
|
||||
if find_row(rows, boot_ms) is not None:
|
||||
return
|
||||
close_previous(rows, boot_ms)
|
||||
print("current session opened", db_call("POST", f"/api/db/{TABLE}/", open_row(boot_ms)), flush=True)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
|
||||
Reference in New Issue
Block a user