[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH v4 03/24] python: create qemu packages
From: |
Cleber Rosa |
Subject: |
Re: [PATCH v4 03/24] python: create qemu packages |
Date: |
Fri, 12 Feb 2021 00:17:19 -0500 |
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 <jsnow@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 <jsnow@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 <famz@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 <jsnow@redhat.com>
> +# Fam Zheng <fam@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
- [PATCH v4 00/24] python: create installable package, John Snow, 2021/02/11
- [PATCH v4 02/24] iotests/297: add --namespace-packages to mypy arguments, John Snow, 2021/02/11
- [PATCH v4 04/24] python: create utils sub-package, John Snow, 2021/02/11
- [PATCH v4 01/24] python/console_socket: avoid one-letter variable, John Snow, 2021/02/11
- [PATCH v4 03/24] python: create qemu packages, John Snow, 2021/02/11
- Re: [PATCH v4 03/24] python: create qemu packages,
Cleber Rosa <=
- [PATCH v4 05/24] python: add qemu package installer, John Snow, 2021/02/11
- [PATCH v4 08/24] python: Add pipenv support, John Snow, 2021/02/11
- Re: [PATCH v4 08/24] python: Add pipenv support, John Snow, 2021/02/16