diff options
author | Radostin Stoyanov <rstoyanov1@gmail.com> | 2017-08-26 21:42:04 +0100 |
---|---|---|
committer | Radostin Stoyanov <rstoyanov1@gmail.com> | 2017-08-28 16:03:28 +0100 |
commit | 7baf904cffdc4074ba5529b095f98a8c1ed6707a (patch) | |
tree | f7fffb9fcef085c747898e3649a182cdcc3fce4d /tests/docker_source.py | |
parent | 6ca9a3f7eccae0411f73d7aa8df759eb09be8955 (diff) | |
download | virt-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.py | 23 |
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): """ |