In order to display the appropriate virt software versions
installed in the autotest results email, we can register
versions like the precise git repo definition used to
build that software, or all the packages from Brew/Koji
that were installed.

This is attained by creating an additional method,
write_version_keyval, that gets executed after the
installation was performed. The first Installer class
that gets a get_version method is GitRepoInstaller.

Signed-off-by: Lucas Meneghel Rodrigues <[email protected]>
---
 client/virt/base_installer.py |   17 +++++++++++++++++
 client/virt/tests/build.py    |    1 +
 2 files changed, 18 insertions(+)

diff --git a/client/virt/base_installer.py b/client/virt/base_installer.py
index a8cbc6d..e7eaa10 100644
--- a/client/virt/base_installer.py
+++ b/client/virt/base_installer.py
@@ -304,6 +304,16 @@ class BaseInstaller(object):
         pass
 
 
+    def write_version_keyval(self, test):
+        if getattr(self, 'get_version'):
+            version = self.get_version()
+        else:
+            version = "Unknown"
+        sw_version = {('software_version_%s' % self.name): version}
+        logging.debug("Writing test keyval %s", sw_version)
+        test.write_test_keyval(sw_version)
+
+
     def load_modules(self, module_list=None):
         '''
         Load Linux Kernel modules the virtualization software may depend on
@@ -705,6 +715,13 @@ class GitRepoInstaller(BaseLocalSourceInstaller):
         self._set_build_helper()
 
 
+    def get_version(self):
+        uri = self.content_helper.uri
+        branch = self.content_helper.branch
+        commit = self.content_helper.get_top_commit()
+        return "%s:%s:%s" % (uri, branch, commit)
+
+
 class FailedInstaller:
     """
     Class used to be returned instead of the installer if a installation fails
diff --git a/client/virt/tests/build.py b/client/virt/tests/build.py
index 85b36bd..f2593f1 100644
--- a/client/virt/tests/build.py
+++ b/client/virt/tests/build.py
@@ -22,6 +22,7 @@ def run_build(test, params, env):
         for name in params.get("installers", "").split():
             installer_obj = installer.make_installer(name, params, test)
             installer_obj.install()
+            installer_obj.write_version_keyval(test)
             if installer_obj.minor_failure == True:
                 minor_failure = True
                 reason = "%s_%s: %s" % (installer_obj.name,
-- 
1.7.10.4

_______________________________________________
Autotest-kernel mailing list
[email protected]
https://www.redhat.com/mailman/listinfo/autotest-kernel

Reply via email to