Просмотр исходного кода

Redact unnecessary `volumes_info` keys in errors

The `volumes_info` errors present in replica tasks are now redacted. As
a result, the `chunks` field is no longer fully displayed.
Sergiu Miclea 3 лет назад
Родитель
Сommit
e130ae0758
1 измененных файлов с 18 добавлено и 7 удалено
  1. 18 7
      coriolis/tasks/replica_tasks.py

+ 18 - 7
coriolis/tasks/replica_tasks.py

@@ -31,25 +31,36 @@ def _check_ensure_volumes_info_ordering(export_info, volumes_info):
     instance = export_info.get(
         'instance_name',
         export_info.get('name', export_info['id']))
+
+    vol_info_cpy = utils.sanitize_task_info(
+        {"volumes_info": volumes_info}).get("volumes_info", [])
+
     ordered_volumes_info = []
     for disk in export_info['devices']['disks']:
         disk_id = disk['id']
         matching_volumes = [
             vol for vol in volumes_info if vol['disk_id'] == disk_id]
         if not matching_volumes:
-            raise exception.InvalidActionTasksExecutionState(
+            LOG.error(
                 "Could not find source disk '%s' (ID '%s') in Replica "
-                "volumes info: %s" % (disk, disk_id, volumes_info))
+                "volumes info: %s", disk, disk_id, vol_info_cpy)
+            raise exception.InvalidActionTasksExecutionState(
+                "Source disk with ID '%s' not recognized. If this disk is "
+                "newly added to the instance, please make sure to Execute the "
+                "Replica before Updating. Check logs for more "
+                "information." % disk_id)
         elif len(matching_volumes) > 1:
+            LOG.error(
+                "Multiple disks with ID '%s' found in Replica volumes "
+                "info: %s", disk_id, vol_info_cpy)
             raise exception.InvalidActionTasksExecutionState(
-                "Multiple disks with ID '%s' foind in Replica "
-                "volumes info: %s" % (disk_id, volumes_info))
+                "Multiple disks with ID '%s' found in Replica volumes info. "
+                "Please check that the instance doesn't have the same volume "
+                "attached twice, or whether there's a UUID collision between "
+                "its disks. Check the logs for more information." % disk_id)
 
         ordered_volumes_info.append(matching_volumes[0])
 
-    vol_info_cpy = utils.sanitize_task_info(
-        {"volumes_info": volumes_info}).get("volumes_info", [])
-
     ordered_vol_info_cpy = utils.sanitize_task_info(
         {"volumes_info": ordered_volumes_info}).get("volumes_info", [])