refs #631 - Modify 'getRepoInfo.py'
parent
a367aed25a
commit
b3e31219dc
|
@ -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
|
||||
|
||||
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.
|
||||
|
||||
**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
|
||||
|
||||
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.
|
||||
|
||||
**URL:** `/ogrepository/v1/images/{ID_img}`
|
||||
|
|
|
@ -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
|
||||
|
||||
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.
|
||||
|
||||
**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
|
||||
|
||||
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.
|
||||
|
||||
**URL:** `/ogrepository/v1/images/{ID_img}`
|
||||
|
|
|
@ -217,7 +217,7 @@ paths:
|
|||
get:
|
||||
summary: "Obtener Información de todas las Imágenes"
|
||||
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.
|
||||
tags:
|
||||
- "Información de Imágenes"
|
||||
|
@ -400,7 +400,7 @@ paths:
|
|||
summary: "Obtener Información de una Imagen concreta"
|
||||
description: |
|
||||
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).
|
||||
tags:
|
||||
- "Información de Imágenes"
|
||||
|
|
|
@ -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),
|
||||
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 dé error si no hay ninguna, por ejemplo).
|
||||
|
||||
Parámetros
|
||||
------------
|
||||
|
@ -32,6 +33,7 @@ sys.argv[2] - Subdirectorio correspondiente a la OU, o "none" si no procede..
|
|||
|
||||
import os
|
||||
import sys
|
||||
import subprocess
|
||||
import json
|
||||
|
||||
|
||||
|
@ -42,6 +44,7 @@ import json
|
|||
script_name = os.path.basename(__file__)
|
||||
repo_file = '/opt/opengnsys/ogrepository/etc/repoinfo.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):
|
||||
""" 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).
|
||||
|
@ -163,6 +181,9 @@ def main():
|
|||
# Evaluamos si se ha enviado la cantidad correcta de parámetros, y en el formato correcto:
|
||||
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"
|
||||
# (solo si el archivo tiene contenido, o dará error):
|
||||
if os.path.getsize(repo_file) > 0:
|
||||
|
|
Loading…
Reference in New Issue