Skip to content

Commit 3f98f20

Browse files
committed
build: use podman for image creation
Signed-off-by: Paul Spooren <[email protected]>
1 parent 6a995b6 commit 3f98f20

File tree

20 files changed

+511
-703
lines changed

20 files changed

+511
-703
lines changed

.github/workflows/test.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,8 @@ jobs:
4848
4949
- name: Test with pytest
5050
run: |
51+
podman system service --time=0 unix://tmp/podman.sock &
52+
export CONTAINER_HOST="unix:///tmp/podman.sock"
5153
poetry run coverage run -m pytest --runslow
5254
poetry run coverage xml
5355

asu/api.py

Lines changed: 9 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
from uuid import uuid4
2-
31
from flask import Blueprint, current_app, g, jsonify, redirect, request
42
from rq import Connection, Queue
53

@@ -64,50 +62,6 @@ def api_v1_overview():
6462
return redirect("/json/v1/overview.json")
6563

6664

67-
def validate_packages(req):
68-
if req.get("packages_versions") and not req.get("packages"):
69-
req["packages"] = req["packages_versions"].keys()
70-
71-
if not req.get("packages"):
72-
return
73-
74-
req["packages"] = set(req["packages"]) - {"kernel", "libc", "libgcc"}
75-
76-
r = get_redis()
77-
78-
# translate packages to remove their ABI version for 19.07.x compatibility
79-
tr = set()
80-
for p in req["packages"]:
81-
p_tr = r.hget("mapping-abi", p)
82-
if p_tr:
83-
tr.add(p_tr.decode())
84-
else:
85-
tr.add(p)
86-
87-
req["packages"] = set(map(lambda x: remove_prefix(x, "+"), sorted(tr)))
88-
89-
# store request packages temporary in Redis and create a diff
90-
temp = str(uuid4())
91-
pipeline = r.pipeline(True)
92-
pipeline.sadd(temp, *set(map(lambda p: p.strip("-"), req["packages"])))
93-
pipeline.expire(temp, 5)
94-
pipeline.sdiff(
95-
temp,
96-
f"packages:{req['branch']}:{req['version']}:{req['target']}",
97-
f"packages:{req['branch']}:{req['arch']}",
98-
)
99-
unknown_packages = list(map(lambda p: p.decode(), pipeline.execute()[-1]))
100-
101-
if unknown_packages:
102-
return (
103-
{
104-
"detail": f"Unsupported package(s): {', '.join(unknown_packages)}",
105-
"status": 422,
106-
},
107-
422,
108-
)
109-
110-
11165
def validate_request(req):
11266
"""Validate an image request and return found errors with status code
11367
@@ -154,6 +108,13 @@ def validate_request(req):
154108
400,
155109
)
156110

111+
req["packages"] = set(
112+
map(
113+
lambda x: remove_prefix(x, "+"),
114+
sorted(req.get("packages_versions", {}).keys() or req.get("packages", [])),
115+
)
116+
)
117+
157118
r = get_redis()
158119

159120
current_app.logger.debug("Profile before mapping " + req["profile"])
@@ -194,10 +155,6 @@ def validate_request(req):
194155
400,
195156
)
196157

197-
package_problems = validate_packages(req)
198-
if package_problems:
199-
return package_problems
200-
201158
return ({}, None)
202159

203160

@@ -208,7 +165,7 @@ def return_job_v1(job):
208165
response.update(job.meta)
209166

210167
if job.is_failed:
211-
response.update({"status": 500})
168+
response.update({"status": 500, "error": job.latest_result().exc_string})
212169

213170
elif job.is_queued:
214171
response.update(
@@ -282,10 +239,8 @@ def api_v1_build_post():
282239
return response, status
283240

284241
req["store_path"] = current_app.config["STORE_PATH"]
285-
if current_app.config.get("CACHE_PATH"):
286-
req["cache_path"] = current_app.config.get("CACHE_PATH")
287-
req["upstream_url"] = current_app.config["UPSTREAM_URL"]
288242
req["branch_data"] = current_app.config["BRANCHES"][req["branch"]]
243+
req["repository_allow_list"] = current_app.config["REPOSITORY_ALLOW_LIST"]
289244
req["request_hash"] = request_hash
290245

291246
job = get_queue().enqueue(

asu/asu.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ def create_app(test_config: dict = None) -> Flask:
4040
ASYNC_QUEUE=True,
4141
BRANCHES_FILE=getenv("BRANCHES_FILE"),
4242
MAX_CUSTOM_ROOTFS_SIZE_MB=100,
43+
REPOSITORY_ALLOW_LIST=[],
4344
)
4445

4546
if not test_config:

0 commit comments

Comments
 (0)