guix-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

branch master updated: Update the Web API documentation.


From: Mathieu Othacehe
Subject: branch master updated: Update the Web API documentation.
Date: Tue, 09 Mar 2021 11:02:16 -0500

This is an automated email from the git hooks/post-receive script.

mothacehe pushed a commit to branch master
in repository guix-cuirass.

The following commit(s) were added to refs/heads/master by this push:
     new 2bd6e80  Update the Web API documentation.
2bd6e80 is described below

commit 2bd6e80482e915616d18ee2254f4f6101cdfb942
Author: Mathieu Othacehe <othacehe@gnu.org>
AuthorDate: Tue Mar 9 17:01:08 2021 +0100

    Update the Web API documentation.
    
    * doc/cuirass.texi (Web API): Update it.
    * src/cuirass/http.scm (build->hydra-build): Update it accordingly.
---
 doc/cuirass.texi     | 132 ++++++++++++++++++++++++++++++++++++++++++---------
 src/cuirass/http.scm |  10 ++--
 2 files changed, 112 insertions(+), 30 deletions(-)

diff --git a/doc/cuirass.texi b/doc/cuirass.texi
index 371a865..7599235 100644
--- a/doc/cuirass.texi
+++ b/doc/cuirass.texi
@@ -555,13 +555,86 @@ Display an help message that summarize all the options 
provided.
 @chapter Web API
 @cindex web api
 
-Cuirass web API is derived from Hydra one, see 
@url{https://github.com/NixOS/hydra/blob/master/doc/manual/api.xml, Hydra API 
description}.
-
-For now only a subset of this API is implemented.
+The Cuirass web API is inspired from the Hydra one.
 
 @section API description
 @cindex description, json
 
+@subsection Evaluation information
+@subsubheading Single evaluation
+
+It is possible to query the Cuirass web server for evaluation
+information. The dedicated API is "/api/evaluation?id=@var{eval-id}"
+where @var{eval-id} is the unique id associated to the evaluation in
+database.
+
+For instance, querying a local Cuirass web server can be done with
+@code{curl} and @code{jq} to format the JSON response :
+
+@example
+$ curl -s "http://localhost:8080/api/evaluation?id=1"; | jq
+
+@{
+  "id": 1,
+  "specification": "guix-master",
+  "status": 0,
+  "timestamp": 1615289011,
+  "checkouttime": 1615289011,
+  "evaltime": 1615289655,
+  "checkouts": [
+    @{
+      "commit": "bd311f5a6ccbd4696ac77f0426a036bb375a2f10",
+      "channel": "guix",
+      "directory": "/gnu/store/6978xw9vs4ybg2pc3g736p1dba2056yl-guix-bd311f5"
+    @}
+  ]
+@}
+@end example
+
+The nominal output is a JSON object whose fields are described
+hereafter.
+
+@table @code
+@item id
+The unique build id.
+
+@item specification
+The associated specification name, as a string.
+
+@item status
+The evaluation status, as an integer. Possible values are :
+
+@example
+-1 -> started
+0 -> succeeded
+1 -> failed
+2 -> aborted
+@end example
+
+@item checkouttime
+The timestamp after channel checkout.
+
+@item evaltime
+The timestamp after evaluation completion.
+
+@item checkouts
+The evaluation checkouts as a JSON object.
+
+@end table
+
+@subsubheading Multiple evaluations
+
+The latest evaluations list can be obtained with the API
+"/api/evaluations".  The output is a JSON array of
+evaluations. Evaluations are represented as in the
+"/api/evaluation?id=@var{eval-id}" API.
+
+This request accepts a mandatory parameter.
+@table @code
+@item nr
+Limit query result to nr elements. This parameter is @emph{mandatory}.
+@end table
+
 @subsection Build information
 
 It is possible to query Cuirass web server for build informations. The
@@ -572,9 +645,6 @@ The build information can also be queried by output. For 
example,
 @samp{/output/kg9mirg6xbvzcp0a98v7326n1nvvwgsj-hello-2.10} will return
 the details of the output, along with the build if available.
 
-For instance, querying a local Cuirass web server can be done with
-@code{curl} and @code{jq} to format the JSON response :
-
 @example
 $ curl -s "http://localhost:8080/build/2"; | jq
 
@@ -593,12 +663,11 @@ $ curl -s "http://localhost:8080/build/2"; | jq
   "system": "x86_64-linux",
   "nixname": "acpica-20150410",
   "buildstatus": 0,
+  "weather": 0,
   "busy": 0,
   "priority": 0,
   "finished": 1,
-  "buildproducts": null,
-  "releasename": null,
-  "buildinputs_builds": null
+  "buildproducts": null
 @}
 @end example
 
@@ -656,23 +725,28 @@ Build status, as an integer. Possible values are :
 4 -> cancelled
 @end example
 
+@item weather
+Build weather, as an integer.
+
+@example
+-1 -> unknown
+0 -> new-success
+1 -> new-failure
+2 -> still-succeeding
+3 -> still-failing
+@end example
+
 @item busy
-Whether the build is pending, as an integer (not implemented yet).
+Whether the build is pending, as an integer.
 
 @item priority
-Build priority, as an integer (not implemented yet).
+Build priority, as an integer.
 
 @item finished
-Build finished, as an integer (not implemented yet : always 1).
+Build finished, as an integer.
 
 @item buildproducts
-Build products in store as a JSON object (not implemented yet).
-
-@item releasename
-Unknown, not implemented yet.
-
-@item buildinputs_builds
-Inputs used for the build, as a JSON object (not implemented yet).
+Build products in store as a JSON object.
 
 @end table
 
@@ -705,8 +779,8 @@ $ curl -s "http://localhost:8080/build/fff/log/raw";
 @subsection Latest builds
 
 The list of latest builds can be obtained with the API
-"/api/latestbuilds".  The output is a JSON array of
-builds. Builds are represented as in "/build/@var{build-id} API.
+"/api/latestbuilds".  The output is a JSON array of builds. Builds are
+represented as in the "/build/@var{build-id}" API.
 
 This request accepts a mandatory parameter and multiple optional ones.
 
@@ -740,6 +814,18 @@ $ curl 
"http://localhost:8080/api/latestbuilds?nr=5&jobset=guix";
 If no builds matching given parameters are found, an empty JSON array is
 returned.
 
+@subsection Queued builds
+
+The list of queued builds can be obtained with the API
+"/api/queue".  The output is a JSON array of builds. Builds are
+represented as in the "/build/@var{build-id}" API.
+
+This request accepts a mandatory parameter.
+@table @code
+@item nr
+Limit query result to nr elements. This parameter is @emph{mandatory}.
+@end table
+
 @c *********************************************************************
 @node Database
 @chapter Database schema
@@ -910,8 +996,8 @@ are:
 
 @item priority
 The build priority relatively to the other builds with the same
-@code{job_name}, as an integer ranging from 0 to 9 where 0 is the
-higher priority and 9 the lowest.
+@code{job_name}, as an integer ranging from 0 to 99 where 0 is the
+higher priority and 99 the lowest.
 
 @item max_silent
 This integer field holds the number of seconds of silence after which
diff --git a/src/cuirass/http.scm b/src/cuirass/http.scm
index 0182d2c..14ba07f 100644
--- a/src/cuirass/http.scm
+++ b/src/cuirass/http.scm
@@ -90,9 +90,7 @@
     (if bool 1 0))
 
   (define finished?
-    (not (memv (assq-ref build #:status)
-               (list (build-status scheduled)
-                     (build-status started)))))
+    (>= (assq-ref build #:status) 0))
 
   `((#:id . ,(assq-ref build #:id))
     (#:evaluation . ,(assq-ref build #:eval-id))
@@ -115,12 +113,10 @@
     (#:weather . ,(assq-ref build #:weather))
     (#:busy . ,(bool->int (eqv? (build-status started)
                                 (assq-ref build #:status))))
-    (#:priority . 0)
+    (#:priority . ,(assq-ref build #:priority))
     (#:finished . ,(bool->int finished?))
     (#:buildproducts . ,(list->vector
-                         (assq-ref build #:buildproducts)))
-    (#:releasename . #nil)
-    (#:buildinputs_builds . #nil)))
+                         (assq-ref build #:buildproducts)))))
 
 (define (evaluation->json-object evaluation)
   "Turn EVALUATION into a representation suitable for 'json->scm'."



reply via email to

[Prev in Thread] Current Thread [Next in Thread]