]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
pybind/mgr/rbd_support: include retryable error message in task
authorJason Dillaman <dillaman@redhat.com>
Thu, 19 Nov 2020 21:08:22 +0000 (16:08 -0500)
committerNathan Cutler <ncutler@suse.com>
Sat, 9 Jan 2021 08:53:59 +0000 (09:53 +0100)
If a retryable error occurs, include the reason message in the
task JSON structure that is exposed via the "rbd task list"
MGR command.

Signed-off-by: Jason Dillaman <dillaman@redhat.com>
(cherry picked from commit 66ddfee8590769935f260becee5e8fc070bce66d)

Conflicts:
        src/pybind/mgr/rbd_support/task.py
- file does not exist in nautilus: applied the changes manually

src/pybind/mgr/rbd_support/module.py

index b38aa1f82b96eaf099bd3106b937b4dda0543d53..9f45c49785457115bee8384041a63e026ea93b75 100644 (file)
@@ -55,6 +55,7 @@ TASK_REFS = "refs"
 TASK_MESSAGE = "message"
 TASK_RETRY_ATTEMPTS = "retry_attempts"
 TASK_RETRY_TIME = "retry_time"
+TASK_RETRY_MESSAGE = "retry_message"
 TASK_IN_PROGRESS = "in_progress"
 TASK_PROGRESS = "progress"
 TASK_CANCELED = "canceled"
@@ -555,6 +556,7 @@ class Task:
         self.task_id = task_id
         self.message = message
         self.refs = refs
+        self.retry_message = None
         self.retry_attempts = 0
         self.retry_time = None
         self.in_progress = False
@@ -583,6 +585,8 @@ class Task:
              TASK_MESSAGE: self.message,
              TASK_REFS: self.refs
              }
+        if self.retry_message:
+            d[TASK_RETRY_MESSAGE] = self.retry_message
         if self.retry_attempts:
             d[TASK_RETRY_ATTEMPTS] = self.retry_attempts
         if self.retry_time:
@@ -873,6 +877,7 @@ class TaskHandler:
         except rados.ObjectNotFound as e:
             self.log.error("execute_task: {}".format(e))
             if pool_valid:
+                task.retry_message = "{}".format(e)          
                 self.update_progress(task, 0)
             else:
                 # pool DNE -- remove the task
@@ -881,6 +886,7 @@ class TaskHandler:
 
         except (rados.Error, rbd.Error) as e:
             self.log.error("execute_task: {}".format(e))
+            task.retry_message = "{}".format(e)
             self.update_progress(task, 0)
 
         finally: