[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 34/42] scripts/qmp-shell: Fix empty-transaction invocation
From: |
John Snow |
Subject: |
[PATCH 34/42] scripts/qmp-shell: Fix empty-transaction invocation |
Date: |
Mon, 7 Jun 2021 16:06:41 -0400 |
calling "transaction( )" is pointless, but valid. Rework the parser to
allow this kind of invocation. This helps clean up exception handling
later by removing accidental breakages of the parser that aren't
explicitly forbidden.
Signed-off-by: John Snow <jsnow@redhat.com>
---
scripts/qmp/qmp-shell | 14 ++++++++------
1 file changed, 8 insertions(+), 6 deletions(-)
diff --git a/scripts/qmp/qmp-shell b/scripts/qmp/qmp-shell
index 3c32b576a3..78e4eae007 100755
--- a/scripts/qmp/qmp-shell
+++ b/scripts/qmp/qmp-shell
@@ -244,11 +244,14 @@ class QMPShell(qmp.QEMUMonitorProtocol):
cmdargs = re.findall(argument_regex, cmdline)
qmpcmd: QMPMessage
- # Transactional CLI entry/exit:
- if cmdargs[0] == 'transaction(':
+ # Transactional CLI entry:
+ if cmdargs and cmdargs[0] == 'transaction(':
self._transmode = True
+ self._actions = []
cmdargs.pop(0)
- elif cmdargs[0] == ')' and self._transmode:
+
+ # Transactional CLI exit:
+ if cmdargs and cmdargs[0] == ')' and self._transmode:
self._transmode = False
if len(cmdargs) > 1:
msg = 'Unexpected input after close of Transaction sub-shell'
@@ -257,15 +260,14 @@ class QMPShell(qmp.QEMUMonitorProtocol):
'execute': 'transaction',
'arguments': {'actions': self._actions}
}
- self._actions = list()
return qmpcmd
- # Nothing to process?
+ # No args, or no args remaining
if not cmdargs:
return None
- # Parse and then cache this Transactional Action
if self._transmode:
+ # Parse and cache this Transactional Action
finalize = False
action = {'type': cmdargs[0], 'data': {}}
if cmdargs[-1] == ')':
--
2.31.1
- [PATCH 16/42] scripts/qmp-shell: use isinstance() instead of type(), (continued)
- [PATCH 16/42] scripts/qmp-shell: use isinstance() instead of type(), John Snow, 2021/06/07
- [PATCH 30/42] python/qmp: return generic type from context manager, John Snow, 2021/06/07
- [PATCH 33/42] scripts/qmp-shell: remove TODO, John Snow, 2021/06/07
- [PATCH 23/42] scripts/qmp-shell: Fix "FuzzyJSON" parser, John Snow, 2021/06/07
- [PATCH 35/42] scripts/qmp-shell: Remove too-broad-exception, John Snow, 2021/06/07
- [PATCH 26/42] python/qmp: add QMPObject type alias, John Snow, 2021/06/07
- [PATCH 13/42] scripts/qmp-shell: rename one and two-letter variables, John Snow, 2021/06/07
- [PATCH 28/42] scripts/qmp-shell: Accept SocketAddrT instead of string, John Snow, 2021/06/07
- [PATCH 22/42] scripts/qmp-shell: move the REPL functionality into QMPShell, John Snow, 2021/06/07
- [PATCH 32/42] scripts/qmp-shell: use logging to show warnings, John Snow, 2021/06/07
- [PATCH 34/42] scripts/qmp-shell: Fix empty-transaction invocation,
John Snow <=
- [PATCH 31/42] scripts/qmp-shell: Use context manager instead of atexit, John Snow, 2021/06/07
- [PATCH 17/42] scripts/qmp-shell: use argparse, John Snow, 2021/06/07
- [PATCH 36/42] scripts/qmp-shell: convert usage comment to docstring, John Snow, 2021/06/07
- [PATCH 37/42] scripts/qmp-shell: remove double-underscores, John Snow, 2021/06/07
- [PATCH 41/42] python: add qmp-shell entry point, John Snow, 2021/06/07
- [PATCH 38/42] scripts/qmp-shell: make QMPShellError inherit QMPError, John Snow, 2021/06/07
- [PATCH 39/42] scripts/qmp-shell: add docstrings, John Snow, 2021/06/07
- [PATCH 42/42] scripts/qmp-shell: add redirection shim, John Snow, 2021/06/07
- [PATCH 40/42] scripts/qmp-shell: move to python/qemu/qmp/qmp_shell.py, John Snow, 2021/06/07
- Re: [PATCH 00/42] python: move qmp-shell into qemu.qmp package, John Snow, 2021/06/14