[virt-tools-list] [virt-manager PATCH 08/12] osdict: Add methods to deal with pre/post install drivers
Fabiano Fidêncio
fidencio at redhat.com
Thu Jun 6 14:11:39 UTC 2019
Let's add a couple of methods to:
- get the pre/post installable drivers (these will return a list of
OsinfoDeviceDrivers);
- get the pre/post installable drivers location (these will return a list
of strings);
Signed-off-by: Fabiano Fidêncio <fidencio at redhat.com>
---
virtinst/osdict.py | 53 ++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 53 insertions(+)
diff --git a/virtinst/osdict.py b/virtinst/osdict.py
index 037a2976..90aa3d5d 100644
--- a/virtinst/osdict.py
+++ b/virtinst/osdict.py
@@ -8,6 +8,7 @@
import datetime
import logging
+import os
import re
from gi.repository import Libosinfo
@@ -645,6 +646,58 @@ class _OsVariant(object):
installscript = _get_install_script(script_list)
return installscript
+ def _get_installable_drivers(self, arch):
+ if not self._os:
+ return []
+
+ installable_drivers = []
+ device_drivers = list(_OsinfoIter(self._os.get_device_drivers()))
+ for device_driver in device_drivers:
+ if arch != "all" and device_driver.get_architecture() != arch:
+ continue
+
+ installable_drivers.append(device_driver)
+ return installable_drivers
+
+ def get_pre_installable_drivers(self, arch):
+ installable_drivers = self._get_installable_drivers(arch)
+ pre_inst_drivers = []
+ for driver in installable_drivers:
+ if not driver.get_pre_installable():
+ continue
+
+ pre_inst_drivers.append(driver)
+ return pre_inst_drivers
+
+ def get_post_installable_drivers(self, arch):
+ installable_drivers = self._get_installable_drivers(arch)
+ post_inst_drivers = []
+ for driver in installable_drivers:
+ if driver.get_pre_installable():
+ continue
+
+ post_inst_drivers.append(driver)
+ return post_inst_drivers
+
+ def _get_drivers_location(self, drivers):
+ locations = []
+ for driver in drivers:
+ filenames = driver.get_files()
+ for filename in filenames:
+ location = os.path.join(driver.get_location(), filename)
+ locations.append(location)
+ return locations
+
+ def get_pre_installable_drivers_location(self, arch):
+ pre_inst_drivers = self.get_pre_installable_drivers(arch)
+
+ return self._get_drivers_location(pre_inst_drivers)
+
+ def get_post_installable_drivers_location(self, arch):
+ post_inst_drivers = self.get_post_installable_drivers(arch)
+
+ return self._get_drivers_location(post_inst_drivers)
+
class OsMedia(object):
def __init__(self, osinfo_media):
--
2.21.0
More information about the virt-tools-list
mailing list