diff options
author | Sam Thursfield <sam.thursfield@codethink.co.uk> | 2014-06-10 17:18:37 +0000 |
---|---|---|
committer | Sam Thursfield <sam.thursfield@codethink.co.uk> | 2014-06-11 16:22:25 +0000 |
commit | 3e4edca024ae5ea0ff5516a7ae2402fae1108b83 (patch) | |
tree | db9bc6f93753ea6270463bded05a0a704bbfa180 /morphlib/writeexts.py | |
parent | 2ca28887442c733f2f7a39aa7a844b51643ecb29 (diff) | |
download | morph-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.py | 13 |
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() |