[Kimchi-devel] [PATCH] [Kimchi 2/4] Improve log messages printed by the serial console
Lucio Correia
luciojhc at linux.vnet.ibm.com
Thu Mar 10 16:20:30 UTC 2016
Reviewed-By: Lucio Correia <luciojhc at linux.vnet.ibm.com>
On 09-03-2016 16:04, Jose Ricardo Ziviani wrote:
> - Include the process name in the log to highlight messages from
> different process and thus make is easier to debug.
>
> Signed-off-by: Jose Ricardo Ziviani <joserz at linux.vnet.ibm.com>
> ---
> serialconsole.py | 56 ++++++++++++++++++++++++++------------------------------
> 1 file changed, 26 insertions(+), 30 deletions(-)
>
> diff --git a/serialconsole.py b/serialconsole.py
> index 47f4c2d..74f6b8a 100644
> --- a/serialconsole.py
> +++ b/serialconsole.py
> @@ -27,9 +27,8 @@ import time
>
> from multiprocessing import Process
>
> -
> -from wok.utils import wok_log
> from wok.plugins.kimchi import model
> +from wok.utils import wok_log
>
>
> SOCKET_QUEUE_BACKLOG = 0
> @@ -70,8 +69,6 @@ class SocketServer(Process):
> self._uri = URI
> self._server_addr = os.path.join(BASE_DIRECTORY, guest_name)
> if os.path.exists(self._server_addr):
> - wok_log.error('Cannot connect to %s due to an existing '
> - 'connection', guest_name)
> raise RuntimeError('There is an existing connection to %s' %
> guest_name)
>
> @@ -82,7 +79,8 @@ class SocketServer(Process):
> 1)
> self._socket.bind(self._server_addr)
> self._socket.listen(SOCKET_QUEUE_BACKLOG)
> - wok_log.info('socket server to guest %s created', guest_name)
> + wok_log.info('[%s] socket server to guest %s created', self.name,
> + guest_name)
>
> def run(self):
> """Implements customized run method from Process.
> @@ -98,7 +96,8 @@ class SocketServer(Process):
> data = stream.recv(1024)
>
> except Exception as e:
> - wok_log.info('Error when reading from console: %s', e.message)
> + wok_log.info('[%s] Error when reading from console: %s',
> + self.name, e.message)
> return
>
> # return if no data received or client socket(opaque) is not valid
> @@ -125,11 +124,11 @@ class SocketServer(Process):
> """
> libvirt.virEventRegisterDefaultImpl()
> try:
> - guest = LibvirtGuest(self._guest_name, self._uri)
> + guest = LibvirtGuest(self._guest_name, self._uri, self.name)
>
> except Exception as e:
> - wok_log.error('Cannot open the guest %s due to %s',
> - self._guest_name, e.message)
> + wok_log.error('[%s] Cannot open the guest %s due to %s',
> + self.name, self._guest_name, e.message)
> self._socket.close()
> sys.exit(1)
>
> @@ -147,8 +146,8 @@ class SocketServer(Process):
> pass
>
> finally:
> - wok_log.info("Shutting down the socket server to %s console",
> - self._guest_name)
> + wok_log.info("[%s] Shutting down the socket server to %s console",
> + self.name, self._guest_name)
> self._socket.close()
> if os.path.exists(self._server_addr):
> os.unlink(self._server_addr)
> @@ -157,7 +156,8 @@ class SocketServer(Process):
> console.eventRemoveCallback()
>
> except Exception as e:
> - wok_log.info('Callback is probably removed: %s', e.message)
> + wok_log.info('[%s] Callback is probably removed: %s',
> + self.name, e.message)
>
> guest.close()
>
> @@ -171,8 +171,7 @@ class SocketServer(Process):
> """
> client, client_addr = self._socket.accept()
> client.settimeout(DEFAULT_TIMEOUT)
> - wok_log.info('Client %s connected to %s',
> - str(client_addr),
> + wok_log.info('[%s] Client connected to %s', self.name,
> self._guest_name)
>
> # register the callback to receive any data from the console
> @@ -191,9 +190,8 @@ class SocketServer(Process):
> data = client.recv(1024)
>
> except Exception as e:
> - wok_log.info('Client %s disconnected from %s: %s',
> - str(client_addr),
> - self._guest_name,
> + wok_log.info('[%s] Client %s disconnected from %s: %s',
> + self.name, str(client_addr), self._guest_name,
> e.message)
> break
>
> @@ -206,8 +204,8 @@ class SocketServer(Process):
> console.send(data)
>
> except:
> - wok_log.info('Console of %s is not accessible',
> - self._guest_name)
> + wok_log.info('[%s] Console of %s is not accessible',
> + self.name, self._guest_name)
> break
>
> # clear used resources when the connection is closed and, if possible,
> @@ -222,26 +220,25 @@ class SocketServer(Process):
>
> class LibvirtGuest(object):
>
> - def __init__(self, guest_name, uri):
> + def __init__(self, guest_name, uri, process_name):
> """
> Constructs a guest object that opens a connection to libvirt and
> searchs for a particular guest, provided by the caller.
> """
> + self._proc_name = process_name
> try:
> libvirt = model.libvirtconnection.LibvirtConnection(uri)
> self._guest = model.vms.VMModel.get_vm(guest_name, libvirt)
>
> except Exception as e:
> - wok_log.error('Cannot open guest %s: %s', guest_name, e.message)
> + wok_log.error('[%s] Cannot open guest %s: %s', self._proc_name,
> + guest_name, e.message)
> raise
>
> self._libvirt = libvirt.get()
> self._name = guest_name
> self._stream = None
>
> - def get_name(self):
> - return self._name
> -
> def is_running(self):
> """
> Checks if this guest is currently in a running state.
> @@ -258,8 +255,8 @@ class LibvirtGuest(object):
> # guest must be in a running state to get its console
> counter = 10
> while not self.is_running():
> - wok_log.info('Guest %s is not running, waiting for it',
> - self._name)
> + wok_log.info('[%s] Guest %s is not running, waiting for it',
> + self._proc_name, self._name)
>
> counter -= 1
> if counter <= 0:
> @@ -269,8 +266,8 @@ class LibvirtGuest(object):
>
> # attach a stream in the guest console so we can read from/write to it
> if self._stream is None:
> - wok_log.info('Opening the console for guest %s',
> - self._name)
> + wok_log.info('[%s] Opening the console for guest %s',
> + self._proc_name, self._name)
> self._stream = self._libvirt.newStream(libvirt.VIR_STREAM_NONBLOCK)
> self._guest.openConsole(None,
> self._stream,
> @@ -295,8 +292,7 @@ def main(guest_name, URI):
> server = SocketServer(guest_name, URI='qemu:///system')
>
> except Exception as e:
> - wok_log.error('Cannot create the socket server for %s due to %s',
> - guest_name, e.message)
> + wok_log.error('Cannot create the socket server: %s', e.message)
> raise
>
> server.start()
>
--
Lucio Correia
Software Engineer
IBM LTC Brazil
More information about the Kimchi-devel
mailing list