diff --git a/tests/cli-test-xml/compare/virt-install-many-devices.xml b/tests/cli-test-xml/compare/virt-install-many-devices.xml index 7b9bb7c74..a45d87b3b 100644 --- a/tests/cli-test-xml/compare/virt-install-many-devices.xml +++ b/tests/cli-test-xml/compare/virt-install-many-devices.xml @@ -227,6 +227,7 @@ + @@ -389,6 +390,7 @@ + diff --git a/tests/clitest.py b/tests/clitest.py index 693659878..279cb8936 100644 --- a/tests/clitest.py +++ b/tests/clitest.py @@ -500,10 +500,12 @@ c.add_compare(""" \ \ --smartcard passthrough,type=spicevmc \ --smartcard type=host \ +--smartcard default \ \ --redirdev usb,type=spicevmc \ --redirdev usb,type=tcp,server=localhost:4000 \ --redirdev usb,type=tcp,server=127.0.0.1:4002,boot_order=3 \ +--redirdev default \ \ --rng egd,backend_host=127.0.0.1,backend_service=8000,backend_type=tcp \ \ diff --git a/virtManager/domain.py b/virtManager/domain.py index 236d888e8..f62ef254f 100644 --- a/virtManager/domain.py +++ b/virtManager/domain.py @@ -897,7 +897,8 @@ class vmmDomain(vmmLibvirtObject): if model != _SENTINEL: editdev.mode = model - editdev.type = editdev.TYPE_DEFAULT + editdev.type = None + editdev.type = editdev.default_type() if do_hotplug: self.hotplug(device=editdev) diff --git a/virtinst/cli.py b/virtinst/cli.py index 3b7b8dbc7..fe70547a8 100644 --- a/virtinst/cli.py +++ b/virtinst/cli.py @@ -2384,8 +2384,8 @@ class ParserSmartcard(VirtCLIParser): _register_virt_parser(ParserSmartcard) _add_device_address_args(ParserSmartcard) -ParserSmartcard.add_arg("mode", "mode") -ParserSmartcard.add_arg("type", "type") +ParserSmartcard.add_arg("mode", "mode", ignore_default=True) +ParserSmartcard.add_arg("type", "type", ignore_default=True) ###################### @@ -2409,8 +2409,8 @@ class ParserRedir(VirtCLIParser): _register_virt_parser(ParserRedir) _add_device_address_args(ParserRedir) -ParserRedir.add_arg("bus", "bus") -ParserRedir.add_arg("type", "type") +ParserRedir.add_arg("bus", "bus", ignore_default=True) +ParserRedir.add_arg("type", "type", ignore_default=True) ParserRedir.add_arg("boot.order", "boot_order") ParserRedir.add_arg(None, "server", cb=ParserRedir.set_server_cb) diff --git a/virtinst/devices/memballoon.py b/virtinst/devices/memballoon.py index 63c0e4411..573247d71 100644 --- a/virtinst/devices/memballoon.py +++ b/virtinst/devices/memballoon.py @@ -13,9 +13,13 @@ from ..xmlbuilder import XMLProperty class DeviceMemballoon(Device): XML_NAME = "memballoon" - MODEL_DEFAULT = "default" - MODELS = ["virtio", "xen", "none"] + model = XMLProperty("./@model") - model = XMLProperty("./@model", - default_name=MODEL_DEFAULT, - default_cb=lambda s: "virtio") + + ################## + # Default config # + ################## + + def set_defaults(self, guest): + if not self.model: + self.model = "virtio" diff --git a/virtinst/devices/redirdev.py b/virtinst/devices/redirdev.py index 01bc50966..e90f50089 100644 --- a/virtinst/devices/redirdev.py +++ b/virtinst/devices/redirdev.py @@ -13,12 +13,6 @@ from ..xmlbuilder import XMLProperty class DeviceRedirdev(Device): XML_NAME = "redirdev" - BUS_DEFAULT = "default" - BUSES = ["usb"] - - TYPE_DEFAULT = "default" - TYPES = ["tcp", "spicevmc"] - @staticmethod def pretty_type(typ): if typ == "tcp": @@ -36,12 +30,19 @@ class DeviceRedirdev(Device): _XML_PROP_ORDER = ["bus", "type"] - bus = XMLProperty("./@bus", - default_cb=lambda s: "usb", - default_name=BUS_DEFAULT) - type = XMLProperty("./@type", - default_cb=lambda s: "spicevmc", - default_name=TYPE_DEFAULT) + bus = XMLProperty("./@bus") + type = XMLProperty("./@type") host = XMLProperty("./source/@host") service = XMLProperty("./source/@service", is_int=True) + + + ################## + # Default config # + ################## + + def set_defaults(self, guest): + if not self.bus: + self.bus = "usb" + if not self.type: + self.type = "spicevmc" diff --git a/virtinst/devices/rng.py b/virtinst/devices/rng.py index 184003042..e525b186b 100644 --- a/virtinst/devices/rng.py +++ b/virtinst/devices/rng.py @@ -14,15 +14,12 @@ class DeviceRng(Device): TYPE_RANDOM = "random" TYPE_EGD = "egd" - TYPES = [TYPE_RANDOM, TYPE_EGD] BACKEND_TYPE_UDP = "udp" BACKEND_TYPE_TCP = "tcp" - BACKEND_TYPES = [BACKEND_TYPE_UDP, BACKEND_TYPE_TCP] BACKEND_MODE_BIND = "bind" BACKEND_MODE_CONNECT = "connect" - BACKEND_MODES = [BACKEND_MODE_BIND, BACKEND_MODE_CONNECT] @staticmethod def get_pretty_type(rng_type): @@ -86,7 +83,7 @@ class DeviceRng(Device): return val type = XMLProperty("./backend/@model") - model = XMLProperty("./@model", default_cb=lambda s: "virtio") + model = XMLProperty("./@model") backend_type = XMLProperty("./backend/@type") @@ -104,3 +101,12 @@ class DeviceRng(Device): rate_period = XMLProperty("./rate/@period") device = XMLProperty("./backend[@model='random']") + + + ################## + # Default config # + ################## + + def set_defaults(self, guest): + if not self.model: + self.model = "virtio" diff --git a/virtinst/devices/smartcard.py b/virtinst/devices/smartcard.py index 499ef7495..d0eab8bcb 100644 --- a/virtinst/devices/smartcard.py +++ b/virtinst/devices/smartcard.py @@ -12,25 +12,21 @@ from ..xmlbuilder import XMLProperty class DeviceSmartcard(Device): XML_NAME = "smartcard" - - # Default models list - MODE_DEFAULT = "default" - MODES = ["passthrough", "host-certificates", "host"] - - TYPE_DEFAULT = "default" - TYPES = ["tcp", "spicevmc", "default"] - - _XML_PROP_ORDER = ["mode", "type"] - mode = XMLProperty("./@mode", - default_cb=lambda s: "passthrough", - default_name=MODE_DEFAULT) + mode = XMLProperty("./@mode") + type = XMLProperty("./@type") - def _default_type(self): - if self.mode == self.MODE_DEFAULT or self.mode == "passthrough": - return "spicevmc" - return "tcp" - type = XMLProperty("./@type", - default_cb=_default_type, - default_name=TYPE_DEFAULT) + + ################## + # Default config # + ################## + + def default_type(self): + return self.mode == "passthrough" and "spicevmc" or "tcp" + + def set_defaults(self, guest): + if not self.mode: + self.mode = "passthrough" + if not self.type: + self.type = self.default_type()