fix(status): make is_alive matching flexible for 32-char session name truncation
This commit is contained in:
@@ -127,6 +127,17 @@ def _sanitize(n):
|
||||
return n
|
||||
return f"{n[:16]}-{n[-15:]}"[:32]
|
||||
|
||||
def is_alive(name, server):
|
||||
if f"{name}|{server}" in alive or f"{_sanitize(name)}|{server}" in alive:
|
||||
return True
|
||||
prefix = name[:14]
|
||||
suffix = name[-12:]
|
||||
for item in alive:
|
||||
a_name, a_srv = item.split("|", 1) if "|" in item else (item, "default")
|
||||
if a_srv == server and a_name.startswith(prefix) and a_name.endswith(suffix):
|
||||
return True
|
||||
return False
|
||||
|
||||
for s in d.get('herdr_sessions', []):
|
||||
name = s.get('name', '?')
|
||||
server = s.get('herdr_session') or s.get('herdr_server') or s.get('herdr_workspace') or 'default'
|
||||
@@ -139,7 +150,7 @@ for s in d.get('herdr_sessions', []):
|
||||
'name': name,
|
||||
'server': server,
|
||||
'status': s.get('status', '?'),
|
||||
'herdr_alive': f"{name}|{server}" in alive or f"{_sanitize(name)}|{server}" in alive,
|
||||
'herdr_alive': is_alive(name, server),
|
||||
'cmd': pane.get('cmd'),
|
||||
'role': s.get('role'),
|
||||
'resume_state': resume_on_disk(s),
|
||||
@@ -236,11 +247,22 @@ print(f"{'NAME':<44} {'WORKSPACE':<12} {'YAML':<10} {'HERDR':<6} {'CMD':<6} {'RE
|
||||
print("-" * 136)
|
||||
if not sessions:
|
||||
print("(no sessions registered)")
|
||||
def is_alive(name, server):
|
||||
if f"{name}|{server}" in alive or f"{_sanitize(name)}|{server}" in alive:
|
||||
return True
|
||||
prefix = name[:14]
|
||||
suffix = name[-12:]
|
||||
for item in alive:
|
||||
a_name, a_srv = item.split("|", 1) if "|" in item else (item, "default")
|
||||
if a_srv == server and a_name.startswith(prefix) and a_name.endswith(suffix):
|
||||
return True
|
||||
return False
|
||||
|
||||
for s in sessions:
|
||||
name = s.get('name', '?')
|
||||
server = s.get('herdr_session') or s.get('herdr_server') or s.get('herdr_workspace') or 'default'
|
||||
status = s.get('status', '?')
|
||||
herdr = 'alive' if (f"{name}|{server}" in alive or f"{_sanitize(name)}|{server}" in alive) else 'dead'
|
||||
herdr = 'alive' if is_alive(name, server) else 'dead'
|
||||
cmd = (s.get('pane') or {}).get('cmd', '?')
|
||||
res = resume_on_disk(s)
|
||||
jid, jstatus = get_job_status(s)
|
||||
|
||||
Reference in New Issue
Block a user