Skip to content

Commit 9c5804f

Browse files
committed
api: add stats endpoint (bug 1800074)
1 parent 96d8db7 commit 9c5804f

File tree

3 files changed

+46
-12
lines changed

3 files changed

+46
-12
lines changed

landoapi/api/__init__.py

+42
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,49 @@
22
# License, v. 2.0. If a copy of the MPL was not distributed with this
33
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
44

5+
from landoapi.models.revisions import Revision, RevisionStatus as RS
6+
from landoapi.models.landing_job import LandingJob, LandingJobStatus as LJS
7+
58

69
def get():
710
"""Return a redirect repsonse to the swagger specification."""
811
return None, 302, {"Location": "/swagger.json"}
12+
13+
14+
def get_stats():
15+
"""Return some useful statistics about the Lando system."""
16+
data = {}
17+
data["landing_jobs"] = {
18+
"SUBMITTED": LandingJob.query.filter(
19+
LandingJob.status == LJS.SUBMITTED
20+
).count(),
21+
"DEFERRED": LandingJob.query.filter(LandingJob.status == LJS.DEFERRED).count(),
22+
"FAILED": LandingJob.query.filter(LandingJob.status == LJS.FAILED).count(),
23+
"CANCELLED": LandingJob.query.filter(
24+
LandingJob.status == LJS.CANCELLED
25+
).count(),
26+
"IN_PROGRESS": LandingJob.query.filter(
27+
LandingJob.status == LJS.IN_PROGRESS
28+
).count(),
29+
"LANDED": LandingJob.query.filter(LandingJob.status == LJS.LANDED).count(),
30+
}
31+
32+
data["revisions"] = {
33+
"NEW": Revision.query.filter(Revision.status == RS.NEW).count(),
34+
"STALE": Revision.query.filter(Revision.status == RS.STALE).count(),
35+
"PICKED_UP": Revision.query.filter(Revision.status == RS.PICKED_UP).count(),
36+
"READY_FOR_PREPROCESSING": Revision.query.filter(
37+
Revision.status == RS.READY_FOR_PREPROCESSING
38+
).count(),
39+
"PREPROCESSING": Revision.query.filter(
40+
Revision.status == RS.PREPROCESSING
41+
).count(),
42+
"PROBLEM": Revision.query.filter(Revision.status == RS.PROBLEM).count(),
43+
"READY": Revision.query.filter(Revision.status == RS.READY).count(),
44+
"QUEUED": Revision.query.filter(Revision.status == RS.QUEUED).count(),
45+
"LANDING": Revision.query.filter(Revision.status == RS.LANDING).count(),
46+
"LANDED": Revision.query.filter(Revision.status == RS.LANDED).count(),
47+
"FAILED": Revision.query.filter(Revision.status == RS.FAILED).count(),
48+
}
49+
50+
return data, 200

landoapi/repos.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -196,7 +196,8 @@ def phab_identifier(self) -> str:
196196
push_path="ssh://autoland.hg//repos/third-repo",
197197
pull_path="http://hg.test/third-repo",
198198
config_override={"fix.black:command": "black -- -"},
199-
approval_required=True,
199+
approval_required=False,
200+
use_revision_worker=True,
200201
),
201202
# Approval is required for the uplift dev repo
202203
"uplift-target": Repo(

landoapi/spec/swagger.yml

+2-11
Original file line numberDiff line numberDiff line change
@@ -44,17 +44,8 @@ paths:
4444
- $ref: '#/definitions/Error'
4545
/stats:
4646
get:
47-
operationId: landoapi.api.landing_jobs.get_stats
48-
description: Return various statistics about landing jobs.
49-
parameters:
50-
- name: start_date
51-
in: query
52-
type: string
53-
format: date
54-
- name: end_date
55-
in: query
56-
type: string
57-
format: date
47+
operationId: landoapi.api.get_stats
48+
description: Return various statistics about landing jobs and revisions.
5849
responses:
5950
200:
6051
description: OK

0 commit comments

Comments
 (0)