1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
|
import io
import json
import tarfile
import tempfile
from urllib.request import urlopen
import urllib.error
import flask
from flask import Flask, jsonify
from launchpadlib.launchpad import Launchpad
app = Flask(__name__)
@app.route("/", methods=["GET"])
def index_root():
tmpdir = tempfile.TemporaryDirectory()
launchpad = Launchpad.login_anonymously("just testing", "production", tmpdir.name, version="devel")
ogayot = launchpad.people["ogayot"]
runs = []
for ppa in ogayot.ppas:
series_set = set()
for source_pkg in ppa.getPublishedSources():
series_set.add(source_pkg.distro_series.name)
for series in series_set:
RELEASE = series
LPUSER = ogayot.name
PPA = ppa.name
try:
runs.append(json.loads(urlopen(f"https://autopkgtest.ubuntu.com/results/autopkgtest-{RELEASE}-{LPUSER}-{PPA}/?format=json").read()))
except urllib.error.HTTPError:
pass
return jsonify(runs)
@app.route("/<ppa_name>", methods=["GET"])
def index_ppa(ppa_name):
tmpdir = tempfile.TemporaryDirectory()
launchpad = Launchpad.login_anonymously("just testing", "production", tmpdir.name, version="devel")
ogayot = launchpad.people["ogayot"]
runs = []
ppa = next(filter(lambda p: p.name == ppa_name, ogayot.ppas))
series_set = set()
for source_pkg in ppa.getPublishedSources():
series_set.add(source_pkg.distro_series.name)
for series in series_set:
RELEASE = series
LPUSER = ogayot.name
PPA = ppa.name
try:
runs.append(json.loads(urlopen(f"https://autopkgtest.ubuntu.com/results/autopkgtest-{RELEASE}-{LPUSER}-{PPA}/?format=json").read()))
except urllib.error.HTTPError:
pass
return jsonify(runs)
@app.route("/ogayot/bionic-proposed/unattended-upgrades")
def index_toto():
RELEASE = "bionic"
LPUSER = "ogayot"
PPA = "bionic-proposed"
autopkgtest_url_base = f"https://autopkgtest.ubuntu.com/results/autopkgtest-{RELEASE}-{LPUSER}-{PPA}"
data = json.loads(urlopen(f"{autopkgtest_url_base}?format=json").read())
# Use the prefix as index
runs = {}
for info in data:
index, suffix = info["name"].rsplit("/", maxsplit=1)
if suffix != "result.tar":
continue
runs[index] = info
headers = ("version", "triggers", "date", "duration", "requester", "result", "url_prefix")
package_results = []
for idx, info in runs.items():
date = " ".join(idx.split("/")[-1].split("_")[0:2]),
tar_stream = io.BytesIO(urlopen(f"{autopkgtest_url_base}/{info['name']}").read())
file = tarfile.open(fileobj=tar_stream)
exitcode = int(file.extractfile("exitcode").read().decode().splitlines()[0])
duration = int(file.extractfile("duration").read().decode().splitlines()[0])
version = file.extractfile("testpkg-version").read().decode().splitlines()[0].split(" ")[-1]
requester = file.extractfile("requester").read().decode().splitlines()[0]
testinfo = json.loads(file.extractfile("testinfo.json").read().decode())
for entry in testinfo["custom_environment"]:
key, value = entry.split("=", maxsplit=1)
if key == "ADT_TEST_TRIGGERS":
triggers = value
break
else:
triggers = "?"
result = {
"version": version,
"triggers": triggers,
"date": " ".join(idx.split("/")[-1].split("_")[0:2]),
"duration": duration,
"requester": requester,
"result": exitcode,
"url_prefix": f"{autopkgtest_url_base}/{idx}",
}
package_results.append([result[h] for h in headers])
return flask.render_template("browse-results.html",
package="unattended-upgrades",
release="bionic",
arch="amd64",
package_results=package_results,
title_suffix="ogayot bionic-proposed unattended-upgrades",
base_url="https://autopkgtest.ubuntu.com/",
)
|