diff --git a/tests/data/cli/compare/virt-install-many-devices.xml b/tests/data/cli/compare/virt-install-many-devices.xml
index 7e91dcdba..cca4794bf 100644
--- a/tests/data/cli/compare/virt-install-many-devices.xml
+++ b/tests/data/cli/compare/virt-install-many-devices.xml
@@ -222,6 +222,11 @@
+
+
+
+
+
diff --git a/tests/test_cli.py b/tests/test_cli.py
index 83a2c59bf..87c2fd7f8 100644
--- a/tests/test_cli.py
+++ b/tests/test_cli.py
@@ -616,6 +616,7 @@ source.reservations.managed=no,source.reservations.source.type=unix,source.reser
--disk vol=iscsi-direct/unit:0:0:1
--disk size=.0001,format=raw
--disk size=.0001,pool=disk-pool
+--disk path=%(EXISTIMG1)s,type=dir
--network user,mac=12:34:56:78:11:22,portgroup=foo,link_state=down,rom_bar=on,rom_file=/tmp/foo
--network bridge=foobar,model=virtio,driver_name=qemu,driver_queues=3,filterref=foobar,rom.bar=off,rom.file=/some/rom,source.portgroup=foo
diff --git a/virtinst/cli.py b/virtinst/cli.py
index 038d395ea..7c5446706 100644
--- a/virtinst/cli.py
+++ b/virtinst/cli.py
@@ -3087,6 +3087,7 @@ class ParserDisk(VirtCLIParser):
fmt = self.optdict.pop("format", None)
sparse = _on_off_convert("sparse", self.optdict.pop("sparse", "yes"))
convert_perms(self.optdict.pop("perms", None))
+ disktype = self.optdict.pop("type", None)
if volname:
if volname.count("/") != 1:
@@ -3096,6 +3097,9 @@ class ParserDisk(VirtCLIParser):
log.debug("Parsed --disk volume as: pool=%s vol=%s",
poolname, volname)
+ # Set this up front, it has lots of follow on effects
+ if disktype:
+ inst.type = disktype
super()._parse(inst)
if (size and
@@ -3165,6 +3169,8 @@ class ParserDisk(VirtCLIParser):
cls.add_arg("size", None, lookup_cb=None, cb=cls.noset_cb)
cls.add_arg("format", None, lookup_cb=None, cb=cls.noset_cb)
cls.add_arg("sparse", None, lookup_cb=None, cb=cls.noset_cb)
+ cls.add_arg("type", None, lookup_cb=None, cb=cls.noset_cb)
+
# These are handled in _add_advertised_aliases
cls.add_arg("bus", "bus", cb=cls.noset_cb)
cls.add_arg("cache", "driver_cache", cb=cls.noset_cb)