1- from uuid import uuid4
2-
31from flask import Blueprint , current_app , g , jsonify , redirect , request
42from 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-
11165def 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 (
0 commit comments