utils: fs: error out if mkfs fails

If formatting fails, log shows:

	mkfs.ntfs reports return code 1 for /dev/sda2

but ogclient reports success to the ogserver.

Raise an exception so front-end gets an indication that formatting has failed.
master
OpenGnSys Support Team 2024-07-25 10:03:55 +02:00
parent 59fa3bb120
commit 2c10b4c92a
2 changed files with 22 additions and 7 deletions

View File

@ -429,9 +429,12 @@ class OgLiveOperations:
partition = int(part["partition"])
if fs == 'cache':
mkfs('ext4', int(disk), partition, label='CACHE')
err = mkfs('ext4', int(disk), partition, label='CACHE')
else:
mkfs(fs, int(disk), partition)
err = mkfs(fs, int(disk), partition)
if err == -1:
raise OgError(f'Failed to format {part["partition"]} with filesystem {part["filesystem"]}')
ret = subprocess.run(['partprobe', f'/dev/{diskname}'])
logging.info(f'second partprobe /dev/{diskname} reports {ret.returncode}')

View File

@ -165,10 +165,11 @@ def mkfs(fs, disk, partition, label=None):
except ValueError as e:
raise OgError(f'mkfs aborted: {e}') from e
fsdict[fs](partdev, label)
return fsdict[fs](partdev, label)
def mkfs_ext4(partdev, label=None):
err = -1
if label:
cmd = shlex.split(f'mkfs.ext4 -L {label} -F {partdev}')
else:
@ -177,12 +178,15 @@ def mkfs_ext4(partdev, label=None):
ret = subprocess.run(cmd,
stdout=logfile,
stderr=STDOUT)
err = ret.returncode
if ret.returncode != 0:
logging.error(f'mkfs.ext4 reports return code {ret.returncode} for {partdev}')
return err
def mkfs_ntfs(partdev, label=None):
err = -1
if label:
cmd = shlex.split(f'mkfs.ntfs -f -L {label} {partdev}')
else:
@ -191,12 +195,15 @@ def mkfs_ntfs(partdev, label=None):
ret = subprocess.run(cmd,
stdout=logfile,
stderr=STDOUT)
err = ret.returncode
if ret.returncode != 0:
logging.error(f'mkfs.ntfs reports return code {ret.returncode} for {partdev}')
return err
def mkfs_fat32(partdev, label=None):
err = -1
if label:
cmd = shlex.split(f'mkfs.vfat -n {label} -F32 {partdev}')
else:
@ -205,12 +212,15 @@ def mkfs_fat32(partdev, label=None):
ret = subprocess.run(cmd,
stdout=logfile,
stderr=STDOUT)
err = ret.returncode
if ret.returncode != 0:
logging.error(f'mkfs.vfat reports return code {ret.returncode} for {partdev}')
return err
def mkfs_swap(partdev, label=None):
err = -1
if label:
cmd = shlex.split(f'mkswap -f -L {label} {partdev}')
else:
@ -219,10 +229,12 @@ def mkfs_swap(partdev, label=None):
ret = subprocess.run(cmd,
stdout=logfile,
stderr=STDOUT)
err = ret.returncode
if ret.returncode != 0:
logging.error(f'mkswap reports return code {ret.returncode} for {partdev}')
return err
def get_filesystem_type(partdev):
"""