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 n
|
||||||
return f"{n[:16]}-{n[-15:]}"[:32]
|
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', []):
|
for s in d.get('herdr_sessions', []):
|
||||||
name = s.get('name', '?')
|
name = s.get('name', '?')
|
||||||
server = s.get('herdr_session') or s.get('herdr_server') or s.get('herdr_workspace') or 'default'
|
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,
|
'name': name,
|
||||||
'server': server,
|
'server': server,
|
||||||
'status': s.get('status', '?'),
|
'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'),
|
'cmd': pane.get('cmd'),
|
||||||
'role': s.get('role'),
|
'role': s.get('role'),
|
||||||
'resume_state': resume_on_disk(s),
|
'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)
|
print("-" * 136)
|
||||||
if not sessions:
|
if not sessions:
|
||||||
print("(no sessions registered)")
|
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:
|
for s in sessions:
|
||||||
name = s.get('name', '?')
|
name = s.get('name', '?')
|
||||||
server = s.get('herdr_session') or s.get('herdr_server') or s.get('herdr_workspace') or 'default'
|
server = s.get('herdr_session') or s.get('herdr_server') or s.get('herdr_workspace') or 'default'
|
||||||
status = s.get('status', '?')
|
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', '?')
|
cmd = (s.get('pane') or {}).get('cmd', '?')
|
||||||
res = resume_on_disk(s)
|
res = resume_on_disk(s)
|
||||||
jid, jstatus = get_job_status(s)
|
jid, jstatus = get_job_status(s)
|
||||||
|
|||||||
Reference in New Issue
Block a user