From 724183b35ce39e98c801a19ebe01a2d9dc7e04eb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Budai?= Date: Thu, 18 May 2023 12:46:27 +0200 Subject: [PATCH] stages: add org.osbuild.btrfs.subvol A trivial stage to create subvolume on a btrfs partition. --- stages/org.osbuild.btrfs.subvol | 59 +++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100755 stages/org.osbuild.btrfs.subvol diff --git a/stages/org.osbuild.btrfs.subvol b/stages/org.osbuild.btrfs.subvol new file mode 100755 index 00000000..742b13d9 --- /dev/null +++ b/stages/org.osbuild.btrfs.subvol @@ -0,0 +1,59 @@ +#!/usr/bin/python3 +""" +Create subvolumes on a mounted btrfs partition. + +See `btrfs`(8). + +Buildhost commands used: `btrfs`. +""" + +import os +import subprocess +import sys + +import osbuild.api + +SCHEMA_2 = r""" +"options": { + "additionalProperties": false, + "properties": { + "subvolumes": { + "type": "array", + "items": { + "type": "object", + "additionalProperties": false, + "required": ["name"], + "properties": { + "name": { + "type": "string" + } + } + } + } + } +}, +"devices": { + "type": "object", + "additionalProperties": true +}, +"mounts": { + "type": "array" +} +""" + + +def main(paths, options): + volume = paths["mounts"] + + for vol in options["subvolumes"]: + name = vol["name"].lstrip("/") + subvol = os.path.join(volume, name) + + cmd = ["btrfs", "subvolume", "create", subvol] + subprocess.run(cmd, encoding='utf-8', check=True) + + +if __name__ == '__main__': + args = osbuild.api.arguments() + ret = main(args["paths"], args["options"]) + sys.exit(ret)