Adding in minimal js to resubmit jobs, still need to get functionality working
This commit is contained in:
@@ -290,8 +290,9 @@ namespace daggy::daggyd {
|
||||
}
|
||||
else {
|
||||
// HTML
|
||||
ss << "<html><header><title>Daggy "
|
||||
"Runs</title></header><body><center><h2>Current Runs</h2><br>";
|
||||
ss << "<html><head><title>Daggy "
|
||||
"Runs</title><meta http-equiv=\"refresh\" "
|
||||
"content=\"10\"></head><body><center><h2>Current Runs</h2><br>";
|
||||
if (!dagRuns.empty()) {
|
||||
std::sort(dagRuns.begin(), dagRuns.end(),
|
||||
[](const auto &a, const auto &b) {
|
||||
@@ -305,6 +306,15 @@ namespace daggy::daggyd {
|
||||
size_t nTasks = 0;
|
||||
for (const auto &[k, cnt] : ds.taskStateCounts)
|
||||
nTasks += cnt;
|
||||
|
||||
auto stateURL = [&](RunState state) {
|
||||
std::stringstream ss;
|
||||
ss << R"(<a href="/v1/dagrun/)" << ds.runID
|
||||
<< "/?state=" << state._to_string() << "\">"
|
||||
<< ds.taskStateCounts[state] << "</a>";
|
||||
return ss.str();
|
||||
};
|
||||
|
||||
ss << "<tr>"
|
||||
<< R"(<td><a href="/v1/dagrun/)" << ds.runID << R"(">)" << ds.runID
|
||||
<< "</a></td>"
|
||||
@@ -313,11 +323,11 @@ namespace daggy::daggyd {
|
||||
<< "<td>" << nTasks << "</td>"
|
||||
<< "<td>" << timePointToString(ds.startTime) << "</td>"
|
||||
<< "<td>" << timePointToString(ds.lastUpdate) << "</td>"
|
||||
<< "<td>" << ds.taskStateCounts[RunState::QUEUED] << "</td>"
|
||||
<< "<td>" << ds.taskStateCounts[RunState::RUNNING] << "</td>"
|
||||
<< "<td>" << ds.taskStateCounts[RunState::RETRY] << "</td>"
|
||||
<< "<td>" << ds.taskStateCounts[RunState::ERRORED] << "</td>"
|
||||
<< "<td>" << ds.taskStateCounts[RunState::COMPLETED] << "</td>"
|
||||
<< "<td>" << stateURL(RunState::QUEUED) << "</td>"
|
||||
<< "<td>" << stateURL(RunState::RUNNING) << "</td>"
|
||||
<< "<td>" << stateURL(RunState::RETRY) << "</td>"
|
||||
<< "<td>" << stateURL(RunState::ERRORED) << "</td>"
|
||||
<< "<td>" << stateURL(RunState::COMPLETED) << "</td>"
|
||||
<< "</tr>";
|
||||
}
|
||||
ss << "</table>";
|
||||
@@ -339,6 +349,12 @@ namespace daggy::daggyd {
|
||||
auto run = logger_.getDAGRun(runID);
|
||||
bool isJSON = requestIsForJSON(request);
|
||||
|
||||
std::optional<RunState> filterState;
|
||||
if (request.query().has("state")) {
|
||||
auto val = request.query().get("state").value();
|
||||
filterState = RunState::_from_string(val.c_str());
|
||||
}
|
||||
|
||||
std::stringstream ss;
|
||||
if (isJSON) {
|
||||
bool first = true;
|
||||
@@ -408,10 +424,18 @@ namespace daggy::daggyd {
|
||||
}
|
||||
|
||||
ss << R"(<html>
|
||||
<header>
|
||||
<head>
|
||||
<title>Details for RunID )"
|
||||
<< runID << R"(</title>
|
||||
</header>
|
||||
<meta http-equiv="refresh" "content="10">
|
||||
<script>
|
||||
function resubmit(run_id, task_name) {
|
||||
let url = "/v1/dagrun/" + run_id + "/task/" + task_name + "/state/QUEUED";
|
||||
fetch(url, { method: 'PATCH' })
|
||||
.then(res => console.log('Resubmitted task'))
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<center>
|
||||
<h2>Summary</h2>
|
||||
@@ -435,6 +459,14 @@ namespace daggy::daggyd {
|
||||
"Update</th><th> Logs</th></tr>";
|
||||
|
||||
for (const auto &[taskName, task] : run.dagSpec.tasks) {
|
||||
auto taskState = run.taskRunStates.at(taskName);
|
||||
if (filterState and taskState != *filterState)
|
||||
continue;
|
||||
std::string retryButton = "";
|
||||
if (taskState == +RunState::ERRORED) {
|
||||
retryButton = "<button onclick=\"resubmit(" + std::to_string(runID) +
|
||||
", '" + taskName + "');\">Retry</button>";
|
||||
}
|
||||
ss << "<tr>"
|
||||
<< "<td>" << taskName << "</td>"
|
||||
<< "<td>" << run.taskRunStates.at(taskName) << "</td>"
|
||||
@@ -442,7 +474,7 @@ namespace daggy::daggyd {
|
||||
<< timePointToString(run.taskStateChanges.at(taskName).back().time)
|
||||
<< "</td>"
|
||||
<< "<td><a href=\"/v1/dagrun/" << runID << "/task/" << taskName
|
||||
<< "\">Logs</a>"
|
||||
<< "\">Logs</a>" << retryButton << "</td>"
|
||||
<< "</tr>";
|
||||
}
|
||||
ss << "</table></center></body></html>";
|
||||
|
||||
Reference in New Issue
Block a user