From nobody Sat Feb 7 06:39:32 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1502224900752872.3490085343632; Tue, 8 Aug 2017 13:41:40 -0700 (PDT) Received: from localhost ([::1]:44423 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dfBJr-0001GJ-5z for importer@patchew.org; Tue, 08 Aug 2017 16:41:39 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:57514) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dfBI6-0008Hn-3g for qemu-devel@nongnu.org; Tue, 08 Aug 2017 16:39:51 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dfBI4-0000MU-S9 for qemu-devel@nongnu.org; Tue, 08 Aug 2017 16:39:50 -0400 Received: from mx1.redhat.com ([209.132.183.28]:44190) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1dfBI4-0000Lp-Jg for qemu-devel@nongnu.org; Tue, 08 Aug 2017 16:39:48 -0400 Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.phx2.redhat.com [10.5.11.16]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 98329552E9 for ; Tue, 8 Aug 2017 20:39:47 +0000 (UTC) Received: from localhost (ovpn-116-20.gru2.redhat.com [10.97.116.20]) by smtp.corp.redhat.com (Postfix) with ESMTP id 4A0394DA88; Tue, 8 Aug 2017 20:39:43 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 98329552E9 Authentication-Results: ext-mx05.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx05.extmail.prod.ext.phx2.redhat.com; spf=fail smtp.mailfrom=ehabkost@redhat.com From: Eduardo Habkost To: qemu-devel@nongnu.org Date: Tue, 8 Aug 2017 17:39:31 -0300 Message-Id: <20170808203935.30021-2-ehabkost@redhat.com> In-Reply-To: <20170808203935.30021-1-ehabkost@redhat.com> References: <20170808203935.30021-1-ehabkost@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.16 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.29]); Tue, 08 Aug 2017 20:39:47 +0000 (UTC) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PATCH for-2.11 v2 1/5] qmp-shell: Use optparse module X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: John Snow , Markus Armbruster , Stefan Hajnoczi Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" It makes command-line parsing and generation of help text much simpler. The optparse module is deprecated since Python 2.7, but argparse is not available in Python 2.6 (the minimum Python version required for building QEMU). Signed-off-by: Eduardo Habkost Reviewed-by: Stefan Hajnoczi --- Changes v1 -> v2: * Use optparse module, as the minimum Python version for building QEMU is 2.6 * Reported-by: Stefan Hajnoczi * Suggested-by: "Daniel P. Berrange" --- scripts/qmp/qmp-shell | 63 +++++++++++++++++++----------------------------= ---- 1 file changed, 23 insertions(+), 40 deletions(-) diff --git a/scripts/qmp/qmp-shell b/scripts/qmp/qmp-shell index 860ffb2..ad72ef9 100755 --- a/scripts/qmp/qmp-shell +++ b/scripts/qmp/qmp-shell @@ -73,6 +73,7 @@ import sys import os import errno import atexit +import optparse =20 class QMPCompleter(list): def complete(self, text, state): @@ -393,52 +394,34 @@ def die(msg): sys.stderr.write('ERROR: %s\n' % msg) sys.exit(1) =20 -def fail_cmdline(option=3DNone): - if option: - sys.stderr.write('ERROR: bad command-line option \'%s\'\n' % optio= n) - sys.stderr.write('qmp-shell [ -v ] [ -p ] [ -H ] [ -N ] < UNIX socket = path> | < TCP address:port >\n') - sys.stderr.write(' -v Verbose (echo command sent and received)\= n') - sys.stderr.write(' -p Pretty-print JSON\n') - sys.stderr.write(' -H Use HMP interface\n') - sys.stderr.write(' -N Skip negotiate (for qemu-ga)\n') - sys.exit(1) - def main(): - addr =3D '' - qemu =3D None - hmp =3D False - pretty =3D False - verbose =3D False - negotiate =3D True + parser =3D optparse.OptionParser(description=3D'QMP shell utility') + parser.set_usage("%prog [options] | ") + parser.add_option('-v', action=3D'store_true', dest=3D'verbose', + help=3D'Verbose (echo command sent and received)') + parser.add_option('-p', action=3D'store_true', dest=3D'pretty', + help=3D'Pretty-print JSON') + parser.add_option('-H', action=3D'store_true', dest=3D'hmp', + help=3D'Use HMP interface') + parser.add_option('-N', action=3D'store_false', dest=3D'negotiate', + default=3DTrue, help=3D'Skip negotiate (for qemu-ga)') + opts,args =3D parser.parse_args() + + if len(args) !=3D 1: + parser.print_help(sys.stderr) + sys.exit(1) + addr =3D args[0] =20 try: - for arg in sys.argv[1:]: - if arg =3D=3D "-H": - if qemu is not None: - fail_cmdline(arg) - hmp =3D True - elif arg =3D=3D "-p": - pretty =3D True - elif arg =3D=3D "-N": - negotiate =3D False - elif arg =3D=3D "-v": - verbose =3D True - else: - if qemu is not None: - fail_cmdline(arg) - if hmp: - qemu =3D HMPShell(arg) - else: - qemu =3D QMPShell(arg, pretty) - addr =3D arg - - if qemu is None: - fail_cmdline() + if opts.hmp: + qemu =3D HMPShell(addr) + else: + qemu =3D QMPShell(addr, opts.pretty) except QMPShellBadPort: die('bad port number in command-line') =20 try: - qemu.connect(negotiate) + qemu.connect(opts.negotiate) except qmp.QMPConnectError: die('Didn\'t get QMP greeting message') except qmp.QMPCapabilitiesError: @@ -447,7 +430,7 @@ def main(): die('Could not connect to %s' % addr) =20 qemu.show_banner() - qemu.set_verbosity(verbose) + qemu.set_verbosity(opts.verbose) while qemu.read_exec_command(qemu.get_prompt()): pass qemu.close() --=20 2.9.4