From bc16613939ef76e706102264caa779749e170aba Mon Sep 17 00:00:00 2001 From: Natalia Serrano Date: Fri, 14 Feb 2025 14:22:50 +0100 Subject: [PATCH] refs #1515 add ogSetPartitionSize --- client/lib/engine/bin/DiskLib.py | 40 +++++++--------------- client/shared/functions/ogSetPartitionSize | 24 +++++++++++++ 2 files changed, 37 insertions(+), 27 deletions(-) create mode 100755 client/shared/functions/ogSetPartitionSize diff --git a/client/lib/engine/bin/DiskLib.py b/client/lib/engine/bin/DiskLib.py index 26c0424..d3bd286 100755 --- a/client/lib/engine/bin/DiskLib.py +++ b/client/lib/engine/bin/DiskLib.py @@ -1186,35 +1186,21 @@ def ogSetPartitionId (disk, par, id): #@note Requisitos: sfdisk, awk #@todo Compruebar que el tamaño sea numérico positivo y evitar que pueda solaparse con la siguiente partición. #*/ ## -def ogSetPartitionSize(*args): - # Variables locales - DISK = None - PART = None - SIZE = None +def ogSetPartitionSize (disk, par, size): + DISK = ogDiskToDev (disk) + if not DISK: return None - # Si se solicita, mostrar ayuda. - if len(args) == 1 and args[0] == "help": - SystemLib.ogHelp('ogSetPartitionSize', 'ogSetPartitionSize int_ndisk int_npartition int_size', 'ogSetPartitionSize 1 1 10000000') - return + PART = ogDiskToDev (disk, par) + if not PART: return None - # Error si no se reciben 3 parámetros. - if len(args) != 3: - SystemLib.ogRaiseError(OG_ERR_FORMAT) - return - - # Obtener el tamaño de la partición. - DISK = ogDiskToDev(args[0]) - if DISK is None: - return - PART = ogDiskToDev(args[0], args[1]) - if PART is None: - return - # Convertir tamaño en KB a sectores de 512 B. - SIZE = int(args[2]) * 2 - # Redefinir el tamaño de la partición. - subprocess.run(["sfdisk", "-f", "-uS", f"-N{args[1]}", DISK], input=f",{SIZE}", text=True, stderr=subprocess.DEVNULL) - subprocess.run(["partprobe", DISK], stderr=subprocess.DEVNULL) - return +# Convertir tamaño en KB a sectores de 512 B. + SIZE = 2 * int (size) +# Redefinir el tamaño de la partición. + p = subprocess.run (['sfdisk', '-f', '-uS', f'-N{par}', DISK], input=f',{SIZE}', text=True) + if p.returncode: + ogRaiseError ([], ogGlobals.OG_ERR_PARTITION, f'{disk},{par}') + return None + subprocess.run (['partprobe', DISK]) #/** diff --git a/client/shared/functions/ogSetPartitionSize b/client/shared/functions/ogSetPartitionSize new file mode 100755 index 0000000..84d17b9 --- /dev/null +++ b/client/shared/functions/ogSetPartitionSize @@ -0,0 +1,24 @@ +#!/usr/bin/python3 + +import sys +import argparse +from SystemLib import ogHelp +from DiskLib import ogSetPartitionSize + +parser = argparse.ArgumentParser (add_help=False) +parser.add_argument ('disk') +parser.add_argument ('par') +parser.add_argument ('size') + +if 2 == len (sys.argv) and 'help' == sys.argv[1]: + #parser.print_help() sale en inglés aunque la locale indique otra cosa + ogHelp ('ogSetPartitionSize', 'ogSetPartitionSize int_ndisk int_npartition int_size', ['ogSetPartitionSize 1 1 10000000']) + sys.exit (0) + +args = parser.parse_args() +ret = ogSetPartitionSize (args.disk, args.par, args.size) + +if ret is not None: + if ret == True: sys.exit (0) + elif ret == False: sys.exit (1) + else: print (ret)