From faeccd5588eeca690c6f67d1b3de43a03366acf5 Mon Sep 17 00:00:00 2001 From: "Dustin C. Hatch" Date: Sun, 12 Jul 2015 13:07:27 -0500 Subject: [PATCH] vmdesc: Allow specifying mkfs arguments In some cases, the default options selected by the `mkfs.*` utilities are insufficient. To allow overriding them, volumes and partitions in the VM description now support an optional `mkfsargs` item, which will be passed along when creating new filesystems. --- src/mkvm/storage.py | 5 ++++- src/mkvm/vmdesc.py | 5 +++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/mkvm/storage.py b/src/mkvm/storage.py index f0c0916..3af6810 100644 --- a/src/mkvm/storage.py +++ b/src/mkvm/storage.py @@ -1,6 +1,7 @@ import logging import os import pyudev +import shlex import subprocess @@ -201,7 +202,7 @@ def get_lv_blockdev(vg_name, lv_name): return dev.device_node -def mkfs(fstype, device, label=None): +def mkfs(fstype, device, label=None, mkfsargs=None): log.debug( 'Creating {fstype} filesystem on {device} ' 'with label "{label}"'.format( @@ -216,6 +217,8 @@ def mkfs(fstype, device, label=None): cmd = ['mkfs.{}'.format(fstype), '-q'] if label: cmd += ('-L', label) + if mkfsargs: + cmd += shlex.split(mkfsargs) cmd.append(device) try: output = subprocess.check_output(cmd, stderr=subprocess.STDOUT) diff --git a/src/mkvm/vmdesc.py b/src/mkvm/vmdesc.py index 6bceba3..3f6e2d9 100644 --- a/src/mkvm/vmdesc.py +++ b/src/mkvm/vmdesc.py @@ -172,13 +172,14 @@ class VirtualMachine(object): for idx, part in enumerate(self.partitions): try: storage.mkfs(part['fstype'], partitions[idx], - part.get('label')) + part.get('label'), part.get('mkfsargs')) except KeyError: pass for vol in self.volumes: try: - storage.mkfs(vol['fstype'], lv_block(vol['name']), vol['name']) + storage.mkfs(vol['fstype'], lv_block(vol['name']), vol['name'], + vol.get('mkfsargs')) except KeyError: pass