27 lines
2.6 KiB
Python
27 lines
2.6 KiB
Python
"""Publish 2 on the standing live boxes (shipper, 22:43Z): the sixteen-field object replaces /root/fleet/override.json on every
|
|
live standing box, the node is restarted on it (the supervisor's start_node, data dir kept; the miner restarts with the node and
|
|
is held until synced), then the read-back: digest line (must be eada4bda...), synced, miner up. Devnet 2 boxes untouched."""
|
|
import sys, os, time; sys.path.insert(0, "/Users/joshm/Projects/igneum-wt-gpu-fleet/tools/fleet"); from lib import Box, Registry, standing
|
|
from concurrent.futures import ThreadPoolExecutor
|
|
def st(): return time.strftime("%H:%M:%SZ", time.gmtime())
|
|
F16=os.path.expanduser("~/Desktop/fleet/override-16.json"); WANT="eada4bda8aa8368c"
|
|
live=[r["label"] for r in standing.roster() if r["role"]=="live"]
|
|
def move(l):
|
|
try:
|
|
b=Box.from_registry(l); b.put([F16], "/root/fleet/override-16.json")
|
|
rc,out,err=b.run("cd /root/fleet && cp override.json override-13.json && cp override-16.json override.json && python3 -c \"import json; d=json.load(open('/root/fleet/override.json')); print('fields', len(d))\" && pkill -9 -f '[/](opt/igneum/pkg/bin|root/fleet/in)/igneumd(-0313|-[0-9a-f]{16})? --devnet --appdir=' ; echo killed-for-restart $(date -u +%T)", 60)
|
|
return l, out.replace("\n"," ").strip()+(" ERR "+err[:60] if err.strip() else "")
|
|
except Exception as e: return l, "EXC "+str(e)[:60]
|
|
print(st(), "moving", len(live), "boxes", flush=True)
|
|
with ThreadPoolExecutor(14) as ex:
|
|
for l,o in ex.map(move, live): print(st(), l, o, flush=True)
|
|
time.sleep(150)
|
|
def read(l):
|
|
try:
|
|
rc,out,err=Box.from_registry(l).run("echo digest=$(grep -o 'digest: [0-9a-f]*' /root/fleet/node.log | tail -1 | awk '{print substr($2,1,16)}') vline=$(grep -oE 'igneumd/2\\.1\\.0-[0-9a-f]+' /root/fleet/node.log | tail -1) fields=$(python3 -c \"import json; print(len(json.load(open('/root/fleet/override.json'))))\") $(/opt/igneum/pkg/bin/igneum-miner watch 1 grpc://127.0.0.1:26610 2>/dev/null | grep -oE 'blocks=[0-9]+|peers=[0-9]+|synced=[a-z]+' | tr '\\n' ' ') miner=$(pgrep -f '[/]opt/igneum/pkg/bin/igneum-miner mine' | wc -l) rej_since=$(awk '$2 >= \"22:47:00\"' /root/fleet/node.log | grep -c 'got reject message') v4=\"$(grep -E 'Program class v4 (signal window|from the override)' /root/fleet/node.log | tail -2 | sed -E 's/^[0-9: .+-]*//' | cut -c1-70 | tr '\\n' ';')\"", 60)
|
|
return l, out.strip().split("\n")[-1]
|
|
except Exception as e: return l, "EXC "+str(e)[:60]
|
|
with ThreadPoolExecutor(14) as ex: res=list(ex.map(read, live))
|
|
ok=0
|
|
for l,o in res: print(st(), l, "::", o, flush=True); ok += ("digest="+WANT) in o
|
|
print(st(), f"TABLE {ok} of {len(live)} on {WANT}", flush=True)
|