Fixed crash when rejecting broken package
authorEd Bartosh <eduard.bartosh@intel.com>
Mon, 17 Mar 2014 15:05:38 +0000 (17:05 +0200)
committerEduard Bartosh <eduard.bartosh@intel.com>
Tue, 18 Mar 2014 13:23:09 +0000 (15:23 +0200)
To obtain revision create_sr code queries source package and crashes
when source is broken with ObsError: <obs>cat't query source <package>
from project <prerelease project>: HTTP Error 400: service gbs failed

This makes it impossible to reject broken submissions.

This change catches exeption and tries to avoid querying the source by
providing revision 1 to create_sr API. As for rejecting it doesn't
matter much which revision to reject it should be safe.

Fixes: #1687
Change-Id: I21b9dda32686c94bfb8e81201424b3e7e7f128b5
Signed-off-by: Ed Bartosh <eduard.bartosh@intel.com>
Reviewed-on: https://otctools.jf.intel.com/review/10674
Tested-by: OTC Tools Tester <ed.bartosh@linux.intel.com>
repa/common.py

index b161077860b95097af30d755f04b066a5c619360..02ec1460bf06298e4d1290186ea21d8ba83d6d53 100644 (file)
@@ -91,8 +91,20 @@ def accept_or_reject(obs, submission, state, target, comment=''):
 
         for pkg in obs.get_source_packages(project):
             # Create SR
-            reqid = obs.create_sr(project, pkg, str(meta['obs_target_prj']),
-                                  message=str(message))
+            try:
+                reqid = obs.create_sr(project, pkg, str(meta['obs_target_prj']),
+                                      message=str(message))
+            except RepaException:
+                if state == 'declined':
+                    # Broken sources. Try to avoid queryng source by
+                    # providing revision 1. It always exists and it doesn't
+                    # matter which revision to reject.
+                    reqid = obs.create_sr(project, pkg,
+                                          str(meta['obs_target_prj']),
+                                          message=str(message), revision=1)
+                else:
+                    raise
+
             print 'package %s: created SR %s' % (pkg, reqid)
 
             # and immediately set its state