Add a job events page
This commit is contained in:
parent
f3ebe83532
commit
bf25a8db02
3 changed files with 95 additions and 2 deletions
|
|
@ -319,8 +319,7 @@
|
||||||
(delegate-to-with-secret-key-base build-server-controller))
|
(delegate-to-with-secret-key-base build-server-controller))
|
||||||
(('GET "compare" _ ...) (delegate-to compare-controller))
|
(('GET "compare" _ ...) (delegate-to compare-controller))
|
||||||
(('GET "compare-by-datetime" _ ...) (delegate-to compare-controller))
|
(('GET "compare-by-datetime" _ ...) (delegate-to compare-controller))
|
||||||
(('GET "jobs") (delegate-to jobs-controller))
|
(('GET "jobs" _ ...) (delegate-to jobs-controller))
|
||||||
(('GET "jobs" "queue") (delegate-to jobs-controller))
|
|
||||||
(('GET "job" job-id) (delegate-to jobs-controller))
|
(('GET "job" job-id) (delegate-to jobs-controller))
|
||||||
(('GET _ ...) (delegate-to nar-controller))
|
(('GET _ ...) (delegate-to nar-controller))
|
||||||
((method path ...)
|
((method path ...)
|
||||||
|
|
|
||||||
|
|
@ -43,6 +43,19 @@
|
||||||
(render-jobs mime-types
|
(render-jobs mime-types
|
||||||
conn
|
conn
|
||||||
parsed-query-parameters)))
|
parsed-query-parameters)))
|
||||||
|
(('GET "jobs" "events")
|
||||||
|
(let ((parsed-query-parameters
|
||||||
|
(guard-against-mutually-exclusive-query-parameters
|
||||||
|
(parse-query-parameters
|
||||||
|
request
|
||||||
|
`((limit_results ,parse-result-limit
|
||||||
|
#:no-default-when (all_results)
|
||||||
|
#:default 50)
|
||||||
|
(all_results ,parse-checkbox-value)))
|
||||||
|
'((limit_results all_results)))))
|
||||||
|
(render-job-events mime-types
|
||||||
|
conn
|
||||||
|
parsed-query-parameters)))
|
||||||
(('GET "jobs" "queue")
|
(('GET "jobs" "queue")
|
||||||
(render-job-queue mime-types
|
(render-job-queue mime-types
|
||||||
conn))
|
conn))
|
||||||
|
|
@ -75,6 +88,18 @@
|
||||||
(>= (length jobs)
|
(>= (length jobs)
|
||||||
limit-results))))))
|
limit-results))))))
|
||||||
|
|
||||||
|
(define (render-job-events mime-types conn query-parameters)
|
||||||
|
(let* ((limit-results
|
||||||
|
(assq-ref query-parameters 'limit_results))
|
||||||
|
(recent-events (select-recent-job-events
|
||||||
|
conn
|
||||||
|
;; TODO Ideally there wouldn't be a limit
|
||||||
|
#:limit (or limit-results 1000000))))
|
||||||
|
(render-html
|
||||||
|
#:sxml (view-job-events
|
||||||
|
query-parameters
|
||||||
|
recent-events))))
|
||||||
|
|
||||||
(define (render-job-queue mime-types conn)
|
(define (render-job-queue mime-types conn)
|
||||||
(render-html
|
(render-html
|
||||||
#:sxml (view-job-queue
|
#:sxml (view-job-queue
|
||||||
|
|
|
||||||
|
|
@ -21,6 +21,7 @@
|
||||||
#:use-module (guix-data-service web html-utils)
|
#:use-module (guix-data-service web html-utils)
|
||||||
#:use-module (guix-data-service web view html)
|
#:use-module (guix-data-service web view html)
|
||||||
#:export (view-jobs
|
#:export (view-jobs
|
||||||
|
view-job-events
|
||||||
view-job-queue
|
view-job-queue
|
||||||
view-job))
|
view-job))
|
||||||
|
|
||||||
|
|
@ -171,6 +172,74 @@
|
||||||
"Next page")))
|
"Next page")))
|
||||||
'())))))))
|
'())))))))
|
||||||
|
|
||||||
|
(define (view-job-events query-parameters
|
||||||
|
recent-events)
|
||||||
|
(layout
|
||||||
|
#:body
|
||||||
|
`(,(header)
|
||||||
|
(div
|
||||||
|
(@ (class "container"))
|
||||||
|
(div
|
||||||
|
(@ (class "row"))
|
||||||
|
(div
|
||||||
|
(@ (class "col-sm-12"))
|
||||||
|
(a (@ (href "/jobs"))
|
||||||
|
(h3 "Jobs"))
|
||||||
|
(h1 "Recent events")))
|
||||||
|
(div
|
||||||
|
(@ (class "row"))
|
||||||
|
(div
|
||||||
|
(@ (class "col-sm-12"))
|
||||||
|
(div
|
||||||
|
(@ (class "well"))
|
||||||
|
(form
|
||||||
|
(@ (method "get")
|
||||||
|
(action "")
|
||||||
|
(style "padding-bottom: 0")
|
||||||
|
(class "form-horizontal"))
|
||||||
|
,(form-horizontal-control
|
||||||
|
"Limit results" query-parameters
|
||||||
|
#:help-text "The maximum number of jobs to return.")
|
||||||
|
,(form-horizontal-control
|
||||||
|
"All results" query-parameters
|
||||||
|
#:type "checkbox"
|
||||||
|
#:help-text "Return all results.")
|
||||||
|
(div (@ (class "form-group form-group-lg"))
|
||||||
|
(div (@ (class "col-sm-offset-2 col-sm-10"))
|
||||||
|
(button (@ (type "submit")
|
||||||
|
(class "btn btn-lg btn-primary"))
|
||||||
|
"Update results")))))))
|
||||||
|
(div
|
||||||
|
(@ (class "row"))
|
||||||
|
(div
|
||||||
|
(@ (class "col-sm-12"))
|
||||||
|
(table
|
||||||
|
(@ (class "table"))
|
||||||
|
(thead
|
||||||
|
(tr
|
||||||
|
(th "Commit")
|
||||||
|
(th "Event")
|
||||||
|
(th "Occurred at")))
|
||||||
|
(tbody
|
||||||
|
,@(map
|
||||||
|
(match-lambda
|
||||||
|
((id commit source git-repository-id event occurred-at)
|
||||||
|
`(tr
|
||||||
|
(td (a (@ (href
|
||||||
|
,(string-append
|
||||||
|
"/revision/" commit)))
|
||||||
|
(samp ,commit)))
|
||||||
|
(td ,@(let ((classes '(("start" . "info")
|
||||||
|
("success" . "success")
|
||||||
|
("failure" . "danger"))))
|
||||||
|
(or (and=> (assoc-ref classes event)
|
||||||
|
(lambda (class)
|
||||||
|
`((@ (class ,class)))))
|
||||||
|
'()))
|
||||||
|
,event)
|
||||||
|
(td ,occurred-at))))
|
||||||
|
recent-events)))))))))
|
||||||
|
|
||||||
(define (view-job-queue jobs-and-events)
|
(define (view-job-queue jobs-and-events)
|
||||||
(layout
|
(layout
|
||||||
#:body
|
#:body
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue