]> git.apps.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
script/backport-create-issue: retry without if assignee is invalid
authorPatrick Donnelly <pdonnell@redhat.com>
Tue, 23 Jul 2024 20:07:16 +0000 (16:07 -0400)
committerPatrick Donnelly <pdonnell@redhat.com>
Tue, 23 Jul 2024 20:10:26 +0000 (16:10 -0400)
Resolves:

    WARNING:root:Missing issues will be created in Backport tracker of the relevant Redmine project
    INFO:root:Redmine key was read from '$REDMINE_API_KEY'; using it
    INFO:root:Processing 35 issues with status Pending Backport
    Traceback (most recent call last):
      File "/home/runner/work/ceph/ceph/src/script/backport-create-issue", line 411, in <module>
        iterate_over_backports(redmine, issues, dry_run=args.dry_run)
      File "/home/runner/work/ceph/ceph/src/script/backport-create-issue", line 354, in iterate_over_backports
        update_relations(r, issue, dry_run)
      File "/home/runner/work/ceph/ceph/src/script/backport-create-issue", line 242, in update_relations
        other = r.issue.create(project_id=issue['project']['id'],
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/opt/hostedtoolcache/Python/3.11.9/x64/lib/python3.11/site-packages/redminelib/managers/base.py", line 187, in create
        response = self.redmine.engine.request(self.resource_class.http_method_create, url, data=request)
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/opt/hostedtoolcache/Python/3.11.9/x64/lib/python3.11/site-packages/redminelib/engines/base.py", line 83, in request
        return self.process_response(self.session.request(method, url, **kwargs))
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/opt/hostedtoolcache/Python/3.11.9/x64/lib/python3.11/site-packages/redminelib/engines/base.py", line 178, in process_response
        raise exceptions.ValidationError(', '.join(': '.join(e) if isinstance(e, list) else e for e in errors))
    redminelib.exceptions.ValidationError: Assignee is invalid
    Examining issue#66797 (1/35)

Signed-off-by: Patrick Donnelly <pdonnell@redhat.com>
src/script/backport-create-issue

index e265c164db0740bc1157dce07a6e02402ece7551..4621411a101b0e49fc22c66590bd02ab3fefc6fe 100755 (executable)
@@ -34,7 +34,7 @@ import os
 import re
 import time
 from redminelib import Redmine  # https://pypi.org/project/python-redmine/
-from redminelib.exceptions import ResourceAttrError
+from redminelib.exceptions import ResourceAttrError, ValidationError
 
 redmine_endpoint = "https://tracker.ceph.com"
 project_name = "Ceph"
@@ -239,16 +239,26 @@ def update_relations(r, issue, dry_run):
         if dry_run:
             logging.info(url(issue) + " add backport to " + release)
             continue
-        other = r.issue.create(project_id=issue['project']['id'],
-                               tracker_id=backport_tracker_id,
-                               subject=subject,
-                               priority_id=issue['priority']['id'],
-                               assigned_to_id=assigned_to_id,
-                               target_version=None,
-                               custom_fields=[{
-                                   "id": release_id,
-                                   "value": release,
-                               }])
+        create_args = {
+            "project_id": issue['project']['id'],
+            "tracker_id": backport_tracker_id,
+            "subject": subject,
+            "priority_id": issue['priority']['id'],
+            "assigned_to_id": assigned_to_id,
+            "target_version": None,
+            "custom_fields": [
+                {
+                    "id": release_id,
+                    "value": release,
+                }
+            ]
+        }
+        try:
+            other = r.issue.create(**create_args)
+        except ValidationError as e:
+            # try without an assignee
+            del create_args['assigned_to_id']
+            other = r.issue.create(**create_args)
         logging.debug("Rate-limiting to avoid seeming like a spammer")
         time.sleep(delay_seconds)
         r.issue_relation.create(issue_id=issue['id'],