summaryrefslogtreecommitdiff
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
commit21c9683278cb01a4e9425923740124217ce47723 (patch)
treef4782628cac419ae6193cca1e8486962d5522085
parentba6aa8eb7cb8bd249e810972de339b2832f7a665 (diff)
downloaddefinitions-21c9683278cb01a4e9425923740124217ce47723.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.
-rw-r--r--writeexts.py13
1 files changed, 12 insertions, 1 deletions
diff --git a/writeexts.py b/writeexts.py
index d6f23e0d..74587bd1 100644
--- a/writeexts.py
+++ b/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()