[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL 64/72] scripts/qmp-shell: Fix empty-transaction invocation
From: |
John Snow |
Subject: |
[PULL 64/72] scripts/qmp-shell: Fix empty-transaction invocation |
Date: |
Fri, 18 Jun 2021 19:04:47 -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>
Message-id: 20210607200649.1840382-35-jsnow@redhat.com
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
- [PULL 53/72] scripts/qmp-shell: Fix "FuzzyJSON" parser, (continued)
- [PULL 53/72] scripts/qmp-shell: Fix "FuzzyJSON" parser, John Snow, 2021/06/18
- [PULL 54/72] scripts/qmp-shell: refactor QMPCompleter, John Snow, 2021/06/18
- [PULL 52/72] scripts/qmp-shell: move the REPL functionality into QMPShell, John Snow, 2021/06/18
- [PULL 47/72] scripts/qmp-shell: use argparse, John Snow, 2021/06/18
- [PULL 45/72] scripts/qmp-shell: remove if-raise-else patterns, John Snow, 2021/06/18
- [PULL 55/72] scripts/qmp-shell: initialize completer early, John Snow, 2021/06/18
- [PULL 56/72] python/qmp: add QMPObject type alias, John Snow, 2021/06/18
- [PULL 57/72] scripts/qmp-shell: add mypy types, John Snow, 2021/06/18
- [PULL 59/72] scripts/qmp-shell: unprivatize 'pretty' property, John Snow, 2021/06/18
- [PULL 60/72] python/qmp: return generic type from context manager, John Snow, 2021/06/18
- [PULL 64/72] scripts/qmp-shell: Fix empty-transaction invocation,
John Snow <=
- [PULL 63/72] scripts/qmp-shell: remove TODO, John Snow, 2021/06/18
- [PULL 61/72] scripts/qmp-shell: Use context manager instead of atexit, John Snow, 2021/06/18
- [PULL 66/72] scripts/qmp-shell: convert usage comment to docstring, John Snow, 2021/06/18
- [PULL 68/72] scripts/qmp-shell: make QMPShellError inherit QMPError, John Snow, 2021/06/18
- [PULL 70/72] scripts/qmp-shell: move to python/qemu/qmp/qmp_shell.py, John Snow, 2021/06/18
- [PULL 72/72] scripts/qmp-shell: add redirection shim, John Snow, 2021/06/18
- [PULL 62/72] scripts/qmp-shell: use logging to show warnings, John Snow, 2021/06/18
- [PULL 65/72] scripts/qmp-shell: Remove too-broad-exception, John Snow, 2021/06/18
- [PULL 67/72] scripts/qmp-shell: remove double-underscores, John Snow, 2021/06/18
- [PULL 69/72] scripts/qmp-shell: add docstrings, John Snow, 2021/06/18