ORCA_DATABASE_URL=postgresql:///orca ./build/orca ui # 127.0.0.1:8270
| Path |
|
/ |
pipelines, with their schedules, next runs and last runs |
/pipelines/<name> |
a pipeline's steps, partitions, schedule, next runs and runs; a keyed one's keys, done, live and failed |
/pipelines/<name>/keys/<key> |
one key of a keyed pipeline: its steps in every run it was in |
/runs |
runs, newest first; ?pipeline=, ?status=, ?trigger= |
/runs/<id> |
a run's DAG, steps and partitions, attempts, errors, reads and commits |
/runs/<id>/attempts/<attempt> |
an attempt's log, with its error |
/runs/<id>/timeline.json |
the run's Dista timeline, for Perfetto |
/runs/<id>/driver.log |
the run's driver output, as the scheduler kept it |
/datasets |
datasets, with their writers, readers and latest snapshots, and the graph of pipelines and datasets |
/datasets/<name> |
a dataset's place in that graph and its snapshots |
/datasets/<name>/snapshots/<id> |
a snapshot's lineage, back and forward (orca.lineage) |
/rebuilds/<id> |
a rebuild's pipelines by level, with their runs (orca.sensors) |
And the actions, each a POST of a form (see orca.actions):
POST |
|
/pipelines/<name>/runs |
start a run over partitions |
/pipelines/<name>/backfill |
a run per partition in partitions that has none; rerun=1 for done ones too |
/runs/<id>/resume |
queue a failed, cancelled or stalled run again; allow_new_code=1 confirms new code |
/runs/<id>/rerun |
a new run from step on, the steps before it copied |
/runs/<id>/cancel |
cancel a run, before its next attempt if it's running |
/datasets/<name>/rebuild |
rebuild every pipeline downstream over partitions |
/login, /logout |
a session for the actions, as a cookie; name, password, next |
A page of something still going on (a queued or running run, a running
attempt) refreshes its live part every two seconds from a fragment path,
/runs/<id>/steps or /runs/<id>/attempts/<attempt>/log, which answers
286 once there's nothing more to show, and the page stops asking. That's
the only JavaScript.
Every path answers HTML, or JSON to Accept: application/json or
?format=json, built from the same rows, so a script and a person see the
same thing. An action answers 303 See Other to the page of what it made,
or that page's JSON; one refused answers 409 saying why. The UI holds no
state: its actions are rows the scheduler acts on, it connects to Postgres
per request, and it can run beside the scheduler or anywhere else that
reaches the database. ORCA_UI_ADDR (host:port) moves it; it binds to
localhost unless told otherwise, and a POST whose Origin (or
Referer) isn't the UI's own is refused, so another site's page can't post
to it through a browser. Reading needs no login; once login is on
(ORCA_UI_LOGIN=required, or any user added with orca user add), every
action needs a session from /login, and each one is recorded as its
user's (orca.auth), which a run's page shows.
Structs
PipelineRow
struct PipelineRow
Implements Copyable, Movable
- Fields
name: Stringregistry_hash: Stringbinary: Stringkind: Stringstart: Stringcron: Stringtz: Stringfills: Stringmax_runs: Intrun_retries: Intrunning: Intqueued: Intlast_run: Int: 0 when it has none.last_status: Stringlast_partitions: Stringnext_fire: Stringnext_partition: String
RunRow
struct RunRow
Implements Copyable, Movable
- Fields
id: Intpipeline: Stringpartitions: Stringtrigger: Stringstatus: Stringstarts: Intcreated: Stringstarted: Stringended: Stringcancel_requested: Boolstalled: Bool: running with no live process (orca.actions.stalled_sql).
VersionRow
struct VersionRow
A version of a pipeline's code (orca.source).
Implements Copyable, Movable
- Fields
id: Intregistry_hash: Stringsource: Stringcommit: Stringdirty: Boolimage: Stringfirst_seen: Stringlast_seen: Stringruns: Intlocations: String: Where its functions are (orca.locate), as JSON, or empty.
InstanceRow
struct InstanceRow
An instance a run ran on (orca.instances).
Implements Copyable, Movable
- Fields
id: Stringstart: Introle: Stringinstance_type: Stringmarket: Stringlaunched: Stringended: Stringwhy: Stringfrom_start: Float64: Seconds from the run's start to its launch.to_end: Float64: Seconds from the run's start to its end, or to now.
StepDef
struct StepDef
Implements Copyable, Movable
- Fields
name: Stringkind: Stringafter: Stringreads: List[String]writes: List[String]
Fire
struct Fire
Implements Copyable, Movable
- Fields
at: Stringlocal: Stringpartition: String
StepRow
struct StepRow
Implements Copyable, Movable
- Fields
step: Stringpartition: Stringstatus: Stringattempts: Interror: Stringlog: Stringstarted: Stringended: Stringattempt_id: Int: The latest attempt's ID, 0 before the first.from_run: Int: The run a rerun copied this step from, or 0.
Touch
struct Touch
A table a step read or committed to.
Implements Copyable, Movable
- Fields
step: Stringpartition: Stringkind: String: read or commit.table: Stringsnapshot: Stringdataset: String: Empty for a table outside the warehouse.
CodeLinks
struct CodeLinks
A version's code on its host: the pipeline's declaration, each step's function and each dista task, from orca.locate's map.
Implements Movable
- Fields
pipeline: Stringsteps: Dict[String, String]: Step name to its function's line.tasks: List[Tuple[String, String]]: A task's function name and its line.
step
def step(self, name: String) -> String
Page
struct Page
Implements Movable
- Fields
status: Intjson: Stringhtml: Stringcontent_type: String: Set for what isn't a page or its JSON (a fragment, a file): html is sent as this, whatever was asked for.location: String: Set for an action that was done: a browser is sent there with 303, and a script gets json with 200.
__init__
def __init__(out self, status: Int, var json: String, var html: String, content_type: String = "", location: String = "")
KeyCounts
struct KeyCounts
A keyed pipeline's keys and how far it is through them.
Implements Copyable, Movable
- Fields
dataset: Stringsnapshot: Int64total: Intdone: Intlive: Intfailed: List[String]: Keys not done or in a live run, with a failed or skipped step.error: String: Why its keys couldn't be read, or empty.
AttemptRow
struct AttemptRow
Implements Copyable, Movable
- Fields
id: Intrun: Intpipeline: Stringstep: Stringpartition: Stringattempt: Intstatus: Stringhost: Stringstarted: Stringended: Stringerror: Stringlog: String
Ui
struct Ui
The pages, over the database at url.
Implements Copyable, Handler, Movable
- Fields
url: String
comptime BodyType = InlineBody
The Body impl this handler authors its response with.
__init__
def __init__(out self, url: String)
serve
def serve(self, req: Request) -> Response