ogrepository/api/swagger.yaml

1685 lines
62 KiB
YAML

swagger: "2.0"
info:
title: "ogRepository API"
version: "1.0"
description: |
---
# -----------------------------------------------------------------------------------------------------------
# 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"
# -----------------------------------------------------------------------------------------------------------
paths:
/ogrepository/v1/status:
get:
summary: "Obtener Información de Estado de ogRepository"
description: >
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"
responses:
"200":
description: "La información de estado se obtuvo exitosamente."
schema:
type: object
properties:
success:
type: boolean
example: true
output:
type: object
properties:
cpu:
type: object
properties:
used_percentage:
type: string
example: "35%"
ram:
type: object
properties:
total:
type: string
example: "7.8GB"
used:
type: string
example: "0.3GB"
available:
type: string
example: "7.2GB"
used_percentage:
type: string
example: "7%"
disk:
type: object
properties:
total:
type: string
example: "11.7GB"
used:
type: string
example: "7.7GB"
available:
type: string
example: "3.4GB"
used_percentage:
type: string
example: "69%"
services:
type: object
properties:
ssh:
type: string
example: "active"
smbd:
type: string
example: "active"
rsync:
type: string
example: "active"
processes:
type: object
properties:
udp-sender:
type: string
example: "stopped"
uftp:
type: string
example: "stopped"
bttrack:
type: string
example: "stopped"
btlaunchmany.bittornado:
type: string
example: "stopped"
"500 (Error)":
description: "Error al consultar y/o devolver la información de estado."
schema:
type: object
properties:
success:
type: boolean
example: false
error:
type: string
example: "(Error description)"
"500 (Exception)":
description: "Excepción inesperada al consultar y/o devolver la información de estado."
schema:
type: object
properties:
success:
type: boolean
example: false
exception:
type: string
example: "(Exception description)"
# -----------------------------------------------------------------------------------------------------------
# Apartado "Información de Imágenes"
# -----------------------------------------------------------------------------------------------------------
/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 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:
"200":
description: "La actualización de la información de las imágenes se realizó exitosamente."
schema:
type: object
properties:
success:
type: boolean
example: true
output:
type: string
example: "Repository info updated successfully"
"500 (Error)":
description: "Error al actualizar la información de las imágenes."
schema:
type: object
properties:
success:
type: boolean
example: false
error:
type: string
example: "(Error description)"
"500 (Exception)":
description: "Excepción inesperada al actualizar la información de las imágenes."
schema:
type: object
properties:
success:
type: boolean
example: false
exception:
type: string
example: "(Exception description)"
# -----------------------------------------------------------------------------------------------------------
#/ogrepository/v1/images:
get:
summary: "Obtener Información de todas las Imágenes"
description: |
Este endpoint ejecuta el script "**getRepoInfo.py**" con el parámetro "**all**", para devolver información de todas las imágenes almacenadas en el repositorio y en la papelera, que a su vez llama al script "**updateRepoInfo.py**", para actualizar previamente la información del repositorio.
Devuelve detalles como el nombre de la imagen, tipo, nombre del cliente, clonador, compresor, sistema de archivos, tamaño de los datos, tamaño de la imagen, y hashes MD5.
tags:
- "Información de Imágenes"
responses:
"200":
description: "La información de las imágenes se obtuvo exitosamente."
schema:
type: object
properties:
success:
type: boolean
example: true
output:
type: object
properties:
REPOSITORY:
type: object
properties:
directory:
type: string
example: "/opt/opengnsys/ogrepository/images"
images:
type: array
items:
type: object
properties:
name:
type: string
example: "Ubuntu24"
type:
type: string
example: "img"
clientname:
type: string
example: "Ubuntu24_clientname"
clonator:
type: string
example: "partclone"
compressor:
type: string
example: "lzop"
filesystem:
type: string
example: "EXTFS"
datasize:
type: integer
example: 9859634200000
size:
type: integer
example: 4505673214
sum:
type: string
example: "065a933c780ab1aaa044435ad5d4bf87"
fullsum:
type: string
example: "33575b9070e4a8043371b8c6ae52b80e"
TRASH:
type: object
properties:
directory:
type: string
example: "/opt/opengnsys/ogrepository/images_trash"
images:
type: array
items:
type: object
properties:
name:
type: string
example: "Windows10"
type:
type: string
example: "img"
clientname:
type: string
example: "Windows10_clientname"
clonator:
type: string
example: "partclone"
compressor:
type: string
example: "lzop"
filesystem:
type: string
example: "NTFS"
datasize:
type: integer
example: 8912896000000
size:
type: integer
example: 3803794535
sum:
type: string
example: "081a933c780ab1aaa044435ad5d4bf56"
fullsum:
type: string
example: "22735b9070e4a8043371b8c6ae52b90d"
"500 (Error)":
description: "Error al consultar y/o devolver la información de las imágenes."
schema:
type: object
properties:
success:
type: boolean
example: false
error:
type: string
example: "(Error description)"
"500 (Exception)":
description: "Excepción inesperada al consultar y/o devolver la información de las imágenes."
schema:
type: object
properties:
success:
type: boolean
example: false
exception:
type: string
example: "(Exception description)"
# -----------------------------------------------------------------------------------------------------------
/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.
Utiliza el script "**getRepoInfo.py**" que recibe como parámetro el nombre de la imagen (con extensión), que a su vez llama al script "**updateRepoInfo.py**", para actualizar previamente la información del repositorio.
La imagen puede estar en el archivo "**repoinfo.json**" (si está almacenada en el repositorio) o en "**trashinfo.json**" (si está en la papelera).
tags:
- "Información de Imágenes"
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 información de la imagen se obtuvo exitosamente."
schema:
type: object
properties:
success:
type: boolean
example: true
output:
type: object
properties:
directory:
type: string
example: "/opt/opengnsys/ogrepository/images"
images:
type: array
items:
type: object
properties:
name:
type: string
example: "Ubuntu24"
type:
type: string
example: "img"
clientname:
type: string
example: "Ubuntu24_clientname"
clonator:
type: string
example: "partclone"
compressor:
type: string
example: "lzop"
filesystem:
type: string
example: "EXTFS"
datasize:
type: integer
example: 9859634200000
size:
type: integer
example: 4505673214
sum:
type: string
example: "065a933c780ab1aaa044435ad5d4bf87"
fullsum:
type: string
example: "33575b9070e4a8043371b8c6ae52b80e"
"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 consultar y/o devolver la información de la imagen."
schema:
type: object
properties:
success:
type: boolean
example: false
error:
type: string
example: "(Error description)"
"500 (Exception)":
description: "Excepción inesperada al consultar y/o devolver la información de la imagen."
schema:
type: object
properties:
success:
type: boolean
example: false
exception:
type: string
example: "(Exception description)"
# -----------------------------------------------------------------------------------------------------------
/ogrepository/v1/status/images/{imageId}:
get:
summary: "Chequear Integridad de Imagen"
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) como parámetro.
tags:
- "Información de Imágenes"
parameters:
- name: imageId
in: path
required: true
type: string
description: "Identificador de la imagen (correspondiente al contenido del archivo 'full.sum')"
responses:
"200 (Check OK)":
description: "La imagen se ha chequeado exitosamente."
schema:
type: object
properties:
success:
type: boolean
example: true
output:
type: string
example: "Image file passed the Integrity Check correctly"
"200 (Check KO)":
description: "La imagen se ha chequeado exitosamente, pero no ha pasado el test de integridad."
schema:
type: object
properties:
success:
type: boolean
example: true
output:
type: string
example: "Image file didn't pass the Integrity Check"
"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 (inexistent or deleted)"
"500 (Error)":
description: "Error al chequear la integridad de la imagen."
schema:
type: object
properties:
success:
type: boolean
example: false
error:
type: string
example: "(Error description)"
"500 (Exception)":
description: "Excepción inesperada al chequear la integridad de la imagen."
schema:
type: object
properties:
success:
type: boolean
example: false
exception:
type: string
example: "(Exception description)"
# -----------------------------------------------------------------------------------------------------------
# Apartado "Eliminar y Recuperar Imágenes"
# -----------------------------------------------------------------------------------------------------------
/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) 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:
- name: imageId
in: path
required: true
type: string
description: "Identificador de la imagen (correspondiente al contenido del archivo 'full.sum')"
- name: method
in: query
required: true
type: string
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."
schema:
type: object
properties:
success:
type: boolean
example: true
output:
type: string
example: "Image deleted successfully"
"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 (inexistent or deleted)"
"500 (Error)":
description: "Error al eliminar la imagen."
schema:
type: object
properties:
success:
type: boolean
example: false
error:
type: string
example: "(Error description)"
"500 (Exception)":
description: "Excepción inesperada al eliminar la imagen."
schema:
type: object
properties:
success:
type: boolean
example: false
exception:
type: string
example: "(Exception description)"
# -----------------------------------------------------------------------------------------------------------
/ogrepository/v1/trash/images:
post:
summary: "Recuperar una Imagen"
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), que a su vez llama al script "**updateRepoInfo.py**", para actualizar la información del repositorio.
tags:
- "Eliminar y Recuperar Imágenes"
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 recuperó exitosamente."
schema:
type: object
properties:
success:
type: boolean
example: true
output:
type: string
example: "Image recovered successfully"
"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 (inexistent or recovered previously)"
"500 (Error)":
description: "Error al recuperar la imagen."
schema:
type: object
properties:
success:
type: boolean
example: false
error:
type: string
example: "(Error description)"
"500 (Exception)":
description: "Excepción inesperada al recuperar la imagen."
schema:
type: object
properties:
success:
type: boolean
example: false
exception:
type: string
example: "(Exception description)"
# -----------------------------------------------------------------------------------------------------------
/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), que a su vez llama al script "**updateTrashInfo.py**", para actualizar la información de la papelera.
tags:
- "Eliminar y Recuperar Imágenes"
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 imagen se eliminó exitosamente."
schema:
type: object
properties:
success:
type: boolean
example: true
output:
type: string
example: "Image deleted successfully"
"400":
description: "No se ha encontrado la imagen especificada en la papelera."
schema:
type: object
properties:
success:
type: boolean
example: false
error:
type: string
example: "Image not found at trash"
"500 (Error)":
description: "Error al eliminar la imagen de la papelera."
schema:
type: object
properties:
success:
type: boolean
example: false
error:
type: string
example: "(Error description)"
"500 (Exception)":
description: "Excepción inesperada al eliminar la imagen de la papelera."
schema:
type: object
properties:
success:
type: boolean
example: false
exception:
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 (pero no avisa a ogCore de su finalización, porque no puede comprobar cuando acaba la tarea de restauración de la imagen).
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 ("half" o "full")
* **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 (pero no avisa a ogCore de su finalización, porque no puede comprobar cuando acaba la tarea de restauración de la imagen).
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 imágenes.
**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 (pero no avisa a ogCore de su finalización, porque no puede comprobar cuando acaba la tarea de restauración de la imagen).
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"
# -----------------------------------------------------------------------------------------------------------
/ogrepository/v1/repo/images:
post:
summary: "Importar una Imagen"
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, y el usuario con el que conectar al servidor remoto.
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: JSON
in: body
required: true
description: |
* **image** - Nombre de la imagen, con extensión
* **repo_ip** - Dirección IP del servidor remoto
* **user** - Usuario con el que conectar al servidor remoto
schema:
type: object
properties:
image:
type: string
example: "Windows10.img"
repo_ip:
type: string
description: "Dirección IP del repositorio remoto"
example: "192.168.56.100"
user:
type: string
description: "Usuario para acceder al repositorio remoto"
example: "user_name"
responses:
"200":
description: "La imagen se está importando."
schema:
type: object
properties:
success:
type: boolean
example: true
output:
type: string
example: "Importing image..."
"400 (Connection fail)":
description: "Error de conexión con el servidor remoto."
schema:
type: object
properties:
success:
type: boolean
example: false
exception:
type: string
example: "Can't connect to remote server"
"400 (Image not found)":
description: "No se ha encontrado la imagen remota."
schema:
type: object
properties:
success:
type: boolean
example: false
exception:
type: string
example: "Remote image not found"
"400 (Image locked)":
description: "La imagen remota está bloqueada."
schema:
type: object
properties:
success:
type: boolean
example: false
exception:
type: string
example: "Remote image is locked"
"500":
description: "Error al importar la imagen."
schema:
type: object
properties:
success:
type: boolean
example: false
error:
type: string
example: "Image import failed"
"500 (Error)":
description: "Error al importar la imagen."
schema:
type: object
properties:
success:
type: boolean
example: false
error:
type: string
example: "(Error description)"
"500 (Exception)":
description: "Excepción inesperada al importar la imagen."
schema:
type: object
properties:
success:
type: boolean
example: false
exception:
type: string
example: "(Exception description)"
# -----------------------------------------------------------------------------------------------------------
#/ogrepository/v1/repo/images:
put:
summary: "Exportar una Imagen"
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, y el usuario con el que conectar al servidor remoto.
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: JSON
in: body
required: true
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:
ID_img:
type: string
example: "22735b9070e4a8043371b8c6ae52b90d"
repo_ip:
type: string
description: "Dirección IP del repositorio remoto"
example: "192.168.56.100"
user:
type: string
description: "Usuario para acceder al repositorio remoto"
example: "user_name"
responses:
"200":
description: "La imagen se está exportando."
schema:
type: object
properties:
success:
type: boolean
example: true
output:
type: string
example: "Exporting image..."
"400 (Image not found)":
description: "No se ha encontrado la imagen."
schema:
type: object
properties:
success:
type: boolean
example: false
exception:
type: string
example: "Image not found"
"400 (Image locked)":
description: "La imagen está bloqueada."
schema:
type: object
properties:
success:
type: boolean
example: false
exception:
type: string
example: "Image is locked"
"400 (Connection fail)":
description: "Error de conexión con el servidor remoto."
schema:
type: object
properties:
success:
type: boolean
example: false
exception:
type: string
example: "Can't connect to remote server"
"400 (Image present)":
description: "La imagen ya existe en el servidor remoto."
schema:
type: object
properties:
success:
type: boolean
example: false
exception:
type: string
example: "Image already exists on remote server"
"500":
description: "Error al exportar la imagen."
schema:
type: object
properties:
success:
type: boolean
example: false
error:
type: string
example: "Export image failed"
"500 (Error)":
description: "Error al exportar la imagen."
schema:
type: object
properties:
success:
type: boolean
example: false
error:
type: string
example: "(Error description)"
"500 (Exception)":
description: "Excepción inesperada al exportar la imagen."
schema:
type: object
properties:
success:
type: boolean
example: false
exception:
type: string
example: "(Exception description)"
# -----------------------------------------------------------------------------------------------------------
# Apartado "Varios"
# -----------------------------------------------------------------------------------------------------------
/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 extensión), 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: JSON
in: body
required: true
description: |
* **image** - Nombre de la imagen, con extensión
schema:
type: object
properties:
image:
type: string
example: "Windows10.img"
responses:
"200":
description: "Los archivos auxiliares se están creando."
schema:
type: object
properties:
success:
type: boolean
example: true
output:
type: string
example: "Creating auxiliar files..."
"400 (Image not found)":
description: "No se ha encontrado la imagen."
schema:
type: object
properties:
success:
type: boolean
example: false
exception:
type: string
example: "Image not found"
"400 (Image locked)":
description: "La imagen está bloqueada."
schema:
type: object
properties:
success:
type: boolean
example: false
exception:
type: string
example: "Image is locked"
"500 (Error)":
description: "Error al crear los archivos auxiliares."
schema:
type: object
properties:
success:
type: boolean
example: false
error:
type: string
example: "(Error description)"
"500 (Exception)":
description: "Excepción inesperada al crear los archivos auxiliares."
schema:
type: object
properties:
success:
type: boolean
example: false
exception:
type: string
example: "(Exception description)"
# -----------------------------------------------------------------------------------------------------------
/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.
tags:
- "Varios"
parameters:
- name: JSON
in: body
required: true
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:
broadcast_ip:
type: string
example: "255.255.255.255"
mac:
type: string
example: "00:19:99:5c:bb:bb"
responses:
"200":
description: "El paquete Wake On Lan se ha enviado exitosamente."
schema:
type: object
properties:
success:
type: boolean
example: true
output:
type: string
example: "Wake On Lan packet sent successfully"
"500 (Error)":
description: "Error al enviar el paquete Wake On Lan."
schema:
type: object
properties:
success:
type: boolean
example: false
error:
type: string
example: "(Error description)"
"500 (Exception)":
description: "Excepción inesperada al enviar el paquete Wake On Lan."
schema:
type: object
properties:
success:
type: boolean
example: false
exception:
type: string
example: "(Exception description)"
# -----------------------------------------------------------------------------------------------------------