Fwd: Re: [PATCH virt-install v1 3/3] virtxml: prevent defining same hostdev again
Shalini Chellathurai Saroja
shalini at linux.ibm.com
Fri May 28 12:06:56 UTC 2021
On 5/19/21 12:49 AM, Cole Robinson wrote:
> On 4/14/21 11:18 AM, Shalini Chellathurai Saroja wrote:
>> Currently, it is possible to add same device multiple times, when the
>> guest domain is in shut-off state. This patch prevents this unexpected
>> behavior for all hostdev devices, including mdev devices.
>>
> If this is an invalid config, these types of validation checks should
> live in libvirt so all clients benefit from them, and libvirt is the one
> source of truth for what's supported or not.
Hello Cole,
Thank you for the review.
This validation check is available in libvirt, for this to work, the
flag "VIR_DOMAIN_AFFECT_CONFIG" has to be set, when the virtual server
is not in running state.
With the below changes, libvirt restricts addition of same device
multiple times.
diff --git a/virtinst/virtxml.py b/virtinst/virtxml.py
index 0c8da37e..6de66488 100644
--- a/virtinst/virtxml.py
+++ b/virtinst/virtxml.py
@@ -222,12 +222,24 @@ def setup_device(dev):
dev.build_storage(cli.get_meter())
-def define_changes(conn, inactive_xmlobj, devs, action, confirm):
+def define_changes(domain, conn, inactive_xmlobj, devs, action, confirm):
if confirm:
if not prompt_yes_or_no(
_("Define '%s' with the changed XML?") %
inactive_xmlobj.name):
return False
+ if action == "coldplug":
+ msg_fail = _("Error attempting device coldplug: %(error)s")
+
+ for dev in devs:
+ xml = dev.get_xml()
+ setup_device(dev)
+
+ try:
+ domain.attachDeviceFlags(xml,
libvirt.VIR_DOMAIN_AFFECT_CONFIG)
+ except libvirt.libvirtError as e:
+ fail(msg_fail % {"error": e})
+
if action == "hotplug":
for dev in devs:
setup_device(dev)
@@ -324,7 +336,10 @@ def prepare_changes(xmlobj, options, parserclass):
elif options.add_device:
devs = action_add_device(xmlobj, options, parserclass)
- action = "hotplug"
+ if options.update:
+ action = "hotplug"
+ else:
+ action = "coldplug"
elif options.remove_device:
devs = action_remove_device(xmlobj, options, parserclass)
@@ -524,7 +539,7 @@ def main(conn=None):
action, options.confirm)
return 0
- dom = define_changes(conn, inactive_xmlobj,
+ dom = define_changes(domain, conn, inactive_xmlobj,
devs, action, options.confirm)
if not dom:
# --confirm user said 'no'
However, some tests fail as shown below because the flag is not
supported by the test driver.
ERROR Error attempting device coldplug: this function is not
supported by the connection driver: virDomainAttachDeviceFlags
TESTSUITE: Expected command to pass, but it didn't.
============================= short test summary info
=============================
FAILED tests/test_cli.py::testCLI0455virt_xml - AssertionError: Command
was: ./v...
FAILED tests/test_cli.py::testCLI0458virt_xml_add_host_device -
AssertionError: ...
FAILED tests/test_cli.py::testCLI0459virt_xml_add_sound -
AssertionError: Comman...
FAILED tests/test_cli.py::testCLI0460virt_xml_add_disk_basic -
AssertionError: C...
FAILED tests/test_cli.py::testCLI0461virt_xml_add_disk_notarget -
AssertionError...
FAILED tests/test_cli.py::testCLI0462virt_xml_add_disk_create_storage -
Assertio...
FAILED tests/test_cli.py::testCLI0463virt_xml_add_disk_default_storage -
Asserti...
FAILED tests/test_cli.py::testCLI0470virt_xml_add_hostdev_mdev -
AssertionError:...
FAILED tests/test_cli.py::testCLI0474virt_xml_add_host_device_start -
AssertionE...
FAILED tests/test_cli.py::testCLI0479virt_xml_kvm_add_disk_os_from_xml -
Asserti...
FAILED
tests/test_cli.py::testCLI0480virt_xml_kvm_add_disk_os_from_cmdline - Ass...
FAILED
tests/test_cli.py::testCLI0481virt_xml_kvm_add_network_os_from_xml - Asse...
FAILED
tests/test_cli.py::testCLI0482virt_xml_kvm_add_network_os_from_cmdline - ...
=================== 13 failed, 582 passed, 2 skipped in 14.01s
====================
Is it ok to add these tests as invalid like the below example?
c.add_invalid("test-for-virtxml --add-device --host-device 0x04b3:0x4485
--update --confirm", input_text="yes") # test driver doesn't support
attachdevice...
Please let me know your comments.
>
> We make some exceptions in virt-install/virt-xml to validate common
> configuration errors but I don't think this is one of them.
>
> Thanks,
> Cole
>
--
Kind regards
Shalini Chellathurai Saroja
Linux on Z and Virtualization Development
Vorsitzende des Aufsichtsrats: Gregor Pillen
Geschäftsführung: Dirk Wittkopp
Sitz der Gesellschaft: Böblingen
Registergericht: Amtsgericht Stuttgart, HRB 243294
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listman.redhat.com/archives/virt-tools-list/attachments/20210528/7f9c0e71/attachment.htm>
More information about the virt-tools-list
mailing list