From b21bde6851930c610466c5883bf68a781a7ac4ea Mon Sep 17 00:00:00 2001 From: ggil Date: Fri, 10 Jan 2025 12:40:24 +0100 Subject: [PATCH] refs #1335 - Supress recursive image search --- bin/updateRepoInfo.py | 70 ++++++++++++++++++++---------------------- bin/updateTrashInfo.py | 62 ++++++++++++++++++------------------- 2 files changed, 63 insertions(+), 69 deletions(-) diff --git a/bin/updateRepoInfo.py b/bin/updateRepoInfo.py index 10a2634..eb63034 100644 --- a/bin/updateRepoInfo.py +++ b/bin/updateRepoInfo.py @@ -51,50 +51,46 @@ def create_empty_json(): json.dump(json_data, file, indent=2) - def check_files(): """ Esta función recorre el directorio de imágenes, para buscar archivos con extensión ".img". Llama a la función "add_to_json" para que esta añada información de las imágenes no bloqueadas (sin archivo ".lock"), que además tengan un archivo ".info" asociado (siempre que este no se haya modificado antes que la propia imagen). Originalmente eliminaba los archivos ".info" después de extraer la información, pero ahora los renombra (agrega ".checked"). """ - # Iteramos recursivamente todos los archivos y directorios de "/opt/opengnsys/ogrepository/images", - # y luego iteramos todos los archivos encontrados (en una iteración anidada): - for root, dirs, files in os.walk(repo_path): - for file in files: - # Si la imagen actual tiene extensión ".img", construimos la ruta completa ("img_path"): - if file.endswith(".img"): - img_path = os.path.join(root, file) - # Si existe un archivo ".lock" asociado a la imagen actual, pasamos a la siguiente: - if os.path.exists(f"{img_path}.lock"): - continue - # Comprobamos si existe un archivo ".info" asociado a la imagen actual: - info_file = f"{img_path}.info" - if os.path.exists(info_file): - # Si la fecha de modificación del archivo ".info" es anterior a la de la imagen, lo eliminamos (porque estará desactualizado): - if os.path.getmtime(info_file) < os.path.getmtime(img_path): - os.remove(info_file) - print(f"Warning: Deleted outdated file {info_file}") - # En caso contrario, almacenamos el contenido del archivo ".info" (del tipo "PARTCLONE:LZOP:EXTFS:8500000:Ubuntu_20") en la variable "data": - else: - with open(info_file, 'r') as file: - info_data = file.read() - # Almacenamos el contenido de los archivos ".size", ".sum" y ".full.sum": - with open(f"{img_path}.size", 'r') as file: - size = file.read().strip('\n') - with open(f"{img_path}.sum", 'r') as file: - _sum = file.read().strip('\n') - with open(f"{img_path}.full.sum", 'r') as file: - fullsum = file.read().strip('\n') - # Llamamos a la función "add_to_json", para que inserte la información de la imagen en el archivo json - # (pasándole el nombre de la imagen, la extensión, y los datos extraídos del archivo ".info"): - img_name = os.path.relpath(img_path, repo_path) - add_to_json(os.path.splitext(img_name)[0], os.path.splitext(img_name)[1][1:], info_data, size, _sum, fullsum) - - # Renombramos el archivo ".info" a ".info.checked", para que ya no se añada la información que contiene - # (originalmente se eliminaba el archivo, pero creo que es mejor mantenerlo): - os.rename(info_file, f"{info_file}.checked") + # Iteramos todos los archivos y directorios de "/opt/opengnsys/ogrepository/images": + for item in os.listdir(repo_path): + # Si el item actual acaba con ".img", construimos la ruta completa de la imagen ("img_path"): + if item.endswith(".img"): + img_path = os.path.join(repo_path, item) + # Si existe un archivo ".lock" asociado a la imagen actual, pasamos a la siguiente: + if os.path.exists(f"{img_path}.lock"): + continue + # Comprobamos si existe un archivo ".info" asociado a la imagen actual: + info_file = f"{img_path}.info" + if os.path.exists(info_file): + # Si la fecha de modificación del archivo ".info" es anterior a la de la imagen, lo eliminamos (porque estará desactualizado): + if os.path.getmtime(info_file) < os.path.getmtime(img_path): + os.remove(info_file) + print(f"Warning: Deleted outdated file {info_file}") + # En caso contrario, almacenamos el contenido del archivo ".info" (del tipo "PARTCLONE:LZOP:EXTFS:8500000:Ubuntu_20") en la variable "data": + else: + with open(info_file, 'r') as file: + info_data = file.read() + # Almacenamos el contenido de los archivos ".size", ".sum" y ".full.sum": + with open(f"{img_path}.size", 'r') as file: + size = file.read().strip('\n') + with open(f"{img_path}.sum", 'r') as file: + _sum = file.read().strip('\n') + with open(f"{img_path}.full.sum", 'r') as file: + fullsum = file.read().strip('\n') + # Llamamos a la función "add_to_json", para que inserte la información de la imagen en el archivo json + # (pasándole el nombre de la imagen, la extensión, y los datos extraídos del archivo ".info"): + img_name = os.path.relpath(img_path, repo_path) + add_to_json(os.path.splitext(img_name)[0], os.path.splitext(img_name)[1][1:], info_data, size, _sum, fullsum) + # Renombramos el archivo ".info" a ".info.checked", para que ya no se añada la información que contiene + # (originalmente se eliminaba el archivo, pero creo que es mejor mantenerlo): + os.rename(info_file, f"{info_file}.checked") def add_to_json(image_name, image_type, data, size, _sum, fullsum): diff --git a/bin/updateTrashInfo.py b/bin/updateTrashInfo.py index 9d82975..33ed63a 100644 --- a/bin/updateTrashInfo.py +++ b/bin/updateTrashInfo.py @@ -73,38 +73,36 @@ def check_files(): Llama a la función "add_to_json" para que esta añada información de las imágenes no bloqueadas (sin archivo ".lock"), que además tengan un archivo ".info.checked" asociado (siempre que este no se haya modificado antes que la propia imagen). """ - # Iteramos recursivamente todos los archivos y directorios de "/opt/opengnsys/ogrepository/images_trash", - # y luego iteramos todos los archivos encontrados (en una iteración anidada): - for root, dirs, files in os.walk(trash_path): - for file in files: - # Si la imagen actual tiene extensión ".img", construimos la ruta completa ("img_path"): - if file.endswith(".img"): - img_path = os.path.join(root, file) - # Si existe un archivo ".lock" asociado a la imagen actual, pasamos a la siguiente: - if os.path.exists(f"{img_path}.lock"): - continue - # Comprobamos si existe un archivo ".info.checked" asociado a la imagen actual: - info_file = f"{img_path}.info.checked" - if os.path.exists(info_file): - # Si la fecha de modificación del archivo ".info.checked" es anterior a la de la imagen, lo eliminamos (porque estará desactualizado): - if os.path.getmtime(info_file) < os.path.getmtime(img_path): - os.remove(info_file) - print(f"Warning: Deleted outdated file {info_file}") - # En caso contrario, almacenamos el contenido del archivo ".info.checked" (del tipo "PARTCLONE:LZOP:EXTFS:8500000:Ubuntu_20") en la variable "data": - else: - with open(info_file, 'r') as file: - info_data = file.read() - # Almacenamos el contenido de los archivos ".size", ".sum" y ".full.sum": - with open(f"{img_path}.size", 'r') as file: - size = file.read().strip('\n') - with open(f"{img_path}.sum", 'r') as file: - _sum = file.read().strip('\n') - with open(f"{img_path}.full.sum", 'r') as file: - fullsum = file.read().strip('\n') - # Llamamos a la función "add_to_json", para que inserte la información de la imagen en el archivo json - # (pasándole el nombre de la imagen, la extensión, y los datos extraídos del archivo ".info.checked"): - img_name = os.path.relpath(img_path, trash_path) - add_to_json(os.path.splitext(img_name)[0], os.path.splitext(img_name)[1][1:], info_data, size, _sum, fullsum) + # Iteramos todos los archivos y directorios de "/opt/opengnsys/ogrepository/images_trash": + for item in os.listdir(trash_path): + # Si el item actual acaba con ".img", construimos la ruta completa de la imagen ("img_path"): + if item.endswith(".img"): + img_path = os.path.join(trash_path, item) + # Si existe un archivo ".lock" asociado a la imagen actual, pasamos a la siguiente: + if os.path.exists(f"{img_path}.lock"): + continue + # Comprobamos si existe un archivo ".info.checked" asociado a la imagen actual: + info_file = f"{img_path}.info.checked" + if os.path.exists(info_file): + # Si la fecha de modificación del archivo ".info.checked" es anterior a la de la imagen, lo eliminamos (porque estará desactualizado): + if os.path.getmtime(info_file) < os.path.getmtime(img_path): + os.remove(info_file) + print(f"Warning: Deleted outdated file {info_file}") + # En caso contrario, almacenamos el contenido del archivo ".info.checked" (del tipo "PARTCLONE:LZOP:EXTFS:8500000:Ubuntu_20") en la variable "data": + else: + with open(info_file, 'r') as file: + info_data = file.read() + # Almacenamos el contenido de los archivos ".size", ".sum" y ".full.sum": + with open(f"{img_path}.size", 'r') as file: + size = file.read().strip('\n') + with open(f"{img_path}.sum", 'r') as file: + _sum = file.read().strip('\n') + with open(f"{img_path}.full.sum", 'r') as file: + fullsum = file.read().strip('\n') + # Llamamos a la función "add_to_json", para que inserte la información de la imagen en el archivo json + # (pasándole el nombre de la imagen, la extensión, y los datos extraídos del archivo ".info.checked"): + img_name = os.path.relpath(img_path, trash_path) + add_to_json(os.path.splitext(img_name)[0], os.path.splitext(img_name)[1][1:], info_data, size, _sum, fullsum)