Skip to content

feat: "Open in LogAnalyzer" hand-off from result/comparison view - #86

Merged
svigerske merged 4 commits into
scipopt:mainfrom
mmghannam:integrate-loganalyzer
Jul 31, 2026
Merged

feat: "Open in LogAnalyzer" hand-off from result/comparison view#86
svigerske merged 4 commits into
scipopt:mainfrom
mmghannam:integrate-loganalyzer

Conversation

@mmghannam

@mmghannam mmghannam commented Jul 30, 2026

Copy link
Copy Markdown
Member

Adds an "Open in LogAnalyzer" button on the result/comparison view that hands
the run's raw solver logs (same zip as the download button) to a LogAnalyzer
instance for richer comparison UIs.

@mmghannam
mmghannam marked this pull request as draft July 30, 2026 15:42
mmghannam and others added 4 commits July 31, 2026 12:02
LogAnalyzer (FastAPI, its own SCIP parser) has a richer comparison UI and
already understands Rubberband's file-naming convention and zip uploads. Today
users manually download a run's zip from Rubberband and re-upload it to
LogAnalyzer. This automates that hand-off.

- New `loganalyzer_url` option (empty by default -> feature disabled, button
  hidden, endpoint 404s).
- AnalyzeExternalView (`/analyze/<testset_ids>`) builds the same raw-log zip as
  the download button, POSTs it to `{loganalyzer_url}/api/upload`, and redirects
  the user to LogAnalyzer: a single run goes to its instances page; a comparison
  (which LogAnalyzer splits into several runs by setting) goes to LogAnalyzer's
  dashboard where the runs appear ready to compare.
- "Open in LogAnalyzer" button next to the download icon in result_view.html,
  shown only when the integration is configured.

Raw logs are handed over (not Rubberband's parsed data) so LogAnalyzer re-parses
with its own parser -- that is the point of the integration. Verified end-to-end
against a local LogAnalyzer: single-run and multi-run hand-offs both round-trip.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TPAST8EPQBUNTEB7ucBEXH
Behind an auth proxy the server-to-server upload and the browser redirect need
different URLs: Rubberband must upload to LogAnalyzer's internal address
(bypassing the auth proxy), but redirect the user's browser to LogAnalyzer's
public address.

- Split into loganalyzer_url (internal, for the upload POST) and
  loganalyzer_public_url (browser-facing, for the redirect; falls back to
  loganalyzer_url when empty, which is the single-host dev case).
- Document both in the sample config/app.cfg.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TPAST8EPQBUNTEB7ucBEXH
The prototype used fa-external-link, which does not exist in the bundled
Font Awesome 5.10.2, so the button rendered as an invisible glyph.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TPAST8EPQBUNTEB7ucBEXH
Allows setting any option via environment variable, e.g.
RUBBERBAND_LOGANALYZER_URL or RUBBERBAND_ELASTICSEARCH_URL.
Env vars have the highest priority: env var > config file > code defaults.
Useful for Docker/Kubernetes deployments.
@svigerske
svigerske force-pushed the integrate-loganalyzer branch from 9341d75 to 88c37ee Compare July 31, 2026 10:02
@mmghannam
mmghannam marked this pull request as ready for review July 31, 2026 10:05
@svigerske
svigerske merged commit 31c86e6 into scipopt:main Jul 31, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants