summaryrefslogtreecommitdiffstats
path: root/tests/docker_source.py
diff options
context:
space:
mode:
authorRadostin Stoyanov <rstoyanov1@gmail.com>2017-08-26 21:42:04 +0100
committerRadostin Stoyanov <rstoyanov1@gmail.com>2017-08-28 16:03:28 +0100
commit7baf904cffdc4074ba5529b095f98a8c1ed6707a (patch)
treef7fffb9fcef085c747898e3649a182cdcc3fce4d /tests/docker_source.py
parent6ca9a3f7eccae0411f73d7aa8df759eb09be8955 (diff)
downloadvirt-bootstrap.git-7baf904cffdc4074ba5529b095f98a8c1ed6707a.tar.gz
virt-bootstrap.git-7baf904cffdc4074ba5529b095f98a8c1ed6707a.tar.xz
virt-bootstrap.git-7baf904cffdc4074ba5529b095f98a8c1ed6707a.zip
Enable UID/GID mapping for qcow2
Apply ownership mapping in qcow2 images using libguestfs python bindings. To make this solution more general we introduce function guestfs_walk() which will return the root file system tree of disk image along with UID/GID values. These changes are applied in additional qcow2 disk image using the last layer as backing file. For FileSource this is layer-1.qcow2 with backing file layer-0.qcow2.
Diffstat (limited to 'tests/docker_source.py')
-rw-r--r--tests/docker_source.py23
1 files changed, 23 insertions, 0 deletions
diff --git a/tests/docker_source.py b/tests/docker_source.py
index 9dc25d9..eeea379 100644
--- a/tests/docker_source.py
+++ b/tests/docker_source.py
@@ -263,6 +263,29 @@ class TestQcow2DockerSource(Qcow2ImageAccessor):
g.umount('/')
g.shutdown()
+ def test_qcow2_ownership_mapping(self):
+ """
+ Ensures that UID/GID mapping works correctly for qcow2 conversion.
+ """
+ self.uid_map = [[1000, 2000, 10], [0, 1000, 10], [500, 500, 10]]
+ self.gid_map = [[1000, 2000, 10], [0, 1000, 10], [500, 500, 10]]
+ layers_rootfs = self.call_bootstrap()
+
+ g = guestfs.GuestFS(python_return_dict=True)
+ g.add_drive_opts(
+ self.get_image_path(len(layers_rootfs)),
+ readonly=True
+ )
+
+ g.launch()
+ for rootfs in layers_rootfs[::-1]:
+ self.rootfs_tree = rootfs
+ self.apply_mapping()
+ g.mount('/dev/sda', '/')
+ self.check_image(g)
+ g.umount('/')
+ g.shutdown()
+
class TestDockerSource(unittest.TestCase):
"""