snapshotmanager / boom-boot

Boom Boot Manager
GNU General Public License v2.0
30 stars 4 forks source link

[btrfs] --btrfs-subvolume argument validation is incorrect #6

Closed bmr-cymru closed 2 years ago

bmr-cymru commented 2 years ago

Using a BTRFS subvolume path that does not begin with a '/' character triggers a messy exception:

# boom create --title "Boom test" --root-device /dev/vda2 --btrfs-subvolume root
Traceback (most recent call last):
  File "/usr/lib/python3.10/site-packages/boom/_boom.py", line 559, in parse_btrfs_subvol
    subvol_id = int(subvol)
ValueError: invalid literal for int() with base 10: 'root'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/bin/boom", line 7, in <module>
    r = main(sys.argv)
  File "/usr/lib/python3.10/site-packages/boom/command.py", line 3324, in main
    select = Selection.from_cmd_args(cmd_args)
  File "/usr/lib/python3.10/site-packages/boom/_boom.py", line 780, in from_cmd_args
    subvol = parse_btrfs_subvol(args.btrfs_subvolume)
  File "/usr/lib/python3.10/site-packages/boom/_boom.py", line 563, in parse_btrfs_subvol
    raise ValueError("Unrecognised BTRFS subvolume: %s" % subvol)
ValueError: Unrecognised BTRFS subvolume: root

BTRFS subvolume paths do not require a leading '/' and the "root" value is perfectly valid (and reflects the default subvolume path used on a Fedora/BTRFS installation).