On Thu, Feb 11, 2021 at 01:58:35PM -0500, John Snow wrote: > move python/qemu/*.py to python/qemu/[machine, qmp]/*.py and update import > directives across the tree. > > This is done to create a PEP420 namespace package, in which we may > create subpackages. To do this, the namespace directory ("qemu") should > not have any modules in it. Those files will go into new 'machine' and 'qmp' > subpackages instead. > > Implement machine/__init__.py making the top-level classes and functions > from its various modules available directly inside the package. Change > qmp.py to qmp/__init__.py similarly, such that all of the useful QMP > library classes are available directly from "qemu.qmp" instead of > "qemu.qmp.qmp". > > Signed-off-by: John Snow <js...@redhat.com> > > > --- > > Note for reviewers: in the next patch, I add a utils sub-package and > move qemu/machine/accel.py to qemu/utils/accel.py. If we like it that > way, we can squash it in here if we want, or just leave it as its own > follow-up patch, I am just leaving it as something that will be easy to > un-do or change for now.
IMO this is fine as it is. > > Signed-off-by: John Snow <js...@redhat.com> > --- > python/{qemu => }/.isort.cfg | 0 > python/qemu/__init__.py | 11 ------ > python/qemu/{ => machine}/.flake8 | 0 > python/qemu/machine/__init__.py | 41 +++++++++++++++++++++ > python/qemu/{ => machine}/accel.py | 0 > python/qemu/{ => machine}/console_socket.py | 0 > python/qemu/{ => machine}/machine.py | 16 +++++--- > python/qemu/{ => machine}/pylintrc | 0 > python/qemu/{ => machine}/qtest.py | 3 +- > python/qemu/{qmp.py => qmp/__init__.py} | 12 +++++- > tests/acceptance/boot_linux.py | 3 +- > tests/qemu-iotests/300 | 4 +- > tests/qemu-iotests/iotests.py | 2 +- > tests/vm/basevm.py | 3 +- > 14 files changed, 70 insertions(+), 25 deletions(-) > rename python/{qemu => }/.isort.cfg (100%) > delete mode 100644 python/qemu/__init__.py > rename python/qemu/{ => machine}/.flake8 (100%) > create mode 100644 python/qemu/machine/__init__.py > rename python/qemu/{ => machine}/accel.py (100%) > rename python/qemu/{ => machine}/console_socket.py (100%) > rename python/qemu/{ => machine}/machine.py (98%) > rename python/qemu/{ => machine}/pylintrc (100%) > rename python/qemu/{ => machine}/qtest.py (99%) > rename python/qemu/{qmp.py => qmp/__init__.py} (96%) > > diff --git a/python/qemu/.isort.cfg b/python/.isort.cfg > similarity index 100% > rename from python/qemu/.isort.cfg > rename to python/.isort.cfg > diff --git a/python/qemu/__init__.py b/python/qemu/__init__.py > deleted file mode 100644 > index 4ca06c34a41..00000000000 > --- a/python/qemu/__init__.py > +++ /dev/null > @@ -1,11 +0,0 @@ > -# QEMU library > -# > -# Copyright (C) 2015-2016 Red Hat Inc. > -# Copyright (C) 2012 IBM Corp. > -# > -# Authors: > -# Fam Zheng <f...@redhat.com> > -# > -# This work is licensed under the terms of the GNU GPL, version 2. See > -# the COPYING file in the top-level directory. > -# > diff --git a/python/qemu/.flake8 b/python/qemu/machine/.flake8 > similarity index 100% > rename from python/qemu/.flake8 > rename to python/qemu/machine/.flake8 > diff --git a/python/qemu/machine/__init__.py b/python/qemu/machine/__init__.py > new file mode 100644 > index 00000000000..27b0b19abd3 > --- /dev/null > +++ b/python/qemu/machine/__init__.py > @@ -0,0 +1,41 @@ > +""" > +QEMU development and testing library. > + > +This library provides a few high-level classes for driving QEMU from a > +test suite, not intended for production use. > + > +- QEMUMachine: Configure and Boot a QEMU VM > + - QEMUQtestMachine: VM class, with a qtest socket. > + > +- QEMUQtestProtocol: Connect to, send/receive qtest messages. > + > +- list_accel: List available accelerators > +- kvm_available: Probe for KVM support > +- tcg_available: Probe for TCG support > +""" > + > +# Copyright (C) 2020 John Snow for Red Hat Inc. > +# Copyright (C) 2015-2016 Red Hat Inc. > +# Copyright (C) 2012 IBM Corp. > +# > +# Authors: > +# John Snow <js...@redhat.com> > +# Fam Zheng <f...@euphon.net> > +# > +# This work is licensed under the terms of the GNU GPL, version 2. See > +# the COPYING file in the top-level directory. > +# > + > +from .accel import kvm_available, list_accel, tcg_available > +from .machine import QEMUMachine > +from .qtest import QEMUQtestMachine, QEMUQtestProtocol > + > + > +__all__ = ( > + 'list_accel', > + 'kvm_available', > + 'tcg_available', > + 'QEMUMachine', > + 'QEMUQtestProtocol', > + 'QEMUQtestMachine', > +) > diff --git a/python/qemu/accel.py b/python/qemu/machine/accel.py > similarity index 100% > rename from python/qemu/accel.py > rename to python/qemu/machine/accel.py > diff --git a/python/qemu/console_socket.py > b/python/qemu/machine/console_socket.py > similarity index 100% > rename from python/qemu/console_socket.py > rename to python/qemu/machine/console_socket.py > diff --git a/python/qemu/machine.py b/python/qemu/machine/machine.py > similarity index 98% > rename from python/qemu/machine.py > rename to python/qemu/machine/machine.py > index 7a40f4604be..dd6ce289350 100644 > --- a/python/qemu/machine.py > +++ b/python/qemu/machine/machine.py > @@ -38,8 +38,14 @@ > Type, > ) > > -from . import console_socket, qmp > -from .qmp import QMPMessage, QMPReturnValue, SocketAddrT > +from qemu.qmp import ( > + QEMUMonitorProtocol, > + QMPMessage, > + QMPReturnValue, > + SocketAddrT, > +) > + > +from . import console_socket > > You're moving the files and "isorting" those imports. Intentional? IMO a clear isort followed by a move is preferred. > LOG = logging.getLogger(__name__) > @@ -139,7 +145,7 @@ def __init__(self, > self._events: List[QMPMessage] = [] > self._iolog: Optional[str] = None > self._qmp_set = True # Enable QMP monitor by default. > - self._qmp_connection: Optional[qmp.QEMUMonitorProtocol] = None > + self._qmp_connection: Optional[QEMUMonitorProtocol] = None > self._qemu_full_args: Tuple[str, ...] = () > self._temp_dir: Optional[str] = None > self._launched = False > @@ -315,7 +321,7 @@ def _pre_launch(self) -> None: > if self._remove_monitor_sockfile: > assert isinstance(self._monitor_address, str) > self._remove_files.append(self._monitor_address) > - self._qmp_connection = qmp.QEMUMonitorProtocol( > + self._qmp_connection = QEMUMonitorProtocol( > self._monitor_address, > server=True, > nickname=self._name > @@ -535,7 +541,7 @@ def set_qmp_monitor(self, enabled: bool = True) -> None: > self._qmp_set = enabled > > @property > - def _qmp(self) -> qmp.QEMUMonitorProtocol: > + def _qmp(self) -> QEMUMonitorProtocol: > if self._qmp_connection is None: > raise QEMUMachineError("Attempt to access QMP with no > connection") > return self._qmp_connection > diff --git a/python/qemu/pylintrc b/python/qemu/machine/pylintrc > similarity index 100% > rename from python/qemu/pylintrc > rename to python/qemu/machine/pylintrc > diff --git a/python/qemu/qtest.py b/python/qemu/machine/qtest.py > similarity index 99% > rename from python/qemu/qtest.py > rename to python/qemu/machine/qtest.py > index 39a0cf62fe9..53926e434a7 100644 > --- a/python/qemu/qtest.py > +++ b/python/qemu/machine/qtest.py > @@ -26,8 +26,9 @@ > TextIO, > ) > > +from qemu.qmp import SocketAddrT > + > from .machine import QEMUMachine > -from .qmp import SocketAddrT > > > class QEMUQtestProtocol: > diff --git a/python/qemu/qmp.py b/python/qemu/qmp/__init__.py > similarity index 96% > rename from python/qemu/qmp.py > rename to python/qemu/qmp/__init__.py > index 2cd4d43036c..9606248a3d2 100644 > --- a/python/qemu/qmp.py > +++ b/python/qemu/qmp/__init__.py > @@ -1,4 +1,14 @@ > -""" QEMU Monitor Protocol Python class """ > +""" > +QEMU Monitor Protocol (QMP) development library & tooling. > + > +This package provides a fairly low-level class for communicating to QMP > +protocol servers, as implemented by QEMU, the QEMU Guest Agent, and the > +QEMU Storage Daemon. This library is not intended for production use. > + > +`QEMUMonitorProtocol` is the primary class of interest, and all errors > +raised derive from `QMPError`. > +""" > + > # Copyright (C) 2009, 2010 Red Hat Inc. > # > # Authors: > diff --git a/tests/acceptance/boot_linux.py b/tests/acceptance/boot_linux.py > index bcd923bb4a0..212365fd185 100644 > --- a/tests/acceptance/boot_linux.py > +++ b/tests/acceptance/boot_linux.py > @@ -12,8 +12,7 @@ > > from avocado_qemu import Test, BUILD_DIR > > -from qemu.accel import kvm_available > -from qemu.accel import tcg_available > +from qemu.machine import kvm_available, tcg_available > There are a few extra files where a similar change is needed: $ git grep -E '(kvm|tcg)_available' tests/acceptance/virtio-gpu.py:from qemu.accel import kvm_available tests/acceptance/virtiofs_submounts.py:from qemu.accel import kvm_available tests/vm/aarch64vm.py:from qemu.accel import kvm_available - Cleber.
signature.asc
Description: PGP signature