diff options
author | John Snow <jsnow@redhat.com> | 2020-10-06 19:58:04 -0400 |
---|---|---|
committer | John Snow <jsnow@redhat.com> | 2020-10-20 09:37:57 -0400 |
commit | be1183e52f49cd0f9c1a855afe4c4a5455f966d1 (patch) | |
tree | f14d28110ed8222b9f59c72b3cfbeb1ee08988ba | |
parent | aaa81ec6093b2d45d5a318227db82fa71680a871 (diff) | |
download | qemu-be1183e52f49cd0f9c1a855afe4c4a5455f966d1.zip qemu-be1183e52f49cd0f9c1a855afe4c4a5455f966d1.tar.gz qemu-be1183e52f49cd0f9c1a855afe4c4a5455f966d1.tar.bz2 |
python/machine.py: Add _qmp access shim
Like many other Optional[] types, it's not always a given that this
object will be set. Wrap it in a type-shim that raises a meaningful
error and will always return a concrete type.
Signed-off-by: John Snow <jsnow@redhat.com>
Reviewed-by: Kevin Wolf <kwolf@redhat.com>
Message-id: 20201006235817.3280413-8-jsnow@redhat.com
Signed-off-by: John Snow <jsnow@redhat.com>
-rw-r--r-- | python/qemu/machine.py | 24 |
1 files changed, 13 insertions, 11 deletions
diff --git a/python/qemu/machine.py b/python/qemu/machine.py index d788e8a..3e9cf09 100644 --- a/python/qemu/machine.py +++ b/python/qemu/machine.py @@ -135,7 +135,7 @@ class QEMUMachine: self._events = [] self._iolog = None self._qmp_set = True # Enable QMP monitor by default. - self._qmp = None + self._qmp_connection: Optional[qmp.QEMUMonitorProtocol] = None self._qemu_full_args = None self._temp_dir = None self._launched = False @@ -302,14 +302,14 @@ class QEMUMachine: if self._remove_monitor_sockfile: assert isinstance(self._monitor_address, str) self._remove_files.append(self._monitor_address) - self._qmp = qmp.QEMUMonitorProtocol( + self._qmp_connection = qmp.QEMUMonitorProtocol( self._monitor_address, server=True, nickname=self._name ) def _post_launch(self): - if self._qmp: + if self._qmp_connection: self._qmp.accept() def _post_shutdown(self): @@ -320,9 +320,9 @@ class QEMUMachine: # Comprehensive reset for the failed launch case: self._early_cleanup() - if self._qmp: + if self._qmp_connection: self._qmp.close() - self._qmp = None + self._qmp_connection = None self._load_io_log() @@ -434,7 +434,7 @@ class QEMUMachine: """ self._early_cleanup() - if self._qmp is not None: + if self._qmp_connection: if not has_quit: # Might raise ConnectionReset self._qmp.cmd('quit') @@ -515,11 +515,13 @@ class QEMUMachine: line. Default is True. @note: call this function before launch(). """ - if enabled: - self._qmp_set = True - else: - self._qmp_set = False - self._qmp = None + self._qmp_set = enabled + + @property + def _qmp(self) -> qmp.QEMUMonitorProtocol: + if self._qmp_connection is None: + raise QEMUMachineError("Attempt to access QMP with no connection") + return self._qmp_connection @classmethod def _qmp_args(cls, _conv_keys: bool = True, **args: Any) -> Dict[str, Any]: |