Skip to content

Build interactive analysis URLs from per-operator base URL#297

Open
johnworth wants to merge 3 commits into
mainfrom
operator-base-url
Open

Build interactive analysis URLs from per-operator base URL#297
johnworth wants to merge 3 commits into
mainfrom
operator-base-url

Conversation

@johnworth
Copy link
Copy Markdown
Contributor

@johnworth johnworth commented May 14, 2026

Summary

  • The job base queries (job-base-query, hsql-job-base-query) select operator_base_url straight from the job_listings view, which now left-joins operators itself.
  • interactive-urls builds the URL from operator_base_url, falling back to the static interapps-base config for jobs with no operator (legacy / pre-operator launches).
  • send-interactive-job-status-update reuses the formatted job's :interactive_urls instead of rebuilding the URL from the static base, so notification/email links match the listing.

Context

VICE analyses can now be scheduled onto different Kubernetes clusters, each fronted by its own vice-operator with its own landing domain. Previously apps built every interactive URL from a single static config value, so an analysis launched on a non-default cluster linked the user to the wrong domain — an infinitely-refreshing loading page on a cluster that wasn't running the analysis.

Depends on cyverse-de/de-database#37 (adds operators.base_url and exposes operator_base_url in the job_listings view) and pairs with cyverse-de/app-exposer#145. All three repos share the operator-base-url branch.

Test plan

  • lein check, lein test (71 tests, 0 failures)
  • launch a VICE analysis on a non-default operator; confirm the job listing's interactive_urls and the status-update notification both point at that operator's domain
  • a job with no operator still resolves via interapps-base

🤖 Generated with Claude Code

VICE analyses can run on different clusters, each fronted by its own
operator with its own landing domain. The job base queries now left-join
operators to carry operator_base_url on every job, and interactive-urls
builds the URL from it, falling back to the static interactive-apps base
URL for jobs with no operator_id. send-interactive-job-status-update
reuses the formatted job's :interactive_urls instead of rebuilding the
URL, so notification/email links match the listing.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@johnworth
Copy link
Copy Markdown
Contributor Author

Code review

No issues found. Checked for bugs and CLAUDE.md compliance.

🤖 Generated with Claude Code

John Wregglesworth and others added 2 commits May 14, 2026 14:23
Updates the hsql-job-base-query docstring to mention the operators
left-join (matching job-base-query), and rewrites the
send-interactive-job-status-update doc/comment to lead with intent and
spell out when no access URL is attached.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
The job_listings view now left-joins operators and exposes
operator_base_url itself, so the job base queries no longer need their
own operators join -- they select the view column directly.
interactive-urls and the notification path are unchanged; they still
read :operator_base_url off the job map.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@johnworth johnworth marked this pull request as ready for review May 14, 2026 22:17
@johnworth johnworth requested a review from slr71 May 15, 2026 18:52
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.

1 participant