refs #631 - Modify 'getRepoInfo.py'

pull/1/head
Gerardo GIl Elizeire 2024-11-08 11:43:37 +01:00
parent a367aed25a
commit b3e31219dc
4 changed files with 27 additions and 6 deletions

View File

@ -123,7 +123,7 @@ curl -X GET -H "Authorization: $API_KEY" http://example.com/ogrepository/v1/stat
### Obtener Información de todas las Imágenes ### Obtener Información de todas las Imágenes
Se devolverá la informacion contenida en el archivo "**/opt/opengnsys/ogrepository/etc/repoinfo.json**" (que corresponde a todas las imágenes almacenadas en el repositorio), y en el archivo "**/opt/opengnsys/ogrepository/etc/trashinfo.json**" (que corresponde a las imágenes que fueron eliminadas, que estarán en la papelera). Se devolverá la informacion contenida en el archivo "**/opt/opengnsys/ogrepository/etc/repoinfo.json**" (que corresponde a todas las imágenes almacenadas en el repositorio), y en el archivo "**/opt/opengnsys/ogrepository/etc/trashinfo.json**" (que corresponde a las imágenes que fueron eliminadas, que estarán en la papelera).
Se puede utilizar el script "**getRepoInfo.py**, que debe ser llamado por el endpoint. Se puede utilizar el script "**getRepoInfo.py**, que debe ser llamado por el endpoint, que a su vez llama al script "**updateRepoInfo.py**", para actualizar previamente la información del repositorio.
**NOTA**: El script requiere que se le pase "all" como primer parámetro (que correspondería al nombre de la imagen) y "none" como segundo parámetro (que corresponderia al nombre del subdirectorio correspondiente a la OU). Esta transformación de parámetros se realiza en la API. **NOTA**: El script requiere que se le pase "all" como primer parámetro (que correspondería al nombre de la imagen) y "none" como segundo parámetro (que corresponderia al nombre del subdirectorio correspondiente a la OU). Esta transformación de parámetros se realiza en la API.
**URL:** `/ogrepository/v1/images` **URL:** `/ogrepository/v1/images`
@ -229,7 +229,7 @@ curl -X GET -H "Authorization: $API_KEY" http://example.com/ogrepository/v1/imag
### Obtener Información de una Imagen concreta ### Obtener Información de una Imagen concreta
Se devolverá la informacion de la imagen especificada, que puede estar en el archivo "**/opt/opengnsys/ogrepository/etc/repoinfo.json**" o en el archivo "**/opt/opengnsys/ogrepository/etc/trashinfo.json**" (en este último caso, si la imagen está en la papelera). Se devolverá la informacion de la imagen especificada, que puede estar en el archivo "**/opt/opengnsys/ogrepository/etc/repoinfo.json**" o en el archivo "**/opt/opengnsys/ogrepository/etc/trashinfo.json**" (en este último caso, si la imagen está en la papelera).
Se puede utilizar el script "**getRepoInfo.py**, que debe ser llamado por el endpoint. Se puede utilizar el script "**getRepoInfo.py**, que debe ser llamado por el endpoint, que a su vez llama al script "**updateRepoInfo.py**", para actualizar previamente la información del repositorio.
**NOTA**: El script requiere que se le pase el nombre de la imagen (con extensión) como primer parámetro, y el subdirectorio correspondiente a la OU (o "none" si no es el caso) como segundo parámetro. Estos datos se obtienen en la API, a partir del ID de la imagen (que corresponde al contenido del archivo "full.sum"), y alli se realiza la transformación de parámetros. **NOTA**: El script requiere que se le pase el nombre de la imagen (con extensión) como primer parámetro, y el subdirectorio correspondiente a la OU (o "none" si no es el caso) como segundo parámetro. Estos datos se obtienen en la API, a partir del ID de la imagen (que corresponde al contenido del archivo "full.sum"), y alli se realiza la transformación de parámetros.
**URL:** `/ogrepository/v1/images/{ID_img}` **URL:** `/ogrepository/v1/images/{ID_img}`

View File

@ -83,7 +83,7 @@ curl -X GET -H "Authorization: $API_KEY" http://example.com/ogrepository/v1/stat
### Obtener Información de todas las Imágenes ### Obtener Información de todas las Imágenes
Se devolverá la informacion contenida en el archivo "**/opt/opengnsys/ogrepository/etc/repoinfo.json**" (que corresponde a todas las imágenes almacenadas en el repositorio), y en el archivo "**/opt/opengnsys/ogrepository/etc/trashinfo.json**" (que corresponde a las imágenes que fueron eliminadas, que estarán en la papelera). Se devolverá la informacion contenida en el archivo "**/opt/opengnsys/ogrepository/etc/repoinfo.json**" (que corresponde a todas las imágenes almacenadas en el repositorio), y en el archivo "**/opt/opengnsys/ogrepository/etc/trashinfo.json**" (que corresponde a las imágenes que fueron eliminadas, que estarán en la papelera).
Se puede utilizar el script "**getRepoInfo.py**, que debe ser llamado por el endpoint. Se puede utilizar el script "**getRepoInfo.py**, que debe ser llamado por el endpoint, que a su vez llama al script "**updateRepoInfo.py**", para actualizar previamente la información del repositorio.
**NOTA**: El script requiere que se le pase "all" como primer parámetro (que correspondería al nombre de la imagen) y "none" como segundo parámetro (que corresponderia al nombre del subdirectorio correspondiente a la OU). Esta transformación de parámetros se realiza en la API. **NOTA**: El script requiere que se le pase "all" como primer parámetro (que correspondería al nombre de la imagen) y "none" como segundo parámetro (que corresponderia al nombre del subdirectorio correspondiente a la OU). Esta transformación de parámetros se realiza en la API.
**URL:** `/ogrepository/v1/images` **URL:** `/ogrepository/v1/images`
@ -189,7 +189,7 @@ curl -X GET -H "Authorization: $API_KEY" http://example.com/ogrepository/v1/imag
### Obtener Información de una Imagen concreta ### Obtener Información de una Imagen concreta
Se devolverá la informacion de la imagen especificada, que puede estar en el archivo "**/opt/opengnsys/ogrepository/etc/repoinfo.json**" o en el archivo "**/opt/opengnsys/ogrepository/etc/trashinfo.json**" (en este último caso, si la imagen está en la papelera). Se devolverá la informacion de la imagen especificada, que puede estar en el archivo "**/opt/opengnsys/ogrepository/etc/repoinfo.json**" o en el archivo "**/opt/opengnsys/ogrepository/etc/trashinfo.json**" (en este último caso, si la imagen está en la papelera).
Se puede utilizar el script "**getRepoInfo.py**, que debe ser llamado por el endpoint. Se puede utilizar el script "**getRepoInfo.py**, que debe ser llamado por el endpoint, que a su vez llama al script "**updateRepoInfo.py**", para actualizar previamente la información del repositorio.
**NOTA**: El script requiere que se le pase el nombre de la imagen (con extensión) como primer parámetro, y el subdirectorio correspondiente a la OU (o "none" si no es el caso) como segundo parámetro. Estos datos se obtienen en la API, a partir del ID de la imagen (que corresponde al contenido del archivo "full.sum"), y alli se realiza la transformación de parámetros. **NOTA**: El script requiere que se le pase el nombre de la imagen (con extensión) como primer parámetro, y el subdirectorio correspondiente a la OU (o "none" si no es el caso) como segundo parámetro. Estos datos se obtienen en la API, a partir del ID de la imagen (que corresponde al contenido del archivo "full.sum"), y alli se realiza la transformación de parámetros.
**URL:** `/ogrepository/v1/images/{ID_img}` **URL:** `/ogrepository/v1/images/{ID_img}`

View File

@ -217,7 +217,7 @@ paths:
get: get:
summary: "Obtener Información de todas las Imágenes" summary: "Obtener Información de todas las Imágenes"
description: | description: |
Este endpoint ejecuta el script "**getRepoInfo.py**" con los parámetros "**all**" y "**none**" para devolver información de todas las imágenes almacenadas en el repositorio y en la papelera. Este endpoint ejecuta el script "**getRepoInfo.py**" con los parámetros "**all**" y "**none**" para devolver información de todas las imágenes almacenadas en el repositorio y en la papelera, que a su vez llama al script "**updateRepoInfo.py**", para actualizar previamente la información del repositorio.
Devuelve detalles como el nombre de la imagen, tipo, nombre del cliente, clonador, compresor, sistema de archivos, tamaño de los datos, tamaño de la imagen, y hashes MD5. Devuelve detalles como el nombre de la imagen, tipo, nombre del cliente, clonador, compresor, sistema de archivos, tamaño de los datos, tamaño de la imagen, y hashes MD5.
tags: tags:
- "Información de Imágenes" - "Información de Imágenes"
@ -400,7 +400,7 @@ paths:
summary: "Obtener Información de una Imagen concreta" summary: "Obtener Información de una Imagen concreta"
description: | description: |
Este endpoint devuelve información de la imagen especificada mediante su ID, en formato JSON. Este endpoint devuelve información de la imagen especificada mediante su ID, en formato JSON.
Utiliza el script "**getRepoInfo.py**" que recibe como parámetros el nombre de la imagen con extensión y el subdirectorio correspondiente a la OU (o "none" si no es el caso). Utiliza el script "**getRepoInfo.py**" que recibe como parámetros el nombre de la imagen con extensión y el subdirectorio correspondiente a la OU (o "none" si no es el caso), que a su vez llama al script "**updateRepoInfo.py**", para actualizar previamente la información del repositorio.
La imagen puede estar en el archivo "**repoinfo.json**" (si está almacenada en el repositorio) o en "**trashinfo.json**" (si está en la papelera). La imagen puede estar en el archivo "**repoinfo.json**" (si está almacenada en el repositorio) o en "**trashinfo.json**" (si está en la papelera).
tags: tags:
- "Información de Imágenes" - "Información de Imágenes"

View File

@ -4,6 +4,7 @@
""" """
Este script devuelve información (en formato json) de todas las imágenes contenidas en el repositorio (incluída la papelera), Este script devuelve información (en formato json) de todas las imágenes contenidas en el repositorio (incluída la papelera),
o de la imagen que se especifique como primer parámetro (debiendo especificar también el subdirectorio de OU como segundo parámetro, si procede). o de la imagen que se especifique como primer parámetro (debiendo especificar también el subdirectorio de OU como segundo parámetro, si procede).
Previamente, llama al script "updateRepoInfo.py", para actualizar la información del repositorio (para evitar que error si no hay ninguna, por ejemplo).
Parámetros Parámetros
------------ ------------
@ -32,6 +33,7 @@ sys.argv[2] - Subdirectorio correspondiente a la OU, o "none" si no procede..
import os import os
import sys import sys
import subprocess
import json import json
@ -42,6 +44,7 @@ import json
script_name = os.path.basename(__file__) script_name = os.path.basename(__file__)
repo_file = '/opt/opengnsys/ogrepository/etc/repoinfo.json' repo_file = '/opt/opengnsys/ogrepository/etc/repoinfo.json'
trash_file = '/opt/opengnsys/ogrepository/etc/trashinfo.json' trash_file = '/opt/opengnsys/ogrepository/etc/trashinfo.json'
update_repo_script = '/opt/opengnsys/ogrepository/bin/updateRepoInfo.py'
# -------------------------------------------------------------------------------------------- # --------------------------------------------------------------------------------------------
@ -79,6 +82,21 @@ def check_params():
def update_repo_info():
""" Actualiza la información del repositorio, ejecutando el script "updateRepoInfo.py".
Como se ve, es necesario que el script se ejecute como sudo, o dará error.
"""
try:
result = subprocess.run(['sudo', 'python3', update_repo_script], check=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
except subprocess.CalledProcessError as error:
print(f"Error Output: {error.stderr.decode()}")
sys.exit(3)
except Exception as error:
print(f"Se ha producido un error inesperado: {error}")
sys.exit(4)
def get_all_info(repo_data, trash_data): def get_all_info(repo_data, trash_data):
""" Imprime un json con la información de todo el repositorio, con todas las imágenes que contiene, """ Imprime un json con la información de todo el repositorio, con todas las imágenes que contiene,
incluyendo las imágenes que fueron eliminadas (que estarán en la papelera). incluyendo las imágenes que fueron eliminadas (que estarán en la papelera).
@ -163,6 +181,9 @@ def main():
# Evaluamos si se ha enviado la cantidad correcta de parámetros, y en el formato correcto: # Evaluamos si se ha enviado la cantidad correcta de parámetros, y en el formato correcto:
check_params() check_params()
# Actualizamos la información del repositorio, ejecutando el script "updateRepoInfo.py":
update_repo_info()
# Almacenamos la información de las imágenes del repositorio, en la variable "repo_data" # Almacenamos la información de las imágenes del repositorio, en la variable "repo_data"
# (solo si el archivo tiene contenido, o dará error): # (solo si el archivo tiene contenido, o dará error):
if os.path.getsize(repo_file) > 0: if os.path.getsize(repo_file) > 0: