From 4c3026641a7d28bd9df59df222d956049dfaa0b9 Mon Sep 17 00:00:00 2001 From: Andrei Stepanov Date: Jun 22 2018 12:04:37 +0000 Subject: Separate logs from qemu itself and from guest OS. Signed-off-by: Andrei Stepanov --- diff --git a/inventory/standard-inventory-qcow2 b/inventory/standard-inventory-qcow2 index d73acfb..b0ff4be 100755 --- a/inventory/standard-inventory-qcow2 +++ b/inventory/standard-inventory-qcow2 @@ -142,7 +142,7 @@ def write_debug_inventory(file_, host_vars): return inventory -def start_qemu(image, cloudinit, log, portrange=(2222, 5555)): +def start_qemu(image, cloudinit, artifacts, portrange=(2222, 5555)): for _ in range(10): port = random.randint(*portrange) sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) @@ -162,7 +162,10 @@ def start_qemu(image, cloudinit, log, portrange=(2222, 5555)): diagnose = distutils.util.strtobool(os.getenv("TEST_DEBUG", "0")) except ValueError: diagnose = 0 - + # Log all traffic received from the guest to a file. + log_guest = os.path.join(artifacts, "{0}.guest.log".format(os.path.basename(image))) + # Log from qemu itself. + log_qemu = log_guest.replace(".guest.log", ".qemu.log") # Use -cpu host and -smp by default. # virtio-rng-pci: https://wiki.qemu.org/Features/VirtIORNG qemu_cmd = ["/usr/bin/qemu-system-x86_64", @@ -170,13 +173,13 @@ def start_qemu(image, cloudinit, log, portrange=(2222, 5555)): "-m", "1024", image, "-enable-kvm", "-snapshot", "-cdrom", cloudinit, "-net", "nic,model=virtio", "-net", "user,hostfwd=tcp:127.0.0.3:{0}-:22".format(port), "-device", "virtio-rng-pci", "-rtc", "base=utc", - "-device", "isa-serial,chardev=pts2", "-chardev", "file,id=pts2,path=" + log, + "-device", "isa-serial,chardev=pts2", "-chardev", "file,id=pts2,path=" + log_guest, "-display", "none"] if diagnose: qemu_cmd += ["-vnc", DEF_HOST + ":1,to=4095"] - qemu_proc = subprocess.Popen(qemu_cmd, stdout=open(log, 'a'), stderr=subprocess.STDOUT) + qemu_proc = subprocess.Popen(qemu_cmd, stdout=open(log_qemu, 'a'), stderr=subprocess.STDOUT) if qemu_proc and diagnose: sys.stderr.write("DIAGNOSE: qemu-kvm is running with VNC server. PID: {}\n".format(qemu_proc.pid)) @@ -231,13 +234,12 @@ def inv_host(image): except OSError as exc: if exc.errno != errno.EEXIST or not os.path.isdir(artifacts): raise - log = os.path.join(artifacts, "{0}.log".format(os.path.basename(image))) proc = None # for failure detection cpe = None # for exception scoping for _ in range(0, 5): try: - proc, port = start_qemu(image, cloudinit, log) + proc, port = start_qemu(image, cloudinit, artifacts) break except subprocess.CalledProcessError as cpe: time.sleep(1)