This way we capture the installation progress and have a chronolagically
sound co-relation between host and guest events.

Signed-off-by: Cleber Rosa <cr...@redhat.com>
---
 client/virt/guest-os.cfg.sample         |    2 ++
 client/virt/tests/unattended_install.py |   58 ++++++++++++++++++++++++++++++-
 client/virt/unattended/Fedora-15.ks     |    1 +
 client/virt/unattended/Fedora-16.ks     |    1 +
 client/virt/unattended/Fedora-17.ks     |    1 +
 5 files changed, 62 insertions(+), 1 deletion(-)

diff --git a/client/virt/guest-os.cfg.sample b/client/virt/guest-os.cfg.sample
index 9d7720e..cfc6b30 100644
--- a/client/virt/guest-os.cfg.sample
+++ b/client/virt/guest-os.cfg.sample
@@ -89,6 +89,8 @@ variants:
             mount_dir = /mnt/
             diff_file_cmd = diff
             copy_cmd = cp
+        unattended_install:
+            syslog_server_enabled = yes
 
         variants:
             - CustomGuestLinux:
diff --git a/client/virt/tests/unattended_install.py 
b/client/virt/tests/unattended_install.py
index f8f680d..bdbd4ce 100644
--- a/client/virt/tests/unattended_install.py
+++ b/client/virt/tests/unattended_install.py
@@ -4,7 +4,7 @@ import xml.dom.minidom
 from autotest.client.shared import error, iso9660
 from autotest.client import utils
 from autotest.client.virt import virt_vm, virt_utils, virt_http_server
-from autotest.client.virt import kvm_monitor, virt_remote
+from autotest.client.virt import kvm_monitor, virt_remote, virt_syslog_server
 
 
 # Whether to print all shell commands called
@@ -16,6 +16,8 @@ _url_auto_content_server_thread_event = None
 _unattended_server_thread = None
 _unattended_server_thread_event = None
 
+_syslog_server_thread = None
+_syslog_server_thread_event = None
 
 def start_auto_content_server_thread(port, path):
     global _url_auto_content_server_thread
@@ -70,6 +72,35 @@ def terminate_unattended_server_thread():
     return False
 
 
+def start_syslog_server_thread(address, port):
+    global _syslog_server_thread
+    global _syslog_server_thread_event
+
+    virt_syslog_server.set_default_format('[unattended install syslog server '
+                                          '(%s.%s)] %s')
+
+    if _syslog_server_thread is None:
+        _syslog_server_thread_event = threading.Event()
+        _syslog_server_thread = threading.Thread(
+            target=virt_syslog_server.syslog_server,
+            args=(address, port, True, terminate_syslog_server_thread))
+        _syslog_server_thread.start()
+
+
+def terminate_syslog_server_thread():
+    global _syslog_server_thread, _syslog_server_thread_event
+
+    if _syslog_server_thread is None:
+        return False
+    if _syslog_server_thread_event is None:
+        return False
+
+    if  _syslog_server_thread_event.isSet():
+        return True
+
+    return False
+
+
 @error.context_aware
 def cleanup(dir):
     """
@@ -409,6 +440,11 @@ class UnattendedInstallConfig(object):
         # use the same IP as url_auto_content_ip, but a different port
         self.unattended_server_port = None
 
+        # Embedded Syslog Server
+        self.syslog_server_enabled = params.get('syslog_server_enabled', 'no')
+        self.syslog_server_ip = params.get('syslog_server_ip', auto_ip)
+        self.syslog_server_port = params.get('syslog_server_port', 5140)
+
         self.vm = vm
 
 
@@ -431,6 +467,15 @@ class UnattendedInstallConfig(object):
         if self.medium in ["cdrom", "kernel_initrd"]:
             content = "cdrom"
 
+        dummy_logging_re = r'\bKVM_TEST_LOGGING\b'
+        if re.search(dummy_logging_re, contents):
+            if self.syslog_server_enabled == 'yes':
+                l = 'logging --host=%s --port=%s --level=debug'
+                l = l % (self.syslog_server_ip, self.syslog_server_port)
+            else:
+                l = ''
+            contents = re.sub(dummy_logging_re, l, contents)
+
         elif self.medium == "url":
             content = "url --url %s" % self.url
 
@@ -929,6 +974,10 @@ class UnattendedInstallConfig(object):
         if DEBUG:
             virt_utils.display_attributes(self)
 
+        if self.syslog_server_enabled == 'yes':
+            start_syslog_server_thread(self.syslog_server_ip,
+                                       self.syslog_server_port)
+
         if self.medium in ["cdrom", "kernel_initrd"]:
             if self.kernel and self.initrd:
                 self.setup_cdrom()
@@ -1028,6 +1077,13 @@ def run_unattended_install(test, params, env):
         _unattended_server_thread.join(3)
         _unattended_server_thread = None
 
+    global _syslog_server_thread
+    global _syslog_server_thread_event
+    if _syslog_server_thread is not None:
+        _syslog_server_thread_event.set()
+        _syslog_server_thread.join(3)
+        _syslog_server_thread = None
+
     time_elapsed = time.time() - start_time
     logging.info("Guest reported successful installation after %d s (%d min)",
                  time_elapsed, time_elapsed / 60)
diff --git a/client/virt/unattended/Fedora-15.ks 
b/client/virt/unattended/Fedora-15.ks
index 5c43276..f8ff7f4 100644
--- a/client/virt/unattended/Fedora-15.ks
+++ b/client/virt/unattended/Fedora-15.ks
@@ -13,6 +13,7 @@ firstboot --disable
 bootloader --location=mbr --append="console=tty0 console=ttyS0,115200"
 zerombr
 poweroff
+KVM_TEST_LOGGING
 
 clearpart --all --initlabel
 autopart
diff --git a/client/virt/unattended/Fedora-16.ks 
b/client/virt/unattended/Fedora-16.ks
index 8f43b81..8b9ca73 100644
--- a/client/virt/unattended/Fedora-16.ks
+++ b/client/virt/unattended/Fedora-16.ks
@@ -13,6 +13,7 @@ firstboot --disable
 bootloader --location=mbr --append="console=tty0 console=ttyS0,115200"
 zerombr
 poweroff
+KVM_TEST_LOGGING
 
 clearpart --all --initlabel
 autopart
diff --git a/client/virt/unattended/Fedora-17.ks 
b/client/virt/unattended/Fedora-17.ks
index 7aab15d..a1caa6a 100644
--- a/client/virt/unattended/Fedora-17.ks
+++ b/client/virt/unattended/Fedora-17.ks
@@ -13,6 +13,7 @@ firstboot --disable
 bootloader --location=mbr --append="console=tty0 console=ttyS0,115200"
 zerombr
 poweroff
+KVM_TEST_LOGGING
 
 clearpart --all --initlabel
 autopart
-- 
1.7.10.4

_______________________________________________
Autotest mailing list
Autotest@test.kernel.org
http://test.kernel.org/cgi-bin/mailman/listinfo/autotest

Reply via email to