diff --git a/ogclient/interfaceAdm/Configurar.py b/ogclient/interfaceAdm/Configurar.py index fb22ca0..6da2e0c 100755 --- a/ogclient/interfaceAdm/Configurar.py +++ b/ogclient/interfaceAdm/Configurar.py @@ -124,6 +124,7 @@ for item in sparams: SystemLib.ogRaiseError (['log', 'session'], ogGlobals.OG_ERR_FORMAT, f'se ha solicitado más de una partición extendida') sys.exit (1) extended_seen = True + extended_is_at = par do_sum_tam = False ## don't sum sizes anymore if ope: @@ -136,17 +137,44 @@ for item in sparams: if tch is None: tch = 0 -if is_there_cache and 0 == tch: - print (f'nati ===================== is_there_cache ({is_there_cache}) tch ({tch}), this should not happen') -if not cache_seen and not tbp: - SystemLib.ogRaiseError ([], ogGlobals.OG_ERR_FORMAT, f'No se ha solicitado ninguna partición') - sys.exit (1) - cur_ptt = DiskLib.ogGetPartitionTableType (dis) ptt = 'GPT' if InventoryLib.ogIsEfiActive() else 'MSDOS' + +if not cache_seen and not tbp: + SystemLib.ogRaiseError (['session', 'log'], ogGlobals.OG_ERR_FORMAT, f'No se ha solicitado ninguna partición') + sys.exit (1) + +if 'GPT' == ptt and extended_seen: + SystemLib.ogRaiseError (['session', 'log'], ogGlobals.OG_ERR_FORMAT, f'En GPT no se pueden usar particiones extendidas') + sys.exit (1) + +## error si nos piden más de 4 y ninguna es extendida +if 'MSDOS' == ptt and not extended_seen: + requested_partitions = len (tbp) + if cache_seen: requested_partitions += 1 + if requested_partitions > 4: + SystemLib.ogRaiseError (['session', 'log'], ogGlobals.OG_ERR_FORMAT, f'Se han solicitado más de 4 particiones y ninguna es extendida') + sys.exit (1) + +## si no nos definen partición de cache y el disco tiene una, hay que borrarla +if not cache_seen: + c = CacheLib.ogFindCache() + if c: + cache_disk, cache_part = c.split() + if int (cache_disk) == int (dis): + CacheLib.ogUnmountCache() + CacheLib.ogDeleteCache() + +## la extendida solo puede estar en la (si hay cache) o en la 4 (si no lo hay) +if extended_seen: + extended_should_be_at = 3 if cache_seen else 4 + if extended_is_at != extended_should_be_at: + SystemLib.ogRaiseError (['session', 'log'], ogGlobals.OG_ERR_FORMAT, f'La partición extendida no puede ser la "{extended_is_at}" sino que debe ser la "{extended_should_be_at}"') + sys.exit (1) + recreate_partition_table = False if not cur_ptt: SystemLib.ogEcho (['session', 'log'], None, f'No partition table--will create a "{ptt}" one') @@ -155,17 +183,17 @@ if cur_ptt and ptt != cur_ptt: SystemLib.ogEcho (['session', 'log'], None, f'Current partition table type "{cur_ptt}" is wrong for this system--will replace it for a "{ptt}" one') recreate_partition_table = True - ## size check: check that cache fits in the space left by the previously existing partitions if not recreate_partition_table and not CacheLib.ogCheckNewCacheSize (dis, tch): SystemLib.ogRaiseError (['log', 'session'], ogGlobals.OG_ERR_CACHE, f'nueva partición de caché no cabe en el hueco actual') + ## BUG el "hueco actual" me podría dar igual, si luego resulta que también estoy definiendo otras particiones y ya sí hay sitio para todo sys.exit (1) -## size check: check that the newly defined partitions fit in the space left by the newly defined cache +## size check: check that the newly defined partitions fit in the disk disk_sectors = DiskLib.ogGetLastSector (dis) IOSIZE = DiskLib.ogGetIoSize (dis) if not IOSIZE: - SystemLib.ogRaiseError ([], ogGlobals.OG_ERR_FORMAT, f'Failed to get disk sector size') + SystemLib.ogRaiseError (['session', 'log'], ogGlobals.OG_ERR_FORMAT, f'Failed to get disk sector size') sys.exit (1) if 512 == IOSIZE: sum_tam_sectors = sum_tam*2