refs #197 #198 Create first document with API proposal

ticket-577
Luis Gerardo Romero Garcia 2024-02-06 17:36:01 +01:00
parent e96ceed4ee
commit 840933c7c8
1 changed files with 623 additions and 0 deletions

623
README.md
View File

@ -1,3 +1,626 @@
## Ogboot
Ogboot es una implementación independiente que facilita la funcionalidad de arranque remoto (PXE) en entornos gestionados por Opengnsys. Este componente permite la carga remota de sistemas operativos y otros archivos esenciales durante el proceso de arranque de las estaciones de trabajo.
## API de Ogboot
La API de Ogboot proporciona una interfaz para facilitar el proceso de inicialización remota de sistemas operativos en entornos administrados por OpenGnsys. Ogboot permite la gestión eficiente de los archivos de arranque tanto de particiones locales como de sistemas operativos remotos.
El presente documento detalla los endpoints del API con sus respectivos parámetros de entrada así como las acciones que llevan a cabo
### Obtener Lista de Clientes
Obtiene la lista de clientes registrados en el sistema.
**URL:** /clients
**Método HTTP:** GET
**Ejemplo de Solicitud:**
```
curl -X GET -H "Authorization: $API_KEY" http://127.0.0.1:8888/clients
```
### Encender Equipos Remotamente (Wake-on-LAN)
Envía comandos de encendido remoto a uno o varios equipos utilizando Wake-on-LAN.
**URL:** /wol
**Método HTTP:** POST
**Parámetros de entrada:**
- type (string): Tipo de envío de paquetes Wake-on-LAN (unicast, broadcast, multicast, etc.).
- clients (array): Lista de objetos que contienen la dirección IP (addr) y la dirección MAC (mac) de los equipos a encender.
**Ejemplo de Solicitud:**
```
curl -X POST -H "Authorization: $API_KEY" http://127.0.0.1:8888/wol -d @wol.json
```
**Contenido de wol.json:**
```
{ "type" : "unicast", "clients" : [ { "addr" : "192.168.2.1", "mac" : "00AABBCCDD01" } ] }
```
### Gestión de Sesión
Gestiona las sesiones de usuario en el sistema.
**URL:** /session
**Método HTTP:** POST
**Parámetros de entrada:**
- clients (array): Lista de direcciones IP de los clientes.
- disk (string): Número del disco duro.
- partition (string): Número de la partición.
**Ejemplo de Solicitud:**
```
curl -X POST -H "Authorization: $API_KEY" http://127.0.0.1:8888/session -d @session.json
```
**Contenido de session.json:**
```json
{ "clients" : [ "192.168.2.1", "192.168.2.2" ], "disk" : "0", "partition" : "1"}
```
### Apagar Equipos
Envía comandos de apagado a uno o varios equipos.
**URL:** /poweroff
**Método HTTP:** POST
**Parámetros de entrada:**
- clients (array): Lista de direcciones IP de los clientes.
**Ejemplo de Solicitud:**
```
curl -X POST -H "Authorization: $API_KEY" http://127.0.0.1:8888/poweroff -d @poweroff.json
```
**Contenido de poweroff.json:**
```json
{ "clients" : [ "192.168.2.1", "192.168.2.2" ] }
```
### Reiniciar Equipos
Envía comandos de reinicio a uno o varios equipos.
**URL:** /reboot
**Método HTTP:** POST
**Parámetros de entrada:**
- clients (array): Lista de direcciones IP de los clientes.
**Ejemplo de Solicitud:**
```
curl -X POST -H "Authorization: $API_KEY" http://127.0.0.1:8888/reboot -d @reboot.json
```
**Contenido de reboot.json:**
```json
{ "clients" : [ "192.168.2.1", "192.168.2.2" ] }
```
### Detener Operaciones en Curso
Detiene las operaciones en curso en los equipos.
**URL:** /stop
**Método HTTP:** POST
**Parámetros de entrada:**
- clients (array): Lista de direcciones IP de los clientes.
**Ejemplo de Solicitud:**
```
curl -X POST -H "Authorization: $API_KEY" http://127.0.0.1:8888/stop -d @stop.json
```
**Contenido de stop.json:**
```json
{ "clients" : [ "192.168.2.1", "192.168.2.2" ] }
```
### Reiniciar Equipos
Envía comandos de reinicio a uno o varios equipos.
**URL:** /reboot
**Método HTTP:** POST
**Parámetros de entrada:**
- clients (array): Lista de direcciones IP de los clientes.
**Ejemplo de Solicitud:**
```
curl -X POST -H "Authorization: $API_KEY" http://127.0.0.1:8888/reboot -d @reboot.json
```
**Contenido de reboot.json:**
```json
{ "clients" : [ "192.168.2.1", "192.168.2.2" ] }
```
### Actualizar Información de Equipos
???????
**URL:** /refresh
**Método HTTP:** POST
**Parámetros de entrada:**
- clients (array): Lista de direcciones IP de los clientes.
**Ejemplo de Solicitud:**
```
curl -X POST -H "Authorization: $API_KEY" http://127.0.0.1:8888/refresh -d @refresh.json
```
**Contenido de refresh.json:**
```json
{ "clients" : [ "192.168.2.1", "192.168.2.2" ] }
```
### Obtener Información de Hardware
Obtiene información detallada sobre el hardware de los equipos.
**URL:** /hardware
**Método HTTP:** POST
**Parámetros de entrada:**
- clients (array): Lista de direcciones IP de los clientes.
**Ejemplo de Solicitud:**
```
curl -X POST -H "Authorization: $API_KEY" http://127.0.0.1:8888/hardware -d @post_clients.json
```
**Contenido de post_clients.json:**
```json
{ "clients" : [ "192.168.2.1", "192.168.2.2" ] }
```
### Obtener Información de Software
Obtiene información sobre el software instalado en los equipos.
**URL:** /software
**Método HTTP:** POST
**Parámetros de entrada:**
- clients (array): Lista de direcciones IP de los clientes.
**Ejemplo de Solicitud:**
```
curl -X POST -H "Authorization: $API_KEY" http://127.0.0.1:8888/software -d @post_clients.json
```
**Contenido de post_clients.json:**
```json
{ "clients" : [ "192.168.2.1", "192.168.2.2" ] }
```
### Crear Imagen del Sistema
Crea una imagen del sistema en los equipos especificados.
**URL:** /image/create
**Método HTTP:** POST
**Parámetros de entrada:**
- clients (array): Lista de direcciones IP de los clientes.
- disk (string): Número del disco duro.
- partition (string): Número de la partición.
- code (string): Código de la imagen.
- id (string): Identificador único de la imagen.
- name (string): Nombre de la imagen.
- repository (string): Dirección IP del repositorio de imágenes.
**Ejemplo de Solicitud:**
```
curl -X POST -H "Authorization: $API_KEY" http://127.0.0.1:8888/image/create -d @create_image.json
```
**Contenido de create_image.json:**
```json
{ "clients" : [ "192.168.2.1" ], "disk" : "1", "partition" : "1", "code" : "1", "id" : "1", "name" : "test", "repository" : "192.168.2.4" }
```
### Restaurar Imagen del Sistema
Restaura una imagen del sistema en los equipos especificados.
**URL:** /image/restore
**Método HTTP:** POST
**Parámetros de entrada:**
- clients (array): Lista de direcciones IP de los clientes.
- disk (string): Número del disco duro.
- partition (string): Número de la partición.
- name (string): Nombre de la imagen a restaurar.
- repository (string): Dirección IP del repositorio de imágenes.
- type (string): Tipo de envío de la imagen (UNICAST, BROADCAST, MULTICAST, etc.).
- profile (string): Perfil de configuración de la imagen.
- id (string): Identificador único de la imagen.
**Ejemplo de Solicitud:**
```
curl -X POST -H "Authorization: $API_KEY" http://127.0.0.1:8888/image/restore -d @restore_image.json
```
**Contenido de restore_image.json:**
```json
{ "clients" : [ "192.168.56.11" ], "disk" : "1", "partition" : "1", "name" : "test", "repository" : "192.168.56.10", "type" : "UNICAST", "profile": "1", "id": "1"}
```
### Configuración Inicial del Sistema
Realiza la configuración inicial del sistema en los equipos especificados.
**URL:** /setup
**Método HTTP:** POST
**Parámetros de entrada:**
- clients (array): Lista de direcciones IP de los clientes.
- disk (string): Número del disco duro.
- cache (string): Indicador de activación de la caché.
- cache_size (string): Tamaño de la caché.
- partition_setup (array): Configuración de particiones. Cada objeto dentro del array debe contener los siguientes campos:
- partition (string): Número de la partición.
- code (string): Código de tipo de partición.
- filesystem (string): Sistema de archivos de la partición.
- size (string): Tamaño de la partición.
- format (string): Indicador de formateo de la partición.
**Ejemplo de Solicitud:**
```
curl -X POST -H "Authorization: $API_KEY" http://127.0.0.1:8888/setup -d @setup_image.json
```
**Contenido de setup_image.json:**
```json
{
"clients" : [ "192.168.56.11" ],
"disk" : "1",
"cache" : "1",
"cache_size" : "0",
"partition_setup": [
{ "partition": "1", "code": "LINUX", "filesystem": "EMPTY", "size": "498688", "format": "0" },
{ "partition": "2", "code": "LINUX-SWAP", "filesystem": "EMPTY", "size": "199987", "format": "0" },
{ "partition": "3", "code": "LINUX", "filesystem": "EMPTY", "size": "31053824", "format": "0" },
{ "partition": "4", "code": "EMPTY", "filesystem": "EMPTY", "size": "0", "format": "0" }
]
}
```
### Crear Imagen Básica del Sistema
Crea una imagen básica del sistema en los equipos especificados.
**URL:** /image/create/basic
**Método HTTP:** POST
**Parámetros de entrada:**
- clients (array): Lista de direcciones IP de los clientes.
- disk (string): Número del disco duro.
- partition (string): Número de la partición.
- code (string): Código de la imagen.
- id (string): Identificador único de la imagen.
- name (string): Nombre de la imagen.
- repository (string): Dirección IP del repositorio de imágenes.
- sync_params (object): Parámetros de sincronización. Debe contener los siguientes campos:
- sync (string)
- diff (string)
- remove (string)
- compress (string)
- cleanup (string)
- cache (string)
- cleanup_cache (string)
- remove_dst (string)
**Ejemplo de Solicitud:**
```
curl -X POST -H "Authorization: $API_KEY" http://127.0.0.1:8888/image/create/basic -d @create_basic_image.json
```
**Contenido de create_basic_image.json:**
```json
{
"clients":["192.168.56.11"],
"disk":"1",
"partition":"1",
"code":"131",
"id":"8",
"name":"debianbasica",
"repository":"192.168.56.10",
"sync_params":{
"sync":"1",
"diff":"0",
"remove":"1",
"compress":"0",
"cleanup":"0",
"cache":"0",
"cleanup_cache":"0",
"remove_dst":"0"
}
}
```
### Crear Imagen Incremental del Sistema
Crea una imagen incremental del sistema en los equipos especificados.
**URL:** /image/create/incremental
**Método HTTP:** POST
**Parámetros de entrada:**
- clients (array): Lista de direcciones IP de los clientes.
- disk (string): Número del disco duro.
- partition (string): Número de la partición.
- id (string): Identificador único de la imagen.
- name (string): Nombre de la imagen.
- repository (string): Dirección IP del repositorio de imágenes.
- sync_params (object): Parámetros de sincronización. Debe contener los siguientes campos:
- sync (string)
- path (string)
- diff (string)
- diff_id (string)
- diff_name (string)
- remove (string)
- compress (string)
- cleanup (string): Indicador de limpieza.
- cache (string)
- cleanup_cache (string)
- remove_dst (string)
**Ejemplo de Solicitud:**
```
curl -X POST -H "Authorization: $API_KEY" http://127.0.0.1:8888/image/create/incremental -d @create_incremental_image.json
```
**Contenido de create_incremental_image.json:**
```json
{
"clients":["192.168.56.11"],
"disk":"1",
"partition":"1",
"id":"3",
"name":"basica1",
"repository":"192.168.56.10",
"sync_params":{
"sync":"1",
"path":"",
"diff":"0",
"diff_id":"4",
"diff_name":"p2",
"remove":"1",
"compress":"0",
"cleanup":"0",
"cache":"0",
"cleanup_cache":"0",
"remove_dst":"0"
}
}
```
### Restaurar Imagen Básica del Sistema
Restaura una imagen básica del sistema en los equipos especificados.
**URL:** /image/restore/basic
**Método HTTP:** POST
**Parámetros de entrada:**
- clients (array): Lista de direcciones IP de los clientes.
- disk (string): Número del disco duro.
- partition (string): Número de la partición.
- id (string): Identificador único de la imagen.
- name (string): Nombre de la imagen.
- repository (string): Dirección IP del repositorio de imágenes.
- profile (string): Perfil de configuración de la imagen.
- type (string): Tipo de envío de la imagen (UNICAST, BROADCAST, MULTICAST, etc.).
- sync_params (object): Parámetros de sincronización. Debe contener los siguientes campos:
- path (string)
- method (string)
- sync (string)
- diff (string)
- remove (string)
- compress (string)
- cleanup (string)
- cache (string)
- cleanup_cache (string)
- remove_dst (string)
**Ejemplo de Solicitud:**
```
curl -X POST -H "Authorization: $API_KEY" http://127.0.0.1:8888/image/restore/basic -d @restore_basic_image.json
```
**Contenido de restore_basic_image.json:**
```json
{
"clients":["192.168.56.11"],
"disk":"1",
"partition":"1",
"id":"9",
"name":"test",
"repository":"192.168.56.10",
"profile":"17",
"type":"UNICAST",
"sync_params":{
"path":"",
"method":"1",
"sync":"1",
"diff":"0",
"remove":"1",
"compress":"0",
"cleanup":"0",
"cache":"0",
"cleanup_cache":"0",
"remove_dst":"0"
}
}
```
### Restaurar Imagen Incremental del Sistema
Restaura una imagen incremental del sistema en los equipos especificados.
**URL:** /image/restore/incremental
**Método HTTP:** POST
**Parámetros de entrada:**
- clients (array): Lista de direcciones IP de los clientes.
- disk (string): Número del disco duro.
- partition (string): Número de la partición.
- id (string): Identificador único de la imagen.
- name (string): Nombre de la imagen.
- repository (string): Dirección IP del repositorio de imágenes.
- profile (string): Perfil de configuración de la imagen.
- type (string): Tipo de envío de la imagen (UNICAST, BROADCAST, MULTICAST, etc.).
- sync_params (object): Parámetros de sincronización. Debe contener los siguientes campos:
- diff_id (string)
- diff_name (string)
- path (string)
- method (string)
- sync (string)
- diff (string)
- remove (string)
- compress (string)
- cleanup (string)
- cache (string)
- cleanup_cache (string)
- remove_dst (string)
**Ejemplo de Solicitud:**
```
curl -X POST -H "Authorization: $API_KEY" http://127.0.0.1:8888/image/restore/incremental -d @restore_incremental_image.json
```
**Contenido de restore_incremental_image.json:**
```json
{
"clients":["192.168.56.11"],
"disk":"1",
"partition":"1",
"id":"9",
"name":"test",
"repository":"192.168.56.10",
"profile":"17",
"type":"UNICAST",
"sync_params":{
"diff_id":"1",
"diff_name":"test",
"path":"",
"method":"1",
"sync":"1",
"diff":"0",
"remove":"1",
"compress":"0",
"cleanup":"0",
"cache":"0",
"cleanup_cache":"0",
"remove_dst":"0"
}
}
```
### Run Schedule
??????
**URL:** /run/schedule
**Método HTTP:** POST
**Parámetros de entrada:**
- clients (array): Lista de direcciones IP de los clientes.
**Ejemplo de Solicitud:**
```
curl -X POST -H "Authorization: $API_KEY" http://127.0.0.1:8888/run/schedule -d @run_schedule.json
```
**Contenido de run_schedule.json:**
```json
{
"clients":["192.168.56.11"]
}
```
### Restaurar configuración DHCP
Restaurar la última configuración de Kea DHCP que se haya guardado en el sistema. Cada modificación que se lleve a cabo en la configuración de Kea genera un respaldo en el directorio `/opt/opengnsys/etc/kea/backup`
**Método HTTP:** POST
**URL:** `/dhcp/backup`
### Obtener toda la configuración DHCP
Devuelve toda la configuración de Kea DHCP que se encuentra cargada en memoria en el sistema.
**Método HTTP:** GET
**URL:** `/dhcp`
### Obtener configuración de los hosts
Devuelve la configuración de los hosts que se encuentran en la configuración de Kea DHCP.
**Método HTTP:** GET
**URL:** `/dhcp/hosts`
### Guardar configuración completa DHCP
Guarda la configuración completa de Kea DHCP en el sistema.
**Método HTTP:** POST
**URL:** `/dhcp/save`
**Parámetros de entrada:**
- `configurationText`: Texto de configuración de Kea DHCP en formato JSON.
### Añadir Host DHCP
Añade un nuevo host a la configuración de Kea DHCP.
**Método HTTP:** POST
**URL:** `/dhcp/add`
**Parámetros de entrada:**
- `host`: Nombre del host.
- `macAddress`: Dirección MAC del host.
- `address`: Dirección IP del host.
- `nextServer`: Dirección IP del next-server.
### Borrar Host DHCP
Borrar un host de la configuración de Kea DHCP.
**Método HTTP:** POST
**URL:** `/dhcp/delete`
**Parámetros de entrada:**
- `host`: Nombre del host.
### Modificar Host DHCP
Modificar la configuración de un host en la configuración de Kea DHCP.
**Método HTTP:** POST
**URL:** `/dhcp/update`
**Parámetros de entrada:**
- `host`: Nombre del host.
- `oldMacAddress`: Dirección MAC antigua del host.
- `oldAddress`: Dirección IP antigua del host.
- `macAddress`: Nueva dirección MAC del host.
- `address`: Nueva dirección IP del host.
- `nextServer`: Nueva dirección IP del servidor siguiente.
### Escribir en la configuración de Kea DHCP
Aplica los cambios cargados en memoria sobre el fichero de configuración final de Kea DHCP.
El servicio de Kea DHCP utiliza la configuración cargada en memoria para llevar a cabo las operaciones pero al reiniciar el servicio carga la configuración guardada en su fichero de configuración que suele estar alojada en `/etc/kea/kea-dhcp4.conf` (puede variar dependiendo de la instalación de kea). Todos la configuración cargada en memoria es eliminada.
Con este endpoint sobreescribe la configuración que tiene el servicio cargado en memoria en el fichero de configuración final de Kea DHCP.
**Método HTTP:** POST
**URL:** `/dhcp/apply`
### Importar fichero DHCP
Importa un archivo de configuración de Kea DHCP en el sistema.
**Método HTTP:** POST
**URL:** `/dhcp/upload`
**Parámetros de entrada:**
- `file_input_name`: Nombre del archivo de configuración de Kea DHCP a importar.