For the stampede dashboard, we need monitord to create a global sqlite database that the dashboard can use to retrieve status for all of user's root workflows. The database will also contain the db connection strings for the various root workflows. This allows the dashboard to connect to individual workflow databases to retrieve more information.
The dashboard database will default to a sqlite database $HOME/.pegasus/workflow.db
The root workflows status should also be updated by monitord in this database
The schema for the dashboard database is as follows
CREATE TABLE workflow (
wf_id INTEGER NOT NULL,
wf_uuid VARCHAR(255) NOT NULL,
dax_label VARCHAR(255),
dax_version VARCHAR(255),
dax_file VARCHAR(255),
dag_file_name VARCHAR(255),
timestamp NUMERIC(16, 6),
submit_hostname VARCHAR(255),
submit_dir TEXT,
planner_arguments TEXT,
user VARCHAR(255),
grid_dn VARCHAR(255),
planner_version VARCHAR(255),
db_url TEXT,
PRIMARY KEY (wf_id)
);
CREATE TABLE workflowstate (
wf_id INTEGER NOT NULL,
state VARCHAR(19) NOT NULL,
timestamp NUMERIC(16, 6) NOT NULL,
restart_count INTEGER NOT NULL,
status INTEGER,
PRIMARY KEY (wf_id, state, timestamp),
FOREIGN KEY(wf_id) REFERENCES workflow (wf_id) ON DELETE CASCADE,
CHECK (state IN ('WORKFLOW_STARTED', 'WORKFLOW_TERMINATED'))
);
CREATE UNIQUE INDEX "UNIQUE_WORKFLOWSTATE" ON workflowstate (wf_id, state, timestamp);
CREATE UNIQUE INDEX "wf_id_KEY" ON workflow (wf_id);
CREATE UNIQUE INDEX "wf_uuid_UNIQUE" ON workflow (wf_uuid);
User should be able to specify
pegasus.dashboard.output to specify an alternative sqlite db