[virt-tools-list] [virt-install PATCH v2 02/14] osdict: Add get_install_script()

Fabiano Fidêncio fidencio at redhat.com
Fri Feb 22 08:40:09 UTC 2019


get_install_script() method returns an installer script of a specific
profile type for a specific OS.

In case no OS is defined, None is returned.

Signed-off-by: Fabiano Fidêncio <fidencio at redhat.com>
---
 virtinst/osdict.py | 27 +++++++++++++++++++++++++++
 1 file changed, 27 insertions(+)

diff --git a/virtinst/osdict.py b/virtinst/osdict.py
index 5735d835..6d4080b4 100644
--- a/virtinst/osdict.py
+++ b/virtinst/osdict.py
@@ -510,4 +510,31 @@ class _OsVariant(object):
         # the right one.
         return filtered_treelist.get_nth(0).get_url()
 
+    def get_install_script(self, profile):
+        if not self._os:
+            return None
+
+        script_list = self._os.get_install_script_list()
+        if script_list.get_length == 0:
+            raise RuntimeError(
+                _("%s does not support unattended installation."), self.name)
+
+        profile_filter = libosinfo.Filter()
+        profile_filter.add_constraint(
+            libosinfo.INSTALL_SCRIPT_PROP_PROFILE, profile)
+
+        filtered_script_list = script_list.new_filtered(profile_filter)
+        if filtered_script_list.get_length() == 0:
+            raise RuntimeError(
+                _("%s does not support unattended installation for the '%s' "
+                  "profile."), self.name, profile)
+
+        logging.debug("Install script found for profile '%s'", profile)
+
+        # Some OSes (as Windows) have more than one installer script, depending
+        # on the OS version and profile choosen, to be used to perform the
+        # unattended installation. Let's just deal with multiple installer
+        # scripts when its actually needed, though.
+        return filtered_script_list.get_nth(0)
+
 OSDB = _OSDB()
-- 
2.20.1




More information about the virt-tools-list mailing list