diff mbox series

[v4] python/qemu/qmp.py: QMP debug with VM label

Message ID 20200316103203.10046-1-ovoshcha@redhat.com (mailing list archive)
State New, archived
Headers show
Series [v4] python/qemu/qmp.py: QMP debug with VM label | expand

Commit Message

Oksana Vohchana March 16, 2020, 10:32 a.m. UTC
QEMUMachine writes some messages to the default logger.
But it sometimes hard to read the output if we have requests to
more than one VM.
This patch adds a label to the logger in the debug mode.

Signed-off-by: Oksana Vohchana <ovoshcha@redhat.com>
---
v2:
 - Instead of shown the label in the message it provides the label
   only in the debug logger information.
v3:
 - Fixes coding style problems.
v4:
 - Use a suffix method to get a children's logger process from the parent.
---
 python/qemu/machine.py | 3 ++-
 python/qemu/qmp.py     | 5 ++++-
 2 files changed, 6 insertions(+), 2 deletions(-)

Comments

John Snow March 16, 2020, 5:11 p.m. UTC | #1
On 3/16/20 6:32 AM, Oksana Vohchana wrote:
> QEMUMachine writes some messages to the default logger.
> But it sometimes hard to read the output if we have requests to
> more than one VM.
> This patch adds a label to the logger in the debug mode.
> 
> Signed-off-by: Oksana Vohchana <ovoshcha@redhat.com>
> ---
> v2:
>  - Instead of shown the label in the message it provides the label
>    only in the debug logger information.
> v3:
>  - Fixes coding style problems.
> v4:
>  - Use a suffix method to get a children's logger process from the parent.
> ---
>  python/qemu/machine.py | 3 ++-
>  python/qemu/qmp.py     | 5 ++++-
>  2 files changed, 6 insertions(+), 2 deletions(-)
> 
> diff --git a/python/qemu/machine.py b/python/qemu/machine.py
> index 183d8f3d38..f53abfa492 100644
> --- a/python/qemu/machine.py
> +++ b/python/qemu/machine.py
> @@ -270,7 +270,8 @@ class QEMUMachine(object):
>                  self._vm_monitor = os.path.join(self._sock_dir,
>                                                  self._name + "-monitor.sock")
>                  self._remove_files.append(self._vm_monitor)
> -            self._qmp = qmp.QEMUMonitorProtocol(self._vm_monitor, server=True)
> +            self._qmp = qmp.QEMUMonitorProtocol(self._vm_monitor, server=True,
> +                                                nickname=self._name)
>  
>      def _post_launch(self):
>          if self._qmp:
> diff --git a/python/qemu/qmp.py b/python/qemu/qmp.py
> index f40586eedd..d6c9b2f4b1 100644
> --- a/python/qemu/qmp.py
> +++ b/python/qemu/qmp.py
> @@ -46,7 +46,7 @@ class QEMUMonitorProtocol:
>      #: Logger object for debugging messages
>      logger = logging.getLogger('QMP')
>  
> -    def __init__(self, address, server=False):
> +    def __init__(self, address, server=False, nickname=None):
>          """
>          Create a QEMUMonitorProtocol class.
>  
> @@ -62,6 +62,9 @@ class QEMUMonitorProtocol:
>          self.__address = address
>          self.__sock = self.__get_sock()
>          self.__sockfile = None
> +        self._nickname = nickname
> +        if self._nickname:
> +            self.logger = logging.getLogger('QMP').getChild(self._nickname)
>          if server:
>              self.__sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
>              self.__sock.bind(self.__address)
> 


Looks right to me. Thank you for taking the time to get this cleaned up.

Reviewed-by: John Snow <jsnow@redhat.com>
Wainer dos Santos Moschetta March 17, 2020, 8:15 p.m. UTC | #2
On 3/16/20 7:32 AM, Oksana Vohchana wrote:
> QEMUMachine writes some messages to the default logger.
> But it sometimes hard to read the output if we have requests to
> more than one VM.

For example,  tests/acceptance/migration.py uses two VMs and reading the 
qmp outputs on avocado's log is very confusing. Certainly this change 
will help to improve that situation, just need to adapt 
tests/acceptance/avocado_qemu/__init__.py to create the QEMUMachine 
object with a name.

Anyway, this patch looks good to me so:

Reviewed-by: Wainer dos Santos Moschetta <wainersm@redhat.com>

Thanks!

> This patch adds a label to the logger in the debug mode.
>
> Signed-off-by: Oksana Vohchana <ovoshcha@redhat.com>
> ---
> v2:
>   - Instead of shown the label in the message it provides the label
>     only in the debug logger information.
> v3:
>   - Fixes coding style problems.
> v4:
>   - Use a suffix method to get a children's logger process from the parent.
> ---
>   python/qemu/machine.py | 3 ++-
>   python/qemu/qmp.py     | 5 ++++-
>   2 files changed, 6 insertions(+), 2 deletions(-)
>
> diff --git a/python/qemu/machine.py b/python/qemu/machine.py
> index 183d8f3d38..f53abfa492 100644
> --- a/python/qemu/machine.py
> +++ b/python/qemu/machine.py
> @@ -270,7 +270,8 @@ class QEMUMachine(object):
>                   self._vm_monitor = os.path.join(self._sock_dir,
>                                                   self._name + "-monitor.sock")
>                   self._remove_files.append(self._vm_monitor)
> -            self._qmp = qmp.QEMUMonitorProtocol(self._vm_monitor, server=True)
> +            self._qmp = qmp.QEMUMonitorProtocol(self._vm_monitor, server=True,
> +                                                nickname=self._name)
>   
>       def _post_launch(self):
>           if self._qmp:
> diff --git a/python/qemu/qmp.py b/python/qemu/qmp.py
> index f40586eedd..d6c9b2f4b1 100644
> --- a/python/qemu/qmp.py
> +++ b/python/qemu/qmp.py
> @@ -46,7 +46,7 @@ class QEMUMonitorProtocol:
>       #: Logger object for debugging messages
>       logger = logging.getLogger('QMP')
>   
> -    def __init__(self, address, server=False):
> +    def __init__(self, address, server=False, nickname=None):
>           """
>           Create a QEMUMonitorProtocol class.
>   
> @@ -62,6 +62,9 @@ class QEMUMonitorProtocol:
>           self.__address = address
>           self.__sock = self.__get_sock()
>           self.__sockfile = None
> +        self._nickname = nickname
> +        if self._nickname:
> +            self.logger = logging.getLogger('QMP').getChild(self._nickname)
>           if server:
>               self.__sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
>               self.__sock.bind(self.__address)
Cleber Rosa March 17, 2020, 9:55 p.m. UTC | #3
On Mon, Mar 16, 2020 at 12:32:03PM +0200, Oksana Vohchana wrote:
> QEMUMachine writes some messages to the default logger.
> But it sometimes hard to read the output if we have requests to
> more than one VM.
> This patch adds a label to the logger in the debug mode.
> 
> Signed-off-by: Oksana Vohchana <ovoshcha@redhat.com>

Reviewed-by: Cleber Rosa <crosa@redhat.com>

Queueing it on my python-next branch.

Thanks!
diff mbox series

Patch

diff --git a/python/qemu/machine.py b/python/qemu/machine.py
index 183d8f3d38..f53abfa492 100644
--- a/python/qemu/machine.py
+++ b/python/qemu/machine.py
@@ -270,7 +270,8 @@  class QEMUMachine(object):
                 self._vm_monitor = os.path.join(self._sock_dir,
                                                 self._name + "-monitor.sock")
                 self._remove_files.append(self._vm_monitor)
-            self._qmp = qmp.QEMUMonitorProtocol(self._vm_monitor, server=True)
+            self._qmp = qmp.QEMUMonitorProtocol(self._vm_monitor, server=True,
+                                                nickname=self._name)
 
     def _post_launch(self):
         if self._qmp:
diff --git a/python/qemu/qmp.py b/python/qemu/qmp.py
index f40586eedd..d6c9b2f4b1 100644
--- a/python/qemu/qmp.py
+++ b/python/qemu/qmp.py
@@ -46,7 +46,7 @@  class QEMUMonitorProtocol:
     #: Logger object for debugging messages
     logger = logging.getLogger('QMP')
 
-    def __init__(self, address, server=False):
+    def __init__(self, address, server=False, nickname=None):
         """
         Create a QEMUMonitorProtocol class.
 
@@ -62,6 +62,9 @@  class QEMUMonitorProtocol:
         self.__address = address
         self.__sock = self.__get_sock()
         self.__sockfile = None
+        self._nickname = nickname
+        if self._nickname:
+            self.logger = logging.getLogger('QMP').getChild(self._nickname)
         if server:
             self.__sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
             self.__sock.bind(self.__address)