From b6d76898fb7e8d56a682901c6b61f2e4c8670b71 Mon Sep 17 00:00:00 2001 From: Wenkang Ji Date: Mon, 30 Dec 2024 14:09:29 +0800 Subject: [PATCH] QEMU_VM: Add nic_extra_param_types support Add nic_extra_param_types params support for nic_extra_params to optimize virtio-net QEMU cmdline type handling. Signed-off-by: wji --- virttest/qemu_vm.py | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/virttest/qemu_vm.py b/virttest/qemu_vm.py index 0e976e2dfb..caee585ccb 100644 --- a/virttest/qemu_vm.py +++ b/virttest/qemu_vm.py @@ -740,11 +740,21 @@ def add_nic( dev.parent_bus = pci_bus dev.set_param("addr", pci_addr) if nic_extra_params: - nic_extra_params = ( - _.split("=", 1) for _ in nic_extra_params.split(",") if _ - ) + nic_extra_param_types = self.params.get("nic_extra_param_types", {}) + if nic_extra_param_types: + nic_extra_param_types = dict(eval(nic_extra_param_types)) + nic_extra_params = (_.split('=', 1) for _ in + nic_extra_params.split(',') if _) for key, val in nic_extra_params: - dev.set_param(key, val) + value_type = nic_extra_param_types.get(key) + if value_type: + try: + converted_val = value_type(val) + dev.set_param(key, converted_val) + except ValueError as e: + raise ValueError(f"Failed to convert {key}: {val} to {value_type}: {e}") + else: + dev.set_param(key, val) dev.set_param("bootindex", bootindex) if "aarch64" in params.get("vm_arch_name", arch.ARCH): if "rombar" in devices.execute_qemu("-device %s,?" % model):