diff options
author | Adam Coldrick <adam.coldrick@codethink.co.uk> | 2015-02-05 13:51:23 +0000 |
---|---|---|
committer | Adam Coldrick <adam.coldrick@codethink.co.uk> | 2015-02-06 12:57:49 +0000 |
commit | 9f5b2d64071ab8416487b5fc265908a511a9bf68 (patch) | |
tree | c7804a83b66ab4544f74dfbfc5ca7b5adf97c073 /morphlib/fsutils.py | |
parent | 3f7e38a7f2721a404ebbfb130b51fa639a9e7360 (diff) | |
download | morph-9f5b2d64071ab8416487b5fc265908a511a9bf68.tar.gz |
Add support for unionfsbaserock/adamcoldrick/use-overlayfs-when-deploying
Overlayfs is new in version 3.18 of the kernel, so add support for a
different implementation of a union/overlay filesystem in order to
allow morph to work on older kernels.
Diffstat (limited to 'morphlib/fsutils.py')
-rw-r--r-- | morphlib/fsutils.py | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/morphlib/fsutils.py b/morphlib/fsutils.py index 97a7a8f2..3a9ee4db 100644 --- a/morphlib/fsutils.py +++ b/morphlib/fsutils.py @@ -60,6 +60,23 @@ def mount(runcmd, partition, mount_point, runcmd(['mount', partition, mount_point] + fstype + options) +def overlay_mount(runcmd, partition, mount_point, + lowerdir, upperdir, workdir, settings): # pragma: no cover + method = settings['union-filesystem'] + if method == 'overlayfs': + options = '-olowerdir=%s,upperdir=%s,workdir=%s' % \ + (lowerdir, upperdir, workdir) + mount(runcmd, partition, mount_point, 'overlay', options) + elif method == 'unionfs': + if not os.path.exists(mount_point): + os.mkdir(mount_point) + dir_string = '%s=RW:%s=RO' % (upperdir, lowerdir) + runcmd(['unionfs', '-o', 'cow', dir_string, mount_point]) + else: + raise cliapp.AppException('Union filesystem %s not supported' % + method) + + def unmount(runcmd, mount_point): # pragma: no cover runcmd(['umount', mount_point]) |