Commit e22cd3f8 authored by Anael Beutot's avatar Anael Beutot
Browse files

Debug log on stderr for child in safe migration

parent cfae60d9
Loading
Loading
Loading
Loading
+12 −2
Original line number Diff line number Diff line
import logging
import os
import sys
import signal
import socket
import time
import weakref
import traceback
from StringIO import StringIO
from itertools import chain, imap
from xml.etree import cElementTree as et
@@ -356,8 +358,11 @@ class Handler(HostHandler):

        if pid == 0:
            # child
            sys.stderr.write('Hello from child !\n')
            sys.stderr.write('Debug is %s\n' % self.main.config.debug)
            # FIXME we should close all unused fds
            # create a new libvirt connection dedicated to migration
            sys.stderr.write('Open new connection to libvirt\n')
            try:
                new_con = libvirt.open('qemu:///system')
                domain = new_con.lookupByUUIDString(vm.uuid)
@@ -366,8 +371,9 @@ class Handler(HostHandler):
                os._exit(4)
            except:
                # error
                # TODO print traceback
                traceback.print_exc(sys.stderr)
                os._exit(2)
            sys.stderr.write('Open destination libvirt connection\n')
            try:
                dest_virt_con = libvirt.open(
                    'qemu+tcp://127.0.0.1:%d/system' % remote_virt_port)
@@ -377,7 +383,7 @@ class Handler(HostHandler):
                os._exit(5)
            except:
                # error
                # TODO print traceback
                traceback.print_exc(file=sys.stderr)
                os._exit(2)

            try:
@@ -386,6 +392,7 @@ class Handler(HostHandler):
                    append_flags = getattr(libvirt, 'VIR_MIGRATE_UNSAFE', 0)
                else:
                    append_flags = 0
                sys.stderr.write('Do migrate\n')
                domain.migrate(
                    dest_virt_con,
                    libvirt.VIR_MIGRATE_LIVE | libvirt.VIR_MIGRATE_PEER2PEER |
@@ -398,9 +405,11 @@ class Handler(HostHandler):
                    0,
                )
            except libvirt.libvirtError:
                traceback.print_exc(file=sys.stderr)
                os._exit(1)
            except:
                # whatever the matter is we MUST NOT return to libev or sjRPC
                traceback.print_exc(file=sys.stderr)
                os._exit(2)
            else:
                os._exit(0)
@@ -424,6 +433,7 @@ class Handler(HostHandler):

                # convert status to return status
                status >>= 8
                logger.debug('Status: %s', status)
                if rpid == status == 0:
                    if time.time() - started_migration < timeout:
                        continue