[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v2 64/72] scripts/qmp-shell: Fix empty-transaction invocation
From: |
John Snow |
Subject: |
[PATCH v2 64/72] scripts/qmp-shell: Fix empty-transaction invocation |
Date: |
Tue, 3 Nov 2020 19:35:54 -0500 |
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 3c32b576a37d..78e4eae00754 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.26.2
- [PATCH v2 54/72] scripts/qmp-shell: refactor QMPCompleter, (continued)
- [PATCH v2 54/72] scripts/qmp-shell: refactor QMPCompleter, John Snow, 2020/11/03
- [PATCH v2 56/72] python/qmp: add QMPObject type alias, John Snow, 2020/11/03
- [PATCH v2 59/72] scripts/qmp-shell: unprivatize 'pretty' property, John Snow, 2020/11/03
- [PATCH v2 58/72] scripts/qmp-shell: Accept SocketAddrT instead of string, John Snow, 2020/11/03
- [PATCH v2 55/72] scripts/qmp-shell: initialize completer early, John Snow, 2020/11/03
- [PATCH v2 61/72] scripts/qmp-shell: Use context manager instead of atexit, John Snow, 2020/11/03
- [PATCH v2 62/72] scripts/qmp-shell: use logging to show warnings, John Snow, 2020/11/03
- [PATCH v2 65/72] scripts/qmp-shell: Remove too-broad-exception, John Snow, 2020/11/03
- [PATCH v2 66/72] scripts/qmp-shell: convert usage comment to docstring, John Snow, 2020/11/03
- [PATCH v2 63/72] scripts/qmp-shell: remove TODO, John Snow, 2020/11/03
- [PATCH v2 64/72] scripts/qmp-shell: Fix empty-transaction invocation,
John Snow <=
- [PATCH v2 57/72] scripts/qmp-shell: add mypy types, John Snow, 2020/11/03
- [PATCH v2 60/72] python/qmp: return generic type from context manager, John Snow, 2020/11/03
- [PATCH v2 68/72] scripts/qmp-shell: make QMPShellError inherit QMPError, John Snow, 2020/11/03
- [PATCH v2 67/72] scripts/qmp-shell: remove double-underscores, John Snow, 2020/11/03
- [PATCH v2 71/72] python: add qmp-shell entry point, John Snow, 2020/11/03
- [PATCH v2 69/72] scripts/qmp-shell: add docstrings, John Snow, 2020/11/03
- [PATCH v2 70/72] scripts/qmp-shell: move to python/qemu/qmp/qmp_shell.py, John Snow, 2020/11/03
- [PATCH v2 72/72] scripts/qmp-shell: add redirection shim, John Snow, 2020/11/03