From 7c29e453e64f91602188a2bf18a2fde1d78dde91 Mon Sep 17 00:00:00 2001 From: ggil Date: Tue, 5 Nov 2024 17:44:25 +0100 Subject: [PATCH] refs #1084 - Modify API and Swagger documentation --- README.md | 36 +- api/README.md | 36 +- api/repo_api.py | 2 +- api/swagger.yaml | 1379 ++++++++++++++++++++++++---------------------- 4 files changed, 746 insertions(+), 707 deletions(-) diff --git a/README.md b/README.md index 24e490f..90237d3 100644 --- a/README.md +++ b/README.md @@ -97,7 +97,7 @@ curl -X GET -H "Authorization: $API_KEY" http://example.com/ogrepository/v1/stat Se devolverá la informacion contenida en el archivo "**/opt/opengnsys/etc/repoinfo.json**" (que corresponde a todas las imágenes almacenadas en el repositorio), y en el archivo "**/opt/opengnsys/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. -**NOTA**: La versión actual de este 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` **Método HTTP:** GET @@ -203,7 +203,7 @@ curl -X GET -H "Authorization: $API_KEY" http://example.com/ogrepository/v1/imag Se devolverá la informacion de la imagen especificada, que puede estar en el archivo "**/opt/opengnsys/etc/repoinfo.json**" o en el archivo "**/opt/opengnsys/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. -**NOTA**: La versión actual de este 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}` **Método HTTP:** GET @@ -211,7 +211,7 @@ Se puede utilizar el script "**getRepoInfo.py**, que debe ser llamado por el end **Ejemplo de Solicitud:** ```bash -curl -X GET -H "Authorization: $API_KEY" http://example.com/ogrepository/v1/images/{ID_img} +curl -X GET -H "Authorization: $API_KEY" http://example.com/ogrepository/v1/images/22735b9070e4a8043371b8c6ae52b90d ``` **Respuestas:** @@ -273,7 +273,7 @@ curl -X PUT -H "Authorization: $API_KEY" http://example.com/ogrepository/v1/imag Se comprobará la integridad del fichero de imagen especificado como parámetro. Se puede hacer con el script "**checkImage.py**", que compara el tamaño actual del archivo con el almacenado en el archivo "**.size**", y el hash MD5 del último MB del archivo con el almacenado en el archivo "**.sum**". -**NOTA**: La versión actual de este script requiere que se le pase el nombre de la imagen (con extensión, e incluyendo el nombre del directorio correspondiente a la OU, si fuera el caso) como único 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, e incluyendo el nombre del directorio correspondiente a la OU, si fuera el caso) como único 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/status/images/{ID_img}` **Método HTTP:** GET @@ -281,7 +281,7 @@ Se puede hacer con el script "**checkImage.py**", que compara el tamaño actual **Ejemplo de Solicitud:** ```bash -curl -X POST -H "Authorization: $API_KEY" http://example.com/ogrepository/v1/status/images/{ID_img} +curl -X POST -H "Authorization: $API_KEY" http://example.com/ogrepository/v1/status/images/22735b9070e4a8043371b8c6ae52b90d ``` **Respuestas:** - **Código 500 Internal Server Error:** Ocurrió un error al chequear la imagen. @@ -294,7 +294,7 @@ curl -X POST -H "Authorization: $API_KEY" http://example.com/ogrepository/v1/sta Se eliminará la imagen especificada como parámetro, pudiendo eliminarla permanentemente o enviarla a la papelera. Se puede hacer con el script "**deleteimage.py**", que debe ser llamado por el endpoint (y que incluye la funcionalidad "papelera"), y que a su vez llama al script "**updateRepoInfo.py**", para actualizar la información del repositorio. -**NOTA**: La versión actual de este script requiere que se le pase el nombre de la imagen (con extensión, e incluyendo el nombre del directorio correspondiente a la OU, si fuera el caso) como primer parámetro, y el parámetro opcional "-p" (para que la eliminación sea permanente). 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, pero también hay que especificar el método de eliminación en la URL, como parámetro adicional. +**NOTA**: El script requiere que se le pase el nombre de la imagen (con extensión, e incluyendo el nombre del directorio correspondiente a la OU, si fuera el caso) como primer parámetro, y el parámetro opcional "-p" (para que la eliminación sea permanente). 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, pero también hay que especificar el método de eliminación en la URL, como parámetro adicional. **URL:** `/ogrepository/v1/images/{ID_img}?method={method}` **Método HTTP:** DELETE @@ -305,7 +305,7 @@ Se puede hacer con el script "**deleteimage.py**", que debe ser llamado por el e **Ejemplo de Solicitud:** ```bash -curl -X DELETE -H "Authorization: $API_KEY" http://example.com/ogrepository/v1/images/{ID_img}?method=trash +curl -X DELETE -H "Authorization: $API_KEY" http://example.com/ogrepository/v1/images/22735b9070e4a8043371b8c6ae52b90d?method=trash ``` **Respuestas:** - **Código 500 Internal Server Error:** Ocurrió un error al eliminar la imagen. @@ -317,7 +317,7 @@ curl -X DELETE -H "Authorization: $API_KEY" http://example.com/ogrepository/v1/i Se recuperará la imagen especificada como parámetro, desde la papelera. Se puede hacer con el script "**recoverImage.py**", que debe ser llamado por el endpoint, y que a su vez llama al script "**updateRepoInfo.py**", para actualizar la información del repositorio. -**NOTA**: La versión actual de este script requiere que se le pase el nombre de la imagen (con extensión, e incluyendo el nombre del directorio correspondiente a la OU, si fuera el caso) como único 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, e incluyendo el nombre del directorio correspondiente a la OU, si fuera el caso) como único 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/trash/images` **Método HTTP:** POST @@ -328,7 +328,7 @@ Se puede hacer con el script "**recoverImage.py**", que debe ser llamado por el **Ejemplo de Solicitud:** ```bash -curl -X POST -H "Authorization: $API_KEY" -H "Content-Type: application/json" -d '{"ID_img":"image_id"}' http://example.com/ogrepository/v1/trash/images +curl -X POST -H "Authorization: $API_KEY" -H "Content-Type: application/json" -d '{"ID_img":"22735b9070e4a8043371b8c6ae52b90d"}' http://example.com/ogrepository/v1/trash/images ``` **Respuestas:** - **Código 500 Internal Server Error:** Ocurrió un error al recuperar la imagen. @@ -340,7 +340,7 @@ curl -X POST -H "Authorization: $API_KEY" -H "Content-Type: application/json" -d Se eliminará permanentemente la imagen especificada como parámetro, desde la papelera. Se puede hacer con el script "**deleteTrashImage.py**", que debe ser llamado por el endpoint, y que a su vez llama al script "**updateTrashInfo.py**", para actualizar la información de la papelera. -**NOTA**: La versión actual de este script requiere que se le pase el nombre de la imagen (con extensión, e incluyendo el nombre del directorio correspondiente a la OU, si fuera el caso) como único 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, e incluyendo el nombre del directorio correspondiente a la OU, si fuera el caso) como único 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/trash/images/{ID_img}` **Método HTTP:** DELETE @@ -348,7 +348,7 @@ Se puede hacer con el script "**deleteTrashImage.py**", que debe ser llamado por **Ejemplo de Solicitud:** ```bash -curl -X DELETE -H "Authorization: $API_KEY" http://example.com/ogrepository/v1/trash/images/{ID_img} +curl -X DELETE -H "Authorization: $API_KEY" http://example.com/ogrepository/v1/trash/images/22735b9070e4a8043371b8c6ae52b90d ``` **Respuestas:** - **Código 500 Internal Server Error:** Ocurrió un error al eliminar la imagen. @@ -375,7 +375,7 @@ Se puede hacer con el script "**importImage.py**", que debe ser llamado por el e **Ejemplo de Solicitud:** ```bash -curl -X POST -H "Authorization: $API_KEY" -H "Content-Type: application/json" -d '{"image":"Windows10.img","ou_subdir":"none","repo_ip":"192.168.56.100","user":"user_name"}' http://example.com/ogrepository/v1/repo/images +curl -X POST -H "Authorization: $API_KEY" -H "Content-Type: application/json" -d '{"image":"Windows10.img", "ou_subdir":"none", "repo_ip":"192.168.56.100", "user":"opengnsys"}' http://example.com/ogrepository/v1/repo/images ``` **Respuestas:** - **Código 500 Internal Server Error:** Ocurrió un error al importar la imagen. @@ -401,7 +401,7 @@ Se puede hacer con el script "**exportImage.py**", que debe ser llamado por el e **Ejemplo de Solicitud:** ```bash -curl -X PUT -H "Authorization: $API_KEY" -H "Content-Type: application/json" -d '{"ID_img":"image_id","repo_ip":"192.168.56.100","user":"user_name"}' http://example.com/ogrepository/v1/repo/images +curl -X PUT -H "Authorization: $API_KEY" -H "Content-Type: application/json" -d '{"ID_img":"22735b9070e4a8043371b8c6ae52b90d", "repo_ip":"192.168.56.100", "user":"opengnsys"}' http://example.com/ogrepository/v1/repo/images ``` **Respuestas:** - **Código 500 Internal Server Error:** Ocurrió un error al exportar la imagen. @@ -479,7 +479,7 @@ Se puede hacer con el script "**sendFileMcast.py**", que a su vez llama al binar **Ejemplo de Solicitud:** ```bash -curl -X POST -H "Authorization: $API_KEY" -H "Content-Type: application/json" -d '{"ID_img":"image_id", "port":"9000", "method":"full", "ip":"239.194.17.2", "bitrate":"70M", "nclients":"20", "maxtime":"120"}' http://example.com/ogrepository/v1/udpcast +curl -X POST -H "Authorization: $API_KEY" -H "Content-Type: application/json" -d '{"ID_img":"22735b9070e4a8043371b8c6ae52b90d", "port":"9000", "method":"full", "ip":"239.194.17.2", "bitrate":"70M", "nclients":"20", "maxtime":"120"}' http://example.com/ogrepository/v1/udpcast ``` **Respuestas:** - **Código 500 Internal Server Error:** Ocurrió un error al enviar la imagen. @@ -506,7 +506,7 @@ Se puede hacer con el script "**sendFileUFTP.py**", que requiere que previamente **Ejemplo de Solicitud:** ```bash -curl -X POST -H "Authorization: $API_KEY" -H "Content-Type: application/json" -d '{"ID_img":"image_id", "port":"9000", "ip":"239.194.17.2", "bitrate":"1G"}' http://example.com/ogrepository/v1/uftp +curl -X POST -H "Authorization: $API_KEY" -H "Content-Type: application/json" -d '{"ID_img":"22735b9070e4a8043371b8c6ae52b90d", "port":"9000", "ip":"239.194.17.2", "bitrate":"1G"}' http://example.com/ogrepository/v1/uftp ``` **Respuestas:** - **Código 500 Internal Server Error:** Ocurrió un error al enviar la imagen. @@ -531,7 +531,7 @@ Se puede hacer con los scripts "**runTorrentTracker.py**" y "**runTorrentSeeder. **Ejemplo de Solicitud:** ```bash -curl -X POST -H "Authorization: $API_KEY" -H "Content-Type: application/json" -d '{"ID_img":"image_id"}' http://example.com/ogrepository/v1/p2p +curl -X POST -H "Authorization: $API_KEY" -H "Content-Type: application/json" -d '{"ID_img":"22735b9070e4a8043371b8c6ae52b90d"}' http://example.com/ogrepository/v1/p2p ``` **Respuestas:** - **Código 500 Internal Server Error:** Ocurrió un error al intentar enviar la imagen. @@ -613,7 +613,7 @@ Se puede hacer con el script "**stopUDPcast.py**", que debe ser llamado por el e **Ejemplo de Solicitud:** ```bash -curl -X DELETE -H "Authorization: $API_KEY" http://example.com/ogrepository/v1/udpcast/images/{ID_img} +curl -X DELETE -H "Authorization: $API_KEY" http://example.com/ogrepository/v1/udpcast/images/22735b9070e4a8043371b8c6ae52b90d ``` **Respuestas:** - **Código 500 Internal Server Error:** Ocurrió un error al cancelar la transmisión UDPcast. @@ -634,7 +634,7 @@ Se puede hacer con el script "**stopUFTP.py**", que debe ser llamado por el endp **Ejemplo de Solicitud:** ```bash -curl -X DELETE -H "Authorization: $API_KEY" http://example.com/ogrepository/v1/uftp/images/{ID_img} +curl -X DELETE -H "Authorization: $API_KEY" http://example.com/ogrepository/v1/uftp/images/22735b9070e4a8043371b8c6ae52b90d ``` **Respuestas:** - **Código 500 Internal Server Error:** Ocurrió un error al cancelar la transmisión UFTP. diff --git a/api/README.md b/api/README.md index 1a05998..0d250ae 100644 --- a/api/README.md +++ b/api/README.md @@ -84,7 +84,7 @@ curl -X GET -H "Authorization: $API_KEY" http://example.com/ogrepository/v1/stat Se devolverá la informacion contenida en el archivo "**/opt/opengnsys/etc/repoinfo.json**" (que corresponde a todas las imágenes almacenadas en el repositorio), y en el archivo "**/opt/opengnsys/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. -**NOTA**: La versión actual de este 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` **Método HTTP:** GET @@ -190,7 +190,7 @@ curl -X GET -H "Authorization: $API_KEY" http://example.com/ogrepository/v1/imag Se devolverá la informacion de la imagen especificada, que puede estar en el archivo "**/opt/opengnsys/etc/repoinfo.json**" o en el archivo "**/opt/opengnsys/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. -**NOTA**: La versión actual de este 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}` **Método HTTP:** GET @@ -198,7 +198,7 @@ Se puede utilizar el script "**getRepoInfo.py**, que debe ser llamado por el end **Ejemplo de Solicitud:** ```bash -curl -X GET -H "Authorization: $API_KEY" http://example.com/ogrepository/v1/images/{ID_img} +curl -X GET -H "Authorization: $API_KEY" http://example.com/ogrepository/v1/images/22735b9070e4a8043371b8c6ae52b90d ``` **Respuestas:** @@ -260,7 +260,7 @@ curl -X PUT -H "Authorization: $API_KEY" http://example.com/ogrepository/v1/imag Se comprobará la integridad del fichero de imagen especificado como parámetro. Se puede hacer con el script "**checkImage.py**", que compara el tamaño actual del archivo con el almacenado en el archivo "**.size**", y el hash MD5 del último MB del archivo con el almacenado en el archivo "**.sum**". -**NOTA**: La versión actual de este script requiere que se le pase el nombre de la imagen (con extensión, e incluyendo el nombre del directorio correspondiente a la OU, si fuera el caso) como único 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, e incluyendo el nombre del directorio correspondiente a la OU, si fuera el caso) como único 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/status/images/{ID_img}` **Método HTTP:** GET @@ -268,7 +268,7 @@ Se puede hacer con el script "**checkImage.py**", que compara el tamaño actual **Ejemplo de Solicitud:** ```bash -curl -X POST -H "Authorization: $API_KEY" http://example.com/ogrepository/v1/status/images/{ID_img} +curl -X POST -H "Authorization: $API_KEY" http://example.com/ogrepository/v1/status/images/22735b9070e4a8043371b8c6ae52b90d ``` **Respuestas:** - **Código 500 Internal Server Error:** Ocurrió un error al chequear la imagen. @@ -281,7 +281,7 @@ curl -X POST -H "Authorization: $API_KEY" http://example.com/ogrepository/v1/sta Se eliminará la imagen especificada como parámetro, pudiendo eliminarla permanentemente o enviarla a la papelera. Se puede hacer con el script "**deleteimage.py**", que debe ser llamado por el endpoint (y que incluye la funcionalidad "papelera"), y que a su vez llama al script "**updateRepoInfo.py**", para actualizar la información del repositorio. -**NOTA**: La versión actual de este script requiere que se le pase el nombre de la imagen (con extensión, e incluyendo el nombre del directorio correspondiente a la OU, si fuera el caso) como primer parámetro, y el parámetro opcional "-p" (para que la eliminación sea permanente). 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, pero también hay que especificar el método de eliminación en la URL, como parámetro adicional. +**NOTA**: El script requiere que se le pase el nombre de la imagen (con extensión, e incluyendo el nombre del directorio correspondiente a la OU, si fuera el caso) como primer parámetro, y el parámetro opcional "-p" (para que la eliminación sea permanente). 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, pero también hay que especificar el método de eliminación en la URL, como parámetro adicional. **URL:** `/ogrepository/v1/images/{ID_img}?method={method}` **Método HTTP:** DELETE @@ -292,7 +292,7 @@ Se puede hacer con el script "**deleteimage.py**", que debe ser llamado por el e **Ejemplo de Solicitud:** ```bash -curl -X DELETE -H "Authorization: $API_KEY" http://example.com/ogrepository/v1/images/{ID_img}?method=trash +curl -X DELETE -H "Authorization: $API_KEY" http://example.com/ogrepository/v1/images/22735b9070e4a8043371b8c6ae52b90d?method=trash ``` **Respuestas:** - **Código 500 Internal Server Error:** Ocurrió un error al eliminar la imagen. @@ -304,7 +304,7 @@ curl -X DELETE -H "Authorization: $API_KEY" http://example.com/ogrepository/v1/i Se recuperará la imagen especificada como parámetro, desde la papelera. Se puede hacer con el script "**recoverImage.py**", que debe ser llamado por el endpoint, y que a su vez llama al script "**updateRepoInfo.py**", para actualizar la información del repositorio. -**NOTA**: La versión actual de este script requiere que se le pase el nombre de la imagen (con extensión, e incluyendo el nombre del directorio correspondiente a la OU, si fuera el caso) como único 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, e incluyendo el nombre del directorio correspondiente a la OU, si fuera el caso) como único 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/trash/images` **Método HTTP:** POST @@ -315,7 +315,7 @@ Se puede hacer con el script "**recoverImage.py**", que debe ser llamado por el **Ejemplo de Solicitud:** ```bash -curl -X POST -H "Authorization: $API_KEY" -H "Content-Type: application/json" -d '{"ID_img":"image_id"}' http://example.com/ogrepository/v1/trash/images +curl -X POST -H "Authorization: $API_KEY" -H "Content-Type: application/json" -d '{"ID_img":"22735b9070e4a8043371b8c6ae52b90d"}' http://example.com/ogrepository/v1/trash/images ``` **Respuestas:** - **Código 500 Internal Server Error:** Ocurrió un error al recuperar la imagen. @@ -327,7 +327,7 @@ curl -X POST -H "Authorization: $API_KEY" -H "Content-Type: application/json" -d Se eliminará permanentemente la imagen especificada como parámetro, desde la papelera. Se puede hacer con el script "**deleteTrashImage.py**", que debe ser llamado por el endpoint, y que a su vez llama al script "**updateTrashInfo.py**", para actualizar la información de la papelera. -**NOTA**: La versión actual de este script requiere que se le pase el nombre de la imagen (con extensión, e incluyendo el nombre del directorio correspondiente a la OU, si fuera el caso) como único 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, e incluyendo el nombre del directorio correspondiente a la OU, si fuera el caso) como único 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/trash/images/{ID_img}` **Método HTTP:** DELETE @@ -335,7 +335,7 @@ Se puede hacer con el script "**deleteTrashImage.py**", que debe ser llamado por **Ejemplo de Solicitud:** ```bash -curl -X DELETE -H "Authorization: $API_KEY" http://example.com/ogrepository/v1/trash/images/{ID_img} +curl -X DELETE -H "Authorization: $API_KEY" http://example.com/ogrepository/v1/trash/images/22735b9070e4a8043371b8c6ae52b90d ``` **Respuestas:** - **Código 500 Internal Server Error:** Ocurrió un error al eliminar la imagen. @@ -362,7 +362,7 @@ Se puede hacer con el script "**importImage.py**", que debe ser llamado por el e **Ejemplo de Solicitud:** ```bash -curl -X POST -H "Authorization: $API_KEY" -H "Content-Type: application/json" -d '{"image":"Windows10.img","ou_subdir":"none","repo_ip":"192.168.56.100","user":"user_name"}' http://example.com/ogrepository/v1/repo/images +curl -X POST -H "Authorization: $API_KEY" -H "Content-Type: application/json" -d '{"image":"Windows10.img", "ou_subdir":"none", "repo_ip":"192.168.56.100", "user":"opengnsys"}' http://example.com/ogrepository/v1/repo/images ``` **Respuestas:** - **Código 500 Internal Server Error:** Ocurrió un error al importar la imagen. @@ -388,7 +388,7 @@ Se puede hacer con el script "**exportImage.py**", que debe ser llamado por el e **Ejemplo de Solicitud:** ```bash -curl -X PUT -H "Authorization: $API_KEY" -H "Content-Type: application/json" -d '{"ID_img":"image_id","repo_ip":"192.168.56.100","user":"user_name"}' http://example.com/ogrepository/v1/repo/images +curl -X PUT -H "Authorization: $API_KEY" -H "Content-Type: application/json" -d '{"ID_img":"22735b9070e4a8043371b8c6ae52b90d", "repo_ip":"192.168.56.100", "user":"opengnsys"}' http://example.com/ogrepository/v1/repo/images ``` **Respuestas:** - **Código 500 Internal Server Error:** Ocurrió un error al exportar la imagen. @@ -466,7 +466,7 @@ Se puede hacer con el script "**sendFileMcast.py**", que a su vez llama al binar **Ejemplo de Solicitud:** ```bash -curl -X POST -H "Authorization: $API_KEY" -H "Content-Type: application/json" -d '{"ID_img":"image_id", "port":"9000", "method":"full", "ip":"239.194.17.2", "bitrate":"70M", "nclients":"20", "maxtime":"120"}' http://example.com/ogrepository/v1/udpcast +curl -X POST -H "Authorization: $API_KEY" -H "Content-Type: application/json" -d '{"ID_img":"22735b9070e4a8043371b8c6ae52b90d", "port":"9000", "method":"full", "ip":"239.194.17.2", "bitrate":"70M", "nclients":"20", "maxtime":"120"}' http://example.com/ogrepository/v1/udpcast ``` **Respuestas:** - **Código 500 Internal Server Error:** Ocurrió un error al enviar la imagen. @@ -493,7 +493,7 @@ Se puede hacer con el script "**sendFileUFTP.py**", que requiere que previamente **Ejemplo de Solicitud:** ```bash -curl -X POST -H "Authorization: $API_KEY" -H "Content-Type: application/json" -d '{"ID_img":"image_id", "port":"9000", "ip":"239.194.17.2", "bitrate":"1G"}' http://example.com/ogrepository/v1/uftp +curl -X POST -H "Authorization: $API_KEY" -H "Content-Type: application/json" -d '{"ID_img":"22735b9070e4a8043371b8c6ae52b90d", "port":"9000", "ip":"239.194.17.2", "bitrate":"1G"}' http://example.com/ogrepository/v1/uftp ``` **Respuestas:** - **Código 500 Internal Server Error:** Ocurrió un error al enviar la imagen. @@ -518,7 +518,7 @@ Se puede hacer con los scripts "**runTorrentTracker.py**" y "**runTorrentSeeder. **Ejemplo de Solicitud:** ```bash -curl -X POST -H "Authorization: $API_KEY" -H "Content-Type: application/json" -d '{"ID_img":"image_id"}' http://example.com/ogrepository/v1/p2p +curl -X POST -H "Authorization: $API_KEY" -H "Content-Type: application/json" -d '{"ID_img":"22735b9070e4a8043371b8c6ae52b90d"}' http://example.com/ogrepository/v1/p2p ``` **Respuestas:** - **Código 500 Internal Server Error:** Ocurrió un error al intentar enviar la imagen. @@ -600,7 +600,7 @@ Se puede hacer con el script "**stopUDPcast.py**", que debe ser llamado por el e **Ejemplo de Solicitud:** ```bash -curl -X DELETE -H "Authorization: $API_KEY" http://example.com/ogrepository/v1/udpcast/images/{ID_img} +curl -X DELETE -H "Authorization: $API_KEY" http://example.com/ogrepository/v1/udpcast/images/22735b9070e4a8043371b8c6ae52b90d ``` **Respuestas:** - **Código 500 Internal Server Error:** Ocurrió un error al cancelar la transmisión UDPcast. @@ -621,7 +621,7 @@ Se puede hacer con el script "**stopUFTP.py**", que debe ser llamado por el endp **Ejemplo de Solicitud:** ```bash -curl -X DELETE -H "Authorization: $API_KEY" http://example.com/ogrepository/v1/uftp/images/{ID_img} +curl -X DELETE -H "Authorization: $API_KEY" http://example.com/ogrepository/v1/uftp/images/22735b9070e4a8043371b8c6ae52b90d ``` **Respuestas:** - **Código 500 Internal Server Error:** Ocurrió un error al cancelar la transmisión UFTP. diff --git a/api/repo_api.py b/api/repo_api.py index 9297628..fe4f347 100644 --- a/api/repo_api.py +++ b/api/repo_api.py @@ -4,7 +4,7 @@ """ API de ogRepository, programada en Flask. -Responde a peticiones HTTP (en principio, enviadas desde ogCore) mediante endpoints, que a su vez ejecutan los scripts Python almacenados en ogRepo. +Responde a peticiones HTTP (en principio, enviadas desde ogCore) mediante endpoints, que a su vez ejecutan los scripts Python almacenados en ogRepository. En ciertos casos, transforma los parámetros recibidos desde el portal, para adaptarlos a los que es necesario enviar a los scripts (por ejemplo, a partir del ID de una imagen obtiene su nombre, su extensión y el subdirectorio de OU). diff --git a/api/swagger.yaml b/api/swagger.yaml index 9e03b87..1d6dc62 100644 --- a/api/swagger.yaml +++ b/api/swagger.yaml @@ -3,17 +3,30 @@ info: title: "OgRepository API" version: "1.0" description: | - API de ogRepository, programada en Flask. + **API de ogRepository, programada en Flask**. - Responde a peticiones HTTP (enviadas desde ogCore) mediante endpoints, que a su vez ejecutan los scripts Python almacenados en ogRepo. - En ciertos casos, transforma los parámetros recibidos desde el portal, para adaptarlos a los que es necesario enviar a los scripts - (por ejemplo, a partir del ID de una imagen obtiene su nombre, su extensión y el subdirectorio de OU). + Responde a peticiones HTTP (enviadas desde ogCore) mediante endpoints, que a su vez ejecutan los scripts Python almacenados en ogRepository. + En ciertos casos, transforma los parámetros recibidos desde el portal, para adaptarlos a los que es necesario enviar a los scripts (por ejemplo, a partir del ID de una imagen obtiene su nombre, su extensión y el subdirectorio de OU). Librerías Python requeridas: - - flask (se puede instalar con "sudo apt install python3-flask") - - paramiko (se puede instalar con "sudo apt install python3-paramiko") - - requests (se puede instalar con "sudo apt install python3-requests") - No tengo claro que para este paquete sea necesario - - flasgger (se puede instalar con "sudo apt install python3-flasgger") + - **flask** (se puede instalar con "sudo apt install python3-flask") + - **paramiko** (se puede instalar con "sudo apt install python3-paramiko") + - **requests** (se puede instalar con "sudo apt install python3-requests") - No tengo claro que para este paquete sea necesario + - **flasgger** (se puede instalar con "sudo apt install python3-flasgger") + +# ----------------------------------------------------------------------------------------------------------- + +# Esto hace que el Swagger se ordene por los tags (apartados), de la forma especificada: +tags: + - name: "Estado de ogRepository" + - name: "Información de Imágenes" + - name: "Eliminar y Recuperar Imágenes" + - name: "Transferencia de Imágenes (UDPcast)" + - name: "Transferencia de Imágenes (UFTP)" + - name: "Transferencia de Imágenes (P2P)" + - name: "Importar y Exportar Imágenes" + - name: "Varios" + # ----------------------------------------------------------------------------------------------------------- # Apartado "Estado de ogRepository" @@ -24,7 +37,7 @@ paths: get: summary: "Obtener Información de Estado de ogRepository" description: > - Este endpoint ejecuta el script "getRepoStatus.py" y devuelve su salida en formato JSON, + Este endpoint ejecuta el script "**getRepoStatus.py**" y devuelve su salida en formato JSON, incluyendo información sobre la CPU, memoria RAM, disco duro, servicios, y procesos específicos de ogRepository. tags: - "Estado de ogRepository" @@ -133,10 +146,11 @@ paths: /ogrepository/v1/images: put: summary: "Actualizar Información del Repositorio" - description: > - Este endpoint actualiza la información de las imágenes almacenadas en el repositorio, reflejándola en los archivos "repoinfo.json" y "trashinfo.json". - Utiliza el script "updateRepoInfo.py", que también ejecuta "updateTrashInfo.py". - Este proceso se realiza para mantener actualizados los datos del repositorio y la papelera, y debería ser invocado cada vez que se elimine o cree una imagen. + description: | + Este endpoint actualiza la información de las imágenes almacenadas en el repositorio, reflejándola en los archivos "**repoinfo.json**" y "**trashinfo.json**". + Utiliza el script "**updateRepoInfo.py**", que a su vez llama al script "**updateTrashInfo.py**", para actualizar también la información de la papelera. + + No hace falta que se le llame al crear o exportar una imagen, ya que lo llama el endpoint "**Crear archivos auxiliares**" (que sí debe ser llamado en esos casos). tags: - "Información de Imágenes" responses: @@ -179,11 +193,9 @@ paths: #/ogrepository/v1/images: 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. - 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. + 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. + 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" responses: @@ -363,10 +375,10 @@ paths: /ogrepository/v1/images/{imageId}: get: summary: "Obtener Información de una Imagen concreta" - description: > - Este endpoint devuelve información de la imagen especificada mediante su ID en formato JSON. - Puede utilizar 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). - La imagen puede estar en el archivo "/opt/opengnsys/etc/repoinfo.json" (si está almacenada) o en "/opt/opengnsys/etc/trashinfo.json" (si está en la papelera). + 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). + 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" parameters: @@ -374,7 +386,7 @@ paths: in: path required: true type: string - description: "El ID de la imagen (corresponde al hash MD5 'fullsum' de la imagen)" + description: "Identificador de la imagen (correspondiente al contenido del archivo 'full.sum')" responses: "200": description: "La información de la imagen se obtuvo exitosamente." @@ -464,9 +476,9 @@ paths: /ogrepository/v1/status/images/{imageId}: get: summary: "Chequear Integridad de Imagen" - description: > + description: | Este endpoint comprueba la integridad de la imagen especificada como parámetro, comparando el tamaño y el hash MD5 del último MB con los valores almacenados en los archivos ".size" y ".sum". - Utiliza el script "checkImage.py", que recibe el nombre de la imagen (con extensión) y el subdirectorio correspondiente a la OU, si aplica. + Utiliza el script "**checkImage.py**", que recibe el nombre de la imagen (con extensión) y el subdirectorio correspondiente a la OU, si aplica. tags: - "Información de Imágenes" parameters: @@ -474,7 +486,7 @@ paths: in: path required: true type: string - description: "El ID de la imagen (corresponde al hash MD5 'fullsum' de la imagen)" + description: "Identificador de la imagen (correspondiente al contenido del archivo 'full.sum')" responses: "200 (Check OK)": description: "La imagen se ha chequeado exitosamente." @@ -539,11 +551,9 @@ paths: /ogrepository/v1/images/{imageId}?method={method}: delete: summary: "Eliminar una Imagen" - description: > - Este endpoint elimina la imagen especificada como parámetro (y todos sus archivos asociados), - moviéndolos a la papelera o eliminándolos permanentemente dependiendo del parámetro "method". - Utiliza el script "deleteImage.py" que recibe el nombre de la imagen (con extensión y subdirectorio correspondiente a la OU, si aplica) - como primer parámetro, y opcionalmente el parámetro "-p" para eliminación permanente. + description: | + Este endpoint elimina la imagen especificada como parámetro (y todos sus archivos asociados), moviéndolos a la papelera o eliminándolos permanentemente (dependiendo del parámetro "method"). + Utiliza el script "**deleteImage.py**" que recibe el nombre de la imagen (con extensión y subdirectorio correspondiente a la OU, si aplica) como primer parámetro, y opcionalmente el parámetro "-p" (para eliminación permanente), que a su vez llama al script "**updateRepoInfo.py**", para actualizar la información del repositorio. tags: - "Eliminar y Recuperar Imágenes" parameters: @@ -551,12 +561,12 @@ paths: in: path required: true type: string - description: "El ID de la imagen (corresponde al hash MD5 'fullsum' de la imagen)" + description: "Identificador de la imagen (correspondiente al contenido del archivo 'full.sum')" - name: method in: query - required: false + required: true type: string - description: "Método de eliminación (puede ser 'trash' para enviar a la papelera o 'permanent' para eliminar definitivamente)" + description: "Método de eliminación (puede ser 'trash', para enviar la imagen a la papelera, o 'permanent', para eliminarla definitivamente)" responses: "200": description: "La imagen se eliminó exitosamente." @@ -608,22 +618,23 @@ paths: /ogrepository/v1/trash/images: post: summary: "Recuperar una Imagen" - description: > + description: | Este endpoint recupera la imagen especificada, moviéndola desde la papelera al repositorio de imágenes. - Utiliza el script "recoverImage.py", que recibe el nombre de la imagen (con extensión y subdirectorio correspondiente a la OU, si aplica). + Utiliza el script "**recoverImage.py**", que recibe el nombre de la imagen (con extensión y subdirectorio correspondiente a la OU, si aplica), que a su vez llama al script "**updateRepoInfo.py**", para actualizar la información del repositorio. tags: - "Eliminar y Recuperar Imágenes" parameters: - - name: ID_img + - name: JSON in: body required: true - description: "Identificador de la imagen (correspondiente al contenido del archivo 'full.sum' asociado)" + description: | + * **ID_img** - Identificador de la imagen, correspondiente al contenido del archivo 'full.sum' schema: type: object properties: ID_img: type: string - example: "image_id" + example: "22735b9070e4a8043371b8c6ae52b90d" responses: "200": description: "La imagen se recuperó exitosamente." @@ -675,9 +686,9 @@ paths: /ogrepository/v1/trash/images/{imageId}: delete: summary: "Eliminar una Imagen de la Papelera" - description: > - Este endpoint elimina permanentemente la imagen especificada desde la papelera. - Utiliza el script "deleteTrashImage.py", que recibe el nombre de la imagen (con extensión y subdirectorio correspondiente a la OU, si aplica). + description: | + Este endpoint elimina permanentemente la imagen especificada, desde la papelera. + Utiliza el script "**deleteTrashImage.py**", que recibe el nombre de la imagen (con extensión y subdirectorio correspondiente a la OU, si aplica), que a su vez llama al script "**updateTrashInfo.py**", para actualizar la información de la papelera. tags: - "Eliminar y Recuperar Imágenes" parameters: @@ -685,7 +696,7 @@ paths: in: path required: true type: string - description: "El ID de la imagen (corresponde al hash MD5 'fullsum' de la imagen en la papelera)" + description: "Identificador de la imagen (correspondiente al contenido del archivo 'full.sum')" responses: "200": description: "La imagen se eliminó exitosamente." @@ -732,6 +743,621 @@ paths: type: string example: "(Exception description)" +# ----------------------------------------------------------------------------------------------------------- +# Apartado "Transferencia de Imágenes (UDPcast)" +# ----------------------------------------------------------------------------------------------------------- + + /ogrepository/v1/udpcast: + post: + summary: "Enviar una Imagen mediante UDPcast" + description: | + Este endpoint envía la imagen especificada a través de UDPcast, utilizando el script "**sendFileMcast.py**". + Recibe la imagen y los parámetros de configuración de transferencia, que son usados para construir la cadena de parámetros que se envía al script. + + **NOTA**: Este endpoint es asíncrono, ya que puede tardar mucho tiempo, por lo que solo informa de que la imagen se está enviando, y abre un proceso paralelo, que avisará a ogCore cuando finalice la tarea (llamando a un endpoint de ogCore). + tags: + - "Transferencia de Imágenes (UDPcast)" + parameters: + - name: JSON + in: body + required: true + description: | + * **ID_img** - Identificador de la imagen, correspondiente al contenido del archivo 'full.sum' + * **port** - Puerto Multicast + * **method** - Modalidad half-duplex o full-duplex + * **ip** - IP Multicast + * **bitrate** - Velocidad de transmisión, en Mbps + * **nclients** - Número minimo de clientes + * **maxtime** - Tiempo máximo de espera + schema: + type: object + properties: + ID_img: + type: string + example: "22735b9070e4a8043371b8c6ae52b90d" + port: + type: string + description: "Puerto Multicast a utilizar para la transmisión" + example: "9000" + method: + type: string + description: "Modalidad de transmisión (puede ser 'half' o 'full' para half-duplex o full-duplex)" + example: "full" + ip: + type: string + description: "IP Multicast a la que se enviará la imagen" + example: "239.194.17.2" + bitrate: + type: string + description: "Velocidad de transmisión en Mbps" + example: "70M" + nclients: + type: integer + description: "Número mínimo de clientes" + example: 20 + maxtime: + type: integer + description: "Tiempo máximo de espera en segundos" + example: 120 + responses: + "200": + description: "La imagen se está enviando mediante UDPcast." + schema: + type: object + properties: + success: + type: boolean + example: true + output: + type: string + example: "Sending image.." + "400": + description: "No se ha encontrado la imagen especificada." + schema: + type: object + properties: + success: + type: boolean + example: false + error: + type: string + example: "Image not found" + "500 (Error)": + description: "Error al enviar la imagen mediante UDPcast." + schema: + type: object + properties: + success: + type: boolean + example: false + error: + type: string + example: "Image send failed" + "500 (Exception)": + description: "Excepción inesperada al enviar la imagen mediante UDPcast." + schema: + type: object + properties: + success: + type: boolean + example: false + exception: + type: string + example: "(Exception description)" + +# ----------------------------------------------------------------------------------------------------------- + + #/ogrepository/v1/udpcast: + get: + summary: "Ver Estado de Transmisiones UDPcast" + description: | + Este endpoint devuelve información sobre los procesos activos de "**udp-sender**" en formato JSON, permitiendo comprobar las transferencias UDPcast activas. + Utiliza el script "**getUDPcastInfo.py**" para obtener esta información. + tags: + - "Transferencia de Imágenes (UDPcast)" + responses: + "200": + description: "La información de las transmisiones UDPcast activas se obtuvo exitosamente." + schema: + type: object + properties: + success: + type: boolean + example: true + output: + type: object + additionalProperties: + type: object + properties: + image_id: + type: string + example: "22735b9070e4a8043371b8c6ae52b90d" + image_name: + type: string + example: "Ubuntu20.img" + "400": + description: "No se han encontrado transmisiones UDPcast activas." + schema: + type: object + properties: + success: + type: boolean + example: false + exception: + type: string + example: "No UDPCast active transmissions" + "500 (Error)": + description: "Error al comprobar las transmisiones UDPcast activas." + schema: + type: object + properties: + success: + type: boolean + example: false + error: + type: string + example: "(Error description)" + "500 (Exception)": + description: "Excepción inesperada al comprobar las transmisiones UDPcast activas." + schema: + type: object + properties: + success: + type: boolean + example: false + exception: + type: string + example: "(Exception description)" + +# ----------------------------------------------------------------------------------------------------------- + + /ogrepository/v1/udpcast/images/{imageId}: + delete: + summary: "Cancelar Transmisión UDPcast" + description: | + Este endpoint cancela la transmisión UDPcast activa de la imagen especificada, deteniendo el proceso "**udp-sender**" asociado. + Utiliza el script "**stopUDPcast.py**" para finalizar la transmisión. + tags: + - "Transferencia de Imágenes (UDPcast)" + parameters: + - name: imageId + in: path + required: true + type: string + description: "Identificador de la imagen (correspondiente al contenido del archivo 'full.sum')" + responses: + "200": + description: "La transmisión UDPcast se ha cancelado exitosamente." + schema: + type: object + properties: + success: + type: boolean + example: true + output: + type: string + example: "Image transmission canceled successfully" + "400 (Image not found)": + description: "No se ha encontrado la imagen especificada." + schema: + type: object + properties: + success: + type: boolean + example: false + exception: + type: string + example: "Image not found" + "400 (No transmissions for image)": + description: "No hay transmisiones UDPcast activas para la imagen especificada." + schema: + type: object + properties: + success: + type: boolean + example: false + exception: + type: string + example: "No UDPCast active transmissions for specified image" + "500 (Error)": + description: "Error al cancelar la transmisión UDPcast." + schema: + type: object + properties: + success: + type: boolean + example: false + error: + type: string + example: "(Error description)" + "500 (Check Exception)": + description: "Error al verificar las transmisiones UDPcast activas." + schema: + type: object + properties: + success: + type: boolean + example: false + exception: + type: string + example: "Unexpected error checking UDPcast transmissions" + "500 (Finalize Exception)": + description: "Error inesperado al finalizar la transmisión UDPcast." + schema: + type: object + properties: + success: + type: boolean + example: false + exception: + type: string + example: "Unexpected error finalizing UDPcast transmission" + "500 (General Exception)": + description: "Excepción inesperada al cancelar la transmisión UDPcast." + schema: + type: object + properties: + success: + type: boolean + example: false + exception: + type: string + example: "(Exception description)" + +# ----------------------------------------------------------------------------------------------------------- +# Apartado "Transferencia de Imágenes (UFTP)" +# ----------------------------------------------------------------------------------------------------------- + + /ogrepository/v1/uftp: + post: + summary: "Enviar una Imagen mediante UFTP" + description: | + Este endpoint envía una imagen especificada a través de UFTP, utilizando el script "**sendFileUFTP.py**". + Requiere que los clientes ogLive estén previamente en escucha con un daemon "UFTPD", ejecutando el script "**listenUFTPD.py**". + Recibe la imagen y los parámetros de configuración de transferencia, que son usados para construir la cadena de parámetros que se envía al script. + + **NOTA**: Este endpoint es asíncrono, ya que puede tardar mucho tiempo, por lo que solo informa de que la imagen se está enviando, + y abre un proceso paralelo, que avisará a ogCore cuando finalice la tarea (llamando a un endpoint de ogCore). + tags: + - "Transferencia de Imágenes (UFTP)" + parameters: + - name: JSON + in: body + required: true + description: | + * **ID_img** - Identificador de la imagen, correspondiente al contenido del archivo 'full.sum' + * **port** - Puerto Multicast + * **ip** - IP Unicast/Multicast), + * **bitrate** - Velocidad de transmisión, con 'K' para Kbps, 'M' para Mbps o 'G' para Gbps + schema: + type: object + properties: + ID_img: + type: string + example: "22735b9070e4a8043371b8c6ae52b90d" + port: + type: string + description: "Puerto para la transmisión UFTP" + example: "9000" + ip: + type: string + description: "IP Unicast o Multicast para la transmisión" + example: "239.194.17.2" + bitrate: + type: string + description: "Velocidad de transmisión (con 'K' para Kbps, 'M' para Mbps, o 'G' para Gbps)" + example: "1G" + responses: + "200": + description: "La imagen se está enviando mediante UFTP." + schema: + type: object + properties: + success: + type: boolean + example: true + output: + type: string + example: "Sending image..." + "400": + description: "No se ha encontrado la imagen especificada." + schema: + type: object + properties: + success: + type: boolean + example: false + error: + type: string + example: "Image not found" + "500 (Error)": + description: "Error al enviar la imagen mediante UFTP." + schema: + type: object + properties: + success: + type: boolean + example: false + error: + type: string + example: "Image send failed" + "500 (Exception)": + description: "Excepción inesperada al enviar la imagen mediante UFTP." + schema: + type: object + properties: + success: + type: boolean + example: false + exception: + type: string + example: "(Exception description)" + +# ----------------------------------------------------------------------------------------------------------- + + #/ogrepository/v1/uftp: + get: + summary: "Ver Estado de Transmisiones UFTP" + description: | + Este endpoint devuelve información sobre los procesos activos de "**uftp**" en formato JSON, permitiendo comprobar las transferencias UFTP activas. + Utiliza el script "**getUFTPInfo.py**" para obtener esta información. + tags: + - "Transferencia de Imágenes (UFTP)" + responses: + "200": + description: "La información de las transmisiones UFTP activas se obtuvo exitosamente." + schema: + type: object + properties: + success: + type: boolean + example: true + output: + type: object + additionalProperties: + type: object + properties: + image_id: + type: string + example: "22735b9070e4a8043371b8c6ae52b90d" + image_name: + type: string + example: "Ubuntu20.img" + "400": + description: "No se han encontrado transmisiones UFTP activas." + schema: + type: object + properties: + success: + type: boolean + example: false + exception: + type: string + example: "No UFTP active transmissions" + "500 (Error)": + description: "Error al comprobar las transmisiones UFTP activas." + schema: + type: object + properties: + success: + type: boolean + example: false + error: + type: string + example: "(Error description)" + "500 (Exception)": + description: "Excepción inesperada al comprobar las transmisiones UFTP activas." + schema: + type: object + properties: + success: + type: boolean + example: false + exception: + type: string + example: "(Exception description)" + +# ----------------------------------------------------------------------------------------------------------- + + /ogrepository/v1/uftp/images/{imageId}: + delete: + summary: "Cancelar Transmisión UFTP" + description: | + Este endpoint cancela la transmisión UFTP activa de una imagen especificada, deteniendo el proceso "**uftp**" asociado. + Utiliza el script "**stopUFTP.py**" para finalizar la transmisión. + tags: + - "Transferencia de Imágenes (UFTP)" + parameters: + - name: imageId + in: path + required: true + type: string + description: "Identificador de la imagen (correspondiente al contenido del archivo 'full.sum')" + responses: + "200": + description: "La transmisión UFTP se ha cancelado exitosamente." + schema: + type: object + properties: + success: + type: boolean + example: true + output: + type: string + example: "Image transmission canceled successfully" + "400 (Image not found)": + description: "No se ha encontrado la imagen especificada." + schema: + type: object + properties: + success: + type: boolean + example: false + exception: + type: string + example: "Image not found" + "400 (No transmissions for image)": + description: "No hay transmisiones UFTP activas para la imagen especificada." + schema: + type: object + properties: + success: + type: boolean + example: false + exception: + type: string + example: "No UFTP active transmissions for specified image" + "500 (Error)": + description: "Error al cancelar la transmisión UFTP." + schema: + type: object + properties: + success: + type: boolean + example: false + error: + type: string + example: "(Error description)" + "500 (Check Exception)": + description: "Error al verificar las transmisiones UFTP activas." + schema: + type: object + properties: + success: + type: boolean + example: false + exception: + type: string + example: "Unexpected error checking UFTP transmissions" + "500 (Finalize Exception)": + description: "Error inesperado al finalizar la transmisión UFTP." + schema: + type: object + properties: + success: + type: boolean + example: false + exception: + type: string + example: "Unexpected error finalizing UFTP transmission" + "500 (General Exception)": + description: "Excepción inesperada al cancelar la transmisión UFTP." + schema: + type: object + properties: + success: + type: boolean + example: false + exception: + type: string + example: "(Exception description)" + +# ----------------------------------------------------------------------------------------------------------- +# Apartado "Transferencia de Imágenes (P2P)" +# ----------------------------------------------------------------------------------------------------------- + + /ogrepository/v1/p2p: + post: + summary: "Enviar una Imagen mediante P2P" + description: | + Este endpoint inicia el tracker y el seeder de torrents para enviar una imagen especificada mediante P2P. + Utiliza los scripts "**runTorrentTracker.py**" y "**runTorrentSeeder.py**" para iniciar el tracker y el seeder en el directorio de la imagen. + + **NOTA**: Este endpoint es asíncrono, ya que puede tardar mucho tiempo, por lo que solo informa de que la imagen se está enviando, y abre un proceso paralelo, que avisará a ogCore cuando finalice la tarea (llamando a un endpoint de ogCore). + tags: + - "Transferencia de Imágenes (P2P)" + parameters: + - name: JSON + in: body + required: true + description: | + * **ID_img** - Identificador de la imagen, correspondiente al contenido del archivo 'full.sum' + schema: + type: object + properties: + ID_img: + type: string + example: "22735b9070e4a8043371b8c6ae52b90d" + responses: + "200": + description: "La imagen se está enviando mediante P2P." + schema: + type: object + properties: + success: + type: boolean + example: true + output: + type: string + example: "Tracker and Seeder serving image correctly" + "400": + description: "No se ha encontrado la imagen especificada." + schema: + type: object + properties: + success: + type: boolean + example: false + error: + type: string + example: "Image not found" + "500": + description: "Error al enviar la imagen mediante P2P." + schema: + type: object + properties: + success: + type: boolean + example: false + error: + type: string + example: "Tracker or Seeder (or both) not running" + +# ----------------------------------------------------------------------------------------------------------- + + #/ogrepository/v1/p2p: + delete: + summary: "Cancelar Transmisiones P2P" + description: | + Este endpoint cancela todas las transmisiones P2P activas, finalizando los procesos "**bttrack**" (tracker) y "**btlaunchmany.bittornado**" (seeder). + Utiliza el script "**stopP2P.py**" para detener las transmisiones P2P activas en el servidor. + tags: + - "Transferencia de Imágenes (P2P)" + responses: + "200": + description: "Las transmisiones P2P se han cancelado exitosamente." + schema: + type: object + properties: + success: + type: boolean + example: true + output: + type: string + example: "P2P transmissions canceled successfully" + "500 (Error)": + description: "Error al cancelar las transmisiones P2P." + schema: + type: object + properties: + success: + type: boolean + example: false + error: + type: string + example: "(Error description)" + "500 (Exception)": + description: "Excepción inesperada al cancelar las transmisiones P2P." + schema: + type: object + properties: + success: + type: boolean + example: false + exception: + type: string + example: "(Exception description)" + # ----------------------------------------------------------------------------------------------------------- # Apartado "Importar y Exportar Imágenes" # ----------------------------------------------------------------------------------------------------------- @@ -739,19 +1365,23 @@ paths: /ogrepository/v1/repo/images: post: summary: "Importar una Imagen" - description: > + description: | Este endpoint importa la imagen especificada desde un servidor remoto al servidor local. - Utiliza el script "importImage.py", que recibe como parámetros el nombre de la imagen, la IP o hostname del servidor remoto, - el usuario para la conexión, y el subdirectorio correspondiente a la OU (si aplica). - NOTA: Este endpoint es asíncrono, ya que puede tardar mucho tiempo, por lo que solo informa de que la imagen se está importando, - y abre un proceso paralelo, que avisará a ogCore cuando finalice la tarea (llamando a un endpoint de ogCore). + Utiliza el script "**importImage.py**", que recibe como parámetros el nombre de la imagen, la IP o hostname del servidor remoto, el usuario para la conexión, y el subdirectorio correspondiente a la OU (si aplica), + que a su vez llama al script "**updateRepoInfo.py**", para actualizar la información del repositorio. + + **NOTA**: Este endpoint es asíncrono, ya que puede tardar mucho tiempo, por lo que solo informa de que la imagen se está importando, y abre un proceso paralelo, que avisará a ogCore cuando finalice la tarea (llamando a un endpoint de ogCore). tags: - "Importar y Exportar Imágenes" parameters: - - name: image + - name: JSON in: body required: true - description: "Nombre de la imagen (con extensión)" + description: | + * **image** - Nombre de la imagen, con extensión + * **ou_subdir** - Subdirectorio correspondiente a la OU, o 'none' si no procede + * **repo_ip** - Dirección IP del servidor remoto + * **user** - Usuario con el que conectar al servidor remoto schema: type: object properties: @@ -854,19 +1484,23 @@ paths: #/ogrepository/v1/repo/images: put: summary: "Exportar una Imagen" - description: > + description: | Este endpoint exporta la imagen especificada desde el servidor local a un servidor remoto. - Utiliza el script "exportImage.py", que recibe como parámetros el nombre de la imagen, la IP o hostname del servidor remoto, - el usuario para la conexión, y el subdirectorio correspondiente a la OU (si aplica). - NOTA: Este endpoint es asíncrono, ya que puede tardar mucho tiempo, por lo que solo informa de que la imagen se está exportando, - y abre un proceso paralelo, que avisará a ogCore cuando finalice la tarea (llamando a un endpoint de ogCore). + Utiliza el script "**exportImage.py**", que recibe como parámetros el nombre de la imagen, la IP o hostname del servidor remoto, el usuario para la conexión, y el subdirectorio correspondiente a la OU (si aplica). + + Una vez que acabe, debe llamarse al endpoint "**Actualizar Información del Repositorio**" en el ogRepository destino de la exportación, para actualizar la información del repositorio. + + **NOTA**: Este endpoint es asíncrono, ya que puede tardar mucho tiempo, por lo que solo informa de que la imagen se está exportando, y abre un proceso paralelo, que avisará a ogCore cuando finalice la tarea (llamando a un endpoint de ogCore). tags: - "Importar y Exportar Imágenes" parameters: - - name: ID_img + - name: JSON in: body required: true - description: "Identificador de la imagen (correspondiente al contenido del archivo 'full.sum' asociado)" + description: | + * **ID_img** - Identificador de la imagen, correspondiente al contenido del archivo 'full.sum' + * **repo_ip** - Dirección IP del servidor remoto + * **user** - Usuario con el que conectar al servidor remoto schema: type: object properties: @@ -978,18 +1612,22 @@ paths: /ogrepository/v1/images/torrentsum: post: summary: "Crear archivos auxiliares" - description: > - Este endpoint crea los archivos ".size", ".sum", ".full.sum" y ".torrent" para la imagen especificada. - Utiliza el script "createTorrentSum.py", que recibe como parámetro el nombre de la imagen (con subdirectorio de OU, si aplica). - NOTA: Este endpoint es asíncrono, ya que puede tardar cierto tiempo, por lo que solo informa de que se están creando los archivos auxiliares, - y abre un proceso paralelo, que avisará a ogCore cuando finalice la tarea (llamando a un endpoint de ogCore). + description: | + Este endpoint crea los archivos "**size**", "**sum**", "**full.sum**" y "**torrent**" para la imagen especificada. + Utiliza el script "**createTorrentSum.py**", que recibe como parámetro el nombre de la imagen (con subdirectorio de OU, si aplica), que a su vez llama al script "**updateRepoInfo.py**, para actualizar la información del repositorio". + + Debe ser llamado cada vez que se cree una imagen desde un ogLive, y cada vez que se llame al endpoint "**Exportar una Imagen**" (en este último caso, debe ejecutarse en el ogRepository destino de la exportación). + + **NOTA**: Este endpoint es asíncrono, ya que puede tardar cierto tiempo, por lo que solo informa de que se están creando los archivos auxiliares, y abre un proceso paralelo, que avisará a ogCore cuando finalice la tarea (llamando a un endpoint de ogCore). tags: - "Varios" parameters: - - name: image + - name: JSON in: body required: true - description: "Nombre de la imagen (con extensión)" + description: | + * **image** - Nombre de la imagen, con extensión + * **ou_subdir** - Subdirectorio correspondiente a la OU, o 'none' si no procede schema: type: object properties: @@ -1062,16 +1700,18 @@ paths: /ogrepository/v1/wol: post: summary: "Enviar paquete Wake On Lan" - description: > - Este endpoint envía un paquete mágico Wake On Lan (WOL) a la dirección MAC especificada, a través de la IP de broadcast especificada. - Utiliza el script "sendWakeOnLan.py", que recibe como parámetros la IP de broadcast y la dirección MAC del equipo a encender. + description: | + Este endpoint envía un paquete mágico Wake On Lan (**WOL**) a la dirección MAC especificada, a través de la IP de broadcast especificada. + Utiliza el script "**sendWakeOnLan.py**", que recibe como parámetros la IP de broadcast y la dirección MAC del equipo a encender. tags: - "Varios" parameters: - - name: broadcast_ip + - name: JSON in: body required: true - description: "IP de broadcast a la que se enviará el paquete WOL" + description: | + * **broadcast_ip** - IP de broadcast a la que se enviará el paquete WOL, que puede ser '255.255.255.255' o la IP de broadcast de una subred + * **mac** - Dirección MAC del equipo que se desea encender via Wake On Lan schema: type: object properties: @@ -1080,7 +1720,6 @@ paths: example: "255.255.255.255" mac: type: string - description: "Dirección MAC del equipo a encender" example: "00:19:99:5c:bb:bb" responses: "200": @@ -1118,603 +1757,3 @@ paths: example: "(Exception description)" # ----------------------------------------------------------------------------------------------------------- -# Apartado "Transferencia de Imágenes" -# ----------------------------------------------------------------------------------------------------------- - - /ogrepository/v1/udpcast: - post: - summary: "Enviar una Imagen mediante UDPcast" - description: > - Este endpoint envía una imagen especificada a través de UDPcast utilizando el script "sendFileMcast.py". - Recibe la imagen y los parámetros de configuración de transferencia, que son usados para construir la cadena de parámetros que se envía al script. - NOTA: Este endpoint es asíncrono, ya que puede tardar mucho tiempo, por lo que solo informa de que la imagen se está enviando, - y abre un proceso paralelo, que avisará a ogCore cuando finalice la tarea (llamando a un endpoint de ogCore). - tags: - - "Transferencia de Imágenes" - parameters: - - name: ID_img - in: body - required: true - description: "Identificador de la imagen (correspondiente al contenido del archivo 'full.sum' asociado)" - schema: - type: object - properties: - ID_img: - type: string - example: "image_id" - port: - type: string - description: "Puerto Multicast a utilizar para la transmisión" - example: "9000" - method: - type: string - description: "Modalidad de transmisión (puede ser 'half' o 'full' para half-duplex o full-duplex)" - example: "full" - ip: - type: string - description: "IP Multicast a la que se enviará la imagen" - example: "239.194.17.2" - bitrate: - type: string - description: "Velocidad de transmisión en Mbps" - example: "70M" - nclients: - type: integer - description: "Número mínimo de clientes" - example: 20 - maxtime: - type: integer - description: "Tiempo máximo de espera en segundos" - example: 120 - responses: - "200": - description: "La imagen se está enviando mediante UDPcast." - schema: - type: object - properties: - success: - type: boolean - example: true - output: - type: string - example: "Sending image.." - "400": - description: "No se ha encontrado la imagen especificada." - schema: - type: object - properties: - success: - type: boolean - example: false - error: - type: string - example: "Image not found" - "500 (Error)": - description: "Error al enviar la imagen mediante UDPcast." - schema: - type: object - properties: - success: - type: boolean - example: false - error: - type: string - example: "Image send failed" - "500 (Exception)": - description: "Excepción inesperada al enviar la imagen mediante UDPcast." - schema: - type: object - properties: - success: - type: boolean - example: false - exception: - type: string - example: "(Exception description)" - -# ----------------------------------------------------------------------------------------------------------- - - #/ogrepository/v1/udpcast: - get: - summary: "Ver Estado de Transmisiones UDPcast" - description: > - Este endpoint devuelve información sobre los procesos activos de "udp-sender" en formato JSON, - permitiendo comprobar las transferencias UDPcast activas. Utiliza el script "getUDPcastInfo.py" para obtener esta información. - tags: - - "Transferencia de Imágenes" - responses: - "200": - description: "La información de las transmisiones UDPcast activas se obtuvo exitosamente." - schema: - type: object - properties: - success: - type: boolean - example: true - output: - type: object - additionalProperties: - type: object - properties: - image_id: - type: string - example: "22735b9070e4a8043371b8c6ae52b90d" - image_name: - type: string - example: "Ubuntu20.img" - "400": - description: "No se han encontrado transmisiones UDPcast activas." - schema: - type: object - properties: - success: - type: boolean - example: false - exception: - type: string - example: "No UDPCast active transmissions" - "500 (Error)": - description: "Error al comprobar las transmisiones UDPcast activas." - schema: - type: object - properties: - success: - type: boolean - example: false - error: - type: string - example: "(Error description)" - "500 (Exception)": - description: "Excepción inesperada al comprobar las transmisiones UDPcast activas." - schema: - type: object - properties: - success: - type: boolean - example: false - exception: - type: string - example: "(Exception description)" - -# ----------------------------------------------------------------------------------------------------------- - - /ogrepository/v1/uftp: - post: - summary: "Enviar una Imagen mediante UFTP" - description: > - Este endpoint envía una imagen especificada a través de UFTP, utilizando el script "sendFileUFTP.py". - Requiere que los clientes ogLive estén previamente en escucha con un daemon "UFTPD" ejecutando el script "listenUFTPD.py". - Recibe la imagen y los parámetros de configuración de transferencia, que son usados para construir la cadena de parámetros que se envía al script. - NOTA: Este endpoint es asíncrono, ya que puede tardar mucho tiempo, por lo que solo informa de que la imagen se está enviando, - y abre un proceso paralelo, que avisará a ogCore cuando finalice la tarea (llamando a un endpoint de ogCore). - tags: - - "Transferencia de Imágenes" - parameters: - - name: ID_img - in: body - required: true - description: "Identificador de la imagen (correspondiente al contenido del archivo 'full.sum' asociado)" - schema: - type: object - properties: - ID_img: - type: string - example: "image_id" - port: - type: string - description: "Puerto para la transmisión UFTP" - example: "9000" - ip: - type: string - description: "IP Unicast o Multicast para la transmisión" - example: "239.194.17.2" - bitrate: - type: string - description: "Velocidad de transmisión (con 'K' para Kbps, 'M' para Mbps, o 'G' para Gbps)" - example: "1G" - responses: - "200": - description: "La imagen se está enviando mediante UFTP." - schema: - type: object - properties: - success: - type: boolean - example: true - output: - type: string - example: "Sending image..." - "400": - description: "No se ha encontrado la imagen especificada." - schema: - type: object - properties: - success: - type: boolean - example: false - error: - type: string - example: "Image not found" - "500 (Error)": - description: "Error al enviar la imagen mediante UFTP." - schema: - type: object - properties: - success: - type: boolean - example: false - error: - type: string - example: "Image send failed" - "500 (Exception)": - description: "Excepción inesperada al enviar la imagen mediante UFTP." - schema: - type: object - properties: - success: - type: boolean - example: false - exception: - type: string - example: "(Exception description)" - -# ----------------------------------------------------------------------------------------------------------- - - #/ogrepository/v1/uftp: - get: - summary: "Ver Estado de Transmisiones UFTP" - description: > - Este endpoint devuelve información sobre los procesos activos de "uftp" en formato JSON, - permitiendo comprobar las transferencias UFTP activas. Utiliza el script "getUFTPInfo.py" para obtener esta información. - tags: - - "Transferencia de Imágenes" - responses: - "200": - description: "La información de las transmisiones UFTP activas se obtuvo exitosamente." - schema: - type: object - properties: - success: - type: boolean - example: true - output: - type: object - additionalProperties: - type: object - properties: - image_id: - type: string - example: "22735b9070e4a8043371b8c6ae52b90d" - image_name: - type: string - example: "Ubuntu20.img" - "400": - description: "No se han encontrado transmisiones UFTP activas." - schema: - type: object - properties: - success: - type: boolean - example: false - exception: - type: string - example: "No UFTP active transmissions" - "500 (Error)": - description: "Error al comprobar las transmisiones UFTP activas." - schema: - type: object - properties: - success: - type: boolean - example: false - error: - type: string - example: "(Error description)" - "500 (Exception)": - description: "Excepción inesperada al comprobar las transmisiones UFTP activas." - schema: - type: object - properties: - success: - type: boolean - example: false - exception: - type: string - example: "(Exception description)" - -# ----------------------------------------------------------------------------------------------------------- - - /ogrepository/v1/p2p: - post: - summary: "Enviar una Imagen mediante P2P" - description: > - Este endpoint inicia el tracker y el seeder de torrents para enviar una imagen especificada mediante P2P. - Utiliza los scripts "runTorrentTracker.py" y "runTorrentSeeder.py" para iniciar el tracker y el seeder en el directorio de la imagen. - NOTA: Este endpoint es asíncrono, ya que puede tardar mucho tiempo, por lo que solo informa de que la imagen se está enviando, - y abre un proceso paralelo, que avisará a ogCore cuando finalice la tarea (llamando a un endpoint de ogCore). - tags: - - "Transferencia de Imágenes" - parameters: - - name: ID_img - in: body - required: true - description: "Identificador de la imagen (correspondiente al contenido del archivo 'full.sum' asociado)" - schema: - type: object - properties: - ID_img: - type: string - example: "image_id" - responses: - "200": - description: "La imagen se está enviando mediante P2P." - schema: - type: object - properties: - success: - type: boolean - example: true - output: - type: string - example: "Tracker and Seeder serving image correctly" - "400": - description: "No se ha encontrado la imagen especificada." - schema: - type: object - properties: - success: - type: boolean - example: false - error: - type: string - example: "Image not found" - "500": - description: "Error al enviar la imagen mediante P2P." - schema: - type: object - properties: - success: - type: boolean - example: false - error: - type: string - example: "Tracker or Seeder (or both) not running" - -# ----------------------------------------------------------------------------------------------------------- - - #/ogrepository/v1/p2p: - delete: - summary: "Cancelar Transmisiones P2P" - description: > - Este endpoint cancela todas las transmisiones P2P activas, finalizando los procesos "bttrack" (tracker) y "btlaunchmany.bittornado" (seeder). - Utiliza el script "stopP2P.py" para detener las transmisiones P2P activas en el servidor. - tags: - - "Transferencia de Imágenes" - responses: - "200": - description: "Las transmisiones P2P se han cancelado exitosamente." - schema: - type: object - properties: - success: - type: boolean - example: true - output: - type: string - example: "P2P transmissions canceled successfully" - "500 (Error)": - description: "Error al cancelar las transmisiones P2P." - schema: - type: object - properties: - success: - type: boolean - example: false - error: - type: string - example: "(Error description)" - "500 (Exception)": - description: "Excepción inesperada al cancelar las transmisiones P2P." - schema: - type: object - properties: - success: - type: boolean - example: false - exception: - type: string - example: "(Exception description)" - -# ----------------------------------------------------------------------------------------------------------- - - /ogrepository/v1/udpcast/images/{ID_img}: - delete: - summary: "Cancelar Transmisión UDPcast" - description: > - Este endpoint cancela la transmisión UDPcast activa de una imagen especificada, deteniendo el proceso "udp-sender" asociado. - Utiliza el script "stopUDPcast.py" para finalizar la transmisión. - tags: - - "Transferencia de Imágenes" - parameters: - - name: ID_img - in: path - required: true - type: string - description: "Identificador de la imagen (correspondiente al contenido del archivo 'full.sum' asociado)" - example: "image_id" - responses: - "200": - description: "La transmisión UDPcast se ha cancelado exitosamente." - schema: - type: object - properties: - success: - type: boolean - example: true - output: - type: string - example: "Image transmission canceled successfully" - "400 (Image not found)": - description: "No se ha encontrado la imagen especificada." - schema: - type: object - properties: - success: - type: boolean - example: false - exception: - type: string - example: "Image not found" - "400 (No transmissions for image)": - description: "No hay transmisiones UDPcast activas para la imagen especificada." - schema: - type: object - properties: - success: - type: boolean - example: false - exception: - type: string - example: "No UDPCast active transmissions for specified image" - "500 (Error)": - description: "Error al cancelar la transmisión UDPcast." - schema: - type: object - properties: - success: - type: boolean - example: false - error: - type: string - example: "(Error description)" - "500 (Check Exception)": - description: "Error al verificar las transmisiones UDPcast activas." - schema: - type: object - properties: - success: - type: boolean - example: false - exception: - type: string - example: "Unexpected error checking UDPcast transmissions" - "500 (Finalize Exception)": - description: "Error inesperado al finalizar la transmisión UDPcast." - schema: - type: object - properties: - success: - type: boolean - example: false - exception: - type: string - example: "Unexpected error finalizing UDPcast transmission" - "500 (General Exception)": - description: "Excepción inesperada al cancelar la transmisión UDPcast." - schema: - type: object - properties: - success: - type: boolean - example: false - exception: - type: string - example: "(Exception description)" - -# ----------------------------------------------------------------------------------------------------------- - - /ogrepository/v1/uftp/images/{ID_img}: - delete: - summary: "Cancelar Transmisión UFTP" - description: > - Este endpoint cancela la transmisión UFTP activa de una imagen especificada, deteniendo el proceso "uftp" asociado. - Utiliza el script "stopUFTP.py" para finalizar la transmisión. - tags: - - "Transferencia de Imágenes" - parameters: - - name: ID_img - in: path - required: true - type: string - description: "Identificador de la imagen (correspondiente al contenido del archivo 'full.sum' asociado)" - example: "image_id" - responses: - "200": - description: "La transmisión UFTP se ha cancelado exitosamente." - schema: - type: object - properties: - success: - type: boolean - example: true - output: - type: string - example: "Image transmission canceled successfully" - "400 (Image not found)": - description: "No se ha encontrado la imagen especificada." - schema: - type: object - properties: - success: - type: boolean - example: false - exception: - type: string - example: "Image not found" - "400 (No transmissions for image)": - description: "No hay transmisiones UFTP activas para la imagen especificada." - schema: - type: object - properties: - success: - type: boolean - example: false - exception: - type: string - example: "No UFTP active transmissions for specified image" - "500 (Error)": - description: "Error al cancelar la transmisión UFTP." - schema: - type: object - properties: - success: - type: boolean - example: false - error: - type: string - example: "(Error description)" - "500 (Check Exception)": - description: "Error al verificar las transmisiones UFTP activas." - schema: - type: object - properties: - success: - type: boolean - example: false - exception: - type: string - example: "Unexpected error checking UFTP transmissions" - "500 (Finalize Exception)": - description: "Error inesperado al finalizar la transmisión UFTP." - schema: - type: object - properties: - success: - type: boolean - example: false - exception: - type: string - example: "Unexpected error finalizing UFTP transmission" - "500 (General Exception)": - description: "Excepción inesperada al cancelar la transmisión UFTP." - schema: - type: object - properties: - success: - type: boolean - example: false - exception: - type: string - example: "(Exception description)" - -# -----------------------------------------------------------------------------------------------------------