refs #631 - Modify API and documentation

pull/5/head opengnsys_beta-0.5.0
Gerardo GIl Elizeire 2024-11-14 16:36:12 +01:00
parent 821680e95c
commit 3327cfc6e0
3 changed files with 37 additions and 9 deletions

View File

@ -36,7 +36,7 @@ Para que todos los endpoints y scripts funcionen con la configuración actual de
- **/opt/opengnsys/ogrepository/log/** (aquí se guardan los logs) - **/opt/opengnsys/ogrepository/log/** (aquí se guardan los logs)
Y también debe existir el siguiente archivo: Y también debe existir el siguiente archivo:
- **/opt/opengnsys/ogrepository/etc/ogAdmRepo.cfg** (de aquí pilla la IP de ogRepository) - **/opt/opengnsys/ogrepository/etc/ogAdmRepo.cfg** (de aquí pilla su IP y la de ogCore)
--- ---

View File

@ -41,14 +41,14 @@ repo_path = '/opt/opengnsys/ogrepository/images/' # No borrar la barra final
script_path = '/opt/opengnsys/ogrepository/bin' script_path = '/opt/opengnsys/ogrepository/bin'
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'
config_file = '/opt/opengnsys/ogrepository/etc/ogAdmRepo.cfg'
ogcore_ip = '172.17.8.26' # En la versión final, se tendrá que pillar de una variable de entorno
""" """
repo_path = '/home/user/images/' repo_path = '/home/user/images/'
script_path = '/home/user' script_path = '/home/user'
repo_file = '/home/user/jsons/repoinfo.json' repo_file = '/home/user/jsons/repoinfo.json'
trash_file = '/home/user/jsons/trashinfo.json' trash_file = '/home/user/jsons/trashinfo.json'
config_file = '/home/user/ogAdmRepo.cfg'
""" """
# -------------------------------------------------------------------------------------------- # --------------------------------------------------------------------------------------------
@ -70,6 +70,27 @@ swagger = Swagger(app, template=swagger_template)
# --------------------------------------------------------- # ---------------------------------------------------------
def get_IPcore():
""" Obtiene el valor asociado a la variable "IPcore", desde el archivo '/opt/opengnsys/ogrepository/etc/ogAdmRepo.cfg'.
Retorna la IP encontrada (que corresponde a la IP de ogCore), o un error (si no la encuentra).
"""
IPcore = None
with open(config_file, 'r') as file:
for line in file:
if line.startswith('IPcore'):
IPcore = line.split('=')[1].strip()
return IPcore
if IPcore is None:
return "IP no encontrada en el archivo de configuración"
# Almacenamos la IP de ogCore:
ogcore_ip = get_IPcore()
# ---------------------------------------------------------
def get_image_params(image_id, search='all'): def get_image_params(image_id, search='all'):
""" A partir de un ID de imagen (que corresponde al "fullsum"), busca la imagen en el repositorio y/o en la papelera (dependiendo del parámetro "search"). """ A partir de un ID de imagen (que corresponde al "fullsum"), busca la imagen en el repositorio y/o en la papelera (dependiendo del parámetro "search").
Si encuentra la imagen devuelve su nombre y su extensión en un diccionario, y si no encuentra la imagen especificada retorna "None". Si encuentra la imagen devuelve su nombre y su extensión en un diccionario, y si no encuentra la imagen especificada retorna "None".
@ -154,7 +175,7 @@ def check_lock_local(image_file_path, job_id):
'job_id': job_id 'job_id': job_id
} }
# Llamamos al endpoint de ogCore, enviando los datos del diccionario: # Llamamos al endpoint de ogCore, enviando los datos del diccionario:
#recall_ogcore(data) recall_ogcore(data)
break break
# Si aun existe el archivo ".lock", imprimimos un mensaje en la API: # Si aun existe el archivo ".lock", imprimimos un mensaje en la API:
else: else:
@ -202,7 +223,7 @@ def check_lock_remote(image_file_path, remote_host, remote_user, job_id):
'job_id': job_id 'job_id': job_id
} }
# Llamamos al endpoint de ogCore, enviando los datos del diccionario: # Llamamos al endpoint de ogCore, enviando los datos del diccionario:
#recall_ogcore(data) recall_ogcore(data)
break break
# Esperamos 1 minuto para volver a realizar la comprobación: # Esperamos 1 minuto para volver a realizar la comprobación:
sleep(60) sleep(60)
@ -240,7 +261,7 @@ def check_aux_files(image_file_path, job_id):
'image_id': image_id 'image_id': image_id
} }
# Llamamos al endpoint de ogCore, enviando los datos del diccionario: # Llamamos al endpoint de ogCore, enviando los datos del diccionario:
#recall_ogcore(data) recall_ogcore(data)
break break
# Esperamos 10 segundos para volver a realizar la comprobación: # Esperamos 10 segundos para volver a realizar la comprobación:
sleep(10) sleep(10)
@ -256,14 +277,14 @@ def recall_ogcore(data):
""" """
# Almacenamos la URL del endpoint de ogCore (prueba): # Almacenamos la URL del endpoint de ogCore (prueba):
#endpoint_url = f"http://{ogcore_ip}:8006/ogcore/v1/test" #endpoint_url = f"http://{ogcore_ip}:8006/ogcore/v1/test"
endpoint_url = f"https://{ogcore_ip}:8443/og-repository/webhook" # Es HTTPS? endpoint_url = f"https://{ogcore_ip}:8443/og-repository/webhook"
# Almacenamos los headers, y convertiomos "data" a JSON: # Almacenamos los headers, y convertiomos "data" a JSON:
headers = {'content-type': 'application/json'} headers = {'content-type': 'application/json'}
data = json.dumps(data) data = json.dumps(data)
# Hacemos una petición POST al endpoint, enviando lo almacenado en "data": # Hacemos una petición POST al endpoint, enviando lo almacenado en "data":
response = requests.post(endpoint_url, data=data, headers=headers) response = requests.post(endpoint_url, data=data, headers=headers, verify=False)
# Imprimimos el código de estado de la petición y la respuesta de ogCore: # Imprimimos el código de estado de la petición y la respuesta de ogCore:
app.logger.info(f"HTTP Status Code: {response.status_code}") app.logger.info(f"HTTP Status Code: {response.status_code}")
@ -774,6 +795,13 @@ def create_torrent_sum():
json_data = json.loads(request.data) json_data = json.loads(request.data)
image_name = json_data.get("image") image_name = json_data.get("image")
# Si la imagen no existe, retornamos un error y salimos del endpoint:
if not os.path.exists(f"{repo_path}{image_name}"):
return jsonify({
"success": False,
"exception": "Image not found"
}), 400
# Construimos la ruta de la imagen (relativa a "repo_path"): # Construimos la ruta de la imagen (relativa a "repo_path"):
image_file_path = image_name image_file_path = image_name

View File

@ -34,7 +34,7 @@ info:
- **/opt/opengnsys/ogrepository/log/** (aquí se guardan los logs) - **/opt/opengnsys/ogrepository/log/** (aquí se guardan los logs)
Y también debe existir el siguiente archivo: Y también debe existir el siguiente archivo:
- **/opt/opengnsys/ogrepository/etc/ogAdmRepo.cfg** (de aquí pilla la IP de ogRepository) - **/opt/opengnsys/ogrepository/etc/ogAdmRepo.cfg** (de aquí pilla su IP y la de ogCore)
--- ---