Skip to content
This repository was archived by the owner on Mar 11, 2019. It is now read-only.

Commit cd03e4e

Browse files
Deepak C Shettycrobinso
authored andcommitted
virt install: Add support for filesystem <driver> sub-element
This patch adds support for the <driver...> sub-element of <filesystem> node. driver is an optional sub-element and has path and handle as the supported values as of now. For more details refer to libvirt filesystem doc page at ... http://libvirt.org/formatdomain.html#elementsFilesystems Signed-off-by: Deepak C Shetty <deepakcs@linux.vnet.ibm.com>
1 parent 9a8945d commit cd03e4e

5 files changed

Lines changed: 27 additions & 0 deletions

File tree

AUTHORS

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@ Patches also received from
5858
Michael Scherer <misc-at-zarb-dot-org>
5959
Jim Fehlig <jfehlig-at-suse-dot-com>
6060
Li Zhang <zhlcindy-at-linux-dot-vnet-dot-ibm-dot-com>
61+
Deepak C Shetty <deepakcs-at-linux-dot-vnet-dot-ibm-dot-com>
6162

6263
...send patches and get your name here...
6364

tests/xmlparse-xml/change-filesystems-in.xml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
<target dev="fda" bus="fdc"/>
2525
</disk>
2626
<filesystem>
27+
<driver type='handle'/>
2728
<source dir='/foo/bar'/>
2829
<target dir='/bar/baz'/>
2930
</filesystem>
@@ -32,6 +33,7 @@
3233
<target dir='/bar/baz'/>
3334
</filesystem>
3435
<filesystem type='mount' accessmode='squash'>
36+
<driver type='path'/>
3537
<source dir='/foo/bar'/>
3638
<target dir='/bar/baz'/>
3739
</filesystem>

tests/xmlparse-xml/change-filesystems-out.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
<target dir="/bar/baz"/>
3333
</filesystem>
3434
<filesystem>
35+
<driver type="handle"/>
3536
<source dir="/foo/bar"/>
3637
<target dir="/bar/baz"/>
3738
</filesystem>

tests/xmlparse.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -581,6 +581,7 @@ def testAlterFilesystems(self):
581581
check = self._make_checker(dev1)
582582
check("type", None, "mount")
583583
check("mode", None, "passthrough")
584+
check("driver", "handle", None)
584585
check("source", "/foo/bar", "/new/path")
585586
check("target", "/bar/baz", "/new/target")
586587

@@ -593,6 +594,7 @@ def testAlterFilesystems(self):
593594
check = self._make_checker(dev3)
594595
check("type", "mount", None)
595596
check("mode", "squash", None)
597+
check("driver", "path", "handle")
596598

597599
self._alter_compare(guest.get_config_xml(), outfile)
598600

virtinst/VirtualFilesystem.py

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,11 @@ class VirtualFilesystem(VirtualDevice.VirtualDevice):
4242
MODE_DEFAULT = "default"
4343
MOUNT_MODES = [MODE_PASSTHROUGH, MODE_MAPPED, MODE_SQUASH, MODE_DEFAULT]
4444

45+
DRIVER_PATH = "path"
46+
DRIVER_HANDLE = "handle"
47+
DRIVER_DEFAULT = "default"
48+
DRIVER_TYPES = [DRIVER_PATH, DRIVER_HANDLE, DRIVER_DEFAULT]
49+
4550
@staticmethod
4651
def type_to_source_prop(fs_type):
4752
"""
@@ -66,6 +71,7 @@ def __init__(self, conn, parsexml=None, parsexmlnode=None, caps=None):
6671

6772
self._type = None
6873
self._mode = None
74+
self._driver = None
6975
self._target = None
7076
self._source = None
7177

@@ -74,6 +80,7 @@ def __init__(self, conn, parsexml=None, parsexmlnode=None, caps=None):
7480

7581
self.mode = self.MODE_DEFAULT
7682
self.type = self.TYPE_DEFAULT
83+
self.driver = self.DRIVER_DEFAULT
7784

7885
def _get_type(self):
7986
return self._type
@@ -91,6 +98,14 @@ def _set_mode(self, val):
9198
self._mode = val
9299
mode = _xml_property(_get_mode, _set_mode, xpath="./@accessmode")
93100

101+
def _get_driver(self):
102+
return self._driver
103+
def _set_driver(self, val):
104+
if val is not None and not self.DRIVER_TYPES.count(val):
105+
raise ValueError(_("Unsupported filesystem driver '%s'" % val))
106+
self._driver = val
107+
driver = _xml_property(_get_driver, _set_driver, xpath="./driver/@type")
108+
94109
def _get_source(self):
95110
return self._source
96111
def _set_source(self, val):
@@ -126,13 +141,16 @@ def _set_target(self, val):
126141
def _get_xml_config(self):
127142
mode = self.mode
128143
ftype = self.type
144+
driver = self.driver
129145
source = self.source
130146
target = self.target
131147

132148
if mode == self.MODE_DEFAULT:
133149
mode = None
134150
if ftype == self.TYPE_DEFAULT:
135151
ftype = None
152+
if driver == self.DRIVER_DEFAULT:
153+
driver = None
136154

137155
if not source or not target:
138156
raise ValueError(
@@ -145,6 +163,9 @@ def _get_xml_config(self):
145163
fsxml += " accessmode='%s'" % mode
146164
fsxml += ">\n"
147165

166+
if driver:
167+
fsxml += " <driver type='%s'/>\n" % driver
168+
148169
fsxml += " <source %s='%s'/>\n" % (
149170
self.type_to_source_prop(ftype),
150171
source)

0 commit comments

Comments
 (0)