dayhoff-tools 1.8.6__tar.gz → 1.8.7__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {dayhoff_tools-1.8.6 → dayhoff_tools-1.8.7}/PKG-INFO +1 -1
- {dayhoff_tools-1.8.6 → dayhoff_tools-1.8.7}/dayhoff_tools/cli/engine_commands.py +42 -0
- {dayhoff_tools-1.8.6 → dayhoff_tools-1.8.7}/pyproject.toml +1 -1
- {dayhoff_tools-1.8.6 → dayhoff_tools-1.8.7}/README.md +0 -0
- {dayhoff_tools-1.8.6 → dayhoff_tools-1.8.7}/dayhoff_tools/__init__.py +0 -0
- {dayhoff_tools-1.8.6 → dayhoff_tools-1.8.7}/dayhoff_tools/chemistry/standardizer.py +0 -0
- {dayhoff_tools-1.8.6 → dayhoff_tools-1.8.7}/dayhoff_tools/chemistry/utils.py +0 -0
- {dayhoff_tools-1.8.6 → dayhoff_tools-1.8.7}/dayhoff_tools/cli/__init__.py +0 -0
- {dayhoff_tools-1.8.6 → dayhoff_tools-1.8.7}/dayhoff_tools/cli/cloud_commands.py +0 -0
- {dayhoff_tools-1.8.6 → dayhoff_tools-1.8.7}/dayhoff_tools/cli/main.py +0 -0
- {dayhoff_tools-1.8.6 → dayhoff_tools-1.8.7}/dayhoff_tools/cli/swarm_commands.py +0 -0
- {dayhoff_tools-1.8.6 → dayhoff_tools-1.8.7}/dayhoff_tools/cli/utility_commands.py +0 -0
- {dayhoff_tools-1.8.6 → dayhoff_tools-1.8.7}/dayhoff_tools/deployment/base.py +0 -0
- {dayhoff_tools-1.8.6 → dayhoff_tools-1.8.7}/dayhoff_tools/deployment/deploy_aws.py +0 -0
- {dayhoff_tools-1.8.6 → dayhoff_tools-1.8.7}/dayhoff_tools/deployment/deploy_gcp.py +0 -0
- {dayhoff_tools-1.8.6 → dayhoff_tools-1.8.7}/dayhoff_tools/deployment/deploy_utils.py +0 -0
- {dayhoff_tools-1.8.6 → dayhoff_tools-1.8.7}/dayhoff_tools/deployment/job_runner.py +0 -0
- {dayhoff_tools-1.8.6 → dayhoff_tools-1.8.7}/dayhoff_tools/deployment/processors.py +0 -0
- {dayhoff_tools-1.8.6 → dayhoff_tools-1.8.7}/dayhoff_tools/deployment/swarm.py +0 -0
- {dayhoff_tools-1.8.6 → dayhoff_tools-1.8.7}/dayhoff_tools/embedders.py +0 -0
- {dayhoff_tools-1.8.6 → dayhoff_tools-1.8.7}/dayhoff_tools/fasta.py +0 -0
- {dayhoff_tools-1.8.6 → dayhoff_tools-1.8.7}/dayhoff_tools/file_ops.py +0 -0
- {dayhoff_tools-1.8.6 → dayhoff_tools-1.8.7}/dayhoff_tools/h5.py +0 -0
- {dayhoff_tools-1.8.6 → dayhoff_tools-1.8.7}/dayhoff_tools/intake/gcp.py +0 -0
- {dayhoff_tools-1.8.6 → dayhoff_tools-1.8.7}/dayhoff_tools/intake/gtdb.py +0 -0
- {dayhoff_tools-1.8.6 → dayhoff_tools-1.8.7}/dayhoff_tools/intake/kegg.py +0 -0
- {dayhoff_tools-1.8.6 → dayhoff_tools-1.8.7}/dayhoff_tools/intake/mmseqs.py +0 -0
- {dayhoff_tools-1.8.6 → dayhoff_tools-1.8.7}/dayhoff_tools/intake/structure.py +0 -0
- {dayhoff_tools-1.8.6 → dayhoff_tools-1.8.7}/dayhoff_tools/intake/uniprot.py +0 -0
- {dayhoff_tools-1.8.6 → dayhoff_tools-1.8.7}/dayhoff_tools/logs.py +0 -0
- {dayhoff_tools-1.8.6 → dayhoff_tools-1.8.7}/dayhoff_tools/sqlite.py +0 -0
- {dayhoff_tools-1.8.6 → dayhoff_tools-1.8.7}/dayhoff_tools/warehouse.py +0 -0
@@ -892,6 +892,48 @@ def engine_status(
|
|
892
892
|
disk_usage = get_disk_usage_via_ssm(engine["instance_id"]) or "-"
|
893
893
|
status_lines.append(f"Disk: {disk_usage}")
|
894
894
|
|
895
|
+
# Idle timeout (show even when not idle)
|
896
|
+
idle_threshold_secs: Optional[int] = None
|
897
|
+
# Prefer value from idle detector overlay if present
|
898
|
+
try:
|
899
|
+
if isinstance(idle_detector.get("idle_threshold"), (int, float)):
|
900
|
+
idle_threshold_secs = int(idle_detector["idle_threshold"])
|
901
|
+
except Exception:
|
902
|
+
idle_threshold_secs = None
|
903
|
+
|
904
|
+
if idle_threshold_secs is None and engine["state"].lower() == "running":
|
905
|
+
# Fallback: read /etc/engine.env via SSM
|
906
|
+
try:
|
907
|
+
ssm = boto3.client("ssm", region_name="us-east-1")
|
908
|
+
resp = ssm.send_command(
|
909
|
+
InstanceIds=[engine["instance_id"]],
|
910
|
+
DocumentName="AWS-RunShellScript",
|
911
|
+
Parameters={
|
912
|
+
"commands": [
|
913
|
+
"grep -E '^IDLE_TIMEOUT_SECONDS=' /etc/engine.env | cut -d'=' -f2 || echo 1800",
|
914
|
+
],
|
915
|
+
"executionTimeout": ["5"],
|
916
|
+
},
|
917
|
+
)
|
918
|
+
cid = resp["Command"]["CommandId"]
|
919
|
+
time.sleep(1)
|
920
|
+
inv = ssm.get_command_invocation(
|
921
|
+
CommandId=cid, InstanceId=engine["instance_id"]
|
922
|
+
)
|
923
|
+
if inv.get("Status") == "Success":
|
924
|
+
out = (inv.get("StandardOutputContent") or "").strip()
|
925
|
+
if out:
|
926
|
+
idle_threshold_secs = int(out.splitlines()[0].strip())
|
927
|
+
except Exception:
|
928
|
+
idle_threshold_secs = None
|
929
|
+
|
930
|
+
if idle_threshold_secs is None:
|
931
|
+
idle_threshold_secs = 1800
|
932
|
+
|
933
|
+
status_lines.append(
|
934
|
+
f"Idle timeout: {idle_threshold_secs//60}m ({idle_threshold_secs}s)"
|
935
|
+
)
|
936
|
+
|
895
937
|
# Health report (only if bootstrap finished)
|
896
938
|
if stage_val == "finished":
|
897
939
|
try:
|
@@ -5,7 +5,7 @@ build-backend = "poetry.core.masonry.api"
|
|
5
5
|
|
6
6
|
[project]
|
7
7
|
name = "dayhoff-tools"
|
8
|
-
version = "1.8.
|
8
|
+
version = "1.8.7"
|
9
9
|
description = "Common tools for all the repos at Dayhoff Labs"
|
10
10
|
authors = [
|
11
11
|
{name = "Daniel Martin-Alarcon", email = "dma@dayhofflabs.com"}
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|