From e1686d454b40d9275775bd869cefdb8b95e48904 Mon Sep 17 00:00:00 2001 From: Oliver Giles Date: Sun, 5 Dec 2021 13:41:05 +1300 Subject: [PATCH] display run number for queued jobs in the frontend and in laminarc queue/show-queued. This makes it much easier to abort/unqueue runs which have not yet started. resolves #155 --- src/client.cpp | 4 ++-- src/laminar.capnp | 2 +- src/laminar.cpp | 14 +++++++++++--- src/resources/index.html | 17 +++++++++-------- src/resources/js/app.js | 17 +++++++++-------- src/rpc.cpp | 4 +++- 6 files changed, 35 insertions(+), 23 deletions(-) diff --git a/src/client.cpp b/src/client.cpp index 2e92747..f318cdb 100644 --- a/src/client.cpp +++ b/src/client.cpp @@ -1,5 +1,5 @@ /// -/// Copyright 2015-2020 Oliver Giles +/// Copyright 2015-2021 Oliver Giles /// /// This file is part of Laminar /// @@ -233,7 +233,7 @@ int main(int argc, char** argv) { } auto queued = laminar.listQueuedRequest().send().wait(waitScope); for(auto it : queued.getResult()) { - printf("%s\n", it.cStr()); + printf("%s:%d\n", it.getJob().cStr(), it.getBuildNum()); } } else if(strcmp(argv[1], "show-running") == 0) { if(argc != 2) { diff --git a/src/laminar.capnp b/src/laminar.capnp index 41d2225..cf990db 100644 --- a/src/laminar.capnp +++ b/src/laminar.capnp @@ -5,7 +5,7 @@ interface LaminarCi { queue @0 (jobName :Text, params :List(JobParam)) -> (result :MethodResult, buildNum :UInt32); start @1 (jobName :Text, params :List(JobParam)) -> (result :MethodResult, buildNum :UInt32); run @2 (jobName :Text, params :List(JobParam)) -> (result :JobResult, buildNum :UInt32); - listQueued @3 () -> (result :List(Text)); + listQueued @3 () -> (result :List(Run)); listRunning @4 () -> (result :List(Run)); listKnown @5 () -> (result :List(Text)); abort @6 (run :Run) -> (result :MethodResult); diff --git a/src/laminar.cpp b/src/laminar.cpp index 3df8b06..105d72f 100644 --- a/src/laminar.cpp +++ b/src/laminar.cpp @@ -306,13 +306,17 @@ std::string Laminar::getStatus(MonitorScope scope) { j.EndObject(); } j.EndArray(); - int nQueued = 0; + j.startArray("queued"); for(const auto& run : queuedJobs) { if (run->name == scope.job) { - nQueued++; + j.StartObject(); + j.set("number", run->build); + j.set("result", to_string(RunState::QUEUED)); + j.set("reason", run->reason()); + j.EndObject(); } } - j.set("nQueued", nQueued); + j.EndArray(); db->stmt("SELECT number,startedAt FROM builds WHERE name = ? AND result = ? " "ORDER BY completedAt DESC LIMIT 1") .bind(scope.job, int(RunState::SUCCESS)) @@ -399,6 +403,8 @@ std::string Laminar::getStatus(MonitorScope scope) { for(const auto& run : queuedJobs) { j.StartObject(); j.set("name", run->name); + j.set("number", run->build); + j.set("result", to_string(RunState::QUEUED)); j.EndObject(); } j.EndArray(); @@ -602,6 +608,8 @@ std::shared_ptr Laminar::queueJob(std::string name, ParamMap params) { .startObject("data") .set("name", name) .set("number", run->build) + .set("result", to_string(RunState::QUEUED)) + .set("reason", run->reason()) .EndObject(); http->notifyEvent(j.str(), name.c_str()); diff --git a/src/resources/index.html b/src/resources/index.html index 9b9e83d..666f6f1 100644 --- a/src/resources/index.html +++ b/src/resources/index.html @@ -22,7 +22,12 @@