Added Linux mount and unmount functions
* If not running with root priviledges then udevil is used.
This commit is contained in:
parent
c135d686df
commit
b0b0b612a1
2 changed files with 40 additions and 25 deletions
|
|
@ -128,19 +128,6 @@ def is_valid_path(path_obj, path_type):
|
||||||
return valid_path
|
return valid_path
|
||||||
|
|
||||||
|
|
||||||
def mount(mount_source, mount_point, read_write=False):
|
|
||||||
"""Mount mount_source on mount_point."""
|
|
||||||
os.makedirs(mount_point, exist_ok=True)
|
|
||||||
cmd = [
|
|
||||||
'mount',
|
|
||||||
mount_source,
|
|
||||||
mount_point,
|
|
||||||
'-o',
|
|
||||||
'rw' if read_write else 'ro',
|
|
||||||
]
|
|
||||||
run_program(cmd)
|
|
||||||
|
|
||||||
|
|
||||||
def prep_device(dev_path, label, use_mbr=False, indent=2):
|
def prep_device(dev_path, label, use_mbr=False, indent=2):
|
||||||
"""Format device in preparation for applying the WizardKit components
|
"""Format device in preparation for applying the WizardKit components
|
||||||
|
|
||||||
|
|
@ -250,12 +237,6 @@ def show_selections(args, sources, ufd_dev, ufd_sources):
|
||||||
print_standard(' ')
|
print_standard(' ')
|
||||||
|
|
||||||
|
|
||||||
def unmount(mount_point):
|
|
||||||
"""Unmount mount_point."""
|
|
||||||
cmd = ['umount', mount_point]
|
|
||||||
run_program(cmd)
|
|
||||||
|
|
||||||
|
|
||||||
def update_boot_entries(boot_entries, boot_files, iso_label, ufd_label):
|
def update_boot_entries(boot_entries, boot_files, iso_label, ufd_label):
|
||||||
"""Update boot files for UFD usage"""
|
"""Update boot files for UFD usage"""
|
||||||
configs = []
|
configs = []
|
||||||
|
|
|
||||||
|
|
@ -62,6 +62,27 @@ def make_temp_file():
|
||||||
return pathlib.Path(proc.stdout.strip())
|
return pathlib.Path(proc.stdout.strip())
|
||||||
|
|
||||||
|
|
||||||
|
def mount(source, mount_point=None, read_write=False):
|
||||||
|
"""Mount source (on mount_point if provided).
|
||||||
|
|
||||||
|
NOTE: If not running_as_root() then udevil will be used.
|
||||||
|
"""
|
||||||
|
cmd = [
|
||||||
|
'mount',
|
||||||
|
'-o', 'rw' if read_write else 'ro',
|
||||||
|
source,
|
||||||
|
]
|
||||||
|
if not running_as_root():
|
||||||
|
cmd.insert(0, 'udevil')
|
||||||
|
if mount_point:
|
||||||
|
cmd.append(mount_point)
|
||||||
|
|
||||||
|
# Run mount command
|
||||||
|
proc = run_program(cmd, check=False)
|
||||||
|
if not proc.returncode == 0:
|
||||||
|
raise RuntimeError(f'Failed to mount: {source} on {mount_point}')
|
||||||
|
|
||||||
|
|
||||||
def mount_volumes(device_path=None, read_write=False, scan_corestorage=False):
|
def mount_volumes(device_path=None, read_write=False, scan_corestorage=False):
|
||||||
"""Mount all detected volumes, returns list.
|
"""Mount all detected volumes, returns list.
|
||||||
|
|
||||||
|
|
@ -117,12 +138,7 @@ def mount_volumes(device_path=None, read_write=False, scan_corestorage=False):
|
||||||
|
|
||||||
# Attempt to mount volume
|
# Attempt to mount volume
|
||||||
if not already_mounted:
|
if not already_mounted:
|
||||||
cmd = [
|
mount(vol.path, read_write=read_write)
|
||||||
'udevil',
|
|
||||||
'mount',
|
|
||||||
'-o', 'rw' if read_write else 'ro',
|
|
||||||
vol.path,
|
|
||||||
]
|
|
||||||
proc = run_program(cmd, check=False)
|
proc = run_program(cmd, check=False)
|
||||||
if proc.returncode:
|
if proc.returncode:
|
||||||
result += 'Failed to mount'
|
result += 'Failed to mount'
|
||||||
|
|
@ -202,5 +218,23 @@ def scan_corestorage_container(container, timeout=300):
|
||||||
return inner_volumes
|
return inner_volumes
|
||||||
|
|
||||||
|
|
||||||
|
def unmount(source_or_mountpoint):
|
||||||
|
"""Unmount source_or_mountpoint.
|
||||||
|
|
||||||
|
NOTE: If not running_as_root() then udevil will be used.
|
||||||
|
"""
|
||||||
|
cmd = [
|
||||||
|
'umount',
|
||||||
|
source_or_mountpoint,
|
||||||
|
]
|
||||||
|
if not running_as_root():
|
||||||
|
cmd.insert(0, 'udevil')
|
||||||
|
|
||||||
|
# Run unmount command
|
||||||
|
proc = run_program(cmd, check=False)
|
||||||
|
if not proc.returncode == 0:
|
||||||
|
raise RuntimeError(f'Failed to unmount: {source_or_mountpoint}')
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
print("This file is not meant to be called directly.")
|
print("This file is not meant to be called directly.")
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue