summaryrefslogtreecommitdiff
path: root/morphlib/writeexts.py
diff options
context:
space:
mode:
authorSam Thursfield <sam.thursfield@codethink.co.uk>2014-06-10 17:18:37 +0000
committerSam Thursfield <sam.thursfield@codethink.co.uk>2014-06-11 16:22:25 +0000
commit3e4edca024ae5ea0ff5516a7ae2402fae1108b83 (patch)
treedb9bc6f93753ea6270463bded05a0a704bbfa180 /morphlib/writeexts.py
parent2ca28887442c733f2f7a39aa7a844b51643ecb29 (diff)
downloadmorph-3e4edca024ae5ea0ff5516a7ae2402fae1108b83.tar.gz
Check for presence of btrfs before trying to use it
If btrfs is not present in the kernel we end up with strange output like this: Error creating disk image2014-06-10 16:00:40 [devel-system-x86_64-generic][my-raw-disk-image][rawdisk.write]Failure to create disk image at /src/tmp/testdev.img ERROR: Command failed: mount -o loop /src/tmp/testdev.img /src/tmp/deployments/tmpQ7wXO1/tmp4lVDcu/tmpvHSzDE mount: mounting /dev/loop0 on /src/tmp/deployments/tmpQ7wXO1/tmp4lVDcu/tmpvHSzDE failed: Device or resource busy To avoid this confusing error, Morph should explicitly check first.
Diffstat (limited to 'morphlib/writeexts.py')
-rw-r--r--morphlib/writeexts.py13
1 files changed, 12 insertions, 1 deletions
diff --git a/morphlib/writeexts.py b/morphlib/writeexts.py
index d6f23e0d..74587bd1 100644
--- a/morphlib/writeexts.py
+++ b/morphlib/writeexts.py
@@ -104,7 +104,18 @@ class WriteExtension(cliapp.Application):
self.output.write('%s\n' % (kwargs['msg'] % kwargs))
self.output.flush()
-
+
+ def check_for_btrfs_in_deployment_host_kernel(self):
+ with open('/proc/filesystems') as f:
+ text = f.read()
+ return '\tbtrfs\n' in text
+
+ def require_btrfs_in_deployment_host_kernel(self):
+ if not self.check_for_btrfs_in_deployment_host_kernel():
+ raise cliapp.AppException(
+ 'Error: Btrfs is required for this deployment, but was not '
+ 'detected in the kernel of the machine that is running Morph.')
+
def create_local_system(self, temp_root, raw_disk):
'''Create a raw system image locally.'''
size = self.get_disk_size()