refs #1164 ogRaiseError function call correction

pull/1/head
Antonio Guerrero 2024-11-20 23:27:46 -06:00
parent 18339f947c
commit bb0805e237
1 changed files with 184 additions and 75 deletions

View File

@ -9,18 +9,17 @@ import CacheLib
import FileSystemLib
def ogCheckFs(int_ndisk, int_nfilesys):
# Si se solicita, mostrar ayuda.
if int_ndisk == "help":
ogHelp("ogCheckFs", "ogCheckFs int_ndisk int_nfilesys", "ogCheckFs 1 1")
return
# Error si no se reciben 2 parámetros.
if len(sys.argv) != 3:
ogRaiseError(OG_ERR_FORMAT)
SystemLib.ogRaiseError(
"session",
ogGlobals.OG_ERR_FORMAT,
"Not enough arguments"
)
return
# Obtener partición.
PART = ogDiskToDev(int_ndisk, int_nfilesys)
PART = DiskLib.ogDiskToDev(int_ndisk, int_nfilesys)
if not PART:
return
@ -73,16 +72,28 @@ def ogCheckFs(int_ndisk, int_nfilesys):
elif TYPE == "ZFS":
PROG = "fsck.zfs"
else:
ogRaiseError(OG_ERR_PARTITION, f"{int_ndisk}, {int_nfilesys}")
SystemLib.ogRaiseError(
"session",
ogGlobals.OG_ERR_PARTITION,
f"{int_ndisk}, {int_nfilesys}"
)
return
# Error si el sistema de archivos esta montado o bloqueado.
ogUnmount(int_ndisk, int_nfilesys)
if ogIsMounted(int_ndisk, int_nfilesys):
ogRaiseError(OG_ERR_PARTITION, f"{int_ndisk} {int_nfilesys}")
SystemLib.ogRaiseError(
"session",
ogGlobals.OG_ERR_PARTITION,
f"{int_ndisk} {int_nfilesys}"
)
return
if ogIsLocked(int_ndisk, int_nfilesys):
ogRaiseError(OG_ERR_LOCKED, f"{int_ndisk} {int_nfilesys}")
SystemLib.ogRaiseError(
"session",
ogGlobals.OG_ERR_LOCKED,
f"{int_ndisk} {int_nfilesys}"
)
return
# Comprobar en modo uso exclusivo.
@ -91,28 +102,36 @@ def ogCheckFs(int_ndisk, int_nfilesys):
result = subprocess.run([PROG, PARAMS, PART], capture_output=True)
ERRCODE = result.returncode
except FileNotFoundError:
ogRaiseError(OG_ERR_NOTEXEC, PROG)
ERRCODE = OG_ERR_NOTEXEC
SystemLib.ogRaiseError(
"session",
ogGlobals.OG_ERR_NOTEXEC,
PROG
)
ERRCODE = ogGlobals.OG_ERR_NOTEXEC
except:
ogRaiseError(OG_ERR_PARTITION, f"{int_ndisk} {int_nfilesys}")
ERRCODE = OG_ERR_PARTITION
SystemLib.ogRaiseError(
"session",
ogGlobals.OG_ERR_PARTITION,
f"{int_ndisk} {int_nfilesys}"
)
ERRCODE = ogGlobals.OG_ERR_PARTITION
ogUnlock(int_ndisk, int_nfilesys)
return ERRCODE
def ogExtendFs():
# Si se solicita, mostrar ayuda.
if len(sys.argv) == 2 and sys.argv[1] == "help":
ogHelp("ogExtendFs", "ogExtendFs int_ndisk int_nfilesys", "ogExtendFs 1 1")
return
# Error si no se reciben 2 parámetros.
if len(sys.argv) != 3:
ogRaiseError(OG_ERR_FORMAT)
SystemLib.ogRaiseError(
"session",
ogGlobals.OG_ERR_FORMAT,
f"Not enough arguments"
)
return
# Obtener partición.
PART = ogDiskToDev(int(sys.argv[1]), int(sys.argv[2]))
PART = DiskLib.ogDiskToDev(int(sys.argv[1]), int(sys.argv[2]))
if not PART:
return
@ -134,7 +153,11 @@ def ogExtendFs():
PROG = "ntfsresize"
PARAMS = "<<<\"y\" -f"
else:
ogRaiseError(OG_ERR_PARTITION, f"{int(sys.argv[1])} {int(sys.argv[2])} {TYPE}")
SystemLib.ogRaiseError(
"session",
ogGlobals.OG_ERR_PARTITION,
f"{int(sys.argv[1])} {int(sys.argv[2])} {TYPE}"
)
return
# Salida normal si no se va a aplicar la operación.
@ -149,12 +172,20 @@ def ogExtendFs():
else:
ogUnmount(int(sys.argv[1]), int(sys.argv[2]))
if ogIsMounted(int(sys.argv[1]), int(sys.argv[2])):
ogRaiseError(OG_ERR_PARTITION, f"{int(sys.argv[1])} {int(sys.argv[2])}")
SystemLib.ogRaiseError(
"session",
ogGlobals.OG_ERR_PARTITION,
f"{int(sys.argv[1])} {int(sys.argv[2])}"
)
return
# Error si el sistema de archivos está bloqueado.
if ogIsLocked(int(sys.argv[1]), int(sys.argv[2])):
ogRaiseError(OG_ERR_LOCKED, f"{int(sys.argv[1])} {int(sys.argv[2])}")
SystemLib.ogRaiseError(
"session",
ogGlobals.OG_ERR_LOCKED,
f"{int(sys.argv[1])} {int(sys.argv[2])}"
)
return
# Redimensionar en modo uso exclusivo.
@ -163,11 +194,19 @@ def ogExtendFs():
subprocess.run([PROG, PARAMS, PART], capture_output=True)
ERRCODE = 0
except FileNotFoundError:
ogRaiseError(OG_ERR_NOTEXEC, PROG)
ERRCODE = OG_ERR_NOTEXEC
SystemLib.ogRaiseError(
"session",
ogGlobals.OG_ERR_NOTEXEC,
PROG
)
ERRCODE = ogGlobals.OG_ERR_NOTEXEC
except:
ogRaiseError(OG_ERR_PARTITION, f"{int(sys.argv[1])} {int(sys.argv[2])}")
ERRCODE = OG_ERR_PARTITION
SystemLib.ogRaiseError(
"session",
ogGlobals.OG_ERR_PARTITION,
f"{int(sys.argv[1])} {int(sys.argv[2])}"
)
ERRCODE = ogGlobals.OG_ERR_PARTITION
ogUnlock(int(sys.argv[1]), int(sys.argv[2]))
return ERRCODE
@ -205,17 +244,29 @@ def ogFormatFs (disk, par, type=None, label=None):
if not PART: return
if ogIsMounted (disk, par):
SystemLib.ogRaiseError ([], ogGlobals.OG_ERR_DONTFORMAT, f'{ogGlobals.lang.MSG_MOUNT}: {disk} {par}')
SystemLib.ogRaiseError(
[],
ogGlobals.OG_ERR_DONTFORMAT,
f'{ogGlobals.lang.MSG_MOUNT}: {disk} {par}'
)
return None
if ogIsLocked (disk, par):
SystemLib.ogRaiseError ([], ogGlobals.OG_ERR_LOCKED, f"{disk} {par}")
SystemLib.ogRaiseError(
[],
ogGlobals.OG_ERR_LOCKED,
f"{disk} {par}"
)
return None
if not type:
type = ogGetFsType (disk, par)
if not type:
SystemLib.ogRaiseError ([], ogGlobals.OG_ERR_FORMAT, f"{disk} {par} ...")
SystemLib.ogRaiseError(
[],
ogGlobals.OG_ERR_FORMAT,
f"{disk} {par} ..."
)
return None
data = {
@ -240,7 +291,11 @@ def ogFormatFs (disk, par, type=None, label=None):
'UFS': { 'PROG': 'mkfs.ufs', 'PARAMS': '-O 2' },
}
if type not in data:
SystemLib.ogRaiseError ([], ogGlobals.OG_ERR_PARTITION, f"{disk} {par} {type}")
SystemLib.ogRaiseError (
[],
ogGlobals.OG_ERR_PARTITION,
f"{disk} {par} {type}"
)
return
d = data[type]
@ -250,7 +305,11 @@ def ogFormatFs (disk, par, type=None, label=None):
input = d['INPUT'] if 'INPUT' in d else ''
if label == "CACHE":
SystemLib.ogRaiseError ([], ogGlobals.OG_ERR_FORMAT, f"{ogGlobals.lang.MSG_RESERVEDVALUE}: CACHE")
SystemLib.ogRaiseError (
[],
ogGlobals.OG_ERR_FORMAT,
f"{ogGlobals.lang.MSG_RESERVEDVALUE}: CACHE"
)
return
if label:
params = f"{params} {labelparam or '-L'} {label}"
@ -263,10 +322,18 @@ def ogFormatFs (disk, par, type=None, label=None):
else:
errcode = subprocess.run ([prog, params, PART], input=input, text=True)
except FileNotFoundError:
SystemLib.ogRaiseError ([], ogGlobals.OG_ERR_NOTEXEC, prog)
SystemLib.ogRaiseError (
[],
ogGlobals.OG_ERR_NOTEXEC,
prog
)
errcode = ogGlobals.OG_ERR_NOTEXEC
except:
SystemLib.ogRaiseError ([], ogGlobals.OG_ERR_PARTITION, f"{disk} {par}")
SystemLib.ogRaiseError (
[],
ogGlobals.OG_ERR_PARTITION,
f"{disk} {par}"
)
errcode = ogGlobals.OG_ERR_PARTITION
ogUnlock (disk, par)
@ -293,7 +360,11 @@ def ogGetFsSize (disk, par, unit='KB'):
elif unit.upper() == "TB":
factor = 1024 * 1024 * 1024
elif unit.upper() != "KB":
SystemLib.ogRaiseError ([], ogGlobals.OG_ERR_FORMAT, f"{unit} != {{ KB, MB, GB, TB }}")
SystemLib.ogRaiseError (
[],
ogGlobals.OG_ERR_FORMAT,
f"{unit} != {{ KB, MB, GB, TB }}"
)
return
# Obtener el tamaño del sistema de archivo (si no está formateado; tamaño = 0).
@ -334,7 +405,11 @@ def ogGetFsType(disk, part):
try:
subprocess.run(["zfs", "mount", PART])
except FileNotFoundError:
SystemLib.ogRaiseError ([], ogGlobals.OG_ERR_NOTEXEC, 'zfs')
SystemLib.ogRaiseError (
[],
ogGlobals.OG_ERR_NOTEXEC,
'zfs'
)
return
out = subprocess.run(["mount"], capture_output=True, text=True).stdout.splitlines()
for line in out:
@ -343,7 +418,11 @@ def ogGetFsType(disk, part):
break
if not TYPE:
SystemLib.ogRaiseError ([], ogGlobals.OG_ERR_NOTFOUND, f'{disk} {part}')
SystemLib.ogRaiseError (
[],
ogGlobals.OG_ERR_NOTFOUND,
f'{disk} {part}'
)
return
# Componer valores correctos.
@ -474,18 +553,17 @@ def ogIsReadonly(disk, par):
return "ro" in options
def ogIsWritable(int_ndisk, int_nfilesys):
# Si se solicita, mostrar ayuda.
if len(sys.argv) == 3 and sys.argv[2] == "help":
ogHelp("ogIsWritable", "ogIsWritable int_ndisk int_nfilesys", "ogIsWritable 1 1")
return
# Error si no se reciben 2 parámetros.
if len(sys.argv) != 3:
ogRaiseError(OG_ERR_FORMAT)
SystemLib.ogRaiseError(
"session",
ogGlobals.OG_ERR_FORMAT,
f"Not enough arguments"
)
return
# Obtener partición.
PART = ogDiskToDev(int_ndisk, int_nfilesys)
PART = DiskLib.ogDiskToDev(int_ndisk, int_nfilesys)
if not PART:
return
@ -528,7 +606,7 @@ def ogLockPartition (disk, par):
def ogMount(*args):
if 1 == len (args):
if 'cache' == args[0].lower():
return ogMountCache()
return DiskLib.ogMountCache()
elif 'cdrom' == args[0].lower():
return ogMountCdrom()
elif 2 == len (args):
@ -536,13 +614,17 @@ def ogMount(*args):
def ogMountFirstFs(int_ndisk):
# Obtener número de particiones del disco.
NPARTS = ogGetPartitionsNumber(int_ndisk)
NPARTS = DiskLib.ogGetPartitionsNumber(int_ndisk)
for PART in range(1, NPARTS + 1):
MNTDIR = ogMount(int_ndisk, PART)
if MNTDIR:
return MNTDIR
ogRaiseError(OG_ERR_NOTFOUND, int_ndisk)
return OG_ERR_NOTFOUND
SystemLib.ogRaiseError(
"session",
ogGlobals.OG_ERR_NOTFOUND,
f"{int_ndisk}"
)
return ogGlobals.OG_ERR_NOTFOUND
#/**
# ogMountFs int_ndisk int_nfilesys
@ -563,7 +645,11 @@ def ogMountFs (disk, par):
if ogIsLocked (disk, par):
print (f'nati: ogMountFs: is locked disk ({disk}) par ({par})')
SystemLib.ogRaiseError ([], ogGlobals.OG_ERR_LOCKED, f"{ogGlobals.lang.MSG_PARTITION}, {disk} {par}")
SystemLib.ogRaiseError (
[],
ogGlobals.OG_ERR_LOCKED,
f"{ogGlobals.lang.MSG_PARTITION}, {disk} {par}"
)
return
# El camino de un dispositivo normal comienza por el carácter "/".
@ -586,7 +672,11 @@ def ogMountFs (disk, par):
try:
rc = subprocess.run(['mount', dev, mntdir, '-o', 'force,remove_hiberfile'], check=True).returncode
except subprocess.CalledProcessError:
SystemLib.ogRaiseError ([], ogGlobals.OG_ERR_PARTITION, f"{disk}, {par}")
SystemLib.ogRaiseError (
[],
ogGlobals.OG_ERR_PARTITION,
f"{disk}, {par}"
)
return
if 0 == rc:
@ -595,13 +685,21 @@ def ogMountFs (disk, par):
try:
subprocess.run (['ntfsfix', '-d', par], check=True)
except subprocess.CalledProcessError:
SystemLib.ogRaiseError ([], ogGlobals.OG_ERR_PARTITION, f"{disk, par}")
SystemLib.ogRaiseError (
[],
ogGlobals.OG_ERR_PARTITION,
f"{disk, par}"
)
#return
else:
try:
subprocess.run (['mount', par, mntdir, '-o', 'ro'], check=True)
except subprocess.CalledProcessError:
SystemLib.ogRaiseError ([], ogGlobals.OG_ERR_PARTITION, f"{disk, par}")
SystemLib.ogRaiseError (
[],
ogGlobals.OG_ERR_PARTITION,
f"{disk, par}"
)
#return
# Aviso de montaje de solo lectura.
@ -635,23 +733,27 @@ def ogMountCdrom():
try:
subprocess.run(["mount", "-t", "iso9660", DEV, MNTDIR], check=True, stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL)
except subprocess.CalledProcessError:
SystemLib.ogRaiseError ([], ogGlobals.OG_ERR_PARTITION, "cdrom")
SystemLib.ogRaiseError (
[],
ogGlobals.OG_ERR_PARTITION,
"cdrom"
)
return
return MNTDIR
def ogReduceFs(int_ndisk, int_nfilesys):
# Si se solicita, mostrar ayuda.
if len(sys.argv) == 3 and sys.argv[2] == "help":
ogHelp("ogReduceFs", "ogReduceFs int_ndisk int_nfilesys", "ogReduceFs 1 1")
return
# Error si no se reciben 2 parámetros.
if len(sys.argv) != 3:
ogRaiseError(OG_ERR_FORMAT)
SystemLib.ogRaiseError (
[],
ogGlobals.OG_ERR_FORMAT,
"Not enough arguments"
)
return
# Obtener partición.
PART = ogDiskToDev(int_ndisk, int_nfilesys)
PART = DiskLib.ogDiskToDev(int_ndisk, int_nfilesys)
if not PART:
return
@ -696,7 +798,11 @@ def ogReduceFs(int_ndisk, int_nfilesys):
# No se reduce (por el momento).
pass
else:
ogRaiseError(OG_ERR_PARTITION, f"{int_ndisk}, {int_nfilesys}")
SystemLib.ogRaiseError (
[],
ogGlobals.OG_ERR_PARTITION,
f"{int_ndisk}, {int_nfilesys}"
)
# Devuelve tamaño del sistema de ficheros.
return ogGetFsSize(int_ndisk, int_nfilesys)
@ -754,7 +860,11 @@ def ogUnmountFs(disk, par):
if MNTDIR:
# Error si la particion está bloqueada.
if ogIsLocked (disk, par):
ogRaiseError ([], ogGlobals.OG_ERR_LOCKED, f"{ogGlobals.lang.MSG_PARTITION}, {disk} {par}")
SystemLib.ogRaiseError (
[],
ogGlobals.OG_ERR_LOCKED,
f"{ogGlobals.lang.MSG_PARTITION}, {disk} {par}"
)
return
# Desmontar y borrar punto de montaje.
@ -785,35 +895,34 @@ def ogUnmountFs(disk, par):
#@warning No se desmonta la partición marcada como caché local.
#*/ ##
def ogUnmountAll(int_ndisk):
# Si se solicita, mostrar ayuda.
if len(sys.argv) == 3 and sys.argv[2] == "help":
ogHelp("ogUnmountAll", "ogUnmountAll int_ndisk", "ogUnmountAll 1")
return
# Error si no se recibe 1 parámetro.
if len(sys.argv) != 3:
ogRaiseError(OG_ERR_FORMAT)
SystemLib.ogRaiseError (
[],
ogGlobals.OG_ERR_FORMAT,
"Not enough arguments"
)
return
# Obtener partición y punto de montaje.
DISK = ogDiskToDev(int_ndisk)
for PART in range(1, ogGetPartitionsNumber(int_ndisk) + 1):
DISK = DiskLib.ogDiskToDev(int_ndisk)
for PART in range(1, DiskLib.ogGetPartitionsNumber(int_ndisk) + 1):
if ogGetFsType(int_ndisk, PART) != "CACHE":
ogUnmount(int_ndisk, PART)
def ogUnsetDirtyBit(int_ndisk, int_nfilesys):
# Si se solicita, mostrar ayuda.
if len(sys.argv) == 3 and sys.argv[2] == "help":
ogHelp("ogUnsetDirtyBit", "ogUnsetDirtyBit int_ndisk int_nfilesys", "ogUnsetDirtyBit 1 1")
return
# Error si no se reciben 2 parámetros.
if len(sys.argv) != 3:
ogRaiseError(OG_ERR_FORMAT)
SystemLib.ogRaiseError (
[],
ogGlobals.OG_ERR_FORMAT,
"Not enough arguments"
)
return
# Obtener partición y punto de montaje.
PART = ogDiskToDev(int_ndisk, int_nfilesys)
PART = DiskLib.ogDiskToDev(int_ndisk, int_nfilesys)
if not PART:
return