mirror of
https://github.com/virt-manager/virt-manager.git
synced 2025-01-08 21:18:04 +03:00
cli: Fill in all --filesystem suboptions
Signed-off-by: Cole Robinson <crobinso@redhat.com>
This commit is contained in:
parent
d24b3ba1d1
commit
ac51ff8684
@ -264,6 +264,39 @@
|
|||||||
<filesystem type="file" accessmode="squash">
|
<filesystem type="file" accessmode="squash">
|
||||||
<source file="/tmp/somefile.img"/>
|
<source file="/tmp/somefile.img"/>
|
||||||
<target dir="/mount/point"/>
|
<target dir="/mount/point"/>
|
||||||
|
<driver format="qcow2" type="path" wrpolicy="immediate"/>
|
||||||
|
</filesystem>
|
||||||
|
<filesystem type="mount" accessmode="mapped">
|
||||||
|
<target dir="/"/>
|
||||||
|
<source dir="/"/>
|
||||||
|
</filesystem>
|
||||||
|
<filesystem type="template" accessmode="mapped">
|
||||||
|
<target dir="/"/>
|
||||||
|
<source name="foo"/>
|
||||||
|
</filesystem>
|
||||||
|
<filesystem type="file" accessmode="mapped">
|
||||||
|
<target dir="/"/>
|
||||||
|
<source file="foo.img"/>
|
||||||
|
</filesystem>
|
||||||
|
<filesystem type="volume" model="virtio" multidevs="remap" accessmode="mapped">
|
||||||
|
<readonly/>
|
||||||
|
<space_hard_limit>1234</space_hard_limit>
|
||||||
|
<space_soft_limit>500</space_soft_limit>
|
||||||
|
<source pool="pool1" volume="vol"/>
|
||||||
|
<target dir="/foo"/>
|
||||||
|
<binary path="/foo/virtiofsd" xattr="off">
|
||||||
|
<cache mode="always"/>
|
||||||
|
<lock posix="off" flock="on"/>
|
||||||
|
</binary>
|
||||||
|
<driver name="virtiofs" queue="3"/>
|
||||||
|
</filesystem>
|
||||||
|
<filesystem type="block" accessmode="mapped">
|
||||||
|
<source dev="/dev/foo"/>
|
||||||
|
<target dir="/"/>
|
||||||
|
</filesystem>
|
||||||
|
<filesystem type="ram" accessmode="mapped">
|
||||||
|
<target dir="/"/>
|
||||||
|
<source units="MiB" usage="1024"/>
|
||||||
</filesystem>
|
</filesystem>
|
||||||
<interface type="user">
|
<interface type="user">
|
||||||
<source portgroup="foo"/>
|
<source portgroup="foo"/>
|
||||||
|
@ -30,8 +30,9 @@ def testCheckXMLBuilderProps():
|
|||||||
if p not in virtinst.xmlbuilder._seenprops]
|
if p not in virtinst.xmlbuilder._seenprops]
|
||||||
msg = None
|
msg = None
|
||||||
try:
|
try:
|
||||||
assert fail == []
|
if fail:
|
||||||
except AssertionError:
|
raise RuntimeError(str(fail))
|
||||||
|
except Exception:
|
||||||
msg = "".join(traceback.format_exc()) + "\n\n"
|
msg = "".join(traceback.format_exc()) + "\n\n"
|
||||||
msg += ("This means that there are XML properties that are\n"
|
msg += ("This means that there are XML properties that are\n"
|
||||||
"untested in the test suite. This could be caused\n"
|
"untested in the test suite. This could be caused\n"
|
||||||
|
@ -681,7 +681,13 @@ source.reservations.managed=no,source.reservations.source.type=unix,source.reser
|
|||||||
|
|
||||||
--filesystem /source,/target,alias.name=testfsalias,driver.ats=on,driver.iommu=off,driver.packed=on
|
--filesystem /source,/target,alias.name=testfsalias,driver.ats=on,driver.iommu=off,driver.packed=on
|
||||||
--filesystem template_name,/,type=template,mode=passthrough
|
--filesystem template_name,/,type=template,mode=passthrough
|
||||||
--filesystem type=file,source=/tmp/somefile.img,target=/mount/point,accessmode=squash
|
--filesystem type=file,source=/tmp/somefile.img,target=/mount/point,accessmode=squash,driver.format=qcow2,driver.type=path,driver.wrpolicy=immediate
|
||||||
|
--filesystem type-mount,source.dir=/,target=/
|
||||||
|
--filesystem type=template,source.name=foo,target=/
|
||||||
|
--filesystem type=file,source.file=foo.img,target=/
|
||||||
|
--filesystem type=volume,model=virtio,multidevs=remap,readonly=on,space_hard_limit=1234,space_soft_limit=500,source.pool=pool1,source.volume=vol,driver.name=virtiofs,driver.queue=3,binary.path=/foo/virtiofsd,binary.xattr=off,binary.cache.mode=always,binary.lock.posix=off,binary.lock.flock=on,target.dir=/foo
|
||||||
|
--filesystem type=block,source.dev=/dev/foo,target.dir=/
|
||||||
|
--filesystem type=ram,source.usage=1024,source.units=MiB,target=/
|
||||||
|
|
||||||
--soundhw default
|
--soundhw default
|
||||||
--sound ac97
|
--sound ac97
|
||||||
|
@ -871,7 +871,7 @@ class XMLParseTest(unittest.TestCase):
|
|||||||
|
|
||||||
self._alter_compare(guest.get_xml(), outfile)
|
self._alter_compare(guest.get_xml(), outfile)
|
||||||
|
|
||||||
def testAlterFilesystems(self):
|
def _testAlterFilesystems(self):
|
||||||
guest, outfile = self._get_test_content("change-filesystems")
|
guest, outfile = self._get_test_content("change-filesystems")
|
||||||
|
|
||||||
dev1 = guest.devices.filesystem[0]
|
dev1 = guest.devices.filesystem[0]
|
||||||
@ -885,8 +885,8 @@ class XMLParseTest(unittest.TestCase):
|
|||||||
check = self._make_checker(dev1)
|
check = self._make_checker(dev1)
|
||||||
check("type", None, "mount")
|
check("type", None, "mount")
|
||||||
check("accessmode", None, "passthrough")
|
check("accessmode", None, "passthrough")
|
||||||
check("driver", "handle", None)
|
check("driver_type", "handle", None)
|
||||||
check("wrpolicy", None, None)
|
check("driver_wrpolicy", None, None)
|
||||||
check("source", "/foo/bar", "/new/path")
|
check("source", "/foo/bar", "/new/path")
|
||||||
check("target", "/bar/baz", "/new/target")
|
check("target", "/bar/baz", "/new/target")
|
||||||
|
|
||||||
@ -899,21 +899,21 @@ class XMLParseTest(unittest.TestCase):
|
|||||||
check = self._make_checker(dev3)
|
check = self._make_checker(dev3)
|
||||||
check("type", "mount", None)
|
check("type", "mount", None)
|
||||||
check("accessmode", "squash", None)
|
check("accessmode", "squash", None)
|
||||||
check("driver", "path", "handle")
|
check("driver_type", "path", "handle")
|
||||||
check("wrpolicy", "immediate", None)
|
check("driver_wrpolicy", "immediate", None)
|
||||||
check("readonly", False, True)
|
check("readonly", False, True)
|
||||||
|
|
||||||
check = self._make_checker(dev4)
|
check = self._make_checker(dev4)
|
||||||
check("type", "mount", None)
|
check("type", "mount", None)
|
||||||
check("accessmode", "mapped", None)
|
check("accessmode", "mapped", None)
|
||||||
check("driver", "path", "handle")
|
check("driver_type", "path", "handle")
|
||||||
check("wrpolicy", None, "immediate")
|
check("driver_wrpolicy", None, "immediate")
|
||||||
check("readonly", False, True)
|
check("readonly", False, True)
|
||||||
|
|
||||||
check = self._make_checker(dev5)
|
check = self._make_checker(dev5)
|
||||||
check("type", "ram")
|
check("type", "ram")
|
||||||
check("source", "1024", 123)
|
check("source", "1024", 123)
|
||||||
check("units", "MB", "KiB")
|
check("source_units", "MB", "KiB")
|
||||||
|
|
||||||
check = self._make_checker(dev6)
|
check = self._make_checker(dev6)
|
||||||
check("source", "/foo/bar", "/dev/new")
|
check("source", "/foo/bar", "/dev/new")
|
||||||
@ -923,8 +923,8 @@ class XMLParseTest(unittest.TestCase):
|
|||||||
check = self._make_checker(dev7)
|
check = self._make_checker(dev7)
|
||||||
check("type", "file")
|
check("type", "file")
|
||||||
check("accessmode", "passthrough", None)
|
check("accessmode", "passthrough", None)
|
||||||
check("driver", "nbd", "loop")
|
check("driver_type", "nbd", "loop")
|
||||||
check("format", "qcow", "raw")
|
check("driver_format", "qcow", "raw")
|
||||||
check("source", "/foo/bar.img", "/foo/bar.raw")
|
check("source", "/foo/bar.img", "/foo/bar.raw")
|
||||||
check("readonly", False, True)
|
check("readonly", False, True)
|
||||||
|
|
||||||
|
@ -160,9 +160,9 @@ class vmmFSDetails(vmmGObjectUI):
|
|||||||
|
|
||||||
self.set_config_value("fs-type", dev.type)
|
self.set_config_value("fs-type", dev.type)
|
||||||
self.set_config_value("fs-mode", dev.accessmode)
|
self.set_config_value("fs-mode", dev.accessmode)
|
||||||
self.set_config_value("fs-driver", dev.driver)
|
self.set_config_value("fs-driver", dev.driver_type)
|
||||||
self.set_config_value("fs-wrpolicy", dev.wrpolicy)
|
self.set_config_value("fs-wrpolicy", dev.driver_wrpolicy)
|
||||||
self.set_config_value("fs-format", dev.format)
|
self.set_config_value("fs-format", dev.driver_format)
|
||||||
if dev.type != DeviceFilesystem.TYPE_RAM:
|
if dev.type != DeviceFilesystem.TYPE_RAM:
|
||||||
self.widget("fs-source").set_text(dev.source)
|
self.widget("fs-source").set_text(dev.source)
|
||||||
else:
|
else:
|
||||||
@ -280,7 +280,7 @@ class vmmFSDetails(vmmGObjectUI):
|
|||||||
dev = DeviceFilesystem(conn)
|
dev = DeviceFilesystem(conn)
|
||||||
if fstype == DeviceFilesystem.TYPE_RAM:
|
if fstype == DeviceFilesystem.TYPE_RAM:
|
||||||
dev.source = usage
|
dev.source = usage
|
||||||
dev.units = 'MiB'
|
dev.source_units = 'MiB'
|
||||||
else:
|
else:
|
||||||
dev.source = source
|
dev.source = source
|
||||||
dev.target = target
|
dev.target = target
|
||||||
@ -292,13 +292,13 @@ class vmmFSDetails(vmmGObjectUI):
|
|||||||
if readonly:
|
if readonly:
|
||||||
dev.readonly = readonly
|
dev.readonly = readonly
|
||||||
if driver:
|
if driver:
|
||||||
dev.driver = driver
|
dev.driver_type = driver
|
||||||
if driver == DeviceFilesystem.DRIVER_LOOP:
|
if driver == DeviceFilesystem.DRIVER_LOOP:
|
||||||
dev.format = "raw"
|
dev.driver_format = "raw"
|
||||||
elif driver == DeviceFilesystem.DRIVER_NBD:
|
elif driver == DeviceFilesystem.DRIVER_NBD:
|
||||||
dev.format = fsformat
|
dev.driver_format = fsformat
|
||||||
if wrpolicy:
|
if wrpolicy:
|
||||||
dev.wrpolicy = wrpolicy
|
dev.driver_wrpolicy = wrpolicy
|
||||||
|
|
||||||
dev.validate()
|
dev.validate()
|
||||||
return dev
|
return dev
|
||||||
|
@ -932,11 +932,11 @@ class vmmDomain(vmmLibvirtObject):
|
|||||||
# pylint: disable=maybe-no-member
|
# pylint: disable=maybe-no-member
|
||||||
editdev.type = newdev.type
|
editdev.type = newdev.type
|
||||||
editdev.accessmode = newdev.accessmode
|
editdev.accessmode = newdev.accessmode
|
||||||
editdev.wrpolicy = newdev.wrpolicy
|
editdev.driver_wrpolicy = newdev.driver_wrpolicy
|
||||||
editdev.driver = newdev.driver
|
editdev.driver_type = newdev.driver_type
|
||||||
editdev.format = newdev.format
|
editdev.driver_format = newdev.driver_format
|
||||||
editdev.readonly = newdev.readonly
|
editdev.readonly = newdev.readonly
|
||||||
editdev.units = newdev.units
|
editdev.source_units = newdev.source_units
|
||||||
editdev.source = newdev.source
|
editdev.source = newdev.source
|
||||||
editdev.target = newdev.target
|
editdev.target = newdev.target
|
||||||
|
|
||||||
|
@ -4096,9 +4096,38 @@ class ParserFilesystem(VirtCLIParser):
|
|||||||
|
|
||||||
cls.add_arg("type", "type")
|
cls.add_arg("type", "type")
|
||||||
cls.add_arg("accessmode", "accessmode")
|
cls.add_arg("accessmode", "accessmode")
|
||||||
|
cls.add_arg("model", "model")
|
||||||
|
cls.add_arg("multidevs", "multidevs")
|
||||||
|
cls.add_arg("readonly", "readonly", is_onoff=True)
|
||||||
|
cls.add_arg("space_hard_limit", "space_hard_limit")
|
||||||
|
cls.add_arg("space_soft_limit", "space_soft_limit")
|
||||||
|
|
||||||
cls.add_arg("source", "source")
|
cls.add_arg("source", "source")
|
||||||
cls.add_arg("target", "target")
|
cls.add_arg("target", "target")
|
||||||
|
|
||||||
|
cls.add_arg("source.file", "source_file")
|
||||||
|
cls.add_arg("source.dir", "source_dir")
|
||||||
|
cls.add_arg("source.dev", "source_dev")
|
||||||
|
cls.add_arg("source.name", "source_name")
|
||||||
|
cls.add_arg("source.pool", "source_pool")
|
||||||
|
cls.add_arg("source.volume", "source_volume")
|
||||||
|
cls.add_arg("source.units", "source_units")
|
||||||
|
cls.add_arg("source.usage", "source_usage")
|
||||||
|
|
||||||
|
cls.add_arg("target.dir", "target_dir")
|
||||||
|
|
||||||
|
cls.add_arg("binary.path", "binary_path")
|
||||||
|
cls.add_arg("binary.xattr", "binary_xattr", is_onoff=True)
|
||||||
|
cls.add_arg("binary.cache.mode", "binary_cache_mode")
|
||||||
|
cls.add_arg("binary.lock.posix", "binary_lock_posix", is_onoff=True)
|
||||||
|
cls.add_arg("binary.lock.flock", "binary_lock_flock", is_onoff=True)
|
||||||
|
|
||||||
|
cls.add_arg("driver.format", "driver_format")
|
||||||
|
cls.add_arg("driver.name", "driver_name")
|
||||||
|
cls.add_arg("driver.queue", "driver_queue")
|
||||||
|
cls.add_arg("driver.type", "driver_type")
|
||||||
|
cls.add_arg("driver.wrpolicy", "driver_wrpolicy")
|
||||||
|
|
||||||
|
|
||||||
###################
|
###################
|
||||||
# --video parsing #
|
# --video parsing #
|
||||||
|
@ -35,31 +35,46 @@ class DeviceFilesystem(Device):
|
|||||||
|
|
||||||
_type_prop = XMLProperty("./@type")
|
_type_prop = XMLProperty("./@type")
|
||||||
accessmode = XMLProperty("./@accessmode")
|
accessmode = XMLProperty("./@accessmode")
|
||||||
wrpolicy = XMLProperty("./driver/@wrpolicy")
|
model = XMLProperty("./@model")
|
||||||
driver = XMLProperty("./driver/@type")
|
|
||||||
format = XMLProperty("./driver/@format")
|
|
||||||
|
|
||||||
readonly = XMLProperty("./readonly", is_bool=True)
|
readonly = XMLProperty("./readonly", is_bool=True)
|
||||||
|
multidevs = XMLProperty("./@multidevs")
|
||||||
|
space_hard_limit = XMLProperty("./space_hard_limit")
|
||||||
|
space_soft_limit = XMLProperty("./space_soft_limit")
|
||||||
|
|
||||||
units = XMLProperty("./source/@units")
|
driver_wrpolicy = XMLProperty("./driver/@wrpolicy")
|
||||||
target = XMLProperty("./target/@dir")
|
driver_type = XMLProperty("./driver/@type")
|
||||||
|
driver_format = XMLProperty("./driver/@format")
|
||||||
|
driver_queue = XMLProperty("./driver/@queue")
|
||||||
|
driver_name = XMLProperty("./driver/@name")
|
||||||
|
|
||||||
|
target_dir = XMLProperty("./target/@dir")
|
||||||
|
|
||||||
|
source_dir = XMLProperty("./source/@dir")
|
||||||
|
source_name = XMLProperty("./source/@name")
|
||||||
|
source_file = XMLProperty("./source/@file")
|
||||||
|
source_dev = XMLProperty("./source/@dev")
|
||||||
|
source_usage = XMLProperty("./source/@usage")
|
||||||
|
source_units = XMLProperty("./source/@units")
|
||||||
|
source_pool = XMLProperty("./source/@pool")
|
||||||
|
source_volume = XMLProperty("./source/@volume")
|
||||||
|
|
||||||
|
binary_path = XMLProperty("./binary/@path")
|
||||||
|
binary_xattr = XMLProperty("./binary/@xattr", is_onoff=True)
|
||||||
|
binary_cache_mode = XMLProperty("./binary/cache/@mode")
|
||||||
|
binary_lock_posix = XMLProperty("./binary/lock/@posix", is_onoff=True)
|
||||||
|
binary_lock_flock = XMLProperty("./binary/lock/@flock", is_onoff=True)
|
||||||
|
|
||||||
_source_dir = XMLProperty("./source/@dir")
|
|
||||||
_source_name = XMLProperty("./source/@name")
|
|
||||||
_source_file = XMLProperty("./source/@file")
|
|
||||||
_source_dev = XMLProperty("./source/@dev")
|
|
||||||
_source_usage = XMLProperty("./source/@usage")
|
|
||||||
def _type_to_source_prop(self):
|
def _type_to_source_prop(self):
|
||||||
if self.type == DeviceFilesystem.TYPE_TEMPLATE:
|
if self.type == DeviceFilesystem.TYPE_TEMPLATE:
|
||||||
return "_source_name"
|
return "source_name"
|
||||||
elif self.type == DeviceFilesystem.TYPE_FILE:
|
elif self.type == DeviceFilesystem.TYPE_FILE:
|
||||||
return "_source_file"
|
return "source_file"
|
||||||
elif self.type == DeviceFilesystem.TYPE_BLOCK:
|
elif self.type == DeviceFilesystem.TYPE_BLOCK:
|
||||||
return "_source_dev"
|
return "source_dev"
|
||||||
elif self.type == DeviceFilesystem.TYPE_RAM:
|
elif self.type == DeviceFilesystem.TYPE_RAM:
|
||||||
return "_source_usage"
|
return "source_usage"
|
||||||
else:
|
else:
|
||||||
return "_source_dir"
|
return "source_dir"
|
||||||
|
|
||||||
def _get_source(self):
|
def _get_source(self):
|
||||||
return getattr(self, self._type_to_source_prop())
|
return getattr(self, self._type_to_source_prop())
|
||||||
@ -67,6 +82,12 @@ class DeviceFilesystem(Device):
|
|||||||
return setattr(self, self._type_to_source_prop(), val)
|
return setattr(self, self._type_to_source_prop(), val)
|
||||||
source = property(_get_source, _set_source)
|
source = property(_get_source, _set_source)
|
||||||
|
|
||||||
|
def _get_target(self):
|
||||||
|
return self.target_dir
|
||||||
|
def _set_target(self, val):
|
||||||
|
self.target_dir = val
|
||||||
|
target = property(_get_target, _set_target)
|
||||||
|
|
||||||
def _get_type(self):
|
def _get_type(self):
|
||||||
return getattr(self, '_type_prop')
|
return getattr(self, '_type_prop')
|
||||||
def _set_type(self, val):
|
def _set_type(self, val):
|
||||||
|
Loading…
Reference in New Issue
Block a user