move python/qemu/*.py to python/qemu/[machine, qmp, utils]/*.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', 'qmp' and 'utils' 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> Reviewed-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com> Reviewed-by: Cleber Rosa <crosa@redhat.com> Message-id: 20210527211715.394144-10-jsnow@redhat.com Signed-off-by: John Snow <jsnow@redhat.com>
46 lines
1.2 KiB
Python
46 lines
1.2 KiB
Python
"""
|
|
QEMU development and testing utilities
|
|
|
|
This package provides a small handful of utilities for performing
|
|
various tasks not directly related to the launching of a VM.
|
|
"""
|
|
|
|
# Copyright (C) 2021 Red Hat Inc.
|
|
#
|
|
# Authors:
|
|
# John Snow <jsnow@redhat.com>
|
|
# Cleber Rosa <crosa@redhat.com>
|
|
#
|
|
# This work is licensed under the terms of the GNU GPL, version 2. See
|
|
# the COPYING file in the top-level directory.
|
|
#
|
|
|
|
import re
|
|
from typing import Optional
|
|
|
|
# pylint: disable=import-error
|
|
from .accel import kvm_available, list_accel, tcg_available
|
|
|
|
|
|
__all__ = (
|
|
'get_info_usernet_hostfwd_port',
|
|
'kvm_available',
|
|
'list_accel',
|
|
'tcg_available',
|
|
)
|
|
|
|
|
|
def get_info_usernet_hostfwd_port(info_usernet_output: str) -> Optional[int]:
|
|
"""
|
|
Returns the port given to the hostfwd parameter via info usernet
|
|
|
|
:param info_usernet_output: output generated by hmp command "info usernet"
|
|
:return: the port number allocated by the hostfwd option
|
|
"""
|
|
for line in info_usernet_output.split('\r\n'):
|
|
regex = r'TCP.HOST_FORWARD.*127\.0\.0\.1\s+(\d+)\s+10\.'
|
|
match = re.search(regex, line)
|
|
if match is not None:
|
|
return int(match[1])
|
|
return None
|