[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v2 06/10] qmp.py: Couple of pylint/style fixes
From: |
Philippe Mathieu-Daudé |
Subject: |
Re: [Qemu-devel] [PATCH v2 06/10] qmp.py: Couple of pylint/style fixes |
Date: |
Tue, 25 Jul 2017 12:18:58 -0300 |
On Tue, Jul 25, 2017 at 12:09 PM, Lukáš Doktor <address@hidden> wrote:
> No actual code changes, just initializing attributes earlier to avoid
> AttributeError on early introspection, a few pylint/style fixes and
> docstring clarifications.
>
> Signed-off-by: Lukáš Doktor <address@hidden>
Reviewed-by: Philippe Mathieu-Daudé <address@hidden>
> ---
> scripts/qmp/qmp.py | 37 ++++++++++++++++++++++++-------------
> 1 file changed, 24 insertions(+), 13 deletions(-)
>
> diff --git a/scripts/qmp/qmp.py b/scripts/qmp/qmp.py
> index 62d3651..782d1ac 100644
> --- a/scripts/qmp/qmp.py
> +++ b/scripts/qmp/qmp.py
> @@ -13,19 +13,30 @@ import errno
> import socket
> import sys
>
> +
> class QMPError(Exception):
> pass
>
> +
> class QMPConnectError(QMPError):
> pass
>
> +
> class QMPCapabilitiesError(QMPError):
> pass
>
> +
> class QMPTimeoutError(QMPError):
> pass
>
> +
> class QEMUMonitorProtocol:
> +
> + #: Socket's error class
> + error = socket.error
> + #: Socket's timeout
> + timeout = socket.timeout
> +
> def __init__(self, address, server=False, debug=False):
> """
> Create a QEMUMonitorProtocol class.
> @@ -42,6 +53,7 @@ class QEMUMonitorProtocol:
> self.__address = address
> self._debug = debug
> self.__sock = self.__get_sock()
> + self.__sockfile = None
> if server:
> self.__sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
> self.__sock.bind(self.__address)
> @@ -56,7 +68,7 @@ class QEMUMonitorProtocol:
>
> def __negotiate_capabilities(self):
> greeting = self.__json_read()
> - if greeting is None or not greeting.has_key('QMP'):
> + if greeting is None or "QMP" not in greeting:
> raise QMPConnectError
> # Greeting seems ok, negotiate capabilities
> resp = self.cmd('qmp_capabilities')
> @@ -78,8 +90,6 @@ class QEMUMonitorProtocol:
> continue
> return resp
>
> - error = socket.error
> -
> def __get_events(self, wait=False):
> """
> Check for new events in the stream and cache them in __events.
> @@ -89,8 +99,8 @@ class QEMUMonitorProtocol:
>
> @raise QMPTimeoutError: If a timeout float is provided and the
> timeout
> period elapses.
> - @raise QMPConnectError: If wait is True but no events could be
> retrieved
> - or if some other error occurred.
> + @raise QMPConnectError: If wait is True but no events could be
> + retrieved or if some other error occurred.
> """
>
> # Check for new events regardless and pull them into the cache:
> @@ -175,7 +185,7 @@ class QEMUMonitorProtocol:
> @param args: command arguments (dict)
> @param id: command id (dict, list, string or int)
> """
> - qmp_cmd = { 'execute': name }
> + qmp_cmd = {'execute': name}
> if args:
> qmp_cmd['arguments'] = args
> if id:
> @@ -183,6 +193,9 @@ class QEMUMonitorProtocol:
> return self.cmd_obj(qmp_cmd)
>
> def command(self, cmd, **kwds):
> + """
> + Build and send a QMP command to the monitor, report errors if any
> + """
> ret = self.cmd(cmd, kwds)
> if ret.has_key('error'):
> raise Exception(ret['error']['desc'])
> @@ -190,15 +203,15 @@ class QEMUMonitorProtocol:
>
> def pull_event(self, wait=False):
> """
> - Get and delete the first available QMP event.
> + Pulls a single event.
>
> @param wait (bool): block until an event is available.
> @param wait (float): If wait is a float, treat it as a timeout value.
>
> @raise QMPTimeoutError: If a timeout float is provided and the
> timeout
> period elapses.
> - @raise QMPConnectError: If wait is True but no events could be
> retrieved
> - or if some other error occurred.
> + @raise QMPConnectError: If wait is True but no events could be
> + retrieved or if some other error occurred.
>
> @return The first available QMP event, or None.
> """
> @@ -217,8 +230,8 @@ class QEMUMonitorProtocol:
>
> @raise QMPTimeoutError: If a timeout float is provided and the
> timeout
> period elapses.
> - @raise QMPConnectError: If wait is True but no events could be
> retrieved
> - or if some other error occurred.
> + @raise QMPConnectError: If wait is True but no events could be
> + retrieved or if some other error occurred.
>
> @return The list of available QMP events.
> """
> @@ -235,8 +248,6 @@ class QEMUMonitorProtocol:
> self.__sock.close()
> self.__sockfile.close()
>
> - timeout = socket.timeout
> -
> def settimeout(self, timeout):
> self.__sock.settimeout(timeout)
>
> --
> 2.9.4
>
- [Qemu-devel] [PATCH v2 01/10] qemu.py: Pylint/style fixes, (continued)
- [Qemu-devel] [PATCH v2 01/10] qemu.py: Pylint/style fixes, Lukáš Doktor, 2017/07/25
- [Qemu-devel] [PATCH v2 02/10] qemu|qtest: Avoid dangerous arguments, Lukáš Doktor, 2017/07/25
- [Qemu-devel] [PATCH v2 04/10] qemu.py: Simplify QMP key-conversion, Lukáš Doktor, 2017/07/25
- [Qemu-devel] [PATCH v2 03/10] qemu.py: Use iteritems rather than keys(), Lukáš Doktor, 2017/07/25
- [Qemu-devel] [PATCH v2 05/10] qemu.py: Use custom exceptions rather than Exception, Lukáš Doktor, 2017/07/25
- [Qemu-devel] [PATCH v2 06/10] qmp.py: Couple of pylint/style fixes, Lukáš Doktor, 2017/07/25
- Re: [Qemu-devel] [PATCH v2 06/10] qmp.py: Couple of pylint/style fixes,
Philippe Mathieu-Daudé <=
- [Qemu-devel] [PATCH v2 07/10] qmp.py: Use object-based class for QEMUMonitorProtocol, Lukáš Doktor, 2017/07/25
- [Qemu-devel] [PATCH v2 08/10] qmp.py: Avoid "has_key" usage, Lukáš Doktor, 2017/07/25
- [Qemu-devel] [PATCH v2 09/10] qmp.py: Avoid overriding a builtin object, Lukáš Doktor, 2017/07/25
[Qemu-devel] [PATCH v2 10/10] qtest.py: Few pylint/style fixes, Lukáš Doktor, 2017/07/25