Skip to content

Commit cdfe94f

Browse files
committed
Implement visualizations on DDB
1 parent d6158c8 commit cdfe94f

5 files changed

Lines changed: 1085 additions & 196 deletions

File tree

src/rushti/commands.py

Lines changed: 35 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1617,19 +1617,27 @@ def _stats_visualize(args) -> None:
16171617
from rushti.dashboard import generate_dashboard
16181618
from rushti.db_admin import get_visualization_data
16191619
from rushti.settings import load_settings
1620-
from rushti.stats import get_db_path, get_stats_backend
1620+
from rushti.stats import create_stats_database, get_db_path, get_stats_backend
16211621
from rushti.utils import resolve_app_path
16221622

16231623
settings = load_settings(getattr(args, "settings_file", None))
1624-
if get_stats_backend(settings) != "sqlite":
1625-
print("Error: 'stats visualize' currently supports only [stats] backend = sqlite")
1626-
sys.exit(1)
1624+
backend = get_stats_backend(settings)
16271625
db_path = get_db_path(settings)
16281626

1627+
stats_db = None
16291628
try:
1630-
print(f"Generating visualizations for workflow: {args.workflow}")
1629+
stats_db = create_stats_database(
1630+
enabled=True,
1631+
backend=backend,
1632+
db_path=db_path,
1633+
dynamodb_region=settings.stats.dynamodb_region or None,
1634+
dynamodb_runs_table=settings.stats.dynamodb_runs_table,
1635+
dynamodb_task_results_table=settings.stats.dynamodb_task_results_table,
1636+
dynamodb_endpoint_url=settings.stats.dynamodb_endpoint_url or None,
1637+
)
1638+
data = get_visualization_data(args.workflow, stats_db)
16311639

1632-
data = get_visualization_data(args.workflow, db_path)
1640+
print(f"Generating visualizations for workflow: {args.workflow}")
16331641
if not data.get("exists"):
16341642
print(f"Error: {data.get('message')}")
16351643
sys.exit(1)
@@ -1710,6 +1718,9 @@ def _stats_visualize(args) -> None:
17101718

17111719
traceback.print_exc()
17121720
sys.exit(1)
1721+
finally:
1722+
if stats_db is not None:
1723+
stats_db.close()
17131724

17141725

17151726
def _stats_list(args) -> None:
@@ -1721,18 +1732,26 @@ def _stats_list(args) -> None:
17211732
"""
17221733
from rushti.db_admin import list_runs, list_tasks
17231734
from rushti.settings import load_settings
1724-
from rushti.stats import get_db_path, get_stats_backend
1735+
from rushti.stats import create_stats_database, get_db_path, get_stats_backend
17251736

17261737
settings = load_settings(getattr(args, "settings_file", None))
1727-
if get_stats_backend(settings) != "sqlite":
1728-
print("Error: 'stats list' currently supports only [stats] backend = sqlite")
1729-
print("For DynamoDB-backed stats, use 'stats analyze' or 'stats export'.")
1730-
sys.exit(1)
1738+
backend = get_stats_backend(settings)
17311739
db_path = get_db_path(settings)
17321740

1741+
stats_db = None
17331742
try:
1743+
stats_db = create_stats_database(
1744+
enabled=True,
1745+
backend=backend,
1746+
db_path=db_path,
1747+
dynamodb_region=settings.stats.dynamodb_region or None,
1748+
dynamodb_runs_table=settings.stats.dynamodb_runs_table,
1749+
dynamodb_task_results_table=settings.stats.dynamodb_task_results_table,
1750+
dynamodb_endpoint_url=settings.stats.dynamodb_endpoint_url or None,
1751+
)
1752+
17341753
if args.list_type == "runs":
1735-
runs = list_runs(args.workflow, db_path, limit=args.limit)
1754+
runs = list_runs(args.workflow, stats_db, limit=args.limit)
17361755
if not runs:
17371756
print(f"No runs found for workflow: {args.workflow}")
17381757
sys.exit(0)
@@ -1751,7 +1770,7 @@ def _stats_list(args) -> None:
17511770
)
17521771

17531772
elif args.list_type == "tasks":
1754-
tasks = list_tasks(args.workflow, db_path)
1773+
tasks = list_tasks(args.workflow, stats_db)
17551774
if not tasks:
17561775
print(f"No tasks found for workflow: {args.workflow}")
17571776
sys.exit(0)
@@ -1779,6 +1798,9 @@ def _stats_list(args) -> None:
17791798
except Exception as e:
17801799
print(f"Error: {e}")
17811800
sys.exit(1)
1801+
finally:
1802+
if stats_db is not None:
1803+
stats_db.close()
17821804

17831805

17841806
def run_db_command(argv: list) -> None:

0 commit comments

Comments
 (0)