All of lore.kernel.org
 help / color / mirror / Atom feed
From: John Snow <jsnow@redhat.com>
To: qemu-devel@nongnu.org
Cc: Eduardo Habkost <eduardo@habkost.net>,
	Peter Maydell <peter.maydell@linaro.org>,
	Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>,
	Beraldo Leal <bleal@redhat.com>,
	Markus Armbruster <armbru@redhat.com>,
	Cleber Rosa <crosa@redhat.com>, John Snow <jsnow@redhat.com>
Subject: [PULL 10/17] python/qmp: switch qemu-ga-client to AQMP
Date: Fri, 21 Jan 2022 19:09:24 -0500	[thread overview]
Message-ID: <20220122000931.536322-11-jsnow@redhat.com> (raw)
In-Reply-To: <20220122000931.536322-1-jsnow@redhat.com>

Async QMP always raises a "ConnectError" on any connection error which
houses the cause in a second exception. We can check if this root cause
was python's ConnectionError to determine a fairly similar condition to
the original error check here.

Signed-off-by: John Snow <jsnow@redhat.com>
Reviewed-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
Reviewed-by: Beraldo Leal <bleal@redhat.com>
---
 python/qemu/qmp/qemu_ga_client.py | 22 +++++++++++-----------
 1 file changed, 11 insertions(+), 11 deletions(-)

diff --git a/python/qemu/qmp/qemu_ga_client.py b/python/qemu/qmp/qemu_ga_client.py
index b3e1d98c9e..15ed430c61 100644
--- a/python/qemu/qmp/qemu_ga_client.py
+++ b/python/qemu/qmp/qemu_ga_client.py
@@ -37,8 +37,8 @@
 # the COPYING file in the top-level directory.
 
 import argparse
+import asyncio
 import base64
-import errno
 import os
 import random
 import sys
@@ -50,8 +50,8 @@
     Sequence,
 )
 
-from qemu import qmp
-from qemu.qmp import SocketAddrT
+from qemu.aqmp import ConnectError, SocketAddrT
+from qemu.aqmp.legacy import QEMUMonitorProtocol
 
 
 # This script has not seen many patches or careful attention in quite
@@ -61,7 +61,7 @@
 # pylint: disable=missing-docstring
 
 
-class QemuGuestAgent(qmp.QEMUMonitorProtocol):
+class QemuGuestAgent(QEMUMonitorProtocol):
     def __getattr__(self, name: str) -> Callable[..., Any]:
         def wrapper(**kwds: object) -> object:
             return self.command('guest-' + name.replace('_', '-'), **kwds)
@@ -149,7 +149,7 @@ def ping(self, timeout: Optional[float]) -> bool:
         self.qga.settimeout(timeout)
         try:
             self.qga.ping()
-        except TimeoutError:
+        except asyncio.TimeoutError:
             return False
         return True
 
@@ -172,7 +172,7 @@ def suspend(self, mode: str) -> None:
         try:
             getattr(self.qga, 'suspend' + '_' + mode)()
             # On error exception will raise
-        except TimeoutError:
+        except asyncio.TimeoutError:
             # On success command will timed out
             return
 
@@ -182,7 +182,7 @@ def shutdown(self, mode: str = 'powerdown') -> None:
 
         try:
             self.qga.shutdown(mode=mode)
-        except TimeoutError:
+        except asyncio.TimeoutError:
             pass
 
 
@@ -277,7 +277,7 @@ def _cmd_reboot(client: QemuGuestAgentClient, args: Sequence[str]) -> None:
 
 def send_command(address: str, cmd: str, args: Sequence[str]) -> None:
     if not os.path.exists(address):
-        print('%s not found' % address)
+        print(f"'{address}' not found. (Is QEMU running?)")
         sys.exit(1)
 
     if cmd not in commands:
@@ -287,10 +287,10 @@ def send_command(address: str, cmd: str, args: Sequence[str]) -> None:
 
     try:
         client = QemuGuestAgentClient(address)
-    except OSError as err:
+    except ConnectError as err:
         print(err)
-        if err.errno == errno.ECONNREFUSED:
-            print('Hint: qemu is not running?')
+        if isinstance(err.exc, ConnectionError):
+            print('(Is QEMU running?)')
         sys.exit(1)
 
     if cmd == 'fsfreeze' and args[0] == 'freeze':
-- 
2.31.1



  parent reply	other threads:[~2022-01-22  0:28 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-01-22  0:09 [PULL 00/17] Python patches John Snow
2022-01-22  0:09 ` [PULL 01/17] python: pin setuptools below v60.0.0 John Snow
2022-01-22  0:09 ` [PULL 02/17] python: use avocado's "new" runner John Snow
2022-01-22  0:09 ` [PULL 03/17] python/aqmp: fix docstring typo John Snow
2022-01-22  0:09 ` [PULL 04/17] python/aqmp: add __del__ method to legacy interface John Snow
2022-01-22  0:09 ` [PULL 05/17] python/aqmp: handle asyncio.TimeoutError on execute() John Snow
2022-01-22  0:09 ` [PULL 06/17] python/aqmp: copy type definitions from qmp John Snow
2022-01-22  0:09 ` [PULL 07/17] python/aqmp: add SocketAddrT to package root John Snow
2022-01-22  0:09 ` [PULL 08/17] python/aqmp: rename AQMPError to QMPError John Snow
2022-01-22  0:09 ` [PULL 09/17] python/qemu-ga-client: don't use deprecated CLI syntax in usage comment John Snow
2022-01-22  0:09 ` John Snow [this message]
2022-01-22  0:09 ` [PULL 11/17] python/qmp: switch qom tools to AQMP John Snow
2022-01-22  0:09 ` [PULL 12/17] python/qmp: switch qmp-shell " John Snow
2022-01-22  0:09 ` [PULL 13/17] python: move qmp utilities to python/qemu/utils John Snow
2022-01-22  0:09 ` [PULL 14/17] python: move qmp-shell under the AQMP package John Snow
2022-01-22  0:09 ` [PULL 15/17] scripts/cpu-x86-uarch-abi: fix CLI parsing John Snow
2022-01-22  0:09 ` [PULL 16/17] scripts/cpu-x86-uarch-abi: switch to AQMP John Snow
2022-01-22  0:09 ` [PULL 17/17] scripts/render-block-graph: " John Snow
2022-01-22 13:57 ` [PULL 00/17] Python patches Peter Maydell
2022-01-22 17:06   ` John Snow
2022-01-22 17:56     ` Peter Maydell

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20220122000931.536322-11-jsnow@redhat.com \
    --to=jsnow@redhat.com \
    --cc=armbru@redhat.com \
    --cc=bleal@redhat.com \
    --cc=crosa@redhat.com \
    --cc=eduardo@habkost.net \
    --cc=peter.maydell@linaro.org \
    --cc=qemu-devel@nongnu.org \
    --cc=vsementsov@virtuozzo.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.