refs #631 - Add 'stopP2P.py'
parent
98534c09a3
commit
94bfef7af3
31
README.md
31
README.md
|
@ -34,7 +34,7 @@ El presente documento detalla los endpoints de la API, con sus respectivos pará
|
|||
12. [Enviar una Imagen mediante UDPcast](#enviar-una-imagen-mediante-udpcast) - `POST /ogrepository/v1/images/send-udpcast`
|
||||
13. [Enviar una Imagen mediante UFTP](#enviar-una-imagen-mediante-uftp) - `POST /ogrepository/v1/images/send-uftp`
|
||||
14. [Cancelar Transmisión UDPcast](#cancelar-transmisión-udpcast) - `POST /ogrepository/v1/images/stop-udpcast`
|
||||
15. [Cancelar Transmisión P2P](#cancelar-transmisión-p2p) -
|
||||
15. [Cancelar Transmisiones P2P](#cancelar-transmisiones-p2p) - `POST /ogrepository/v1/images/stop-p2p`
|
||||
16. [Ver Estado de Transmisiones Multicast-P2P](#ver-estado-de-transmisiones-multicast-p2p) -
|
||||
|
||||
---
|
||||
|
@ -420,7 +420,7 @@ Se puede hacer con el script "**sendFileMcast.py**", que a su vez llama al binar
|
|||
- **nclients**: Número mínimo de clientes.
|
||||
- **maxtime**: Tiempo máximo de espera.
|
||||
|
||||
**Ejemplo de Solicitud:**
|
||||
**Ejemplo de Solicitud:**
|
||||
|
||||
```bash
|
||||
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/images/send-udpcast
|
||||
|
@ -460,7 +460,7 @@ curl -X POST -H "Authorization: $API_KEY" -H "Content-Type: application/json" -d
|
|||
---
|
||||
### Cancelar Transmisión UDPcast
|
||||
|
||||
Se cancelará la transmisión por UDPcast existente de la imagen especificada como parámetro, deteniendo el proceso "udp-sender" asociado a dicha imagen.
|
||||
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.
|
||||
|
||||
**URL:** `/ogrepository/v1/images/stop-udpcast`
|
||||
|
@ -481,17 +481,28 @@ curl -X POST -H "Authorization: $API_KEY" -H "Content-Type: application/json" -d
|
|||
- **Código 200 OK:** La transmisión se ha cancelado exitosamente.
|
||||
|
||||
---
|
||||
### Cancelar Transmisión P2P
|
||||
### Cancelar Transmisiones P2P
|
||||
|
||||
Se cancelarán todas las transmisiones P2P activas en el ogRepository al que se envíe la orden, deteniendo los procesos "bttrack" y "btlaunchmany.bittornado".
|
||||
Se debe programar un script para realizar esta tarea, ya que actualmente no hay ninguno.
|
||||
**NOTA**: No he encontrado la forma de detener la transmisión de una imagen concreta, ya que "bttrack" hace tracking de todos los torrrents, y "btlaunchmany.bittornado" hace seed de todos los torrents existentes en la raíz del directorio especificado.
|
||||
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" hace tracking de todos los torrrents, y "btlaunchmany.bittornado" hace seed de todos los torrents existentes en la raíz del directorio especificado (aparte, no bastaría con finalizar el seeder, porque los clientes también hacen seed).
|
||||
|
||||
**URL:** `/ogrepository/v1/images/stop-p2p`
|
||||
**Método HTTP:** POST
|
||||
|
||||
**Ejemplo de Solicitud:**
|
||||
|
||||
```bash
|
||||
curl -X POST -H "Authorization: $API_KEY" http://example.com/ogrepository/v1/images/stop-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
|
||||
### Ver Estado de Transmisiones Multicast-P2P
|
||||
|
||||
Se devolverá información del estado de las transmisiones existentes, con un identificador de cada sesión multicast o P2P, y la imagen asociada.
|
||||
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.
|
||||
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.
|
||||
|
||||
---
|
|
@ -107,9 +107,9 @@ def main():
|
|||
|
||||
# Finalizamos el proceso "btlaunchmany.bittornado" (en caso de que estuviera corriendo):
|
||||
try:
|
||||
subprocess.run(f"pkill btlaunchmany.bittornado".split(), check=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
|
||||
subprocess.run(f"pkill btlaunchmany".split(), check=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
|
||||
except Exception as error_description:
|
||||
print(f"No bittornado process running? Returned error: {error_description}")
|
||||
print(f"No btlaunchmany.bittornado process running? Returned error: {error_description}")
|
||||
|
||||
# Construimos la ruta en la que buscar los torrents, en base al parámetro especificado:
|
||||
if sys.argv[1] == 'none':
|
||||
|
|
|
@ -0,0 +1,70 @@
|
|||
#!/usr/bin/env python3
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
"""
|
||||
Este script finaliza el proceso "btlaunchmany.bittornado" (correspondiente al seeder P2P) y el proceso "bttrack" (correspondiente al tracker P2P),
|
||||
lo que en la práctica hará que se cancelen las transmisiones P2P activas en el momento de ejecutarlo.
|
||||
|
||||
No he encontrado la forma de cancelar una transferencia P2P concreta, ya que "bttrack" hace tracking de todos los torrents de ogRepo,
|
||||
y es el proceso que es necesario finalizar para cancelar las transferencias P2P (con el seeder no bastaría, porque los clientes también hacen seed).
|
||||
|
||||
No recibe ningún parámetro.
|
||||
"""
|
||||
# --------------------------------------------------------------------------------------------
|
||||
# IMPORTS
|
||||
# --------------------------------------------------------------------------------------------
|
||||
|
||||
import subprocess
|
||||
|
||||
|
||||
# --------------------------------------------------------------------------------------------
|
||||
# FUNCTIONS
|
||||
# --------------------------------------------------------------------------------------------
|
||||
|
||||
|
||||
def kill_seeder():
|
||||
""" Finaliza cualquier proceso activo de "btlaunchmany.bittornado",
|
||||
que corresponde al seeder P2P.
|
||||
"""
|
||||
try:
|
||||
subprocess.run(f"pkill btlaunchmany".split(), check=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
|
||||
print("Process btlaunchmany.bittornado finalized")
|
||||
except Exception as error_description:
|
||||
print(f"No btlaunchmany.bittornado process running? Returned error: {error_description}")
|
||||
|
||||
|
||||
|
||||
def kill_tracker():
|
||||
""" Finaliza cualquier proceso activo de "bttrack",
|
||||
que corresponde al tracker P2P.
|
||||
"""
|
||||
try:
|
||||
subprocess.run(f"pkill bttrack".split(), check=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
|
||||
print("Process bttrack finalized")
|
||||
except Exception as error_description:
|
||||
print(f"No bttrack process running? Returned error: {error_description}")
|
||||
|
||||
|
||||
|
||||
# --------------------------------------------------------------------------------------------
|
||||
# MAIN
|
||||
# --------------------------------------------------------------------------------------------
|
||||
|
||||
|
||||
def main():
|
||||
"""
|
||||
"""
|
||||
# Finalizamos cualquier proceso activo de "btlaunchmany.bittornado" (seeder):
|
||||
kill_seeder()
|
||||
|
||||
# Finalizamos cualquier proceso activo de "bttrack" (tracker):
|
||||
kill_tracker()
|
||||
|
||||
|
||||
|
||||
# --------------------------------------------------------------------------------------------
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
|
||||
# --------------------------------------------------------------------------------------------
|
Loading…
Reference in New Issue