66 lines
2.6 KiB
Diff
66 lines
2.6 KiB
Diff
From 46335861073882b7162221fc0995dc1df3c67749 Mon Sep 17 00:00:00 2001
|
|
From: Vojtech Trefny <vtrefny@redhat.com>
|
|
Date: Fri, 6 Aug 2021 16:37:51 +0200
|
|
Subject: [PATCH] Improve error message printed for missing dependecies
|
|
|
|
The existing error message can be confusing for people that don't
|
|
know internals of blivet and libblockdev and the information what
|
|
is actually broken or not installed on the system is missing
|
|
completely. Example for LVM VDO with missing kvdo module:
|
|
|
|
Before:
|
|
|
|
device type lvmvdopool requires unavailable_dependencies:
|
|
libblockdev lvm plugin (vdo technology)
|
|
|
|
After:
|
|
|
|
device type lvmvdopool requires unavailable_dependencies:
|
|
libblockdev lvm plugin (vdo technology):
|
|
libblockdev plugin lvm is loaded but some required technologies
|
|
are not available (BD_LVM_TECH_VDO: Kernel module 'kvdo' not
|
|
available)
|
|
---
|
|
blivet/deviceaction.py | 2 +-
|
|
blivet/tasks/availability.py | 4 ++--
|
|
2 files changed, 3 insertions(+), 3 deletions(-)
|
|
|
|
diff --git a/blivet/deviceaction.py b/blivet/deviceaction.py
|
|
index 56e29215..0458e4be 100644
|
|
--- a/blivet/deviceaction.py
|
|
+++ b/blivet/deviceaction.py
|
|
@@ -173,7 +173,7 @@ class DeviceAction(util.ObjectID):
|
|
def _check_device_dependencies(self):
|
|
unavailable_dependencies = self.device.unavailable_dependencies
|
|
if unavailable_dependencies:
|
|
- dependencies_str = ", ".join(str(d) for d in unavailable_dependencies)
|
|
+ dependencies_str = ", ".join("%s:\n%s" % (str(d), ", ".join(d.availability_errors)) for d in unavailable_dependencies)
|
|
raise DependencyError("device type %s requires unavailable_dependencies: %s" % (self.device.type, dependencies_str))
|
|
|
|
def apply(self):
|
|
diff --git a/blivet/tasks/availability.py b/blivet/tasks/availability.py
|
|
index 1fd80590..1537f3f5 100644
|
|
--- a/blivet/tasks/availability.py
|
|
+++ b/blivet/tasks/availability.py
|
|
@@ -224,7 +224,7 @@ class BlockDevMethod(Method):
|
|
try:
|
|
self._tech_info.check_fn(tech, mode)
|
|
except GLib.GError as e:
|
|
- errors.append(str(e))
|
|
+ errors.append("%s: %s" % (tech.value_name, e.message))
|
|
return errors
|
|
|
|
def availability_errors(self, resource):
|
|
@@ -242,7 +242,7 @@ class BlockDevMethod(Method):
|
|
tech_missing = self._check_technologies()
|
|
if tech_missing:
|
|
return ["libblockdev plugin %s is loaded but some required "
|
|
- "technologies are not available:\n%s" % (self._tech_info.plugin_name, tech_missing)]
|
|
+ "technologies are not available (%s)" % (self._tech_info.plugin_name, "; ".join(tech_missing))]
|
|
else:
|
|
return []
|
|
|
|
--
|
|
2.31.1
|
|
|