Repositorio para seguimiento del desarrollo del componente OpenGnsys Repositorio de imágenes monolíticas y sincronizadas.
 
 
Go to file
Gerardo GIl Elizeire 73bf6b6098 refs #794 - Modify API Proposal 2024-10-03 13:32:13 +02:00
admin/Sources/Services refs #631 - Add getRepoInfo.py 2024-08-27 12:45:04 +02:00
bin refs #631 - Add 'getRepoStatus.py' and Modify API Proposal 2024-10-03 12:11:03 +02:00
etc refs #521 - Copy original files 2024-07-24 10:12:34 +02:00
LICENSE.en.txt refs #521 - Copy original files 2024-07-24 10:12:34 +02:00
README.md refs #794 - Modify API Proposal 2024-10-03 13:32:13 +02:00

README.md

ogRepository - OpenGnsys Repository Manager

Este repositorio GIT contiene la estructura de datos del repositorio de imágenes de OpenGnsys.

  • admin --- Archivos de configuración del repositorio.
  • bin ------ Scripts en Python 3 y binarios de gestión del repositorio.
  • etc ------ Ficheros y plantillas de configuración del repositorio.

API de ogRepository

La API de ogRepository proporciona una interfaz para facilitar la administración de las imágenes almacenadas en los repositorios de imágenes, permitiendo eliminarlas, enviarlas a clientes ogLive (con diferentes protocolos de transmisión), importarlas desde otros repositorios, etc.

El presente documento detalla los endpoints de la API, con sus respectivos parámetros de entrada, así como las acciones que llevan a cabo.


Tabla de Contenido:

  1. Obtener Información de Estado de ogRepository - GET /ogrepository/v1/status
  2. Obtener Información de todas las Imágenes - GET /ogrepository/v1/images
  3. Obtener Información de una Imagen concreta - GET /ogrepository/v1/images/{ID_img}
  4. Actualizar Información del Repositorio - PUT /ogrepository/v1/images
  5. Chequear integridad de Imagen - GET /ogrepository/v1/status/images/{ID_img}
  6. Eliminar una Imagen - DELETE /ogrepository/v1/images/{ID_img}
  7. Recuperar una Imagen - POST /ogrepository/v1/trash/images/{ID_img}
  8. Eliminar una Imagen de la Papelera - DELETE /ogrepository/v1/trash/images/{ID_img}
  9. Importar una Imagen - POST /ogrepository/v1/repo/{ID_repo}/images/{ID_img}
  10. Crear archivos auxiliares - POST /ogrepository/v1/images/torrentsum
  11. Enviar paquete Wake On Lan - POST /ogrepository/v1/wol
  12. Enviar una Imagen mediante UDPcast - POST /ogrepository/v1/udpcast/images/{ID_img}
  13. Enviar una Imagen mediante UFTP - POST /ogrepository/v1/uftp/images/{ID_img}
  14. Enviar una Imagen mediante P2P - POST /ogrepository/v1/p2p/images/{ID_img}
  15. Cancelar Transmisión UDPcast - DELETE /ogrepository/v1/udpcast/images/{ID_img}
  16. Cancelar Transmisiones P2P - DELETE /ogrepository/v1/p2p
  17. Ver Estado de Transmisiones Multicast-P2P -

Obtener Información de Estado de ogRepository

Se devolverá informacion de CPU, memoria RAM, disco duro y el estado de ciertos servicios y procesos de ogRepository, en formato JSON.
Se puede utilizar el script "getRepoStatus.py, que hemos programado recientemente.
NOTA: En los apartados "services" y "processes" he especificado los servicios y procesos que me han parecido interesantes, pero se puede añadir o eliminar los que se desee.

URL: /ogrepository/v1/status
Método HTTP: GET

Ejemplo de Solicitud:

curl -X GET -H "Authorization: $API_KEY" http://example.com/ogrepository/v1/status  

Respuestas:

  • Código 500 Internal Server Error: Ocurrió un error al consultar y/o devolver la información de estado.
  • Código 200 OK: La información de estado se obtuvo exitosamente.
    • Contenido: Información de estado en formato JSON.
      {
          "cpu": {
              "used_percentage": "35%"
          },
          "ram": {
              "total": "7.8GB",
              "used": "0.3GB",
              "available": "7.2GB",
              "used_percentage": "7%"
          },
          "disk": {
              "total": "11.7GB",
              "used": "7.7GB",
              "available": "3.4GB",
              "used_percentage": "69%"
          },
          "services": {
              "ssh": "active",
              "smbd": "active",
              "rsync": "active"
          },
          "processes": {
              "udp-sender": "stopped",
              "uftp": "stopped",
              "bttrack": "stopped",
              "btlaunchmany": "stopped"
          }
      }
      

Obtener Información de todas las Imágenes

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 hemos programado recientemente.
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 puede realizar en el controlador PHP.

URL: /ogrepository/v1/images
Método HTTP: GET

Ejemplo de Solicitud:

curl -X GET -H "Authorization: $API_KEY" http://example.com/ogrepository/v1/images  

Respuestas:

  • Código 500 Internal Server Error: Ocurrió un error al consultar y/o devolver la información de las imágenes.
  • Código 200 OK: La información de las imágenes se obtuvo exitosamente.
    • Contenido: Información de imágenes en formato JSON.
      {
        "REPOSITORY": {
          "directory": "/opt/opengnsys/images",
          "images": [
            {
              "name": "Ubuntu24",
              "type": "img",
              "clientname": "Ubuntu_24",
              "clonator": "partclone",
              "compressor": "lzop",
              "filesystem": "EXTFS",
              "datasize": 9859634200000,
              "size": 4505673214,
              "sum": "065a933c780ab1aaa044435ad5d4bf87",
              "fullsum": "33575b9070e4a8043371b8c6ae52b80e"
            },
            {
              "name": "Windows10",
              "type": "img",
              "clientname": "Windows_10",
              "clonator": "partclone",
              "compressor": "lzop",
              "filesystem": "NTFS",
              "datasize": 24222105600000,
              "size": 13198910185,
              "sum": "8874d5ab84314f44841c36c69bb5aa82",
              "fullsum": "9e7cd32c606ebe5bd39ba212ce7aeb02"
            }
          ],
          "ous": [
            {
              "subdir": "OU_subdir",
              "images": [
                {
                  "name": "Ubuntu20",
                  "type": "img",
                  "clientname": "Ubuntu_20",
                  "clonator": "partclone",
                  "compressor": "lzop",
                  "filesystem": "EXTFS",
                  "datasize": 8912896000000,
                  "size": 3803794535,
                  "sum": "081a933c780ab1aaa044435ad5d4bf56",
                  "fullsum": "22735b9070e4a8043371b8c6ae52b90d"
                }
              ]   
            }
          ]
        }
      },
        "TRASH": {
          "directory": "/opt/opengnsys/images_trash",
          "images": [],
          "ous": [
            {
              "subdir": "CentroVirtual",
              "images": [
                {
                  "name": "Ubuntu20OLD",
                  "type": "img",
                  "clientname": "Ubuntu_20",
                  "clonator": "partclone",
                  "compressor": "lzop",
                  "filesystem": "EXTFS",
                  "datasize": 8912896000000,
                  "size": 3803794535,
                  "sum": "081a933c780ab1aaa044435ad5d4bf56",
                  "fullsum": "22735b9070e4a8043371b8c6ae52b90d"
                }
              ]
            }
          ]
        }
      
      • name: Nombre de la imagen, sin extensión.
      • type: Extensión de la imagen.
      • clientname: Nombre asignado al modelo del que se ha obtenido la imagen.
      • clonator: Programa utilizado para la clonación.
      • compressor: Programa utilizado para la compresión.
      • filesystem: Sistema de archivos utilizado en la partición clonada.
      • datasize: Tamaño de la imagen una vez restaurada, en bytes (tamaño de los datos).
      • size: Tamaño del archivo de imagen, en bytes.
      • sum: Hash MD5 del último MB del archivo de imagen.
      • fullsum: Hash MD5 de todo el archivo de imagen.

Obtener Información de una Imagen concreta

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 hemos programado recientemente.
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. En principio, ogCore puede acceder a estos datos a partir del ID de la imagen (que hemos quedado que será el contenido del archivo "full.sum"), y la transformación de parámetros puede realizarse en el controlador PHP.

URL: /ogrepository/v1/images/{ID_img}
Método HTTP: GET

Ejemplo de Solicitud:

curl -X GET -H "Authorization: $API_KEY" http://example.com/ogrepository/v1/images/{ID_img}

Respuestas:

  • Código 500 Internal Server Error: Ocurrió un error al consultar y/o devolver la información de las imágenes.
  • Código 400 Bad Request: No se ha encontrado la imagen especificada.
  • Código 200 OK: La información de la imagen se obtuvo exitosamente.
    • Contenido: Información de la imagen en formato JSON.
      {
        "directory": "/opt/opengnsys/images",
        "images": [
          {
            "name": "Windows10",
            "type": "img",
            "clientname": "Windows_10",
            "clonator": "partclone",
            "compressor": "lzop",
            "filesystem": "NTFS",
            "datasize": 9859634200000,
            "size": 4505673214,
            "sum": "065a933c780ab1aaa044435ad5d4bf87",
            "fullsum": "33575b9070e4a8043371b8c6ae52b80e"
          }
        ]
      }
      
      • name: Nombre de la imagen, sin extensión.
      • type: Extensión de la imagen.
      • clientname: Nombre asignado al modelo del que se ha obtenido la imagen.
      • clonator: Programa utilizado para la clonación.
      • compressor: Programa utilizado para la compresión.
      • filesystem: Sistema de archivos utilizado en la partición clonada.
      • datasize: Tamaño de la imagen una vez restaurada, en bytes (tamaño de los datos).
      • size: Tamaño del archivo de imagen, en bytes.
      • sum: Hash MD5 del último MB del archivo de imagen.
      • fullsum: Hash MD5 de todo el archivo de imagen.

Actualizar Información del Repositorio

Se actualizará la información de las imágenes almacenadas en el repositorio, reflejándola en el archivo "/opt/opengnsys/etc/repoinfo.json".
Se puede hacer con el script "updateRepoInfo.py", que hemos programado recientemente (y que es similar al script bash original "checkrepo").
Este endpoint es llamado por el script "deleteImage.py" (para actualizar la información cada vez que se elimine una imagen), y creemos que también debe ser llamado por ogCore u ogLive cada vez que se haya creado una imagen.

URL: /ogrepository/v1/images
Método HTTP: PUT

Ejemplo de Solicitud:

curl -X PUT -H "Authorization: $API_KEY" http://example.com/ogrepository/v1/images

Respuestas:

  • Código 500 Internal Server Error: Ocurrió un error al actualizar la información de las imágenes.
  • Código 200 OK: La actualización se realizó exitosamente.

Chequear Integridad de Imagen

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. En principio, ogCore puede acceder a estos datos a partir del ID de la imagen (que hemos quedado que será el contenido del archivo "full.sum"), y la transformación de parámetros puede realizarse en el controlador PHP.

URL: /ogrepository/v1/status/images/{ID_img}
Método HTTP: GET

Ejemplo de Solicitud:

curl -X POST -H "Authorization: $API_KEY" http://example.com/ogrepository/v1/status/images/{ID_img}

Respuestas:

  • Código 500 Internal Server Error: Ocurrió un error al chequear la imagen.
  • Código 400 Bad Request: No se ha encontrado la imagen especificada.
  • Código 200 OK: La imagen se ha chequeado exitosamente.
  • Código 200 KO: La imagen se ha chequeado correctamente, pero no ha pasado el test.

Eliminar una Imagen

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 hemos programado recientemente (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). En principio, ogCore puede acceder a estos datos a partir del ID de la imagen (que hemos quedado que será el contenido del archivo "full.sum"), y la transformación de parámetros puede realizarse en el controlador PHP, pero en principio habrá que especificar el método de eliminación en un json (en la URL).

URL: /ogrepository/v1/images/{ID_img}
Método HTTP: DELETE

Cuerpo de la Solicitud (JSON):

  • method: Método de eliminación (puede ser "trash" o "permanent").

Ejemplo de Solicitud:

curl -X DELETE -H "Authorization: $API_KEY" -H "Content-Type: application/json" -d '{"method":"trash"}' http://example.com/ogrepository/v1/images/{ID_img}

Respuestas:

  • Código 500 Internal Server Error: Ocurrió un error al eliminar la imagen.
  • Código 400 Bad Request: No se ha encontrado la imagen especificada.
  • Código 200 OK: La imagen se eliminó exitosamente.

Recuperar una Imagen

Se recuperará la imagen especificada como parámetro, desde la papelera.
Se puede hacer con el script "recoverImage.py", que hemos programado recientemente, 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. En principio, ogCore puede acceder a estos datos a partir del ID de la imagen (que hemos quedado que será el contenido del archivo "full.sum"), y la transformación de parámetros puede realizarse en el controlador PHP.

URL: /ogrepository/v1/trash/images/{ID_img}
Método HTTP: POST

Ejemplo de Solicitud:

curl -X POST -H "Authorization: $API_KEY" http://example.com/ogrepository/v1/trash/images/{ID_img}

Respuestas:

  • Código 500 Internal Server Error: Ocurrió un error al recuperar la imagen.
  • Código 400 Bad Request: No se ha encontrado la imagen especificada.
  • Código 200 OK: La imagen se recuperó exitosamente.

Eliminar una Imagen de la Papelera

Se eliminará permanentemente la imagen especificada como parámetro, desde la papelera.
Se puede hacer con el script "deleteTrashImage.py", que hemos programado recientemente, 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. En principio, ogCore puede acceder a estos datos a partir del ID de la imagen (que hemos quedado que será el contenido del archivo "full.sum"), y la transformación de parámetros puede realizarse en el controlador PHP.

URL: /ogrepository/v1/trash/images/{ID_img}
Método HTTP: DELETE

Ejemplo de Solicitud:

curl -X DELETE -H "Authorization: $API_KEY" http://example.com/ogrepository/v1/trash/images/{ID_img}

Respuestas:

  • Código 500 Internal Server Error: Ocurrió un error al eliminar la imagen.
  • Código 400 Bad Request: No se ha encontrado la imagen especificada.
  • Código 200 OK: La imagen se eliminó exitosamente.

Importar una Imagen

Se importará una imagen de un repositorio remoto al repositorio local.
Se puede hacer con el script "importImage.py", que hemos programado recientemente.
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, la IP o hostname del repositorio remoto como segundo parámetro, y el usuario remoto como tercer parámetro. En principio, ogCore puede acceder a estos datos a partir del ID del repositorio y del ID de la imagen (que hemos quedado que será el contenido del archivo "full.sum"), y la transformación de parámetros puede realizarse en el controlador PHP, pero en principio habrá que especificar el usuario remoto en un json (en la URL).

URL: /ogrepository/v1/repo/{ID_repo}/images/{ID_img}
Método HTTP: POST

Cuerpo de la Solicitud (JSON):

  • user: Usuario con el que acceder al repositorio remoto.

Ejemplo de Solicitud:

curl -X POST -H "Authorization: $API_KEY" -H "Content-Type: application/json" -d '{"user":"user_name"}' http://example.com/ogrepository/v1/repo/{ID_repo}/images/{ID_img}

Respuestas:

  • Código 500 Internal Server Error: Ocurrió un error al importar la imagen.
  • Código 400 Bad Request: No se ha encontrado la imagen y/o el equipo remoto especificados.
  • Código 200 OK: La imagen se ha importado exitosamente.

Crear archivos auxiliares

Se crearán los archivos ".sum", ".full.sum", ".size" y ".torrent", para la imagen especificada como parámetro.
Se puede hacer con el script "createTorrentSum.py", que hemos programado recientemente.

URL: /ogrepository/v1/images/torrentsum
Método HTTP: POST

Cuerpo de la Solicitud (JSON):

  • image: Nombre de la imagen (con extensión).
  • ou_subdir: Subdirectorio correspondiente a la OU (o "none" si no es el caso).

Ejemplo de Solicitud:

curl -X POST -H "Authorization: $API_KEY" -H "Content-Type: application/json" -d '{"image":"Windows10.img", "ou_subdir":"none"}' http://example.com/ogrepository/v1/images/torrentsum

Respuestas:

  • Código 500 Internal Server Error: Ocurrió un error al crear los archivos.
  • Código 400 Bad Request: No se ha encontrado la imagen especificada.
  • Código 200 OK: Los archivos se han creado exitosamente.

Enviar paquete Wake On Lan

Se enviará un paquete Wake On Lan a la dirección MAC especificada, a través de la IP de broadcast especificada.
Se puede hacer con el script "sendWakeOnLan.py", que hemos programado recientemente.

URL: /ogrepository/v1/wol
Método HTTP: POST

Cuerpo de la Solicitud (JSON):

  • broadcast_ip: IP de broadcast a la que enviar el paquete (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.

Ejemplo de Solicitud:

curl -X POST -H "Authorization: $API_KEY" -H "Content-Type: application/json" -d '{"broadcast_ip":"255.255.255.255", "mac":"00:19:99:5c:bb:bb"}' http://example.com/ogrepository/v1/wol

Respuestas:

  • Código 500 Internal Server Error: Ocurrió un error al enviar el paquete Wake On Lan.
  • Código 200 OK: El paquete Wake On Lan se ha enviado exitosamente.

Enviar una Imagen mediante UDPcast

Se enviará la imagen especificada por Multicast, mediante la aplicación UDPcast.
Se puede hacer con el script "sendFileMcast.py", que a su vez llama al binario "udp-sender", que es quien realmente realiza el envío.
NOTA: Los datos multicast deben extraerse de la configuracién del Aula/OU (incluido el puerto).

URL: /ogrepository/v1/udpcast/images/{ID_img}
Método HTTP: POST

Cuerpo de la Solicitud (JSON):

  • image: Nombre de la imagen (con extensión).
  • ou_subdir: Subdirectorio correspondiente a la OU (o "none" si no es el caso).
  • port: Puerto Multicast.
  • method: Modalidad half-duplex o full-duplex.
  • ip: IP Multicast.
  • bitrate: Velocidad de transmisión (en Mbps).
  • nclients: Número mínimo de clientes.
  • maxtime: Tiempo máximo de espera.

Ejemplo de Solicitud:

curl -X POST -H "Authorization: $API_KEY" -H "Content-Type: application/json" -d '{"image":"Windows10.img", "ou_subdir":"none", "port":"9000", "method":"full", "ip":"239.194.17.2", "bitrate":"70M", "nclients":"20", "maxtime":"120"}' http://example.com/ogrepository/v1/udpcast/images/{ID_img}

Respuestas:

  • Código 500 Internal Server Error: Ocurrió un error al enviar la imagen.
  • Código 400 Bad Request: No se ha encontrado la imagen especificada.
  • Código 200 OK: La imagen se ha enviado exitosamente.

Enviar una Imagen mediante UFTP

Se enviará la imagen especificada por Unicast o Multicast, mediante el protocolo "UFTP".
Se puede hacer con el script "sendFileUFTP.py", que requiere que previamente los clientes ogLive destino se pongan en escucha con un daemon "UFTPD" (ejecutando el script "listenUFTPD.py").
NOTA: Los envíos mediante "UFTP" funcionan al revés que los envíos mediante "UDPcast" (con este último, primero se debe ejecutar un comando en el servidor, y luego en los clientes).

URL: /ogrepository/v1/uftp/images/{ID_img}
Método HTTP: POST

Cuerpo de la Solicitud (JSON):

  • image: Nombre de la imagen (con extensión).
  • ou_subdir: Subdirectorio correspondiente a la OU (o "none" si no es el caso).
  • port: Puerto Multicast.
  • ip: IP Unicast/Multicast.
  • bitrate: Velocidad de transmisión (con "K" para Kbps, "M" para Mbps o "G" para Gbps).

Ejemplo de Solicitud:

curl -X POST -H "Authorization: $API_KEY" -H "Content-Type: application/json" -d '{"image":"Windows10.img", "ou_subdir":"none", "port":"9000", "ip":"239.194.17.2", "bitrate":"1G"}' http://example.com/ogrepository/v1/uftp/images/{ID_img}

Respuestas:

  • Código 500 Internal Server Error: Ocurrió un error al enviar la imagen.
  • Código 400 Bad Request: No se ha encontrado la imagen especificada.
  • Código 200 OK: La imagen se ha enviado exitosamente.

Enviar una Imagen mediante P2P

Se enviará la imagen especificada mediante "P2P", iniciando el tracker y el seeder (que harán tracking y seed de los torrents contenidos en la raiz del subdirectorio especificado).
Se debe llamar al script "runTorrentTracker.py" y al script "runTorrentSeeder.py", especificando la ruta en la que está contenido el torrent (que debe estar en la raiz de dicha ruta).
NOTA: El directorio en el que está contenida la imagen y su torrent asociado puede obtenerse a partir del ID de la imagen (que corresponde al fullsum).

URL: /ogrepository/v1/p2p/images/{ID_img}
Método HTTP: POST

Ejemplo de Solicitud:

curl -X POST -H "Authorization: $API_KEY" http://example.com/ogrepository/v1/p2p/images/{ID_img}

Respuestas:

  • Código 500 Internal Server Error: Ocurrió un error al enviar la imagen.
  • Código 400 Bad Request: No se ha encontrado la imagen especificada.
  • Código 200 OK: La imagen se ha enviado exitosamente.

Cancelar Transmisión UDPcast

Se cancelará la transmisión por UDPcast activa de la imagen especificada como parámetro, deteniendo el proceso "udp-sender" asociado a dicha imagen.
Se puede hacer con el script "stopUDPcast.py", que hemos programado recientemente.
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. En principio, ogCore puede acceder a estos datos a partir del ID de la imagen (que hemos quedado que será el contenido del archivo "full.sum"), y la transformación de parámetros puede realizarse en el controlador PHP.

URL: /ogrepository/v1/udpcast/images/{ID_img}
Método HTTP: DELETE

Ejemplo de Solicitud:

curl -X DELETE -H "Authorization: $API_KEY" http://example.com/ogrepository/v1/udpcast/images/{ID_img}

Respuestas:

  • Código 500 Internal Server Error: Ocurrió un error al cancelar la transmisión.
  • Código 400 Bad Request: No se ha encontrado la imagen especificada.
  • Código 200 OK: La transmisión se ha cancelado exitosamente.

Cancelar Transmisiones P2P

Se cancelarán las transmisiones P2P activas en el ogRepository al que se envíe la orden, deteniendo los procesos "bttrack" y "btlaunchmany.bittornado".
Se puede hacer con el script "stopP2P.py", que hemos programado recientemente.
NOTA: No he encontrado la forma de detener la transmisión de una imagen concreta, ya que "bttrack" y "btlaunchmany.bittornado" hacen tracking y seed (respectivamente) de todos los torrents existentes en la raíz del directorio especificado.

URL: /ogrepository/v1/p2p
Método HTTP: DELETE

Ejemplo de Solicitud:

curl -X DELETE -H "Authorization: $API_KEY" http://example.com/ogrepository/v1/p2p

Respuestas:

  • Código 500 Internal Server Error: Ocurrió un error al cancelar las transmisiones.
  • Código 200 OK: Las transmisiones se han cancelado exitosamente.

Ver Estado de Transmisiones Multicast-P2P

Se debe estudiar como realizar esta tarea para cada uno de los protocolos de transmisión, ya que cada uno tiene sus particularidades, y habitualmente no tienen comandos asociados para comprobar el estado de las transmisiones. Es posible que sea neceario parsear los logs de ogRepo y/o de los clientes.
NOTA: Seguramente deba crearse un endpoint específico para cada uno de los protocolos que se utilicen.