Add a helper to query the list of machines built into a QEMU binary. We simply send the 'query-machines' command over a QMP socket.
Signed-off-by: Philippe Mathieu-Daudé <phi...@redhat.com> --- python/qemu/binutils.py | 15 +++++++++++++++ tests/acceptance/core_scripts.py | 9 +++++++++ 2 files changed, 24 insertions(+) diff --git a/python/qemu/binutils.py b/python/qemu/binutils.py index 905d393ba5..7bb57c521b 100644 --- a/python/qemu/binutils.py +++ b/python/qemu/binutils.py @@ -51,3 +51,18 @@ def binary_get_arch(qemu_bin): LOG.info(res) vm.shutdown() return res['arch'] + +def binary_get_machines(qemu_bin): + ''' + Get list of machines supported by a QEMU binary + + @param qemu_bin (str): path to the QEMU binary + @return list of machines supported by the binary + ''' + with QEMUMachine(qemu_bin) as vm: + vm.set_machine('none') + vm.launch() + res = vm.command('query-machines') + LOG.info(res) + vm.shutdown() + return [m['name'] for m in res] diff --git a/tests/acceptance/core_scripts.py b/tests/acceptance/core_scripts.py index 93dd822368..a5b112f928 100644 --- a/tests/acceptance/core_scripts.py +++ b/tests/acceptance/core_scripts.py @@ -17,6 +17,7 @@ import logging sys.path.append(os.path.join(os.path.dirname(__file__), '..', '..', 'python')) from avocado_qemu import Test from qemu.binutils import binary_get_arch +from qemu.binutils import binary_get_machines from qemu.binutils import binary_get_version @@ -40,3 +41,11 @@ class PythonQemuCoreScripts(Test): a = binary_get_arch(self.qemu_bin) logger.debug('arch: {}'.format(a)) self.assertIn(a, ['i386', 'x86_64']) + + def test_get_machines(self): + logger = logging.getLogger('core') + machines = binary_get_machines(self.qemu_bin) + for m in sorted(machines): + logger.debug('machine: {}'.format(m)) + # The 'none' machine is always available + self.assertIn('none', machines) -- 2.21.1