diff options
author | Michael Still <mikal@stillhq.com> | 2017-12-12 03:28:41 +1100 |
---|---|---|
committer | Michael Still <mikal@stillhq.com> | 2018-02-28 07:15:08 +1100 |
commit | fef14351672416bce465b25eb7b1314f13f9eb14 (patch) | |
tree | b96b800d55189d6745c7e8f265126d1cd4ccb188 /nova/privsep | |
parent | e94151c1c3dc0f27f14a594b331dbfb6d3bdf1be (diff) | |
download | nova-fef14351672416bce465b25eb7b1314f13f9eb14.tar.gz |
Move makefs to privsep
Change-Id: I388d31d5e9c1cff10bc534ba69be899e67681ce6
blueprint: hurrah-for-privsep
Diffstat (limited to 'nova/privsep')
-rw-r--r-- | nova/privsep/fs.py | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/nova/privsep/fs.py b/nova/privsep/fs.py index b5c9604d6e..1191660a71 100644 --- a/nova/privsep/fs.py +++ b/nova/privsep/fs.py @@ -220,3 +220,34 @@ def ext_journal_disable(device): @nova.privsep.sys_admin_pctxt.entrypoint def ext_journal_enable(device): processutils.execute('tune2fs', '-j', device) + + +@nova.privsep.sys_admin_pctxt.entrypoint +def mkfs(fs, path, label=None): + unprivileged_mkfs(fs, path, label=None) + + +# NOTE(mikal): this method is deliberately not wrapped in a privsep entrypoint +def unprivileged_mkfs(fs, path, label=None): + """Format a file or block device + + :param fs: Filesystem type (examples include 'swap', 'ext3', 'ext4' + 'btrfs', etc.) + :param path: Path to file or block device to format + :param label: Volume label to use + """ + if fs == 'swap': + args = ['mkswap'] + else: + args = ['mkfs', '-t', fs] + # add -F to force no interactive execute on non-block device. + if fs in ('ext3', 'ext4', 'ntfs'): + args.extend(['-F']) + if label: + if fs in ('msdos', 'vfat'): + label_opt = '-n' + else: + label_opt = '-L' + args.extend([label_opt, label]) + args.append(path) + processutils.execute(*args) |