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):