Project

General

Profile

action #109977

Updated by mkittler about 2 years ago

Gitlab CI https://gitlab.suse.de/qa-maintenance/bot-ng/-/jobs/929031 

 after look to IBS , RR (release request) was accepted before but info about this didn't propagate to dashboard (some latency is excepted IBS->SMELT->Dashboard), so new try to accept accepted RR ends with error 

 ~~~ 
 INFO: Accepting review for SUSE:Maintenace:23688:269540 
 ERROR: HTTP Error 403: Forbidden 
 Traceback (most recent call last): 
   File "/builds/qa-maintenance/bot-ng/qem-bot/openqabot/approver.py", line 117, in osc_approve 
     message=msg, 
   File "/usr/lib/python3.6/site-packages/osc/core.py", line 4323, in change_review_state 
     f = http_POST(u, data=message) 
   File "/usr/lib/python3.6/site-packages/osc/core.py", line 3422, in http_POST 
     def http_POST(*args, **kwargs):     return http_request('POST', *args, **kwargs) 
   File "/usr/lib/python3.6/site-packages/osc/core.py", line 3410, in http_request 
     fd = urlopen(req, data=data) 
   File "/usr/lib64/python3.6/urllib/request.py", line 223, in urlopen 
     return opener.open(url, data, timeout) 
   File "/usr/lib64/python3.6/urllib/request.py", line 532, in open 
     response = meth(req, response) 
   File "/usr/lib64/python3.6/urllib/request.py", line 642, in http_response 
     'http', request, response, code, msg, hdrs) 
   File "/usr/lib64/python3.6/urllib/request.py", line 564, in error 
     result = self._call_chain(*args) 
   File "/usr/lib64/python3.6/urllib/request.py", line 504, in _call_chain 
     result = func(*args) 
   File "/usr/lib64/python3.6/urllib/request.py", line 1059, in http_error_401 
     url, req, headers) 
   File "/usr/lib64/python3.6/urllib/request.py", line 1007, in http_error_auth_reqed 
     return self.retry_http_basic_auth(host, req, realm) 
   File "/usr/lib64/python3.6/urllib/request.py", line 1022, in retry_http_basic_auth 
     return self.parent.open(req, timeout=req.timeout) 
   File "/usr/lib64/python3.6/urllib/request.py", line 532, in open 
     response = meth(req, response) 
   File "/usr/lib64/python3.6/urllib/request.py", line 642, in http_response 
     'http', request, response, code, msg, hdrs) 
   File "/usr/lib64/python3.6/urllib/request.py", line 570, in error 
     return self._call_chain(*args) 
   File "/usr/lib64/python3.6/urllib/request.py", line 504, in _call_chain 
     result = func(*args) 
   File "/usr/lib64/python3.6/urllib/request.py", line 650, in http_error_default 
     raise HTTPError(req.full_url, code, msg, hdrs, fp) 
 urllib.error.HTTPError: HTTP Error 403: Forbidden 
 ~~~ 

 # Acceptance criteria 
 * **AC1:** Approve runs without error in case RR is already processed 

 # Suggestions 
 * Check response before throwing exception and act accordingly 
 * Check IBS RR if really has open review for `qam-openqa` 
 * The meaning of the 403 response code here is that we try to accept something that is already accepted. How about catching the case where the XML indicates the specific error, just catching, logging and ignoring the case. case when the RR is already processed. 
 * Log server response (not just return code) 
 * Suggest a better response (and response code) to OBS upstream

Back